feat(*): add annotations to release

Annotations is an unstructured key value map stored with a release that
may be set by external tools to store and retrieve arbitrary metadata.

For example: currently there is no way to tell where the chart, from which
a release had been installed, came from (local file, repo, etc.). We can
store the chart's origin in the release annotations.

In future, when Helm will utilize TPRs or an addon API server to store
the release data, these annotations can easily be converted to the k8s
API's v1.ObjectMeta.Annotations.
reviewable/pr2631/r1
Igor Bazhitov 8 years ago
parent 6931a2387d
commit e9a740fc57

@ -50,4 +50,8 @@ message Release {
// Namespace is the kubernetes namespace of the release. // Namespace is the kubernetes namespace of the release.
string namespace = 8; string namespace = 8;
// Annotations is an unstructured key value map stored with a release that
// may be set by external tools to store and retrieve arbitrary metadata.
map<string,string> annotations = 9;
} }

@ -209,6 +209,9 @@ message UpdateReleaseRequest {
bool reuse_values = 10; bool reuse_values = 10;
// Force resource update through delete/recreate if needed. // Force resource update through delete/recreate if needed.
bool force = 11; bool force = 11;
// Annotations is an unstructured key value map stored with a release that
// may be set by external tools to store and retrieve arbitrary metadata.
map<string,string> annotations = 12;
} }
// UpdateReleaseResponse is the response to an update request. // UpdateReleaseResponse is the response to an update request.
@ -271,6 +274,9 @@ message InstallReleaseRequest {
// wait, if true, will wait until all Pods, PVCs, and Services are in a ready state // wait, if true, will wait until all Pods, PVCs, and Services are in a ready state
// before marking the release as successful. It will wait for as long as timeout // before marking the release as successful. It will wait for as long as timeout
bool wait = 9; bool wait = 9;
// Annotations is an unstructured key value map stored with a release that
// may be set by external tools to store and retrieve arbitrary metadata.
map<string,string> annotations = 10;
} }
// InstallReleaseResponse is the response from a release installation. // InstallReleaseResponse is the response from a release installation.

