mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
bump swarmkit to 415dc72789e2b733ea884f09188c286ca187d8ec
relevant changes: - swarmkit#2815 Extension and resource API declarations - swarmkit#2816 Moving swap options into `ResourceRequirements` instead of `ContainerSpec`s - relates to moby#37872 - swarmkit#2821 allocator: use a map for network-IDs to prevent O(n2) - swarmkit#2832 [api] Add created object to return types for extension and resource create apis - swarmkit#2831 [controlapi] Extension api implementation - swarmkit#2835 Resource controlapi Implemetation - swarmkit#2802 Use custom gRPC dialer to override default proxy dialer - addresses moby#35395 Swarm worker cannot connect to master if proxy is configured - addresses moby#issues/36951 Swarm nodes cannot join as masters if http proxy is set - relates to swarmkit#2419 Provide custom gRPC dialer to override default proxy dialer Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
fc01c2b481
commit
667e800b2c
14 changed files with 5371 additions and 873 deletions
|
@ -128,7 +128,7 @@ github.com/containerd/ttrpc 2a805f71863501300ae1976d29f0454ae003e85a
|
|||
github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef
|
||||
|
||||
# cluster
|
||||
github.com/docker/swarmkit ebfb0aa1118ebfd35a224d72a5d337ce0addd907
|
||||
github.com/docker/swarmkit 415dc72789e2b733ea884f09188c286ca187d8ec
|
||||
github.com/gogo/protobuf v1.0.0
|
||||
github.com/cloudflare/cfssl 1.3.2
|
||||
github.com/fernet/fernet-go 1b2437bc582b3cfbb341ee5a29f8ef5b42912ff2
|
||||
|
|
16
vendor/github.com/docker/swarmkit/api/ca.pb.go
generated
vendored
16
vendor/github.com/docker/swarmkit/api/ca.pb.go
generated
vendored
|
@ -86,6 +86,22 @@
|
|||
CreateConfigResponse
|
||||
RemoveConfigRequest
|
||||
RemoveConfigResponse
|
||||
CreateExtensionRequest
|
||||
CreateExtensionResponse
|
||||
RemoveExtensionRequest
|
||||
RemoveExtensionResponse
|
||||
GetExtensionRequest
|
||||
GetExtensionResponse
|
||||
CreateResourceRequest
|
||||
CreateResourceResponse
|
||||
RemoveResourceRequest
|
||||
RemoveResourceResponse
|
||||
UpdateResourceRequest
|
||||
UpdateResourceResponse
|
||||
GetResourceRequest
|
||||
GetResourceResponse
|
||||
ListResourcesRequest
|
||||
ListResourcesResponse
|
||||
SessionRequest
|
||||
SessionMessage
|
||||
HeartbeatRequest
|
||||
|
|
4170
vendor/github.com/docker/swarmkit/api/control.pb.go
generated
vendored
4170
vendor/github.com/docker/swarmkit/api/control.pb.go
generated
vendored
File diff suppressed because it is too large
Load diff
183
vendor/github.com/docker/swarmkit/api/control.proto
generated
vendored
183
vendor/github.com/docker/swarmkit/api/control.proto
generated
vendored
|
@ -6,6 +6,7 @@ import "github.com/docker/swarmkit/api/specs.proto";
|
|||
import "github.com/docker/swarmkit/api/objects.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
// Control defines the RPC methods for controlling a cluster.
|
||||
|
@ -161,6 +162,80 @@ service Control {
|
|||
rpc RemoveConfig(RemoveConfigRequest) returns (RemoveConfigResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// --- extension APIs ---
|
||||
|
||||
// GetExtension returns a `GetExtensionResponse` with a `Extension` with the same
|
||||
// id as `GetExtensionRequest.ExtensionId`
|
||||
// - Returns `NotFound` if the Extension with the given id is not found.
|
||||
// - Returns `InvalidArgument` if the `GetExtensionRequest.ExtensionId` is empty.
|
||||
// - Returns an error if the get fails.
|
||||
rpc GetExtension(GetExtensionRequest) returns (GetExtensionResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// CreateExtension creates an `Extension` based on the provided `CreateExtensionRequest.Extension`
|
||||
// and returns a `CreateExtensionResponse`.
|
||||
// - Returns `InvalidArgument` if the `CreateExtensionRequest.Extension` is malformed,
|
||||
// or fails validation.
|
||||
// - Returns an error if the creation fails.
|
||||
rpc CreateExtension(CreateExtensionRequest) returns (CreateExtensionResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// RemoveExtension removes the extension referenced by `RemoveExtensionRequest.ID`.
|
||||
// - Returns `InvalidArgument` if `RemoveExtensionRequest.ExtensionId` is empty.
|
||||
// - Returns `NotFound` if the an extension named `RemoveExtensionRequest.ExtensionId` is not found.
|
||||
// - Returns an error if the deletion fails.
|
||||
rpc RemoveExtension(RemoveExtensionRequest) returns (RemoveExtensionResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// --- resource APIs ---
|
||||
|
||||
// GetResource returns a `GetResourceResponse` with a `Resource` with the same
|
||||
// id as `GetResourceRequest.Resource`
|
||||
// - Returns `NotFound` if the Resource with the given id is not found.
|
||||
// - Returns `InvalidArgument` if the `GetResourceRequest.Resource` is empty.
|
||||
// - Returns an error if getting fails.
|
||||
rpc GetResource(GetResourceRequest) returns (GetResourceResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// UpdateResource updates the resource with the given `UpdateResourceRequest.Resource.Id` using the given `UpdateResourceRequest.Resource` and returns a `UpdateResourceResponse`.
|
||||
// - Returns `NotFound` if the Resource with the given `UpdateResourceRequest.Resource.Id` is not found.
|
||||
// - Returns `InvalidArgument` if the UpdateResourceRequest.Resource.Id` is empty.
|
||||
// - Returns an error if updating fails.
|
||||
rpc UpdateResource(UpdateResourceRequest) returns (UpdateResourceResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// ListResources returns a `ListResourcesResponse` with a list of `Resource`s stored in the raft store,
|
||||
// or all resources matching any name in `ListConfigsRequest.Names`, any
|
||||
// name prefix in `ListResourcesRequest.NamePrefixes`, any id in
|
||||
// `ListResourcesRequest.ResourceIDs`, or any id prefix in `ListResourcesRequest.IDPrefixes`,
|
||||
// extension name equal to `ListResourcesRequest.Extension`.
|
||||
// - Returns an error if listing fails.
|
||||
rpc ListResources(ListResourcesRequest) returns (ListResourcesResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// CreateResource returns a `CreateResourceResponse` after creating a `Resource` based
|
||||
// on the provided `CreateResourceRequest.Resource`.
|
||||
// - Returns `InvalidArgument` if the `CreateResourceRequest.Resource` is malformed,
|
||||
// or if the config data is too long or contains invalid characters.
|
||||
// - Returns an error if the creation fails.
|
||||
rpc CreateResource(CreateResourceRequest) returns (CreateResourceResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
|
||||
// RemoveResource removes the `Resource` referenced by `RemoveResourceRequest.ResourceID`.
|
||||
// - Returns `InvalidArgument` if `RemoveResourceRequest.ResourceID` is empty.
|
||||
// - Returns `NotFound` if the a resource named `RemoveResourceRequest.ResourceID` is not found.
|
||||
// - Returns an error if the deletion fails.
|
||||
rpc RemoveResource(RemoveResourceRequest) returns (RemoveResourceResponse) {
|
||||
option (docker.protobuf.plugin.tls_authorization) = { roles: "swarm-manager" };
|
||||
}
|
||||
}
|
||||
|
||||
message GetNodeRequest {
|
||||
|
@ -556,3 +631,111 @@ message RemoveConfigRequest {
|
|||
// RemoveConfigResponse is an empty object indicating the successful removal of
|
||||
// a config.
|
||||
message RemoveConfigResponse {}
|
||||
|
||||
// CreateExtensionRequest creates a new extension as specified by the provided
|
||||
// parameters
|
||||
message CreateExtensionRequest {
|
||||
Annotations annotations = 1;
|
||||
string description = 2;
|
||||
}
|
||||
|
||||
// CreateExtensionResponse contains the newly created `Extension` corresponding
|
||||
// to the parameters in the CreateExtensionRequest.
|
||||
message CreateExtensionResponse {
|
||||
Extension extension = 1;
|
||||
}
|
||||
|
||||
// RemoveExtensionRequest contains the ID of the extension that should be removed. This
|
||||
// removes all versions of the extension.
|
||||
message RemoveExtensionRequest {
|
||||
string extension_id = 1;
|
||||
}
|
||||
|
||||
// RemoveExtensionResponse is an empty object indicating the successful removal
|
||||
// of an extension.
|
||||
message RemoveExtensionResponse {
|
||||
}
|
||||
|
||||
// GetResourceRequest is the request to get a Extension object given a extension id.
|
||||
message GetExtensionRequest {
|
||||
string extension_id = 1;
|
||||
}
|
||||
|
||||
// GetExtensionResponse contains the Extension corresponding to the id in
|
||||
// `GetExtensionRequest`.
|
||||
message GetExtensionResponse {
|
||||
Extension extension = 1;
|
||||
}
|
||||
|
||||
// CreateResourceRequest creates a new resource specified by the included
|
||||
// resource object. An existing resource will not be updated.
|
||||
message CreateResourceRequest {
|
||||
Annotations annotations = 1;
|
||||
string kind = 2;
|
||||
google.protobuf.Any payload = 3;
|
||||
}
|
||||
|
||||
// CreateResourceResponse contains the newly created `Resource` corresponding
|
||||
// to the resource in the CreateResourceRequest.
|
||||
message CreateResourceResponse {
|
||||
Resource resource = 1;
|
||||
}
|
||||
|
||||
// RemoveResourceRequest contains the ID of the resource that should be removed. This
|
||||
// removes all versions of the resource.
|
||||
message RemoveResourceRequest {
|
||||
string resource_id = 1;
|
||||
}
|
||||
|
||||
// RemoveResourceResponse is an empty object indicating the successful removal
|
||||
// of a resource.
|
||||
message RemoveResourceResponse {
|
||||
}
|
||||
|
||||
// UpdateResourceRequest updates the resource specified by the given resource object.
|
||||
message UpdateResourceRequest {
|
||||
string resource_id = 1;
|
||||
Version resource_version = 2;
|
||||
// Annotations describes the annotations to update. If the Annotations should
|
||||
// be unchanged, then this field should be left empty. Note that the name of
|
||||
// a Resource cannot be changed, only its labels.
|
||||
Annotations annotations = 3;
|
||||
// Payload describes the new payload of the resource. If the Payload should
|
||||
// be unchanged, then this field should be left empty.
|
||||
google.protobuf.Any payload = 4;
|
||||
}
|
||||
|
||||
message UpdateResourceResponse {
|
||||
Resource resource = 1;
|
||||
}
|
||||
|
||||
// GetResourceRequest is the request to get a Resource object given a resource id.
|
||||
message GetResourceRequest {
|
||||
string resource_id = 1;
|
||||
}
|
||||
|
||||
// GetResourceResponse contains the Resource corresponding to the id in
|
||||
// `GetResourceRequest`.
|
||||
message GetResourceResponse {
|
||||
Resource resource = 1;
|
||||
}
|
||||
|
||||
// ListResourcesRequest is the request to list all resources in the raft store,
|
||||
// or all resources filtered by (name or name prefix or id prefix), labels and extension.
|
||||
message ListResourcesRequest {
|
||||
message Filters {
|
||||
repeated string names = 1;
|
||||
repeated string id_prefixes = 2;
|
||||
map<string, string> labels = 3;
|
||||
repeated string name_prefixes = 4;
|
||||
string kind = 5;
|
||||
}
|
||||
|
||||
Filters filters = 1;
|
||||
}
|
||||
|
||||
// ListResourcesResponse contains a list of all the resources that match the name or
|
||||
// name prefix filters provided in `ListResourcesRequest`.
|
||||
message ListResourcesResponse {
|
||||
repeated Resource resources = 1;
|
||||
}
|
||||
|
|
10
vendor/github.com/docker/swarmkit/api/objects.pb.go
generated
vendored
10
vendor/github.com/docker/swarmkit/api/objects.pb.go
generated
vendored
|
@ -8,7 +8,7 @@ import fmt "fmt"
|
|||
import math "math"
|
||||
import google_protobuf "github.com/gogo/protobuf/types"
|
||||
import _ "github.com/gogo/protobuf/gogoproto"
|
||||
import google_protobuf3 "github.com/gogo/protobuf/types"
|
||||
import google_protobuf4 "github.com/gogo/protobuf/types"
|
||||
import _ "github.com/docker/swarmkit/protobuf/plugin"
|
||||
|
||||
import deepcopy "github.com/docker/swarmkit/api/deepcopy"
|
||||
|
@ -357,7 +357,7 @@ type Resource struct {
|
|||
Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"`
|
||||
// Payload bytes. This data is not interpreted in any way by SwarmKit.
|
||||
// By convention, it should be a marshalled protocol buffers message.
|
||||
Payload *google_protobuf3.Any `protobuf:"bytes,5,opt,name=payload" json:"payload,omitempty"`
|
||||
Payload *google_protobuf4.Any `protobuf:"bytes,5,opt,name=payload" json:"payload,omitempty"`
|
||||
}
|
||||
|
||||
func (m *Resource) Reset() { *m = Resource{} }
|
||||
|
@ -749,7 +749,7 @@ func (m *Resource) CopyFrom(src interface{}) {
|
|||
deepcopy.Copy(&m.Meta, &o.Meta)
|
||||
deepcopy.Copy(&m.Annotations, &o.Annotations)
|
||||
if o.Payload != nil {
|
||||
m.Payload = &google_protobuf3.Any{}
|
||||
m.Payload = &google_protobuf4.Any{}
|
||||
deepcopy.Copy(m.Payload, o.Payload)
|
||||
}
|
||||
}
|
||||
|
@ -4958,7 +4958,7 @@ func (this *Resource) String() string {
|
|||
`Meta:` + strings.Replace(strings.Replace(this.Meta.String(), "Meta", "Meta", 1), `&`, ``, 1) + `,`,
|
||||
`Annotations:` + strings.Replace(strings.Replace(this.Annotations.String(), "Annotations", "Annotations", 1), `&`, ``, 1) + `,`,
|
||||
`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
|
||||
`Payload:` + strings.Replace(fmt.Sprintf("%v", this.Payload), "Any", "google_protobuf3.Any", 1) + `,`,
|
||||
`Payload:` + strings.Replace(fmt.Sprintf("%v", this.Payload), "Any", "google_protobuf4.Any", 1) + `,`,
|
||||
`}`,
|
||||
}, "")
|
||||
return s
|
||||
|
@ -7976,7 +7976,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
|
|||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.Payload == nil {
|
||||
m.Payload = &google_protobuf3.Any{}
|
||||
m.Payload = &google_protobuf4.Any{}
|
||||
}
|
||||
if err := m.Payload.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
|
|
469
vendor/github.com/docker/swarmkit/api/specs.pb.go
generated
vendored
469
vendor/github.com/docker/swarmkit/api/specs.pb.go
generated
vendored
|
@ -8,8 +8,8 @@ import fmt "fmt"
|
|||
import math "math"
|
||||
import _ "github.com/gogo/protobuf/gogoproto"
|
||||
import google_protobuf1 "github.com/gogo/protobuf/types"
|
||||
import google_protobuf3 "github.com/gogo/protobuf/types"
|
||||
import google_protobuf4 "github.com/gogo/protobuf/types"
|
||||
import google_protobuf2 "github.com/gogo/protobuf/types"
|
||||
|
||||
import deepcopy "github.com/docker/swarmkit/api/deepcopy"
|
||||
|
||||
|
@ -506,7 +506,7 @@ func (*ResourceReference) Descriptor() ([]byte, []int) { return fileDescriptorSp
|
|||
|
||||
type GenericRuntimeSpec struct {
|
||||
Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
|
||||
Payload *google_protobuf3.Any `protobuf:"bytes,2,opt,name=payload" json:"payload,omitempty"`
|
||||
Payload *google_protobuf4.Any `protobuf:"bytes,2,opt,name=payload" json:"payload,omitempty"`
|
||||
}
|
||||
|
||||
func (m *GenericRuntimeSpec) Reset() { *m = GenericRuntimeSpec{} }
|
||||
|
@ -572,7 +572,7 @@ type ContainerSpec struct {
|
|||
// Privileges specifies security configuration/permissions.
|
||||
Privileges *Privileges `protobuf:"bytes,22,opt,name=privileges" json:"privileges,omitempty"`
|
||||
// Init declares that a custom init will be running inside the container, if null, use the daemon's configured settings
|
||||
Init *google_protobuf4.BoolValue `protobuf:"bytes,23,opt,name=init" json:"init,omitempty"`
|
||||
Init *google_protobuf2.BoolValue `protobuf:"bytes,23,opt,name=init" json:"init,omitempty"`
|
||||
// TTY declares that a TTY should be attached to the standard streams,
|
||||
// including stdin if it is still open.
|
||||
TTY bool `protobuf:"varint,13,opt,name=tty,proto3" json:"tty,omitempty"`
|
||||
|
@ -636,12 +636,6 @@ type ContainerSpec struct {
|
|||
//
|
||||
// https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime
|
||||
Sysctls map[string]string `protobuf:"bytes,26,rep,name=sysctls" json:"sysctls,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
// Swap limit equal to memory plus swap: '-1' to enable unlimited swap
|
||||
MemorySwap int64 `protobuf:"varint,27,opt,name=memory_swap,json=memorySwap,proto3" json:"memory_swap,omitempty"`
|
||||
// Tune container memory swappiness (0 to 100) - if not specified, defaults
|
||||
// to the container OS's default - generally 60, or the value predefined in
|
||||
// the image; set to -1 to unset a previously set value
|
||||
MemorySwappiness *google_protobuf4.Int64Value `protobuf:"bytes,28,opt,name=memory_swappiness,json=memorySwappiness" json:"memory_swappiness,omitempty"`
|
||||
}
|
||||
|
||||
func (m *ContainerSpec) Reset() { *m = ContainerSpec{} }
|
||||
|
@ -1084,7 +1078,7 @@ func (m *GenericRuntimeSpec) CopyFrom(src interface{}) {
|
|||
o := src.(*GenericRuntimeSpec)
|
||||
*m = *o
|
||||
if o.Payload != nil {
|
||||
m.Payload = &google_protobuf3.Any{}
|
||||
m.Payload = &google_protobuf4.Any{}
|
||||
deepcopy.Copy(m.Payload, o.Payload)
|
||||
}
|
||||
}
|
||||
|
@ -1149,7 +1143,7 @@ func (m *ContainerSpec) CopyFrom(src interface{}) {
|
|||
deepcopy.Copy(m.Privileges, o.Privileges)
|
||||
}
|
||||
if o.Init != nil {
|
||||
m.Init = &google_protobuf4.BoolValue{}
|
||||
m.Init = &google_protobuf2.BoolValue{}
|
||||
deepcopy.Copy(m.Init, o.Init)
|
||||
}
|
||||
if o.Mounts != nil {
|
||||
|
@ -1203,10 +1197,6 @@ func (m *ContainerSpec) CopyFrom(src interface{}) {
|
|||
}
|
||||
}
|
||||
|
||||
if o.MemorySwappiness != nil {
|
||||
m.MemorySwappiness = &google_protobuf4.Int64Value{}
|
||||
deepcopy.Copy(m.MemorySwappiness, o.MemorySwappiness)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *ContainerSpec_PullOptions) Copy() *ContainerSpec_PullOptions {
|
||||
|
@ -2114,25 +2104,6 @@ func (m *ContainerSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
i += copy(dAtA[i:], v)
|
||||
}
|
||||
}
|
||||
if m.MemorySwap != 0 {
|
||||
dAtA[i] = 0xd8
|
||||
i++
|
||||
dAtA[i] = 0x1
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.MemorySwap))
|
||||
}
|
||||
if m.MemorySwappiness != nil {
|
||||
dAtA[i] = 0xe2
|
||||
i++
|
||||
dAtA[i] = 0x1
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.MemorySwappiness.Size()))
|
||||
n25, err := m.MemorySwappiness.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n25
|
||||
}
|
||||
return i, nil
|
||||
}
|
||||
|
||||
|
@ -2278,20 +2249,20 @@ func (m *NetworkSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
dAtA[i] = 0xa
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Annotations.Size()))
|
||||
n26, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
n25, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n26
|
||||
i += n25
|
||||
if m.DriverConfig != nil {
|
||||
dAtA[i] = 0x12
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.DriverConfig.Size()))
|
||||
n27, err := m.DriverConfig.MarshalTo(dAtA[i:])
|
||||
n26, err := m.DriverConfig.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n27
|
||||
i += n26
|
||||
}
|
||||
if m.Ipv6Enabled {
|
||||
dAtA[i] = 0x18
|
||||
|
@ -2317,11 +2288,11 @@ func (m *NetworkSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
dAtA[i] = 0x2a
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.IPAM.Size()))
|
||||
n28, err := m.IPAM.MarshalTo(dAtA[i:])
|
||||
n27, err := m.IPAM.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n28
|
||||
i += n27
|
||||
}
|
||||
if m.Attachable {
|
||||
dAtA[i] = 0x30
|
||||
|
@ -2344,11 +2315,11 @@ func (m *NetworkSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
i++
|
||||
}
|
||||
if m.ConfigFrom != nil {
|
||||
nn29, err := m.ConfigFrom.MarshalTo(dAtA[i:])
|
||||
nn28, err := m.ConfigFrom.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += nn29
|
||||
i += nn28
|
||||
}
|
||||
return i, nil
|
||||
}
|
||||
|
@ -2379,67 +2350,67 @@ func (m *ClusterSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
dAtA[i] = 0xa
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Annotations.Size()))
|
||||
n30, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
n29, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n29
|
||||
dAtA[i] = 0x12
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.AcceptancePolicy.Size()))
|
||||
n30, err := m.AcceptancePolicy.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n30
|
||||
dAtA[i] = 0x12
|
||||
dAtA[i] = 0x1a
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.AcceptancePolicy.Size()))
|
||||
n31, err := m.AcceptancePolicy.MarshalTo(dAtA[i:])
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Orchestration.Size()))
|
||||
n31, err := m.Orchestration.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n31
|
||||
dAtA[i] = 0x1a
|
||||
dAtA[i] = 0x22
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Orchestration.Size()))
|
||||
n32, err := m.Orchestration.MarshalTo(dAtA[i:])
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Raft.Size()))
|
||||
n32, err := m.Raft.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n32
|
||||
dAtA[i] = 0x22
|
||||
dAtA[i] = 0x2a
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Raft.Size()))
|
||||
n33, err := m.Raft.MarshalTo(dAtA[i:])
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Dispatcher.Size()))
|
||||
n33, err := m.Dispatcher.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n33
|
||||
dAtA[i] = 0x2a
|
||||
dAtA[i] = 0x32
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Dispatcher.Size()))
|
||||
n34, err := m.Dispatcher.MarshalTo(dAtA[i:])
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.CAConfig.Size()))
|
||||
n34, err := m.CAConfig.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n34
|
||||
dAtA[i] = 0x32
|
||||
dAtA[i] = 0x3a
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.CAConfig.Size()))
|
||||
n35, err := m.CAConfig.MarshalTo(dAtA[i:])
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.TaskDefaults.Size()))
|
||||
n35, err := m.TaskDefaults.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n35
|
||||
dAtA[i] = 0x3a
|
||||
dAtA[i] = 0x42
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.TaskDefaults.Size()))
|
||||
n36, err := m.TaskDefaults.MarshalTo(dAtA[i:])
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.EncryptionConfig.Size()))
|
||||
n36, err := m.EncryptionConfig.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n36
|
||||
dAtA[i] = 0x42
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.EncryptionConfig.Size()))
|
||||
n37, err := m.EncryptionConfig.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n37
|
||||
return i, nil
|
||||
}
|
||||
|
||||
|
@ -2461,11 +2432,11 @@ func (m *SecretSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
dAtA[i] = 0xa
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Annotations.Size()))
|
||||
n38, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
n37, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n38
|
||||
i += n37
|
||||
if len(m.Data) > 0 {
|
||||
dAtA[i] = 0x12
|
||||
i++
|
||||
|
@ -2476,21 +2447,21 @@ func (m *SecretSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
dAtA[i] = 0x1a
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Templating.Size()))
|
||||
n39, err := m.Templating.MarshalTo(dAtA[i:])
|
||||
n38, err := m.Templating.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n39
|
||||
i += n38
|
||||
}
|
||||
if m.Driver != nil {
|
||||
dAtA[i] = 0x22
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Driver.Size()))
|
||||
n40, err := m.Driver.MarshalTo(dAtA[i:])
|
||||
n39, err := m.Driver.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n40
|
||||
i += n39
|
||||
}
|
||||
return i, nil
|
||||
}
|
||||
|
@ -2513,11 +2484,11 @@ func (m *ConfigSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
dAtA[i] = 0xa
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Annotations.Size()))
|
||||
n41, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
n40, err := m.Annotations.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n41
|
||||
i += n40
|
||||
if len(m.Data) > 0 {
|
||||
dAtA[i] = 0x12
|
||||
i++
|
||||
|
@ -2528,11 +2499,11 @@ func (m *ConfigSpec) MarshalTo(dAtA []byte) (int, error) {
|
|||
dAtA[i] = 0x1a
|
||||
i++
|
||||
i = encodeVarintSpecs(dAtA, i, uint64(m.Templating.Size()))
|
||||
n42, err := m.Templating.MarshalTo(dAtA[i:])
|
||||
n41, err := m.Templating.MarshalTo(dAtA[i:])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
i += n42
|
||||
i += n41
|
||||
}
|
||||
return i, nil
|
||||
}
|
||||
|
@ -2858,13 +2829,6 @@ func (m *ContainerSpec) Size() (n int) {
|
|||
n += mapEntrySize + 2 + sovSpecs(uint64(mapEntrySize))
|
||||
}
|
||||
}
|
||||
if m.MemorySwap != 0 {
|
||||
n += 2 + sovSpecs(uint64(m.MemorySwap))
|
||||
}
|
||||
if m.MemorySwappiness != nil {
|
||||
l = m.MemorySwappiness.Size()
|
||||
n += 2 + l + sovSpecs(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
|
@ -3158,7 +3122,7 @@ func (this *GenericRuntimeSpec) String() string {
|
|||
}
|
||||
s := strings.Join([]string{`&GenericRuntimeSpec{`,
|
||||
`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
|
||||
`Payload:` + strings.Replace(fmt.Sprintf("%v", this.Payload), "Any", "google_protobuf3.Any", 1) + `,`,
|
||||
`Payload:` + strings.Replace(fmt.Sprintf("%v", this.Payload), "Any", "google_protobuf4.Any", 1) + `,`,
|
||||
`}`,
|
||||
}, "")
|
||||
return s
|
||||
|
@ -3220,12 +3184,10 @@ func (this *ContainerSpec) String() string {
|
|||
`StopSignal:` + fmt.Sprintf("%v", this.StopSignal) + `,`,
|
||||
`Configs:` + strings.Replace(fmt.Sprintf("%v", this.Configs), "ConfigReference", "ConfigReference", 1) + `,`,
|
||||
`Privileges:` + strings.Replace(fmt.Sprintf("%v", this.Privileges), "Privileges", "Privileges", 1) + `,`,
|
||||
`Init:` + strings.Replace(fmt.Sprintf("%v", this.Init), "BoolValue", "google_protobuf4.BoolValue", 1) + `,`,
|
||||
`Init:` + strings.Replace(fmt.Sprintf("%v", this.Init), "BoolValue", "google_protobuf2.BoolValue", 1) + `,`,
|
||||
`Isolation:` + fmt.Sprintf("%v", this.Isolation) + `,`,
|
||||
`PidsLimit:` + fmt.Sprintf("%v", this.PidsLimit) + `,`,
|
||||
`Sysctls:` + mapStringForSysctls + `,`,
|
||||
`MemorySwap:` + fmt.Sprintf("%v", this.MemorySwap) + `,`,
|
||||
`MemorySwappiness:` + strings.Replace(fmt.Sprintf("%v", this.MemorySwappiness), "Int64Value", "google_protobuf4.Int64Value", 1) + `,`,
|
||||
`}`,
|
||||
}, "")
|
||||
return s
|
||||
|
@ -4442,7 +4404,7 @@ func (m *GenericRuntimeSpec) Unmarshal(dAtA []byte) error {
|
|||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.Payload == nil {
|
||||
m.Payload = &google_protobuf3.Any{}
|
||||
m.Payload = &google_protobuf4.Any{}
|
||||
}
|
||||
if err := m.Payload.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
|
@ -5330,7 +5292,7 @@ func (m *ContainerSpec) Unmarshal(dAtA []byte) error {
|
|||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.Init == nil {
|
||||
m.Init = &google_protobuf4.BoolValue{}
|
||||
m.Init = &google_protobuf2.BoolValue{}
|
||||
}
|
||||
if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
|
@ -5492,58 +5454,6 @@ func (m *ContainerSpec) Unmarshal(dAtA []byte) error {
|
|||
}
|
||||
m.Sysctls[mapkey] = mapvalue
|
||||
iNdEx = postIndex
|
||||
case 27:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field MemorySwap", wireType)
|
||||
}
|
||||
m.MemorySwap = 0
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowSpecs
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
m.MemorySwap |= (int64(b) & 0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
case 28:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field MemorySwappiness", wireType)
|
||||
}
|
||||
var msglen int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowSpecs
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
msglen |= (int(b) & 0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
if msglen < 0 {
|
||||
return ErrInvalidLengthSpecs
|
||||
}
|
||||
postIndex := iNdEx + msglen
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
if m.MemorySwappiness == nil {
|
||||
m.MemorySwappiness = &google_protobuf4.Int64Value{}
|
||||
}
|
||||
if err := m.MemorySwappiness.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||
return err
|
||||
}
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipSpecs(dAtA[iNdEx:])
|
||||
|
@ -6855,144 +6765,141 @@ var (
|
|||
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/specs.proto", fileDescriptorSpecs) }
|
||||
|
||||
var fileDescriptorSpecs = []byte{
|
||||
// 2213 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcf, 0x6f, 0x1b, 0xb9,
|
||||
0xf5, 0xb7, 0x6c, 0x59, 0x3f, 0xde, 0xc8, 0x89, 0xcc, 0xcd, 0xee, 0x8e, 0x95, 0xac, 0xad, 0xd5,
|
||||
0x66, 0xf3, 0xf5, 0xee, 0xe2, 0x2b, 0xa3, 0x6e, 0x90, 0x66, 0x93, 0x6e, 0x5b, 0xc9, 0xd2, 0xda,
|
||||
0x6a, 0x12, 0x5b, 0xa0, 0x1c, 0xb7, 0x01, 0x0a, 0x08, 0xf4, 0x0c, 0x2d, 0x0d, 0x3c, 0x1a, 0x4e,
|
||||
0x49, 0xca, 0x81, 0x6e, 0x3d, 0x2e, 0xdc, 0xbf, 0xc1, 0xe8, 0xa1, 0xe8, 0xbd, 0xfd, 0x2f, 0x72,
|
||||
0x6c, 0x6f, 0xed, 0xc5, 0xe8, 0xfa, 0x5f, 0xe8, 0xad, 0x97, 0x16, 0xe4, 0x70, 0xa4, 0x91, 0x2d,
|
||||
0xc7, 0x29, 0x9a, 0x43, 0x6f, 0xe4, 0x9b, 0xcf, 0xe7, 0x91, 0x7c, 0xfc, 0xf0, 0xf1, 0x71, 0xe0,
|
||||
0xcb, 0x9e, 0x27, 0xfb, 0xc3, 0xc3, 0xaa, 0xc3, 0x06, 0x1b, 0x2e, 0x73, 0x8e, 0x29, 0xdf, 0x10,
|
||||
0xaf, 0x09, 0x1f, 0x1c, 0x7b, 0x72, 0x83, 0x84, 0xde, 0x86, 0x08, 0xa9, 0x23, 0xaa, 0x21, 0x67,
|
||||
0x92, 0x21, 0x14, 0x01, 0xaa, 0x31, 0xa0, 0x7a, 0xf2, 0x83, 0xd2, 0x4d, 0x7c, 0x39, 0x0a, 0xa9,
|
||||
0xe1, 0x97, 0xee, 0xf4, 0x58, 0x8f, 0xe9, 0xe6, 0x86, 0x6a, 0x19, 0xeb, 0x6a, 0x8f, 0xb1, 0x9e,
|
||||
0x4f, 0x37, 0x74, 0xef, 0x70, 0x78, 0xb4, 0xe1, 0x0e, 0x39, 0x91, 0x1e, 0x0b, 0xcc, 0xf7, 0x95,
|
||||
0xcb, 0xdf, 0x49, 0x30, 0xba, 0x8e, 0xfa, 0x9a, 0x93, 0x30, 0xa4, 0xdc, 0x0c, 0x58, 0x39, 0x4b,
|
||||
0x43, 0x6e, 0x97, 0xb9, 0xb4, 0x13, 0x52, 0x07, 0x6d, 0x83, 0x45, 0x82, 0x80, 0x49, 0xed, 0x5b,
|
||||
0xd8, 0xa9, 0x72, 0x6a, 0xdd, 0xda, 0x5c, 0xab, 0x5e, 0x5d, 0x53, 0xb5, 0x36, 0x81, 0xd5, 0xd3,
|
||||
0x6f, 0xce, 0xd7, 0xe6, 0x70, 0x92, 0x89, 0x7e, 0x0a, 0x05, 0x97, 0x0a, 0x8f, 0x53, 0xb7, 0xcb,
|
||||
0x99, 0x4f, 0xed, 0xf9, 0x72, 0x6a, 0xfd, 0xd6, 0xe6, 0xbd, 0x59, 0x9e, 0xd4, 0xe0, 0x98, 0xf9,
|
||||
0x14, 0x5b, 0x86, 0xa1, 0x3a, 0x68, 0x1b, 0x60, 0x40, 0x07, 0x87, 0x94, 0x8b, 0xbe, 0x17, 0xda,
|
||||
0x0b, 0x9a, 0xfe, 0x7f, 0xd7, 0xd1, 0xd5, 0xdc, 0xab, 0x2f, 0xc6, 0x70, 0x9c, 0xa0, 0xa2, 0x17,
|
||||
0x50, 0x20, 0x27, 0xc4, 0xf3, 0xc9, 0xa1, 0xe7, 0x7b, 0x72, 0x64, 0xa7, 0xb5, 0xab, 0x2f, 0xde,
|
||||
0xea, 0xaa, 0x96, 0x20, 0xe0, 0x29, 0x7a, 0xc5, 0x05, 0x98, 0x0c, 0x84, 0x1e, 0x40, 0xb6, 0xdd,
|
||||
0xdc, 0x6d, 0xb4, 0x76, 0xb7, 0x8b, 0x73, 0xa5, 0x95, 0xd3, 0xb3, 0xf2, 0x87, 0xca, 0xc7, 0x04,
|
||||
0xd0, 0xa6, 0x81, 0xeb, 0x05, 0x3d, 0xb4, 0x0e, 0xb9, 0xda, 0xd6, 0x56, 0xb3, 0xbd, 0xdf, 0x6c,
|
||||
0x14, 0x53, 0xa5, 0xd2, 0xe9, 0x59, 0xf9, 0xa3, 0x69, 0x60, 0xcd, 0x71, 0x68, 0x28, 0xa9, 0x5b,
|
||||
0x4a, 0x7f, 0xf7, 0xfb, 0xd5, 0xb9, 0xca, 0x77, 0x29, 0x28, 0x24, 0x27, 0x81, 0x1e, 0x40, 0xa6,
|
||||
0xb6, 0xb5, 0xdf, 0x3a, 0x68, 0x16, 0xe7, 0x26, 0xf4, 0x24, 0xa2, 0xe6, 0x48, 0xef, 0x84, 0xa2,
|
||||
0xfb, 0xb0, 0xd8, 0xae, 0xbd, 0xec, 0x34, 0x8b, 0xa9, 0xc9, 0x74, 0x92, 0xb0, 0x36, 0x19, 0x0a,
|
||||
0x8d, 0x6a, 0xe0, 0x5a, 0x6b, 0xb7, 0x38, 0x3f, 0x1b, 0xd5, 0xe0, 0xc4, 0x0b, 0xcc, 0x54, 0x7e,
|
||||
0x97, 0x06, 0xab, 0x43, 0xf9, 0x89, 0xe7, 0xbc, 0x67, 0x89, 0x3c, 0x82, 0xb4, 0x24, 0xe2, 0x58,
|
||||
0x4b, 0xc3, 0x9a, 0x2d, 0x8d, 0x7d, 0x22, 0x8e, 0xd5, 0xa0, 0x86, 0xae, 0xf1, 0x4a, 0x19, 0x9c,
|
||||
0x86, 0xbe, 0xe7, 0x10, 0x49, 0x5d, 0xad, 0x0c, 0x6b, 0xf3, 0xf3, 0x59, 0x6c, 0x3c, 0x46, 0x99,
|
||||
0xf9, 0xef, 0xcc, 0xe1, 0x04, 0x15, 0x3d, 0x85, 0x4c, 0xcf, 0x67, 0x87, 0xc4, 0xd7, 0x9a, 0xb0,
|
||||
0x36, 0x3f, 0x9d, 0xe5, 0x64, 0x5b, 0x23, 0x26, 0x0e, 0x0c, 0x05, 0x3d, 0x86, 0xcc, 0x30, 0x74,
|
||||
0x89, 0xa4, 0x76, 0x46, 0x93, 0xcb, 0xb3, 0xc8, 0x2f, 0x35, 0x62, 0x8b, 0x05, 0x47, 0x5e, 0x0f,
|
||||
0x1b, 0x3c, 0x7a, 0x06, 0xb9, 0x80, 0xca, 0xd7, 0x8c, 0x1f, 0x0b, 0x3b, 0x5b, 0x5e, 0x58, 0xb7,
|
||||
0x36, 0xbf, 0x9a, 0x29, 0xc6, 0x08, 0x53, 0x93, 0x92, 0x38, 0xfd, 0x01, 0x0d, 0x64, 0xe4, 0xa6,
|
||||
// 2166 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4d, 0x6f, 0x1b, 0xc9,
|
||||
0xd1, 0x16, 0x25, 0x8a, 0x1f, 0x35, 0x94, 0x4d, 0xf5, 0xda, 0xde, 0x11, 0x6d, 0x4b, 0x34, 0xd7,
|
||||
0xeb, 0x57, 0xbb, 0x8b, 0x97, 0x42, 0x94, 0xc5, 0xc6, 0x6b, 0x67, 0x93, 0x90, 0x22, 0x57, 0x62,
|
||||
0x6c, 0x4b, 0x44, 0x53, 0x56, 0x62, 0x20, 0x00, 0xd1, 0x9a, 0x69, 0x91, 0x03, 0x0d, 0xa7, 0x27,
|
||||
0xdd, 0x4d, 0x19, 0xbc, 0xe5, 0xb8, 0x50, 0x7e, 0x83, 0x90, 0x43, 0x90, 0x7b, 0xf2, 0x2f, 0x7c,
|
||||
0xcc, 0x31, 0xb9, 0x08, 0x59, 0x1d, 0xf2, 0x07, 0x72, 0xcb, 0x25, 0x41, 0xf7, 0xf4, 0xf0, 0x43,
|
||||
0x1e, 0x59, 0x0e, 0xe2, 0x43, 0x6e, 0xdd, 0x35, 0xcf, 0x53, 0xfd, 0xf5, 0x54, 0x75, 0xf5, 0xc0,
|
||||
0xe7, 0x3d, 0x4f, 0xf6, 0x87, 0x87, 0x55, 0x87, 0x0d, 0x36, 0x5c, 0xe6, 0x1c, 0x53, 0xbe, 0x21,
|
||||
0x5e, 0x13, 0x3e, 0x38, 0xf6, 0xe4, 0x06, 0x09, 0xbd, 0x0d, 0x11, 0x52, 0x47, 0x54, 0x43, 0xce,
|
||||
0x24, 0x43, 0x28, 0x02, 0x54, 0x63, 0x40, 0xf5, 0xe4, 0x07, 0xa5, 0xeb, 0xf8, 0x72, 0x14, 0x52,
|
||||
0xc3, 0x2f, 0xdd, 0xea, 0xb1, 0x1e, 0xd3, 0xcd, 0x0d, 0xd5, 0x32, 0xd6, 0xd5, 0x1e, 0x63, 0x3d,
|
||||
0x9f, 0x6e, 0xe8, 0xde, 0xe1, 0xf0, 0x68, 0xc3, 0x1d, 0x72, 0x22, 0x3d, 0x16, 0x98, 0xef, 0x2b,
|
||||
0x97, 0xbf, 0x93, 0x60, 0x74, 0x15, 0xf5, 0x35, 0x27, 0x61, 0x48, 0xb9, 0x19, 0xb0, 0x72, 0x96,
|
||||
0x86, 0xdc, 0x2e, 0x73, 0x69, 0x27, 0xa4, 0x0e, 0xda, 0x06, 0x8b, 0x04, 0x01, 0x93, 0xda, 0xb7,
|
||||
0xb0, 0x53, 0xe5, 0xd4, 0xba, 0xb5, 0xb9, 0x56, 0x7d, 0x7b, 0x4d, 0xd5, 0xda, 0x04, 0x56, 0x4f,
|
||||
0xbf, 0x39, 0x5f, 0x9b, 0xc3, 0xd3, 0x4c, 0xf4, 0x53, 0x28, 0xb8, 0x54, 0x78, 0x9c, 0xba, 0x5d,
|
||||
0xce, 0x7c, 0x6a, 0xcf, 0x97, 0x53, 0xeb, 0x37, 0x36, 0xef, 0x25, 0x79, 0x52, 0x83, 0x63, 0xe6,
|
||||
0x53, 0x6c, 0x19, 0x86, 0xea, 0xa0, 0x6d, 0x80, 0x01, 0x1d, 0x1c, 0x52, 0x2e, 0xfa, 0x5e, 0x68,
|
||||
0x2f, 0x68, 0xfa, 0xff, 0x5d, 0x45, 0x57, 0x73, 0xaf, 0xbe, 0x18, 0xc3, 0xf1, 0x14, 0x15, 0xbd,
|
||||
0x80, 0x02, 0x39, 0x21, 0x9e, 0x4f, 0x0e, 0x3d, 0xdf, 0x93, 0x23, 0x3b, 0xad, 0x5d, 0x7d, 0xf6,
|
||||
0x4e, 0x57, 0xb5, 0x29, 0x02, 0x9e, 0xa1, 0x57, 0x5c, 0x80, 0xc9, 0x40, 0xe8, 0x11, 0x64, 0xdb,
|
||||
0xcd, 0xdd, 0x46, 0x6b, 0x77, 0xbb, 0x38, 0x57, 0x5a, 0x39, 0x3d, 0x2b, 0xdf, 0x56, 0x3e, 0x26,
|
||||
0x80, 0x36, 0x0d, 0x5c, 0x2f, 0xe8, 0xa1, 0x75, 0xc8, 0xd5, 0xb6, 0xb6, 0x9a, 0xed, 0xfd, 0x66,
|
||||
0xa3, 0x98, 0x2a, 0x95, 0x4e, 0xcf, 0xca, 0x77, 0x66, 0x81, 0x35, 0xc7, 0xa1, 0xa1, 0xa4, 0x6e,
|
||||
0x29, 0xfd, 0xdd, 0xef, 0x57, 0xe7, 0x2a, 0xdf, 0xa5, 0xa0, 0x30, 0x3d, 0x09, 0xf4, 0x08, 0x32,
|
||||
0xb5, 0xad, 0xfd, 0xd6, 0x41, 0xb3, 0x38, 0x37, 0xa1, 0x4f, 0x23, 0x6a, 0x8e, 0xf4, 0x4e, 0x28,
|
||||
0x7a, 0x08, 0x8b, 0xed, 0xda, 0xcb, 0x4e, 0xb3, 0x98, 0x9a, 0x4c, 0x67, 0x1a, 0xd6, 0x26, 0x43,
|
||||
0xa1, 0x51, 0x0d, 0x5c, 0x6b, 0xed, 0x16, 0xe7, 0x93, 0x51, 0x0d, 0x4e, 0xbc, 0xc0, 0x4c, 0xe5,
|
||||
0x77, 0x69, 0xb0, 0x3a, 0x94, 0x9f, 0x78, 0xce, 0x07, 0x96, 0xc8, 0x57, 0x90, 0x96, 0x44, 0x1c,
|
||||
0x6b, 0x69, 0x58, 0xc9, 0xd2, 0xd8, 0x27, 0xe2, 0x58, 0x0d, 0x6a, 0xe8, 0x1a, 0xaf, 0x94, 0xc1,
|
||||
0x69, 0xe8, 0x7b, 0x0e, 0x91, 0xd4, 0xd5, 0xca, 0xb0, 0x36, 0x3f, 0x4d, 0x62, 0xe3, 0x31, 0xca,
|
||||
0xcc, 0x7f, 0x67, 0x0e, 0x4f, 0x51, 0xd1, 0x53, 0xc8, 0xf4, 0x7c, 0x76, 0x48, 0x7c, 0xad, 0x09,
|
||||
0x6b, 0xf3, 0x41, 0x92, 0x93, 0x6d, 0x8d, 0x98, 0x38, 0x30, 0x14, 0xf4, 0x18, 0x32, 0xc3, 0xd0,
|
||||
0x25, 0x92, 0xda, 0x19, 0x4d, 0x2e, 0x27, 0x91, 0x5f, 0x6a, 0xc4, 0x16, 0x0b, 0x8e, 0xbc, 0x1e,
|
||||
0x36, 0x78, 0xf4, 0x0c, 0x72, 0x01, 0x95, 0xaf, 0x19, 0x3f, 0x16, 0x76, 0xb6, 0xbc, 0xb0, 0x6e,
|
||||
0x6d, 0x7e, 0x91, 0x28, 0xc6, 0x08, 0x53, 0x93, 0x92, 0x38, 0xfd, 0x01, 0x0d, 0x64, 0xe4, 0xa6,
|
||||
0x3e, 0x6f, 0xa7, 0xf0, 0xd8, 0x01, 0xfa, 0x31, 0xe4, 0x68, 0xe0, 0x86, 0xcc, 0x0b, 0xa4, 0x9d,
|
||||
0xbb, 0x7e, 0x22, 0x4d, 0x83, 0x51, 0xc1, 0xc4, 0x63, 0x86, 0x62, 0x73, 0xe6, 0xfb, 0x87, 0xc4,
|
||||
0x39, 0xb6, 0xf3, 0xef, 0xb8, 0x8c, 0x31, 0xa3, 0x9e, 0x81, 0xf4, 0x80, 0xb9, 0xb4, 0xb2, 0x01,
|
||||
0xcb, 0x57, 0x42, 0x8d, 0x4a, 0x90, 0x33, 0xa1, 0x8e, 0x34, 0x92, 0xc6, 0xe3, 0x7e, 0xe5, 0x36,
|
||||
0x2c, 0x4d, 0x85, 0xb5, 0xf2, 0xc7, 0x45, 0xc8, 0xc5, 0x7b, 0x8d, 0x6a, 0x90, 0x77, 0x58, 0x20,
|
||||
0x89, 0x17, 0x50, 0x6e, 0xe4, 0x35, 0x73, 0x67, 0xb6, 0x62, 0x90, 0x62, 0xed, 0xcc, 0xe1, 0x09,
|
||||
0x0b, 0x7d, 0x0b, 0x79, 0x4e, 0x05, 0x1b, 0x72, 0x87, 0x0a, 0xa3, 0xaf, 0xf5, 0xd9, 0x0a, 0x89,
|
||||
0x40, 0x98, 0xfe, 0x7a, 0xe8, 0x71, 0xaa, 0xa2, 0x2c, 0xf0, 0x84, 0x8a, 0x9e, 0x42, 0x96, 0x53,
|
||||
0x21, 0x09, 0x97, 0x6f, 0x93, 0x08, 0x8e, 0x20, 0x6d, 0xe6, 0x7b, 0xce, 0x08, 0xc7, 0x0c, 0xf4,
|
||||
0x14, 0xf2, 0xa1, 0x4f, 0x1c, 0xed, 0xd5, 0x5e, 0xd4, 0xf4, 0x4f, 0x66, 0xd1, 0xdb, 0x31, 0x08,
|
||||
0x4f, 0xf0, 0xe8, 0x6b, 0x00, 0x9f, 0xf5, 0xba, 0x2e, 0xf7, 0x4e, 0x28, 0x37, 0x12, 0x2b, 0xcd,
|
||||
0x62, 0x37, 0x34, 0x02, 0xe7, 0x7d, 0xd6, 0x8b, 0x9a, 0x68, 0xfb, 0xbf, 0xd2, 0x57, 0x42, 0x5b,
|
||||
0xcf, 0x00, 0xc8, 0xf8, 0xab, 0x51, 0xd7, 0x17, 0xef, 0xe4, 0xca, 0xec, 0x48, 0x82, 0x8e, 0x3e,
|
||||
0x85, 0xc2, 0x11, 0xe3, 0x0e, 0xed, 0x9a, 0x53, 0x93, 0xd7, 0x9a, 0xb0, 0xb4, 0x2d, 0xd2, 0x17,
|
||||
0xaa, 0x43, 0xb6, 0x47, 0x03, 0xca, 0x3d, 0xc7, 0x06, 0x3d, 0xd8, 0x83, 0x99, 0x07, 0x32, 0x82,
|
||||
0xe0, 0x61, 0x20, 0xbd, 0x01, 0x35, 0x23, 0xc5, 0x44, 0xf4, 0x2b, 0xf8, 0x20, 0xde, 0xbe, 0x2e,
|
||||
0xa7, 0x47, 0x94, 0xd3, 0x40, 0x69, 0xc0, 0xd2, 0x71, 0xf8, 0xfc, 0xed, 0x1a, 0x30, 0x68, 0x93,
|
||||
0xbb, 0x7a, 0x22, 0x4d, 0x83, 0x51, 0x9b, 0x89, 0xc7, 0x0c, 0xc5, 0xe6, 0xcc, 0xf7, 0x0f, 0x89,
|
||||
0x73, 0x6c, 0xe7, 0xdf, 0x73, 0x19, 0x63, 0x46, 0x3d, 0x03, 0xe9, 0x01, 0x73, 0x69, 0x65, 0x03,
|
||||
0x96, 0xdf, 0xda, 0x6a, 0x54, 0x82, 0x9c, 0xd9, 0xea, 0x48, 0x23, 0x69, 0x3c, 0xee, 0x57, 0x6e,
|
||||
0xc2, 0xd2, 0xcc, 0xb6, 0x56, 0xfe, 0xb8, 0x08, 0xb9, 0xf8, 0xac, 0x51, 0x0d, 0xf2, 0x0e, 0x0b,
|
||||
0x24, 0xf1, 0x02, 0xca, 0x8d, 0xbc, 0x12, 0x4f, 0x66, 0x2b, 0x06, 0x29, 0xd6, 0xce, 0x1c, 0x9e,
|
||||
0xb0, 0xd0, 0xb7, 0x90, 0xe7, 0x54, 0xb0, 0x21, 0x77, 0xa8, 0x30, 0xfa, 0x5a, 0x4f, 0x56, 0x48,
|
||||
0x04, 0xc2, 0xf4, 0xd7, 0x43, 0x8f, 0x53, 0xb5, 0xcb, 0x02, 0x4f, 0xa8, 0xe8, 0x29, 0x64, 0x39,
|
||||
0x15, 0x92, 0x70, 0xf9, 0x2e, 0x89, 0xe0, 0x08, 0xd2, 0x66, 0xbe, 0xe7, 0x8c, 0x70, 0xcc, 0x40,
|
||||
0x4f, 0x21, 0x1f, 0xfa, 0xc4, 0xd1, 0x5e, 0xed, 0x45, 0x4d, 0xbf, 0x9f, 0x44, 0x6f, 0xc7, 0x20,
|
||||
0x3c, 0xc1, 0xa3, 0xaf, 0x01, 0x7c, 0xd6, 0xeb, 0xba, 0xdc, 0x3b, 0xa1, 0xdc, 0x48, 0xac, 0x94,
|
||||
0xc4, 0x6e, 0x68, 0x04, 0xce, 0xfb, 0xac, 0x17, 0x35, 0xd1, 0xf6, 0x7f, 0xa5, 0xaf, 0x29, 0x6d,
|
||||
0x3d, 0x03, 0x20, 0xe3, 0xaf, 0x46, 0x5d, 0x9f, 0xbd, 0x97, 0x2b, 0x73, 0x22, 0x53, 0x74, 0xf4,
|
||||
0x00, 0x0a, 0x47, 0x8c, 0x3b, 0xb4, 0x6b, 0xa2, 0x26, 0xaf, 0x35, 0x61, 0x69, 0x5b, 0xa4, 0x2f,
|
||||
0x54, 0x87, 0x6c, 0x8f, 0x06, 0x94, 0x7b, 0x8e, 0x0d, 0x7a, 0xb0, 0x47, 0x89, 0x01, 0x19, 0x41,
|
||||
0xf0, 0x30, 0x90, 0xde, 0x80, 0x9a, 0x91, 0x62, 0x22, 0xfa, 0x15, 0x7c, 0x14, 0x1f, 0x5f, 0x97,
|
||||
0xd3, 0x23, 0xca, 0x69, 0xa0, 0x34, 0x60, 0xe9, 0x7d, 0xf8, 0xf4, 0xdd, 0x1a, 0x30, 0x68, 0x93,
|
||||
0x6c, 0x10, 0xbf, 0xfc, 0x41, 0xd4, 0xf3, 0x90, 0xe5, 0xd1, 0xb8, 0x95, 0xdf, 0xa6, 0x94, 0xea,
|
||||
0x2f, 0x21, 0xd0, 0x06, 0x58, 0xe3, 0xe1, 0x3d, 0x57, 0xab, 0x37, 0x5f, 0xbf, 0x75, 0x71, 0xbe,
|
||||
0x2f, 0x21, 0xd0, 0x06, 0x58, 0xe3, 0xe1, 0x3d, 0x57, 0xab, 0x37, 0x5f, 0xbf, 0x71, 0x71, 0xbe,
|
||||
0x06, 0x31, 0xb6, 0xd5, 0x50, 0x39, 0xc8, 0xb4, 0x5d, 0xd4, 0x84, 0xa5, 0x31, 0x41, 0x95, 0x01,
|
||||
0xe6, 0xa2, 0x2c, 0xbf, 0x6d, 0xa6, 0xfb, 0xa3, 0x90, 0xe2, 0x02, 0x4f, 0xf4, 0x2a, 0xbf, 0x04,
|
||||
0x74, 0x35, 0x2e, 0x08, 0x41, 0xfa, 0xd8, 0x0b, 0xcc, 0x34, 0xb0, 0x6e, 0xa3, 0x2a, 0x64, 0x43,
|
||||
0x32, 0xf2, 0x19, 0x71, 0xcd, 0xc1, 0xb8, 0x53, 0x8d, 0x0a, 0x84, 0x6a, 0x5c, 0x20, 0x54, 0x6b,
|
||||
0xc1, 0x08, 0xc7, 0xa0, 0xca, 0x33, 0xf8, 0x70, 0xe6, 0xf6, 0xa2, 0x4d, 0x28, 0x8c, 0x0f, 0xdc,
|
||||
0x64, 0xad, 0xb7, 0x2f, 0xce, 0xd7, 0xac, 0xf1, 0xc9, 0x6c, 0x35, 0xb0, 0x35, 0x06, 0xb5, 0xdc,
|
||||
0xca, 0x5f, 0x96, 0x60, 0x69, 0xea, 0xd8, 0xa2, 0x3b, 0xb0, 0xe8, 0x0d, 0x48, 0x8f, 0x9a, 0x39,
|
||||
0x46, 0x1d, 0xd4, 0x84, 0x8c, 0x4f, 0x0e, 0xa9, 0xaf, 0x0e, 0xaf, 0xda, 0xb8, 0xff, 0xbf, 0xf1,
|
||||
0xfc, 0x57, 0x9f, 0x6b, 0x7c, 0x33, 0x90, 0x7c, 0x84, 0x0d, 0x19, 0xd9, 0x90, 0x75, 0xd8, 0x60,
|
||||
0x40, 0x02, 0x75, 0x4d, 0x2c, 0xac, 0xe7, 0x71, 0xdc, 0x55, 0x91, 0x21, 0xbc, 0x27, 0xec, 0xb4,
|
||||
0x36, 0xeb, 0x36, 0x2a, 0xc2, 0x02, 0x0d, 0x4e, 0xec, 0x45, 0x6d, 0x52, 0x4d, 0x65, 0x71, 0xbd,
|
||||
0xe8, 0xf4, 0xe5, 0xb1, 0x6a, 0x2a, 0xde, 0x50, 0x50, 0x6e, 0x67, 0xa3, 0x88, 0xaa, 0x36, 0xfa,
|
||||
0x11, 0x64, 0x06, 0x6c, 0x18, 0x48, 0x61, 0xe7, 0xf4, 0x64, 0x57, 0x66, 0x4d, 0xf6, 0x85, 0x42,
|
||||
0x18, 0x65, 0x19, 0x38, 0x6a, 0xc2, 0xb2, 0x90, 0x2c, 0xec, 0xf6, 0x38, 0x71, 0x68, 0x37, 0xa4,
|
||||
0xdc, 0x63, 0xae, 0x49, 0xc3, 0x2b, 0x57, 0x36, 0xa5, 0x61, 0x0a, 0x3e, 0x7c, 0x5b, 0x71, 0xb6,
|
||||
0x15, 0xa5, 0xad, 0x19, 0xa8, 0x0d, 0x85, 0x70, 0xe8, 0xfb, 0x5d, 0x16, 0x46, 0x37, 0x72, 0x74,
|
||||
0x76, 0xde, 0x21, 0x64, 0xed, 0xa1, 0xef, 0xef, 0x45, 0x24, 0x6c, 0x85, 0x93, 0x0e, 0xfa, 0x08,
|
||||
0x32, 0x3d, 0xce, 0x86, 0x61, 0x74, 0x6e, 0xf2, 0xd8, 0xf4, 0xd0, 0x37, 0x90, 0x15, 0xd4, 0xe1,
|
||||
0x54, 0x0a, 0xbb, 0xa0, 0x97, 0xfa, 0xd9, 0xac, 0x41, 0x3a, 0x1a, 0x32, 0x3e, 0x13, 0x38, 0xe6,
|
||||
0xa0, 0x15, 0x58, 0x90, 0x72, 0x64, 0x2f, 0x95, 0x53, 0xeb, 0xb9, 0x7a, 0xf6, 0xe2, 0x7c, 0x6d,
|
||||
0x61, 0x7f, 0xff, 0x15, 0x56, 0x36, 0x75, 0x5b, 0xf4, 0x99, 0x90, 0x01, 0x19, 0x50, 0xfb, 0x96,
|
||||
0x8e, 0xed, 0xb8, 0x8f, 0x5e, 0x01, 0xb8, 0x81, 0xe8, 0x3a, 0x3a, 0x3d, 0xd9, 0xb7, 0xf5, 0xea,
|
||||
0xbe, 0xba, 0x79, 0x75, 0x8d, 0xdd, 0x8e, 0xb9, 0x31, 0x97, 0x2e, 0xce, 0xd7, 0xf2, 0xe3, 0x2e,
|
||||
0xce, 0xbb, 0x81, 0x88, 0x9a, 0xa8, 0x0e, 0x56, 0x9f, 0x12, 0x5f, 0xf6, 0x9d, 0x3e, 0x75, 0x8e,
|
||||
0xed, 0xe2, 0xf5, 0x57, 0xe0, 0x8e, 0x86, 0x19, 0x0f, 0x49, 0x92, 0x52, 0xb0, 0x9a, 0xaa, 0xb0,
|
||||
0x97, 0x75, 0xac, 0xa2, 0x0e, 0xfa, 0x04, 0x80, 0x85, 0x34, 0xe8, 0x0a, 0xe9, 0x7a, 0x81, 0x8d,
|
||||
0xd4, 0x92, 0x71, 0x5e, 0x59, 0x3a, 0xca, 0x80, 0xee, 0xaa, 0x0b, 0x8a, 0xb8, 0x5d, 0x16, 0xf8,
|
||||
0x23, 0xfb, 0x03, 0xfd, 0x35, 0xa7, 0x0c, 0x7b, 0x81, 0x3f, 0x42, 0x6b, 0x60, 0x69, 0x5d, 0x08,
|
||||
0xaf, 0x17, 0x10, 0xdf, 0xbe, 0xa3, 0xe3, 0x01, 0xca, 0xd4, 0xd1, 0x16, 0xb5, 0x0f, 0x51, 0x34,
|
||||
0x84, 0xfd, 0xe1, 0xf5, 0xfb, 0x60, 0x26, 0x3b, 0xd9, 0x07, 0xc3, 0x41, 0x3f, 0x01, 0x08, 0xb9,
|
||||
0x77, 0xe2, 0xf9, 0xb4, 0x47, 0x85, 0xfd, 0x91, 0x5e, 0xf4, 0xea, 0xcc, 0x9b, 0x69, 0x8c, 0xc2,
|
||||
0x09, 0x06, 0xaa, 0x42, 0xda, 0x0b, 0x3c, 0x69, 0x7f, 0x6c, 0x6e, 0xa5, 0xcb, 0x52, 0xad, 0x33,
|
||||
0xe6, 0x1f, 0x10, 0x7f, 0x48, 0xb1, 0xc6, 0xa1, 0x16, 0xe4, 0x3d, 0xc1, 0x7c, 0x2d, 0x5f, 0xdb,
|
||||
0xd6, 0xf9, 0xed, 0x1d, 0xf6, 0xaf, 0x15, 0x53, 0xf0, 0x84, 0x8d, 0xee, 0x41, 0x3e, 0xf4, 0x5c,
|
||||
0xf1, 0xdc, 0x1b, 0x78, 0xd2, 0x5e, 0x29, 0xa7, 0xd6, 0x17, 0xf0, 0xc4, 0x80, 0x76, 0x20, 0x2b,
|
||||
0x46, 0xc2, 0x91, 0xbe, 0xb0, 0x4b, 0x3a, 0x2e, 0xd5, 0x9b, 0x87, 0xe9, 0x44, 0x84, 0x28, 0x71,
|
||||
0xc4, 0x74, 0xb5, 0x05, 0x03, 0x3a, 0x60, 0x7c, 0xd4, 0x15, 0xaf, 0x49, 0x68, 0xdf, 0xd5, 0x23,
|
||||
0x41, 0x64, 0xea, 0xbc, 0x26, 0x21, 0xda, 0x81, 0xe5, 0x04, 0x20, 0xf4, 0x02, 0x2a, 0x84, 0x7d,
|
||||
0x4f, 0x07, 0xe4, 0xee, 0x95, 0x80, 0xb4, 0x02, 0xf9, 0xe8, 0x61, 0x14, 0x91, 0xe2, 0xc4, 0x47,
|
||||
0x44, 0x2a, 0x7d, 0x0d, 0x56, 0x22, 0x77, 0xa9, 0x9c, 0x73, 0x4c, 0x47, 0x26, 0x1d, 0xaa, 0xa6,
|
||||
0x12, 0xd8, 0x89, 0xe2, 0xea, 0x7c, 0x9d, 0xc7, 0x51, 0xe7, 0xc9, 0xfc, 0xe3, 0x54, 0x69, 0x13,
|
||||
0xac, 0xc4, 0x19, 0x46, 0x9f, 0xa9, 0xbb, 0xa4, 0xe7, 0x09, 0xc9, 0x47, 0x5d, 0x32, 0x94, 0x7d,
|
||||
0xfb, 0x67, 0x9a, 0x50, 0x88, 0x8d, 0xb5, 0xa1, 0xec, 0x97, 0xba, 0x30, 0x39, 0x0a, 0xa8, 0x0c,
|
||||
0x96, 0x3a, 0x62, 0x82, 0xf2, 0x13, 0xca, 0x55, 0x9d, 0xa6, 0x14, 0x9c, 0x34, 0xa9, 0x54, 0x20,
|
||||
0x28, 0xe1, 0x4e, 0x5f, 0x67, 0xe2, 0x3c, 0x36, 0x3d, 0x95, 0x5a, 0xe3, 0x7c, 0x63, 0x52, 0xab,
|
||||
0xe9, 0x96, 0x9e, 0x40, 0x21, 0x19, 0xd3, 0xff, 0x64, 0x41, 0x95, 0x3f, 0xa5, 0x20, 0x3f, 0xde,
|
||||
0x77, 0xf4, 0x10, 0x96, 0x5b, 0x9d, 0xbd, 0xe7, 0xb5, 0xfd, 0xd6, 0xde, 0x6e, 0xb7, 0xd1, 0xfc,
|
||||
0xb6, 0xf6, 0xf2, 0xf9, 0x7e, 0x71, 0xae, 0xf4, 0xc9, 0xe9, 0x59, 0x79, 0x65, 0x72, 0xc5, 0xc4,
|
||||
0xf0, 0x06, 0x3d, 0x22, 0x43, 0x5f, 0x4e, 0xb3, 0xda, 0x78, 0x6f, 0xab, 0xd9, 0xe9, 0x14, 0x53,
|
||||
0xd7, 0xb1, 0xda, 0x9c, 0x39, 0x54, 0x08, 0xb4, 0x09, 0xc5, 0x09, 0x6b, 0xe7, 0x55, 0xbb, 0x89,
|
||||
0x0f, 0x8a, 0xf3, 0xa5, 0x7b, 0xa7, 0x67, 0x65, 0xfb, 0x2a, 0x69, 0x67, 0x14, 0x52, 0x7e, 0x60,
|
||||
0xde, 0x47, 0xff, 0x48, 0x41, 0x21, 0x59, 0x5e, 0xa3, 0xad, 0xa8, 0x2c, 0xd6, 0x2b, 0xbe, 0xb5,
|
||||
0xb9, 0x71, 0x53, 0x39, 0xae, 0xaf, 0x75, 0x7f, 0xa8, 0xfc, 0xbe, 0x50, 0x2f, 0x61, 0x4d, 0x46,
|
||||
0x0f, 0x61, 0x31, 0x64, 0x5c, 0xc6, 0x17, 0xe0, 0xec, 0xe3, 0xc9, 0x78, 0x5c, 0xb4, 0x45, 0xe0,
|
||||
0x4a, 0x1f, 0x6e, 0x4d, 0x7b, 0x43, 0xf7, 0x61, 0xe1, 0xa0, 0xd5, 0x2e, 0xce, 0x95, 0xee, 0x9e,
|
||||
0x9e, 0x95, 0x3f, 0x9e, 0xfe, 0x78, 0xe0, 0x71, 0x39, 0x24, 0x7e, 0xab, 0x8d, 0xbe, 0x84, 0xc5,
|
||||
0xc6, 0x6e, 0x07, 0xe3, 0x62, 0xaa, 0xb4, 0x76, 0x7a, 0x56, 0xbe, 0x3b, 0x8d, 0x53, 0x9f, 0xd8,
|
||||
0x30, 0x70, 0x31, 0x3b, 0x1c, 0xbf, 0x0a, 0xff, 0x39, 0x0f, 0x96, 0xa9, 0x0b, 0xde, 0xf7, 0x8f,
|
||||
0x83, 0xa5, 0xa8, 0xe8, 0x8d, 0x13, 0xfe, 0xfc, 0x8d, 0xb5, 0x6f, 0x21, 0x22, 0x18, 0x4d, 0x7f,
|
||||
0x0a, 0x05, 0x2f, 0x3c, 0x79, 0xd4, 0xa5, 0x01, 0x39, 0xf4, 0xcd, 0x03, 0x31, 0x87, 0x2d, 0x65,
|
||||
0x6b, 0x46, 0x26, 0x75, 0xdb, 0x78, 0x81, 0xa4, 0x3c, 0x30, 0x4f, 0xbf, 0x1c, 0x1e, 0xf7, 0xd1,
|
||||
0x37, 0x90, 0xf6, 0x42, 0x32, 0x30, 0x05, 0xfb, 0xcc, 0x15, 0xb4, 0xda, 0xb5, 0x17, 0xe6, 0xcc,
|
||||
0xd5, 0x73, 0x17, 0xe7, 0x6b, 0x69, 0x65, 0xc0, 0x9a, 0x86, 0x56, 0xe3, 0x9a, 0x59, 0x8d, 0xa4,
|
||||
0x2b, 0x87, 0x1c, 0x4e, 0x58, 0xd4, 0xb9, 0xf1, 0x82, 0x1e, 0x57, 0xd9, 0x22, 0xab, 0x3f, 0xc6,
|
||||
0x5d, 0x54, 0x82, 0xac, 0xa9, 0xbc, 0x75, 0xa9, 0x9d, 0x57, 0x55, 0xad, 0x31, 0xd4, 0x97, 0xc0,
|
||||
0x8a, 0xa2, 0xd1, 0x3d, 0xe2, 0x6c, 0x50, 0xf9, 0x57, 0x1a, 0xac, 0x2d, 0x7f, 0x28, 0xa4, 0x29,
|
||||
0xa2, 0xde, 0x5b, 0xf0, 0x5f, 0xc1, 0x32, 0xd1, 0x3f, 0x22, 0x48, 0xa0, 0x2a, 0x12, 0xfd, 0xa0,
|
||||
0x31, 0x1b, 0x70, 0x7f, 0xa6, 0xbb, 0x31, 0x38, 0x7a, 0xfc, 0xd4, 0x33, 0xca, 0xa7, 0x9d, 0xc2,
|
||||
0x45, 0x72, 0xe9, 0x0b, 0xea, 0xc0, 0x12, 0xe3, 0x4e, 0x9f, 0x0a, 0x19, 0xd5, 0x31, 0xe6, 0xe1,
|
||||
0x3e, 0xf3, 0x97, 0xce, 0x5e, 0x12, 0x68, 0x2e, 0xf1, 0x68, 0xb6, 0xd3, 0x3e, 0xd0, 0x63, 0x48,
|
||||
0x73, 0x72, 0x14, 0x3f, 0xce, 0x66, 0x1e, 0x12, 0x4c, 0x8e, 0xe4, 0x94, 0x0b, 0xcd, 0x40, 0x3f,
|
||||
0x07, 0x70, 0x3d, 0x11, 0x12, 0xe9, 0xf4, 0x29, 0x37, 0x9b, 0x3d, 0x73, 0x89, 0x8d, 0x31, 0x6a,
|
||||
0xca, 0x4b, 0x82, 0x8d, 0x9e, 0x41, 0xde, 0x21, 0xb1, 0x5c, 0x33, 0xd7, 0xff, 0xcd, 0xd8, 0xaa,
|
||||
0x19, 0x17, 0x45, 0xe5, 0xe2, 0xe2, 0x7c, 0x2d, 0x17, 0x5b, 0x70, 0xce, 0x21, 0x46, 0xbe, 0xcf,
|
||||
0x60, 0x49, 0x12, 0x71, 0xdc, 0x75, 0xa3, 0x74, 0x16, 0xc9, 0xe4, 0x9a, 0xa2, 0x44, 0x3d, 0x99,
|
||||
0x4d, 0xda, 0x8b, 0xb7, 0xb3, 0x20, 0x13, 0x36, 0xf4, 0x0b, 0x58, 0xa6, 0x81, 0xc3, 0x47, 0x5a,
|
||||
0xac, 0xf1, 0x0c, 0x73, 0xd7, 0x2f, 0xb6, 0x39, 0x06, 0x4f, 0x2d, 0xb6, 0x48, 0x2f, 0xd9, 0x2b,
|
||||
0x7f, 0x4b, 0x01, 0x44, 0x75, 0xde, 0xfb, 0x15, 0x20, 0x82, 0xb4, 0x4b, 0x24, 0xd1, 0x9a, 0x2b,
|
||||
0x60, 0xdd, 0x46, 0x4f, 0x00, 0x24, 0x1d, 0x84, 0x2a, 0xf5, 0x06, 0x3d, 0x23, 0x9b, 0xb7, 0xa5,
|
||||
0x83, 0x04, 0x1a, 0x6d, 0x42, 0xc6, 0x3c, 0xa1, 0xd3, 0x37, 0xf2, 0x0c, 0xb2, 0xf2, 0x87, 0x14,
|
||||
0x40, 0xb4, 0xcc, 0xff, 0xe9, 0xb5, 0xd5, 0xed, 0x37, 0xdf, 0xaf, 0xce, 0xfd, 0xf5, 0xfb, 0xd5,
|
||||
0xb9, 0xdf, 0x5c, 0xac, 0xa6, 0xde, 0x5c, 0xac, 0xa6, 0xfe, 0x7c, 0xb1, 0x9a, 0xfa, 0xfb, 0xc5,
|
||||
0x6a, 0xea, 0x30, 0xa3, 0x2b, 0x8f, 0x1f, 0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x67, 0x32, 0x8c,
|
||||
0x8f, 0xb8, 0x16, 0x00, 0x00,
|
||||
0xe6, 0xa2, 0x2c, 0xbf, 0x6b, 0xa6, 0xfb, 0xa3, 0x90, 0xe2, 0x02, 0x9f, 0xea, 0x55, 0x7e, 0x09,
|
||||
0xe8, 0xed, 0x7d, 0x41, 0x08, 0xd2, 0xc7, 0x5e, 0x60, 0xa6, 0x81, 0x75, 0x1b, 0x55, 0x21, 0x1b,
|
||||
0x92, 0x91, 0xcf, 0x88, 0x6b, 0x02, 0xe3, 0x56, 0x35, 0x2a, 0x10, 0xaa, 0x71, 0x81, 0x50, 0xad,
|
||||
0x05, 0x23, 0x1c, 0x83, 0x2a, 0xcf, 0xe0, 0x76, 0xe2, 0xf1, 0xa2, 0x4d, 0x28, 0x8c, 0x03, 0x6e,
|
||||
0xb2, 0xd6, 0x9b, 0x17, 0xe7, 0x6b, 0xd6, 0x38, 0x32, 0x5b, 0x0d, 0x6c, 0x8d, 0x41, 0x2d, 0xb7,
|
||||
0xf2, 0xf7, 0x02, 0x2c, 0xcd, 0x84, 0x2d, 0xba, 0x05, 0x8b, 0xde, 0x80, 0xf4, 0xa8, 0x99, 0x63,
|
||||
0xd4, 0x41, 0x4d, 0xc8, 0xf8, 0xe4, 0x90, 0xfa, 0x2a, 0x78, 0xd5, 0xc1, 0xfd, 0xff, 0xb5, 0xf1,
|
||||
0x5f, 0x7d, 0xae, 0xf1, 0xcd, 0x40, 0xf2, 0x11, 0x36, 0x64, 0x64, 0x43, 0xd6, 0x61, 0x83, 0x01,
|
||||
0x09, 0xd4, 0x35, 0xb1, 0xb0, 0x9e, 0xc7, 0x71, 0x57, 0xed, 0x0c, 0xe1, 0x3d, 0x61, 0xa7, 0xb5,
|
||||
0x59, 0xb7, 0x51, 0x11, 0x16, 0x68, 0x70, 0x62, 0x2f, 0x6a, 0x93, 0x6a, 0x2a, 0x8b, 0xeb, 0x45,
|
||||
0xd1, 0x97, 0xc7, 0xaa, 0xa9, 0x78, 0x43, 0x41, 0xb9, 0x9d, 0x8d, 0x76, 0x54, 0xb5, 0xd1, 0x8f,
|
||||
0x20, 0x33, 0x60, 0xc3, 0x40, 0x0a, 0x3b, 0xa7, 0x27, 0xbb, 0x92, 0x34, 0xd9, 0x17, 0x0a, 0x61,
|
||||
0x94, 0x65, 0xe0, 0xa8, 0x09, 0xcb, 0x42, 0xb2, 0xb0, 0xdb, 0xe3, 0xc4, 0xa1, 0xdd, 0x90, 0x72,
|
||||
0x8f, 0xb9, 0x26, 0x0d, 0xaf, 0xbc, 0x75, 0x28, 0x0d, 0x53, 0xf0, 0xe1, 0x9b, 0x8a, 0xb3, 0xad,
|
||||
0x28, 0x6d, 0xcd, 0x40, 0x6d, 0x28, 0x84, 0x43, 0xdf, 0xef, 0xb2, 0x30, 0xba, 0x91, 0xa3, 0xd8,
|
||||
0x79, 0x8f, 0x2d, 0x6b, 0x0f, 0x7d, 0x7f, 0x2f, 0x22, 0x61, 0x2b, 0x9c, 0x74, 0xd0, 0x1d, 0xc8,
|
||||
0xf4, 0x38, 0x1b, 0x86, 0x51, 0xdc, 0xe4, 0xb1, 0xe9, 0xa1, 0x6f, 0x20, 0x2b, 0xa8, 0xc3, 0xa9,
|
||||
0x14, 0x76, 0x41, 0x2f, 0xf5, 0x93, 0xa4, 0x41, 0x3a, 0x1a, 0x32, 0x8e, 0x09, 0x1c, 0x73, 0xd0,
|
||||
0x0a, 0x2c, 0x48, 0x39, 0xb2, 0x97, 0xca, 0xa9, 0xf5, 0x5c, 0x3d, 0x7b, 0x71, 0xbe, 0xb6, 0xb0,
|
||||
0xbf, 0xff, 0x0a, 0x2b, 0x9b, 0xba, 0x2d, 0xfa, 0x4c, 0xc8, 0x80, 0x0c, 0xa8, 0x7d, 0x43, 0xef,
|
||||
0xed, 0xb8, 0x8f, 0x5e, 0x01, 0xb8, 0x81, 0xe8, 0x3a, 0x3a, 0x3d, 0xd9, 0x37, 0xf5, 0xea, 0xbe,
|
||||
0xb8, 0x7e, 0x75, 0x8d, 0xdd, 0x8e, 0xb9, 0x31, 0x97, 0x2e, 0xce, 0xd7, 0xf2, 0xe3, 0x2e, 0xce,
|
||||
0xbb, 0x81, 0x88, 0x9a, 0xa8, 0x0e, 0x56, 0x9f, 0x12, 0x5f, 0xf6, 0x9d, 0x3e, 0x75, 0x8e, 0xed,
|
||||
0xe2, 0xd5, 0x57, 0xe0, 0x8e, 0x86, 0x19, 0x0f, 0xd3, 0x24, 0xa5, 0x60, 0x35, 0x55, 0x61, 0x2f,
|
||||
0xeb, 0xbd, 0x8a, 0x3a, 0xe8, 0x3e, 0x00, 0x0b, 0x69, 0xd0, 0x15, 0xd2, 0xf5, 0x02, 0x1b, 0xa9,
|
||||
0x25, 0xe3, 0xbc, 0xb2, 0x74, 0x94, 0x01, 0xdd, 0x55, 0x17, 0x14, 0x71, 0xbb, 0x2c, 0xf0, 0x47,
|
||||
0xf6, 0x47, 0xfa, 0x6b, 0x4e, 0x19, 0xf6, 0x02, 0x7f, 0x84, 0xd6, 0xc0, 0xd2, 0xba, 0x10, 0x5e,
|
||||
0x2f, 0x20, 0xbe, 0x7d, 0x4b, 0xef, 0x07, 0x28, 0x53, 0x47, 0x5b, 0xd4, 0x39, 0x44, 0xbb, 0x21,
|
||||
0xec, 0xdb, 0x57, 0x9f, 0x83, 0x99, 0xec, 0xe4, 0x1c, 0x0c, 0x07, 0xfd, 0x04, 0x20, 0xe4, 0xde,
|
||||
0x89, 0xe7, 0xd3, 0x1e, 0x15, 0xf6, 0x1d, 0xbd, 0xe8, 0xd5, 0xc4, 0x9b, 0x69, 0x8c, 0xc2, 0x53,
|
||||
0x0c, 0x54, 0x85, 0xb4, 0x17, 0x78, 0xd2, 0xfe, 0xd8, 0xdc, 0x4a, 0x97, 0xa5, 0x5a, 0x67, 0xcc,
|
||||
0x3f, 0x20, 0xfe, 0x90, 0x62, 0x8d, 0x43, 0x2d, 0xc8, 0x7b, 0x82, 0xf9, 0x5a, 0xbe, 0xb6, 0xad,
|
||||
0xf3, 0xdb, 0x7b, 0x9c, 0x5f, 0x2b, 0xa6, 0xe0, 0x09, 0x1b, 0xdd, 0x83, 0x7c, 0xe8, 0xb9, 0xe2,
|
||||
0xb9, 0x37, 0xf0, 0xa4, 0xbd, 0x52, 0x4e, 0xad, 0x2f, 0xe0, 0x89, 0x01, 0xed, 0x40, 0x56, 0x8c,
|
||||
0x84, 0x23, 0x7d, 0x61, 0x97, 0xf4, 0xbe, 0x54, 0xaf, 0x1f, 0xa6, 0x13, 0x11, 0xa2, 0xc4, 0x11,
|
||||
0xd3, 0x4b, 0x5f, 0x83, 0x35, 0x95, 0x50, 0x54, 0x22, 0x38, 0xa6, 0x23, 0x93, 0xa3, 0x54, 0x53,
|
||||
0x9d, 0xfa, 0x89, 0x5a, 0xa2, 0x4e, 0xa2, 0x79, 0x1c, 0x75, 0x9e, 0xcc, 0x3f, 0x4e, 0x95, 0x36,
|
||||
0xc1, 0x9a, 0x0a, 0x2c, 0xf4, 0x89, 0x4a, 0xf0, 0x3d, 0x4f, 0x48, 0x3e, 0xea, 0x92, 0xa1, 0xec,
|
||||
0xdb, 0x3f, 0xd3, 0x84, 0x42, 0x6c, 0xac, 0x0d, 0x65, 0xbf, 0xd4, 0x85, 0x89, 0x3e, 0x51, 0x19,
|
||||
0x2c, 0xa5, 0x7b, 0x41, 0xf9, 0x09, 0xe5, 0xaa, 0x78, 0x52, 0xb2, 0x9a, 0x36, 0xa9, 0xf8, 0x14,
|
||||
0x94, 0x70, 0xa7, 0xaf, 0xd3, 0x63, 0x1e, 0x9b, 0x9e, 0xca, 0x77, 0x71, 0x12, 0x30, 0xf9, 0xce,
|
||||
0x74, 0x4b, 0x4f, 0xa0, 0x30, 0xbd, 0xd0, 0xff, 0x64, 0x41, 0x95, 0x3f, 0xa5, 0x20, 0x3f, 0x3e,
|
||||
0x0c, 0xf4, 0x25, 0x2c, 0xb7, 0x3a, 0x7b, 0xcf, 0x6b, 0xfb, 0xad, 0xbd, 0xdd, 0x6e, 0xa3, 0xf9,
|
||||
0x6d, 0xed, 0xe5, 0xf3, 0xfd, 0xe2, 0x5c, 0xe9, 0xfe, 0xe9, 0x59, 0x79, 0x65, 0x92, 0xf7, 0x63,
|
||||
0x78, 0x83, 0x1e, 0x91, 0xa1, 0x2f, 0x67, 0x59, 0x6d, 0xbc, 0xb7, 0xd5, 0xec, 0x74, 0x8a, 0xa9,
|
||||
0xab, 0x58, 0x6d, 0xce, 0x1c, 0x2a, 0x04, 0xda, 0x84, 0xe2, 0x84, 0xb5, 0xf3, 0xaa, 0xdd, 0xc4,
|
||||
0x07, 0xc5, 0xf9, 0xd2, 0xbd, 0xd3, 0xb3, 0xb2, 0xfd, 0x36, 0x69, 0x67, 0x14, 0x52, 0x7e, 0x60,
|
||||
0x1e, 0x2d, 0xff, 0x48, 0x41, 0x61, 0xba, 0xe6, 0x45, 0x5b, 0x51, 0xad, 0xaa, 0x57, 0x7c, 0x63,
|
||||
0x73, 0xe3, 0xba, 0x1a, 0x59, 0xdf, 0xb5, 0xfe, 0x50, 0xf9, 0x7d, 0xa1, 0x9e, 0xa7, 0x9a, 0x8c,
|
||||
0xbe, 0x84, 0xc5, 0x90, 0x71, 0x19, 0xdf, 0x4a, 0xc9, 0x31, 0xc3, 0x78, 0x5c, 0x49, 0x45, 0xe0,
|
||||
0x4a, 0x1f, 0x6e, 0xcc, 0x7a, 0x43, 0x0f, 0x61, 0xe1, 0xa0, 0xd5, 0x2e, 0xce, 0x95, 0xee, 0x9e,
|
||||
0x9e, 0x95, 0x3f, 0x9e, 0xfd, 0x78, 0xe0, 0x71, 0x39, 0x24, 0x7e, 0xab, 0x8d, 0x3e, 0x87, 0xc5,
|
||||
0xc6, 0x6e, 0x07, 0xe3, 0x62, 0xaa, 0xb4, 0x76, 0x7a, 0x56, 0xbe, 0x3b, 0x8b, 0x53, 0x9f, 0xd8,
|
||||
0x30, 0x70, 0x31, 0x3b, 0x1c, 0x3f, 0xd5, 0xfe, 0x39, 0x0f, 0x96, 0xb9, 0xac, 0x3f, 0xf4, 0x6b,
|
||||
0x7e, 0x29, 0xaa, 0x44, 0xe3, 0x2c, 0x3c, 0x7f, 0x6d, 0x41, 0x5a, 0x88, 0x08, 0x46, 0xd3, 0x0f,
|
||||
0xa0, 0xe0, 0x85, 0x27, 0x5f, 0x75, 0x69, 0x40, 0x0e, 0x7d, 0xf3, 0x6a, 0xcb, 0x61, 0x4b, 0xd9,
|
||||
0x9a, 0x91, 0x49, 0x5d, 0x01, 0x5e, 0x20, 0x29, 0x0f, 0xcc, 0x7b, 0x2c, 0x87, 0xc7, 0x7d, 0xf4,
|
||||
0x0d, 0xa4, 0xbd, 0x90, 0x0c, 0x4c, 0x15, 0x9d, 0xb8, 0x82, 0x56, 0xbb, 0xf6, 0xc2, 0xc4, 0x5c,
|
||||
0x3d, 0x77, 0x71, 0xbe, 0x96, 0x56, 0x06, 0xac, 0x69, 0x68, 0x35, 0x2e, 0x64, 0xd5, 0x48, 0xfa,
|
||||
0x3a, 0xcf, 0xe1, 0x29, 0x8b, 0x8a, 0x1b, 0x2f, 0xe8, 0x71, 0x2a, 0x84, 0xbe, 0xd8, 0x73, 0x38,
|
||||
0xee, 0xa2, 0x12, 0x64, 0x4d, 0x39, 0xac, 0xeb, 0xdf, 0xbc, 0x2a, 0x35, 0x8d, 0xa1, 0xbe, 0x04,
|
||||
0x56, 0xb4, 0x1b, 0xdd, 0x23, 0xce, 0x06, 0x95, 0x7f, 0xa5, 0xc1, 0xda, 0xf2, 0x87, 0x42, 0x9a,
|
||||
0xca, 0xe6, 0x83, 0x6d, 0xfe, 0x2b, 0x58, 0x26, 0xfa, 0xef, 0x00, 0x09, 0x54, 0x99, 0xa0, 0x5f,
|
||||
0x19, 0xe6, 0x00, 0x1e, 0x26, 0xba, 0x1b, 0x83, 0xa3, 0x17, 0x49, 0x3d, 0xa3, 0x7c, 0xda, 0x29,
|
||||
0x5c, 0x24, 0x97, 0xbe, 0xa0, 0x0e, 0x2c, 0x31, 0xee, 0xf4, 0xa9, 0x90, 0x51, 0x71, 0x61, 0x5e,
|
||||
0xd3, 0x89, 0xff, 0x59, 0xf6, 0xa6, 0x81, 0xe6, 0x66, 0x8d, 0x66, 0x3b, 0xeb, 0x03, 0x3d, 0x86,
|
||||
0x34, 0x27, 0x47, 0xf1, 0x8b, 0x29, 0x31, 0x48, 0x30, 0x39, 0x92, 0x33, 0x2e, 0x34, 0x03, 0xfd,
|
||||
0x1c, 0xc0, 0xf5, 0x44, 0x48, 0xa4, 0xd3, 0xa7, 0xdc, 0x1c, 0x76, 0xe2, 0x12, 0x1b, 0x63, 0xd4,
|
||||
0x8c, 0x97, 0x29, 0x36, 0x7a, 0x06, 0x79, 0x87, 0xc4, 0x72, 0xcd, 0x5c, 0xfd, 0x8b, 0x61, 0xab,
|
||||
0x66, 0x5c, 0x14, 0x95, 0x8b, 0x8b, 0xf3, 0xb5, 0x5c, 0x6c, 0xc1, 0x39, 0x87, 0x18, 0xf9, 0x3e,
|
||||
0x83, 0x25, 0x49, 0xc4, 0x71, 0xd7, 0x8d, 0xd2, 0x59, 0x24, 0x93, 0x2b, 0x2a, 0x05, 0xf5, 0x8e,
|
||||
0x35, 0x69, 0x2f, 0x3e, 0xce, 0x82, 0x9c, 0xb2, 0xa1, 0x5f, 0xc0, 0x32, 0x0d, 0x1c, 0x3e, 0xd2,
|
||||
0x62, 0x8d, 0x67, 0x98, 0xbb, 0x7a, 0xb1, 0xcd, 0x31, 0x78, 0x66, 0xb1, 0x45, 0x7a, 0xc9, 0x5e,
|
||||
0xf9, 0x6b, 0x0a, 0x20, 0x2a, 0xbe, 0x3e, 0xac, 0x00, 0x11, 0xa4, 0x5d, 0x22, 0x89, 0xd6, 0x5c,
|
||||
0x01, 0xeb, 0x36, 0x7a, 0x02, 0x20, 0xe9, 0x20, 0x54, 0xa9, 0x37, 0xe8, 0x19, 0xd9, 0xbc, 0x2b,
|
||||
0x1d, 0x4c, 0xa1, 0xd1, 0x26, 0x64, 0xcc, 0xbb, 0x36, 0x7d, 0x2d, 0xcf, 0x20, 0x2b, 0x7f, 0x48,
|
||||
0x01, 0x44, 0xcb, 0xfc, 0x9f, 0x5e, 0x5b, 0xdd, 0x7e, 0xf3, 0xfd, 0xea, 0xdc, 0x5f, 0xbe, 0x5f,
|
||||
0x9d, 0xfb, 0xcd, 0xc5, 0x6a, 0xea, 0xcd, 0xc5, 0x6a, 0xea, 0xcf, 0x17, 0xab, 0xa9, 0xbf, 0x5d,
|
||||
0xac, 0xa6, 0x0e, 0x33, 0xba, 0x3e, 0xfa, 0xe1, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x32, 0x89,
|
||||
0x54, 0x8a, 0x4d, 0x16, 0x00, 0x00,
|
||||
}
|
||||
|
|
8
vendor/github.com/docker/swarmkit/api/specs.proto
generated
vendored
8
vendor/github.com/docker/swarmkit/api/specs.proto
generated
vendored
|
@ -333,14 +333,6 @@ message ContainerSpec {
|
|||
//
|
||||
// https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime
|
||||
map<string, string> sysctls = 26;
|
||||
|
||||
// Swap limit equal to memory plus swap: '-1' to enable unlimited swap
|
||||
int64 memory_swap = 27;
|
||||
|
||||
// Tune container memory swappiness (0 to 100) - if not specified, defaults
|
||||
// to the container OS's default - generally 60, or the value predefined in
|
||||
// the image; set to -1 to unset a previously set value
|
||||
google.protobuf.Int64Value memory_swappiness = 28;
|
||||
}
|
||||
|
||||
// EndpointSpec defines the properties that can be configured to
|
||||
|
|
973
vendor/github.com/docker/swarmkit/api/types.pb.go
generated
vendored
973
vendor/github.com/docker/swarmkit/api/types.pb.go
generated
vendored
File diff suppressed because it is too large
Load diff
12
vendor/github.com/docker/swarmkit/api/types.proto
generated
vendored
12
vendor/github.com/docker/swarmkit/api/types.proto
generated
vendored
|
@ -4,6 +4,7 @@ package docker.swarmkit.v1;
|
|||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// This file contains types that are common to objects and spec or that are not
|
||||
|
@ -77,6 +78,17 @@ message Resources {
|
|||
message ResourceRequirements {
|
||||
Resources limits = 1;
|
||||
Resources reservations = 2;
|
||||
|
||||
// Amount of swap in bytes - can only be used together with a memory limit
|
||||
// -1 means unlimited
|
||||
// a null pointer indicates that the default behaviour of granting twice
|
||||
// the memory is maintained
|
||||
google.protobuf.Int64Value swap_bytes = 3;
|
||||
|
||||
// Tune container memory swappiness (0 to 100) - if not specified, defaults
|
||||
// to the container OS's default - generally 60, or the value predefined in
|
||||
// the image; set to -1 to unset a previously set value
|
||||
google.protobuf.Int64Value memory_swappiness = 4;
|
||||
}
|
||||
|
||||
message Platform {
|
||||
|
|
16
vendor/github.com/docker/swarmkit/manager/allocator/network.go
generated
vendored
16
vendor/github.com/docker/swarmkit/manager/allocator/network.go
generated
vendored
|
@ -989,8 +989,11 @@ func (a *Allocator) allocateNode(ctx context.Context, node *api.Node, existingAd
|
|||
|
||||
nc := a.netCtx
|
||||
|
||||
var nwIDs = make(map[string]struct{}, len(networks))
|
||||
|
||||
// go through all of the networks we've passed in
|
||||
for _, network := range networks {
|
||||
nwIDs[network.ID] = struct{}{}
|
||||
|
||||
// for each one, create space for an attachment. then, search through
|
||||
// all of the attachments already on the node. if the attachment
|
||||
|
@ -1049,17 +1052,8 @@ func (a *Allocator) allocateNode(ctx context.Context, node *api.Node, existingAd
|
|||
// https://github.com/golang/go/wiki/SliceTricks#filtering-without-allocating
|
||||
attachments := node.Attachments[:0]
|
||||
for _, attach := range node.Attachments {
|
||||
// for every attachment, go through every network. if the attachment
|
||||
// belongs to one of the networks, then go to the next attachment. if
|
||||
// no network matches, then the the attachment should be removed.
|
||||
attachmentBelongs := false
|
||||
for _, network := range networks {
|
||||
if network.ID == attach.Network.ID {
|
||||
attachmentBelongs = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if attachmentBelongs {
|
||||
if _, ok := nwIDs[attach.Network.ID]; ok {
|
||||
// attachment belongs to one of the networks, so keep it
|
||||
attachments = append(attachments, attach)
|
||||
} else {
|
||||
// free the attachment and remove it from the node's attachments by
|
||||
|
|
133
vendor/github.com/docker/swarmkit/manager/controlapi/extension.go
generated
vendored
Normal file
133
vendor/github.com/docker/swarmkit/manager/controlapi/extension.go
generated
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
package controlapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/swarmkit/api"
|
||||
"github.com/docker/swarmkit/identity"
|
||||
"github.com/docker/swarmkit/log"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
// CreateExtension creates an `Extension` based on the provided `CreateExtensionRequest.Extension`
|
||||
// and returns a `CreateExtensionResponse`.
|
||||
// - Returns `InvalidArgument` if the `CreateExtensionRequest.Extension` is malformed,
|
||||
// or fails validation.
|
||||
// - Returns an error if the creation fails.
|
||||
func (s *Server) CreateExtension(ctx context.Context, request *api.CreateExtensionRequest) (*api.CreateExtensionResponse, error) {
|
||||
if request.Annotations == nil || request.Annotations.Name == "" {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "extension name must be provided")
|
||||
}
|
||||
|
||||
extension := &api.Extension{
|
||||
ID: identity.NewID(),
|
||||
Annotations: *request.Annotations,
|
||||
Description: request.Description,
|
||||
}
|
||||
|
||||
err := s.store.Update(func(tx store.Tx) error {
|
||||
return store.CreateExtension(tx, extension)
|
||||
})
|
||||
|
||||
switch err {
|
||||
case store.ErrNameConflict:
|
||||
return nil, status.Errorf(codes.AlreadyExists, "extension %s already exists", request.Annotations.Name)
|
||||
case nil:
|
||||
log.G(ctx).WithFields(logrus.Fields{
|
||||
"extension.Name": request.Annotations.Name,
|
||||
"method": "CreateExtension",
|
||||
}).Debugf("extension created")
|
||||
|
||||
return &api.CreateExtensionResponse{Extension: extension}, nil
|
||||
default:
|
||||
return nil, status.Errorf(codes.Internal, "could not create extension: %v", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// GetExtension returns a `GetExtensionResponse` with a `Extension` with the same
|
||||
// id as `GetExtensionRequest.extension_id`
|
||||
// - Returns `NotFound` if the Extension with the given id is not found.
|
||||
// - Returns `InvalidArgument` if the `GetExtensionRequest.extension_id` is empty.
|
||||
// - Returns an error if the get fails.
|
||||
func (s *Server) GetExtension(ctx context.Context, request *api.GetExtensionRequest) (*api.GetExtensionResponse, error) {
|
||||
if request.ExtensionID == "" {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "extension ID must be provided")
|
||||
}
|
||||
|
||||
var extension *api.Extension
|
||||
s.store.View(func(tx store.ReadTx) {
|
||||
extension = store.GetExtension(tx, request.ExtensionID)
|
||||
})
|
||||
|
||||
if extension == nil {
|
||||
return nil, status.Errorf(codes.NotFound, "extension %s not found", request.ExtensionID)
|
||||
}
|
||||
|
||||
return &api.GetExtensionResponse{Extension: extension}, nil
|
||||
}
|
||||
|
||||
// RemoveExtension removes the extension referenced by `RemoveExtensionRequest.ID`.
|
||||
// - Returns `InvalidArgument` if `RemoveExtensionRequest.extension_id` is empty.
|
||||
// - Returns `NotFound` if the an extension named `RemoveExtensionRequest.extension_id` is not found.
|
||||
// - Returns an error if the deletion fails.
|
||||
func (s *Server) RemoveExtension(ctx context.Context, request *api.RemoveExtensionRequest) (*api.RemoveExtensionResponse, error) {
|
||||
if request.ExtensionID == "" {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "extension ID must be provided")
|
||||
}
|
||||
|
||||
err := s.store.Update(func(tx store.Tx) error {
|
||||
// Check if the extension exists
|
||||
extension := store.GetExtension(tx, request.ExtensionID)
|
||||
if extension == nil {
|
||||
return status.Errorf(codes.NotFound, "could not find extension %s", request.ExtensionID)
|
||||
}
|
||||
|
||||
// Check if any resources of this type present in the store, return error if so
|
||||
resources, err := store.FindResources(tx, store.ByKind(request.ExtensionID))
|
||||
if err != nil {
|
||||
return status.Errorf(codes.Internal, "could not find resources using extension %s: %v", request.ExtensionID, err)
|
||||
}
|
||||
|
||||
if len(resources) != 0 {
|
||||
resourceNames := make([]string, 0, len(resources))
|
||||
// Number of resources for an extension could be quite large.
|
||||
// Show a limited number of resources for debugging.
|
||||
attachedResourceForDebug := 10
|
||||
for _, resource := range resources {
|
||||
resourceNames = append(resourceNames, resource.Annotations.Name)
|
||||
attachedResourceForDebug = attachedResourceForDebug - 1
|
||||
if attachedResourceForDebug == 0 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
extensionName := extension.Annotations.Name
|
||||
resourceNameStr := strings.Join(resourceNames, ", ")
|
||||
resourceStr := "resources"
|
||||
if len(resourceNames) == 1 {
|
||||
resourceStr = "resource"
|
||||
}
|
||||
|
||||
return status.Errorf(codes.InvalidArgument, "extension '%s' is in use by the following %s: %v", extensionName, resourceStr, resourceNameStr)
|
||||
}
|
||||
|
||||
return store.DeleteExtension(tx, request.ExtensionID)
|
||||
})
|
||||
switch err {
|
||||
case store.ErrNotExist:
|
||||
return nil, status.Errorf(codes.NotFound, "extension %s not found", request.ExtensionID)
|
||||
case nil:
|
||||
log.G(ctx).WithFields(logrus.Fields{
|
||||
"extension.ID": request.ExtensionID,
|
||||
"method": "RemoveExtension",
|
||||
}).Debugf("extension removed")
|
||||
|
||||
return &api.RemoveExtensionResponse{}, nil
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
226
vendor/github.com/docker/swarmkit/manager/controlapi/resource.go
generated
vendored
Normal file
226
vendor/github.com/docker/swarmkit/manager/controlapi/resource.go
generated
vendored
Normal file
|
@ -0,0 +1,226 @@
|
|||
package controlapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
|
||||
"github.com/docker/swarmkit/api"
|
||||
"github.com/docker/swarmkit/identity"
|
||||
"github.com/docker/swarmkit/log"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
)
|
||||
|
||||
// CreateResource returns a `CreateResourceResponse` after creating a `Resource` based
|
||||
// on the provided `CreateResourceRequest.Resource`.
|
||||
// - Returns `InvalidArgument` if the `CreateResourceRequest.Resource` is malformed,
|
||||
// or if the config data is too long or contains invalid characters.
|
||||
// - Returns an error if the creation fails.
|
||||
func (s *Server) CreateResource(ctx context.Context, request *api.CreateResourceRequest) (*api.CreateResourceResponse, error) {
|
||||
if request.Annotations == nil || request.Annotations.Name == "" {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "Resource must have a name")
|
||||
}
|
||||
|
||||
// finally, validate that Kind is not an emptystring. We know that creating
|
||||
// with Kind as empty string should fail at the store level, but to make
|
||||
// errors clearer, special case this.
|
||||
if request.Kind == "" {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "Resource must belong to an Extension")
|
||||
}
|
||||
r := &api.Resource{
|
||||
ID: identity.NewID(),
|
||||
Annotations: *request.Annotations,
|
||||
Kind: request.Kind,
|
||||
Payload: request.Payload,
|
||||
}
|
||||
|
||||
err := s.store.Update(func(tx store.Tx) error {
|
||||
return store.CreateResource(tx, r)
|
||||
})
|
||||
|
||||
switch err {
|
||||
case store.ErrNoKind:
|
||||
return nil, status.Errorf(codes.InvalidArgument, "Kind %v is not registered", r.Kind)
|
||||
case store.ErrNameConflict:
|
||||
return nil, status.Errorf(
|
||||
codes.AlreadyExists,
|
||||
"A resource with name %v already exists",
|
||||
r.Annotations.Name,
|
||||
)
|
||||
case nil:
|
||||
log.G(ctx).WithFields(logrus.Fields{
|
||||
"resource.Name": r.Annotations.Name,
|
||||
"method": "CreateResource",
|
||||
}).Debugf("resource created")
|
||||
return &api.CreateResourceResponse{Resource: r}, nil
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// GetResource returns a `GetResourceResponse` with a `Resource` with the same
|
||||
// id as `GetResourceRequest.Resource`
|
||||
// - Returns `NotFound` if the Resource with the given id is not found.
|
||||
// - Returns `InvalidArgument` if the `GetResourceRequest.Resource` is empty.
|
||||
// - Returns an error if getting fails.
|
||||
func (s *Server) GetResource(ctx context.Context, request *api.GetResourceRequest) (*api.GetResourceResponse, error) {
|
||||
if request.ResourceID == "" {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "resource ID must be present")
|
||||
}
|
||||
var resource *api.Resource
|
||||
s.store.View(func(tx store.ReadTx) {
|
||||
resource = store.GetResource(tx, request.ResourceID)
|
||||
})
|
||||
|
||||
if resource == nil {
|
||||
return nil, status.Errorf(codes.NotFound, "resource %s not found", request.ResourceID)
|
||||
}
|
||||
|
||||
return &api.GetResourceResponse{Resource: resource}, nil
|
||||
}
|
||||
|
||||
// RemoveResource removes the `Resource` referenced by `RemoveResourceRequest.ResourceID`.
|
||||
// - Returns `InvalidArgument` if `RemoveResourceRequest.ResourceID` is empty.
|
||||
// - Returns `NotFound` if the a resource named `RemoveResourceRequest.ResourceID` is not found.
|
||||
// - Returns an error if the deletion fails.
|
||||
func (s *Server) RemoveResource(ctx context.Context, request *api.RemoveResourceRequest) (*api.RemoveResourceResponse, error) {
|
||||
if request.ResourceID == "" {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "resource ID must be present")
|
||||
}
|
||||
err := s.store.Update(func(tx store.Tx) error {
|
||||
return store.DeleteResource(tx, request.ResourceID)
|
||||
})
|
||||
switch err {
|
||||
case store.ErrNotExist:
|
||||
return nil, status.Errorf(codes.NotFound, "resource %s not found", request.ResourceID)
|
||||
case nil:
|
||||
return &api.RemoveResourceResponse{}, nil
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// ListResources returns a `ListResourcesResponse` with a list of `Resource`s stored in the raft store,
|
||||
// or all resources matching any name in `ListConfigsRequest.Names`, any
|
||||
// name prefix in `ListResourcesRequest.NamePrefixes`, any id in
|
||||
// `ListResourcesRequest.ResourceIDs`, or any id prefix in `ListResourcesRequest.IDPrefixes`.
|
||||
// - Returns an error if listing fails.
|
||||
func (s *Server) ListResources(ctx context.Context, request *api.ListResourcesRequest) (*api.ListResourcesResponse, error) {
|
||||
var (
|
||||
resources []*api.Resource
|
||||
respResources []*api.Resource
|
||||
err error
|
||||
byFilters []store.By
|
||||
by store.By
|
||||
labels map[string]string
|
||||
)
|
||||
|
||||
// andKind is set to true if the Extension filter is not the only filter
|
||||
// being used. If this is the case, we do not have to compare by strings,
|
||||
// which could be slow.
|
||||
var andKind bool
|
||||
|
||||
if request.Filters != nil {
|
||||
for _, name := range request.Filters.Names {
|
||||
byFilters = append(byFilters, store.ByName(name))
|
||||
}
|
||||
for _, prefix := range request.Filters.NamePrefixes {
|
||||
byFilters = append(byFilters, store.ByNamePrefix(prefix))
|
||||
}
|
||||
for _, prefix := range request.Filters.IDPrefixes {
|
||||
byFilters = append(byFilters, store.ByIDPrefix(prefix))
|
||||
}
|
||||
labels = request.Filters.Labels
|
||||
if request.Filters.Kind != "" {
|
||||
// if we're filtering on Extensions, then set this to true. If Kind is
|
||||
// the _only_ kind of filter, we'll set this to false below.
|
||||
andKind = true
|
||||
}
|
||||
}
|
||||
|
||||
switch len(byFilters) {
|
||||
case 0:
|
||||
// NOTE(dperny): currently, filtering using store.ByKind would apply an
|
||||
// Or operation, which means that filtering by kind would return a
|
||||
// union. However, for Kind filters, we actually want the
|
||||
// _intersection_; that is, _only_ objects of the specified kind. we
|
||||
// could dig into the db code to figure out how to write and use an
|
||||
// efficient And combinator, but I don't have the time nor expertise to
|
||||
// do so at the moment. instead, we'll filter by kind after the fact.
|
||||
// however, if there are no other kinds of filters, and we're ONLY
|
||||
// listing by Kind, we can set that to be the only filter.
|
||||
if andKind {
|
||||
by = store.ByKind(request.Filters.Kind)
|
||||
andKind = false
|
||||
} else {
|
||||
by = store.All
|
||||
}
|
||||
case 1:
|
||||
by = byFilters[0]
|
||||
default:
|
||||
by = store.Or(byFilters...)
|
||||
}
|
||||
|
||||
s.store.View(func(tx store.ReadTx) {
|
||||
resources, err = store.FindResources(tx, by)
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// filter by label and extension
|
||||
for _, resource := range resources {
|
||||
if !filterMatchLabels(resource.Annotations.Labels, labels) {
|
||||
continue
|
||||
}
|
||||
if andKind && resource.Kind != request.Filters.Kind {
|
||||
continue
|
||||
}
|
||||
respResources = append(respResources, resource)
|
||||
}
|
||||
|
||||
return &api.ListResourcesResponse{Resources: respResources}, nil
|
||||
}
|
||||
|
||||
// UpdateResource updates the resource with the given `UpdateResourceRequest.Resource.Id` using the given `UpdateResourceRequest.Resource` and returns a `UpdateResourceResponse`.
|
||||
// - Returns `NotFound` if the Resource with the given `UpdateResourceRequest.Resource.Id` is not found.
|
||||
// - Returns `InvalidArgument` if the UpdateResourceRequest.Resource.Id` is empty.
|
||||
// - Returns an error if updating fails.
|
||||
func (s *Server) UpdateResource(ctx context.Context, request *api.UpdateResourceRequest) (*api.UpdateResourceResponse, error) {
|
||||
if request.ResourceID == "" || request.ResourceVersion == nil {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "must include ID and version")
|
||||
}
|
||||
var r *api.Resource
|
||||
err := s.store.Update(func(tx store.Tx) error {
|
||||
r = store.GetResource(tx, request.ResourceID)
|
||||
if r == nil {
|
||||
return status.Errorf(codes.NotFound, "resource %v not found", request.ResourceID)
|
||||
}
|
||||
|
||||
if request.Annotations != nil {
|
||||
if r.Annotations.Name != request.Annotations.Name {
|
||||
return status.Errorf(codes.InvalidArgument, "cannot change resource name")
|
||||
}
|
||||
r.Annotations = *request.Annotations
|
||||
}
|
||||
r.Meta.Version = *request.ResourceVersion
|
||||
// only alter the payload if the
|
||||
if request.Payload != nil {
|
||||
r.Payload = request.Payload
|
||||
}
|
||||
|
||||
return store.UpdateResource(tx, r)
|
||||
})
|
||||
switch err {
|
||||
case store.ErrSequenceConflict:
|
||||
return nil, status.Errorf(codes.InvalidArgument, "update out of sequence")
|
||||
case nil:
|
||||
return &api.UpdateResourceResponse{
|
||||
Resource: r,
|
||||
}, nil
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
5
vendor/github.com/docker/swarmkit/manager/state/raft/util.go
generated
vendored
5
vendor/github.com/docker/swarmkit/manager/state/raft/util.go
generated
vendored
|
@ -2,6 +2,7 @@ package raft
|
|||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/docker/swarmkit/api"
|
||||
|
@ -14,11 +15,15 @@ import (
|
|||
|
||||
// dial returns a grpc client connection
|
||||
func dial(addr string, protocol string, creds credentials.TransportCredentials, timeout time.Duration) (*grpc.ClientConn, error) {
|
||||
// gRPC dialer connects to proxy first. Provide a custom dialer here avoid that.
|
||||
grpcOptions := []grpc.DialOption{
|
||||
grpc.WithBackoffMaxDelay(2 * time.Second),
|
||||
grpc.WithTransportCredentials(creds),
|
||||
grpc.WithUnaryInterceptor(grpc_prometheus.UnaryClientInterceptor),
|
||||
grpc.WithStreamInterceptor(grpc_prometheus.StreamClientInterceptor),
|
||||
grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) {
|
||||
return net.DialTimeout("tcp", addr, timeout)
|
||||
}),
|
||||
}
|
||||
|
||||
if timeout != 0 {
|
||||
|
|
21
vendor/github.com/docker/swarmkit/manager/state/store/resources.go
generated
vendored
21
vendor/github.com/docker/swarmkit/manager/state/store/resources.go
generated
vendored
|
@ -1,6 +1,8 @@
|
|||
package store
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/docker/swarmkit/api"
|
||||
memdb "github.com/hashicorp/go-memdb"
|
||||
"github.com/pkg/errors"
|
||||
|
@ -8,6 +10,12 @@ import (
|
|||
|
||||
const tableResource = "resource"
|
||||
|
||||
var (
|
||||
// ErrNoKind is returned by resource create operations if the provided Kind
|
||||
// of the resource does not exist
|
||||
ErrNoKind = errors.New("object kind is unregistered")
|
||||
)
|
||||
|
||||
func init() {
|
||||
register(ObjectStoreConfig{
|
||||
Table: &memdb.TableSchema{
|
||||
|
@ -87,17 +95,26 @@ func confirmExtension(tx Tx, r *api.Resource) error {
|
|||
return errors.Wrap(err, "failed to query extensions")
|
||||
}
|
||||
if len(extensions) == 0 {
|
||||
return errors.Errorf("object kind %s is unregistered", r.Kind)
|
||||
return ErrNoKind
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateResource adds a new resource object to the store.
|
||||
// Returns ErrExist if the ID is already taken.
|
||||
// Returns ErrNameConflict if a Resource with this Name already exists
|
||||
// Returns ErrNoKind if the specified Kind does not exist
|
||||
func CreateResource(tx Tx, r *api.Resource) error {
|
||||
if err := confirmExtension(tx, r); err != nil {
|
||||
return err
|
||||
}
|
||||
// TODO(dperny): currently the "name" index is unique, which means only one
|
||||
// Resource of _any_ Kind can exist with that name. This isn't a problem
|
||||
// right now, but the ideal case would be for names to be namespaced to the
|
||||
// kind.
|
||||
if tx.lookup(tableResource, indexName, strings.ToLower(r.Annotations.Name)) != nil {
|
||||
return ErrNameConflict
|
||||
}
|
||||
return tx.create(tableResource, resourceEntry{r})
|
||||
}
|
||||
|
||||
|
@ -130,7 +147,7 @@ func GetResource(tx ReadTx, id string) *api.Resource {
|
|||
func FindResources(tx ReadTx, by By) ([]*api.Resource, error) {
|
||||
checkType := func(by By) error {
|
||||
switch by.(type) {
|
||||
case byIDPrefix, byName, byKind, byCustom, byCustomPrefix:
|
||||
case byIDPrefix, byName, byNamePrefix, byKind, byCustom, byCustomPrefix:
|
||||
return nil
|
||||
default:
|
||||
return ErrInvalidFindBy
|
||||
|
|
Loading…
Reference in a new issue