Merge pull request #601 from Random-Liu/support-new-cri-storage-id

Support new cri storage
This commit is contained in:
Lantao Liu 2018-02-09 01:03:32 -08:00 committed by GitHub
commit 944958722c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 369 additions and 577 deletions

View File

@ -83,9 +83,6 @@ type PluginConfig struct {
StatsCollectPeriod int `toml:"stats_collect_period" json:"statsCollectPeriod,omitempty"` StatsCollectPeriod int `toml:"stats_collect_period" json:"statsCollectPeriod,omitempty"`
// SystemdCgroup enables systemd cgroup support. // SystemdCgroup enables systemd cgroup support.
SystemdCgroup bool `toml:"systemd_cgroup" json:"systemdCgroup,omitempty"` SystemdCgroup bool `toml:"systemd_cgroup" json:"systemdCgroup,omitempty"`
// SkipImageFSUUID skips retrieving imagefs uuid.
// TODO(random-liu): Remove this after we find a generic way to get imagefs uuid.
SkipImageFSUUID bool `toml:"skip_imagefs_uuid" json:"skipImageFSUUID,omitempty"`
// EnableIPv6DAD enables IPv6 DAD. // EnableIPv6DAD enables IPv6 DAD.
// TODO(random-liu): Use optimistic_dad when it's GA. // TODO(random-liu): Use optimistic_dad when it's GA.
EnableIPv6DAD bool `toml:"enable_ipv6_dad" json:"enableIPv6DAD,omitempty"` EnableIPv6DAD bool `toml:"enable_ipv6_dad" json:"enableIPv6DAD,omitempty"`
@ -186,8 +183,6 @@ func (c *CRIContainerdOptions) AddFlags(fs *pflag.FlagSet) {
defaults.ProfilingPort, "Profiling port for web interface host:port/debug/pprof/.") defaults.ProfilingPort, "Profiling port for web interface host:port/debug/pprof/.")
fs.StringVar(&c.ProfilingAddress, "profiling-addr", fs.StringVar(&c.ProfilingAddress, "profiling-addr",
defaults.ProfilingAddress, "Profiling address for web interface host:port/debug/pprof/.") defaults.ProfilingAddress, "Profiling address for web interface host:port/debug/pprof/.")
fs.BoolVar(&c.SkipImageFSUUID, "skip-imagefs-uuid",
defaults.SkipImageFSUUID, "Skip retrieval of imagefs uuid. When turned on, kubelet will not be able to get imagefs capacity or perform imagefs disk eviction.")
fs.BoolVar(&c.EnableIPv6DAD, "enable-ipv6-dad", fs.BoolVar(&c.EnableIPv6DAD, "enable-ipv6-dad",
defaults.EnableIPv6DAD, "Enable IPv6 DAD (duplicate address detection) for pod sandbox network. Enabling this will increase pod sandbox start latency by several seconds.") defaults.EnableIPv6DAD, "Enable IPv6 DAD (duplicate address detection) for pod sandbox network. Enabling this will increase pod sandbox start latency by several seconds.")
fs.Var(&c.Registry, "registry", fs.Var(&c.Registry, "registry",
@ -251,7 +246,6 @@ func DefaultConfig() Config {
SandboxImage: "gcr.io/google_containers/pause:3.0", SandboxImage: "gcr.io/google_containers/pause:3.0",
StatsCollectPeriod: 10, StatsCollectPeriod: 10,
SystemdCgroup: false, SystemdCgroup: false,
SkipImageFSUUID: false,
EnableIPv6DAD: false, EnableIPv6DAD: false,
Registry: Registry{ Registry: Registry{
Mirrors: map[string]Mirror{ Mirrors: map[string]Mirror{

View File

@ -338,7 +338,7 @@ func testStats(t *testing.T,
require.NotEmpty(t, s.GetMemory().GetTimestamp()) require.NotEmpty(t, s.GetMemory().GetTimestamp())
require.NotEmpty(t, s.GetMemory().GetWorkingSetBytes().GetValue()) require.NotEmpty(t, s.GetMemory().GetWorkingSetBytes().GetValue())
require.NotEmpty(t, s.GetWritableLayer().GetTimestamp()) require.NotEmpty(t, s.GetWritableLayer().GetTimestamp())
require.NotEmpty(t, s.GetWritableLayer().GetStorageId().GetUuid()) require.NotEmpty(t, s.GetWritableLayer().GetFsId().GetMountpoint())
require.NotEmpty(t, s.GetWritableLayer().GetUsedBytes().GetValue()) require.NotEmpty(t, s.GetWritableLayer().GetUsedBytes().GetValue())
require.NotEmpty(t, s.GetWritableLayer().GetInodesUsed().GetValue()) require.NotEmpty(t, s.GetWritableLayer().GetInodesUsed().GetValue())

View File

@ -18,7 +18,7 @@ package integration
import ( import (
"fmt" "fmt"
"io/ioutil" "os"
"testing" "testing"
"time" "time"
@ -63,18 +63,13 @@ func TestImageFSInfo(t *testing.T) {
if info.GetTimestamp() != 0 && if info.GetTimestamp() != 0 &&
info.GetUsedBytes().GetValue() != 0 && info.GetUsedBytes().GetValue() != 0 &&
info.GetInodesUsed().GetValue() != 0 && info.GetInodesUsed().GetValue() != 0 &&
info.GetStorageId().GetUuid() != "" { info.GetFsId().GetMountpoint() != "" {
return true, nil return true, nil
} }
return false, nil return false, nil
}, time.Second, 30*time.Second)) }, time.Second, 30*time.Second))
t.Logf("Device uuid should exist") t.Logf("Image filesystem mountpath should exist")
files, err := ioutil.ReadDir("/dev/disk/by-uuid") _, err = os.Stat(info.GetFsId().GetMountpoint())
require.NoError(t, err) assert.NoError(t, err)
var names []string
for _, f := range files {
names = append(names, f.Name())
}
assert.Contains(t, names, info.GetStorageId().GetUuid())
} }

View File

@ -17,12 +17,10 @@ limitations under the License.
package os package os
import ( import (
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"syscall"
containerdmount "github.com/containerd/containerd/mount" containerdmount "github.com/containerd/containerd/mount"
"github.com/containerd/fifo" "github.com/containerd/fifo"
@ -44,7 +42,6 @@ type OS interface {
Mount(source string, target string, fstype string, flags uintptr, data string) error Mount(source string, target string, fstype string, flags uintptr, data string) error
Unmount(target string, flags int) error Unmount(target string, flags int) error
LookupMount(path string) (containerdmount.Info, error) LookupMount(path string) (containerdmount.Info, error)
DeviceUUID(device uint64) (string, error)
} }
// RealOS is used to dispatch the real system level operations. // RealOS is used to dispatch the real system level operations.
@ -124,39 +121,3 @@ func (RealOS) Unmount(target string, flags int) error {
func (RealOS) LookupMount(path string) (containerdmount.Info, error) { func (RealOS) LookupMount(path string) (containerdmount.Info, error) {
return containerdmount.Lookup(path) return containerdmount.Lookup(path)
} }
// blkdev returns the rdev of a block device or an error if not a block device
func blkrdev(device string) (uint64, error) {
info, err := os.Stat(device)
if err != nil {
return 0, err
}
stat := info.Sys().(*syscall.Stat_t)
if (stat.Mode & syscall.S_IFMT) != syscall.S_IFBLK {
return 0, fmt.Errorf("%s is not a block device", device)
}
return stat.Rdev, nil
}
// DeviceUUID gets device uuid of a device. The passed in rdev should be
// linux device number.
func (RealOS) DeviceUUID(rdev uint64) (string, error) {
const uuidDir = "/dev/disk/by-uuid"
files, err := ioutil.ReadDir(uuidDir)
if err != nil {
return "", err
}
for _, file := range files {
path := filepath.Join(uuidDir, file.Name())
trdev, err := blkrdev(path)
if err != nil {
continue
}
if rdev == trdev {
return file.Name(), nil
}
}
return "", fmt.Errorf("device %d not found", rdev)
}

View File

@ -50,7 +50,6 @@ type FakeOS struct {
MountFn func(source string, target string, fstype string, flags uintptr, data string) error MountFn func(source string, target string, fstype string, flags uintptr, data string) error
UnmountFn func(target string, flags int) error UnmountFn func(target string, flags int) error
LookupMountFn func(path string) (containerdmount.Info, error) LookupMountFn func(path string) (containerdmount.Info, error)
DeviceUUIDFn func(device uint64) (string, error)
calls []CalledDetail calls []CalledDetail
errors map[string]error errors map[string]error
} }
@ -241,16 +240,3 @@ func (f *FakeOS) LookupMount(path string) (containerdmount.Info, error) {
} }
return containerdmount.Info{}, nil return containerdmount.Info{}, nil
} }
// DeviceUUID is a fake call that invodes DeviceUUIDFn or just return nil.
func (f *FakeOS) DeviceUUID(device uint64) (string, error) {
f.appendCalls("DeviceUUID", device)
if err := f.getError("DeviceUUID"); err != nil {
return "", err
}
if f.DeviceUUIDFn != nil {
return f.DeviceUUIDFn(device)
}
return "", nil
}

View File

@ -83,8 +83,8 @@ func (c *criContainerdService) getContainerMetrics(
} }
cs.WritableLayer = &runtime.FilesystemUsage{ cs.WritableLayer = &runtime.FilesystemUsage{
Timestamp: sn.Timestamp, Timestamp: sn.Timestamp,
StorageId: &runtime.StorageIdentifier{ FsId: &runtime.FilesystemIdentifier{
Uuid: c.imageFSUUID, Mountpoint: c.imageFSPath,
}, },
UsedBytes: &runtime.UInt64Value{Value: usedBytes}, UsedBytes: &runtime.UInt64Value{Value: usedBytes},
InodesUsed: &runtime.UInt64Value{Value: inodesUsed}, InodesUsed: &runtime.UInt64Value{Value: inodesUsed},

View File

@ -42,7 +42,7 @@ func (c *criContainerdService) ImageFsInfo(ctx context.Context, r *runtime.Image
ImageFilesystems: []*runtime.FilesystemUsage{ ImageFilesystems: []*runtime.FilesystemUsage{
{ {
Timestamp: timestamp, Timestamp: timestamp,
StorageId: &runtime.StorageIdentifier{Uuid: c.imageFSUUID}, FsId: &runtime.FilesystemIdentifier{Mountpoint: c.imageFSPath},
UsedBytes: &runtime.UInt64Value{Value: usedBytes}, UsedBytes: &runtime.UInt64Value{Value: usedBytes},
InodesUsed: &runtime.UInt64Value{Value: inodesUsed}, InodesUsed: &runtime.UInt64Value{Value: inodesUsed},
}, },

View File

@ -55,7 +55,7 @@ func TestImageFsInfo(t *testing.T) {
} }
expected := &runtime.FilesystemUsage{ expected := &runtime.FilesystemUsage{
Timestamp: 123456, Timestamp: 123456,
StorageId: &runtime.StorageIdentifier{Uuid: testImageFSUUID}, FsId: &runtime.FilesystemIdentifier{Mountpoint: testImageFSPath},
UsedBytes: &runtime.UInt64Value{Value: 30}, UsedBytes: &runtime.UInt64Value{Value: 30},
InodesUsed: &runtime.UInt64Value{Value: 300}, InodesUsed: &runtime.UInt64Value{Value: 300},
} }

View File

@ -33,7 +33,6 @@ import (
"github.com/opencontainers/selinux/go-selinux" "github.com/opencontainers/selinux/go-selinux"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/net/context" "golang.org/x/net/context"
"golang.org/x/sys/unix"
"google.golang.org/grpc" "google.golang.org/grpc"
runtime "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2" runtime "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2"
"k8s.io/kubernetes/pkg/kubelet/server/streaming" "k8s.io/kubernetes/pkg/kubelet/server/streaming"
@ -76,8 +75,8 @@ type CRIContainerdService interface {
type criContainerdService struct { type criContainerdService struct {
// config contains all configurations. // config contains all configurations.
config options.Config config options.Config
// imageFSUUID is the device uuid of image filesystem. // imageFSPath is the path to image filesystem.
imageFSUUID string imageFSPath string
// apparmorEnabled indicates whether apparmor is enabled. // apparmorEnabled indicates whether apparmor is enabled.
apparmorEnabled bool apparmorEnabled bool
// seccompEnabled indicates whether seccomp is enabled. // seccompEnabled indicates whether seccomp is enabled.
@ -138,16 +137,8 @@ func NewCRIContainerdService(config options.Config) (CRIContainerdService, error
selinux.SetDisabled() selinux.SetDisabled()
} }
if !c.config.SkipImageFSUUID { c.imageFSPath = imageFSPath(config.ContainerdRootDir, config.ContainerdConfig.Snapshotter)
imageFSPath := imageFSPath(config.ContainerdRootDir, config.ContainerdConfig.Snapshotter) logrus.Infof("Get image filesystem path %q", c.imageFSPath)
c.imageFSUUID, err = c.getDeviceUUID(imageFSPath)
if err != nil {
return nil, fmt.Errorf("failed to get imagefs uuid of %q: %v", imageFSPath, err)
}
logrus.Infof("Get device uuid %q for image filesystem %q", c.imageFSUUID, imageFSPath)
} else {
logrus.Warn("Skip retrieving imagefs UUID, kubelet will not be able to get imagefs capacity or perform imagefs disk eviction.")
}
c.netPlugin, err = ocicni.InitCNI(config.NetworkPluginConfDir, config.NetworkPluginBinDir) c.netPlugin, err = ocicni.InitCNI(config.NetworkPluginConfDir, config.NetworkPluginBinDir)
if err != nil { if err != nil {
@ -293,16 +284,6 @@ func (c *criContainerdService) Close() error {
return nil return nil
} }
// getDeviceUUID gets device uuid for a given path.
func (c *criContainerdService) getDeviceUUID(path string) (string, error) {
mount, err := c.os.LookupMount(path)
if err != nil {
return "", err
}
rdev := unix.Mkdev(uint32(mount.Major), uint32(mount.Minor))
return c.os.DeviceUUID(rdev)
}
// imageFSPath returns containerd image filesystem path. // imageFSPath returns containerd image filesystem path.
// Note that if containerd changes directory layout, we also needs to change this. // Note that if containerd changes directory layout, we also needs to change this.
func imageFSPath(rootDir, snapshotter string) string { func imageFSPath(rootDir, snapshotter string) string {

View File

@ -33,7 +33,7 @@ const (
// TODO(random-liu): Change this to image name after we have complete image // TODO(random-liu): Change this to image name after we have complete image
// management unit test framework. // management unit test framework.
testSandboxImage = "sha256:c75bebcdd211f41b3a460c7bf82970ed6c75acaab9cd4c9a4e125b03ca113798" testSandboxImage = "sha256:c75bebcdd211f41b3a460c7bf82970ed6c75acaab9cd4c9a4e125b03ca113798"
testImageFSUUID = "test-image-fs-uuid" testImageFSPath = "/test/image/fs/path"
) )
// newTestCRIContainerdService creates a fake criContainerdService for test. // newTestCRIContainerdService creates a fake criContainerdService for test.
@ -45,7 +45,7 @@ func newTestCRIContainerdService() *criContainerdService {
SandboxImage: testSandboxImage, SandboxImage: testSandboxImage,
}, },
}, },
imageFSUUID: testImageFSUUID, imageFSPath: testImageFSPath,
os: ostesting.NewFakeOS(), os: ostesting.NewFakeOS(),
sandboxStore: sandboxstore.NewStore(), sandboxStore: sandboxstore.NewStore(),
imageStore: imagestore.NewStore(), imageStore: imagestore.NewStore(),

View File

@ -54,9 +54,9 @@ google.golang.org/genproto d80a6e20e776b0b17a324d0ba1ab50a39c8e8944
google.golang.org/grpc v1.7.4 google.golang.org/grpc v1.7.4
gopkg.in/inf.v0 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 gopkg.in/inf.v0 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4
gopkg.in/yaml.v2 53feefa2559fb8dfa8d81baad31be332c97d6c77 gopkg.in/yaml.v2 53feefa2559fb8dfa8d81baad31be332c97d6c77
k8s.io/api beab4da9671e79815b7876363175af45aa180eb5 k8s.io/api a1d6dce6736a6c75929bb75111e89077e35a5856
k8s.io/apimachinery 6212319467788d635606616d5c6d87ded0321d8c k8s.io/apimachinery 8259d997cf059cd83dc47e5f8074b7a7d7967c09
k8s.io/apiserver 340247246b5ea93d9b51908592ed8f6b94f82674 k8s.io/apiserver 8e45eac9dff86447a5c2effe6a3d2cba70121ebf
k8s.io/client-go 33bd23f75b6de861994706a322b0afab824b2171 k8s.io/client-go 33bd23f75b6de861994706a322b0afab824b2171
k8s.io/kubernetes 0caa20c65f147e15f5545862510eb7e81c42b0a3 k8s.io/kubernetes 05944b1d2ca7f60b09762a330425108f48f6b603
k8s.io/utils a99a3e11a96751670db62ba77c6d278d1136931e k8s.io/utils 258e2a2fa64568210fbd6267cf1d8fd87c3cb86e

View File

@ -1,60 +0,0 @@
## About
This directory contains a collection of scripts used to build and manage this
repository. If there are any issues regarding the intention of a particular
script (or even part of a certain script), please reach out to us.
It may help us either refine our current scripts, or add on new ones
that are appropriate for a given use case.
## DinD (dind.sh)
DinD is a wrapper script which allows Docker to be run inside a Docker
container. DinD requires the container to
be run with privileged mode enabled.
## Generate Authors (generate-authors.sh)
Generates AUTHORS; a file with all the names and corresponding emails of
individual contributors. AUTHORS can be found in the home directory of
this repository.
## Make
There are two make files, each with different extensions. Neither are supposed
to be called directly; only invoke `make`. Both scripts run inside a Docker
container.
### make.ps1
- The Windows native build script that uses PowerShell semantics; it is limited
unlike `hack\make.sh` since it does not provide support for the full set of
operations provided by the Linux counterpart, `make.sh`. However, `make.ps1`
does provide support for local Windows development and Windows to Windows CI.
More information is found within `make.ps1` by the author, @jhowardmsft
### make.sh
- Referenced via `make test` when running tests on a local machine,
or directly referenced when running tests inside a Docker development container.
- When running on a local machine, `make test` to run all tests found in
`test`, `test-unit`, `test-integration`, and `test-docker-py` on
your local machine. The default timeout is set in `make.sh` to 60 minutes
(`${TIMEOUT:=60m}`), since it currently takes up to an hour to run
all of the tests.
- When running inside a Docker development container, `hack/make.sh` does
not have a single target that runs all the tests. You need to provide a
single command line with multiple targets that performs the same thing.
An example referenced from [Run targets inside a development container](https://docs.docker.com/opensource/project/test-and-docs/#run-targets-inside-a-development-container): `root@5f8630b873fe:/go/src/github.com/moby/moby# hack/make.sh dynbinary binary cross test-unit test-integration test-docker-py`
- For more information related to testing outside the scope of this README,
refer to
[Run tests and test documentation](https://docs.docker.com/opensource/project/test-and-docs/)
## Release (release.sh)
Releases any bundles built by `make` on a public AWS S3 bucket.
For information regarding configuration, please view `release.sh`.
## Vendor (vendor.sh)
A shell script that is a wrapper around Vndr. For information on how to use
this, please refer to [vndr's README](https://github.com/LK4D4/vndr/blob/master/README.md)

View File

@ -1,69 +0,0 @@
# Integration Testing on Swarm
IT on Swarm allows you to execute integration test in parallel across a Docker Swarm cluster
## Architecture
### Master service
- Works as a funker caller
- Calls a worker funker (`-worker-service`) with a chunk of `-check.f` filter strings (passed as a file via `-input` flag, typically `/mnt/input`)
### Worker service
- Works as a funker callee
- Executes an equivalent of `TESTFLAGS=-check.f TestFoo|TestBar|TestBaz ... make test-integration-cli` using the bind-mounted API socket (`docker.sock`)
### Client
- Controls master and workers via `docker stack`
- No need to have a local daemon
Typically, the master and workers are supposed to be running on a cloud environment,
while the client is supposed to be running on a laptop, e.g. Docker for Mac/Windows.
## Requirement
- Docker daemon 1.13 or later
- Private registry for distributed execution with multiple nodes
## Usage
### Step 1: Prepare images
$ make build-integration-cli-on-swarm
Following environment variables are known to work in this step:
- `BUILDFLAGS`
- `DOCKER_INCREMENTAL_BINARY`
Note: during the transition into Moby Project, you might need to create a symbolic link `$GOPATH/src/github.com/docker/docker` to `$GOPATH/src/github.com/moby/moby`.
### Step 2: Execute tests
$ ./hack/integration-cli-on-swarm/integration-cli-on-swarm -replicas 40 -push-worker-image YOUR_REGISTRY.EXAMPLE.COM/integration-cli-worker:latest
Following environment variables are known to work in this step:
- `DOCKER_GRAPHDRIVER`
- `DOCKER_EXPERIMENTAL`
#### Flags
Basic flags:
- `-replicas N`: the number of worker service replicas. i.e. degree of parallelism.
- `-chunks N`: the number of chunks. By default, `chunks` == `replicas`.
- `-push-worker-image REGISTRY/IMAGE:TAG`: push the worker image to the registry. Note that if you have only single node and hence you do not need a private registry, you do not need to specify `-push-worker-image`.
Experimental flags for mitigating makespan nonuniformity:
- `-shuffle`: Shuffle the test filter strings
Flags for debugging IT on Swarm itself:
- `-rand-seed N`: the random seed. This flag is useful for deterministic replaying. By default(0), the timestamp is used.
- `-filters-file FILE`: the file contains `-check.f` strings. By default, the file is automatically generated.
- `-dry-run`: skip the actual workload
- `keep-executor`: do not auto-remove executor containers, which is used for running privileged programs on Swarm

View File

@ -1,2 +0,0 @@
# dependencies specific to worker (i.e. github.com/docker/docker/...) are not vendored here
github.com/bfirsh/funker-go eaa0a2e06f30e72c9a0b7f858951e581e26ef773

View File

@ -637,7 +637,7 @@ message Container {
// Describe a container image // Describe a container image
message ContainerImage { message ContainerImage {
// Names by which this image is known. // 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"] // e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]
repeated string names = 1; repeated string names = 1;
// The size of the image in bytes. // The size of the image in bytes.

2
vendor/k8s.io/api/core/v1/types.go generated vendored
View File

@ -3928,7 +3928,7 @@ type PodSignature struct {
// Describe a container image // Describe a container image
type ContainerImage struct { type ContainerImage struct {
// Names by which this image is known. // 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"] // e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]
Names []string `json:"names" protobuf:"bytes,1,rep,name=names"` Names []string `json:"names" protobuf:"bytes,1,rep,name=names"`
// The size of the image in bytes. // The size of the image in bytes.
// +optional // +optional

View File

@ -310,7 +310,7 @@ func (Container) SwaggerDoc() map[string]string {
var map_ContainerImage = map[string]string{ var map_ContainerImage = map[string]string{
"": "Describe a container image", "": "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\"]", "names": "Names by which this image is known. e.g. [\"k8s.gcr.io/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]",
"sizeBytes": "The size of the image in bytes.", "sizeBytes": "The size of the image in bytes.",
} }

View File

@ -15,5 +15,6 @@ limitations under the License.
*/ */
// +k8s:deepcopy-gen=package // +k8s:deepcopy-gen=package
// +k8s:conversion-gen=k8s.io/apimachinery/pkg/apis/meta/v1
package internalversion package internalversion

View File

@ -1,7 +1,7 @@
// +build !ignore_autogenerated // +build !ignore_autogenerated
/* /*
Copyright 2017 The Kubernetes Authors. Copyright 2018 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -21,10 +21,11 @@ limitations under the License.
package internalversion package internalversion
import ( import (
unsafe "unsafe"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion" conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime" runtime "k8s.io/apimachinery/pkg/runtime"
unsafe "unsafe"
) )
func init() { func init() {
@ -53,7 +54,7 @@ func autoConvert_internalversion_List_To_v1_List(in *List, out *v1.List, s conve
} }
} }
} else { } else {
out.Items = make([]runtime.RawExtension, 0) out.Items = nil
} }
return nil return nil
} }
@ -95,6 +96,8 @@ func autoConvert_internalversion_ListOptions_To_v1_ListOptions(in *ListOptions,
out.Watch = in.Watch out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion out.ResourceVersion = in.ResourceVersion
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
out.Limit = in.Limit
out.Continue = in.Continue
return nil return nil
} }
@ -109,5 +112,7 @@ func autoConvert_v1_ListOptions_To_internalversion_ListOptions(in *v1.ListOption
out.Watch = in.Watch out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion out.ResourceVersion = in.ResourceVersion
out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds))
out.Limit = in.Limit
out.Continue = in.Continue
return nil return nil
} }

View File

@ -112,7 +112,7 @@ limitations under the License.
StatusResponse StatusResponse
ImageFsInfoRequest ImageFsInfoRequest
UInt64Value UInt64Value
StorageIdentifier FilesystemIdentifier
FilesystemUsage FilesystemUsage
ImageFsInfoResponse ImageFsInfoResponse
ContainerStatsRequest ContainerStatsRequest
@ -3222,19 +3222,19 @@ func (m *UInt64Value) GetValue() uint64 {
return 0 return 0
} }
// StorageIdentifier uniquely identify the storage.. // FilesystemIdentifier uniquely identify the filesystem.
type StorageIdentifier struct { type FilesystemIdentifier struct {
// UUID of the device. // Mountpoint of a filesystem.
Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` Mountpoint string `protobuf:"bytes,1,opt,name=mountpoint,proto3" json:"mountpoint,omitempty"`
} }
func (m *StorageIdentifier) Reset() { *m = StorageIdentifier{} } func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} }
func (*StorageIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) ProtoMessage() {}
func (*StorageIdentifier) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{87} } func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{87} }
func (m *StorageIdentifier) GetUuid() string { func (m *FilesystemIdentifier) GetMountpoint() string {
if m != nil { if m != nil {
return m.Uuid return m.Mountpoint
} }
return "" return ""
} }
@ -3243,8 +3243,8 @@ func (m *StorageIdentifier) GetUuid() string {
type FilesystemUsage struct { type FilesystemUsage struct {
// Timestamp in nanoseconds at which the information were collected. Must be > 0. // Timestamp in nanoseconds at which the information were collected. Must be > 0.
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
// The underlying storage of the filesystem. // The unique identifier of the filesystem.
StorageId *StorageIdentifier `protobuf:"bytes,2,opt,name=storage_id,json=storageId" json:"storage_id,omitempty"` FsId *FilesystemIdentifier `protobuf:"bytes,2,opt,name=fs_id,json=fsId" json:"fs_id,omitempty"`
// UsedBytes represents the bytes used for images on the filesystem. // UsedBytes represents the bytes used for images on the filesystem.
// This may differ from the total bytes used on the filesystem and may not // This may differ from the total bytes used on the filesystem and may not
// equal CapacityBytes - AvailableBytes. // equal CapacityBytes - AvailableBytes.
@ -3266,9 +3266,9 @@ func (m *FilesystemUsage) GetTimestamp() int64 {
return 0 return 0
} }
func (m *FilesystemUsage) GetStorageId() *StorageIdentifier { func (m *FilesystemUsage) GetFsId() *FilesystemIdentifier {
if m != nil { if m != nil {
return m.StorageId return m.FsId
} }
return nil return nil
} }
@ -3659,7 +3659,7 @@ func init() {
proto.RegisterType((*StatusResponse)(nil), "runtime.v1alpha2.StatusResponse") proto.RegisterType((*StatusResponse)(nil), "runtime.v1alpha2.StatusResponse")
proto.RegisterType((*ImageFsInfoRequest)(nil), "runtime.v1alpha2.ImageFsInfoRequest") proto.RegisterType((*ImageFsInfoRequest)(nil), "runtime.v1alpha2.ImageFsInfoRequest")
proto.RegisterType((*UInt64Value)(nil), "runtime.v1alpha2.UInt64Value") proto.RegisterType((*UInt64Value)(nil), "runtime.v1alpha2.UInt64Value")
proto.RegisterType((*StorageIdentifier)(nil), "runtime.v1alpha2.StorageIdentifier") proto.RegisterType((*FilesystemIdentifier)(nil), "runtime.v1alpha2.FilesystemIdentifier")
proto.RegisterType((*FilesystemUsage)(nil), "runtime.v1alpha2.FilesystemUsage") proto.RegisterType((*FilesystemUsage)(nil), "runtime.v1alpha2.FilesystemUsage")
proto.RegisterType((*ImageFsInfoResponse)(nil), "runtime.v1alpha2.ImageFsInfoResponse") proto.RegisterType((*ImageFsInfoResponse)(nil), "runtime.v1alpha2.ImageFsInfoResponse")
proto.RegisterType((*ContainerStatsRequest)(nil), "runtime.v1alpha2.ContainerStatsRequest") proto.RegisterType((*ContainerStatsRequest)(nil), "runtime.v1alpha2.ContainerStatsRequest")
@ -8362,7 +8362,7 @@ func (m *UInt64Value) MarshalTo(dAtA []byte) (int, error) {
return i, nil return i, nil
} }
func (m *StorageIdentifier) Marshal() (dAtA []byte, err error) { func (m *FilesystemIdentifier) Marshal() (dAtA []byte, err error) {
size := m.Size() size := m.Size()
dAtA = make([]byte, size) dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA) n, err := m.MarshalTo(dAtA)
@ -8372,16 +8372,16 @@ func (m *StorageIdentifier) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil return dAtA[:n], nil
} }
func (m *StorageIdentifier) MarshalTo(dAtA []byte) (int, error) { func (m *FilesystemIdentifier) MarshalTo(dAtA []byte) (int, error) {
var i int var i int
_ = i _ = i
var l int var l int
_ = l _ = l
if len(m.Uuid) > 0 { if len(m.Mountpoint) > 0 {
dAtA[i] = 0xa dAtA[i] = 0xa
i++ i++
i = encodeVarintApi(dAtA, i, uint64(len(m.Uuid))) i = encodeVarintApi(dAtA, i, uint64(len(m.Mountpoint)))
i += copy(dAtA[i:], m.Uuid) i += copy(dAtA[i:], m.Mountpoint)
} }
return i, nil return i, nil
} }
@ -8406,11 +8406,11 @@ func (m *FilesystemUsage) MarshalTo(dAtA []byte) (int, error) {
i++ i++
i = encodeVarintApi(dAtA, i, uint64(m.Timestamp)) i = encodeVarintApi(dAtA, i, uint64(m.Timestamp))
} }
if m.StorageId != nil { if m.FsId != nil {
dAtA[i] = 0x12 dAtA[i] = 0x12
i++ i++
i = encodeVarintApi(dAtA, i, uint64(m.StorageId.Size())) i = encodeVarintApi(dAtA, i, uint64(m.FsId.Size()))
n57, err := m.StorageId.MarshalTo(dAtA[i:]) n57, err := m.FsId.MarshalTo(dAtA[i:])
if err != nil { if err != nil {
return 0, err return 0, err
} }
@ -10402,10 +10402,10 @@ func (m *UInt64Value) Size() (n int) {
return n return n
} }
func (m *StorageIdentifier) Size() (n int) { func (m *FilesystemIdentifier) Size() (n int) {
var l int var l int
_ = l _ = l
l = len(m.Uuid) l = len(m.Mountpoint)
if l > 0 { if l > 0 {
n += 1 + l + sovApi(uint64(l)) n += 1 + l + sovApi(uint64(l))
} }
@ -10418,8 +10418,8 @@ func (m *FilesystemUsage) Size() (n int) {
if m.Timestamp != 0 { if m.Timestamp != 0 {
n += 1 + sovApi(uint64(m.Timestamp)) n += 1 + sovApi(uint64(m.Timestamp))
} }
if m.StorageId != nil { if m.FsId != nil {
l = m.StorageId.Size() l = m.FsId.Size()
n += 1 + l + sovApi(uint64(l)) n += 1 + l + sovApi(uint64(l))
} }
if m.UsedBytes != nil { if m.UsedBytes != nil {
@ -11821,12 +11821,12 @@ func (this *UInt64Value) String() string {
}, "") }, "")
return s return s
} }
func (this *StorageIdentifier) String() string { func (this *FilesystemIdentifier) String() string {
if this == nil { if this == nil {
return "nil" return "nil"
} }
s := strings.Join([]string{`&StorageIdentifier{`, s := strings.Join([]string{`&FilesystemIdentifier{`,
`Uuid:` + fmt.Sprintf("%v", this.Uuid) + `,`, `Mountpoint:` + fmt.Sprintf("%v", this.Mountpoint) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -11837,7 +11837,7 @@ func (this *FilesystemUsage) String() string {
} }
s := strings.Join([]string{`&FilesystemUsage{`, s := strings.Join([]string{`&FilesystemUsage{`,
`Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`, `Timestamp:` + fmt.Sprintf("%v", this.Timestamp) + `,`,
`StorageId:` + strings.Replace(fmt.Sprintf("%v", this.StorageId), "StorageIdentifier", "StorageIdentifier", 1) + `,`, `FsId:` + strings.Replace(fmt.Sprintf("%v", this.FsId), "FilesystemIdentifier", "FilesystemIdentifier", 1) + `,`,
`UsedBytes:` + strings.Replace(fmt.Sprintf("%v", this.UsedBytes), "UInt64Value", "UInt64Value", 1) + `,`, `UsedBytes:` + strings.Replace(fmt.Sprintf("%v", this.UsedBytes), "UInt64Value", "UInt64Value", 1) + `,`,
`InodesUsed:` + strings.Replace(fmt.Sprintf("%v", this.InodesUsed), "UInt64Value", "UInt64Value", 1) + `,`, `InodesUsed:` + strings.Replace(fmt.Sprintf("%v", this.InodesUsed), "UInt64Value", "UInt64Value", 1) + `,`,
`}`, `}`,
@ -24486,7 +24486,7 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *StorageIdentifier) Unmarshal(dAtA []byte) error { func (m *FilesystemIdentifier) Unmarshal(dAtA []byte) error {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0
for iNdEx < l { for iNdEx < l {
@ -24509,15 +24509,15 @@ func (m *StorageIdentifier) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3) fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7) wireType := int(wire & 0x7)
if wireType == 4 { if wireType == 4 {
return fmt.Errorf("proto: StorageIdentifier: wiretype end group for non-group") return fmt.Errorf("proto: FilesystemIdentifier: wiretype end group for non-group")
} }
if fieldNum <= 0 { if fieldNum <= 0 {
return fmt.Errorf("proto: StorageIdentifier: illegal tag %d (wire type %d)", fieldNum, wire) return fmt.Errorf("proto: FilesystemIdentifier: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 1: case 1:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Uuid", wireType) return fmt.Errorf("proto: wrong wireType = %d for field Mountpoint", wireType)
} }
var stringLen uint64 var stringLen uint64
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
@ -24542,7 +24542,7 @@ func (m *StorageIdentifier) Unmarshal(dAtA []byte) error {
if postIndex > l { if postIndex > l {
return io.ErrUnexpectedEOF return io.ErrUnexpectedEOF
} }
m.Uuid = string(dAtA[iNdEx:postIndex]) m.Mountpoint = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
@ -24615,7 +24615,7 @@ func (m *FilesystemUsage) Unmarshal(dAtA []byte) error {
} }
case 2: case 2:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field StorageId", wireType) return fmt.Errorf("proto: wrong wireType = %d for field FsId", wireType)
} }
var msglen int var msglen int
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
@ -24639,10 +24639,10 @@ func (m *FilesystemUsage) Unmarshal(dAtA []byte) error {
if postIndex > l { if postIndex > l {
return io.ErrUnexpectedEOF return io.ErrUnexpectedEOF
} }
if m.StorageId == nil { if m.FsId == nil {
m.StorageId = &StorageIdentifier{} m.FsId = &FilesystemIdentifier{}
} }
if err := m.StorageId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { if err := m.FsId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
@ -26331,293 +26331,293 @@ var (
func init() { proto.RegisterFile("api.proto", fileDescriptorApi) } func init() { proto.RegisterFile("api.proto", fileDescriptorApi) }
var fileDescriptorApi = []byte{ var fileDescriptorApi = []byte{
// 4597 bytes of a gzipped FileDescriptorProto // 4602 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5c, 0x4d, 0x6c, 0x1b, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5c, 0xcd, 0x6f, 0x1b, 0x49,
0x76, 0x56, 0x93, 0xfa, 0x21, 0x1f, 0x45, 0x89, 0x2a, 0xcb, 0x16, 0x4d, 0x8f, 0x3d, 0x76, 0x7b, 0x76, 0x17, 0x49, 0x7d, 0x90, 0x8f, 0xa2, 0x44, 0x95, 0x65, 0x8b, 0xa6, 0x6d, 0x8d, 0xd5, 0x1e,
0xfc, 0xbb, 0x63, 0x79, 0xac, 0xd9, 0xf5, 0xc4, 0xf6, 0xac, 0x6d, 0x5a, 0x92, 0x6d, 0x66, 0x6d, 0x7f, 0xce, 0x58, 0x1e, 0x6b, 0x76, 0x3d, 0xb1, 0x3d, 0x6b, 0x9b, 0x96, 0x64, 0x9b, 0x59, 0x9b,
0x4a, 0x69, 0x4a, 0xf3, 0xb3, 0xb3, 0x40, 0x6f, 0x8b, 0x5d, 0xa2, 0x7a, 0x4d, 0x76, 0xf5, 0xf4, 0x52, 0x9a, 0xd2, 0x7c, 0xec, 0x2c, 0xd0, 0xdb, 0x62, 0x97, 0xa8, 0x5e, 0x93, 0x5d, 0x3d, 0xdd,
0x8f, 0x6d, 0xe5, 0x10, 0x2c, 0x10, 0x64, 0x0f, 0x01, 0x02, 0xe4, 0x9c, 0x5b, 0x36, 0x87, 0x1c, 0x4d, 0xdb, 0xca, 0x21, 0x58, 0x20, 0xc8, 0x1e, 0x02, 0x04, 0xc8, 0x39, 0xb7, 0x6c, 0x0e, 0x39,
0x72, 0x0b, 0x10, 0xe4, 0x90, 0x53, 0x82, 0x3d, 0xec, 0x25, 0x40, 0x4e, 0x8b, 0xfc, 0x5c, 0xb2, 0xe4, 0x16, 0x20, 0xc8, 0x21, 0xa7, 0x04, 0x7b, 0xd8, 0x4b, 0x80, 0x9c, 0x16, 0xf9, 0xb8, 0x64,
0x13, 0xe4, 0x1a, 0x24, 0xf7, 0x1c, 0x82, 0xfa, 0x6b, 0xf6, 0x2f, 0x7f, 0x3c, 0xde, 0x9d, 0xc9, 0x27, 0xc8, 0x25, 0x87, 0x20, 0x7f, 0x40, 0x0e, 0x41, 0x7d, 0xf5, 0x77, 0xf3, 0x43, 0xe3, 0x9d,
0x49, 0x5d, 0xaf, 0xdf, 0x7b, 0xf5, 0xea, 0xd5, 0xeb, 0x57, 0xaf, 0xbe, 0x2a, 0x0a, 0xca, 0x86, 0x99, 0x9c, 0xd4, 0xf5, 0xfa, 0xbd, 0x57, 0xaf, 0x5e, 0xbd, 0x7e, 0xf5, 0xea, 0x57, 0x45, 0x41,
0x63, 0xad, 0x3b, 0x2e, 0xf1, 0x09, 0xaa, 0xb9, 0x81, 0xed, 0x5b, 0x03, 0xbc, 0xfe, 0xf2, 0x96, 0x49, 0xb7, 0xcd, 0x75, 0xdb, 0x21, 0x1e, 0x41, 0x55, 0x67, 0x60, 0x79, 0x66, 0x1f, 0xaf, 0xbf,
0xd1, 0x77, 0x8e, 0x8c, 0x8d, 0xc6, 0x8d, 0x9e, 0xe5, 0x1f, 0x05, 0x07, 0xeb, 0x5d, 0x32, 0xb8, 0xba, 0xad, 0xf7, 0xec, 0x23, 0x7d, 0xa3, 0x7e, 0xb3, 0x6b, 0x7a, 0x47, 0x83, 0x83, 0xf5, 0x0e,
0xd9, 0x23, 0x3d, 0x72, 0x93, 0x31, 0x1e, 0x04, 0x87, 0xac, 0xc5, 0x1a, 0xec, 0x89, 0x2b, 0x50, 0xe9, 0xdf, 0xea, 0x92, 0x2e, 0xb9, 0xc5, 0x18, 0x0f, 0x06, 0x87, 0xac, 0xc5, 0x1a, 0xec, 0x89,
0xaf, 0xc3, 0xd2, 0x27, 0xd8, 0xf5, 0x2c, 0x62, 0x6b, 0xf8, 0xcb, 0x00, 0x7b, 0x3e, 0xaa, 0xc3, 0x2b, 0x50, 0x6e, 0xc0, 0xc2, 0x27, 0xd8, 0x71, 0x4d, 0x62, 0xa9, 0xf8, 0xcb, 0x01, 0x76, 0x3d,
0xc2, 0x4b, 0x4e, 0xa9, 0x2b, 0xe7, 0x95, 0xab, 0x65, 0x4d, 0x36, 0xd5, 0xbf, 0x54, 0x60, 0x39, 0x54, 0x83, 0xb9, 0x57, 0x9c, 0x52, 0xcb, 0x5d, 0xcc, 0x5d, 0x2b, 0xa9, 0xb2, 0xa9, 0xfc, 0x65,
0x64, 0xf6, 0x1c, 0x62, 0x7b, 0x38, 0x9f, 0x1b, 0x5d, 0x80, 0x45, 0x61, 0x9c, 0x6e, 0x1b, 0x03, 0x0e, 0x16, 0x7d, 0x66, 0xd7, 0x26, 0x96, 0x8b, 0xb3, 0xb9, 0xd1, 0x1a, 0xcc, 0x0b, 0xe3, 0x34,
0x5c, 0x2f, 0xb0, 0xd7, 0x15, 0x41, 0x6b, 0x1b, 0x03, 0x8c, 0xae, 0xc0, 0xb2, 0x64, 0x91, 0x4a, 0x4b, 0xef, 0xe3, 0x5a, 0x9e, 0xbd, 0x2e, 0x0b, 0x5a, 0x4b, 0xef, 0x63, 0x74, 0x15, 0x16, 0x25,
0x8a, 0x8c, 0x6b, 0x49, 0x90, 0x45, 0x6f, 0x68, 0x1d, 0x4e, 0x48, 0x46, 0xc3, 0xb1, 0x42, 0xe6, 0x8b, 0x54, 0x52, 0x60, 0x5c, 0x0b, 0x82, 0x2c, 0x7a, 0x43, 0xeb, 0x70, 0x4a, 0x32, 0xea, 0xb6,
0x59, 0xc6, 0xbc, 0x22, 0x5e, 0x35, 0x1d, 0x4b, 0xf0, 0xab, 0x5f, 0x40, 0x79, 0xab, 0xdd, 0xd9, 0xe9, 0x33, 0x4f, 0x33, 0xe6, 0x25, 0xf1, 0xaa, 0x61, 0x9b, 0x82, 0x5f, 0xf9, 0x02, 0x4a, 0x5b,
0x24, 0xf6, 0xa1, 0xd5, 0xa3, 0x26, 0x7a, 0xd8, 0xa5, 0x32, 0x75, 0xe5, 0x7c, 0x91, 0x9a, 0x28, 0xad, 0xf6, 0x26, 0xb1, 0x0e, 0xcd, 0x2e, 0x35, 0xd1, 0xc5, 0x0e, 0x95, 0xa9, 0xe5, 0x2e, 0x16,
0x9a, 0xa8, 0x01, 0x25, 0x0f, 0x1b, 0x6e, 0xf7, 0x08, 0x7b, 0xf5, 0x02, 0x7b, 0x15, 0xb6, 0xa9, 0xa8, 0x89, 0xa2, 0x89, 0xea, 0x50, 0x74, 0xb1, 0xee, 0x74, 0x8e, 0xb0, 0x5b, 0xcb, 0xb3, 0x57,
0x14, 0x71, 0x7c, 0x8b, 0xd8, 0x5e, 0xbd, 0xc8, 0xa5, 0x44, 0x53, 0xfd, 0xb9, 0x02, 0x95, 0x5d, 0x7e, 0x9b, 0x4a, 0x11, 0xdb, 0x33, 0x89, 0xe5, 0xd6, 0x0a, 0x5c, 0x4a, 0x34, 0x95, 0x5f, 0xe4,
0xe2, 0xfa, 0xcf, 0x0d, 0xc7, 0xb1, 0xec, 0x1e, 0xba, 0x0d, 0x25, 0xe6, 0xcb, 0x2e, 0xe9, 0x33, 0xa0, 0xbc, 0x4b, 0x1c, 0xef, 0x85, 0x6e, 0xdb, 0xa6, 0xd5, 0x45, 0x77, 0xa0, 0xc8, 0x7c, 0xd9,
0x1f, 0x2c, 0x6d, 0x34, 0xd6, 0x93, 0xd3, 0xb2, 0xbe, 0x2b, 0x38, 0xb4, 0x90, 0x17, 0x5d, 0x82, 0x21, 0x3d, 0xe6, 0x83, 0x85, 0x8d, 0xfa, 0x7a, 0x7c, 0x5a, 0xd6, 0x77, 0x05, 0x87, 0xea, 0xf3,
0xa5, 0x2e, 0xb1, 0x7d, 0xc3, 0xb2, 0xb1, 0xab, 0x3b, 0xc4, 0xf5, 0x99, 0x8b, 0xe6, 0xb4, 0x6a, 0xa2, 0xcb, 0xb0, 0xd0, 0x21, 0x96, 0xa7, 0x9b, 0x16, 0x76, 0x34, 0x9b, 0x38, 0x1e, 0x73, 0xd1,
0x48, 0xa5, 0xbd, 0xa0, 0x33, 0x50, 0x3e, 0x22, 0x9e, 0xcf, 0x39, 0x8a, 0x8c, 0xa3, 0x44, 0x09, 0x8c, 0x5a, 0xf1, 0xa9, 0xb4, 0x17, 0x74, 0x0e, 0x4a, 0x47, 0xc4, 0xf5, 0x38, 0x47, 0x81, 0x71,
0xec, 0xe5, 0x1a, 0x2c, 0xb0, 0x97, 0x96, 0x23, 0x9c, 0x31, 0x4f, 0x9b, 0x2d, 0x47, 0xfd, 0x95, 0x14, 0x29, 0x81, 0xbd, 0x5c, 0x81, 0x39, 0xf6, 0xd2, 0xb4, 0x85, 0x33, 0x66, 0x69, 0xb3, 0x69,
0x02, 0x73, 0xcf, 0x49, 0x60, 0xfb, 0x89, 0x6e, 0x0c, 0xff, 0x48, 0x4c, 0x54, 0xa4, 0x1b, 0xc3, 0x2b, 0xbf, 0xce, 0xc1, 0xcc, 0x0b, 0x32, 0xb0, 0xbc, 0x58, 0x37, 0xba, 0x77, 0x24, 0x26, 0x2a,
0x3f, 0x1a, 0x76, 0x43, 0x39, 0xf8, 0x5c, 0xf1, 0x6e, 0xe8, 0xcb, 0x06, 0x94, 0x5c, 0x6c, 0x98, 0xd4, 0x8d, 0xee, 0x1d, 0x05, 0xdd, 0x50, 0x0e, 0x3e, 0x57, 0xbc, 0x1b, 0xfa, 0xb2, 0x0e, 0x45,
0xc4, 0xee, 0x1f, 0x33, 0x13, 0x4a, 0x5a, 0xd8, 0xa6, 0x93, 0xe8, 0xe1, 0xbe, 0x65, 0x07, 0xaf, 0x07, 0xeb, 0x06, 0xb1, 0x7a, 0xc7, 0xcc, 0x84, 0xa2, 0xea, 0xb7, 0xe9, 0x24, 0xba, 0xb8, 0x67,
0x75, 0x17, 0xf7, 0x8d, 0x03, 0xdc, 0x67, 0xa6, 0x94, 0xb4, 0x25, 0x41, 0xd6, 0x38, 0x15, 0x6d, 0x5a, 0x83, 0x37, 0x9a, 0x83, 0x7b, 0xfa, 0x01, 0xee, 0x31, 0x53, 0x8a, 0xea, 0x82, 0x20, 0xab,
0x41, 0xc5, 0x71, 0x89, 0x63, 0xf4, 0x0c, 0xea, 0xc7, 0xfa, 0x1c, 0x73, 0x95, 0x9a, 0x76, 0x15, 0x9c, 0x8a, 0xb6, 0xa0, 0x6c, 0x3b, 0xc4, 0xd6, 0xbb, 0x3a, 0xf5, 0x63, 0x6d, 0x86, 0xb9, 0x4a,
0x33, 0x7b, 0x77, 0xc8, 0xa9, 0x45, 0xc5, 0xd4, 0xbf, 0x56, 0x60, 0x99, 0x06, 0x8f, 0xe7, 0x18, 0x49, 0xba, 0x8a, 0x99, 0xbd, 0x1b, 0x70, 0xaa, 0x61, 0x31, 0xe5, 0xaf, 0x73, 0xb0, 0x48, 0x83,
0x5d, 0xbc, 0xc3, 0xa6, 0x04, 0xdd, 0x81, 0x05, 0x1b, 0xfb, 0xaf, 0x88, 0xfb, 0x42, 0x4c, 0xc0, 0xc7, 0xb5, 0xf5, 0x0e, 0xde, 0x61, 0x53, 0x82, 0xee, 0xc2, 0x9c, 0x85, 0xbd, 0xd7, 0xc4, 0x79,
0xbb, 0x69, 0xad, 0xa1, 0xcc, 0x73, 0x62, 0x62, 0x4d, 0xf2, 0xa3, 0x5b, 0x50, 0x74, 0x2c, 0x93, 0x29, 0x26, 0xe0, 0x9d, 0xa4, 0x56, 0x5f, 0xe6, 0x05, 0x31, 0xb0, 0x2a, 0xf9, 0xd1, 0x6d, 0x28,
0x0d, 0x78, 0x02, 0x31, 0xca, 0x4b, 0x45, 0x2c, 0xa7, 0xcb, 0xfc, 0x30, 0x89, 0x88, 0xe5, 0x74, 0xd8, 0xa6, 0xc1, 0x06, 0x3c, 0x86, 0x18, 0xe5, 0xa5, 0x22, 0xa6, 0xdd, 0x61, 0x7e, 0x18, 0x47,
0x55, 0x15, 0xa0, 0x65, 0xfb, 0xb7, 0xbf, 0xfb, 0x89, 0xd1, 0x0f, 0x30, 0x5a, 0x85, 0xb9, 0x97, 0xc4, 0xb4, 0x3b, 0x8a, 0x02, 0xd0, 0xb4, 0xbc, 0x3b, 0xdf, 0xfb, 0x44, 0xef, 0x0d, 0x30, 0x5a,
0xf4, 0x81, 0x19, 0x5b, 0xd4, 0x78, 0x43, 0xfd, 0xf3, 0x22, 0x9c, 0x79, 0x46, 0xfd, 0xd5, 0x31, 0x86, 0x99, 0x57, 0xf4, 0x81, 0x19, 0x5b, 0x50, 0x79, 0x43, 0xf9, 0xf3, 0x02, 0x9c, 0x7b, 0x4e,
0x6c, 0xf3, 0x80, 0xbc, 0xee, 0xe0, 0x6e, 0xe0, 0x5a, 0xfe, 0xf1, 0x26, 0xb1, 0x7d, 0xfc, 0xda, 0xfd, 0xd5, 0xd6, 0x2d, 0xe3, 0x80, 0xbc, 0x69, 0xe3, 0xce, 0xc0, 0x31, 0xbd, 0xe3, 0x4d, 0x62,
0x47, 0x6d, 0x58, 0xb1, 0xa5, 0x66, 0x5d, 0x86, 0x26, 0xd5, 0x50, 0xd9, 0xb8, 0x30, 0xc2, 0x08, 0x79, 0xf8, 0x8d, 0x87, 0x5a, 0xb0, 0x64, 0x49, 0xcd, 0x9a, 0x0c, 0x4d, 0xaa, 0xa1, 0xbc, 0xb1,
0xee, 0x22, 0xad, 0x66, 0xc7, 0x09, 0x1e, 0x7a, 0x3a, 0x9c, 0x37, 0xa9, 0xad, 0xc0, 0xb4, 0x65, 0x36, 0xc4, 0x08, 0xee, 0x22, 0xb5, 0x6a, 0x45, 0x09, 0x2e, 0x7a, 0x16, 0xcc, 0x9b, 0xd4, 0x96,
0x0c, 0xa9, 0xb3, 0xcd, 0x2c, 0x13, 0xba, 0xe4, 0xc4, 0x4a, 0x4d, 0x1f, 0x03, 0xfd, 0xaa, 0x75, 0x67, 0xda, 0x52, 0x86, 0xd4, 0xde, 0x66, 0x96, 0x09, 0x5d, 0x72, 0x62, 0xa5, 0xa6, 0x8f, 0x81,
0xc3, 0xd3, 0x03, 0x0f, 0xbb, 0xcc, 0x31, 0x95, 0x8d, 0x77, 0xd2, 0x5a, 0x86, 0x2e, 0xd0, 0xca, 0x7e, 0xd5, 0x9a, 0xee, 0x6a, 0x03, 0x17, 0x3b, 0xcc, 0x31, 0xe5, 0x8d, 0xf3, 0x49, 0x2d, 0x81,
0x6e, 0x60, 0x37, 0xbd, 0x7d, 0x0f, 0xbb, 0x2c, 0x09, 0x88, 0x58, 0xd2, 0x5d, 0x42, 0xfc, 0x43, 0x0b, 0xd4, 0x92, 0x33, 0xb0, 0x1a, 0xee, 0xbe, 0x8b, 0x1d, 0x96, 0x04, 0x44, 0x2c, 0x69, 0x0e,
0x4f, 0xc6, 0x8f, 0x24, 0x6b, 0x8c, 0x8a, 0x6e, 0xc2, 0x09, 0x2f, 0x70, 0x9c, 0x3e, 0x1e, 0x60, 0x21, 0xde, 0xa1, 0x2b, 0xe3, 0x47, 0x92, 0x55, 0x46, 0x45, 0xb7, 0xe0, 0x94, 0x3b, 0xb0, 0xed,
0xdb, 0x37, 0xfa, 0x7a, 0xcf, 0x25, 0x81, 0xe3, 0xd5, 0xe7, 0xce, 0x17, 0xaf, 0x16, 0x35, 0x14, 0x1e, 0xee, 0x63, 0xcb, 0xd3, 0x7b, 0x5a, 0xd7, 0x21, 0x03, 0xdb, 0xad, 0xcd, 0x5c, 0x2c, 0x5c,
0x7d, 0xf5, 0x84, 0xbd, 0x41, 0xe7, 0x00, 0x1c, 0xd7, 0x7a, 0x69, 0xf5, 0x71, 0x0f, 0x9b, 0xf5, 0x2b, 0xa8, 0x28, 0xfc, 0xea, 0x29, 0x7b, 0x83, 0x56, 0x01, 0x6c, 0xc7, 0x7c, 0x65, 0xf6, 0x70,
0x79, 0xa6, 0x34, 0x42, 0x41, 0x1f, 0xc0, 0xaa, 0x87, 0xbb, 0x5d, 0x32, 0x70, 0x74, 0xc7, 0x25, 0x17, 0x1b, 0xb5, 0x59, 0xa6, 0x34, 0x44, 0x41, 0x1f, 0xc0, 0xb2, 0x8b, 0x3b, 0x1d, 0xd2, 0xb7,
0x87, 0x56, 0x1f, 0xf3, 0xe8, 0x5f, 0x60, 0xd1, 0x8f, 0xc4, 0xbb, 0x5d, 0xfe, 0x8a, 0x7e, 0x07, 0x35, 0xdb, 0x21, 0x87, 0x66, 0x0f, 0xf3, 0xe8, 0x9f, 0x63, 0xd1, 0x8f, 0xc4, 0xbb, 0x5d, 0xfe,
0xea, 0xcf, 0x0b, 0x70, 0x92, 0x79, 0x62, 0x97, 0x98, 0x62, 0x9a, 0x44, 0x92, 0xb9, 0x08, 0xd5, 0x8a, 0x7e, 0x07, 0xca, 0x2f, 0xf2, 0x70, 0x9a, 0x79, 0x62, 0x97, 0x18, 0x62, 0x9a, 0x44, 0x92,
0x2e, 0x33, 0x48, 0x77, 0x0c, 0x17, 0xdb, 0xbe, 0xf8, 0xc8, 0x16, 0x39, 0x71, 0x97, 0xd1, 0xd0, 0xb9, 0x04, 0x95, 0x0e, 0x33, 0x48, 0xb3, 0x75, 0x07, 0x5b, 0x9e, 0xf8, 0xc8, 0xe6, 0x39, 0x71,
0x67, 0x50, 0xf3, 0xc4, 0xac, 0xea, 0x5d, 0x3e, 0xad, 0xc2, 0xe7, 0x37, 0xd2, 0xde, 0x1a, 0x11, 0x97, 0xd1, 0xd0, 0x67, 0x50, 0x75, 0xc5, 0xac, 0x6a, 0x1d, 0x3e, 0xad, 0xc2, 0xe7, 0x37, 0x93,
0x0b, 0xda, 0xb2, 0x97, 0x0a, 0x8e, 0x05, 0xef, 0xd8, 0xeb, 0xfa, 0x7d, 0x9e, 0xad, 0x2a, 0x1b, 0xde, 0x1a, 0x12, 0x0b, 0xea, 0xa2, 0x9b, 0x08, 0x8e, 0x39, 0xf7, 0xd8, 0xed, 0x78, 0x3d, 0x9e,
0xdf, 0xcd, 0x51, 0x98, 0x34, 0x7c, 0xbd, 0xc3, 0xc5, 0xb6, 0x6d, 0xdf, 0x3d, 0xd6, 0xa4, 0x92, 0xad, 0xca, 0x1b, 0xdf, 0xcb, 0x50, 0x18, 0x37, 0x7c, 0xbd, 0xcd, 0xc5, 0xb6, 0x2d, 0xcf, 0x39,
0xc6, 0x5d, 0x58, 0x8c, 0xbe, 0x40, 0x35, 0x28, 0xbe, 0xc0, 0xc7, 0x62, 0x50, 0xf4, 0x71, 0x18, 0x56, 0xa5, 0x92, 0xfa, 0x3d, 0x98, 0x0f, 0xbf, 0x40, 0x55, 0x28, 0xbc, 0xc4, 0xc7, 0x62, 0x50,
0xc4, 0x3c, 0x57, 0xf0, 0xc6, 0xdd, 0xc2, 0xef, 0x28, 0xaa, 0x0b, 0x68, 0xd8, 0xcb, 0x73, 0xec, 0xf4, 0x31, 0x08, 0x62, 0x9e, 0x2b, 0x78, 0xe3, 0x5e, 0xfe, 0x77, 0x72, 0x8a, 0x03, 0x28, 0xe8,
0x1b, 0xa6, 0xe1, 0x1b, 0x08, 0xc1, 0x2c, 0x5b, 0x06, 0xb8, 0x0a, 0xf6, 0x4c, 0xb5, 0x06, 0xe2, 0xe5, 0x05, 0xf6, 0x74, 0x43, 0xf7, 0x74, 0x84, 0x60, 0x9a, 0x2d, 0x03, 0x5c, 0x05, 0x7b, 0xa6,
0xe3, 0x2b, 0x6b, 0xf4, 0x11, 0xbd, 0x03, 0xe5, 0x30, 0x50, 0xc5, 0x5a, 0x30, 0x24, 0xd0, 0x9c, 0x5a, 0x07, 0xe2, 0xe3, 0x2b, 0xa9, 0xf4, 0x11, 0x9d, 0x87, 0x92, 0x1f, 0xa8, 0x62, 0x2d, 0x08,
0x6c, 0xf8, 0x3e, 0x1e, 0x38, 0x3e, 0x0b, 0x91, 0xaa, 0x26, 0x9b, 0xea, 0x7f, 0xcd, 0x42, 0x2d, 0x08, 0x34, 0x27, 0xeb, 0x9e, 0x87, 0xfb, 0xb6, 0xc7, 0x42, 0xa4, 0xa2, 0xca, 0xa6, 0xf2, 0xdf,
0x35, 0x27, 0x0f, 0xa1, 0x34, 0x10, 0xdd, 0x8b, 0x0f, 0xe5, 0xbd, 0x8c, 0xc4, 0x9c, 0x32, 0x55, 0xd3, 0x50, 0x4d, 0xcc, 0xc9, 0x23, 0x28, 0xf6, 0x45, 0xf7, 0xe2, 0x43, 0x79, 0x37, 0x25, 0x31,
0x0b, 0xa5, 0x68, 0xde, 0xa3, 0x39, 0x30, 0xb2, 0x7e, 0x85, 0x6d, 0x3a, 0xe3, 0x7d, 0xd2, 0xd3, 0x27, 0x4c, 0x55, 0x7d, 0x29, 0x9a, 0xf7, 0x68, 0x0e, 0x0c, 0xad, 0x5f, 0x7e, 0x9b, 0xce, 0x78,
0x4d, 0xcb, 0xc5, 0x5d, 0x9f, 0xb8, 0xc7, 0xc2, 0xdc, 0xc5, 0x3e, 0xe9, 0x6d, 0x49, 0x1a, 0xba, 0x8f, 0x74, 0x35, 0xc3, 0x74, 0x70, 0xc7, 0x23, 0xce, 0xb1, 0x30, 0x77, 0xbe, 0x47, 0xba, 0x5b,
0x0b, 0x60, 0xda, 0x1e, 0x9d, 0xec, 0x43, 0xab, 0xc7, 0x8c, 0xae, 0x6c, 0x9c, 0x49, 0x1b, 0x11, 0x92, 0x86, 0xee, 0x01, 0x18, 0x96, 0x4b, 0x27, 0xfb, 0xd0, 0xec, 0x32, 0xa3, 0xcb, 0x1b, 0xe7,
0x2e, 0x56, 0x5a, 0xd9, 0xb4, 0x3d, 0x61, 0xfe, 0x23, 0xa8, 0xd2, 0x9c, 0xaf, 0x0f, 0xf8, 0x3a, 0x92, 0x46, 0xf8, 0x8b, 0x95, 0x5a, 0x32, 0x2c, 0x57, 0x98, 0xff, 0x18, 0x2a, 0x34, 0xe7, 0x6b,
0xc3, 0x23, 0xbd, 0xb2, 0x71, 0x36, 0x6b, 0x0c, 0xe1, 0x6a, 0xa4, 0x2d, 0x3a, 0xc3, 0x86, 0x87, 0x7d, 0xbe, 0xce, 0xf0, 0x48, 0x2f, 0x6f, 0x5c, 0x48, 0x1b, 0x83, 0xbf, 0x1a, 0xa9, 0xf3, 0x76,
0x1e, 0xc3, 0x3c, 0x4b, 0xbe, 0x5e, 0x7d, 0x9e, 0x09, 0xaf, 0x8f, 0x72, 0x80, 0x88, 0x88, 0x67, 0xd0, 0x70, 0xd1, 0x13, 0x98, 0x65, 0xc9, 0xd7, 0xad, 0xcd, 0x32, 0xe1, 0xf5, 0x61, 0x0e, 0x10,
0x4c, 0x80, 0x07, 0x84, 0x90, 0x46, 0xfb, 0x50, 0x31, 0x6c, 0x9b, 0xf8, 0x06, 0x4f, 0x14, 0x0b, 0x11, 0xf1, 0x9c, 0x09, 0xf0, 0x80, 0x10, 0xd2, 0x68, 0x1f, 0xca, 0xba, 0x65, 0x11, 0x4f, 0xe7,
0x4c, 0xd9, 0x87, 0x13, 0x28, 0x6b, 0x0e, 0xa5, 0xb8, 0xc6, 0xa8, 0x1e, 0xf4, 0x7d, 0x98, 0x63, 0x89, 0x62, 0x8e, 0x29, 0xfb, 0x70, 0x0c, 0x65, 0x8d, 0x40, 0x8a, 0x6b, 0x0c, 0xeb, 0x41, 0x3f,
0x99, 0xa4, 0x5e, 0x62, 0x9e, 0xb9, 0x32, 0x61, 0xd0, 0x6a, 0x5c, 0xaa, 0x71, 0x07, 0x2a, 0x11, 0x80, 0x19, 0x96, 0x49, 0x6a, 0x45, 0xe6, 0x99, 0xab, 0x63, 0x06, 0xad, 0xca, 0xa5, 0xea, 0x77,
0x63, 0xa7, 0x09, 0xd2, 0xc6, 0x7d, 0xa8, 0x25, 0x4d, 0x9b, 0x2a, 0xc8, 0x35, 0x58, 0xd5, 0x02, 0xa1, 0x1c, 0x32, 0x76, 0x92, 0x20, 0xad, 0x3f, 0x80, 0x6a, 0xdc, 0xb4, 0x89, 0x82, 0x5c, 0x85,
0x7b, 0x68, 0x98, 0xac, 0x9e, 0xee, 0xc2, 0xbc, 0x98, 0x6c, 0x1e, 0x71, 0xea, 0x78, 0x1f, 0x69, 0x65, 0x75, 0x60, 0x05, 0x86, 0xc9, 0xea, 0xe9, 0x1e, 0xcc, 0x8a, 0xc9, 0xe6, 0x11, 0xa7, 0x8c,
0x42, 0x42, 0xfd, 0x3e, 0x9c, 0x4c, 0xe8, 0x14, 0x45, 0xd6, 0x7b, 0xb0, 0xe4, 0x10, 0x53, 0xf7, 0xf6, 0x91, 0x2a, 0x24, 0x94, 0x1f, 0xc0, 0xe9, 0x98, 0x4e, 0x51, 0x64, 0xbd, 0x0b, 0x0b, 0x36,
0x38, 0x59, 0xb7, 0x4c, 0x99, 0x5d, 0x9c, 0x90, 0xb7, 0x65, 0x52, 0xf1, 0x8e, 0x4f, 0x9c, 0xb4, 0x31, 0x34, 0x97, 0x93, 0x35, 0xd3, 0x90, 0xd9, 0xc5, 0xf6, 0x79, 0x9b, 0x06, 0x15, 0x6f, 0x7b,
0x4d, 0x93, 0x89, 0xd7, 0xe1, 0x54, 0x52, 0x9c, 0x77, 0xaf, 0x3e, 0x80, 0x35, 0x0d, 0x0f, 0xc8, 0xc4, 0x4e, 0xda, 0x34, 0x9e, 0x78, 0x0d, 0xce, 0xc4, 0xc5, 0x79, 0xf7, 0xca, 0x43, 0x58, 0x51,
0x4b, 0xfc, 0xa6, 0xaa, 0x1b, 0x50, 0x4f, 0x2b, 0x10, 0xca, 0x3f, 0x87, 0xb5, 0x21, 0xb5, 0xe3, 0x71, 0x9f, 0xbc, 0xc2, 0x27, 0x55, 0x5d, 0x87, 0x5a, 0x52, 0x81, 0x50, 0xfe, 0x39, 0xac, 0x04,
0x1b, 0x7e, 0xe0, 0x4d, 0xa5, 0x5c, 0x54, 0xa0, 0x07, 0xc4, 0xe3, 0xb3, 0x54, 0xd2, 0x64, 0x53, 0xd4, 0xb6, 0xa7, 0x7b, 0x03, 0x77, 0x22, 0xe5, 0xa2, 0x02, 0x3d, 0x20, 0x2e, 0x9f, 0xa5, 0xa2,
0xbd, 0x16, 0x55, 0xdd, 0xe6, 0x0b, 0x3e, 0xef, 0x01, 0x2d, 0x41, 0xc1, 0x72, 0x84, 0xba, 0x82, 0x2a, 0x9b, 0xca, 0xf5, 0xb0, 0xea, 0x16, 0x5f, 0xf0, 0x79, 0x0f, 0x68, 0x01, 0xf2, 0xa6, 0x2d,
0xe5, 0xa8, 0x4f, 0xa1, 0x1c, 0xae, 0x98, 0xe8, 0xde, 0xb0, 0xf4, 0x2b, 0x4c, 0xba, 0xbe, 0x86, 0xd4, 0xe5, 0x4d, 0x5b, 0x79, 0x06, 0x25, 0x7f, 0xc5, 0x44, 0xf7, 0x83, 0xd2, 0x2f, 0x3f, 0xee,
0xd5, 0xe1, 0x5e, 0x6a, 0x85, 0x10, 0x5d, 0xde, 0x03, 0x08, 0x33, 0x99, 0x5c, 0xb8, 0xcf, 0x8c, 0xfa, 0xea, 0x57, 0x87, 0x7b, 0x89, 0x15, 0x42, 0x74, 0x79, 0x1f, 0xc0, 0xcf, 0x64, 0x72, 0xe1,
0x50, 0xac, 0x45, 0xd8, 0xd5, 0x7f, 0x8d, 0xe5, 0xb7, 0xc8, 0x20, 0xcc, 0x70, 0x10, 0x66, 0x2c, 0x3e, 0x37, 0x44, 0xb1, 0x1a, 0x62, 0x57, 0xfe, 0x35, 0x92, 0xdf, 0x42, 0x83, 0x30, 0xfc, 0x41,
0xdf, 0x15, 0xde, 0x28, 0xdf, 0x7d, 0x04, 0x73, 0x9e, 0x6f, 0xf8, 0x58, 0x14, 0x37, 0x17, 0x46, 0x18, 0x91, 0x7c, 0x97, 0x3f, 0x51, 0xbe, 0xfb, 0x08, 0x66, 0x5c, 0x4f, 0xf7, 0xb0, 0x28, 0x6e,
0x89, 0x53, 0x23, 0xb0, 0xc6, 0xf9, 0xd1, 0x59, 0x80, 0xae, 0x8b, 0x0d, 0x1f, 0x9b, 0xba, 0xc1, 0xd6, 0x86, 0x89, 0x53, 0x23, 0xb0, 0xca, 0xf9, 0xd1, 0x05, 0x80, 0x8e, 0x83, 0x75, 0x0f, 0x1b,
0x93, 0x73, 0x51, 0x2b, 0x0b, 0x4a, 0xd3, 0x47, 0x9b, 0xc3, 0x02, 0x6d, 0x8e, 0x19, 0x76, 0x6d, 0x9a, 0xce, 0x93, 0x73, 0x41, 0x2d, 0x09, 0x4a, 0xc3, 0x43, 0x9b, 0x41, 0x81, 0x36, 0xc3, 0x0c,
0x94, 0xe6, 0xd8, 0x54, 0x0d, 0x4b, 0xb5, 0x30, 0x59, 0xcc, 0x4f, 0x98, 0x2c, 0x84, 0x02, 0x2e, 0xbb, 0x3e, 0x4c, 0x73, 0x64, 0xaa, 0x82, 0x52, 0xcd, 0x4f, 0x16, 0xb3, 0x63, 0x26, 0x0b, 0xa1,
0x15, 0x49, 0x85, 0x0b, 0xe3, 0x53, 0x21, 0x17, 0x9d, 0x24, 0x15, 0x96, 0xc6, 0xa7, 0x42, 0xa1, 0x80, 0x4b, 0x85, 0x52, 0xe1, 0xdc, 0xe8, 0x54, 0xc8, 0x45, 0xc7, 0x49, 0x85, 0xc5, 0xd1, 0xa9,
0x6c, 0x64, 0x2a, 0xfc, 0x26, 0x73, 0xd9, 0xbf, 0x28, 0x50, 0x4f, 0x7f, 0x83, 0x22, 0xf7, 0xdc, 0x50, 0x28, 0x1b, 0x9a, 0x0a, 0xbf, 0xcd, 0x5c, 0xf6, 0x2f, 0x39, 0xa8, 0x25, 0xbf, 0x41, 0x91,
0x85, 0x79, 0x8f, 0x51, 0x26, 0x49, 0x68, 0x42, 0x56, 0x48, 0xa0, 0xa7, 0x30, 0x6b, 0xd9, 0x87, 0x7b, 0xee, 0xc1, 0xac, 0xcb, 0x28, 0xe3, 0x24, 0x34, 0x21, 0x2b, 0x24, 0xd0, 0x33, 0x98, 0x36,
0x84, 0xed, 0xad, 0x32, 0x4b, 0x92, 0xbc, 0x5e, 0xd7, 0x5b, 0xf6, 0x21, 0xe1, 0x4e, 0x62, 0x1a, 0xad, 0x43, 0xc2, 0xf6, 0x56, 0xa9, 0x25, 0x49, 0x56, 0xaf, 0xeb, 0x4d, 0xeb, 0x90, 0x70, 0x27,
0x1a, 0x1f, 0x41, 0x39, 0x24, 0x4d, 0x35, 0xb6, 0x1d, 0x58, 0x4d, 0x84, 0x2c, 0xaf, 0xc1, 0xc3, 0x31, 0x0d, 0xf5, 0x8f, 0xa0, 0xe4, 0x93, 0x26, 0x1a, 0xdb, 0x0e, 0x2c, 0xc7, 0x42, 0x96, 0xd7,
0x48, 0x57, 0xa6, 0x8b, 0x74, 0xf5, 0xa7, 0x85, 0xe8, 0x97, 0xf8, 0xd8, 0xea, 0xfb, 0xd8, 0x4d, 0xe0, 0x7e, 0xa4, 0xe7, 0x26, 0x8b, 0x74, 0xe5, 0x67, 0xf9, 0xf0, 0x97, 0xf8, 0xc4, 0xec, 0x79,
0x7d, 0x89, 0x1f, 0x4b, 0xed, 0xfc, 0x33, 0xbc, 0x3c, 0x56, 0x3b, 0xaf, 0x8a, 0xc5, 0xc7, 0xf4, 0xd8, 0x49, 0x7c, 0x89, 0x1f, 0x4b, 0xed, 0xfc, 0x33, 0xbc, 0x32, 0x52, 0x3b, 0xaf, 0x8a, 0xc5,
0x23, 0x58, 0x62, 0xb1, 0xa6, 0x7b, 0xb8, 0xcf, 0xea, 0x08, 0x51, 0xd3, 0x7d, 0x6f, 0x94, 0x1a, 0xc7, 0xf4, 0x63, 0x58, 0x60, 0xb1, 0xa6, 0xb9, 0xb8, 0xc7, 0xea, 0x08, 0x51, 0xd3, 0x7d, 0x7f,
0x6e, 0x09, 0x8f, 0xd8, 0x8e, 0x90, 0xe3, 0x1e, 0xac, 0xf6, 0xa3, 0xb4, 0xc6, 0x43, 0x40, 0x69, 0x98, 0x1a, 0x6e, 0x09, 0x8f, 0xd8, 0xb6, 0x90, 0xe3, 0x1e, 0xac, 0xf4, 0xc2, 0xb4, 0xfa, 0x23,
0xa6, 0xa9, 0x7c, 0xda, 0xa1, 0x29, 0x8e, 0x6e, 0x40, 0x33, 0x16, 0xbf, 0x43, 0x66, 0xc6, 0x24, 0x40, 0x49, 0xa6, 0x89, 0x7c, 0xda, 0xa6, 0x29, 0x8e, 0x6e, 0x40, 0x53, 0x16, 0xbf, 0x43, 0x66,
0xb1, 0xc2, 0x0d, 0xd6, 0x84, 0x84, 0xfa, 0x8b, 0x22, 0xc0, 0xf0, 0xe5, 0xff, 0xa3, 0xdc, 0xf6, 0xc6, 0x38, 0xb1, 0xc2, 0x0d, 0x56, 0x85, 0x84, 0xf2, 0xcb, 0x02, 0x40, 0xf0, 0xf2, 0xff, 0x51,
0x30, 0xcc, 0x2b, 0xbc, 0x3e, 0xbb, 0x3a, 0x4a, 0x71, 0x66, 0x46, 0xd9, 0x89, 0x67, 0x14, 0x5e, 0x6e, 0x7b, 0xe4, 0xe7, 0x15, 0x5e, 0x9f, 0x5d, 0x1b, 0xa6, 0x38, 0x35, 0xa3, 0xec, 0x44, 0x33,
0xa9, 0xdd, 0x18, 0xa9, 0xe6, 0x5b, 0x9b, 0x4b, 0x9e, 0xc1, 0xa9, 0x64, 0x6c, 0x88, 0x44, 0xb2, 0x0a, 0xaf, 0xd4, 0x6e, 0x0e, 0x55, 0xf3, 0x9d, 0xcd, 0x25, 0xcf, 0xe1, 0x4c, 0x3c, 0x36, 0x44,
0x01, 0x73, 0x96, 0x8f, 0x07, 0x1c, 0x84, 0xc9, 0xdc, 0x1f, 0x46, 0x84, 0x38, 0xab, 0x7a, 0x01, 0x22, 0xd9, 0x80, 0x19, 0xd3, 0xc3, 0x7d, 0x0e, 0xc2, 0xa4, 0xee, 0x0f, 0x43, 0x42, 0x9c, 0x55,
0xca, 0xad, 0x81, 0xd1, 0xc3, 0x1d, 0x07, 0x77, 0x69, 0xa7, 0x16, 0x6d, 0x08, 0x43, 0x78, 0x43, 0x59, 0x83, 0x52, 0xb3, 0xaf, 0x77, 0x71, 0xdb, 0xc6, 0x1d, 0xda, 0xa9, 0x49, 0x1b, 0xc2, 0x10,
0xdd, 0x80, 0xd2, 0x0f, 0xf0, 0x31, 0xff, 0xa8, 0x27, 0x34, 0x54, 0xfd, 0x93, 0x02, 0xac, 0xb1, 0xde, 0x50, 0x36, 0xa0, 0xf8, 0x43, 0x7c, 0xcc, 0x3f, 0xea, 0x31, 0x0d, 0x55, 0xfe, 0x24, 0x0f,
0xb5, 0x62, 0x53, 0x42, 0x20, 0x1a, 0xf6, 0x48, 0xe0, 0x76, 0xb1, 0xc7, 0x66, 0xdb, 0x09, 0x74, 0x2b, 0x6c, 0xad, 0xd8, 0x94, 0x10, 0x88, 0x8a, 0x5d, 0x32, 0x70, 0x3a, 0xd8, 0x65, 0xb3, 0x6d,
0x07, 0xbb, 0x16, 0x31, 0xc5, 0x0e, 0xbd, 0xdc, 0x75, 0x82, 0x5d, 0x46, 0x40, 0x67, 0x80, 0x36, 0x0f, 0x34, 0x1b, 0x3b, 0x26, 0x31, 0xc4, 0x0e, 0xbd, 0xd4, 0xb1, 0x07, 0xbb, 0x8c, 0x80, 0xce,
0xf4, 0x2f, 0x03, 0x22, 0x02, 0xb1, 0xa8, 0x95, 0xba, 0x4e, 0xf0, 0x7b, 0xb4, 0x2d, 0x65, 0xbd, 0x01, 0x6d, 0x68, 0x5f, 0x0e, 0x88, 0x08, 0xc4, 0x82, 0x5a, 0xec, 0xd8, 0x83, 0xdf, 0xa3, 0x6d,
0x23, 0xc3, 0xc5, 0x1e, 0x8b, 0x33, 0x2e, 0xdb, 0x61, 0x04, 0x74, 0x0b, 0x4e, 0x0e, 0xf0, 0x80, 0x29, 0xeb, 0x1e, 0xe9, 0x0e, 0x76, 0x59, 0x9c, 0x71, 0xd9, 0x36, 0x23, 0xa0, 0xdb, 0x70, 0xba,
0xb8, 0xc7, 0x7a, 0xdf, 0x1a, 0x58, 0xbe, 0x6e, 0xd9, 0xfa, 0xc1, 0xb1, 0x8f, 0x3d, 0x11, 0x53, 0x8f, 0xfb, 0xc4, 0x39, 0xd6, 0x7a, 0x66, 0xdf, 0xf4, 0x34, 0xd3, 0xd2, 0x0e, 0x8e, 0x3d, 0xec,
0x88, 0xbf, 0x7c, 0x46, 0xdf, 0xb5, 0xec, 0x47, 0xf4, 0x0d, 0x52, 0xa1, 0x4a, 0xc8, 0x40, 0xf7, 0x8a, 0x98, 0x42, 0xfc, 0xe5, 0x73, 0xfa, 0xae, 0x69, 0x3d, 0xa6, 0x6f, 0x90, 0x02, 0x15, 0x42,
0xba, 0xc4, 0xc5, 0xba, 0x61, 0xfe, 0x84, 0x2d, 0x9f, 0x45, 0xad, 0x42, 0xc8, 0xa0, 0x43, 0x69, 0xfa, 0x9a, 0xdb, 0x21, 0x0e, 0xd6, 0x74, 0xe3, 0xa7, 0x6c, 0xf9, 0x2c, 0xa8, 0x65, 0x42, 0xfa,
0x4d, 0xf3, 0x27, 0xe8, 0x5d, 0xa8, 0x74, 0x9d, 0xc0, 0xc3, 0xbe, 0x4e, 0xff, 0xb0, 0xd5, 0xb1, 0x6d, 0x4a, 0x6b, 0x18, 0x3f, 0x45, 0xef, 0x40, 0xb9, 0x63, 0x0f, 0x5c, 0xec, 0x69, 0xf4, 0x0f,
0xac, 0x01, 0x27, 0x6d, 0x3a, 0x81, 0x17, 0x61, 0x18, 0x50, 0xff, 0x2f, 0x44, 0x19, 0x9e, 0x53, 0x5b, 0x1d, 0x4b, 0x2a, 0x70, 0xd2, 0xa6, 0x3d, 0x70, 0x43, 0x0c, 0x7d, 0xea, 0xff, 0xb9, 0x30,
0x37, 0x1b, 0x50, 0x8d, 0xed, 0xf0, 0xe9, 0x66, 0x8d, 0x6d, 0xe5, 0xc5, 0x66, 0x8d, 0x3e, 0x53, 0xc3, 0x0b, 0xea, 0x66, 0x1d, 0x2a, 0x91, 0x1d, 0x3e, 0xdd, 0xac, 0xb1, 0xad, 0xbc, 0xd8, 0xac,
0x9a, 0x4b, 0xfa, 0xd2, 0x93, 0xec, 0x99, 0xd2, 0xfc, 0x63, 0x47, 0xee, 0xd4, 0xd8, 0x33, 0x75, 0xd1, 0x67, 0x4a, 0x73, 0x48, 0x4f, 0x7a, 0x92, 0x3d, 0x53, 0x9a, 0x77, 0x6c, 0xcb, 0x9d, 0x1a,
0x79, 0x1f, 0xbf, 0x14, 0x28, 0x50, 0x59, 0xe3, 0x0d, 0xd5, 0x04, 0xd8, 0x34, 0x1c, 0xe3, 0xc0, 0x7b, 0xa6, 0x2e, 0xef, 0xe1, 0x57, 0x02, 0x05, 0x2a, 0xa9, 0xbc, 0xa1, 0x18, 0x00, 0x9b, 0xba,
0xea, 0x5b, 0xfe, 0x31, 0xba, 0x06, 0x35, 0xc3, 0x34, 0xf5, 0xae, 0xa4, 0x58, 0x58, 0x62, 0x73, 0xad, 0x1f, 0x98, 0x3d, 0xd3, 0x3b, 0x46, 0xd7, 0xa1, 0xaa, 0x1b, 0x86, 0xd6, 0x91, 0x14, 0x13,
0xcb, 0x86, 0x69, 0x6e, 0x46, 0xc8, 0xe8, 0x3b, 0xb0, 0x62, 0xba, 0xc4, 0x89, 0xf3, 0x72, 0xb0, 0x4b, 0x6c, 0x6e, 0x51, 0x37, 0x8c, 0xcd, 0x10, 0x19, 0xbd, 0x07, 0x4b, 0x86, 0x43, 0xec, 0x28,
0xae, 0x46, 0x5f, 0x44, 0x99, 0x69, 0x99, 0x74, 0x36, 0x3e, 0xb1, 0x49, 0x14, 0xe5, 0x21, 0x2c, 0x2f, 0x07, 0xeb, 0xaa, 0xf4, 0x45, 0x98, 0x99, 0x96, 0x49, 0x17, 0xa2, 0x13, 0x1b, 0x47, 0x51,
0x26, 0x7a, 0xcd, 0x01, 0x2b, 0x86, 0xd6, 0x6a, 0x31, 0x89, 0x04, 0xaa, 0x50, 0x48, 0xa1, 0x0a, 0x1e, 0xc1, 0x7c, 0xac, 0xd7, 0x0c, 0xb0, 0x22, 0xb0, 0x56, 0x8d, 0x48, 0xc4, 0x50, 0x85, 0x7c,
0x99, 0x38, 0x4d, 0xf1, 0xad, 0xe2, 0x34, 0xb3, 0x6f, 0x05, 0xa7, 0x99, 0x9b, 0x0e, 0xa7, 0xb9, 0x02, 0x55, 0x48, 0xc5, 0x69, 0x0a, 0x6f, 0x15, 0xa7, 0x99, 0x7e, 0x2b, 0x38, 0xcd, 0xcc, 0x64,
0xcc, 0xc0, 0x5a, 0x29, 0xcd, 0xb6, 0xc4, 0x3c, 0xd4, 0xaa, 0x21, 0x8f, 0x2d, 0x41, 0xdd, 0x04, 0x38, 0xcd, 0x15, 0x06, 0xd6, 0x4a, 0x69, 0xb6, 0x25, 0xe6, 0xa1, 0x56, 0xf1, 0x79, 0x2c, 0x09,
0x9e, 0xb3, 0x30, 0x0d, 0x9e, 0x53, 0xca, 0xc5, 0x73, 0x68, 0xd4, 0x38, 0x8e, 0xe1, 0x0e, 0x88, 0xea, 0xc6, 0xf0, 0x9c, 0xb9, 0x49, 0xf0, 0x9c, 0x62, 0x26, 0x9e, 0x43, 0xa3, 0xc6, 0xb6, 0x75,
0x2b, 0x01, 0x9b, 0x7a, 0x99, 0x99, 0xb0, 0x2c, 0xe9, 0x02, 0xac, 0xc9, 0x85, 0x76, 0x20, 0x0f, 0xa7, 0x4f, 0x1c, 0x09, 0xd8, 0xd4, 0x4a, 0xcc, 0x84, 0x45, 0x49, 0x17, 0x60, 0x4d, 0x26, 0xb4,
0xda, 0x41, 0xe7, 0x61, 0xd1, 0x26, 0xba, 0x8d, 0x5f, 0xe9, 0x74, 0x2e, 0xbd, 0x7a, 0x85, 0x4f, 0x03, 0x59, 0xd0, 0x0e, 0xba, 0x08, 0xf3, 0x16, 0xd1, 0x2c, 0xfc, 0x5a, 0xa3, 0x73, 0xe9, 0xd6,
0xac, 0x4d, 0xda, 0xf8, 0xd5, 0x2e, 0xa5, 0xa8, 0x7f, 0xa7, 0xc0, 0x6a, 0x3c, 0xb8, 0xc4, 0x46, 0xca, 0x7c, 0x62, 0x2d, 0xd2, 0xc2, 0xaf, 0x77, 0x29, 0x45, 0xf9, 0xbb, 0x1c, 0x2c, 0x47, 0x83,
0xfd, 0x09, 0x94, 0x5d, 0x99, 0x3f, 0x44, 0x40, 0x5d, 0xcb, 0x29, 0x4e, 0xd3, 0x09, 0x47, 0x1b, 0x4b, 0x6c, 0xd4, 0x9f, 0x42, 0xc9, 0x91, 0xf9, 0x43, 0x04, 0xd4, 0xf5, 0x8c, 0xe2, 0x34, 0x99,
0xca, 0xa2, 0x1f, 0xe6, 0xe2, 0x43, 0x37, 0xc7, 0xe9, 0x1b, 0x87, 0x10, 0xa9, 0x5d, 0x38, 0xf5, 0x70, 0xd4, 0x40, 0x16, 0xfd, 0x28, 0x13, 0x1f, 0xba, 0x35, 0x4a, 0xdf, 0x28, 0x84, 0x48, 0xe9,
0xa9, 0x65, 0x9b, 0xe4, 0x95, 0x97, 0x34, 0xbf, 0x95, 0x36, 0xff, 0x3b, 0xe9, 0xee, 0x92, 0xc2, 0xc0, 0x99, 0x4f, 0x4d, 0xcb, 0x20, 0xaf, 0xdd, 0xb8, 0xf9, 0xcd, 0xa4, 0xf9, 0xef, 0x25, 0xbb,
0x59, 0x03, 0x50, 0xff, 0x4a, 0x81, 0xd3, 0xb9, 0x8c, 0x89, 0xf4, 0xa8, 0x24, 0xd3, 0xa3, 0x48, 0x8b, 0x0b, 0xa7, 0x0d, 0x40, 0xf9, 0xab, 0x1c, 0x9c, 0xcd, 0x64, 0x8c, 0xa5, 0xc7, 0x5c, 0x3c,
0xad, 0x5d, 0x12, 0xd8, 0x7e, 0x24, 0xb5, 0x6e, 0x32, 0x14, 0x9b, 0xe7, 0x30, 0x7d, 0x60, 0xbc, 0x3d, 0x8a, 0xd4, 0xda, 0x21, 0x03, 0xcb, 0x0b, 0xa5, 0xd6, 0x4d, 0x86, 0x62, 0xf3, 0x1c, 0xa6,
0xb6, 0x06, 0xc1, 0x40, 0xe4, 0x56, 0xaa, 0xee, 0x39, 0xa7, 0xbc, 0x41, 0x72, 0x55, 0x9b, 0xb0, 0xf5, 0xf5, 0x37, 0x66, 0x7f, 0xd0, 0x17, 0xb9, 0x95, 0xaa, 0x7b, 0xc1, 0x29, 0x27, 0x48, 0xae,
0x12, 0x5a, 0x39, 0x12, 0xa7, 0x8a, 0xe0, 0x4e, 0x85, 0x38, 0xee, 0x64, 0xc3, 0xfc, 0x16, 0x7e, 0x4a, 0x03, 0x96, 0x7c, 0x2b, 0x87, 0xe2, 0x54, 0x21, 0xdc, 0x29, 0x1f, 0xc5, 0x9d, 0x2c, 0x98,
0x69, 0x75, 0xf1, 0x5b, 0x81, 0xd9, 0xcf, 0x43, 0xc5, 0xc1, 0xee, 0xc0, 0xf2, 0xbc, 0x30, 0x69, 0xdd, 0xc2, 0xaf, 0xcc, 0x0e, 0x7e, 0x2b, 0x30, 0xfb, 0x45, 0x28, 0xdb, 0xd8, 0xe9, 0x9b, 0xae,
0x94, 0xb5, 0x28, 0x49, 0xfd, 0xcf, 0x79, 0x58, 0x4e, 0xce, 0xdf, 0x83, 0x14, 0xcc, 0x75, 0x31, 0xeb, 0x27, 0x8d, 0x92, 0x1a, 0x26, 0x29, 0xff, 0x39, 0x0b, 0x8b, 0xf1, 0xf9, 0x7b, 0x98, 0x80,
0x23, 0x9d, 0x25, 0x07, 0x1a, 0xa9, 0x8c, 0x6e, 0xc9, 0x85, 0xb5, 0x90, 0xb7, 0x29, 0x0d, 0x17, 0xb9, 0x2e, 0xa5, 0xa4, 0xb3, 0xf8, 0x40, 0x43, 0x95, 0xd1, 0x6d, 0xb9, 0xb0, 0xe6, 0xb3, 0x36,
0x61, 0xb1, 0xea, 0x52, 0x8f, 0x74, 0xc9, 0x60, 0x60, 0xd8, 0xa6, 0x3c, 0x1d, 0x11, 0x4d, 0xea, 0xa5, 0xfe, 0x22, 0x2c, 0x56, 0x5d, 0xea, 0x91, 0x0e, 0xe9, 0xf7, 0x75, 0xcb, 0x90, 0xa7, 0x23,
0x3f, 0xc3, 0xed, 0x51, 0xb7, 0x53, 0x32, 0x7b, 0xa6, 0x93, 0x47, 0x77, 0x70, 0x96, 0xcd, 0xe0, 0xa2, 0x49, 0xfd, 0xa7, 0x3b, 0x5d, 0xea, 0x76, 0x4a, 0x66, 0xcf, 0x74, 0xf2, 0xe8, 0x0e, 0xce,
0x32, 0x96, 0x78, 0xca, 0x1a, 0x08, 0xd2, 0x96, 0xe5, 0xa2, 0x75, 0x98, 0xc5, 0xf6, 0x4b, 0x59, 0xb4, 0x18, 0x5c, 0xc6, 0x12, 0x4f, 0x49, 0x05, 0x41, 0xda, 0x32, 0x1d, 0xb4, 0x0e, 0xd3, 0xd8,
0xfa, 0x64, 0x1c, 0x9f, 0xc8, 0x25, 0x5e, 0x63, 0x7c, 0xe8, 0x26, 0xcc, 0x0f, 0x68, 0x58, 0xc8, 0x7a, 0x25, 0x4b, 0x9f, 0x94, 0xe3, 0x13, 0xb9, 0xc4, 0xab, 0x8c, 0x0f, 0xdd, 0x82, 0xd9, 0x3e,
0xbd, 0xdc, 0x5a, 0xce, 0x29, 0x82, 0x26, 0xd8, 0xd0, 0x06, 0x2c, 0x98, 0x6c, 0x9e, 0xe4, 0x86, 0x0d, 0x0b, 0xb9, 0x97, 0x5b, 0xc9, 0x38, 0x45, 0x50, 0x05, 0x1b, 0xda, 0x80, 0x39, 0x83, 0xcd,
0xad, 0x9e, 0x01, 0xc2, 0x31, 0x06, 0x4d, 0x32, 0xa2, 0xed, 0xb0, 0xb0, 0x2b, 0xe7, 0x55, 0x64, 0x93, 0xdc, 0xb0, 0xd5, 0x52, 0x40, 0x38, 0xc6, 0xa0, 0x4a, 0x46, 0xb4, 0xed, 0x17, 0x76, 0xa5,
0x89, 0xa9, 0xc8, 0xac, 0xee, 0xf6, 0xe2, 0xd5, 0x1d, 0x30, 0x5d, 0x1b, 0xe3, 0x75, 0x8d, 0x46, 0xac, 0x8a, 0x2c, 0x36, 0x15, 0xa9, 0xd5, 0xdd, 0x5e, 0xb4, 0xba, 0x03, 0xa6, 0x6b, 0x63, 0xb4,
0xce, 0x4e, 0x43, 0xa9, 0x4f, 0x7a, 0x3c, 0x8c, 0x2a, 0xfc, 0xe0, 0xad, 0x4f, 0x7a, 0x2c, 0x8a, 0xae, 0xe1, 0xc8, 0xd9, 0x59, 0x28, 0xf6, 0x48, 0x97, 0x87, 0x51, 0x99, 0x1f, 0xbc, 0xf5, 0x48,
0x56, 0x69, 0xa1, 0x6b, 0x5a, 0x76, 0x7d, 0x91, 0xa5, 0x30, 0xde, 0xa0, 0x1f, 0x1f, 0x7b, 0xd0, 0x97, 0x45, 0xd1, 0x32, 0x2d, 0x74, 0x0d, 0xd3, 0xaa, 0xcd, 0xb3, 0x14, 0xc6, 0x1b, 0xf4, 0xe3,
0x89, 0xdd, 0xc5, 0xf5, 0x2a, 0x7b, 0x55, 0x66, 0x94, 0x1d, 0xbb, 0xcb, 0x4a, 0x27, 0xdf, 0x3f, 0x63, 0x0f, 0x1a, 0xb1, 0x3a, 0xb8, 0x56, 0x61, 0xaf, 0x4a, 0x8c, 0xb2, 0x63, 0x75, 0x58, 0xe9,
0xae, 0x2f, 0x31, 0x3a, 0x7d, 0xa4, 0x7b, 0x18, 0xbe, 0xdd, 0x5e, 0xce, 0xdb, 0xc3, 0x64, 0x25, 0xe4, 0x79, 0xc7, 0xb5, 0x05, 0x46, 0xa7, 0x8f, 0x74, 0x0f, 0xc3, 0xb7, 0xdb, 0x8b, 0x59, 0x7b,
0x43, 0xb9, 0xdb, 0x7e, 0x04, 0x0b, 0xaf, 0x78, 0x22, 0xa8, 0xd7, 0x98, 0xfc, 0xd5, 0xf1, 0x29, 0x98, 0xb4, 0x64, 0x28, 0x77, 0xdb, 0x8f, 0x61, 0xee, 0x35, 0x4f, 0x04, 0xb5, 0x2a, 0x93, 0xbf,
0x45, 0x68, 0x90, 0x82, 0xdf, 0x64, 0x19, 0xfb, 0x0b, 0x05, 0x4e, 0x6d, 0xb2, 0x12, 0x3f, 0x92, 0x36, 0x3a, 0xa5, 0x08, 0x0d, 0x52, 0xf0, 0xdb, 0x2c, 0x63, 0x7f, 0x99, 0x83, 0x33, 0x9b, 0xac,
0xc7, 0xa6, 0x41, 0xa5, 0xee, 0x84, 0x38, 0x60, 0x2e, 0x84, 0x94, 0x1c, 0xb7, 0x10, 0x40, 0x2d, 0xc4, 0x0f, 0xe5, 0xb1, 0x49, 0x50, 0xa9, 0xbb, 0x3e, 0x0e, 0x98, 0x09, 0x21, 0xc5, 0xc7, 0x2d,
0x58, 0x92, 0xca, 0x85, 0x8a, 0xe2, 0xc4, 0x50, 0x62, 0xd5, 0x8b, 0x36, 0xd5, 0x8f, 0x61, 0x2d, 0x04, 0x50, 0x13, 0x16, 0xa4, 0x72, 0xa1, 0xa2, 0x30, 0x36, 0x94, 0x58, 0x71, 0xc3, 0x4d, 0xe5,
0x35, 0x0a, 0x51, 0x8e, 0x5f, 0x80, 0xc5, 0x61, 0xbe, 0x0a, 0x07, 0x51, 0x09, 0x69, 0x2d, 0x53, 0x63, 0x58, 0x49, 0x8c, 0x42, 0x94, 0xe3, 0x6b, 0x30, 0x1f, 0xe4, 0x2b, 0x7f, 0x10, 0x65, 0x9f,
0xbd, 0x0b, 0x27, 0x3b, 0xbe, 0xe1, 0xfa, 0x29, 0x17, 0x4c, 0x20, 0xcb, 0xd0, 0xc4, 0xb8, 0xac, 0xd6, 0x34, 0x94, 0x7b, 0x70, 0xba, 0xed, 0xe9, 0x8e, 0x97, 0x70, 0xc1, 0x18, 0xb2, 0x0c, 0x4d,
0x00, 0xfc, 0x3a, 0xb0, 0xda, 0xf1, 0x89, 0xf3, 0x06, 0x4a, 0x69, 0xd6, 0xa1, 0xe3, 0x27, 0x81, 0x8c, 0xca, 0x0a, 0xc0, 0xaf, 0x0d, 0xcb, 0x6d, 0x8f, 0xd8, 0x27, 0x50, 0x4a, 0xb3, 0x0e, 0x1d,
0x5c, 0x1f, 0x64, 0x53, 0x5d, 0xe3, 0xd8, 0x67, 0xba, 0xb7, 0x7b, 0x70, 0x8a, 0x43, 0x8f, 0x6f, 0x3f, 0x19, 0xc8, 0xf5, 0x41, 0x36, 0x95, 0x15, 0x8e, 0x7d, 0x26, 0x7b, 0xbb, 0x0f, 0x67, 0x38,
0x32, 0x88, 0xd3, 0x12, 0xf8, 0x4c, 0xeb, 0x7d, 0x0e, 0x27, 0x86, 0x6b, 0xef, 0x10, 0x56, 0xb8, 0xf4, 0x78, 0x92, 0x41, 0x9c, 0x95, 0xc0, 0x67, 0x52, 0xef, 0x0b, 0x38, 0x15, 0xac, 0xbd, 0x01,
0x1d, 0x87, 0x15, 0xce, 0x8f, 0x98, 0xf5, 0x18, 0xaa, 0xf0, 0x17, 0x85, 0x48, 0x5e, 0xcf, 0x01, 0xac, 0x70, 0x27, 0x0a, 0x2b, 0x5c, 0x1c, 0x32, 0xeb, 0x11, 0x54, 0xe1, 0x2f, 0xf2, 0xa1, 0xbc,
0x15, 0xee, 0xc5, 0x41, 0x85, 0x4b, 0xe3, 0x74, 0xc7, 0x30, 0x85, 0x74, 0xd4, 0x16, 0x33, 0xa2, 0x9e, 0x01, 0x2a, 0xdc, 0x8f, 0x82, 0x0a, 0x97, 0x47, 0xe9, 0x8e, 0x60, 0x0a, 0xc9, 0xa8, 0x2d,
0xf6, 0x8b, 0x14, 0xf2, 0x30, 0x9b, 0x07, 0xdd, 0x24, 0xac, 0xfd, 0xad, 0x00, 0x0f, 0x1a, 0x07, 0xa4, 0x44, 0xed, 0x17, 0x09, 0xe4, 0x61, 0x3a, 0x0b, 0xba, 0x89, 0x59, 0xfb, 0x8d, 0x00, 0x0f,
0x1e, 0xc2, 0xae, 0x43, 0xa4, 0xf8, 0x4e, 0x02, 0x78, 0xb8, 0x30, 0xd6, 0xde, 0x10, 0x77, 0xf8, 0x2a, 0x07, 0x1e, 0xfc, 0xae, 0x7d, 0xa4, 0xf8, 0x6e, 0x0c, 0x78, 0x58, 0x1b, 0x69, 0xaf, 0x8f,
0x9b, 0x59, 0x28, 0x87, 0xef, 0x52, 0x3e, 0x4f, 0xbb, 0xad, 0x90, 0xe1, 0xb6, 0xe8, 0x0a, 0x5c, 0x3b, 0xfc, 0xcd, 0x34, 0x94, 0xfc, 0x77, 0x09, 0x9f, 0x27, 0xdd, 0x96, 0x4f, 0x71, 0x5b, 0x78,
0xfc, 0x5a, 0x2b, 0xf0, 0xec, 0xc4, 0x2b, 0xf0, 0x19, 0x28, 0xb3, 0x07, 0xdd, 0xc5, 0x87, 0x62, 0x05, 0x2e, 0x7c, 0xad, 0x15, 0x78, 0x7a, 0xec, 0x15, 0xf8, 0x1c, 0x94, 0xd8, 0x83, 0xe6, 0xe0,
0x45, 0x2d, 0x31, 0x82, 0x86, 0x0f, 0x87, 0x61, 0x38, 0x3f, 0x55, 0x18, 0x26, 0xa0, 0x8e, 0x85, 0x43, 0xb1, 0xa2, 0x16, 0x19, 0x41, 0xc5, 0x87, 0x41, 0x18, 0xce, 0x4e, 0x14, 0x86, 0x31, 0xa8,
0x24, 0xd4, 0xf1, 0x20, 0x5c, 0x11, 0xf9, 0x22, 0x7a, 0x65, 0x84, 0xde, 0xcc, 0xb5, 0xb0, 0x1d, 0x63, 0x2e, 0x0e, 0x75, 0x3c, 0xf4, 0x57, 0x44, 0xbe, 0x88, 0x5e, 0x1d, 0xa2, 0x37, 0x75, 0x2d,
0x5f, 0x0b, 0xf9, 0xba, 0xfa, 0xfe, 0x28, 0x2d, 0xdf, 0x5a, 0xa0, 0x63, 0x9f, 0x03, 0x1d, 0xd1, 0x6c, 0x45, 0xd7, 0x42, 0xbe, 0xae, 0xbe, 0x3f, 0x4c, 0xcb, 0x77, 0x16, 0xe8, 0xd8, 0xe7, 0x40,
0x58, 0x14, 0x99, 0xf5, 0x1e, 0x40, 0x98, 0x44, 0x24, 0xda, 0x71, 0x66, 0xc4, 0x18, 0xb5, 0x08, 0x47, 0x38, 0x16, 0x45, 0x66, 0xbd, 0x0f, 0xe0, 0x27, 0x11, 0x89, 0x76, 0x9c, 0x1b, 0x32, 0x46,
0x3b, 0x55, 0x1b, 0x9b, 0x9a, 0xe1, 0x69, 0xc8, 0x64, 0xf9, 0x31, 0xe7, 0x28, 0xe4, 0x7f, 0xe7, 0x35, 0xc4, 0x4e, 0xd5, 0x46, 0xa6, 0x26, 0x38, 0x0d, 0x19, 0x2f, 0x3f, 0x66, 0x1c, 0x85, 0xfc,
0x22, 0xf9, 0x25, 0xe7, 0xf8, 0xe0, 0x41, 0x0a, 0x62, 0x9b, 0x32, 0x8a, 0x6f, 0xc7, 0x11, 0xb6, 0xef, 0x4c, 0x28, 0xbf, 0x64, 0x1c, 0x1f, 0x3c, 0x4c, 0x40, 0x6c, 0x13, 0x46, 0xf1, 0x9d, 0x28,
0x37, 0x8c, 0xba, 0x14, 0xc0, 0xc6, 0x2a, 0x17, 0xc3, 0x15, 0xaf, 0x39, 0x00, 0x52, 0x16, 0x94, 0xc2, 0x76, 0xc2, 0xa8, 0x4b, 0x00, 0x6c, 0xac, 0x72, 0xd1, 0x1d, 0xf1, 0x9a, 0x03, 0x20, 0x25,
0x26, 0xdb, 0x19, 0x1c, 0x5a, 0xb6, 0xe5, 0x1d, 0xf1, 0xf7, 0xf3, 0x7c, 0x67, 0x20, 0x49, 0x4d, 0x41, 0x69, 0xb0, 0x9d, 0xc1, 0xa1, 0x69, 0x99, 0xee, 0x11, 0x7f, 0x3f, 0xcb, 0x77, 0x06, 0x92,
0x76, 0x81, 0x06, 0xbf, 0xb6, 0x7c, 0xbd, 0x4b, 0x4c, 0xcc, 0x62, 0x7a, 0x4e, 0x2b, 0x51, 0xc2, 0xd4, 0x60, 0x17, 0x68, 0xf0, 0x1b, 0xd3, 0xd3, 0x3a, 0xc4, 0xc0, 0x2c, 0xa6, 0x67, 0xd4, 0x22,
0x26, 0x31, 0xf1, 0xf0, 0xcb, 0x2b, 0xbd, 0xd9, 0x97, 0x57, 0x4e, 0x7c, 0x79, 0xa7, 0x60, 0xde, 0x25, 0x6c, 0x12, 0x03, 0x07, 0x5f, 0x5e, 0xf1, 0x64, 0x5f, 0x5e, 0x29, 0xf6, 0xe5, 0x9d, 0x81,
0xc5, 0x86, 0x47, 0x6c, 0xb1, 0xd5, 0x14, 0x2d, 0x3a, 0x35, 0x03, 0xec, 0x79, 0xb4, 0x27, 0x51, 0x59, 0x07, 0xeb, 0x2e, 0xb1, 0xc4, 0x56, 0x53, 0xb4, 0xe8, 0xd4, 0xf4, 0xb1, 0xeb, 0xd2, 0x9e,
0xae, 0x89, 0x66, 0xa4, 0xcc, 0x5c, 0x1c, 0x5b, 0x66, 0x8e, 0x38, 0x96, 0x48, 0x94, 0x99, 0xd5, 0x44, 0xb9, 0x26, 0x9a, 0xa1, 0x32, 0x73, 0x7e, 0x64, 0x99, 0x39, 0xe4, 0x58, 0x22, 0x56, 0x66,
0xb1, 0x65, 0xe6, 0x24, 0xa7, 0x12, 0x91, 0x42, 0x7b, 0x69, 0xb2, 0x42, 0x3b, 0x5a, 0x97, 0x2e, 0x56, 0x46, 0x96, 0x99, 0xe3, 0x9c, 0x4a, 0x84, 0x0a, 0xed, 0x85, 0xf1, 0x0a, 0xed, 0x70, 0x5d,
0xc7, 0xea, 0xd2, 0x6f, 0xf2, 0x63, 0xfd, 0x95, 0x02, 0x6b, 0xa9, 0xcf, 0x4a, 0x7c, 0xae, 0x77, 0xba, 0x18, 0xa9, 0x4b, 0xbf, 0xcd, 0x8f, 0xf5, 0xd7, 0x39, 0x58, 0x49, 0x7c, 0x56, 0xe2, 0x73,
0x12, 0x07, 0x1c, 0x17, 0xc6, 0xfa, 0x2c, 0x3c, 0xdf, 0x78, 0x12, 0x3b, 0xdf, 0xf8, 0x70, 0xbc, 0xbd, 0x1b, 0x3b, 0xe0, 0x58, 0x1b, 0xe9, 0x33, 0xff, 0x7c, 0xe3, 0x69, 0xe4, 0x7c, 0xe3, 0xc3,
0xe0, 0x5b, 0x3f, 0xde, 0xf8, 0x23, 0x05, 0xde, 0xdd, 0x77, 0xcc, 0x44, 0x85, 0x27, 0x36, 0xe6, 0xd1, 0x82, 0x6f, 0xfd, 0x78, 0xe3, 0x8f, 0x72, 0xf0, 0xce, 0xbe, 0x6d, 0xc4, 0x2a, 0x3c, 0xb1,
0x93, 0x27, 0x8e, 0x07, 0xb2, 0xd6, 0x2f, 0x4c, 0x8b, 0x5e, 0x70, 0x39, 0x55, 0x85, 0xf3, 0xf9, 0x31, 0x1f, 0x3f, 0x71, 0x3c, 0x94, 0xb5, 0x7e, 0x7e, 0x52, 0xf4, 0x82, 0xcb, 0x29, 0x0a, 0x5c,
0x66, 0x88, 0x92, 0xe9, 0xc7, 0xb0, 0xbc, 0xfd, 0x1a, 0x77, 0x3b, 0xc7, 0x76, 0x77, 0x0a, 0xd3, 0xcc, 0x36, 0x43, 0x94, 0x4c, 0x3f, 0x81, 0xc5, 0xed, 0x37, 0xb8, 0xd3, 0x3e, 0xb6, 0x3a, 0x13,
0x6a, 0x50, 0xec, 0x0e, 0x4c, 0x81, 0xf8, 0xd1, 0xc7, 0x68, 0x15, 0x58, 0x8c, 0x57, 0x81, 0x3a, 0x98, 0x56, 0x85, 0x42, 0xa7, 0x6f, 0x08, 0xc4, 0x8f, 0x3e, 0x86, 0xab, 0xc0, 0x42, 0xb4, 0x0a,
0xd4, 0x86, 0x3d, 0x88, 0xe9, 0x3d, 0x45, 0xa7, 0xd7, 0xa4, 0xcc, 0x54, 0xf9, 0xa2, 0x26, 0x5a, 0xd4, 0xa0, 0x1a, 0xf4, 0x20, 0xa6, 0xf7, 0x0c, 0x9d, 0x5e, 0x83, 0x32, 0x53, 0xe5, 0xf3, 0xaa,
0x82, 0x8e, 0x5d, 0x97, 0x8d, 0x99, 0xd3, 0xb1, 0xeb, 0xc6, 0xb3, 0x45, 0x31, 0x9e, 0x2d, 0xd4, 0x68, 0x09, 0x3a, 0x76, 0x1c, 0x36, 0x66, 0x4e, 0xc7, 0x8e, 0x13, 0xcd, 0x16, 0x85, 0x68, 0xb6,
0x3f, 0x53, 0xa0, 0x42, 0x7b, 0xf8, 0x5a, 0xf6, 0x8b, 0xad, 0x56, 0x71, 0xb8, 0xd5, 0x0a, 0x77, 0x50, 0xfe, 0x2c, 0x07, 0x65, 0xda, 0xc3, 0xd7, 0xb2, 0x5f, 0x6c, 0xb5, 0x0a, 0xc1, 0x56, 0xcb,
0x6c, 0xb3, 0xd1, 0x1d, 0xdb, 0xd0, 0xf2, 0x39, 0x46, 0x4e, 0x5b, 0x3e, 0x1f, 0xd2, 0xb1, 0xeb, 0xdf, 0xb1, 0x4d, 0x87, 0x77, 0x6c, 0x81, 0xe5, 0x33, 0x8c, 0x9c, 0xb4, 0x7c, 0xd6, 0xa7, 0x63,
0xaa, 0xe7, 0x61, 0x91, 0xdb, 0x26, 0x46, 0x5e, 0x83, 0x62, 0xe0, 0xf6, 0x65, 0x1c, 0x05, 0x6e, 0xc7, 0x51, 0x2e, 0xc2, 0x3c, 0xb7, 0x4d, 0x8c, 0xbc, 0x0a, 0x85, 0x81, 0xd3, 0x93, 0x71, 0x34,
0x5f, 0xfd, 0x63, 0x05, 0xaa, 0x4d, 0xdf, 0x37, 0xba, 0x47, 0x53, 0x0c, 0x20, 0x34, 0xae, 0x10, 0x70, 0x7a, 0xca, 0x1f, 0xe7, 0xa0, 0xd2, 0xf0, 0x3c, 0xbd, 0x73, 0x34, 0xc1, 0x00, 0x7c, 0xe3,
0x35, 0x2e, 0x3d, 0x88, 0xa1, 0xb9, 0xb3, 0x39, 0xe6, 0xce, 0xc5, 0xcc, 0x55, 0x61, 0x49, 0xda, 0xf2, 0x61, 0xe3, 0x92, 0x83, 0x08, 0xcc, 0x9d, 0xce, 0x30, 0x77, 0x26, 0x62, 0xae, 0x02, 0x0b,
0x92, 0x6b, 0x70, 0x1b, 0xd0, 0x2e, 0x71, 0xfd, 0xc7, 0xc4, 0x7d, 0x65, 0xb8, 0xe6, 0x74, 0x3b, 0xd2, 0x96, 0x4c, 0x83, 0x5b, 0x80, 0x76, 0x89, 0xe3, 0x3d, 0x21, 0xce, 0x6b, 0xdd, 0x31, 0x26,
0x30, 0x04, 0xb3, 0xe2, 0x52, 0x65, 0xf1, 0xea, 0x9c, 0xc6, 0x9e, 0xd5, 0x2b, 0x70, 0x22, 0xa6, 0xdb, 0x81, 0x21, 0x98, 0x16, 0x97, 0x2a, 0x0b, 0xd7, 0x66, 0x54, 0xf6, 0xac, 0x5c, 0x85, 0x53,
0x2f, 0xb7, 0xe3, 0x87, 0x50, 0x61, 0x79, 0x5f, 0x94, 0xe2, 0xb7, 0xa2, 0x47, 0x0f, 0x13, 0xad, 0x11, 0x7d, 0x99, 0x1d, 0x3f, 0x82, 0x32, 0xcb, 0xfb, 0xa2, 0x14, 0xbf, 0x1d, 0x3e, 0x7a, 0x18,
0x12, 0xea, 0xef, 0xc2, 0x0a, 0xad, 0x0f, 0x18, 0x3d, 0xfc, 0x14, 0xbf, 0x97, 0xa8, 0x53, 0xcf, 0x6b, 0x95, 0x50, 0x7e, 0x17, 0x96, 0x68, 0x7d, 0xc0, 0xe8, 0xfe, 0xa7, 0xf8, 0xfd, 0x58, 0x9d,
0xe6, 0x28, 0x4a, 0xd4, 0xa8, 0x7f, 0xab, 0xc0, 0x1c, 0xa3, 0xa7, 0xd6, 0xec, 0x33, 0x50, 0x76, 0x7a, 0x21, 0x43, 0x51, 0xac, 0x46, 0xfd, 0xdb, 0x1c, 0xcc, 0x30, 0x7a, 0x62, 0xcd, 0x3e, 0x07,
0xb1, 0x43, 0x74, 0xdf, 0xe8, 0x85, 0x57, 0x58, 0x29, 0x61, 0xcf, 0xe8, 0x79, 0xec, 0x06, 0x2e, 0x25, 0x07, 0xdb, 0x44, 0xf3, 0xf4, 0xae, 0x7f, 0x85, 0x95, 0x12, 0xf6, 0xf4, 0xae, 0xcb, 0x6e,
0x7d, 0x69, 0x5a, 0x3d, 0xec, 0xf9, 0xf2, 0x1e, 0x6b, 0x85, 0xd2, 0xb6, 0x38, 0x89, 0x3a, 0xc9, 0xe0, 0xd2, 0x97, 0x86, 0xd9, 0xc5, 0xae, 0x27, 0xef, 0xb1, 0x96, 0x29, 0x6d, 0x8b, 0x93, 0xa8,
0xb3, 0x7e, 0x9f, 0xd7, 0x9d, 0xb3, 0x1a, 0x7b, 0x46, 0xeb, 0xfc, 0x56, 0xd6, 0x24, 0xf0, 0x30, 0x93, 0x5c, 0xf3, 0xf7, 0x79, 0xdd, 0x39, 0xad, 0xb2, 0x67, 0xb4, 0xce, 0x6f, 0x65, 0x8d, 0x03,
0xbb, 0xb3, 0xd5, 0x80, 0x52, 0x02, 0x11, 0x0e, 0xdb, 0xea, 0x36, 0xa0, 0xa8, 0x17, 0x84, 0xbf, 0x0f, 0xb3, 0x3b, 0x5b, 0x75, 0x28, 0xc6, 0x10, 0x61, 0xbf, 0xad, 0x6c, 0x03, 0x0a, 0x7b, 0x41,
0x6f, 0xc2, 0x3c, 0x73, 0x92, 0xac, 0x8e, 0xd6, 0x72, 0xdc, 0xa0, 0x09, 0x36, 0xd5, 0x00, 0xc4, 0xf8, 0xfb, 0x16, 0xcc, 0x32, 0x27, 0xc9, 0xea, 0x68, 0x25, 0xc3, 0x0d, 0xaa, 0x60, 0x53, 0x74,
0x1d, 0x1c, 0xab, 0x88, 0xa6, 0x9f, 0x95, 0x11, 0x15, 0xd2, 0x3f, 0x28, 0x70, 0x22, 0xd6, 0x87, 0x40, 0xdc, 0xc1, 0x91, 0x8a, 0x68, 0xf2, 0x59, 0x19, 0x52, 0x21, 0xfd, 0x43, 0x0e, 0x4e, 0x45,
0xb0, 0xf5, 0x46, 0xbc, 0x93, 0x5c, 0x53, 0x45, 0x07, 0x9b, 0xb1, 0x25, 0xe1, 0x66, 0x9e, 0x49, 0xfa, 0x10, 0xb6, 0xde, 0x8c, 0x76, 0x92, 0x69, 0xaa, 0xe8, 0x60, 0x33, 0xb2, 0x24, 0xdc, 0xca,
0xbf, 0xa1, 0xe5, 0xe0, 0x1f, 0x15, 0x80, 0x66, 0xe0, 0x1f, 0x09, 0x64, 0x30, 0x3a, 0x33, 0x4a, 0x32, 0xe9, 0xb7, 0xb4, 0x1c, 0xfc, 0x63, 0x0e, 0xa0, 0x31, 0xf0, 0x8e, 0x04, 0x32, 0x18, 0x9e,
0x7c, 0x66, 0xe8, 0x3b, 0xc7, 0xf0, 0xbc, 0x57, 0xc4, 0x95, 0x7b, 0x9a, 0xb0, 0xcd, 0x30, 0xbc, 0x99, 0x5c, 0x74, 0x66, 0xe8, 0x3b, 0x5b, 0x77, 0xdd, 0xd7, 0xc4, 0x91, 0x7b, 0x1a, 0xbf, 0xcd,
0xc0, 0x3f, 0x92, 0xc7, 0x3a, 0xf4, 0x19, 0x5d, 0x82, 0x25, 0x7e, 0x6d, 0x5a, 0x37, 0x4c, 0xd3, 0x30, 0xbc, 0x81, 0x77, 0x24, 0x8f, 0x75, 0xe8, 0x33, 0xba, 0x0c, 0x0b, 0xfc, 0xda, 0xb4, 0xa6,
0xc5, 0x9e, 0x27, 0xce, 0x77, 0xaa, 0x9c, 0xda, 0xe4, 0x44, 0xca, 0x66, 0x99, 0xd8, 0xf6, 0x2d, 0x1b, 0x86, 0x83, 0x5d, 0x57, 0x9c, 0xef, 0x54, 0x38, 0xb5, 0xc1, 0x89, 0x94, 0xcd, 0x34, 0xb0,
0xff, 0x58, 0xf7, 0xc9, 0x0b, 0x6c, 0x8b, 0xbd, 0x49, 0x55, 0x52, 0xf7, 0x28, 0x91, 0xb2, 0xb9, 0xe5, 0x99, 0xde, 0xb1, 0xe6, 0x91, 0x97, 0xd8, 0x12, 0x7b, 0x93, 0x8a, 0xa4, 0xee, 0x51, 0x22,
0xb8, 0x67, 0x79, 0xbe, 0x2b, 0xd9, 0xe4, 0x59, 0x82, 0xa0, 0x32, 0x36, 0x3a, 0x29, 0xb5, 0xdd, 0x65, 0x73, 0x70, 0xd7, 0x74, 0x3d, 0x47, 0xb2, 0xc9, 0xb3, 0x04, 0x41, 0x65, 0x6c, 0x74, 0x52,
0xa0, 0xdf, 0xe7, 0x2e, 0x7e, 0xf3, 0x69, 0xff, 0x40, 0x0c, 0xa8, 0x90, 0x17, 0xd3, 0x43, 0xa7, 0xaa, 0xbb, 0x83, 0x5e, 0x8f, 0xbb, 0xf8, 0xe4, 0xd3, 0xfe, 0x81, 0x18, 0x50, 0x3e, 0x2b, 0xa6,
0x89, 0xe1, 0xbe, 0x45, 0x10, 0xe6, 0x03, 0x58, 0x89, 0x8c, 0x41, 0x84, 0x55, 0xac, 0x88, 0x54, 0x03, 0xa7, 0x89, 0xe1, 0xbe, 0x45, 0x10, 0xe6, 0x03, 0x58, 0x0a, 0x8d, 0x41, 0x84, 0x55, 0xa4,
0xe2, 0x45, 0xa4, 0xfa, 0x04, 0x10, 0xc7, 0x1d, 0xbe, 0xe6, 0xb8, 0xd5, 0x93, 0x70, 0x22, 0xa6, 0x88, 0xcc, 0x45, 0x8b, 0x48, 0xe5, 0x29, 0x20, 0x8e, 0x3b, 0x7c, 0xcd, 0x71, 0x2b, 0xa7, 0xe1,
0x48, 0xac, 0xc4, 0xd7, 0xa1, 0x2a, 0xee, 0xd8, 0x88, 0x40, 0x39, 0x0d, 0x25, 0x9a, 0x51, 0xbb, 0x54, 0x44, 0x91, 0x58, 0x89, 0x6f, 0x40, 0x45, 0xdc, 0xb1, 0x11, 0x81, 0x72, 0x16, 0x8a, 0x34,
0x96, 0x29, 0xcf, 0xfc, 0x16, 0x1c, 0x62, 0x6e, 0x5a, 0xa6, 0xab, 0x7e, 0x0a, 0x55, 0x8d, 0xf7, 0xa3, 0x76, 0x4c, 0x43, 0x9e, 0xf9, 0xcd, 0xd9, 0xc4, 0xd8, 0x34, 0x0d, 0x47, 0xf9, 0x14, 0x2a,
0x23, 0x78, 0x1f, 0xc3, 0x92, 0xb8, 0x91, 0xa3, 0xc7, 0x6e, 0xba, 0x65, 0xdd, 0x84, 0x8e, 0x76, 0x2a, 0xef, 0x47, 0xf0, 0x3e, 0x81, 0x05, 0x71, 0x23, 0x47, 0x8b, 0xdc, 0x74, 0x4b, 0xbb, 0x09,
0xa2, 0x55, 0xed, 0x68, 0x53, 0x35, 0xa1, 0xc1, 0x4b, 0x86, 0x98, 0x7a, 0x39, 0xd8, 0xc7, 0x20, 0x1d, 0xee, 0x44, 0xad, 0x58, 0xe1, 0xa6, 0x62, 0x40, 0x9d, 0x97, 0x0c, 0x11, 0xf5, 0x72, 0xb0,
0x7f, 0x03, 0x30, 0xb6, 0x97, 0xb8, 0x7c, 0xd5, 0x8d, 0x36, 0xd5, 0xb3, 0x70, 0x26, 0xb3, 0x17, 0x4f, 0x40, 0xfe, 0x06, 0x60, 0x64, 0x2f, 0x51, 0xf9, 0x8a, 0x13, 0x6e, 0x2a, 0x17, 0xe0, 0x5c,
0xe1, 0x09, 0x07, 0x6a, 0xc3, 0x17, 0xa6, 0x25, 0x0f, 0x3f, 0xd9, 0xa1, 0xa6, 0x12, 0x39, 0xd4, 0x6a, 0x2f, 0xc2, 0x13, 0x36, 0x54, 0x83, 0x17, 0x86, 0x29, 0x0f, 0x3f, 0xd9, 0xa1, 0x66, 0x2e,
0x3c, 0x15, 0x16, 0x89, 0x05, 0xb9, 0x88, 0xb1, 0x0a, 0x70, 0x58, 0xee, 0x17, 0xf3, 0xca, 0xfd, 0x74, 0xa8, 0x79, 0xc6, 0x2f, 0x12, 0xf3, 0x72, 0x11, 0x63, 0x15, 0x60, 0x50, 0xee, 0x17, 0xb2,
0xd9, 0x58, 0xb9, 0xaf, 0x76, 0x42, 0x7f, 0x8a, 0x6d, 0xd8, 0x23, 0xb6, 0x5d, 0xe4, 0x7d, 0xcb, 0xca, 0xfd, 0xe9, 0x48, 0xb9, 0xaf, 0xb4, 0x7d, 0x7f, 0x8a, 0x6d, 0xd8, 0x63, 0xb6, 0x5d, 0xe4,
0x84, 0xa8, 0x8e, 0x1a, 0x25, 0x67, 0xd5, 0x22, 0x52, 0xea, 0x35, 0xa8, 0xc6, 0x53, 0x63, 0x24, 0x7d, 0xcb, 0x84, 0xa8, 0x0c, 0x1b, 0x25, 0x67, 0x55, 0x43, 0x52, 0xca, 0x75, 0xa8, 0x44, 0x53,
0xcf, 0x29, 0xa9, 0x3c, 0xb7, 0x94, 0x48, 0x71, 0x1f, 0x25, 0x2a, 0xe0, 0x7c, 0x1f, 0x27, 0xea, 0x63, 0x28, 0xcf, 0xe5, 0x12, 0x79, 0x6e, 0x21, 0x96, 0xe2, 0x3e, 0x8a, 0x55, 0xc0, 0xd9, 0x3e,
0xdf, 0xfb, 0xb1, 0x64, 0x77, 0x3d, 0xe3, 0x3c, 0xf2, 0x37, 0x94, 0xe7, 0x56, 0xc5, 0x7a, 0xf0, 0x8e, 0xd5, 0xbf, 0x0f, 0x22, 0xc9, 0xee, 0x46, 0xca, 0x79, 0xe4, 0x6f, 0x29, 0xcf, 0x2d, 0x8b,
0xd8, 0xa3, 0xf2, 0x62, 0xd0, 0xea, 0x45, 0xa8, 0xec, 0xe7, 0x5d, 0xb3, 0x9f, 0x95, 0x67, 0xff, 0xf5, 0xe0, 0x89, 0x4b, 0xe5, 0xc5, 0xa0, 0x95, 0x4b, 0x50, 0xde, 0xcf, 0xba, 0x66, 0x3f, 0x2d,
0x57, 0x60, 0xa5, 0xe3, 0x13, 0xd7, 0xe8, 0xe1, 0x16, 0xcb, 0x48, 0x87, 0x16, 0x3f, 0xdb, 0x0e, 0xcf, 0xfe, 0xef, 0xc0, 0xf2, 0x13, 0xb3, 0x87, 0xdd, 0x63, 0xd7, 0xc3, 0xfd, 0x26, 0x4b, 0x4a,
0x82, 0x70, 0x61, 0x65, 0xcf, 0xea, 0xff, 0x28, 0xb0, 0xfc, 0xd8, 0xea, 0x63, 0xef, 0xd8, 0xf3, 0x87, 0x26, 0x76, 0xd0, 0x2a, 0x00, 0xdb, 0xc2, 0xd8, 0xc4, 0xf4, 0x6f, 0x6f, 0x87, 0x28, 0xca,
0xf1, 0x60, 0x9f, 0xed, 0xd5, 0xde, 0x81, 0x32, 0x1d, 0xa0, 0xe7, 0x1b, 0x03, 0x47, 0x1e, 0x60, 0x7f, 0xe5, 0x60, 0x31, 0x10, 0xdc, 0x67, 0x5b, 0xb7, 0xf3, 0x50, 0xa2, 0xe3, 0x75, 0x3d, 0xbd,
0x85, 0x04, 0x3a, 0x93, 0x1e, 0x57, 0x2d, 0x81, 0xa2, 0xcc, 0x2d, 0x74, 0xaa, 0x7b, 0xba, 0x9b, 0x6f, 0xcb, 0xf3, 0x2c, 0x9f, 0x80, 0xee, 0xc3, 0xcc, 0xa1, 0x2b, 0x21, 0xa3, 0x54, 0x00, 0x3d,
0x15, 0x24, 0xf4, 0x31, 0x40, 0xe0, 0x61, 0x53, 0x9c, 0x5d, 0x15, 0xf3, 0xaa, 0x84, 0xfd, 0xe8, 0xcd, 0x10, 0x75, 0xfa, 0xd0, 0x6d, 0x1a, 0xe8, 0x63, 0x80, 0x81, 0x8b, 0x0d, 0x71, 0x86, 0x55,
0x19, 0x2d, 0x15, 0xe0, 0xd7, 0x05, 0xee, 0x43, 0xc5, 0xb2, 0x89, 0x89, 0xd9, 0x19, 0xad, 0x29, 0xc8, 0xaa, 0x16, 0xf6, 0xc3, 0x67, 0xb5, 0x54, 0x80, 0x5f, 0x1b, 0x78, 0x00, 0x65, 0xd3, 0x22,
0xd0, 0xa4, 0x31, 0xe2, 0xc0, 0x25, 0xf6, 0x3d, 0x6c, 0xaa, 0x58, 0xac, 0x81, 0xd2, 0xaf, 0x22, 0x06, 0x66, 0x67, 0xb5, 0x86, 0x40, 0x95, 0x46, 0x88, 0x03, 0x97, 0xd8, 0x77, 0xb1, 0xa1, 0x60,
0x40, 0xda, 0xb0, 0xc2, 0x93, 0xd5, 0x61, 0xe8, 0x0f, 0x19, 0xa9, 0x19, 0xbb, 0xa5, 0x84, 0xd3, 0xb1, 0x16, 0x4a, 0xff, 0x8a, 0x40, 0x69, 0xc1, 0x12, 0x4f, 0x5a, 0x87, 0xbe, 0xe1, 0x32, 0x62,
0xb4, 0x9a, 0x25, 0x4a, 0x1a, 0x29, 0xaa, 0xde, 0x85, 0x93, 0xb1, 0x9d, 0xd1, 0x14, 0x5b, 0x15, 0xd7, 0x86, 0x8d, 0x8e, 0x79, 0x4b, 0xad, 0x9a, 0xa2, 0xb4, 0x91, 0xa2, 0xca, 0x3d, 0x38, 0x1d,
0x75, 0x37, 0x01, 0x90, 0x0c, 0xc3, 0x58, 0xc0, 0x0f, 0x32, 0x8a, 0xc7, 0xc1, 0x0f, 0x1e, 0x87, 0xd9, 0x21, 0x4d, 0xb0, 0x65, 0x51, 0x76, 0x63, 0x40, 0x49, 0x10, 0xce, 0x02, 0x86, 0x90, 0xd1,
0x1f, 0x3c, 0xf5, 0x0b, 0x38, 0x1d, 0x43, 0x72, 0x62, 0x16, 0xdd, 0x4f, 0x54, 0x6c, 0x97, 0xc7, 0x3c, 0x0a, 0x86, 0x70, 0x39, 0x0c, 0xe1, 0x2a, 0x5f, 0xc0, 0xd9, 0x08, 0xa2, 0x13, 0xb1, 0xe8,
0x69, 0x4d, 0x94, 0x6e, 0xff, 0xad, 0xc0, 0x6a, 0x16, 0xc3, 0x1b, 0x22, 0x8d, 0x3f, 0xce, 0xb9, 0x41, 0xac, 0x72, 0xbb, 0x32, 0x4a, 0x6b, 0xac, 0x84, 0xfb, 0x9f, 0x1c, 0x2c, 0xa7, 0x31, 0x9c,
0x1a, 0x76, 0x67, 0x32, 0xb3, 0x7e, 0x2b, 0x28, 0xed, 0x1e, 0x34, 0xb2, 0xfc, 0x99, 0x9e, 0xa5, 0x10, 0x71, 0xfc, 0x49, 0xc6, 0x15, 0xb1, 0xbb, 0xe3, 0x99, 0xf5, 0x8d, 0xa0, 0xb5, 0x7b, 0x50,
0xe2, 0x34, 0xb3, 0xf4, 0xb3, 0x62, 0x04, 0x71, 0x6f, 0xfa, 0xbe, 0x6b, 0x1d, 0x04, 0x34, 0xe4, 0x4f, 0xf3, 0x67, 0x72, 0x96, 0x0a, 0x93, 0xcc, 0xd2, 0xcf, 0x0b, 0x21, 0xe4, 0xbd, 0xe1, 0x79,
0xdf, 0x3a, 0x8a, 0xd5, 0x0a, 0xf1, 0x18, 0xee, 0xda, 0x5b, 0x23, 0xc4, 0x87, 0x76, 0x64, 0x62, 0x8e, 0x79, 0x30, 0xa0, 0x21, 0xff, 0xd6, 0xd1, 0xac, 0xa6, 0x8f, 0xcb, 0x70, 0xd7, 0xde, 0x1e,
0x32, 0x9f, 0xc5, 0x31, 0x19, 0x8e, 0xa5, 0xdf, 0x9e, 0x4c, 0xdf, 0xb7, 0x16, 0xf8, 0xfc, 0x59, 0x22, 0x1e, 0xd8, 0x91, 0x8a, 0xcd, 0x7c, 0x16, 0xc5, 0x66, 0x38, 0xa6, 0x7e, 0x67, 0x3c, 0x7d,
0x01, 0x96, 0xe2, 0x53, 0x84, 0xb6, 0x01, 0x8c, 0xd0, 0x72, 0xf1, 0xa1, 0x5c, 0x9a, 0x68, 0x98, 0xdf, 0x59, 0x00, 0xf4, 0xe7, 0x79, 0x58, 0x88, 0x4e, 0x11, 0xda, 0x06, 0xd0, 0x7d, 0xcb, 0xc5,
0x5a, 0x44, 0x10, 0xbd, 0x0f, 0xc5, 0xae, 0x13, 0x88, 0x59, 0xcb, 0x38, 0x04, 0xde, 0x74, 0x02, 0x87, 0x72, 0x79, 0xac, 0x61, 0xaa, 0x21, 0x41, 0xf4, 0x3e, 0x14, 0x3a, 0xf6, 0x40, 0xcc, 0x5a,
0x9e, 0x51, 0x28, 0x1b, 0xdd, 0x4b, 0xf1, 0x33, 0xfd, 0xfc, 0x2c, 0xf9, 0x9c, 0xbd, 0xe7, 0x32, 0xca, 0x61, 0xf0, 0xa6, 0x3d, 0xe0, 0x19, 0x85, 0xb2, 0xd1, 0x3d, 0x15, 0x3f, 0xdb, 0xcf, 0xce,
0x82, 0x19, 0x3d, 0x85, 0xa5, 0x57, 0xae, 0xe5, 0x1b, 0x07, 0x7d, 0xac, 0xf7, 0x8d, 0x63, 0xec, 0x92, 0x2f, 0xd8, 0x7b, 0x2e, 0x23, 0x98, 0xd1, 0x33, 0x58, 0x78, 0xed, 0x98, 0x9e, 0x7e, 0xd0,
0x8a, 0x2c, 0x39, 0x41, 0x22, 0xab, 0x4a, 0xc1, 0x67, 0x54, 0x4e, 0xfd, 0x03, 0x28, 0x49, 0x8b, 0xc3, 0x5a, 0x4f, 0x3f, 0xc6, 0x8e, 0xc8, 0x92, 0x63, 0x24, 0xb2, 0x8a, 0x14, 0x7c, 0x4e, 0xe5,
0xc6, 0x2c, 0x0c, 0x7b, 0xb0, 0x16, 0x50, 0x36, 0x9d, 0x5d, 0xe3, 0xb2, 0x0d, 0x9b, 0xe8, 0x1e, 0x94, 0x3f, 0x80, 0xa2, 0xb4, 0x68, 0xc4, 0x8a, 0xb0, 0x07, 0x2b, 0x03, 0xca, 0xa6, 0xb1, 0xeb,
0xa6, 0xcb, 0xb7, 0xbc, 0x60, 0x3e, 0x26, 0x45, 0xaf, 0x32, 0xe9, 0x4d, 0xe2, 0xe2, 0xb6, 0x61, 0x5c, 0x96, 0x6e, 0x11, 0xcd, 0xc5, 0x74, 0x19, 0x97, 0x17, 0xcd, 0x47, 0xa4, 0xe8, 0x65, 0x26,
0x93, 0x0e, 0x17, 0x55, 0x5f, 0x42, 0x25, 0x32, 0xc0, 0x31, 0x26, 0xb4, 0x60, 0x45, 0x1e, 0xc1, 0xbd, 0x49, 0x1c, 0xdc, 0xd2, 0x2d, 0xd2, 0xe6, 0xa2, 0xca, 0x2b, 0x28, 0x87, 0x06, 0x38, 0xc2,
0x7b, 0xd8, 0x17, 0xcb, 0xcb, 0x44, 0x9d, 0x2f, 0x0b, 0xb9, 0x0e, 0xf6, 0xf9, 0xb5, 0x89, 0xfb, 0x84, 0x26, 0x2c, 0xc9, 0xa3, 0x78, 0x17, 0x7b, 0x62, 0x79, 0x19, 0xab, 0xf3, 0x45, 0x21, 0xd7,
0x70, 0x5a, 0xc3, 0xc4, 0xc1, 0x76, 0x38, 0x9f, 0xcf, 0x48, 0x6f, 0x8a, 0x0c, 0xfe, 0x0e, 0x34, 0xc6, 0x1e, 0xbf, 0x3e, 0xf1, 0x00, 0xce, 0xaa, 0x98, 0xd8, 0xd8, 0xf2, 0xe7, 0xf3, 0x39, 0xe9,
0xb2, 0xe4, 0x79, 0x7e, 0xb8, 0xfe, 0x0e, 0x94, 0xe4, 0x6f, 0x25, 0xd1, 0x02, 0x14, 0xf7, 0x36, 0x4e, 0x90, 0xc1, 0xcf, 0x43, 0x3d, 0x4d, 0x9e, 0xe7, 0x87, 0x1b, 0xe7, 0xa1, 0x28, 0x7f, 0x33,
0x77, 0x6b, 0x33, 0xf4, 0x61, 0x7f, 0x6b, 0xb7, 0xa6, 0x5c, 0x1f, 0x40, 0x2d, 0xf9, 0xf3, 0x40, 0x89, 0xe6, 0xa0, 0xb0, 0xb7, 0xb9, 0x5b, 0x9d, 0xa2, 0x0f, 0xfb, 0x5b, 0xbb, 0xd5, 0xdc, 0x8d,
0xb4, 0x06, 0x27, 0x76, 0xb5, 0x9d, 0xdd, 0xe6, 0x93, 0xe6, 0x5e, 0x6b, 0xa7, 0xad, 0xef, 0x6a, 0x3e, 0x54, 0xe3, 0x3f, 0x13, 0x44, 0x2b, 0x70, 0x6a, 0x57, 0xdd, 0xd9, 0x6d, 0x3c, 0x6d, 0xec,
0xad, 0x4f, 0x9a, 0x7b, 0xdb, 0xb5, 0x19, 0x74, 0x01, 0xce, 0x46, 0x5f, 0x3c, 0xdd, 0xe9, 0xec, 0x35, 0x77, 0x5a, 0xda, 0xae, 0xda, 0xfc, 0xa4, 0xb1, 0xb7, 0x5d, 0x9d, 0x42, 0x6b, 0x70, 0x21,
0xe9, 0x7b, 0x3b, 0xfa, 0xe6, 0x4e, 0x7b, 0xaf, 0xd9, 0x6a, 0x6f, 0x6b, 0x35, 0x05, 0x9d, 0x85, 0xfc, 0xe2, 0xd9, 0x4e, 0x7b, 0x4f, 0xdb, 0xdb, 0xd1, 0x36, 0x77, 0x5a, 0x7b, 0x8d, 0x66, 0x6b,
0xd3, 0x51, 0x96, 0x47, 0xad, 0xad, 0x96, 0xb6, 0xbd, 0x49, 0x9f, 0x9b, 0xcf, 0x6a, 0x85, 0xeb, 0x5b, 0xad, 0xe6, 0xd0, 0x05, 0x38, 0x1b, 0x66, 0x79, 0xdc, 0xdc, 0x6a, 0xaa, 0xdb, 0x9b, 0xf4,
0xb7, 0xa0, 0x1a, 0xfb, 0x35, 0x1f, 0x35, 0x64, 0x77, 0x67, 0xab, 0x36, 0x83, 0xaa, 0x50, 0x8e, 0xb9, 0xf1, 0xbc, 0x9a, 0xbf, 0x71, 0x1b, 0x2a, 0x91, 0x5f, 0xf5, 0x51, 0x43, 0x76, 0x77, 0xb6,
0xea, 0x29, 0xc1, 0x6c, 0x7b, 0x67, 0x6b, 0xbb, 0x56, 0xb8, 0x7e, 0x17, 0x96, 0x13, 0xf7, 0x48, 0xaa, 0x53, 0xa8, 0x02, 0xa5, 0xb0, 0x9e, 0x22, 0x4c, 0xb7, 0x76, 0xb6, 0xb6, 0xab, 0xf9, 0x1b,
0xd1, 0x0a, 0x54, 0x3b, 0xcd, 0xf6, 0xd6, 0xa3, 0x9d, 0xcf, 0x74, 0x6d, 0xbb, 0xb9, 0xf5, 0x79, 0xf7, 0x60, 0x31, 0x76, 0x9f, 0x14, 0x2d, 0x41, 0xa5, 0xdd, 0x68, 0x6d, 0x3d, 0xde, 0xf9, 0x4c,
0x6d, 0x06, 0xad, 0x42, 0x4d, 0x92, 0xda, 0x3b, 0x7b, 0x9c, 0xaa, 0x5c, 0x7f, 0x91, 0xf8, 0xb2, 0x53, 0xb7, 0x1b, 0x5b, 0x9f, 0x57, 0xa7, 0xd0, 0x32, 0x54, 0x25, 0xa9, 0xb5, 0xb3, 0xc7, 0xa9,
0x30, 0x3a, 0x09, 0x2b, 0x61, 0x37, 0xfa, 0xa6, 0xb6, 0xdd, 0xdc, 0xdb, 0xa6, 0xbd, 0xc7, 0xc8, 0xb9, 0x1b, 0x2f, 0x63, 0x5f, 0x16, 0x46, 0xa7, 0x61, 0xc9, 0xef, 0x46, 0xdb, 0x54, 0xb7, 0x1b,
0xda, 0x7e, 0xbb, 0xdd, 0x6a, 0x3f, 0xa9, 0x29, 0x54, 0xeb, 0x90, 0xbc, 0xfd, 0x59, 0x8b, 0x32, 0x7b, 0xdb, 0xb4, 0xf7, 0x08, 0x59, 0xdd, 0x6f, 0xb5, 0x9a, 0xad, 0xa7, 0xd5, 0x1c, 0xd5, 0x1a,
0x17, 0xe2, 0xcc, 0xfb, 0xed, 0x1f, 0xb4, 0x77, 0x3e, 0x6d, 0xd7, 0x8a, 0x1b, 0x7f, 0xbf, 0x02, 0x90, 0xb7, 0x3f, 0x6b, 0x52, 0xe6, 0x7c, 0x94, 0x79, 0xbf, 0xf5, 0xc3, 0xd6, 0xce, 0xa7, 0xad,
0x4b, 0xb2, 0xac, 0xc3, 0x2e, 0xbb, 0xc3, 0xb2, 0x0b, 0x0b, 0xf2, 0x17, 0xb7, 0x19, 0x79, 0x39, 0x6a, 0x61, 0xe3, 0xef, 0x97, 0x60, 0x41, 0x96, 0x77, 0xd8, 0x61, 0x77, 0x59, 0x76, 0x61, 0x4e,
0xfe, 0x3b, 0xe1, 0xc6, 0x85, 0x11, 0x1c, 0xa2, 0xba, 0x9e, 0x41, 0x07, 0xac, 0xda, 0x8d, 0xdc, 0xfe, 0xf2, 0x36, 0x25, 0x2f, 0x47, 0x7f, 0x2f, 0x5c, 0x5f, 0x1b, 0xc2, 0x21, 0xaa, 0xec, 0x29,
0xeb, 0xbd, 0x9c, 0x59, 0x5b, 0xa6, 0xae, 0x12, 0x37, 0xae, 0x8c, 0xe5, 0x0b, 0xfb, 0xc0, 0xb4, 0x74, 0xc0, 0xaa, 0xde, 0xd0, 0xfd, 0xde, 0x2b, 0xa9, 0x35, 0x66, 0xe2, 0x4a, 0x71, 0xfd, 0xea,
0xa0, 0x8d, 0xfe, 0x70, 0x05, 0x5d, 0xc9, 0x2c, 0xba, 0xd2, 0xbf, 0x8c, 0x69, 0x5c, 0x1d, 0xcf, 0x48, 0x3e, 0xbf, 0x0f, 0x4c, 0x0b, 0xdb, 0xf0, 0x0f, 0x58, 0xd0, 0xd5, 0xb4, 0x8a, 0x34, 0xe5,
0x18, 0x76, 0xf3, 0x02, 0x6a, 0xc9, 0x1f, 0xb1, 0xa0, 0x0c, 0xa0, 0x34, 0xe7, 0x97, 0x32, 0x8d, 0x17, 0x32, 0xf5, 0x6b, 0xa3, 0x19, 0xfd, 0x6e, 0x5e, 0x42, 0x35, 0xfe, 0x63, 0x16, 0x94, 0x02,
0xeb, 0x93, 0xb0, 0x46, 0x3b, 0x4b, 0xfd, 0xdc, 0xe3, 0xda, 0x24, 0xf7, 0xe7, 0x73, 0x3b, 0xcb, 0x98, 0x66, 0xfc, 0x62, 0xa6, 0x7e, 0x63, 0x1c, 0xd6, 0x70, 0x67, 0x89, 0x9f, 0x7d, 0x5c, 0x1f,
0xbb, 0x6a, 0xcf, 0x1d, 0x18, 0xbf, 0xb3, 0x8b, 0x32, 0x7f, 0x5b, 0x91, 0x71, 0xe3, 0x3b, 0xcb, 0xe7, 0x1e, 0x7d, 0x66, 0x67, 0x59, 0x57, 0xee, 0xb9, 0x03, 0xa3, 0x77, 0x77, 0x51, 0xea, 0x6f,
0x81, 0xd9, 0xd7, 0x7f, 0xd5, 0x19, 0x74, 0x04, 0xcb, 0x89, 0xcb, 0x08, 0x28, 0x43, 0x3c, 0xfb, 0x2c, 0x52, 0x6e, 0x7e, 0xa7, 0x39, 0x30, 0xfd, 0x1a, 0xb0, 0x32, 0x85, 0x8e, 0x60, 0x31, 0x76,
0xd6, 0x45, 0xe3, 0xda, 0x04, 0x9c, 0xf1, 0x88, 0x88, 0x5e, 0x3e, 0xc8, 0x8e, 0x88, 0x8c, 0xab, 0x29, 0x01, 0xa5, 0x88, 0xa7, 0xdf, 0xbe, 0xa8, 0x5f, 0x1f, 0x83, 0x33, 0x1a, 0x11, 0xe1, 0x4b,
0x0d, 0xd9, 0x11, 0x91, 0x79, 0x8f, 0x81, 0x05, 0x77, 0xec, 0xd2, 0x41, 0x56, 0x70, 0x67, 0x5d, 0x08, 0xe9, 0x11, 0x91, 0x72, 0xc5, 0x21, 0x3d, 0x22, 0x52, 0xef, 0x33, 0xb0, 0xe0, 0x8e, 0x5c,
0x75, 0x68, 0x5c, 0x19, 0xcb, 0x17, 0x75, 0x5a, 0xe2, 0x0a, 0x42, 0x96, 0xd3, 0xb2, 0xaf, 0x38, 0x3e, 0x48, 0x0b, 0xee, 0xb4, 0x2b, 0x0f, 0xf5, 0xab, 0x23, 0xf9, 0xc2, 0x4e, 0x8b, 0x5d, 0x45,
0x34, 0xae, 0x4d, 0xc0, 0x99, 0x8c, 0x82, 0xe1, 0x81, 0x66, 0x5e, 0x14, 0xa4, 0x8e, 0xdf, 0xf3, 0x48, 0x73, 0x5a, 0xfa, 0x55, 0x87, 0xfa, 0xf5, 0x31, 0x38, 0xe3, 0x51, 0x10, 0x1c, 0x6c, 0x66,
0xa2, 0x20, 0x7d, 0x36, 0x2a, 0xa2, 0x20, 0x71, 0x10, 0x79, 0x75, 0x82, 0x83, 0x93, 0xfc, 0x28, 0x45, 0x41, 0xe2, 0x18, 0x3e, 0x2b, 0x0a, 0x92, 0x67, 0xa4, 0x22, 0x0a, 0x62, 0x07, 0x92, 0xd7,
0xc8, 0x3e, 0x62, 0x51, 0x67, 0xd0, 0x1f, 0x2a, 0x50, 0xcf, 0x3b, 0x94, 0x40, 0x19, 0x55, 0xdd, 0xc6, 0x38, 0x40, 0xc9, 0x8e, 0x82, 0xf4, 0xa3, 0x16, 0x65, 0x0a, 0xfd, 0x61, 0x0e, 0x6a, 0x59,
0x98, 0x73, 0x94, 0xc6, 0xc6, 0x34, 0x22, 0xa1, 0x15, 0x5f, 0x02, 0x4a, 0xaf, 0x76, 0xe8, 0x3b, 0x87, 0x13, 0x28, 0xa5, 0xaa, 0x1b, 0x71, 0x9e, 0x52, 0xdf, 0x98, 0x44, 0xc4, 0xb7, 0xe2, 0x4b,
0x59, 0x33, 0x93, 0xb3, 0xa6, 0x36, 0xde, 0x9f, 0x8c, 0x39, 0xec, 0xb2, 0x03, 0x25, 0x79, 0x0c, 0x40, 0xc9, 0xd5, 0x0e, 0xbd, 0x97, 0x36, 0x33, 0x19, 0x6b, 0x6a, 0xfd, 0xfd, 0xf1, 0x98, 0xfd,
0x82, 0x32, 0xb2, 0x74, 0xe2, 0x10, 0xa6, 0xa1, 0x8e, 0x62, 0x09, 0x95, 0x3e, 0x81, 0x59, 0x4a, 0x2e, 0xdb, 0x50, 0x94, 0xc7, 0x21, 0x28, 0x25, 0x4b, 0xc7, 0x0e, 0x63, 0xea, 0xca, 0x30, 0x16,
0x45, 0x67, 0xb3, 0xb9, 0xa5, 0xb2, 0x73, 0x79, 0xaf, 0x43, 0x45, 0xcf, 0x61, 0x9e, 0xe3, 0xfe, 0x5f, 0xe9, 0x53, 0x98, 0xa6, 0x54, 0x74, 0x21, 0x9d, 0x5b, 0x2a, 0x5b, 0xcd, 0x7a, 0xed, 0x2b,
0x28, 0x03, 0x67, 0x88, 0x9d, 0x4e, 0x34, 0xce, 0xe7, 0x33, 0x84, 0xea, 0x7e, 0xc4, 0xff, 0x19, 0x7a, 0x01, 0xb3, 0x1c, 0xff, 0x47, 0x29, 0x78, 0x43, 0xe4, 0x94, 0xa2, 0x7e, 0x31, 0x9b, 0xc1,
0x83, 0x80, 0xf4, 0xd1, 0x7b, 0xd9, 0xbf, 0x8e, 0x8d, 0x9f, 0x20, 0x34, 0x2e, 0x8d, 0xe1, 0x8a, 0x57, 0xf7, 0x63, 0xfe, 0x4f, 0x19, 0x04, 0xb4, 0x8f, 0xde, 0x4d, 0xff, 0x95, 0x6c, 0xf4, 0x24,
0x7e, 0x14, 0x89, 0x5a, 0xf7, 0xca, 0xd8, 0x0d, 0x4b, 0xfe, 0x47, 0x91, 0xbd, 0x25, 0xe2, 0x41, 0xa1, 0x7e, 0x79, 0x04, 0x57, 0xf8, 0xa3, 0x88, 0xd5, 0xba, 0x57, 0x47, 0x6e, 0x58, 0xb2, 0x3f,
0x92, 0xde, 0x32, 0x65, 0x05, 0x49, 0xee, 0x46, 0x35, 0x2b, 0x48, 0xf2, 0x77, 0x61, 0xea, 0x0c, 0x8a, 0xf4, 0x2d, 0x11, 0x0f, 0x92, 0xe4, 0x96, 0x29, 0x2d, 0x48, 0x32, 0x37, 0xaa, 0x69, 0x41,
0xf2, 0xe1, 0x44, 0x06, 0x30, 0x86, 0xde, 0xcf, 0x0b, 0xf2, 0x2c, 0x94, 0xae, 0x71, 0x63, 0x42, 0x92, 0xbd, 0x0b, 0x53, 0xa6, 0x90, 0x07, 0xa7, 0x52, 0x00, 0x32, 0xf4, 0x7e, 0x56, 0x90, 0xa7,
0xee, 0xe8, 0xe4, 0x8b, 0x8f, 0xfe, 0xdd, 0x7c, 0xb4, 0x28, 0x77, 0xf2, 0x93, 0x9f, 0xf8, 0xc6, 0xa1, 0x75, 0xf5, 0x9b, 0x63, 0x72, 0x87, 0x27, 0x5f, 0x7c, 0xf4, 0xef, 0x64, 0xa3, 0x46, 0x99,
0xbf, 0x15, 0x61, 0x91, 0x83, 0x9e, 0xa2, 0x82, 0xf9, 0x1c, 0x60, 0x78, 0xde, 0x80, 0x2e, 0x66, 0x93, 0x1f, 0xff, 0xc4, 0x37, 0xfe, 0xad, 0x00, 0xf3, 0x1c, 0xfc, 0x14, 0x15, 0xcc, 0xe7, 0x00,
0xfb, 0x24, 0x76, 0x26, 0xd3, 0x78, 0x6f, 0x34, 0x53, 0x34, 0xd0, 0x22, 0xd8, 0x7d, 0x56, 0xa0, 0xc1, 0xb9, 0x03, 0xba, 0x94, 0xee, 0x93, 0xc8, 0xd9, 0x4c, 0xfd, 0xdd, 0xe1, 0x4c, 0xe1, 0x40,
0xa5, 0x8f, 0x28, 0xb2, 0x02, 0x2d, 0xe3, 0x00, 0x40, 0x9d, 0x41, 0x9f, 0x40, 0x39, 0x04, 0x89, 0x0b, 0x61, 0xf8, 0x69, 0x81, 0x96, 0x3c, 0xaa, 0x48, 0x0b, 0xb4, 0x94, 0x83, 0x00, 0x65, 0x0a,
0x51, 0x16, 0xc8, 0x9c, 0x40, 0xc1, 0x1b, 0x17, 0x47, 0xf2, 0x44, 0xad, 0x8e, 0x20, 0xc0, 0x59, 0x7d, 0x02, 0x25, 0x1f, 0x2c, 0x46, 0x69, 0x60, 0x73, 0x0c, 0x0d, 0xaf, 0x5f, 0x1a, 0xca, 0x13,
0x56, 0xa7, 0x91, 0xe6, 0x2c, 0xab, 0xb3, 0x60, 0xe4, 0xa1, 0x4f, 0x38, 0x5e, 0x94, 0xeb, 0x93, 0xb6, 0x3a, 0x84, 0x04, 0xa7, 0x59, 0x9d, 0x44, 0x9c, 0xd3, 0xac, 0x4e, 0x83, 0x93, 0x03, 0x9f,
0x18, 0x4c, 0x97, 0xeb, 0x93, 0x38, 0xe8, 0xa4, 0xce, 0x3c, 0xba, 0xfc, 0xcb, 0x5f, 0x9f, 0x53, 0x70, 0xbc, 0x28, 0xd3, 0x27, 0x11, 0xb8, 0x2e, 0xd3, 0x27, 0x51, 0xd0, 0x49, 0x99, 0x7a, 0x7c,
0xfe, 0xf9, 0xd7, 0xe7, 0x66, 0x7e, 0xfa, 0xd5, 0x39, 0xe5, 0x97, 0x5f, 0x9d, 0x53, 0xfe, 0xe9, 0xe5, 0x57, 0xbf, 0x59, 0xcd, 0xfd, 0xf3, 0x6f, 0x56, 0xa7, 0x7e, 0xf6, 0xd5, 0x6a, 0xee, 0x57,
0xab, 0x73, 0xca, 0xbf, 0x7f, 0x75, 0x4e, 0xf9, 0xd3, 0xff, 0x38, 0x37, 0xf3, 0xc3, 0x92, 0x94, 0x5f, 0xad, 0xe6, 0xfe, 0xe9, 0xab, 0xd5, 0xdc, 0xbf, 0x7f, 0xb5, 0x9a, 0xfb, 0xd3, 0xff, 0x58,
0x3e, 0x98, 0x67, 0xff, 0x52, 0xe5, 0xc3, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x92, 0x3f, 0x16, 0x9d, 0xfa, 0x51, 0x51, 0x4a, 0x1f, 0xcc, 0xb2, 0x7f, 0xad, 0xf2, 0xe1, 0xff, 0x05, 0x00, 0x00,
0xfa, 0x18, 0x47, 0x00, 0x00, 0xff, 0xff, 0x36, 0xf8, 0x35, 0x67, 0x20, 0x47, 0x00, 0x00,
} }

View File

@ -1103,18 +1103,18 @@ message UInt64Value {
uint64 value = 1; uint64 value = 1;
} }
// StorageIdentifier uniquely identify the storage.. // FilesystemIdentifier uniquely identify the filesystem.
message StorageIdentifier{ message FilesystemIdentifier{
// UUID of the device. // Mountpoint of a filesystem.
string uuid = 1; string mountpoint = 1;
} }
// FilesystemUsage provides the filesystem usage information. // FilesystemUsage provides the filesystem usage information.
message FilesystemUsage { message FilesystemUsage {
// Timestamp in nanoseconds at which the information were collected. Must be > 0. // Timestamp in nanoseconds at which the information were collected. Must be > 0.
int64 timestamp = 1; int64 timestamp = 1;
// The underlying storage of the filesystem. // The unique identifier of the filesystem.
StorageIdentifier storage_id = 2; FilesystemIdentifier fs_id = 2;
// UsedBytes represents the bytes used for images on the filesystem. // UsedBytes represents the bytes used for images on the filesystem.
// This may differ from the total bytes used on the filesystem and may not // This may differ from the total bytes used on the filesystem and may not
// equal CapacityBytes - AvailableBytes. // equal CapacityBytes - AvailableBytes.

2
vendor/k8s.io/utils/README.md generated vendored
View File

@ -41,7 +41,7 @@ an existing package to this repository.
the [FakeExec](exec/testing/fake_exec.go) struct. the [FakeExec](exec/testing/fake_exec.go) struct.
- [Temp](/temp) provides an interface to create temporary directories. It also - [Temp](/temp) provides an interface to create temporary directories. It also
provides a [FakeDir](temp/temptesting) implementation to replace in tests. provides a [FakeDir](temp/temptest) implementation to replace in tests.
- [Clock](/clock) provides an interface for time-based operations. It allows - [Clock](/clock) provides an interface for time-based operations. It allows
mocking time for testing. mocking time for testing.