@ -35,6 +35,9 @@ type Release struct {
Version int32 `protobuf:"varint,7,opt,name=version" json:"version,omitempty"` Version int32 `protobuf:"varint,7,opt,name=version" json:"version,omitempty"`
// Namespace is the kubernetes namespace of the release. // Namespace is the kubernetes namespace of the release.
Namespace string `protobuf:"bytes,8,opt,name=namespace" json:"namespace,omitempty"` Namespace string `protobuf:"bytes,8,opt,name=namespace" json:"namespace,omitempty"`
// Annotations is an unstructured key value map stored with a release that
// may be set by external tools to store and retrieve arbitrary metadata.
Annotations map[string]string `protobuf:"bytes,9,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
} }
func (m *Release) Reset() { *m = Release{} } func (m *Release) Reset() { *m = Release{} }
@ -98,6 +101,13 @@ func (m *Release) GetNamespace() string {
return "" return ""
} }
func (m *Release) GetAnnotations() map[string]string {
if m != nil {
return m.Annotations
}
return nil
}
func init() { func init() {
proto.RegisterType((*Release)(nil), "hapi.release.Release") proto.RegisterType((*Release)(nil), "hapi.release.Release")
} }
@ -105,21 +115,26 @@ func init() {
func init() { proto.RegisterFile("hapi/release/release.proto", fileDescriptor2) } func init() { proto.RegisterFile("hapi/release/release.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{ var fileDescriptor2 = []byte{
// 256 bytes of a gzipped FileDescriptorProto // 322 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xbf, 0x4e, 0xc3, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4f, 0x4f, 0xf2, 0x40,
0x0c, 0xc6, 0x95, 0x36, 0x7f, 0x1a, 0xc3, 0x82, 0x07, 0xb0, 0x22, 0x86, 0x88, 0x01, 0x22, 0x86, 0x10, 0xc6, 0x53, 0x4a, 0x29, 0x1d, 0xde, 0x03, 0xef, 0xc4, 0xe8, 0xa6, 0xf1, 0xd0, 0x78, 0xc0,
0x54, 0x82, 0x37, 0x80, 0x05, 0xd6, 0x1b, 0xd9, 0x8e, 0xe8, 0x42, 0x4e, 0xa5, 0xe7, 0x28, 0x17, 0xc6, 0x43, 0x49, 0xf4, 0x62, 0x3c, 0x98, 0xa8, 0x31, 0xc1, 0xeb, 0x1e, 0xbd, 0xad, 0x64, 0x2b,
0xf1, 0x2c, 0x3c, 0x2e, 0xba, 0x3f, 0x85, 0x94, 0x2e, 0x4e, 0xec, 0xdf, 0xa7, 0xcf, 0xdf, 0x19, 0x0d, 0xb0, 0x43, 0xba, 0x2b, 0x09, 0x5f, 0xc7, 0x4f, 0x6a, 0xf6, 0x0f, 0x52, 0xf0, 0xb2, 0xdd,
0xaa, 0x41, 0x8e, 0x7a, 0x3b, 0xa9, 0x4f, 0x25, 0xad, 0x3a, 0x7c, 0xdb, 0x71, 0xe2, 0x99, 0xf1, 0x99, 0xe7, 0xd7, 0x79, 0xa6, 0x4f, 0x21, 0x5f, 0x88, 0x4d, 0x33, 0x6d, 0xe5, 0x4a, 0x0a, 0x2d,
0xdc, 0xb1, 0x36, 0xce, 0xaa, 0xab, 0x23, 0xe5, 0xc0, 0xbc, 0x0b, 0xb2, 0x7f, 0x40, 0x9b, 0x9e, 0xf7, 0xcf, 0x6a, 0xd3, 0x92, 0x21, 0xfc, 0x67, 0xb5, 0x2a, 0xf4, 0xf2, 0x8b, 0x23, 0x72, 0x41,
0x8f, 0x40, 0x37, 0xc8, 0x69, 0xde, 0x76, 0x6c, 0x7a, 0xfd, 0x11, 0xc1, 0xe5, 0x12, 0xb8, 0x1a, 0xb4, 0xf4, 0xd8, 0x89, 0xd0, 0xa8, 0x9a, 0x8e, 0x84, 0xf9, 0x42, 0xb4, 0x66, 0x3a, 0x27, 0x55,
0xe6, 0x37, 0xdf, 0x2b, 0x28, 0x44, 0xf0, 0x41, 0x84, 0xd4, 0xc8, 0xbd, 0xa2, 0xa4, 0x4e, 0x9a, 0x37, 0x9f, 0x41, 0x38, 0xef, 0x0a, 0xf6, 0xf4, 0xfd, 0xab, 0xef, 0x18, 0x52, 0xee, 0xe7, 0x20,
0x52, 0xf8, 0x7f, 0xbc, 0x85, 0xd4, 0xd9, 0xd3, 0xaa, 0x4e, 0x9a, 0xb3, 0x07, 0x6c, 0x97, 0xf9, 0x42, 0x5f, 0x89, 0xb5, 0x64, 0x51, 0x11, 0x95, 0x19, 0x77, 0x77, 0x9c, 0x40, 0xdf, 0x8e, 0x67,
0xda, 0x57, 0xd3, 0xb3, 0xf0, 0x1c, 0xef, 0x20, 0xf3, 0xb6, 0xb4, 0xf6, 0xc2, 0x8b, 0x20, 0x0c, 0xbd, 0x22, 0x2a, 0x47, 0xb7, 0x58, 0x75, 0xf7, 0xab, 0xde, 0x54, 0x4d, 0xdc, 0xe9, 0x78, 0x0d,
0x9b, 0x9e, 0x5d, 0x15, 0x81, 0xe3, 0x3d, 0xe4, 0x21, 0x18, 0xa5, 0x4b, 0xcb, 0xa8, 0xf4, 0x44, 0x89, 0x1b, 0xcb, 0x62, 0x07, 0xfe, 0xf7, 0xa0, 0x77, 0x7a, 0xb1, 0x27, 0xf7, 0x3a, 0xde, 0xc0,
0x44, 0x05, 0x56, 0xb0, 0xd9, 0x4b, 0xa3, 0x7b, 0x65, 0x67, 0xca, 0x7c, 0xa8, 0xdf, 0x1e, 0x1b, 0xc0, 0x2f, 0xc6, 0xfa, 0xdd, 0x91, 0x81, 0x74, 0x0a, 0x0f, 0x04, 0xe6, 0x30, 0x5c, 0x0b, 0xd5,
0xc8, 0xdc, 0x41, 0x2c, 0xe5, 0xf5, 0xfa, 0x34, 0xd9, 0x0b, 0xf3, 0x4e, 0x04, 0x01, 0x12, 0x14, 0xd4, 0x52, 0x1b, 0x96, 0xb8, 0xa5, 0x7e, 0x6b, 0x2c, 0x21, 0xb1, 0x81, 0x68, 0x36, 0x28, 0xe2,
0x5f, 0x6a, 0xb2, 0x9a, 0x0d, 0x15, 0x75, 0xd2, 0x64, 0xe2, 0xd0, 0xe2, 0x35, 0x94, 0xee, 0x91, 0xbf, 0x9b, 0xcd, 0x88, 0x96, 0xdc, 0x03, 0xc8, 0x20, 0xdd, 0xca, 0x56, 0x37, 0xa4, 0x58, 0x5a,
0x76, 0x94, 0x9d, 0xa2, 0x8d, 0x5f, 0xf0, 0x37, 0x78, 0x2a, 0xdf, 0x8a, 0x68, 0xf7, 0x9e, 0xfb, 0x44, 0x65, 0xc2, 0xf7, 0x25, 0x5e, 0x42, 0x66, 0x3f, 0x52, 0x6f, 0xc4, 0x5c, 0xb2, 0xa1, 0x33,
0x63, 0x3d, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x8f, 0xec, 0x97, 0xbb, 0x01, 0x00, 0x00, 0x38, 0x34, 0x70, 0x06, 0x23, 0xa1, 0x14, 0x19, 0x61, 0x1a, 0x52, 0x9a, 0x65, 0xce, 0x67, 0x72,
0xec, 0x13, 0xa2, 0xab, 0x9e, 0x0e, 0xe0, 0xab, 0x32, 0xed, 0x8e, 0x77, 0x5f, 0xcd, 0x1f, 0x61,
0x7c, 0x0a, 0xe0, 0x18, 0xe2, 0xa5, 0xdc, 0x85, 0xac, 0xed, 0x15, 0xcf, 0x20, 0xd9, 0x8a, 0xd5,
0x97, 0x74, 0x59, 0x67, 0xdc, 0x17, 0x0f, 0xbd, 0xfb, 0xe8, 0x39, 0x7b, 0x4f, 0x83, 0xe1, 0xc7,
0xc0, 0xfd, 0xb6, 0xbb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x29, 0xd2, 0x2f, 0x45, 0x02,
0x00, 0x00,
} }

@ -377,6 +377,9 @@ type UpdateReleaseRequest struct {
ReuseValues bool `protobuf:"varint,10,opt,name=reuse_values,json=reuseValues" json:"reuse_values,omitempty"` ReuseValues bool `protobuf:"varint,10,opt,name=reuse_values,json=reuseValues" json:"reuse_values,omitempty"`
// Force resource update through delete/recreate if needed. // Force resource update through delete/recreate if needed.
Force bool `protobuf:"varint,11,opt,name=force" json:"force,omitempty"` Force bool `protobuf:"varint,11,opt,name=force" json:"force,omitempty"`
// Annotations is an unstructured key value map stored with a release that
// may be set by external tools to store and retrieve arbitrary metadata.
Annotations map[string]string `protobuf:"bytes,12,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
} }
func (m *UpdateReleaseRequest) Reset() { *m = UpdateReleaseRequest{} } func (m *UpdateReleaseRequest) Reset() { *m = UpdateReleaseRequest{} }
@ -461,6 +464,13 @@ func (m *UpdateReleaseRequest) GetForce() bool {
return false return false
} }
func (m *UpdateReleaseRequest) GetAnnotations() map[string]string {
if m != nil {
return m.Annotations
}
return nil
}
// UpdateReleaseResponse is the response to an update request. // UpdateReleaseResponse is the response to an update request.
type UpdateReleaseResponse struct { type UpdateReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"` Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
@ -601,6 +611,9 @@ type InstallReleaseRequest struct {
// wait, if true, will wait until all Pods, PVCs, and Services are in a ready state // wait, if true, will wait until all Pods, PVCs, and Services are in a ready state
// before marking the release as successful. It will wait for as long as timeout // before marking the release as successful. It will wait for as long as timeout
Wait bool `protobuf:"varint,9,opt,name=wait" json:"wait,omitempty"` Wait bool `protobuf:"varint,9,opt,name=wait" json:"wait,omitempty"`
// Annotations is an unstructured key value map stored with a release that
// may be set by external tools to store and retrieve arbitrary metadata.
Annotations map[string]string `protobuf:"bytes,10,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
} }
func (m *InstallReleaseRequest) Reset() { *m = InstallReleaseRequest{} } func (m *InstallReleaseRequest) Reset() { *m = InstallReleaseRequest{} }
@ -671,6 +684,13 @@ func (m *InstallReleaseRequest) GetWait() bool {
return false return false
} }
func (m *InstallReleaseRequest) GetAnnotations() map[string]string {
if m != nil {
return m.Annotations
}
return nil
}
// InstallReleaseResponse is the response from a release installation. // InstallReleaseResponse is the response from a release installation.
type InstallReleaseResponse struct { type InstallReleaseResponse struct {
Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"` Release *hapi_release5.Release `protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
@ -1369,82 +1389,86 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) } func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 1217 bytes of a gzipped FileDescriptorProto // 1292 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x6e, 0xe3, 0xc4, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x5b, 0x73, 0xdb, 0x44,
0x17, 0xaf, 0xf3, 0x9d, 0x93, 0x36, 0xff, 0x74, 0x9a, 0xb6, 0xae, 0xff, 0x0b, 0x2a, 0x46, 0xb0, 0x14, 0x8e, 0x2c, 0x5f, 0x8f, 0xd3, 0xe0, 0x6e, 0xdd, 0x44, 0x15, 0x85, 0x09, 0x62, 0xa0, 0x6e,
0xd9, 0x85, 0x4d, 0x21, 0x70, 0x83, 0x84, 0x90, 0xba, 0xdd, 0xa8, 0x2d, 0x94, 0xae, 0xe4, 0x6c, 0x4b, 0x1d, 0x30, 0x3c, 0x70, 0xe9, 0x74, 0x26, 0x4d, 0x3d, 0x49, 0x21, 0xa4, 0x33, 0x72, 0x5b,
0x17, 0x09, 0x01, 0x91, 0x9b, 0x4c, 0x5a, 0xb3, 0x8e, 0x27, 0x78, 0xc6, 0x65, 0x7b, 0xcb, 0x1d, 0x66, 0x18, 0x5a, 0x8f, 0x62, 0xaf, 0x53, 0x51, 0x59, 0x6b, 0xb4, 0xab, 0x50, 0xbf, 0xf2, 0xc6,
0x8f, 0xc2, 0x5b, 0xf0, 0x1e, 0x5c, 0xc2, 0x83, 0x20, 0xcf, 0x87, 0xeb, 0x49, 0xed, 0xd6, 0xf4, 0xbf, 0xe2, 0x95, 0xdf, 0xc0, 0x2b, 0x3f, 0x84, 0xd1, 0x5e, 0x14, 0xad, 0x22, 0xa7, 0x6a, 0x66,
0x26, 0x9e, 0x99, 0xf3, 0xfd, 0x3b, 0x67, 0xce, 0x9c, 0x80, 0x75, 0xe9, 0x2e, 0xbc, 0x3d, 0x8a, 0x78, 0xb1, 0xb4, 0x7b, 0xee, 0xe7, 0x3b, 0xe7, 0xe8, 0x8c, 0xc1, 0x7e, 0xe5, 0x2d, 0xfc, 0x1d,
0xc3, 0x2b, 0x6f, 0x82, 0xe9, 0x1e, 0xf3, 0x7c, 0x1f, 0x87, 0xfd, 0x45, 0x48, 0x18, 0x41, 0xdd, 0x8a, 0xa3, 0x53, 0x7f, 0x82, 0xe9, 0x0e, 0xf3, 0x83, 0x00, 0x47, 0xfd, 0x45, 0x44, 0x18, 0x41,
0x98, 0xd6, 0x57, 0xb4, 0xbe, 0xa0, 0x59, 0x5b, 0x5c, 0x62, 0x72, 0xe9, 0x86, 0x4c, 0xfc, 0x0a, 0xdd, 0x84, 0xd6, 0x57, 0xb4, 0xbe, 0xa0, 0xd9, 0x9b, 0x5c, 0x62, 0xf2, 0xca, 0x8b, 0x98, 0xf8,
0x6e, 0x6b, 0x3b, 0x7d, 0x4e, 0x82, 0x99, 0x77, 0x21, 0x09, 0xc2, 0x44, 0x88, 0x7d, 0xec, 0x52, 0x15, 0xdc, 0xf6, 0x56, 0xf6, 0x9e, 0x84, 0x33, 0xff, 0x44, 0x12, 0x84, 0x89, 0x08, 0x07, 0xd8,
0xac, 0xbe, 0x9a, 0x90, 0xa2, 0x79, 0xc1, 0x8c, 0x48, 0xc2, 0xff, 0x35, 0x02, 0xc3, 0x94, 0x8d, 0xa3, 0x58, 0x3d, 0x35, 0x21, 0x45, 0xf3, 0xc3, 0x19, 0x91, 0x84, 0xf7, 0x35, 0x02, 0xc3, 0x94,
0xc3, 0x28, 0x90, 0xc4, 0x1d, 0x8d, 0x48, 0x99, 0xcb, 0x22, 0xaa, 0x19, 0xbb, 0xc2, 0x21, 0xf5, 0x8d, 0xa3, 0x38, 0x94, 0xc4, 0x1b, 0x1a, 0x91, 0x32, 0x8f, 0xc5, 0x54, 0x33, 0x76, 0x8a, 0x23,
0x48, 0xa0, 0xbe, 0x82, 0x66, 0xff, 0x59, 0x82, 0x8d, 0x13, 0x8f, 0x32, 0x47, 0x08, 0x52, 0x07, 0xea, 0x93, 0x50, 0x3d, 0x05, 0xcd, 0xf9, 0xab, 0x02, 0xd7, 0x0e, 0x7d, 0xca, 0x5c, 0x21, 0x48,
0xff, 0x12, 0x61, 0xca, 0x50, 0x17, 0xaa, 0xbe, 0x37, 0xf7, 0x98, 0x69, 0xec, 0x1a, 0xbd, 0xb2, 0x5d, 0xfc, 0x5b, 0x8c, 0x29, 0x43, 0x5d, 0xa8, 0x05, 0xfe, 0xdc, 0x67, 0x96, 0xb1, 0x6d, 0xf4,
0x23, 0x36, 0x68, 0x0b, 0x6a, 0x64, 0x36, 0xa3, 0x98, 0x99, 0xa5, 0x5d, 0xa3, 0xd7, 0x74, 0xe4, 0x4c, 0x57, 0x1c, 0xd0, 0x26, 0xd4, 0xc9, 0x6c, 0x46, 0x31, 0xb3, 0x2a, 0xdb, 0x46, 0xaf, 0xe5,
0x0e, 0x7d, 0x05, 0x75, 0x4a, 0x42, 0x36, 0x3e, 0xbf, 0x36, 0xcb, 0xbb, 0x46, 0xaf, 0x3d, 0xf8, 0xca, 0x13, 0x7a, 0x00, 0x0d, 0x4a, 0x22, 0x36, 0x3e, 0x5e, 0x5a, 0xe6, 0xb6, 0xd1, 0xdb, 0x18,
0xa0, 0x9f, 0x85, 0x53, 0x3f, 0xb6, 0x34, 0x22, 0x21, 0xeb, 0xc7, 0x3f, 0xcf, 0xaf, 0x9d, 0x1a, 0x7c, 0xd2, 0x2f, 0xca, 0x53, 0x3f, 0xb1, 0x34, 0x22, 0x11, 0xeb, 0x27, 0x3f, 0x0f, 0x97, 0x6e,
0xe5, 0xdf, 0x58, 0xef, 0xcc, 0xf3, 0x19, 0x0e, 0xcd, 0x8a, 0xd0, 0x2b, 0x76, 0xe8, 0x10, 0x80, 0x9d, 0xf2, 0x67, 0xa2, 0x77, 0xe6, 0x07, 0x0c, 0x47, 0x56, 0x55, 0xe8, 0x15, 0x27, 0xb4, 0x0f,
0xeb, 0x25, 0xe1, 0x14, 0x87, 0x66, 0x95, 0xab, 0xee, 0x15, 0x50, 0xfd, 0x32, 0xe6, 0x77, 0x9a, 0xc0, 0xf5, 0x92, 0x68, 0x8a, 0x23, 0xab, 0xc6, 0x55, 0xf7, 0x4a, 0xa8, 0x7e, 0x92, 0xf0, 0xbb,
0x54, 0x2d, 0xd1, 0x97, 0xb0, 0x2a, 0x20, 0x19, 0x4f, 0xc8, 0x14, 0x53, 0xb3, 0xb6, 0x5b, 0xee, 0x2d, 0xaa, 0x5e, 0xd1, 0x7d, 0x58, 0x17, 0x29, 0x19, 0x4f, 0xc8, 0x14, 0x53, 0xab, 0xbe, 0x6d,
0xb5, 0x07, 0x3b, 0x42, 0x95, 0x82, 0x7f, 0x24, 0x40, 0x3b, 0x20, 0x53, 0xec, 0xb4, 0x04, 0x7b, 0xf6, 0x36, 0x06, 0x37, 0x84, 0x2a, 0x95, 0xfe, 0x91, 0x48, 0xda, 0x1e, 0x99, 0x62, 0xb7, 0x2d,
0xbc, 0xa6, 0xe8, 0x11, 0x34, 0x03, 0x77, 0x8e, 0xe9, 0xc2, 0x9d, 0x60, 0xb3, 0xce, 0x3d, 0xbc, 0xd8, 0x93, 0x77, 0x8a, 0x6e, 0x42, 0x2b, 0xf4, 0xe6, 0x98, 0x2e, 0xbc, 0x09, 0xb6, 0x1a, 0xdc,
0x39, 0xb0, 0x7f, 0x82, 0x86, 0x32, 0x6e, 0x0f, 0xa0, 0x26, 0x42, 0x43, 0x2d, 0xa8, 0x9f, 0x9d, 0xc3, 0xb3, 0x0b, 0xe7, 0x25, 0x34, 0x95, 0x71, 0x67, 0x00, 0x75, 0x11, 0x1a, 0x6a, 0x43, 0xe3,
0x7e, 0x73, 0xfa, 0xf2, 0xbb, 0xd3, 0xce, 0x0a, 0x6a, 0x40, 0xe5, 0x74, 0xff, 0xdb, 0x61, 0xc7, 0xd9, 0xd1, 0x0f, 0x47, 0x4f, 0x7e, 0x3a, 0xea, 0xac, 0xa1, 0x26, 0x54, 0x8f, 0x76, 0x7f, 0x1c,
0x40, 0xeb, 0xb0, 0x76, 0xb2, 0x3f, 0x7a, 0x35, 0x76, 0x86, 0x27, 0xc3, 0xfd, 0xd1, 0xf0, 0x45, 0x76, 0x0c, 0x74, 0x15, 0xae, 0x1c, 0xee, 0x8e, 0x9e, 0x8e, 0xdd, 0xe1, 0xe1, 0x70, 0x77, 0x34,
0xa7, 0x64, 0xbf, 0x0b, 0xcd, 0xc4, 0x67, 0x54, 0x87, 0xf2, 0xfe, 0xe8, 0x40, 0x88, 0xbc, 0x18, 0x7c, 0xd4, 0xa9, 0x38, 0x1f, 0x42, 0x2b, 0xf5, 0x19, 0x35, 0xc0, 0xdc, 0x1d, 0xed, 0x09, 0x91,
0x8e, 0x0e, 0x3a, 0x86, 0xfd, 0xbb, 0x01, 0x5d, 0x3d, 0x45, 0x74, 0x41, 0x02, 0x8a, 0xe3, 0x1c, 0x47, 0xc3, 0xd1, 0x5e, 0xc7, 0x70, 0xfe, 0x34, 0xa0, 0xab, 0x43, 0x44, 0x17, 0x24, 0xa4, 0x38,
0x4d, 0x48, 0x14, 0x24, 0x39, 0xe2, 0x1b, 0x84, 0xa0, 0x12, 0xe0, 0xb7, 0x2a, 0x43, 0x7c, 0x1d, 0xc1, 0x68, 0x42, 0xe2, 0x30, 0xc5, 0x88, 0x1f, 0x10, 0x82, 0x6a, 0x88, 0xdf, 0x28, 0x84, 0xf8,
0x73, 0x32, 0xc2, 0x5c, 0x9f, 0x67, 0xa7, 0xec, 0x88, 0x0d, 0xfa, 0x14, 0x1a, 0x32, 0x74, 0x6a, 0x7b, 0xc2, 0xc9, 0x08, 0xf3, 0x02, 0x8e, 0x8e, 0xe9, 0x8a, 0x03, 0xfa, 0x02, 0x9a, 0x32, 0x74,
0x56, 0x76, 0xcb, 0xbd, 0xd6, 0x60, 0x53, 0x07, 0x44, 0x5a, 0x74, 0x12, 0x36, 0xfb, 0x10, 0xb6, 0x6a, 0x55, 0xb7, 0xcd, 0x5e, 0x7b, 0x70, 0x5d, 0x4f, 0x88, 0xb4, 0xe8, 0xa6, 0x6c, 0xce, 0x3e,
0x0f, 0xb1, 0xf2, 0x44, 0xe0, 0xa5, 0x2a, 0x26, 0xb6, 0xeb, 0xce, 0x31, 0x77, 0x26, 0xb6, 0xeb, 0x6c, 0xed, 0x63, 0xe5, 0x89, 0xc8, 0x97, 0xaa, 0x98, 0xc4, 0xae, 0x37, 0xc7, 0xdc, 0x99, 0xc4,
0xce, 0x31, 0x32, 0xa1, 0x2e, 0xcb, 0x8d, 0xbb, 0x53, 0x75, 0xd4, 0xd6, 0x66, 0x60, 0xde, 0x56, 0xae, 0x37, 0xc7, 0xc8, 0x82, 0x86, 0x2c, 0x37, 0xee, 0x4e, 0xcd, 0x55, 0x47, 0x87, 0x81, 0x75,
0x24, 0xe3, 0xca, 0xd2, 0xf4, 0x21, 0x54, 0xe2, 0x9b, 0xc0, 0xd5, 0xb4, 0x06, 0x48, 0xf7, 0xf3, 0x5e, 0x91, 0x8c, 0xab, 0x48, 0xd3, 0xa7, 0x50, 0x4d, 0x3a, 0x81, 0xab, 0x69, 0x0f, 0x90, 0xee,
0x38, 0x98, 0x11, 0x87, 0xd3, 0xf5, 0x54, 0x95, 0x97, 0x53, 0x75, 0x94, 0xb6, 0x7a, 0x40, 0x02, 0xe7, 0xe3, 0x70, 0x46, 0x5c, 0x4e, 0xd7, 0xa1, 0x32, 0xf3, 0x50, 0x1d, 0x64, 0xad, 0xee, 0x91,
0x86, 0x03, 0xf6, 0x30, 0xff, 0x4f, 0x60, 0x27, 0x43, 0x93, 0x0c, 0x60, 0x0f, 0xea, 0xd2, 0x35, 0x90, 0xe1, 0x90, 0x5d, 0xce, 0xff, 0x43, 0xb8, 0x51, 0xa0, 0x49, 0x06, 0xb0, 0x03, 0x0d, 0xe9,
0xae, 0x2d, 0x17, 0x57, 0xc5, 0x65, 0xff, 0x5d, 0x82, 0xee, 0xd9, 0x62, 0xea, 0x32, 0xac, 0x48, 0x1a, 0xd7, 0xb6, 0x32, 0xaf, 0x8a, 0xcb, 0xf9, 0xa3, 0x0a, 0xdd, 0x67, 0x8b, 0xa9, 0xc7, 0xb0,
0x77, 0x38, 0xf5, 0x18, 0xaa, 0xbc, 0xa3, 0x48, 0x2c, 0xd6, 0x85, 0x6e, 0xd1, 0x76, 0x0e, 0xe2, 0x22, 0x5d, 0xe0, 0xd4, 0x2d, 0xa8, 0xf1, 0x89, 0x22, 0x73, 0x71, 0x55, 0xe8, 0x16, 0x63, 0x67,
0x5f, 0x47, 0xd0, 0xd1, 0x53, 0xa8, 0x5d, 0xb9, 0x7e, 0x84, 0x29, 0x07, 0x22, 0x41, 0x4d, 0x72, 0x2f, 0xf9, 0x75, 0x05, 0x1d, 0xdd, 0x81, 0xfa, 0xa9, 0x17, 0xc4, 0x98, 0xf2, 0x44, 0xa4, 0x59,
0xf2, 0x76, 0xe4, 0x48, 0x0e, 0xb4, 0x0d, 0xf5, 0x69, 0x78, 0x1d, 0xf7, 0x13, 0x7e, 0x05, 0x1b, 0x93, 0x9c, 0x7c, 0x1c, 0xb9, 0x92, 0x03, 0x6d, 0x41, 0x63, 0x1a, 0x2d, 0x93, 0x79, 0xc2, 0x5b,
0x4e, 0x6d, 0x1a, 0x5e, 0x3b, 0x51, 0x80, 0xde, 0x87, 0xb5, 0xa9, 0x47, 0xdd, 0x73, 0x1f, 0x8f, 0xb0, 0xe9, 0xd6, 0xa7, 0xd1, 0xd2, 0x8d, 0x43, 0xf4, 0x31, 0x5c, 0x99, 0xfa, 0xd4, 0x3b, 0x0e,
0x2f, 0x09, 0x79, 0x43, 0xf9, 0x2d, 0x6c, 0x38, 0xab, 0xf2, 0xf0, 0x28, 0x3e, 0x43, 0x56, 0x5c, 0xf0, 0xf8, 0x15, 0x21, 0xaf, 0x29, 0xef, 0xc2, 0xa6, 0xbb, 0x2e, 0x2f, 0x0f, 0x92, 0x3b, 0x64,
0x49, 0x93, 0x10, 0xbb, 0x0c, 0x9b, 0x35, 0x4e, 0x4f, 0xf6, 0x31, 0x86, 0xcc, 0x9b, 0x63, 0x12, 0x27, 0x95, 0x34, 0x89, 0xb0, 0xc7, 0xb0, 0x55, 0xe7, 0xf4, 0xf4, 0x9c, 0xe4, 0x90, 0xf9, 0x73,
0x31, 0x7e, 0x75, 0xca, 0x8e, 0xda, 0xa2, 0xf7, 0x60, 0x35, 0xc4, 0x14, 0xb3, 0xb1, 0xf4, 0xb2, 0x4c, 0x62, 0xc6, 0x5b, 0xc7, 0x74, 0xd5, 0x11, 0x7d, 0x04, 0xeb, 0x11, 0xa6, 0x98, 0x8d, 0xa5,
0xc1, 0x25, 0x5b, 0xfc, 0xec, 0xb5, 0x70, 0x0b, 0x41, 0xe5, 0x57, 0xd7, 0x63, 0x66, 0x93, 0x93, 0x97, 0x4d, 0x2e, 0xd9, 0xe6, 0x77, 0xcf, 0x85, 0x5b, 0x08, 0xaa, 0xbf, 0x7b, 0x3e, 0xb3, 0x5a,
0xf8, 0x5a, 0x88, 0x45, 0x14, 0x2b, 0x31, 0x50, 0x62, 0x11, 0xc5, 0x52, 0xac, 0x0b, 0xd5, 0x19, 0x9c, 0xc4, 0xdf, 0x85, 0x58, 0x4c, 0xb1, 0x12, 0x03, 0x25, 0x16, 0x53, 0x2c, 0xc5, 0xba, 0x50,
0x09, 0x27, 0xd8, 0x6c, 0x71, 0x9a, 0xd8, 0xd8, 0x47, 0xb0, 0xb9, 0x04, 0xf2, 0x43, 0xf3, 0xf5, 0x9b, 0x91, 0x68, 0x82, 0xad, 0x36, 0xa7, 0x89, 0x03, 0x7a, 0x01, 0x6d, 0x2f, 0x0c, 0x09, 0xf3,
0x8f, 0x01, 0x5b, 0x0e, 0xf1, 0xfd, 0x73, 0x77, 0xf2, 0xa6, 0x40, 0xc6, 0x52, 0xe0, 0x96, 0xee, 0x98, 0x4f, 0x42, 0x6a, 0xad, 0xf3, 0x92, 0xff, 0xae, 0x78, 0x9c, 0x14, 0xa1, 0xd1, 0xdf, 0x3d,
0x06, 0xb7, 0x9c, 0x01, 0x6e, 0xaa, 0x08, 0x2b, 0x5a, 0x11, 0x6a, 0xb0, 0x57, 0xf3, 0x61, 0xaf, 0x93, 0x1e, 0x86, 0x2c, 0x5a, 0xba, 0x59, 0x7d, 0xf6, 0x03, 0xe8, 0xe4, 0x19, 0x50, 0x07, 0xcc,
0xe9, 0xb0, 0x2b, 0x4c, 0xeb, 0x29, 0x4c, 0x13, 0xc0, 0x1a, 0x69, 0xc0, 0xbe, 0x86, 0xed, 0x5b, 0xd7, 0x78, 0x29, 0xe1, 0x4b, 0x5e, 0x13, 0xd7, 0xb8, 0xdf, 0xb2, 0x3f, 0xc5, 0xe1, 0xdb, 0xca,
0x51, 0x3e, 0x14, 0xb2, 0x3f, 0x4a, 0xb0, 0x79, 0x1c, 0x50, 0xe6, 0xfa, 0xfe, 0x12, 0x62, 0x49, 0xd7, 0x86, 0x73, 0x00, 0xd7, 0x73, 0x56, 0x2f, 0x5b, 0x4e, 0xff, 0x1a, 0xb0, 0xe9, 0x92, 0x20,
0x3d, 0x1b, 0x85, 0xeb, 0xb9, 0xf4, 0x5f, 0xea, 0xb9, 0xac, 0x41, 0xae, 0xf2, 0x53, 0x49, 0xe5, 0x38, 0xf6, 0x26, 0xaf, 0x4b, 0x14, 0x54, 0x06, 0xfb, 0xca, 0xc5, 0xd8, 0x9b, 0x05, 0xd8, 0x67,
0xa7, 0x50, 0x8d, 0x6b, 0x9d, 0xa5, 0xb6, 0xd4, 0x59, 0xd0, 0x3b, 0x00, 0xa2, 0x28, 0xb9, 0x72, 0x7a, 0xa4, 0xaa, 0xf5, 0x88, 0x56, 0x15, 0xb5, 0xd5, 0x55, 0x51, 0xd7, 0xab, 0x42, 0x41, 0xde,
0x01, 0x6d, 0x93, 0x9f, 0x9c, 0xca, 0x46, 0xa2, 0xb2, 0xd1, 0xc8, 0xce, 0x46, 0xaa, 0xc2, 0xed, 0xc8, 0x40, 0x9e, 0xe2, 0xd9, 0xcc, 0xe0, 0xe9, 0x7c, 0x0f, 0x5b, 0xe7, 0xa2, 0xbc, 0x6c, 0xca,
0x63, 0xd8, 0x5a, 0x86, 0xea, 0xa1, 0xb0, 0xff, 0x66, 0xc0, 0xf6, 0x59, 0xe0, 0x65, 0x02, 0x9f, 0xfe, 0x36, 0xe1, 0xfa, 0xe3, 0x90, 0x32, 0x2f, 0x08, 0x72, 0x19, 0x4b, 0xdb, 0xcd, 0x28, 0xdd,
0x55, 0xaa, 0xb7, 0xa0, 0x28, 0x65, 0x40, 0xd1, 0x85, 0xea, 0x22, 0x0a, 0x2f, 0xb0, 0x84, 0x56, 0x6e, 0x95, 0x77, 0x69, 0x37, 0x53, 0x4b, 0xb9, 0xc2, 0xa7, 0x9a, 0xc1, 0xa7, 0x54, 0x0b, 0x6a,
0x6c, 0xd2, 0x31, 0x56, 0xb4, 0x18, 0xed, 0x31, 0x98, 0xb7, 0x7d, 0x78, 0x60, 0x44, 0xb1, 0xd7, 0x83, 0xaf, 0x9e, 0x1b, 0x7c, 0xe8, 0x03, 0x00, 0xd1, 0x33, 0x5c, 0xb9, 0x48, 0x6d, 0x8b, 0xdf,
0xc9, 0x4b, 0xd0, 0x14, 0x5d, 0xdf, 0xde, 0x80, 0xf5, 0x43, 0xcc, 0x5e, 0x8b, 0x6b, 0x21, 0xc3, 0x1c, 0xc9, 0x39, 0xa7, 0xd0, 0x68, 0x16, 0xa3, 0x91, 0x6d, 0xc0, 0x97, 0x7a, 0x1f, 0x01, 0xef,
0xb3, 0x87, 0x80, 0xd2, 0x87, 0x37, 0xf6, 0xe4, 0x91, 0x6e, 0x4f, 0x8d, 0x45, 0x8a, 0x5f, 0x71, 0xa3, 0xfb, 0xc5, 0x7d, 0x54, 0x98, 0xd3, 0xff, 0xb9, 0x91, 0x1e, 0xc3, 0x66, 0xde, 0xec, 0xa5,
0xd9, 0x5f, 0x70, 0xdd, 0x47, 0x1e, 0x65, 0x24, 0xbc, 0xbe, 0x0b, 0xba, 0x0e, 0x94, 0xe7, 0xee, 0x07, 0xb3, 0x01, 0x5b, 0xcf, 0x42, 0xbf, 0xb0, 0x30, 0x8a, 0x5a, 0xe9, 0x1c, 0x54, 0x95, 0x02,
0x5b, 0xf9, 0x50, 0xc4, 0x4b, 0xfb, 0x90, 0x7b, 0x90, 0x88, 0x4a, 0x0f, 0xd2, 0xcf, 0xae, 0x51, 0xa8, 0xba, 0x50, 0x5b, 0xc4, 0xd1, 0x09, 0x96, 0xd0, 0x8b, 0x43, 0x16, 0x83, 0xaa, 0x86, 0x81,
0xec, 0xd9, 0xfd, 0x01, 0xd0, 0x2b, 0x9c, 0x4c, 0x00, 0xf7, 0xbc, 0x58, 0x2a, 0x09, 0x25, 0xbd, 0x33, 0x06, 0xeb, 0xbc, 0x0f, 0x97, 0x8c, 0x28, 0xf1, 0x3a, 0xfd, 0x90, 0xb6, 0xc4, 0x47, 0xd3,
0xd0, 0x4c, 0xa8, 0x4f, 0x7c, 0xec, 0x06, 0xd1, 0x42, 0xa6, 0x4d, 0x6d, 0xed, 0x1f, 0x61, 0x43, 0xb9, 0x06, 0x57, 0xf7, 0x31, 0x7b, 0x2e, 0xda, 0x56, 0x86, 0xe7, 0x0c, 0x01, 0x65, 0x2f, 0xcf,
0xd3, 0x2e, 0xfd, 0x8c, 0xe3, 0xa1, 0x17, 0x52, 0x7b, 0xbc, 0x44, 0x9f, 0x43, 0x4d, 0x8c, 0x45, 0xec, 0xc9, 0x2b, 0xdd, 0x9e, 0xda, 0x2a, 0x15, 0xbf, 0xe2, 0x72, 0xbe, 0xe1, 0xba, 0x0f, 0x7c,
0x5c, 0x77, 0x7b, 0xf0, 0x48, 0xf7, 0x9b, 0x2b, 0x89, 0x02, 0x39, 0x47, 0x39, 0x92, 0x77, 0xf0, 0xca, 0x48, 0xb4, 0xbc, 0x28, 0x75, 0x1d, 0x30, 0xe7, 0xde, 0x1b, 0xf9, 0x9d, 0x4d, 0x5e, 0x9d,
0x57, 0x03, 0xda, 0xea, 0xa1, 0x17, 0x43, 0x1b, 0xf2, 0x60, 0x35, 0x3d, 0xd1, 0xa0, 0x27, 0xf9, 0x7d, 0xee, 0x41, 0x2a, 0x2a, 0x3d, 0xc8, 0x6e, 0x2d, 0x46, 0xb9, 0xad, 0xe5, 0x17, 0x40, 0x4f,
0x33, 0xdd, 0xd2, 0x60, 0x6a, 0x3d, 0x2d, 0xc2, 0x2a, 0x22, 0xb0, 0x57, 0x3e, 0x31, 0x10, 0x85, 0x71, 0xba, 0x40, 0xbd, 0xe5, 0x83, 0xaf, 0x40, 0xa8, 0xe8, 0x8d, 0x60, 0x41, 0x63, 0x12, 0x60,
0xce, 0xf2, 0xa0, 0x81, 0x9e, 0x65, 0xeb, 0xc8, 0x99, 0x6c, 0xac, 0x7e, 0x51, 0x76, 0x65, 0x16, 0x2f, 0x8c, 0x17, 0x12, 0x36, 0x75, 0x74, 0x5e, 0xc0, 0x35, 0x4d, 0xbb, 0xf4, 0x33, 0x89, 0x87,
0x5d, 0xf1, 0x9a, 0xd1, 0xa7, 0x03, 0x74, 0xaf, 0x1a, 0x7d, 0x20, 0xb1, 0xf6, 0x0a, 0xf3, 0x27, 0x9e, 0xa8, 0x8a, 0x9d, 0xd3, 0x13, 0xf4, 0x15, 0xd4, 0xc5, 0x56, 0xc9, 0x75, 0x6f, 0x0c, 0x6e,
0x76, 0x7f, 0x86, 0x35, 0xed, 0x85, 0x43, 0x39, 0x68, 0x65, 0xcd, 0x1a, 0xd6, 0x47, 0x85, 0x78, 0xea, 0x7e, 0x73, 0x25, 0x71, 0x28, 0xd7, 0x50, 0x57, 0xf2, 0x0e, 0xfe, 0x69, 0xc2, 0x86, 0xda,
0x13, 0x5b, 0x73, 0x68, 0xeb, 0x4d, 0x0a, 0xe5, 0x28, 0xc8, 0xec, 0xfa, 0xd6, 0xc7, 0xc5, 0x98, 0x93, 0x44, 0x73, 0x21, 0x1f, 0xd6, 0xb3, 0x0b, 0x21, 0xba, 0xbd, 0x7a, 0x25, 0xce, 0xed, 0xf5,
0x13, 0x73, 0x14, 0x3a, 0xcb, 0x3d, 0x24, 0x2f, 0x8f, 0x39, 0xfd, 0x2e, 0x2f, 0x8f, 0x79, 0xad, 0xf6, 0x9d, 0x32, 0xac, 0x22, 0x02, 0x67, 0xed, 0x73, 0x03, 0x51, 0xe8, 0xe4, 0xf7, 0x34, 0x74,
0xc9, 0x5e, 0x41, 0x2e, 0xc0, 0x4d, 0x0b, 0x41, 0x8f, 0x73, 0x13, 0xa2, 0x77, 0x1e, 0xab, 0x77, 0xaf, 0x58, 0xc7, 0x8a, 0xc5, 0xd0, 0xee, 0x97, 0x65, 0x57, 0x66, 0xd1, 0x29, 0xaf, 0x19, 0x7d,
0x3f, 0x63, 0x62, 0x62, 0x01, 0xff, 0x5b, 0x7a, 0x63, 0x51, 0x0e, 0x34, 0xd9, 0x03, 0x87, 0xf5, 0xb9, 0x42, 0x6f, 0x55, 0xa3, 0xef, 0x73, 0xf6, 0x4e, 0x69, 0xfe, 0xd4, 0xee, 0xaf, 0x70, 0x45,
0xac, 0x20, 0xf7, 0x52, 0x50, 0xb2, 0x2b, 0xdd, 0x11, 0x94, 0xde, 0xf2, 0xee, 0x08, 0x6a, 0xa9, 0xfb, 0x02, 0xa3, 0x3b, 0xe5, 0x97, 0x03, 0xfb, 0x6e, 0x29, 0xde, 0xd4, 0xd6, 0x1c, 0x36, 0xf4,
0xc1, 0xd9, 0x2b, 0xc8, 0x83, 0xb6, 0x13, 0x05, 0xd2, 0x74, 0xdc, 0x16, 0x50, 0x8e, 0xf4, 0xed, 0x21, 0x85, 0xee, 0xbe, 0xc3, 0x04, 0xb5, 0x3f, 0x2b, 0xc7, 0x9c, 0x9a, 0xa3, 0xd0, 0xc9, 0xcf,
0xae, 0x66, 0x3d, 0x29, 0xc0, 0x79, 0x73, 0xbf, 0x9f, 0xc3, 0xf7, 0x0d, 0xc5, 0x7a, 0x5e, 0xe3, 0x90, 0x55, 0x38, 0xae, 0x98, 0x77, 0xab, 0x70, 0x5c, 0x35, 0x9a, 0x9c, 0x35, 0xe4, 0x01, 0x9c,
0xff, 0x69, 0x3f, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x7c, 0x9c, 0x49, 0xc1, 0x0f, 0x00, 0x8d, 0x10, 0x74, 0x6b, 0x25, 0x20, 0xfa, 0xe4, 0xb1, 0x7b, 0x6f, 0x67, 0x4c, 0x4d, 0x2c, 0xe0,
0x00, 0xbd, 0xdc, 0x0e, 0x80, 0x56, 0xa4, 0xa6, 0x78, 0x21, 0xb2, 0xef, 0x95, 0xe4, 0xce, 0x05, 0x25,
0xa7, 0xd2, 0x05, 0x41, 0xe9, 0x23, 0xef, 0x82, 0xa0, 0x72, 0x03, 0xce, 0x59, 0x43, 0x3e, 0x6c,
0xb8, 0x71, 0x28, 0x4d, 0x27, 0x63, 0x01, 0xad, 0x90, 0x3e, 0x3f, 0xd5, 0xec, 0xdb, 0x25, 0x38,
0xcf, 0xfa, 0xfb, 0x21, 0xfc, 0xdc, 0x54, 0xac, 0xc7, 0x75, 0xfe, 0x97, 0xc0, 0x97, 0xff, 0x05,
0x00, 0x00, 0xff, 0xff, 0xde, 0xd5, 0x38, 0x1a, 0x00, 0x11, 0x00, 0x00,
} }

Loading…
Cancel
Save