From 1f9091575a4d7a10bd4a2e45cd2464d39f27f1f9 Mon Sep 17 00:00:00 2001 From: Nguyen Duy Phuong Date: Wed, 10 Apr 2024 16:45:44 +0700 Subject: [PATCH 1/5] add freight ref to promotion status after done with validation Signed-off-by: Nguyen Duy Phuong --- api/v1alpha1/generated.pb.go | 486 ++++++++++-------- api/v1alpha1/generated.proto | 3 + api/v1alpha1/promotion_types.go | 2 + api/v1alpha1/zz_generated.deepcopy.go | 5 + .../crds/kargo.akuity.io_promotions.yaml | 226 ++++++++ .../crds/kargo.akuity.io_stages.yaml | 464 +++++++++++++++++ internal/controller/promotions/promotions.go | 12 +- .../promotions.kargo.akuity.io_v1alpha1.json | 214 ++++++++ .../stages.kargo.akuity.io_v1alpha1.json | 428 +++++++++++++++ ui/src/gen/v1alpha1/generated_pb.ts | 8 + 10 files changed, 1629 insertions(+), 219 deletions(-) diff --git a/api/v1alpha1/generated.pb.go b/api/v1alpha1/generated.pb.go index b4d2370f9..61c927c5c 100644 --- a/api/v1alpha1/generated.pb.go +++ b/api/v1alpha1/generated.pb.go @@ -1811,222 +1811,223 @@ func init() { } var fileDescriptor_e26b7f7bbc391025 = []byte{ - // 3435 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3b, 0x4b, 0x6c, 0x24, 0xc5, - 0xd9, 0xdb, 0x33, 0xe3, 0xb1, 0xe7, 0x1b, 0x3f, 0xcb, 0xde, 0xc5, 0x98, 0x7f, 0xbd, 0xab, 0x86, - 0x1f, 0x41, 0x80, 0x71, 0x76, 0x17, 0xc3, 0xb2, 0x10, 0x88, 0xc7, 0xfb, 0xf2, 0x62, 0x16, 0xa7, - 0xec, 0x5d, 0xc8, 0x02, 0x4a, 0xca, 0x33, 0xe5, 0x99, 0xc6, 0x33, 0xd3, 0x4d, 0x57, 0x8f, 0x17, - 0x07, 0x29, 0x09, 0x49, 0x50, 0xb8, 0x04, 0x25, 0xca, 0x21, 0xe4, 0x9a, 0x44, 0x89, 0x72, 0x48, - 0x6e, 0x39, 0x44, 0x39, 0x20, 0x85, 0x0b, 0xca, 0x21, 0x42, 0x39, 0x11, 0x29, 0x5a, 0x81, 0x73, - 0x8b, 0x44, 0xb8, 0xaf, 0x14, 0x29, 0xaa, 0x47, 0x77, 0x57, 0xf7, 0xf4, 0xd8, 0xdd, 0xc3, 0xee, - 0x8a, 0xdc, 0xec, 0xef, 0x59, 0xf5, 0xd5, 0x57, 0xdf, 0xab, 0x6b, 0xe0, 0xd1, 0x86, 0xe5, 0x35, - 0xbb, 0x9b, 0x95, 0x9a, 0xdd, 0x5e, 0x20, 0xdb, 0x5d, 0xcb, 0xdb, 0x5d, 0xd8, 0x26, 0x6e, 0xc3, - 0x5e, 0x20, 0x8e, 0xb5, 0xb0, 0x73, 0x82, 0xb4, 0x9c, 0x26, 0x39, 0xb1, 0xd0, 0xa0, 0x1d, 0xea, - 0x12, 0x8f, 0xd6, 0x2b, 0x8e, 0x6b, 0x7b, 0x36, 0xba, 0x2f, 0xe4, 0xaa, 0x48, 0xae, 0x8a, 0xe0, - 0xaa, 0x10, 0xc7, 0xaa, 0xf8, 0x5c, 0x73, 0x8f, 0x68, 0xb2, 0x1b, 0x76, 0xc3, 0x5e, 0x10, 0xcc, - 0x9b, 0xdd, 0x2d, 0xf1, 0x9f, 0xf8, 0x47, 0xfc, 0x25, 0x85, 0xce, 0x3d, 0xba, 0x7d, 0x9a, 0x55, - 0x2c, 0xa1, 0xb9, 0x4d, 0x6a, 0x4d, 0xab, 0x43, 0xdd, 0xdd, 0x05, 0x67, 0xbb, 0xc1, 0x01, 0x6c, - 0xa1, 0x4d, 0x3d, 0xb2, 0xb0, 0xd3, 0xb3, 0x94, 0xb9, 0x85, 0x7e, 0x5c, 0x6e, 0xb7, 0xe3, 0x59, - 0x6d, 0xda, 0xc3, 0xf0, 0xd8, 0x41, 0x0c, 0xac, 0xd6, 0xa4, 0x6d, 0x12, 0xe7, 0x33, 0x5f, 0x86, - 0xe9, 0xa5, 0x0e, 0x69, 0xed, 0x32, 0x8b, 0xe1, 0x6e, 0x67, 0xc9, 0x6d, 0x74, 0xdb, 0xb4, 0xe3, - 0xa1, 0xe3, 0x50, 0xe8, 0x90, 0x36, 0x9d, 0x35, 0x8e, 0x1b, 0x0f, 0x94, 0xaa, 0xa3, 0x1f, 0xdc, - 0x38, 0x76, 0x68, 0xef, 0xc6, 0xb1, 0xc2, 0x65, 0xd2, 0xa6, 0x58, 0x60, 0xd0, 0xbd, 0x30, 0xb4, - 0x43, 0x5a, 0x5d, 0x3a, 0x9b, 0x13, 0x24, 0x63, 0x8a, 0x64, 0xe8, 0x2a, 0x07, 0x62, 0x89, 0x33, - 0xbf, 0x9f, 0x8f, 0x88, 0x7f, 0x8e, 0x7a, 0xa4, 0x4e, 0x3c, 0x82, 0xda, 0x50, 0x6c, 0x91, 0x4d, - 0xda, 0x62, 0xb3, 0xc6, 0xf1, 0xfc, 0x03, 0xe5, 0x93, 0xe7, 0x2a, 0x69, 0x4c, 0x5f, 0x49, 0x10, - 0x55, 0x59, 0x15, 0x72, 0xce, 0x75, 0x3c, 0x77, 0xb7, 0x3a, 0xae, 0x16, 0x51, 0x94, 0x40, 0xac, - 0x94, 0xa0, 0x37, 0x0d, 0x28, 0x93, 0x4e, 0xc7, 0xf6, 0x88, 0x67, 0xd9, 0x1d, 0x36, 0x9b, 0x13, - 0x4a, 0x2f, 0x0d, 0xae, 0x74, 0x29, 0x14, 0x26, 0x35, 0x4f, 0x2b, 0xcd, 0x65, 0x0d, 0x83, 0x75, - 0x9d, 0x73, 0x4f, 0x40, 0x59, 0x5b, 0x2a, 0x9a, 0x84, 0xfc, 0x36, 0xdd, 0x95, 0xf6, 0xc5, 0xfc, - 0x4f, 0x34, 0x13, 0x31, 0xa8, 0xb2, 0xe0, 0x99, 0xdc, 0x69, 0x63, 0xee, 0x69, 0x98, 0x8c, 0x2b, - 0xcc, 0xc2, 0x6f, 0xbe, 0x63, 0xc0, 0x8c, 0xb6, 0x0b, 0x4c, 0xb7, 0xa8, 0x4b, 0x3b, 0x35, 0x8a, - 0x16, 0xa0, 0xc4, 0xcf, 0x92, 0x39, 0xa4, 0xe6, 0x1f, 0xf5, 0x94, 0xda, 0x48, 0xe9, 0xb2, 0x8f, - 0xc0, 0x21, 0x4d, 0xe0, 0x16, 0xb9, 0xfd, 0xdc, 0xc2, 0x69, 0x12, 0x46, 0x67, 0xf3, 0x51, 0xb7, - 0x58, 0xe3, 0x40, 0x2c, 0x71, 0xe6, 0x57, 0xe0, 0x6e, 0x7f, 0x3d, 0x1b, 0xb4, 0xed, 0xb4, 0x88, - 0x47, 0xc3, 0x45, 0x1d, 0xe8, 0x7a, 0xe6, 0x04, 0x8c, 0x2d, 0x39, 0x8e, 0x6b, 0xef, 0xd0, 0xfa, - 0xba, 0x47, 0x1a, 0xd4, 0xfc, 0x9e, 0x01, 0x87, 0x97, 0xdc, 0x86, 0xbd, 0x7c, 0x76, 0xc9, 0x71, - 0x2e, 0x52, 0xd2, 0xf2, 0x9a, 0xeb, 0x1e, 0xf1, 0xba, 0x0c, 0x3d, 0x0d, 0x45, 0x26, 0xfe, 0x52, - 0xe2, 0xee, 0xf7, 0x3d, 0x44, 0xe2, 0x6f, 0xde, 0x38, 0x36, 0x93, 0xc0, 0x48, 0xb1, 0xe2, 0x42, - 0x0f, 0xc2, 0x70, 0x9b, 0x32, 0x46, 0x1a, 0xfe, 0x9e, 0x27, 0x94, 0x80, 0xe1, 0xe7, 0x24, 0x18, - 0xfb, 0x78, 0xf3, 0x2f, 0x39, 0x98, 0x08, 0x64, 0x29, 0xf5, 0xb7, 0xc1, 0xc0, 0x5d, 0x18, 0x6d, - 0x6a, 0x3b, 0x14, 0x76, 0x2e, 0x9f, 0x7c, 0x32, 0xa5, 0x2f, 0x27, 0x19, 0xa9, 0x3a, 0xa3, 0xd4, - 0x8c, 0xea, 0x50, 0x1c, 0x51, 0x83, 0xda, 0x00, 0x6c, 0xb7, 0x53, 0x53, 0x4a, 0x0b, 0x42, 0xe9, - 0x13, 0x19, 0x95, 0xae, 0x07, 0x02, 0xaa, 0x48, 0xa9, 0x84, 0x10, 0x86, 0x35, 0x05, 0xe6, 0xef, - 0x0d, 0x98, 0x4e, 0xe0, 0x43, 0x4f, 0xc5, 0xce, 0xf3, 0xbe, 0x9e, 0xf3, 0x44, 0x3d, 0x6c, 0xe1, - 0x69, 0x3e, 0x0c, 0x23, 0x2e, 0xdd, 0xb1, 0x98, 0x65, 0x77, 0x94, 0x85, 0x27, 0x15, 0xff, 0x08, - 0x56, 0x70, 0x1c, 0x50, 0xa0, 0x87, 0xa0, 0xe4, 0xff, 0xcd, 0xcd, 0x9c, 0xe7, 0xee, 0xcc, 0x0f, - 0xce, 0x27, 0x65, 0x38, 0xc4, 0x9b, 0x9f, 0x1a, 0xda, 0xe9, 0x5f, 0x71, 0xea, 0xc4, 0xa3, 0xdc, - 0x79, 0x88, 0xe3, 0x5c, 0x0e, 0x9d, 0x39, 0x70, 0x9e, 0x25, 0x09, 0xc6, 0x3e, 0x1e, 0x9d, 0x86, - 0x51, 0xf5, 0xa7, 0xf4, 0x15, 0xb9, 0xba, 0xe0, 0x60, 0x96, 0x34, 0x1c, 0x8e, 0x50, 0xa2, 0x2e, - 0x8c, 0x31, 0xbb, 0xeb, 0xd6, 0xa8, 0x54, 0x2a, 0x57, 0x5a, 0x3e, 0x79, 0x3a, 0xcb, 0xd9, 0xac, - 0x6b, 0x02, 0xaa, 0x87, 0x95, 0xd2, 0x31, 0x1d, 0xca, 0x70, 0x54, 0x8b, 0xf9, 0x1a, 0x80, 0xe4, - 0xbd, 0x48, 0x5b, 0x6d, 0x54, 0x83, 0xa2, 0xd5, 0x26, 0x0d, 0xea, 0xc7, 0xf3, 0x4c, 0xee, 0xc8, - 0x25, 0xac, 0x70, 0x6e, 0xb5, 0x80, 0x20, 0x8a, 0x0b, 0x20, 0xc3, 0x4a, 0xb4, 0xf9, 0x6e, 0x70, - 0xcb, 0x63, 0x1c, 0x3c, 0xe8, 0x08, 0x1a, 0x65, 0xe6, 0x20, 0xe8, 0x08, 0x1a, 0x2c, 0x71, 0xe8, - 0xa8, 0x8c, 0x98, 0xd2, 0xb2, 0x65, 0x45, 0x92, 0x7f, 0x96, 0xee, 0xca, 0xf0, 0xf9, 0xa4, 0x1f, - 0x3e, 0x65, 0xe0, 0xfa, 0xff, 0x48, 0x3e, 0xe3, 0x71, 0x42, 0x53, 0x28, 0x60, 0x1b, 0xbb, 0x4e, - 0x90, 0xe7, 0xde, 0xf0, 0x0f, 0xff, 0xd9, 0x2e, 0xf3, 0xec, 0xb6, 0xf5, 0x2d, 0x8a, 0x9a, 0x31, - 0x93, 0x7c, 0x35, 0x8b, 0x49, 0x02, 0x31, 0x69, 0xec, 0xe2, 0xc2, 0x5c, 0x7f, 0xae, 0x74, 0xb6, - 0x59, 0x80, 0x52, 0x97, 0xd1, 0xb3, 0x56, 0x83, 0x32, 0x4f, 0x58, 0x68, 0x24, 0x8c, 0x53, 0x57, - 0x7c, 0x04, 0x0e, 0x69, 0xcc, 0x7f, 0xe5, 0x00, 0xf5, 0xfa, 0x0e, 0xf7, 0x78, 0x97, 0x3a, 0xf6, - 0x15, 0xbc, 0x1a, 0xf7, 0x78, 0x2c, 0xc1, 0xd8, 0xc7, 0xf3, 0x75, 0xd5, 0x9a, 0xc4, 0xf5, 0xe2, - 0xf5, 0xc3, 0x32, 0x07, 0x62, 0x89, 0x43, 0x6b, 0x30, 0xd3, 0x15, 0x92, 0x37, 0x88, 0xdb, 0xa0, - 0x9e, 0x7f, 0xf3, 0xc4, 0x19, 0x8d, 0x54, 0xff, 0x4f, 0xf1, 0xcc, 0x5c, 0x49, 0xa0, 0xc1, 0x89, - 0x9c, 0x68, 0x13, 0x4a, 0xdb, 0xbe, 0x99, 0x54, 0x18, 0x5b, 0x1c, 0xe8, 0x64, 0x64, 0x2c, 0x08, - 0xfe, 0xc5, 0xa1, 0x58, 0x74, 0x19, 0x0a, 0x4d, 0xda, 0x6a, 0xcf, 0x0e, 0x09, 0xf1, 0x5f, 0xce, - 0x7a, 0x17, 0xaa, 0x23, 0x3c, 0xe4, 0xf3, 0xbf, 0xb0, 0x90, 0x63, 0x7e, 0x07, 0xa4, 0x55, 0xb2, - 0x98, 0xf7, 0xe0, 0x44, 0xf2, 0x20, 0x0c, 0xef, 0x50, 0x37, 0x30, 0xa7, 0x26, 0xec, 0xaa, 0x04, - 0x63, 0x1f, 0x6f, 0xfe, 0xda, 0x80, 0x29, 0xb1, 0x82, 0xf5, 0xee, 0x26, 0xab, 0xb9, 0x96, 0xc3, - 0x0b, 0x91, 0x5b, 0xbb, 0x9a, 0xb3, 0x30, 0xc9, 0x68, 0x7b, 0x87, 0xba, 0xcb, 0x76, 0x87, 0x79, - 0x2e, 0xb1, 0x3a, 0x9e, 0x5a, 0xd6, 0xac, 0xa2, 0x9e, 0x5c, 0x8f, 0xe1, 0x71, 0x0f, 0x87, 0xf9, - 0xab, 0x02, 0x0c, 0x9f, 0x77, 0xa9, 0xd5, 0x68, 0x7a, 0xe8, 0x9b, 0x30, 0xd2, 0x56, 0xf5, 0x9a, - 0x58, 0x1f, 0x3f, 0x09, 0x59, 0x24, 0x57, 0xf4, 0x22, 0xb9, 0xe2, 0x6c, 0x37, 0x38, 0x80, 0x55, - 0x38, 0x75, 0x65, 0xe7, 0x44, 0xe5, 0xf9, 0xcd, 0x57, 0x69, 0xcd, 0xe3, 0xb5, 0x5e, 0x98, 0xa6, - 0x42, 0x18, 0x0e, 0xa4, 0x72, 0x17, 0x26, 0x2d, 0x8b, 0xb0, 0xd9, 0xe1, 0xa8, 0x0b, 0x2f, 0x71, - 0x20, 0x96, 0x38, 0x7e, 0xb5, 0xae, 0x13, 0x97, 0x36, 0xed, 0x2e, 0xa3, 0xb3, 0x23, 0xd1, 0x12, - 0xe0, 0x05, 0x1f, 0x81, 0x43, 0x1a, 0x74, 0x0d, 0x86, 0x6b, 0x76, 0xbb, 0x6d, 0x79, 0x7e, 0x28, - 0x5f, 0x48, 0xe7, 0x40, 0x17, 0x2c, 0x6f, 0x59, 0xf0, 0x85, 0xe7, 0x20, 0xff, 0x67, 0xd8, 0x17, - 0x88, 0xd6, 0x83, 0xa0, 0x54, 0x10, 0xa2, 0x1f, 0x4a, 0x27, 0x5a, 0xc4, 0x8a, 0x7e, 0xf1, 0x87, - 0x0b, 0x15, 0xb7, 0x95, 0xcd, 0x0e, 0x65, 0x11, 0x2a, 0x1c, 0x2a, 0x14, 0x2a, 0xfe, 0x65, 0x58, - 0x89, 0x42, 0x2f, 0x05, 0x89, 0xbe, 0x28, 0xce, 0xee, 0x54, 0x3a, 0xa1, 0xea, 0xf0, 0x55, 0x95, - 0x31, 0x1e, 0xad, 0x0e, 0xfc, 0x3a, 0xc0, 0x7c, 0xcf, 0x80, 0xb2, 0xa2, 0x5c, 0xb5, 0x98, 0x87, - 0x5e, 0xee, 0x71, 0x95, 0x4a, 0x3a, 0x57, 0xe1, 0xdc, 0xc2, 0x51, 0x82, 0x3a, 0xc2, 0x87, 0x68, - 0x6e, 0x82, 0x61, 0xc8, 0xf2, 0x68, 0xdb, 0x6f, 0x3b, 0x1e, 0xc9, 0xb4, 0x13, 0x2d, 0x60, 0x73, - 0x19, 0x58, 0x8a, 0x32, 0x3f, 0x2d, 0xc0, 0xa4, 0xa2, 0xc8, 0x50, 0x39, 0x47, 0x9d, 0xb1, 0x98, - 0xcd, 0x19, 0x73, 0xb7, 0xcf, 0x19, 0xf3, 0xb7, 0xc3, 0x19, 0x0b, 0xb7, 0xce, 0x19, 0x5f, 0x87, - 0xc9, 0x1d, 0xea, 0x5a, 0x5b, 0x56, 0x4d, 0xb4, 0x60, 0x2b, 0x9d, 0x2d, 0x5b, 0x05, 0xf7, 0xc7, - 0xd2, 0x89, 0xbf, 0x1a, 0xe3, 0xae, 0xce, 0xf0, 0x80, 0x16, 0x87, 0xe2, 0x1e, 0x2d, 0xe8, 0x2d, - 0x03, 0xa6, 0x75, 0xe0, 0x45, 0x8b, 0x79, 0xb6, 0xbb, 0x3b, 0x3b, 0x2c, 0x36, 0x37, 0xa8, 0xf6, - 0x7b, 0xd4, 0x3e, 0xa7, 0xaf, 0xf6, 0x8a, 0xc6, 0x49, 0xfa, 0xcc, 0x7f, 0xe7, 0x61, 0x2c, 0x72, - 0xb7, 0xd0, 0x75, 0x00, 0x49, 0x48, 0xeb, 0x2b, 0x1d, 0x55, 0xe3, 0x2c, 0x0f, 0x70, 0x49, 0xd5, - 0xea, 0xb8, 0x14, 0xd9, 0x4a, 0x07, 0x31, 0x37, 0x44, 0x60, 0x4d, 0x15, 0x7a, 0x03, 0xca, 0x44, - 0x75, 0x7f, 0xe7, 0x6d, 0x57, 0xb9, 0xe5, 0xd9, 0x41, 0x34, 0x2f, 0x85, 0x62, 0xe2, 0x5d, 0x7c, - 0x88, 0xc1, 0xba, 0xb6, 0x39, 0x17, 0x26, 0x62, 0xeb, 0x4d, 0xe8, 0xc4, 0x57, 0xf4, 0x4e, 0x3c, - 0x75, 0xe8, 0xf2, 0xe5, 0x8a, 0x96, 0x56, 0x6f, 0xff, 0x19, 0x4c, 0xc6, 0x57, 0x7a, 0xcb, 0x94, - 0x46, 0xfa, 0x68, 0x7d, 0x66, 0xf0, 0x87, 0x1c, 0x94, 0x82, 0x4b, 0x9c, 0x25, 0xd5, 0xcf, 0x41, - 0xce, 0xaa, 0xab, 0x44, 0x0f, 0x8a, 0x2a, 0xb7, 0x72, 0x16, 0xe7, 0xac, 0x3a, 0xba, 0x1f, 0x8a, - 0x9b, 0x2e, 0xe9, 0xd4, 0x9a, 0x2a, 0xb5, 0x07, 0xf7, 0xad, 0x2a, 0xa0, 0x58, 0x61, 0x79, 0xa9, - 0xee, 0x91, 0x86, 0x28, 0xcf, 0xb4, 0x52, 0x7d, 0x83, 0x34, 0x30, 0x87, 0xa3, 0x0b, 0x30, 0x25, - 0x7b, 0xd3, 0xe5, 0x26, 0xad, 0x6d, 0xcb, 0x25, 0x8a, 0xfb, 0x58, 0xaa, 0xde, 0xad, 0x88, 0xa7, - 0x2e, 0xc6, 0x09, 0x70, 0x2f, 0x8f, 0xde, 0xdd, 0x17, 0xf7, 0xef, 0xee, 0xf9, 0xd2, 0x49, 0xd7, - 0x6b, 0xda, 0xae, 0x4a, 0xf6, 0xc1, 0xd2, 0x97, 0x04, 0x14, 0x2b, 0xac, 0x39, 0x0d, 0x53, 0x17, - 0x2c, 0xef, 0x62, 0x77, 0x73, 0xad, 0xdb, 0x6a, 0x61, 0xfa, 0x5a, 0x97, 0x57, 0xcb, 0x12, 0xb8, - 0x4a, 0x22, 0xc0, 0xdf, 0x0c, 0xc1, 0xd8, 0x05, 0xcb, 0x13, 0x06, 0xcc, 0x5c, 0x3d, 0xaf, 0xc3, - 0x61, 0xab, 0xc3, 0x68, 0xad, 0xeb, 0xd2, 0xf5, 0x6d, 0xcb, 0xd9, 0x58, 0x5d, 0x17, 0xee, 0xb3, - 0xab, 0x8a, 0xf7, 0xa3, 0x8a, 0xf1, 0xf0, 0x4a, 0x12, 0x11, 0x4e, 0xe6, 0x45, 0x27, 0x01, 0x5c, - 0x4a, 0xea, 0x55, 0xfd, 0x88, 0x82, 0xdb, 0x88, 0x03, 0x0c, 0xd6, 0xa8, 0xd0, 0x22, 0x94, 0xaf, - 0xbb, 0x96, 0x47, 0x15, 0x93, 0x3c, 0xb2, 0xe0, 0x1e, 0xbd, 0x10, 0xa2, 0xb0, 0x4e, 0x87, 0x76, - 0xa0, 0xec, 0x84, 0xb6, 0x50, 0xc1, 0x34, 0x65, 0xf8, 0xd0, 0x8c, 0xb8, 0xe6, 0xda, 0x6d, 0x9b, - 0xc7, 0xa9, 0xe7, 0x68, 0xad, 0x49, 0x3a, 0x16, 0x6b, 0x57, 0x27, 0xb8, 0x5e, 0x8d, 0x04, 0xeb, - 0x8a, 0x50, 0x03, 0x8a, 0x2e, 0xed, 0xd4, 0xa9, 0xab, 0xca, 0x8a, 0x94, 0x2a, 0x9f, 0xe5, 0x20, - 0x2c, 0x18, 0x13, 0x54, 0x02, 0xf7, 0x03, 0x89, 0xc5, 0x4a, 0x3c, 0xea, 0xe8, 0x7d, 0xc6, 0xb0, - 0xd0, 0xb5, 0x94, 0x52, 0x97, 0xcf, 0x96, 0xa0, 0xa9, 0x7f, 0xcf, 0x71, 0x4d, 0xf5, 0x1c, 0x23, - 0x42, 0xd5, 0x53, 0xe9, 0x54, 0xf1, 0x1e, 0x23, 0x41, 0x4b, 0xbc, 0xff, 0xf8, 0x73, 0x01, 0x26, - 0x2e, 0x58, 0x03, 0x17, 0xff, 0x1e, 0xdc, 0x25, 0x53, 0xfe, 0x3a, 0x6d, 0xd1, 0x1a, 0xe7, 0x5e, - 0xf7, 0x5c, 0xe2, 0xd1, 0x86, 0xdf, 0x8c, 0x9f, 0x51, 0xac, 0x77, 0x2d, 0x27, 0x93, 0xdd, 0xec, - 0x8f, 0xc2, 0xfd, 0x44, 0xa7, 0x8e, 0x35, 0x49, 0x8d, 0x47, 0x21, 0x6b, 0xe3, 0xc1, 0x0b, 0x2b, - 0xd2, 0x6a, 0xd9, 0xd7, 0x37, 0x48, 0x83, 0xa9, 0x50, 0x14, 0x14, 0x56, 0x4b, 0x3e, 0x02, 0x87, - 0x34, 0xa8, 0x02, 0x60, 0x35, 0x3a, 0xb6, 0x4b, 0x05, 0x47, 0x51, 0x4c, 0x97, 0xc6, 0xf9, 0x3d, - 0x5b, 0x09, 0xa0, 0x58, 0xa3, 0xe8, 0x7f, 0xe1, 0x87, 0x3f, 0xc7, 0x85, 0x7f, 0x14, 0x46, 0xad, - 0x4e, 0xad, 0xd5, 0xad, 0xd3, 0x35, 0xe2, 0x35, 0xd9, 0xec, 0x88, 0x58, 0xc6, 0xe4, 0xde, 0x8d, - 0x63, 0xa3, 0x2b, 0x1a, 0x1c, 0x47, 0xa8, 0x38, 0x17, 0x7d, 0x5d, 0xe3, 0x2a, 0x85, 0x5c, 0xe7, - 0x5e, 0xd7, 0xb9, 0x74, 0x2a, 0xf3, 0xaf, 0x06, 0x14, 0x65, 0x50, 0x46, 0x8b, 0xb1, 0x21, 0xde, - 0xd1, 0x9e, 0x21, 0x5e, 0x39, 0x69, 0x16, 0x6b, 0x42, 0xd1, 0x62, 0xac, 0x4b, 0x65, 0x29, 0x5a, - 0x92, 0xd7, 0x6e, 0x45, 0x40, 0xb0, 0xc2, 0x20, 0x0b, 0x80, 0xf8, 0x53, 0x38, 0xbf, 0xae, 0x5c, - 0xcc, 0x3a, 0xa6, 0x8c, 0x8d, 0x28, 0x03, 0x04, 0xc3, 0x9a, 0x70, 0xf3, 0x17, 0x06, 0xdc, 0xcd, - 0x2f, 0x89, 0xa8, 0x15, 0xcf, 0x52, 0x87, 0xdf, 0xfb, 0x4e, 0x6d, 0x57, 0xc5, 0x72, 0x11, 0x4b, - 0x1d, 0x9b, 0x59, 0xa2, 0x5c, 0x33, 0xe2, 0xb1, 0xd4, 0xc7, 0x60, 0x8d, 0x2a, 0x45, 0x97, 0xbc, - 0x00, 0x25, 0x51, 0x92, 0x72, 0x93, 0x2a, 0xbf, 0x0e, 0xdc, 0x6c, 0xd9, 0x47, 0xe0, 0x90, 0xc6, - 0xfc, 0x9b, 0x01, 0x13, 0x03, 0x4d, 0xcb, 0x9e, 0x86, 0x71, 0x51, 0x0c, 0xb0, 0xf3, 0x56, 0x4b, - 0x9c, 0xa0, 0x5a, 0xd5, 0x11, 0x45, 0x3d, 0x7e, 0x35, 0x82, 0xc5, 0x31, 0x6a, 0x7f, 0xda, 0x96, - 0x3f, 0x68, 0xda, 0x56, 0x18, 0x60, 0xda, 0xf6, 0xb1, 0x01, 0x47, 0x92, 0x43, 0x17, 0x7a, 0x25, - 0x36, 0x75, 0x5b, 0x4c, 0x1f, 0x08, 0x53, 0x8c, 0xda, 0x78, 0xfa, 0x50, 0xdd, 0x85, 0x2c, 0x3b, - 0x9f, 0x49, 0x2f, 0x3e, 0xd1, 0x4d, 0xfa, 0x75, 0x1c, 0xe6, 0xef, 0x0c, 0x90, 0xe7, 0x91, 0x25, - 0xd0, 0x9e, 0x04, 0x68, 0xa8, 0x82, 0x02, 0xaf, 0xaa, 0xf3, 0x0a, 0x7c, 0xee, 0x42, 0x80, 0xc1, - 0x1a, 0x95, 0x5f, 0x6a, 0xe5, 0xfb, 0x94, 0x5a, 0xf7, 0x43, 0xb1, 0x2e, 0xa7, 0x82, 0x85, 0x68, - 0x14, 0x55, 0x23, 0x41, 0x85, 0x35, 0xdf, 0x29, 0xc0, 0x94, 0x58, 0xef, 0xa0, 0x49, 0x62, 0x90, - 0xb5, 0x3b, 0x70, 0x44, 0x9c, 0x4b, 0x6f, 0x5e, 0x91, 0xdb, 0x39, 0xad, 0xf8, 0x8f, 0xac, 0x24, - 0x52, 0xdd, 0xec, 0x8b, 0xc1, 0x7d, 0xe4, 0xfe, 0xaf, 0x24, 0x8b, 0x87, 0x61, 0xc4, 0x69, 0x11, - 0x6f, 0xcb, 0x76, 0xdb, 0xaa, 0x5c, 0x0d, 0xe6, 0x13, 0x6b, 0x0a, 0x8e, 0x03, 0x8a, 0xfe, 0xa9, - 0x65, 0x64, 0xf0, 0xd4, 0x62, 0x76, 0xe0, 0x88, 0x56, 0x34, 0xdd, 0xfe, 0x81, 0xf4, 0x5b, 0x06, - 0x1c, 0xdd, 0xb7, 0x4a, 0x43, 0xf5, 0x58, 0x68, 0x78, 0x2a, 0x73, 0xe9, 0x97, 0x66, 0x18, 0xff, - 0x8e, 0x01, 0x33, 0x83, 0xcf, 0xe1, 0x8f, 0x43, 0xc1, 0x09, 0x63, 0x6d, 0x90, 0x01, 0x44, 0x84, - 0x15, 0x98, 0xa8, 0x61, 0xf2, 0x29, 0x0c, 0xf3, 0xa6, 0x01, 0xf7, 0xec, 0x53, 0x52, 0xa2, 0xcd, - 0x98, 0x59, 0xce, 0x64, 0xac, 0x52, 0xd3, 0x18, 0xe5, 0xe7, 0x39, 0x18, 0x5e, 0x73, 0xed, 0x57, - 0x69, 0xed, 0x4e, 0x8c, 0x65, 0x9f, 0x87, 0x02, 0x73, 0x68, 0x4d, 0x35, 0xc2, 0x27, 0x52, 0x36, - 0x15, 0x72, 0x79, 0xeb, 0x0e, 0xad, 0xc9, 0xfa, 0x97, 0xff, 0x85, 0x85, 0x20, 0x6d, 0x16, 0x99, - 0xcf, 0xd2, 0x5b, 0xfb, 0x22, 0x0f, 0x9e, 0x45, 0x2a, 0xca, 0x2f, 0xec, 0x2c, 0x52, 0xad, 0xaf, - 0xcf, 0x2c, 0xf2, 0x47, 0xe1, 0x0e, 0xb8, 0xd1, 0xd0, 0xb7, 0x61, 0xca, 0xf1, 0xfd, 0x6c, 0xcd, - 0x6e, 0x59, 0x35, 0x2b, 0x6b, 0x3a, 0x5e, 0x8b, 0xb0, 0xef, 0x86, 0x5d, 0xfd, 0x5a, 0x5c, 0x2e, - 0xee, 0x55, 0x65, 0xda, 0x30, 0x16, 0x31, 0x3d, 0x3a, 0xe5, 0xbf, 0x49, 0x88, 0x96, 0x9b, 0xf2, - 0x4d, 0xc2, 0xcd, 0x1b, 0xc7, 0x46, 0x15, 0xb9, 0xfe, 0x46, 0x21, 0xcb, 0x97, 0xff, 0x5f, 0xe6, - 0xa0, 0x14, 0xac, 0xec, 0x0e, 0x38, 0xf8, 0x95, 0x88, 0x83, 0x9f, 0xca, 0x68, 0x53, 0xe1, 0xe2, - 0x41, 0x68, 0xd1, 0xdc, 0xfc, 0x95, 0x98, 0x9b, 0x67, 0x3d, 0xac, 0x03, 0x1c, 0xfd, 0x33, 0x43, - 0x9c, 0x8b, 0xa4, 0x15, 0xc3, 0xcd, 0x83, 0xe7, 0xd5, 0x04, 0x86, 0xb7, 0xe4, 0xc8, 0x4e, 0x6d, - 0xf6, 0xb1, 0x4c, 0x73, 0xbe, 0x60, 0x34, 0x1e, 0x1e, 0x9e, 0x8f, 0xf1, 0xe5, 0xa2, 0xaf, 0xdf, - 0x9a, 0x5d, 0x43, 0xc2, 0x8e, 0xdf, 0xd7, 0x77, 0x7c, 0x07, 0x2e, 0xf7, 0x46, 0xf4, 0x72, 0x2f, - 0x64, 0xdc, 0x49, 0x9f, 0xeb, 0xfd, 0xc3, 0x1c, 0x4c, 0xf7, 0xe6, 0x0d, 0x86, 0x18, 0x8c, 0x37, - 0xf4, 0xf1, 0x95, 0x7f, 0xc7, 0x4f, 0xa5, 0xfe, 0x42, 0x10, 0xf2, 0x86, 0x6d, 0x45, 0x04, 0xcc, - 0x70, 0x4c, 0x05, 0x7a, 0x03, 0x26, 0x49, 0xf4, 0x95, 0x85, 0xbf, 0xdb, 0xac, 0x5d, 0x9e, 0x52, - 0x1c, 0xd4, 0x6d, 0x31, 0x04, 0xc3, 0x3d, 0x8a, 0xcc, 0xb7, 0x0d, 0x98, 0x88, 0x85, 0x26, 0x9e, - 0xd6, 0x99, 0x97, 0x90, 0xd6, 0xd5, 0x40, 0x55, 0xe0, 0xd0, 0x1a, 0xcc, 0x90, 0xae, 0x67, 0x07, - 0xbc, 0xe7, 0x3a, 0x64, 0xb3, 0x45, 0xeb, 0xaa, 0xb0, 0x09, 0x3e, 0x63, 0x2f, 0x25, 0xd0, 0xe0, - 0x44, 0x4e, 0xf3, 0x1b, 0x9a, 0x67, 0x89, 0xa0, 0x9b, 0x6a, 0x1d, 0x0f, 0x46, 0xaf, 0x53, 0xa9, - 0xff, 0xb5, 0x30, 0x3f, 0xcb, 0x69, 0x7b, 0x55, 0x71, 0xf4, 0x12, 0xa0, 0x16, 0x61, 0xde, 0x45, - 0xd2, 0xa9, 0xf3, 0x95, 0xd1, 0x2d, 0x97, 0x32, 0x7f, 0xe4, 0x37, 0xa7, 0x24, 0xa1, 0xd5, 0x1e, - 0x0a, 0x9c, 0xc0, 0x85, 0x16, 0xa3, 0x31, 0xf9, 0x58, 0x3c, 0x26, 0x8f, 0x87, 0x86, 0x1e, 0x2c, - 0x2a, 0xa3, 0xd7, 0xb4, 0xbb, 0x96, 0xcf, 0xf2, 0x79, 0x22, 0xb6, 0xed, 0x8a, 0xff, 0xea, 0x4f, - 0x7e, 0x23, 0x08, 0x2e, 0xa0, 0x0f, 0x0e, 0x2f, 0xe0, 0xdc, 0x93, 0x30, 0x16, 0x21, 0xce, 0xf4, - 0x4a, 0xef, 0xef, 0x06, 0x1c, 0xdd, 0x77, 0xb4, 0xc9, 0xeb, 0x10, 0xb9, 0x01, 0x15, 0x3b, 0x1e, - 0x4f, 0x7d, 0xd3, 0xa2, 0xf3, 0x68, 0x19, 0xac, 0x24, 0x18, 0x2b, 0x91, 0x4a, 0x78, 0x8b, 0x6c, - 0xaa, 0x48, 0x9b, 0x5e, 0x78, 0x74, 0xae, 0x1d, 0x08, 0x5f, 0x25, 0x52, 0x78, 0x8b, 0x6c, 0x9a, - 0xef, 0xe6, 0x60, 0x92, 0x5f, 0xe3, 0x48, 0x77, 0xb8, 0x06, 0xf9, 0x86, 0xe5, 0xa9, 0xbd, 0x2c, - 0xa6, 0x56, 0xa7, 0xcb, 0xa8, 0x0e, 0xf3, 0x6e, 0x95, 0xc7, 0x0c, 0x2e, 0x0a, 0xbd, 0xe8, 0xd7, - 0xd8, 0x99, 0xb6, 0xd0, 0xd3, 0xb7, 0x56, 0x4b, 0x3d, 0x85, 0xf9, 0x8b, 0xfe, 0x6b, 0x95, 0x7c, - 0x16, 0xc9, 0x3d, 0x6f, 0x26, 0xa4, 0x64, 0xfd, 0x89, 0x8b, 0xf9, 0xb3, 0x1c, 0xc8, 0x4b, 0x7a, - 0x07, 0x0a, 0x87, 0xaf, 0x45, 0x0a, 0x87, 0x94, 0xf9, 0x41, 0x2c, 0xae, 0x6f, 0xd1, 0x10, 0x4f, - 0x9f, 0x27, 0xb2, 0x08, 0xdd, 0xbf, 0x60, 0xf8, 0x93, 0x01, 0x25, 0x41, 0x77, 0x07, 0x52, 0xe7, - 0x5a, 0x34, 0x75, 0x3e, 0x94, 0x61, 0x17, 0x7d, 0xd2, 0xe6, 0x4f, 0xf3, 0x6a, 0xf5, 0x41, 0x78, - 0x6e, 0x12, 0xb7, 0xae, 0xa2, 0x65, 0x18, 0x9e, 0x39, 0x10, 0x4b, 0x1c, 0x72, 0x60, 0x8c, 0x69, - 0xce, 0xc2, 0xd4, 0x3e, 0x53, 0x26, 0x54, 0xdd, 0xcf, 0x98, 0xf6, 0x8a, 0x4f, 0x07, 0xe3, 0xa8, - 0x02, 0xf4, 0x03, 0x03, 0xa6, 0x9d, 0xde, 0xdc, 0xae, 0x1c, 0xe4, 0x89, 0x8c, 0xf1, 0x32, 0x14, - 0x50, 0xbd, 0x6b, 0xef, 0xc6, 0xb1, 0xa4, 0xaa, 0x01, 0x27, 0xa9, 0x43, 0x4d, 0x18, 0xd5, 0x3f, - 0x3a, 0x2b, 0x57, 0x3a, 0x99, 0xfd, 0xeb, 0xb6, 0x9c, 0x42, 0xeb, 0x10, 0x1c, 0x91, 0x6c, 0xfe, - 0xa4, 0x08, 0x65, 0xcd, 0xf7, 0xfa, 0xa4, 0xb4, 0xf2, 0x40, 0x29, 0xed, 0x44, 0x34, 0xa5, 0xdd, - 0x13, 0x4f, 0x69, 0x20, 0x14, 0x47, 0xd2, 0x99, 0x0b, 0xe3, 0xb5, 0xae, 0xeb, 0xd2, 0x8e, 0x77, - 0xfe, 0x96, 0x94, 0xb9, 0x88, 0x97, 0x50, 0xcb, 0x11, 0x89, 0x38, 0xa6, 0x81, 0xd7, 0xd4, 0x4d, - 0xf5, 0x8a, 0x20, 0x9f, 0xe5, 0x15, 0x41, 0xff, 0x9a, 0xda, 0x7f, 0x39, 0xe0, 0xcb, 0x45, 0x6b, - 0x50, 0x94, 0x1f, 0x5b, 0xd5, 0xe7, 0xa8, 0x87, 0xd3, 0x8e, 0x49, 0x39, 0x8f, 0x4c, 0x20, 0xf2, - 0x6f, 0xac, 0xe4, 0xe8, 0x79, 0xbf, 0x74, 0x40, 0xde, 0xbf, 0x04, 0xc8, 0xde, 0x64, 0xd4, 0xdd, - 0xa1, 0xf5, 0x0b, 0xf2, 0xc7, 0x0e, 0xdc, 0xa5, 0x8a, 0xc7, 0x8d, 0x07, 0xf2, 0xe1, 0x91, 0x3e, - 0xdf, 0x43, 0x81, 0x13, 0xb8, 0x50, 0x17, 0x26, 0x95, 0xf5, 0x02, 0x5f, 0x56, 0x1f, 0xf3, 0xb2, - 0x76, 0x5d, 0xe1, 0xab, 0x8f, 0xe5, 0x98, 0x40, 0xdc, 0xa3, 0x02, 0xb5, 0x60, 0x8c, 0xfb, 0x57, - 0xa8, 0x13, 0x06, 0xd7, 0x39, 0xc5, 0x83, 0xc0, 0xaa, 0x2e, 0x0d, 0x47, 0x85, 0x9b, 0x8b, 0x30, - 0x25, 0xaf, 0x84, 0x9e, 0x9c, 0x0f, 0x7e, 0x85, 0xff, 0x47, 0x03, 0xa2, 0xc1, 0x25, 0xfa, 0xba, - 0xc8, 0x48, 0xf1, 0xba, 0xe8, 0x3a, 0x8c, 0x77, 0x1d, 0xe6, 0xb9, 0x94, 0xb4, 0xc5, 0x0a, 0xfc, - 0xf0, 0xfb, 0x78, 0x96, 0x24, 0xa2, 0xa7, 0xd7, 0xa0, 0x8d, 0xb8, 0x12, 0x11, 0x8b, 0x63, 0x6a, - 0xcc, 0xff, 0xe4, 0x20, 0x12, 0x25, 0xd0, 0xdb, 0x06, 0x4c, 0x91, 0xd8, 0x4f, 0x12, 0xfc, 0x86, - 0xe6, 0x99, 0x6c, 0xbf, 0x13, 0xe9, 0xf9, 0x45, 0x43, 0x38, 0xbe, 0x88, 0x93, 0x30, 0xdc, 0xab, - 0x54, 0xc4, 0x64, 0xd2, 0xfb, 0x9b, 0x93, 0x6c, 0x31, 0x39, 0xe1, 0x47, 0x2b, 0x32, 0x26, 0x27, - 0x20, 0x70, 0x92, 0x3a, 0xf4, 0x12, 0x14, 0x88, 0xdb, 0xf0, 0xbf, 0xa1, 0x65, 0x57, 0xeb, 0xff, - 0x94, 0x28, 0xf4, 0x9d, 0x25, 0xb7, 0xc1, 0xb0, 0x10, 0x6a, 0xfe, 0x23, 0x0f, 0x3d, 0xaf, 0x9f, - 0xd4, 0xcb, 0x91, 0x42, 0xe2, 0xcb, 0x91, 0x7b, 0x61, 0x88, 0xd4, 0xbc, 0xe0, 0xf5, 0x45, 0xf8, - 0xd4, 0x92, 0x03, 0xb1, 0xc4, 0xa1, 0x17, 0xa0, 0xc4, 0x3c, 0xe2, 0x7a, 0x1b, 0x56, 0x9b, 0xaa, - 0x27, 0x05, 0x5f, 0x4a, 0x57, 0x23, 0x70, 0x0e, 0xf9, 0x71, 0x7d, 0xdd, 0x17, 0x80, 0x43, 0x59, - 0xe8, 0x74, 0x34, 0xb2, 0x9b, 0xf1, 0xc8, 0x3e, 0xa5, 0xef, 0x65, 0xd0, 0x7e, 0xa5, 0x0d, 0x65, - 0xed, 0x1c, 0x54, 0x0e, 0x3c, 0x93, 0xd9, 0xee, 0x5a, 0x7c, 0x96, 0xbf, 0x47, 0x0a, 0x31, 0xba, - 0x7c, 0x74, 0x0d, 0x60, 0xcb, 0xea, 0x58, 0xac, 0x29, 0xac, 0x55, 0xcc, 0x6c, 0x2d, 0xf1, 0xfd, - 0xe1, 0x7c, 0x20, 0x01, 0x6b, 0xd2, 0xcc, 0x09, 0x18, 0x8b, 0xbc, 0x66, 0x12, 0x13, 0xb2, 0x20, - 0x02, 0x7c, 0x51, 0x27, 0x64, 0xc1, 0x02, 0x6f, 0xf5, 0x84, 0x2c, 0x14, 0xbc, 0x7f, 0xc1, 0xfb, - 0xbe, 0x01, 0x63, 0x01, 0xed, 0x17, 0x76, 0x5e, 0x14, 0xac, 0xb0, 0x4f, 0xe1, 0xfb, 0x5b, 0x7d, - 0x17, 0xd1, 0xe2, 0x37, 0xb7, 0x4f, 0xf1, 0xcb, 0x7a, 0x8b, 0xdf, 0x0c, 0xc5, 0x49, 0xbc, 0xb9, - 0x4c, 0x57, 0xff, 0x9a, 0xef, 0xe5, 0x60, 0x22, 0x76, 0x3a, 0x7d, 0x4a, 0xc2, 0xe2, 0x40, 0x25, - 0xa1, 0x76, 0xfd, 0xf3, 0x03, 0x95, 0x2d, 0x85, 0x81, 0xca, 0x16, 0x0b, 0xca, 0x7c, 0x31, 0x7e, - 0x4d, 0x39, 0xf4, 0xf9, 0x46, 0xa7, 0x3c, 0x8c, 0xac, 0x86, 0xe2, 0xb0, 0x2e, 0xbb, 0x7a, 0xe9, - 0x83, 0x4f, 0xe6, 0x0f, 0x7d, 0xf8, 0xc9, 0xfc, 0xa1, 0x8f, 0x3e, 0x99, 0x3f, 0xf4, 0xdd, 0xbd, - 0x79, 0xe3, 0x83, 0xbd, 0x79, 0xe3, 0xc3, 0xbd, 0x79, 0xe3, 0xa3, 0xbd, 0x79, 0xe3, 0xe3, 0xbd, - 0x79, 0xe3, 0xc7, 0xff, 0x9c, 0x3f, 0x74, 0xed, 0xbe, 0x34, 0xbf, 0xc7, 0xfd, 0x6f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x54, 0x96, 0x8c, 0x0d, 0xb6, 0x3b, 0x00, 0x00, + // 3455 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x1b, 0x4d, 0x6c, 0x1c, 0x57, + 0x39, 0xb3, 0xbb, 0x59, 0x7b, 0xbf, 0xf5, 0xef, 0xb3, 0x93, 0xba, 0x2e, 0xb1, 0xa3, 0x69, 0xa9, + 0x5a, 0xda, 0xae, 0x49, 0x52, 0xb7, 0x69, 0x5a, 0x5a, 0xbc, 0xce, 0x9f, 0x53, 0x37, 0x35, 0xcf, + 0x4e, 0x5a, 0xd2, 0x56, 0xf0, 0xbc, 0xfb, 0xbc, 0x3b, 0xf5, 0xee, 0xce, 0x74, 0xde, 0xac, 0x53, + 0x53, 0x09, 0x28, 0x50, 0xd1, 0x0b, 0x15, 0x88, 0x03, 0xe5, 0x0a, 0x08, 0xc4, 0x01, 0x6e, 0x1c, + 0x10, 0x87, 0x4a, 0xf4, 0x52, 0x71, 0x40, 0x15, 0xa7, 0x22, 0xa1, 0xa8, 0x35, 0x12, 0x07, 0xa4, + 0xc2, 0x3d, 0x12, 0x12, 0x7a, 0x3f, 0x33, 0xf3, 0x66, 0x76, 0xd6, 0x9e, 0x59, 0x92, 0xa8, 0xdc, + 0xec, 0xef, 0xf7, 0xbd, 0xef, 0x7d, 0xef, 0xfb, 0x9b, 0xb7, 0xf0, 0x68, 0xc3, 0xf2, 0x9a, 0xdd, + 0xcd, 0x4a, 0xcd, 0x6e, 0x2f, 0x90, 0xed, 0xae, 0xe5, 0xed, 0x2e, 0x6c, 0x13, 0xb7, 0x61, 0x2f, + 0x10, 0xc7, 0x5a, 0xd8, 0x39, 0x41, 0x5a, 0x4e, 0x93, 0x9c, 0x58, 0x68, 0xd0, 0x0e, 0x75, 0x89, + 0x47, 0xeb, 0x15, 0xc7, 0xb5, 0x3d, 0x1b, 0xdd, 0x17, 0x72, 0x55, 0x24, 0x57, 0x45, 0x70, 0x55, + 0x88, 0x63, 0x55, 0x7c, 0xae, 0xd9, 0x47, 0x34, 0xd9, 0x0d, 0xbb, 0x61, 0x2f, 0x08, 0xe6, 0xcd, + 0xee, 0x96, 0xf8, 0x4f, 0xfc, 0x23, 0xfe, 0x92, 0x42, 0x67, 0x1f, 0xdd, 0x3e, 0xcd, 0x2a, 0x96, + 0xd0, 0xdc, 0x26, 0xb5, 0xa6, 0xd5, 0xa1, 0xee, 0xee, 0x82, 0xb3, 0xdd, 0xe0, 0x00, 0xb6, 0xd0, + 0xa6, 0x1e, 0x59, 0xd8, 0xe9, 0x59, 0xca, 0xec, 0x42, 0x3f, 0x2e, 0xb7, 0xdb, 0xf1, 0xac, 0x36, + 0xed, 0x61, 0x78, 0xec, 0x20, 0x06, 0x56, 0x6b, 0xd2, 0x36, 0x89, 0xf3, 0x99, 0x2f, 0xc3, 0xd4, + 0x52, 0x87, 0xb4, 0x76, 0x99, 0xc5, 0x70, 0xb7, 0xb3, 0xe4, 0x36, 0xba, 0x6d, 0xda, 0xf1, 0xd0, + 0x71, 0x28, 0x74, 0x48, 0x9b, 0xce, 0x18, 0xc7, 0x8d, 0x07, 0x4a, 0xd5, 0x91, 0x0f, 0x6e, 0xcc, + 0x1f, 0xda, 0xbb, 0x31, 0x5f, 0xb8, 0x4c, 0xda, 0x14, 0x0b, 0x0c, 0xba, 0x17, 0x0e, 0xef, 0x90, + 0x56, 0x97, 0xce, 0xe4, 0x04, 0xc9, 0xa8, 0x22, 0x39, 0x7c, 0x95, 0x03, 0xb1, 0xc4, 0x99, 0xdf, + 0xcd, 0x47, 0xc4, 0x3f, 0x47, 0x3d, 0x52, 0x27, 0x1e, 0x41, 0x6d, 0x28, 0xb6, 0xc8, 0x26, 0x6d, + 0xb1, 0x19, 0xe3, 0x78, 0xfe, 0x81, 0xf2, 0xc9, 0x73, 0x95, 0x34, 0xa6, 0xaf, 0x24, 0x88, 0xaa, + 0xac, 0x0a, 0x39, 0xe7, 0x3a, 0x9e, 0xbb, 0x5b, 0x1d, 0x53, 0x8b, 0x28, 0x4a, 0x20, 0x56, 0x4a, + 0xd0, 0x9b, 0x06, 0x94, 0x49, 0xa7, 0x63, 0x7b, 0xc4, 0xb3, 0xec, 0x0e, 0x9b, 0xc9, 0x09, 0xa5, + 0x97, 0x06, 0x57, 0xba, 0x14, 0x0a, 0x93, 0x9a, 0xa7, 0x94, 0xe6, 0xb2, 0x86, 0xc1, 0xba, 0xce, + 0xd9, 0x27, 0xa0, 0xac, 0x2d, 0x15, 0x4d, 0x40, 0x7e, 0x9b, 0xee, 0x4a, 0xfb, 0x62, 0xfe, 0x27, + 0x9a, 0x8e, 0x18, 0x54, 0x59, 0xf0, 0x4c, 0xee, 0xb4, 0x31, 0xfb, 0x34, 0x4c, 0xc4, 0x15, 0x66, + 0xe1, 0x37, 0xdf, 0x31, 0x60, 0x5a, 0xdb, 0x05, 0xa6, 0x5b, 0xd4, 0xa5, 0x9d, 0x1a, 0x45, 0x0b, + 0x50, 0xe2, 0x67, 0xc9, 0x1c, 0x52, 0xf3, 0x8f, 0x7a, 0x52, 0x6d, 0xa4, 0x74, 0xd9, 0x47, 0xe0, + 0x90, 0x26, 0x70, 0x8b, 0xdc, 0x7e, 0x6e, 0xe1, 0x34, 0x09, 0xa3, 0x33, 0xf9, 0xa8, 0x5b, 0xac, + 0x71, 0x20, 0x96, 0x38, 0xf3, 0x4b, 0x70, 0xb7, 0xbf, 0x9e, 0x0d, 0xda, 0x76, 0x5a, 0xc4, 0xa3, + 0xe1, 0xa2, 0x0e, 0x74, 0x3d, 0x73, 0x1c, 0x46, 0x97, 0x1c, 0xc7, 0xb5, 0x77, 0x68, 0x7d, 0xdd, + 0x23, 0x0d, 0x6a, 0x7e, 0xc7, 0x80, 0x23, 0x4b, 0x6e, 0xc3, 0x5e, 0x3e, 0xbb, 0xe4, 0x38, 0x17, + 0x29, 0x69, 0x79, 0xcd, 0x75, 0x8f, 0x78, 0x5d, 0x86, 0x9e, 0x86, 0x22, 0x13, 0x7f, 0x29, 0x71, + 0xf7, 0xfb, 0x1e, 0x22, 0xf1, 0x37, 0x6f, 0xcc, 0x4f, 0x27, 0x30, 0x52, 0xac, 0xb8, 0xd0, 0x83, + 0x30, 0xd4, 0xa6, 0x8c, 0x91, 0x86, 0xbf, 0xe7, 0x71, 0x25, 0x60, 0xe8, 0x39, 0x09, 0xc6, 0x3e, + 0xde, 0xfc, 0x53, 0x0e, 0xc6, 0x03, 0x59, 0x4a, 0xfd, 0x6d, 0x30, 0x70, 0x17, 0x46, 0x9a, 0xda, + 0x0e, 0x85, 0x9d, 0xcb, 0x27, 0x9f, 0x4c, 0xe9, 0xcb, 0x49, 0x46, 0xaa, 0x4e, 0x2b, 0x35, 0x23, + 0x3a, 0x14, 0x47, 0xd4, 0xa0, 0x36, 0x00, 0xdb, 0xed, 0xd4, 0x94, 0xd2, 0x82, 0x50, 0xfa, 0x44, + 0x46, 0xa5, 0xeb, 0x81, 0x80, 0x2a, 0x52, 0x2a, 0x21, 0x84, 0x61, 0x4d, 0x81, 0xf9, 0x5b, 0x03, + 0xa6, 0x12, 0xf8, 0xd0, 0x53, 0xb1, 0xf3, 0xbc, 0xaf, 0xe7, 0x3c, 0x51, 0x0f, 0x5b, 0x78, 0x9a, + 0x0f, 0xc3, 0xb0, 0x4b, 0x77, 0x2c, 0x66, 0xd9, 0x1d, 0x65, 0xe1, 0x09, 0xc5, 0x3f, 0x8c, 0x15, + 0x1c, 0x07, 0x14, 0xe8, 0x21, 0x28, 0xf9, 0x7f, 0x73, 0x33, 0xe7, 0xb9, 0x3b, 0xf3, 0x83, 0xf3, + 0x49, 0x19, 0x0e, 0xf1, 0xe6, 0xa7, 0x86, 0x76, 0xfa, 0x57, 0x9c, 0x3a, 0xf1, 0x28, 0x77, 0x1e, + 0xe2, 0x38, 0x97, 0x43, 0x67, 0x0e, 0x9c, 0x67, 0x49, 0x82, 0xb1, 0x8f, 0x47, 0xa7, 0x61, 0x44, + 0xfd, 0x29, 0x7d, 0x45, 0xae, 0x2e, 0x38, 0x98, 0x25, 0x0d, 0x87, 0x23, 0x94, 0xa8, 0x0b, 0xa3, + 0xcc, 0xee, 0xba, 0x35, 0x2a, 0x95, 0xca, 0x95, 0x96, 0x4f, 0x9e, 0xce, 0x72, 0x36, 0xeb, 0x9a, + 0x80, 0xea, 0x11, 0xa5, 0x74, 0x54, 0x87, 0x32, 0x1c, 0xd5, 0x62, 0xbe, 0x06, 0x20, 0x79, 0x2f, + 0xd2, 0x56, 0x1b, 0xd5, 0xa0, 0x68, 0xb5, 0x49, 0x83, 0xfa, 0xf1, 0x3c, 0x93, 0x3b, 0x72, 0x09, + 0x2b, 0x9c, 0x5b, 0x2d, 0x20, 0x88, 0xe2, 0x02, 0xc8, 0xb0, 0x12, 0x6d, 0xbe, 0x1b, 0xdc, 0xf2, + 0x18, 0x07, 0x0f, 0x3a, 0x82, 0x46, 0x99, 0x39, 0x08, 0x3a, 0x82, 0x06, 0x4b, 0x1c, 0x3a, 0x26, + 0x23, 0xa6, 0xb4, 0x6c, 0x59, 0x91, 0xe4, 0x9f, 0xa5, 0xbb, 0x32, 0x7c, 0x3e, 0xe9, 0x87, 0x4f, + 0x19, 0xb8, 0x3e, 0x1f, 0xc9, 0x67, 0x3c, 0x4e, 0x68, 0x0a, 0x05, 0x6c, 0x63, 0xd7, 0x09, 0xf2, + 0xdc, 0x1b, 0xfe, 0xe1, 0x3f, 0xdb, 0x65, 0x9e, 0xdd, 0xb6, 0xbe, 0x41, 0x51, 0x33, 0x66, 0x92, + 0x2f, 0x67, 0x31, 0x49, 0x20, 0x26, 0x8d, 0x5d, 0x5c, 0x98, 0xed, 0xcf, 0x95, 0xce, 0x36, 0x0b, + 0x50, 0xea, 0x32, 0x7a, 0xd6, 0x6a, 0x50, 0xe6, 0x09, 0x0b, 0x0d, 0x87, 0x71, 0xea, 0x8a, 0x8f, + 0xc0, 0x21, 0x8d, 0xf9, 0xcf, 0x1c, 0xa0, 0x5e, 0xdf, 0xe1, 0x1e, 0xef, 0x52, 0xc7, 0xbe, 0x82, + 0x57, 0xe3, 0x1e, 0x8f, 0x25, 0x18, 0xfb, 0x78, 0xbe, 0xae, 0x5a, 0x93, 0xb8, 0x5e, 0xbc, 0x7e, + 0x58, 0xe6, 0x40, 0x2c, 0x71, 0x68, 0x0d, 0xa6, 0xbb, 0x42, 0xf2, 0x06, 0x71, 0x1b, 0xd4, 0xf3, + 0x6f, 0x9e, 0x38, 0xa3, 0xe1, 0xea, 0xe7, 0x14, 0xcf, 0xf4, 0x95, 0x04, 0x1a, 0x9c, 0xc8, 0x89, + 0x36, 0xa1, 0xb4, 0xed, 0x9b, 0x49, 0x85, 0xb1, 0xc5, 0x81, 0x4e, 0x46, 0xc6, 0x82, 0xe0, 0x5f, + 0x1c, 0x8a, 0x45, 0x97, 0xa1, 0xd0, 0xa4, 0xad, 0xf6, 0xcc, 0x61, 0x21, 0xfe, 0x8b, 0x59, 0xef, + 0x42, 0x75, 0x98, 0x87, 0x7c, 0xfe, 0x17, 0x16, 0x72, 0xcc, 0x6f, 0x81, 0xb4, 0x4a, 0x16, 0xf3, + 0x1e, 0x9c, 0x48, 0x1e, 0x84, 0xa1, 0x1d, 0xea, 0x06, 0xe6, 0xd4, 0x84, 0x5d, 0x95, 0x60, 0xec, + 0xe3, 0xcd, 0x5f, 0x1a, 0x30, 0x29, 0x56, 0xb0, 0xde, 0xdd, 0x64, 0x35, 0xd7, 0x72, 0x78, 0x21, + 0x72, 0x6b, 0x57, 0x73, 0x16, 0x26, 0x18, 0x6d, 0xef, 0x50, 0x77, 0xd9, 0xee, 0x30, 0xcf, 0x25, + 0x56, 0xc7, 0x53, 0xcb, 0x9a, 0x51, 0xd4, 0x13, 0xeb, 0x31, 0x3c, 0xee, 0xe1, 0x30, 0x7f, 0x51, + 0x80, 0xa1, 0xf3, 0x2e, 0xb5, 0x1a, 0x4d, 0x0f, 0x7d, 0x1d, 0x86, 0xdb, 0xaa, 0x5e, 0x13, 0xeb, + 0xe3, 0x27, 0x21, 0x8b, 0xe4, 0x8a, 0x5e, 0x24, 0x57, 0x9c, 0xed, 0x06, 0x07, 0xb0, 0x0a, 0xa7, + 0xae, 0xec, 0x9c, 0xa8, 0x3c, 0xbf, 0xf9, 0x2a, 0xad, 0x79, 0xbc, 0xd6, 0x0b, 0xd3, 0x54, 0x08, + 0xc3, 0x81, 0x54, 0xee, 0xc2, 0xa4, 0x65, 0x11, 0x36, 0x33, 0x14, 0x75, 0xe1, 0x25, 0x0e, 0xc4, + 0x12, 0xc7, 0xaf, 0xd6, 0x75, 0xe2, 0xd2, 0xa6, 0xdd, 0x65, 0x74, 0x66, 0x38, 0x5a, 0x02, 0xbc, + 0xe0, 0x23, 0x70, 0x48, 0x83, 0xae, 0xc1, 0x50, 0xcd, 0x6e, 0xb7, 0x2d, 0xcf, 0x0f, 0xe5, 0x0b, + 0xe9, 0x1c, 0xe8, 0x82, 0xe5, 0x2d, 0x0b, 0xbe, 0xf0, 0x1c, 0xe4, 0xff, 0x0c, 0xfb, 0x02, 0xd1, + 0x7a, 0x10, 0x94, 0x0a, 0x42, 0xf4, 0x43, 0xe9, 0x44, 0x8b, 0x58, 0xd1, 0x2f, 0xfe, 0x70, 0xa1, + 0xe2, 0xb6, 0xb2, 0x99, 0xc3, 0x59, 0x84, 0x0a, 0x87, 0x0a, 0x85, 0x8a, 0x7f, 0x19, 0x56, 0xa2, + 0xd0, 0x4b, 0x41, 0xa2, 0x2f, 0x8a, 0xb3, 0x3b, 0x95, 0x4e, 0xa8, 0x3a, 0x7c, 0x55, 0x65, 0x8c, + 0x45, 0xab, 0x03, 0xbf, 0x0e, 0x30, 0xdf, 0x33, 0xa0, 0xac, 0x28, 0x57, 0x2d, 0xe6, 0xa1, 0x97, + 0x7b, 0x5c, 0xa5, 0x92, 0xce, 0x55, 0x38, 0xb7, 0x70, 0x94, 0xa0, 0x8e, 0xf0, 0x21, 0x9a, 0x9b, + 0x60, 0x38, 0x6c, 0x79, 0xb4, 0xed, 0xb7, 0x1d, 0x8f, 0x64, 0xda, 0x89, 0x16, 0xb0, 0xb9, 0x0c, + 0x2c, 0x45, 0x99, 0x9f, 0x16, 0x60, 0x42, 0x51, 0x64, 0xa8, 0x9c, 0xa3, 0xce, 0x58, 0xcc, 0xe6, + 0x8c, 0xb9, 0xdb, 0xe7, 0x8c, 0xf9, 0xdb, 0xe1, 0x8c, 0x85, 0x5b, 0xe7, 0x8c, 0xaf, 0xc3, 0xc4, + 0x0e, 0x75, 0xad, 0x2d, 0xab, 0x26, 0x5a, 0xb0, 0x95, 0xce, 0x96, 0xad, 0x82, 0xfb, 0x63, 0xe9, + 0xc4, 0x5f, 0x8d, 0x71, 0x57, 0xa7, 0x79, 0x40, 0x8b, 0x43, 0x71, 0x8f, 0x16, 0xf4, 0x96, 0x01, + 0x53, 0x3a, 0xf0, 0xa2, 0xc5, 0x3c, 0xdb, 0xdd, 0x9d, 0x19, 0x12, 0x9b, 0x1b, 0x54, 0xfb, 0x3d, + 0x6a, 0x9f, 0x53, 0x57, 0x7b, 0x45, 0xe3, 0x24, 0x7d, 0xe6, 0xbf, 0xf2, 0x30, 0x1a, 0xb9, 0x5b, + 0xe8, 0x3a, 0x80, 0x24, 0xa4, 0xf5, 0x95, 0x8e, 0xaa, 0x71, 0x96, 0x07, 0xb8, 0xa4, 0x6a, 0x75, + 0x5c, 0x8a, 0x6c, 0xa5, 0x83, 0x98, 0x1b, 0x22, 0xb0, 0xa6, 0x0a, 0xbd, 0x01, 0x65, 0xa2, 0xba, + 0xbf, 0xf3, 0xb6, 0xab, 0xdc, 0xf2, 0xec, 0x20, 0x9a, 0x97, 0x42, 0x31, 0xf1, 0x2e, 0x3e, 0xc4, + 0x60, 0x5d, 0xdb, 0xac, 0x0b, 0xe3, 0xb1, 0xf5, 0x26, 0x74, 0xe2, 0x2b, 0x7a, 0x27, 0x9e, 0x3a, + 0x74, 0xf9, 0x72, 0x45, 0x4b, 0xab, 0xb7, 0xff, 0x0c, 0x26, 0xe2, 0x2b, 0xbd, 0x65, 0x4a, 0x23, + 0x7d, 0xb4, 0x3e, 0x33, 0xf8, 0x5d, 0x0e, 0x4a, 0xc1, 0x25, 0xce, 0x92, 0xea, 0x67, 0x21, 0x67, + 0xd5, 0x55, 0xa2, 0x07, 0x45, 0x95, 0x5b, 0x39, 0x8b, 0x73, 0x56, 0x1d, 0xdd, 0x0f, 0xc5, 0x4d, + 0x97, 0x74, 0x6a, 0x4d, 0x95, 0xda, 0x83, 0xfb, 0x56, 0x15, 0x50, 0xac, 0xb0, 0xbc, 0x54, 0xf7, + 0x48, 0x43, 0x94, 0x67, 0x5a, 0xa9, 0xbe, 0x41, 0x1a, 0x98, 0xc3, 0xd1, 0x05, 0x98, 0x94, 0xbd, + 0xe9, 0x72, 0x93, 0xd6, 0xb6, 0xe5, 0x12, 0xc5, 0x7d, 0x2c, 0x55, 0xef, 0x56, 0xc4, 0x93, 0x17, + 0xe3, 0x04, 0xb8, 0x97, 0x47, 0xef, 0xee, 0x8b, 0xfb, 0x77, 0xf7, 0x7c, 0xe9, 0xa4, 0xeb, 0x35, + 0x6d, 0x57, 0x25, 0xfb, 0x60, 0xe9, 0x4b, 0x02, 0x8a, 0x15, 0xd6, 0x9c, 0x82, 0xc9, 0x0b, 0x96, + 0x77, 0xb1, 0xbb, 0xb9, 0xd6, 0x6d, 0xb5, 0x30, 0x7d, 0xad, 0xcb, 0xab, 0x65, 0x09, 0x5c, 0x25, + 0x11, 0xe0, 0xaf, 0x0e, 0xc3, 0xe8, 0x05, 0xcb, 0x13, 0x06, 0xcc, 0x5c, 0x3d, 0xaf, 0xc3, 0x11, + 0xab, 0xc3, 0x68, 0xad, 0xeb, 0xd2, 0xf5, 0x6d, 0xcb, 0xd9, 0x58, 0x5d, 0x17, 0xee, 0xb3, 0xab, + 0x8a, 0xf7, 0x63, 0x8a, 0xf1, 0xc8, 0x4a, 0x12, 0x11, 0x4e, 0xe6, 0x45, 0x27, 0x01, 0x5c, 0x4a, + 0xea, 0x55, 0xfd, 0x88, 0x82, 0xdb, 0x88, 0x03, 0x0c, 0xd6, 0xa8, 0xd0, 0x22, 0x94, 0xaf, 0xbb, + 0x96, 0x47, 0x15, 0x93, 0x3c, 0xb2, 0xe0, 0x1e, 0xbd, 0x10, 0xa2, 0xb0, 0x4e, 0x87, 0x76, 0xa0, + 0xec, 0x84, 0xb6, 0x50, 0xc1, 0x34, 0x65, 0xf8, 0xd0, 0x8c, 0xb8, 0xe6, 0xda, 0x6d, 0x9b, 0xc7, + 0xa9, 0xe7, 0x68, 0xad, 0x49, 0x3a, 0x16, 0x6b, 0x57, 0xc7, 0xb9, 0x5e, 0x8d, 0x04, 0xeb, 0x8a, + 0x50, 0x03, 0x8a, 0x2e, 0xed, 0xd4, 0xa9, 0xab, 0xca, 0x8a, 0x94, 0x2a, 0x9f, 0xe5, 0x20, 0x2c, + 0x18, 0x13, 0x54, 0x02, 0xf7, 0x03, 0x89, 0xc5, 0x4a, 0x3c, 0xea, 0xe8, 0x7d, 0xc6, 0x90, 0xd0, + 0xb5, 0x94, 0x52, 0x97, 0xcf, 0x96, 0xa0, 0xa9, 0x7f, 0xcf, 0x71, 0x4d, 0xf5, 0x1c, 0xc3, 0x42, + 0xd5, 0x53, 0xe9, 0x54, 0xf1, 0x1e, 0x23, 0x41, 0x4b, 0xbc, 0xff, 0xf8, 0x63, 0x01, 0xc6, 0x2f, + 0x58, 0x03, 0x17, 0xff, 0x1e, 0xdc, 0x25, 0x53, 0xfe, 0x3a, 0x6d, 0xd1, 0x1a, 0xe7, 0x5e, 0xf7, + 0x5c, 0xe2, 0xd1, 0x86, 0xdf, 0x8c, 0x9f, 0x51, 0xac, 0x77, 0x2d, 0x27, 0x93, 0xdd, 0xec, 0x8f, + 0xc2, 0xfd, 0x44, 0xa7, 0x8e, 0x35, 0x49, 0x8d, 0x47, 0x21, 0x6b, 0xe3, 0xc1, 0x0b, 0x2b, 0xd2, + 0x6a, 0xd9, 0xd7, 0x37, 0x48, 0x83, 0xa9, 0x50, 0x14, 0x14, 0x56, 0x4b, 0x3e, 0x02, 0x87, 0x34, + 0xa8, 0x02, 0x60, 0x35, 0x3a, 0xb6, 0x4b, 0x05, 0x47, 0x51, 0x4c, 0x97, 0xc6, 0xf8, 0x3d, 0x5b, + 0x09, 0xa0, 0x58, 0xa3, 0xe8, 0x7f, 0xe1, 0x87, 0xfe, 0x87, 0x0b, 0xff, 0x28, 0x8c, 0x58, 0x9d, + 0x5a, 0xab, 0x5b, 0xa7, 0x6b, 0xc4, 0x6b, 0xb2, 0x99, 0x61, 0xb1, 0x8c, 0x89, 0xbd, 0x1b, 0xf3, + 0x23, 0x2b, 0x1a, 0x1c, 0x47, 0xa8, 0x38, 0x17, 0x7d, 0x5d, 0xe3, 0x2a, 0x85, 0x5c, 0xe7, 0x5e, + 0xd7, 0xb9, 0x74, 0x2a, 0xf3, 0xcf, 0x06, 0x14, 0x65, 0x50, 0x46, 0x8b, 0xb1, 0x21, 0xde, 0xb1, + 0x9e, 0x21, 0x5e, 0x39, 0x69, 0x16, 0x6b, 0x42, 0xd1, 0x62, 0xac, 0x4b, 0x65, 0x29, 0x5a, 0x92, + 0xd7, 0x6e, 0x45, 0x40, 0xb0, 0xc2, 0x20, 0x0b, 0x80, 0xf8, 0x53, 0x38, 0xbf, 0xae, 0x5c, 0xcc, + 0x3a, 0xa6, 0x8c, 0x8d, 0x28, 0x03, 0x04, 0xc3, 0x9a, 0x70, 0xf3, 0x67, 0x06, 0xdc, 0xcd, 0x2f, + 0x89, 0xa8, 0x15, 0xcf, 0x52, 0x87, 0xdf, 0xfb, 0x4e, 0x6d, 0x57, 0xc5, 0x72, 0x11, 0x4b, 0x1d, + 0x9b, 0x59, 0xa2, 0x5c, 0x33, 0xe2, 0xb1, 0xd4, 0xc7, 0x60, 0x8d, 0x2a, 0x45, 0x97, 0xbc, 0x00, + 0x25, 0x51, 0x92, 0x72, 0x93, 0x2a, 0xbf, 0x0e, 0xdc, 0x6c, 0xd9, 0x47, 0xe0, 0x90, 0xc6, 0xfc, + 0x8b, 0x01, 0xe3, 0x03, 0x4d, 0xcb, 0x9e, 0x86, 0x31, 0x51, 0x0c, 0xb0, 0xf3, 0x56, 0x4b, 0x9c, + 0xa0, 0x5a, 0xd5, 0x51, 0x45, 0x3d, 0x76, 0x35, 0x82, 0xc5, 0x31, 0x6a, 0x7f, 0xda, 0x96, 0x3f, + 0x68, 0xda, 0x56, 0x18, 0x60, 0xda, 0xf6, 0xb1, 0x01, 0x47, 0x93, 0x43, 0x17, 0x7a, 0x25, 0x36, + 0x75, 0x5b, 0x4c, 0x1f, 0x08, 0x53, 0x8c, 0xda, 0x78, 0xfa, 0x50, 0xdd, 0x85, 0x2c, 0x3b, 0x9f, + 0x49, 0x2f, 0x3e, 0xd1, 0x4d, 0xfa, 0x75, 0x1c, 0xe6, 0x6f, 0x0c, 0x90, 0xe7, 0x91, 0x25, 0xd0, + 0x9e, 0x04, 0x68, 0xa8, 0x82, 0x02, 0xaf, 0xaa, 0xf3, 0x0a, 0x7c, 0xee, 0x42, 0x80, 0xc1, 0x1a, + 0x95, 0x5f, 0x6a, 0xe5, 0xfb, 0x94, 0x5a, 0xf7, 0x43, 0xb1, 0x2e, 0xa7, 0x82, 0x85, 0x68, 0x14, + 0x55, 0x23, 0x41, 0x85, 0x35, 0xdf, 0x29, 0xc0, 0xa4, 0x58, 0xef, 0xa0, 0x49, 0x62, 0x90, 0xb5, + 0x3b, 0x70, 0x54, 0x9c, 0x4b, 0x6f, 0x5e, 0x91, 0xdb, 0x39, 0xad, 0xf8, 0x8f, 0xae, 0x24, 0x52, + 0xdd, 0xec, 0x8b, 0xc1, 0x7d, 0xe4, 0xfe, 0xbf, 0x24, 0x8b, 0x87, 0x61, 0xd8, 0x69, 0x11, 0x6f, + 0xcb, 0x76, 0xdb, 0xaa, 0x5c, 0x0d, 0xe6, 0x13, 0x6b, 0x0a, 0x8e, 0x03, 0x8a, 0xfe, 0xa9, 0x65, + 0x78, 0xf0, 0xd4, 0x62, 0x76, 0xe0, 0xa8, 0x56, 0x34, 0xdd, 0xfe, 0x81, 0xf4, 0x5b, 0x06, 0x1c, + 0xdb, 0xb7, 0x4a, 0x43, 0xf5, 0x58, 0x68, 0x78, 0x2a, 0x73, 0xe9, 0x97, 0x66, 0x18, 0xff, 0x8e, + 0x01, 0xd3, 0x83, 0xcf, 0xe1, 0x8f, 0x43, 0xc1, 0x09, 0x63, 0x6d, 0x90, 0x01, 0x44, 0x84, 0x15, + 0x98, 0xa8, 0x61, 0xf2, 0x29, 0x0c, 0xf3, 0xa6, 0x01, 0xf7, 0xec, 0x53, 0x52, 0xa2, 0xcd, 0x98, + 0x59, 0xce, 0x64, 0xac, 0x52, 0xd3, 0x18, 0xe5, 0xa7, 0x39, 0x18, 0x5a, 0x73, 0xed, 0x57, 0x69, + 0xed, 0x4e, 0x8c, 0x65, 0x9f, 0x87, 0x02, 0x73, 0x68, 0x4d, 0x35, 0xc2, 0x27, 0x52, 0x36, 0x15, + 0x72, 0x79, 0xeb, 0x0e, 0xad, 0xc9, 0xfa, 0x97, 0xff, 0x85, 0x85, 0x20, 0x6d, 0x16, 0x99, 0xcf, + 0xd2, 0x5b, 0xfb, 0x22, 0x0f, 0x9e, 0x45, 0x2a, 0xca, 0xcf, 0xec, 0x2c, 0x52, 0xad, 0xaf, 0xcf, + 0x2c, 0xf2, 0x07, 0xe1, 0x0e, 0xb8, 0xd1, 0xd0, 0x37, 0x61, 0xd2, 0xf1, 0xfd, 0x6c, 0xcd, 0x6e, + 0x59, 0x35, 0x2b, 0x6b, 0x3a, 0x5e, 0x8b, 0xb0, 0xef, 0x86, 0x5d, 0xfd, 0x5a, 0x5c, 0x2e, 0xee, + 0x55, 0x65, 0xda, 0x30, 0x1a, 0x31, 0x3d, 0x3a, 0xe5, 0xbf, 0x49, 0x88, 0x96, 0x9b, 0xf2, 0x4d, + 0xc2, 0xcd, 0x1b, 0xf3, 0x23, 0x8a, 0x5c, 0x7f, 0xa3, 0x90, 0xe5, 0xcb, 0xff, 0xcf, 0x73, 0x50, + 0x0a, 0x56, 0x76, 0x07, 0x1c, 0xfc, 0x4a, 0xc4, 0xc1, 0x4f, 0x65, 0xb4, 0xa9, 0x70, 0xf1, 0x20, + 0xb4, 0x68, 0x6e, 0xfe, 0x4a, 0xcc, 0xcd, 0xb3, 0x1e, 0xd6, 0x01, 0x8e, 0xfe, 0x6f, 0x43, 0x9c, + 0x8b, 0xa4, 0x15, 0xc3, 0xcd, 0x83, 0xe7, 0xd5, 0x04, 0x86, 0xb6, 0xe4, 0xc8, 0x4e, 0x6d, 0xf6, + 0xb1, 0x4c, 0x73, 0xbe, 0x60, 0x34, 0x1e, 0x1e, 0x9e, 0x8f, 0xf1, 0xe5, 0xa2, 0xaf, 0xde, 0x9a, + 0x5d, 0x43, 0xc2, 0x8e, 0xdf, 0xd7, 0x77, 0x7c, 0x07, 0x2e, 0xf7, 0x46, 0xf4, 0x72, 0x2f, 0x64, + 0xdc, 0x49, 0x9f, 0xeb, 0xfd, 0xfd, 0x1c, 0x4c, 0xf5, 0xe6, 0x0d, 0x86, 0x18, 0x8c, 0x35, 0xf4, + 0xf1, 0x95, 0x7f, 0xc7, 0x4f, 0xa5, 0xfe, 0x42, 0x10, 0xf2, 0x86, 0x6d, 0x45, 0x04, 0xcc, 0x70, + 0x4c, 0x05, 0x7a, 0x03, 0x26, 0x48, 0xf4, 0x95, 0x85, 0xbf, 0xdb, 0xac, 0x5d, 0x9e, 0x52, 0x1c, + 0xd4, 0x6d, 0x31, 0x04, 0xc3, 0x3d, 0x8a, 0xcc, 0xb7, 0x0d, 0x18, 0x8f, 0x85, 0x26, 0x9e, 0xd6, + 0x99, 0x97, 0x90, 0xd6, 0xd5, 0x40, 0x55, 0xe0, 0xd0, 0x1a, 0x4c, 0x93, 0xae, 0x67, 0x07, 0xbc, + 0xe7, 0x3a, 0x64, 0xb3, 0x45, 0xeb, 0xaa, 0xb0, 0x09, 0x3e, 0x63, 0x2f, 0x25, 0xd0, 0xe0, 0x44, + 0x4e, 0xf3, 0x6b, 0x9a, 0x67, 0x89, 0xa0, 0x9b, 0x6a, 0x1d, 0x0f, 0x46, 0xaf, 0x53, 0xa9, 0xff, + 0xb5, 0x30, 0xff, 0x91, 0xd7, 0xf6, 0xaa, 0xe2, 0xe8, 0x25, 0x40, 0x2d, 0xc2, 0xbc, 0x8b, 0xa4, + 0x53, 0xe7, 0x2b, 0xa3, 0x5b, 0x2e, 0x65, 0xfe, 0xc8, 0x6f, 0x56, 0x49, 0x42, 0xab, 0x3d, 0x14, + 0x38, 0x81, 0x0b, 0x2d, 0x46, 0x63, 0xf2, 0x7c, 0x3c, 0x26, 0x8f, 0x85, 0x86, 0x1e, 0x2c, 0x2a, + 0xa3, 0xd7, 0xb4, 0xbb, 0x96, 0xcf, 0xf2, 0x79, 0x22, 0xb6, 0xed, 0x8a, 0xff, 0xea, 0x4f, 0x7e, + 0x23, 0x08, 0x2e, 0xa0, 0x0f, 0xd6, 0x2e, 0x60, 0x17, 0xc6, 0x65, 0x3a, 0xa2, 0x75, 0x65, 0xd0, + 0x6c, 0x9f, 0x89, 0x7a, 0xc2, 0xd6, 0xd4, 0xde, 0x8d, 0x79, 0x75, 0x0c, 0x81, 0x48, 0x1c, 0xd7, + 0x31, 0xfb, 0x24, 0x8c, 0x46, 0xd6, 0x98, 0xe9, 0x71, 0xe0, 0x5f, 0x0d, 0x38, 0xb6, 0xef, 0x44, + 0x95, 0x97, 0x3f, 0x72, 0xf5, 0x2a, 0x64, 0x3d, 0x9e, 0xfa, 0x82, 0x47, 0xc7, 0xe0, 0x32, 0x46, + 0x4a, 0x30, 0x56, 0x22, 0x95, 0xf0, 0x16, 0xd9, 0x54, 0x01, 0x3e, 0xbd, 0xf0, 0xe8, 0x38, 0x3d, + 0x10, 0xbe, 0x4a, 0xa4, 0xf0, 0x16, 0xd9, 0x34, 0xdf, 0xcd, 0xc1, 0x04, 0x8f, 0x1e, 0x91, 0xa6, + 0x74, 0x0d, 0xf2, 0x0d, 0xcb, 0x53, 0x7b, 0x59, 0x4c, 0xad, 0x4e, 0x97, 0x51, 0x1d, 0xe2, 0x4d, + 0x32, 0x0f, 0x55, 0x5c, 0x14, 0x7a, 0xd1, 0x2f, 0xed, 0x33, 0x6d, 0xa1, 0xa7, 0x5d, 0xae, 0x96, + 0x7a, 0xfa, 0x81, 0x17, 0xfd, 0x47, 0x32, 0xf9, 0x2c, 0x92, 0x7b, 0x9e, 0x6a, 0x48, 0xc9, 0xfa, + 0xcb, 0x1a, 0xf3, 0x27, 0x39, 0x90, 0xb1, 0xe1, 0x0e, 0xd4, 0x2b, 0x5f, 0x89, 0xd4, 0x2b, 0x29, + 0xd3, 0x92, 0x58, 0x5c, 0xdf, 0x5a, 0x25, 0x9e, 0xb5, 0x4f, 0x64, 0x11, 0xba, 0x7f, 0x9d, 0xf2, + 0x07, 0x03, 0x4a, 0x82, 0xee, 0x0e, 0x64, 0xec, 0xb5, 0x68, 0xc6, 0x7e, 0x28, 0xc3, 0x2e, 0xfa, + 0x64, 0xeb, 0x1f, 0xe7, 0xd5, 0xea, 0x83, 0xac, 0xd0, 0x24, 0x6e, 0x5d, 0x05, 0xe9, 0x30, 0x2b, + 0x70, 0x20, 0x96, 0x38, 0xe4, 0xc0, 0x28, 0xd3, 0x9c, 0x85, 0xa9, 0x7d, 0xa6, 0xcc, 0xe3, 0xba, + 0x9f, 0x31, 0xed, 0xf1, 0xa0, 0x0e, 0xc6, 0x51, 0x05, 0xe8, 0x7b, 0x06, 0x4c, 0x39, 0xbd, 0x25, + 0x85, 0x72, 0x90, 0x27, 0x32, 0x86, 0xe9, 0x50, 0x40, 0xf5, 0xae, 0xbd, 0x1b, 0xf3, 0x49, 0xc5, + 0x0a, 0x4e, 0x52, 0x87, 0x9a, 0x30, 0xa2, 0x7f, 0xeb, 0x56, 0xae, 0x74, 0x32, 0xfb, 0x47, 0x75, + 0x39, 0xfc, 0xd6, 0x21, 0x38, 0x22, 0xd9, 0xfc, 0x51, 0x11, 0xca, 0x9a, 0xef, 0xf5, 0xc9, 0xa4, + 0xe5, 0x81, 0x32, 0xe9, 0x89, 0x68, 0x26, 0xbd, 0x27, 0x9e, 0x49, 0x41, 0x28, 0x8e, 0x64, 0x51, + 0x17, 0xc6, 0x6a, 0x5d, 0xd7, 0xa5, 0x1d, 0xef, 0xfc, 0x2d, 0xa9, 0xae, 0x11, 0xaf, 0xdc, 0x96, + 0x23, 0x12, 0x71, 0x4c, 0x03, 0x2f, 0xe5, 0x9b, 0xea, 0xf1, 0x42, 0x3e, 0xcb, 0xe3, 0x85, 0xfe, + 0xa5, 0xbc, 0xff, 0x60, 0xc1, 0x97, 0x8b, 0xd6, 0xa0, 0x28, 0xbf, 0xf1, 0xaa, 0xaf, 0x60, 0x0f, + 0xa7, 0x9d, 0xce, 0x72, 0x1e, 0x99, 0x40, 0xe4, 0xdf, 0x58, 0xc9, 0xd1, 0xcb, 0x8d, 0xd2, 0x01, + 0xe5, 0xc6, 0x25, 0x40, 0xf6, 0x26, 0xa3, 0xee, 0x0e, 0xad, 0x5f, 0x90, 0xbf, 0xb1, 0xe0, 0x2e, + 0x55, 0x3c, 0x6e, 0x3c, 0x90, 0x0f, 0x8f, 0xf4, 0xf9, 0x1e, 0x0a, 0x9c, 0xc0, 0x85, 0xba, 0x30, + 0xa1, 0xac, 0x17, 0xf8, 0xb2, 0xfa, 0x86, 0x98, 0xb5, 0xd9, 0x0b, 0x1f, 0x9b, 0x2c, 0xc7, 0x04, + 0xe2, 0x1e, 0x15, 0xa8, 0x05, 0xa3, 0xdc, 0xbf, 0x42, 0x9d, 0x30, 0xb8, 0xce, 0x49, 0x1e, 0x04, + 0x56, 0x75, 0x69, 0x38, 0x2a, 0xdc, 0x5c, 0x84, 0x49, 0x79, 0x25, 0xf4, 0xe4, 0x7c, 0xf0, 0xe3, + 0xff, 0xdf, 0x1b, 0x10, 0x0d, 0x2e, 0xd1, 0x47, 0x4d, 0x46, 0x8a, 0x47, 0x4d, 0xd7, 0x61, 0xac, + 0xeb, 0x30, 0xcf, 0xa5, 0xa4, 0x2d, 0x56, 0xe0, 0x87, 0xdf, 0xc7, 0xb3, 0x24, 0x11, 0x3d, 0xbd, + 0x06, 0xdd, 0xcb, 0x95, 0x88, 0x58, 0x1c, 0x53, 0x63, 0xfe, 0x27, 0x07, 0x91, 0x28, 0x81, 0xde, + 0x36, 0x60, 0x92, 0xc4, 0x7e, 0x09, 0xe1, 0xf7, 0x51, 0xcf, 0x64, 0xfb, 0x79, 0x4a, 0xcf, 0x0f, + 0x29, 0xc2, 0xa9, 0x49, 0x9c, 0x84, 0xe1, 0x5e, 0xa5, 0x22, 0x26, 0x93, 0xde, 0x9f, 0xba, 0x64, + 0x8b, 0xc9, 0x09, 0xbf, 0x95, 0x91, 0x31, 0x39, 0x01, 0x81, 0x93, 0xd4, 0xa1, 0x97, 0xa0, 0x40, + 0xdc, 0x86, 0xff, 0xe9, 0x2e, 0xbb, 0x5a, 0xff, 0x17, 0x4c, 0xa1, 0xef, 0x2c, 0xb9, 0x0d, 0x86, + 0x85, 0x50, 0xf3, 0x6f, 0x79, 0xe8, 0x79, 0x74, 0xa5, 0x1e, 0xac, 0x14, 0x12, 0x1f, 0xac, 0xdc, + 0x0b, 0x87, 0x49, 0xcd, 0x0b, 0x1e, 0x7d, 0x84, 0x2f, 0x3c, 0x39, 0x10, 0x4b, 0x1c, 0x7a, 0x01, + 0x4a, 0xcc, 0x23, 0xae, 0xb7, 0x61, 0xb5, 0xa9, 0xaa, 0xf7, 0xbf, 0x90, 0xae, 0x46, 0xe0, 0x1c, + 0xf2, 0x9b, 0xfe, 0xba, 0x2f, 0x00, 0x87, 0xb2, 0xd0, 0xe9, 0x68, 0x64, 0x37, 0xe3, 0x91, 0x7d, + 0x52, 0xdf, 0xcb, 0xa0, 0x6d, 0x52, 0x1b, 0xca, 0xda, 0x39, 0xa8, 0x1c, 0x78, 0x26, 0xb3, 0xdd, + 0xb5, 0xf8, 0x2c, 0x7f, 0x06, 0x15, 0x62, 0x74, 0xf9, 0xe8, 0x1a, 0xc0, 0x96, 0xd5, 0xb1, 0x58, + 0x53, 0x58, 0xab, 0x98, 0xd9, 0x5a, 0xe2, 0xb3, 0xc7, 0xf9, 0x40, 0x02, 0xd6, 0xa4, 0x99, 0xe3, + 0x30, 0x1a, 0x79, 0x44, 0x25, 0x06, 0x73, 0x41, 0x04, 0xf8, 0xac, 0x0e, 0xe6, 0x82, 0x05, 0xde, + 0xea, 0xc1, 0x5c, 0x28, 0x78, 0xff, 0x82, 0xf7, 0x7d, 0x03, 0x46, 0x03, 0xda, 0xcf, 0xec, 0x98, + 0x2a, 0x58, 0x61, 0x9f, 0xc2, 0xf7, 0xd7, 0xfa, 0x2e, 0xa2, 0xc5, 0x6f, 0x6e, 0x9f, 0xe2, 0x97, + 0xf5, 0x16, 0xbf, 0x19, 0x8a, 0x93, 0x78, 0x73, 0x99, 0xae, 0xfe, 0x35, 0xdf, 0xcb, 0xc1, 0x78, + 0xec, 0x74, 0xfa, 0x94, 0x84, 0xc5, 0x81, 0x4a, 0x42, 0xed, 0xfa, 0xe7, 0x07, 0x2a, 0x5b, 0x0a, + 0x03, 0x95, 0x2d, 0x16, 0x94, 0xf9, 0x62, 0x6e, 0xcd, 0xe8, 0x43, 0x84, 0x91, 0xd5, 0x50, 0x1c, + 0xd6, 0x65, 0x57, 0x2f, 0x7d, 0xf0, 0xc9, 0xdc, 0xa1, 0x0f, 0x3f, 0x99, 0x3b, 0xf4, 0xd1, 0x27, + 0x73, 0x87, 0xbe, 0xbd, 0x37, 0x67, 0x7c, 0xb0, 0x37, 0x67, 0x7c, 0xb8, 0x37, 0x67, 0x7c, 0xb4, + 0x37, 0x67, 0x7c, 0xbc, 0x37, 0x67, 0xfc, 0xf0, 0xef, 0x73, 0x87, 0xae, 0xdd, 0x97, 0xe6, 0x67, + 0xc0, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x23, 0x46, 0xf9, 0x2d, 0x3c, 0x00, 0x00, } func (m *AnalysisRunArgument) Marshal() (dAtA []byte, err error) { @@ -4200,6 +4201,18 @@ func (m *PromotionStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.PromotedFreight != nil { + { + size, err := m.PromotedFreight.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } i -= len(m.LastHandledRefresh) copy(dAtA[i:], m.LastHandledRefresh) i = encodeVarintGenerated(dAtA, i, uint64(len(m.LastHandledRefresh))) @@ -5884,6 +5897,10 @@ func (m *PromotionStatus) Size() (n int) { } l = len(m.LastHandledRefresh) n += 1 + l + sovGenerated(uint64(l)) + if m.PromotedFreight != nil { + l = m.PromotedFreight.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -6882,6 +6899,7 @@ func (this *PromotionStatus) String() string { `Message:` + fmt.Sprintf("%v", this.Message) + `,`, `Metadata:` + mapStringForMetadata + `,`, `LastHandledRefresh:` + fmt.Sprintf("%v", this.LastHandledRefresh) + `,`, + `PromotedFreight:` + strings.Replace(this.PromotedFreight.String(), "FreightReference", "FreightReference", 1) + `,`, `}`, }, "") return s @@ -14248,6 +14266,42 @@ func (m *PromotionStatus) Unmarshal(dAtA []byte) error { } m.LastHandledRefresh = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PromotedFreight", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PromotedFreight == nil { + m.PromotedFreight = &FreightReference{} + } + if err := m.PromotedFreight.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/api/v1alpha1/generated.proto b/api/v1alpha1/generated.proto index df550fcf5..3d027acdc 100644 --- a/api/v1alpha1/generated.proto +++ b/api/v1alpha1/generated.proto @@ -916,6 +916,9 @@ message PromotionStatus { // Metadata holds arbitrary metadata set by promotion mechanisms // (e.g. for display purposes, or internal bookkeeping) map metadata = 3; + + // PromotedFreight is the detail of the piece of freight that was referenced by this promotion. + optional FreightReference promotedFreight = 5; } // PullRequestPromotionMechanism describes how to generate a pull request against the write branch during promotion diff --git a/api/v1alpha1/promotion_types.go b/api/v1alpha1/promotion_types.go index 995dea714..b353ddab3 100644 --- a/api/v1alpha1/promotion_types.go +++ b/api/v1alpha1/promotion_types.go @@ -101,6 +101,8 @@ type PromotionStatus struct { // Metadata holds arbitrary metadata set by promotion mechanisms // (e.g. for display purposes, or internal bookkeeping) Metadata map[string]string `json:"metadata,omitempty" protobuf:"bytes,3,rep,name=metadata" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // PromotedFreight is the detail of the piece of freight that was referenced by this promotion. + PromotedFreight *FreightReference `json:"promotedFreight,omitempty" protobuf:"bytes,5,opt,name=promotedFreight"` } // WithPhase returns a copy of PromotionStatus with the given phase diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index def7ff4de..d3cdeff16 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -1005,6 +1005,11 @@ func (in *PromotionStatus) DeepCopyInto(out *PromotionStatus) { (*out)[key] = val } } + if in.PromotedFreight != nil { + in, out := &in.PromotedFreight, &out.PromotedFreight + *out = new(FreightReference) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PromotionStatus. diff --git a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml index 1eb4dab96..267024509 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml @@ -109,6 +109,232 @@ spec: description: Phase describes where the Promotion currently is in its lifecycle. type: string + promotedFreight: + description: PromotedFreight is the detail of the piece of freight + that was referenced by this promotion. + properties: + charts: + description: Charts describes specific versions of specific Helm + charts. + items: + description: Chart describes a specific version of a Helm chart. + properties: + name: + description: Name specifies the name of the chart. + type: string + repoURL: + description: |- + RepoURL specifies the URL of a Helm chart repository. Classic chart + repositories (using HTTP/S) can contain differently named charts. When this + field points to such a repository, the Name field will specify the name of + the chart within the repository. In the case of a repository within an OCI + registry, the URL implicitly points to a specific chart and the Name field + will be empty. + type: string + version: + description: Version specifies a particular version of the + chart. + type: string + type: object + type: array + commits: + description: Commits describes specific Git repository commits. + items: + description: GitCommit describes a specific commit from a specific + Git repository. + properties: + author: + description: Author is the git commit author + type: string + branch: + description: Branch denotes the branch of the repository + where this commit was found. + type: string + healthCheckCommit: + description: |- + HealthCheckCommit is the ID of a specific commit. When specified, + assessments of Stage health will used this value (instead of ID) when + determining if applicable sources of Argo CD Application resources + associated with the Stage are or are not synced to this commit. Note that + there are cases (as in that of Kargo Render being utilized as a promotion + mechanism) wherein the value of this field may differ from the commit ID + found in the ID field. + type: string + id: + description: |- + ID is the ID of a specific commit in the Git repository specified by + RepoURL. + type: string + message: + description: Message is the git commit message + type: string + repoURL: + description: RepoURL is the URL of a Git repository. + type: string + tag: + description: |- + Tag denotes a tag in the repository that matched selection criteria and + resolved to this commit. + type: string + type: object + type: array + images: + description: Images describes specific versions of specific container + images. + items: + description: Image describes a specific version of a container + image. + properties: + digest: + description: |- + Digest identifies a specific version of the image in the repository + specified by RepoURL. This is a more precise identifier than Tag. + type: string + gitRepoURL: + description: |- + GitRepoURL specifies the URL of a Git repository that contains the source + code for the image repository referenced by the RepoURL field if Kargo was + able to infer it. + type: string + repoURL: + description: RepoURL describes the repository in which the + image can be found. + type: string + tag: + description: |- + Tag identifies a specific version of the image in the repository specified + by RepoURL. + type: string + type: object + type: array + name: + description: |- + Name is system-assigned identifier that is derived deterministically from + the contents of the Freight. i.e. Two pieces of Freight can be compared for + equality by comparing their Names. + type: string + verificationHistory: + description: |- + VerificationHistory is a stack of recent VerificationInfo. By default, + the last ten VerificationInfo are stored. + items: + description: |- + VerificationInfo contains information about the currently running + Verification process. + properties: + actor: + description: |- + Actor is the name of the entity that initiated or aborted the + Verification process. + type: string + analysisRun: + description: |- + AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements + the Verification process. + properties: + name: + description: Name is the name of the AnalysisRun. + type: string + namespace: + description: Namespace is the namespace of the AnalysisRun. + type: string + phase: + description: Phase is the last observed phase of the + AnalysisRun referenced by Name. + type: string + required: + - name + - namespace + - phase + type: object + finishTime: + description: FinishTime is the time at which the Verification + process finished. + format: date-time + type: string + id: + description: ID is the identifier of the Verification process. + type: string + message: + description: |- + Message may contain additional information about why the verification + process is in its current phase. + type: string + phase: + description: |- + Phase describes the current phase of the Verification process. Generally, + this will be a reflection of the underlying AnalysisRun's phase, however, + there are exceptions to this, such as in the case where an AnalysisRun + cannot be launched successfully. + type: string + startTime: + description: StartTime is the time at which the Verification + process was started. + format: date-time + type: string + type: object + type: array + verificationInfo: + description: |- + VerificationInfo is information about any verification process that was + associated with this Freight for this Stage. + properties: + actor: + description: |- + Actor is the name of the entity that initiated or aborted the + Verification process. + type: string + analysisRun: + description: |- + AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements + the Verification process. + properties: + name: + description: Name is the name of the AnalysisRun. + type: string + namespace: + description: Namespace is the namespace of the AnalysisRun. + type: string + phase: + description: Phase is the last observed phase of the AnalysisRun + referenced by Name. + type: string + required: + - name + - namespace + - phase + type: object + finishTime: + description: FinishTime is the time at which the Verification + process finished. + format: date-time + type: string + id: + description: ID is the identifier of the Verification process. + type: string + message: + description: |- + Message may contain additional information about why the verification + process is in its current phase. + type: string + phase: + description: |- + Phase describes the current phase of the Verification process. Generally, + this will be a reflection of the underlying AnalysisRun's phase, however, + there are exceptions to this, such as in the case where an AnalysisRun + cannot be launched successfully. + type: string + startTime: + description: StartTime is the time at which the Verification + process was started. + format: date-time + type: string + type: object + warehouse: + description: Warehouse is the name of the Warehouse that created + this Freight. + type: string + type: object type: object required: - spec diff --git a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml index e37b5cb56..e2844e173 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml @@ -1049,6 +1049,238 @@ spec: description: Phase describes where the Promotion currently is in its lifecycle. type: string + promotedFreight: + description: PromotedFreight is the detail of the piece of + freight that was referenced by this promotion. + properties: + charts: + description: Charts describes specific versions of specific + Helm charts. + items: + description: Chart describes a specific version of a + Helm chart. + properties: + name: + description: Name specifies the name of the chart. + type: string + repoURL: + description: |- + RepoURL specifies the URL of a Helm chart repository. Classic chart + repositories (using HTTP/S) can contain differently named charts. When this + field points to such a repository, the Name field will specify the name of + the chart within the repository. In the case of a repository within an OCI + registry, the URL implicitly points to a specific chart and the Name field + will be empty. + type: string + version: + description: Version specifies a particular version + of the chart. + type: string + type: object + type: array + commits: + description: Commits describes specific Git repository + commits. + items: + description: GitCommit describes a specific commit from + a specific Git repository. + properties: + author: + description: Author is the git commit author + type: string + branch: + description: Branch denotes the branch of the repository + where this commit was found. + type: string + healthCheckCommit: + description: |- + HealthCheckCommit is the ID of a specific commit. When specified, + assessments of Stage health will used this value (instead of ID) when + determining if applicable sources of Argo CD Application resources + associated with the Stage are or are not synced to this commit. Note that + there are cases (as in that of Kargo Render being utilized as a promotion + mechanism) wherein the value of this field may differ from the commit ID + found in the ID field. + type: string + id: + description: |- + ID is the ID of a specific commit in the Git repository specified by + RepoURL. + type: string + message: + description: Message is the git commit message + type: string + repoURL: + description: RepoURL is the URL of a Git repository. + type: string + tag: + description: |- + Tag denotes a tag in the repository that matched selection criteria and + resolved to this commit. + type: string + type: object + type: array + images: + description: Images describes specific versions of specific + container images. + items: + description: Image describes a specific version of a + container image. + properties: + digest: + description: |- + Digest identifies a specific version of the image in the repository + specified by RepoURL. This is a more precise identifier than Tag. + type: string + gitRepoURL: + description: |- + GitRepoURL specifies the URL of a Git repository that contains the source + code for the image repository referenced by the RepoURL field if Kargo was + able to infer it. + type: string + repoURL: + description: RepoURL describes the repository in + which the image can be found. + type: string + tag: + description: |- + Tag identifies a specific version of the image in the repository specified + by RepoURL. + type: string + type: object + type: array + name: + description: |- + Name is system-assigned identifier that is derived deterministically from + the contents of the Freight. i.e. Two pieces of Freight can be compared for + equality by comparing their Names. + type: string + verificationHistory: + description: |- + VerificationHistory is a stack of recent VerificationInfo. By default, + the last ten VerificationInfo are stored. + items: + description: |- + VerificationInfo contains information about the currently running + Verification process. + properties: + actor: + description: |- + Actor is the name of the entity that initiated or aborted the + Verification process. + type: string + analysisRun: + description: |- + AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements + the Verification process. + properties: + name: + description: Name is the name of the AnalysisRun. + type: string + namespace: + description: Namespace is the namespace of the + AnalysisRun. + type: string + phase: + description: Phase is the last observed phase + of the AnalysisRun referenced by Name. + type: string + required: + - name + - namespace + - phase + type: object + finishTime: + description: FinishTime is the time at which the + Verification process finished. + format: date-time + type: string + id: + description: ID is the identifier of the Verification + process. + type: string + message: + description: |- + Message may contain additional information about why the verification + process is in its current phase. + type: string + phase: + description: |- + Phase describes the current phase of the Verification process. Generally, + this will be a reflection of the underlying AnalysisRun's phase, however, + there are exceptions to this, such as in the case where an AnalysisRun + cannot be launched successfully. + type: string + startTime: + description: StartTime is the time at which the + Verification process was started. + format: date-time + type: string + type: object + type: array + verificationInfo: + description: |- + VerificationInfo is information about any verification process that was + associated with this Freight for this Stage. + properties: + actor: + description: |- + Actor is the name of the entity that initiated or aborted the + Verification process. + type: string + analysisRun: + description: |- + AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements + the Verification process. + properties: + name: + description: Name is the name of the AnalysisRun. + type: string + namespace: + description: Namespace is the namespace of the + AnalysisRun. + type: string + phase: + description: Phase is the last observed phase + of the AnalysisRun referenced by Name. + type: string + required: + - name + - namespace + - phase + type: object + finishTime: + description: FinishTime is the time at which the Verification + process finished. + format: date-time + type: string + id: + description: ID is the identifier of the Verification + process. + type: string + message: + description: |- + Message may contain additional information about why the verification + process is in its current phase. + type: string + phase: + description: |- + Phase describes the current phase of the Verification process. Generally, + this will be a reflection of the underlying AnalysisRun's phase, however, + there are exceptions to this, such as in the case where an AnalysisRun + cannot be launched successfully. + type: string + startTime: + description: StartTime is the time at which the Verification + process was started. + format: date-time + type: string + type: object + warehouse: + description: Warehouse is the name of the Warehouse that + created this Freight. + type: string + type: object type: object required: - freight @@ -1612,6 +1844,238 @@ spec: description: Phase describes where the Promotion currently is in its lifecycle. type: string + promotedFreight: + description: PromotedFreight is the detail of the piece of + freight that was referenced by this promotion. + properties: + charts: + description: Charts describes specific versions of specific + Helm charts. + items: + description: Chart describes a specific version of a + Helm chart. + properties: + name: + description: Name specifies the name of the chart. + type: string + repoURL: + description: |- + RepoURL specifies the URL of a Helm chart repository. Classic chart + repositories (using HTTP/S) can contain differently named charts. When this + field points to such a repository, the Name field will specify the name of + the chart within the repository. In the case of a repository within an OCI + registry, the URL implicitly points to a specific chart and the Name field + will be empty. + type: string + version: + description: Version specifies a particular version + of the chart. + type: string + type: object + type: array + commits: + description: Commits describes specific Git repository + commits. + items: + description: GitCommit describes a specific commit from + a specific Git repository. + properties: + author: + description: Author is the git commit author + type: string + branch: + description: Branch denotes the branch of the repository + where this commit was found. + type: string + healthCheckCommit: + description: |- + HealthCheckCommit is the ID of a specific commit. When specified, + assessments of Stage health will used this value (instead of ID) when + determining if applicable sources of Argo CD Application resources + associated with the Stage are or are not synced to this commit. Note that + there are cases (as in that of Kargo Render being utilized as a promotion + mechanism) wherein the value of this field may differ from the commit ID + found in the ID field. + type: string + id: + description: |- + ID is the ID of a specific commit in the Git repository specified by + RepoURL. + type: string + message: + description: Message is the git commit message + type: string + repoURL: + description: RepoURL is the URL of a Git repository. + type: string + tag: + description: |- + Tag denotes a tag in the repository that matched selection criteria and + resolved to this commit. + type: string + type: object + type: array + images: + description: Images describes specific versions of specific + container images. + items: + description: Image describes a specific version of a + container image. + properties: + digest: + description: |- + Digest identifies a specific version of the image in the repository + specified by RepoURL. This is a more precise identifier than Tag. + type: string + gitRepoURL: + description: |- + GitRepoURL specifies the URL of a Git repository that contains the source + code for the image repository referenced by the RepoURL field if Kargo was + able to infer it. + type: string + repoURL: + description: RepoURL describes the repository in + which the image can be found. + type: string + tag: + description: |- + Tag identifies a specific version of the image in the repository specified + by RepoURL. + type: string + type: object + type: array + name: + description: |- + Name is system-assigned identifier that is derived deterministically from + the contents of the Freight. i.e. Two pieces of Freight can be compared for + equality by comparing their Names. + type: string + verificationHistory: + description: |- + VerificationHistory is a stack of recent VerificationInfo. By default, + the last ten VerificationInfo are stored. + items: + description: |- + VerificationInfo contains information about the currently running + Verification process. + properties: + actor: + description: |- + Actor is the name of the entity that initiated or aborted the + Verification process. + type: string + analysisRun: + description: |- + AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements + the Verification process. + properties: + name: + description: Name is the name of the AnalysisRun. + type: string + namespace: + description: Namespace is the namespace of the + AnalysisRun. + type: string + phase: + description: Phase is the last observed phase + of the AnalysisRun referenced by Name. + type: string + required: + - name + - namespace + - phase + type: object + finishTime: + description: FinishTime is the time at which the + Verification process finished. + format: date-time + type: string + id: + description: ID is the identifier of the Verification + process. + type: string + message: + description: |- + Message may contain additional information about why the verification + process is in its current phase. + type: string + phase: + description: |- + Phase describes the current phase of the Verification process. Generally, + this will be a reflection of the underlying AnalysisRun's phase, however, + there are exceptions to this, such as in the case where an AnalysisRun + cannot be launched successfully. + type: string + startTime: + description: StartTime is the time at which the + Verification process was started. + format: date-time + type: string + type: object + type: array + verificationInfo: + description: |- + VerificationInfo is information about any verification process that was + associated with this Freight for this Stage. + properties: + actor: + description: |- + Actor is the name of the entity that initiated or aborted the + Verification process. + type: string + analysisRun: + description: |- + AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements + the Verification process. + properties: + name: + description: Name is the name of the AnalysisRun. + type: string + namespace: + description: Namespace is the namespace of the + AnalysisRun. + type: string + phase: + description: Phase is the last observed phase + of the AnalysisRun referenced by Name. + type: string + required: + - name + - namespace + - phase + type: object + finishTime: + description: FinishTime is the time at which the Verification + process finished. + format: date-time + type: string + id: + description: ID is the identifier of the Verification + process. + type: string + message: + description: |- + Message may contain additional information about why the verification + process is in its current phase. + type: string + phase: + description: |- + Phase describes the current phase of the Verification process. Generally, + this will be a reflection of the underlying AnalysisRun's phase, however, + there are exceptions to this, such as in the case where an AnalysisRun + cannot be launched successfully. + type: string + startTime: + description: StartTime is the time at which the Verification + process was started. + format: date-time + type: string + type: object + warehouse: + description: Warehouse is the name of the Warehouse that + created this Freight. + type: string + type: object type: object required: - freight diff --git a/internal/controller/promotions/promotions.go b/internal/controller/promotions/promotions.go index e59fedd4c..80b55e79c 100644 --- a/internal/controller/promotions/promotions.go +++ b/internal/controller/promotions/promotions.go @@ -271,7 +271,7 @@ func (r *reconciler) Reconcile( } return ctrl.Result{}, nil } - logger.Infof("began promotion") + logger.Info("began promotion") } // Update promo status as Running to give visibility in UI. Also, a promo which @@ -418,7 +418,7 @@ func (r *reconciler) promote( logger.Debug("found associated Stage") if targetFreight == nil { - return nil, fmt.Errorf("Freight %q not found in namespace %q", promo.Spec.Freight, promo.Namespace) + return nil, fmt.Errorf("freight %q not found in namespace %q", promo.Spec.Freight, promo.Namespace) } upstreamStages := make([]string, len(stage.Spec.Subscriptions.UpstreamStages)) for i, upstreamStage := range stage.Spec.Subscriptions.UpstreamStages { @@ -442,7 +442,6 @@ func (r *reconciler) promote( Charts: targetFreight.Charts, Warehouse: targetFreight.Warehouse, } - err = kubeclient.PatchStatus(ctx, r.kargoClient, stage, func(status *kargoapi.StageStatus) { status.Phase = kargoapi.StagePhasePromoting status.CurrentPromotion = &kargoapi.PromotionInfo{ @@ -453,6 +452,13 @@ func (r *reconciler) promote( if err != nil { return nil, err } + // record the freight reference to the promotion's status + err = kubeclient.PatchStatus(ctx, r.kargoClient, &promo, func(status *kargoapi.PromotionStatus) { + status.PromotedFreight = &targetFreightRef + }) + if err != nil { + return nil, err + } newStatus, nextFreight, err := r.promoMechanisms.Promote(ctx, stage, &promo, targetFreightRef) if err != nil { diff --git a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json index dcdcb31e2..1c71a8bc0 100644 --- a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json @@ -55,6 +55,220 @@ "phase": { "description": "Phase describes where the Promotion currently is in its lifecycle.", "type": "string" + }, + "promotedFreight": { + "description": "PromotedFreight is the detail of the piece of freight that was referenced by this promotion.", + "properties": { + "charts": { + "description": "Charts describes specific versions of specific Helm charts.", + "items": { + "description": "Chart describes a specific version of a Helm chart.", + "properties": { + "name": { + "description": "Name specifies the name of the chart.", + "type": "string" + }, + "repoURL": { + "description": "RepoURL specifies the URL of a Helm chart repository. Classic chart\nrepositories (using HTTP/S) can contain differently named charts. When this\nfield points to such a repository, the Name field will specify the name of\nthe chart within the repository. In the case of a repository within an OCI\nregistry, the URL implicitly points to a specific chart and the Name field\nwill be empty.", + "type": "string" + }, + "version": { + "description": "Version specifies a particular version of the chart.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "commits": { + "description": "Commits describes specific Git repository commits.", + "items": { + "description": "GitCommit describes a specific commit from a specific Git repository.", + "properties": { + "author": { + "description": "Author is the git commit author", + "type": "string" + }, + "branch": { + "description": "Branch denotes the branch of the repository where this commit was found.", + "type": "string" + }, + "healthCheckCommit": { + "description": "HealthCheckCommit is the ID of a specific commit. When specified,\nassessments of Stage health will used this value (instead of ID) when\ndetermining if applicable sources of Argo CD Application resources\nassociated with the Stage are or are not synced to this commit. Note that\nthere are cases (as in that of Kargo Render being utilized as a promotion\nmechanism) wherein the value of this field may differ from the commit ID\nfound in the ID field.", + "type": "string" + }, + "id": { + "description": "ID is the ID of a specific commit in the Git repository specified by\nRepoURL.", + "type": "string" + }, + "message": { + "description": "Message is the git commit message", + "type": "string" + }, + "repoURL": { + "description": "RepoURL is the URL of a Git repository.", + "type": "string" + }, + "tag": { + "description": "Tag denotes a tag in the repository that matched selection criteria and\nresolved to this commit.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "images": { + "description": "Images describes specific versions of specific container images.", + "items": { + "description": "Image describes a specific version of a container image.", + "properties": { + "digest": { + "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.", + "type": "string" + }, + "gitRepoURL": { + "description": "GitRepoURL specifies the URL of a Git repository that contains the source\ncode for the image repository referenced by the RepoURL field if Kargo was\nable to infer it.", + "type": "string" + }, + "repoURL": { + "description": "RepoURL describes the repository in which the image can be found.", + "type": "string" + }, + "tag": { + "description": "Tag identifies a specific version of the image in the repository specified\nby RepoURL.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "Name is system-assigned identifier that is derived deterministically from\nthe contents of the Freight. i.e. Two pieces of Freight can be compared for\nequality by comparing their Names.", + "type": "string" + }, + "verificationHistory": { + "description": "VerificationHistory is a stack of recent VerificationInfo. By default,\nthe last ten VerificationInfo are stored.", + "items": { + "description": "VerificationInfo contains information about the currently running\nVerification process.", + "properties": { + "actor": { + "description": "Actor is the name of the entity that initiated or aborted the\nVerification process.", + "type": "string" + }, + "analysisRun": { + "description": "AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements\nthe Verification process.", + "properties": { + "name": { + "description": "Name is the name of the AnalysisRun.", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of the AnalysisRun.", + "type": "string" + }, + "phase": { + "description": "Phase is the last observed phase of the AnalysisRun referenced by Name.", + "type": "string" + } + }, + "required": [ + "name", + "namespace", + "phase" + ], + "type": "object" + }, + "finishTime": { + "description": "FinishTime is the time at which the Verification process finished.", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "ID is the identifier of the Verification process.", + "type": "string" + }, + "message": { + "description": "Message may contain additional information about why the verification\nprocess is in its current phase.", + "type": "string" + }, + "phase": { + "description": "Phase describes the current phase of the Verification process. Generally,\nthis will be a reflection of the underlying AnalysisRun's phase, however,\nthere are exceptions to this, such as in the case where an AnalysisRun\ncannot be launched successfully.", + "type": "string" + }, + "startTime": { + "description": "StartTime is the time at which the Verification process was started.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "verificationInfo": { + "description": "VerificationInfo is information about any verification process that was\nassociated with this Freight for this Stage.", + "properties": { + "actor": { + "description": "Actor is the name of the entity that initiated or aborted the\nVerification process.", + "type": "string" + }, + "analysisRun": { + "description": "AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements\nthe Verification process.", + "properties": { + "name": { + "description": "Name is the name of the AnalysisRun.", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of the AnalysisRun.", + "type": "string" + }, + "phase": { + "description": "Phase is the last observed phase of the AnalysisRun referenced by Name.", + "type": "string" + } + }, + "required": [ + "name", + "namespace", + "phase" + ], + "type": "object" + }, + "finishTime": { + "description": "FinishTime is the time at which the Verification process finished.", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "ID is the identifier of the Verification process.", + "type": "string" + }, + "message": { + "description": "Message may contain additional information about why the verification\nprocess is in its current phase.", + "type": "string" + }, + "phase": { + "description": "Phase describes the current phase of the Verification process. Generally,\nthis will be a reflection of the underlying AnalysisRun's phase, however,\nthere are exceptions to this, such as in the case where an AnalysisRun\ncannot be launched successfully.", + "type": "string" + }, + "startTime": { + "description": "StartTime is the time at which the Verification process was started.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "warehouse": { + "description": "Warehouse is the name of the Warehouse that created this Freight.", + "type": "string" + } + }, + "type": "object" } }, "type": "object" diff --git a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json index 9071a339a..ed7c205ec 100644 --- a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json @@ -908,6 +908,220 @@ "phase": { "description": "Phase describes where the Promotion currently is in its lifecycle.", "type": "string" + }, + "promotedFreight": { + "description": "PromotedFreight is the detail of the piece of freight that was referenced by this promotion.", + "properties": { + "charts": { + "description": "Charts describes specific versions of specific Helm charts.", + "items": { + "description": "Chart describes a specific version of a Helm chart.", + "properties": { + "name": { + "description": "Name specifies the name of the chart.", + "type": "string" + }, + "repoURL": { + "description": "RepoURL specifies the URL of a Helm chart repository. Classic chart\nrepositories (using HTTP/S) can contain differently named charts. When this\nfield points to such a repository, the Name field will specify the name of\nthe chart within the repository. In the case of a repository within an OCI\nregistry, the URL implicitly points to a specific chart and the Name field\nwill be empty.", + "type": "string" + }, + "version": { + "description": "Version specifies a particular version of the chart.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "commits": { + "description": "Commits describes specific Git repository commits.", + "items": { + "description": "GitCommit describes a specific commit from a specific Git repository.", + "properties": { + "author": { + "description": "Author is the git commit author", + "type": "string" + }, + "branch": { + "description": "Branch denotes the branch of the repository where this commit was found.", + "type": "string" + }, + "healthCheckCommit": { + "description": "HealthCheckCommit is the ID of a specific commit. When specified,\nassessments of Stage health will used this value (instead of ID) when\ndetermining if applicable sources of Argo CD Application resources\nassociated with the Stage are or are not synced to this commit. Note that\nthere are cases (as in that of Kargo Render being utilized as a promotion\nmechanism) wherein the value of this field may differ from the commit ID\nfound in the ID field.", + "type": "string" + }, + "id": { + "description": "ID is the ID of a specific commit in the Git repository specified by\nRepoURL.", + "type": "string" + }, + "message": { + "description": "Message is the git commit message", + "type": "string" + }, + "repoURL": { + "description": "RepoURL is the URL of a Git repository.", + "type": "string" + }, + "tag": { + "description": "Tag denotes a tag in the repository that matched selection criteria and\nresolved to this commit.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "images": { + "description": "Images describes specific versions of specific container images.", + "items": { + "description": "Image describes a specific version of a container image.", + "properties": { + "digest": { + "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.", + "type": "string" + }, + "gitRepoURL": { + "description": "GitRepoURL specifies the URL of a Git repository that contains the source\ncode for the image repository referenced by the RepoURL field if Kargo was\nable to infer it.", + "type": "string" + }, + "repoURL": { + "description": "RepoURL describes the repository in which the image can be found.", + "type": "string" + }, + "tag": { + "description": "Tag identifies a specific version of the image in the repository specified\nby RepoURL.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "Name is system-assigned identifier that is derived deterministically from\nthe contents of the Freight. i.e. Two pieces of Freight can be compared for\nequality by comparing their Names.", + "type": "string" + }, + "verificationHistory": { + "description": "VerificationHistory is a stack of recent VerificationInfo. By default,\nthe last ten VerificationInfo are stored.", + "items": { + "description": "VerificationInfo contains information about the currently running\nVerification process.", + "properties": { + "actor": { + "description": "Actor is the name of the entity that initiated or aborted the\nVerification process.", + "type": "string" + }, + "analysisRun": { + "description": "AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements\nthe Verification process.", + "properties": { + "name": { + "description": "Name is the name of the AnalysisRun.", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of the AnalysisRun.", + "type": "string" + }, + "phase": { + "description": "Phase is the last observed phase of the AnalysisRun referenced by Name.", + "type": "string" + } + }, + "required": [ + "name", + "namespace", + "phase" + ], + "type": "object" + }, + "finishTime": { + "description": "FinishTime is the time at which the Verification process finished.", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "ID is the identifier of the Verification process.", + "type": "string" + }, + "message": { + "description": "Message may contain additional information about why the verification\nprocess is in its current phase.", + "type": "string" + }, + "phase": { + "description": "Phase describes the current phase of the Verification process. Generally,\nthis will be a reflection of the underlying AnalysisRun's phase, however,\nthere are exceptions to this, such as in the case where an AnalysisRun\ncannot be launched successfully.", + "type": "string" + }, + "startTime": { + "description": "StartTime is the time at which the Verification process was started.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "verificationInfo": { + "description": "VerificationInfo is information about any verification process that was\nassociated with this Freight for this Stage.", + "properties": { + "actor": { + "description": "Actor is the name of the entity that initiated or aborted the\nVerification process.", + "type": "string" + }, + "analysisRun": { + "description": "AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements\nthe Verification process.", + "properties": { + "name": { + "description": "Name is the name of the AnalysisRun.", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of the AnalysisRun.", + "type": "string" + }, + "phase": { + "description": "Phase is the last observed phase of the AnalysisRun referenced by Name.", + "type": "string" + } + }, + "required": [ + "name", + "namespace", + "phase" + ], + "type": "object" + }, + "finishTime": { + "description": "FinishTime is the time at which the Verification process finished.", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "ID is the identifier of the Verification process.", + "type": "string" + }, + "message": { + "description": "Message may contain additional information about why the verification\nprocess is in its current phase.", + "type": "string" + }, + "phase": { + "description": "Phase describes the current phase of the Verification process. Generally,\nthis will be a reflection of the underlying AnalysisRun's phase, however,\nthere are exceptions to this, such as in the case where an AnalysisRun\ncannot be launched successfully.", + "type": "string" + }, + "startTime": { + "description": "StartTime is the time at which the Verification process was started.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "warehouse": { + "description": "Warehouse is the name of the Warehouse that created this Freight.", + "type": "string" + } + }, + "type": "object" } }, "type": "object" @@ -1458,6 +1672,220 @@ "phase": { "description": "Phase describes where the Promotion currently is in its lifecycle.", "type": "string" + }, + "promotedFreight": { + "description": "PromotedFreight is the detail of the piece of freight that was referenced by this promotion.", + "properties": { + "charts": { + "description": "Charts describes specific versions of specific Helm charts.", + "items": { + "description": "Chart describes a specific version of a Helm chart.", + "properties": { + "name": { + "description": "Name specifies the name of the chart.", + "type": "string" + }, + "repoURL": { + "description": "RepoURL specifies the URL of a Helm chart repository. Classic chart\nrepositories (using HTTP/S) can contain differently named charts. When this\nfield points to such a repository, the Name field will specify the name of\nthe chart within the repository. In the case of a repository within an OCI\nregistry, the URL implicitly points to a specific chart and the Name field\nwill be empty.", + "type": "string" + }, + "version": { + "description": "Version specifies a particular version of the chart.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "commits": { + "description": "Commits describes specific Git repository commits.", + "items": { + "description": "GitCommit describes a specific commit from a specific Git repository.", + "properties": { + "author": { + "description": "Author is the git commit author", + "type": "string" + }, + "branch": { + "description": "Branch denotes the branch of the repository where this commit was found.", + "type": "string" + }, + "healthCheckCommit": { + "description": "HealthCheckCommit is the ID of a specific commit. When specified,\nassessments of Stage health will used this value (instead of ID) when\ndetermining if applicable sources of Argo CD Application resources\nassociated with the Stage are or are not synced to this commit. Note that\nthere are cases (as in that of Kargo Render being utilized as a promotion\nmechanism) wherein the value of this field may differ from the commit ID\nfound in the ID field.", + "type": "string" + }, + "id": { + "description": "ID is the ID of a specific commit in the Git repository specified by\nRepoURL.", + "type": "string" + }, + "message": { + "description": "Message is the git commit message", + "type": "string" + }, + "repoURL": { + "description": "RepoURL is the URL of a Git repository.", + "type": "string" + }, + "tag": { + "description": "Tag denotes a tag in the repository that matched selection criteria and\nresolved to this commit.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "images": { + "description": "Images describes specific versions of specific container images.", + "items": { + "description": "Image describes a specific version of a container image.", + "properties": { + "digest": { + "description": "Digest identifies a specific version of the image in the repository\nspecified by RepoURL. This is a more precise identifier than Tag.", + "type": "string" + }, + "gitRepoURL": { + "description": "GitRepoURL specifies the URL of a Git repository that contains the source\ncode for the image repository referenced by the RepoURL field if Kargo was\nable to infer it.", + "type": "string" + }, + "repoURL": { + "description": "RepoURL describes the repository in which the image can be found.", + "type": "string" + }, + "tag": { + "description": "Tag identifies a specific version of the image in the repository specified\nby RepoURL.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "Name is system-assigned identifier that is derived deterministically from\nthe contents of the Freight. i.e. Two pieces of Freight can be compared for\nequality by comparing their Names.", + "type": "string" + }, + "verificationHistory": { + "description": "VerificationHistory is a stack of recent VerificationInfo. By default,\nthe last ten VerificationInfo are stored.", + "items": { + "description": "VerificationInfo contains information about the currently running\nVerification process.", + "properties": { + "actor": { + "description": "Actor is the name of the entity that initiated or aborted the\nVerification process.", + "type": "string" + }, + "analysisRun": { + "description": "AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements\nthe Verification process.", + "properties": { + "name": { + "description": "Name is the name of the AnalysisRun.", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of the AnalysisRun.", + "type": "string" + }, + "phase": { + "description": "Phase is the last observed phase of the AnalysisRun referenced by Name.", + "type": "string" + } + }, + "required": [ + "name", + "namespace", + "phase" + ], + "type": "object" + }, + "finishTime": { + "description": "FinishTime is the time at which the Verification process finished.", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "ID is the identifier of the Verification process.", + "type": "string" + }, + "message": { + "description": "Message may contain additional information about why the verification\nprocess is in its current phase.", + "type": "string" + }, + "phase": { + "description": "Phase describes the current phase of the Verification process. Generally,\nthis will be a reflection of the underlying AnalysisRun's phase, however,\nthere are exceptions to this, such as in the case where an AnalysisRun\ncannot be launched successfully.", + "type": "string" + }, + "startTime": { + "description": "StartTime is the time at which the Verification process was started.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "verificationInfo": { + "description": "VerificationInfo is information about any verification process that was\nassociated with this Freight for this Stage.", + "properties": { + "actor": { + "description": "Actor is the name of the entity that initiated or aborted the\nVerification process.", + "type": "string" + }, + "analysisRun": { + "description": "AnalysisRun is a reference to the Argo Rollouts AnalysisRun that implements\nthe Verification process.", + "properties": { + "name": { + "description": "Name is the name of the AnalysisRun.", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of the AnalysisRun.", + "type": "string" + }, + "phase": { + "description": "Phase is the last observed phase of the AnalysisRun referenced by Name.", + "type": "string" + } + }, + "required": [ + "name", + "namespace", + "phase" + ], + "type": "object" + }, + "finishTime": { + "description": "FinishTime is the time at which the Verification process finished.", + "format": "date-time", + "type": "string" + }, + "id": { + "description": "ID is the identifier of the Verification process.", + "type": "string" + }, + "message": { + "description": "Message may contain additional information about why the verification\nprocess is in its current phase.", + "type": "string" + }, + "phase": { + "description": "Phase describes the current phase of the Verification process. Generally,\nthis will be a reflection of the underlying AnalysisRun's phase, however,\nthere are exceptions to this, such as in the case where an AnalysisRun\ncannot be launched successfully.", + "type": "string" + }, + "startTime": { + "description": "StartTime is the time at which the Verification process was started.", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "warehouse": { + "description": "Warehouse is the name of the Warehouse that created this Freight.", + "type": "string" + } + }, + "type": "object" } }, "type": "object" diff --git a/ui/src/gen/v1alpha1/generated_pb.ts b/ui/src/gen/v1alpha1/generated_pb.ts index 02bddbc8a..25a2a3b46 100644 --- a/ui/src/gen/v1alpha1/generated_pb.ts +++ b/ui/src/gen/v1alpha1/generated_pb.ts @@ -2929,6 +2929,13 @@ export class PromotionStatus extends Message { */ metadata: { [key: string]: string } = {}; + /** + * PromotedFreight is the detail of the piece of freight that was referenced by this promotion. + * + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.FreightReference promotedFreight = 5; + */ + promotedFreight?: FreightReference; + constructor(data?: PartialMessage) { super(); proto2.util.initPartial(data, this); @@ -2941,6 +2948,7 @@ export class PromotionStatus extends Message { { no: 1, name: "phase", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 2, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 3, name: "metadata", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 5, name: "promotedFreight", kind: "message", T: FreightReference, opt: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): PromotionStatus { From ed14a0d0b25fd1f871892f4ae8320e249d6f34b8 Mon Sep 17 00:00:00 2001 From: Nguyen Duy Phuong Date: Wed, 10 Apr 2024 22:58:12 +0700 Subject: [PATCH 2/5] patch promotion status with freight detail after git promote mechanism, add conventional method to add freight to promotion status Signed-off-by: Nguyen Duy Phuong --- api/v1alpha1/generated.pb.go | 452 +++++++++--------- api/v1alpha1/generated.proto | 4 +- api/v1alpha1/promotion_types.go | 11 +- api/v1alpha1/zz_generated.deepcopy.go | 4 +- .../crds/kargo.akuity.io_promotions.yaml | 4 +- .../crds/kargo.akuity.io_stages.yaml | 8 +- internal/controller/promotion/git.go | 2 +- internal/controller/promotions/promotions.go | 6 +- .../promotions.kargo.akuity.io_v1alpha1.json | 2 +- .../stages.kargo.akuity.io_v1alpha1.json | 4 +- ui/src/gen/v1alpha1/generated_pb.ts | 8 +- 11 files changed, 256 insertions(+), 249 deletions(-) diff --git a/api/v1alpha1/generated.pb.go b/api/v1alpha1/generated.pb.go index 61c927c5c..2db37e1de 100644 --- a/api/v1alpha1/generated.pb.go +++ b/api/v1alpha1/generated.pb.go @@ -1811,223 +1811,223 @@ func init() { } var fileDescriptor_e26b7f7bbc391025 = []byte{ - // 3455 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x1b, 0x4d, 0x6c, 0x1c, 0x57, - 0x39, 0xb3, 0xbb, 0x59, 0x7b, 0xbf, 0xf5, 0xef, 0xb3, 0x93, 0xba, 0x2e, 0xb1, 0xa3, 0x69, 0xa9, - 0x5a, 0xda, 0xae, 0x49, 0x52, 0xb7, 0x69, 0x5a, 0x5a, 0xbc, 0xce, 0x9f, 0x53, 0x37, 0x35, 0xcf, - 0x4e, 0x5a, 0xd2, 0x56, 0xf0, 0xbc, 0xfb, 0xbc, 0x3b, 0xf5, 0xee, 0xce, 0x74, 0xde, 0xac, 0x53, - 0x53, 0x09, 0x28, 0x50, 0xd1, 0x0b, 0x15, 0x88, 0x03, 0xe5, 0x0a, 0x08, 0xc4, 0x01, 0x6e, 0x1c, - 0x10, 0x87, 0x4a, 0xf4, 0x52, 0x71, 0x40, 0x15, 0xa7, 0x22, 0xa1, 0xa8, 0x35, 0x12, 0x07, 0xa4, - 0xc2, 0x3d, 0x12, 0x12, 0x7a, 0x3f, 0x33, 0xf3, 0x66, 0x76, 0xd6, 0x9e, 0x59, 0x92, 0xa8, 0xdc, - 0xec, 0xef, 0xf7, 0xbd, 0xef, 0x7d, 0xef, 0xfb, 0x9b, 0xb7, 0xf0, 0x68, 0xc3, 0xf2, 0x9a, 0xdd, - 0xcd, 0x4a, 0xcd, 0x6e, 0x2f, 0x90, 0xed, 0xae, 0xe5, 0xed, 0x2e, 0x6c, 0x13, 0xb7, 0x61, 0x2f, - 0x10, 0xc7, 0x5a, 0xd8, 0x39, 0x41, 0x5a, 0x4e, 0x93, 0x9c, 0x58, 0x68, 0xd0, 0x0e, 0x75, 0x89, - 0x47, 0xeb, 0x15, 0xc7, 0xb5, 0x3d, 0x1b, 0xdd, 0x17, 0x72, 0x55, 0x24, 0x57, 0x45, 0x70, 0x55, - 0x88, 0x63, 0x55, 0x7c, 0xae, 0xd9, 0x47, 0x34, 0xd9, 0x0d, 0xbb, 0x61, 0x2f, 0x08, 0xe6, 0xcd, - 0xee, 0x96, 0xf8, 0x4f, 0xfc, 0x23, 0xfe, 0x92, 0x42, 0x67, 0x1f, 0xdd, 0x3e, 0xcd, 0x2a, 0x96, - 0xd0, 0xdc, 0x26, 0xb5, 0xa6, 0xd5, 0xa1, 0xee, 0xee, 0x82, 0xb3, 0xdd, 0xe0, 0x00, 0xb6, 0xd0, - 0xa6, 0x1e, 0x59, 0xd8, 0xe9, 0x59, 0xca, 0xec, 0x42, 0x3f, 0x2e, 0xb7, 0xdb, 0xf1, 0xac, 0x36, - 0xed, 0x61, 0x78, 0xec, 0x20, 0x06, 0x56, 0x6b, 0xd2, 0x36, 0x89, 0xf3, 0x99, 0x2f, 0xc3, 0xd4, - 0x52, 0x87, 0xb4, 0x76, 0x99, 0xc5, 0x70, 0xb7, 0xb3, 0xe4, 0x36, 0xba, 0x6d, 0xda, 0xf1, 0xd0, - 0x71, 0x28, 0x74, 0x48, 0x9b, 0xce, 0x18, 0xc7, 0x8d, 0x07, 0x4a, 0xd5, 0x91, 0x0f, 0x6e, 0xcc, - 0x1f, 0xda, 0xbb, 0x31, 0x5f, 0xb8, 0x4c, 0xda, 0x14, 0x0b, 0x0c, 0xba, 0x17, 0x0e, 0xef, 0x90, - 0x56, 0x97, 0xce, 0xe4, 0x04, 0xc9, 0xa8, 0x22, 0x39, 0x7c, 0x95, 0x03, 0xb1, 0xc4, 0x99, 0xdf, - 0xcd, 0x47, 0xc4, 0x3f, 0x47, 0x3d, 0x52, 0x27, 0x1e, 0x41, 0x6d, 0x28, 0xb6, 0xc8, 0x26, 0x6d, - 0xb1, 0x19, 0xe3, 0x78, 0xfe, 0x81, 0xf2, 0xc9, 0x73, 0x95, 0x34, 0xa6, 0xaf, 0x24, 0x88, 0xaa, - 0xac, 0x0a, 0x39, 0xe7, 0x3a, 0x9e, 0xbb, 0x5b, 0x1d, 0x53, 0x8b, 0x28, 0x4a, 0x20, 0x56, 0x4a, - 0xd0, 0x9b, 0x06, 0x94, 0x49, 0xa7, 0x63, 0x7b, 0xc4, 0xb3, 0xec, 0x0e, 0x9b, 0xc9, 0x09, 0xa5, - 0x97, 0x06, 0x57, 0xba, 0x14, 0x0a, 0x93, 0x9a, 0xa7, 0x94, 0xe6, 0xb2, 0x86, 0xc1, 0xba, 0xce, - 0xd9, 0x27, 0xa0, 0xac, 0x2d, 0x15, 0x4d, 0x40, 0x7e, 0x9b, 0xee, 0x4a, 0xfb, 0x62, 0xfe, 0x27, - 0x9a, 0x8e, 0x18, 0x54, 0x59, 0xf0, 0x4c, 0xee, 0xb4, 0x31, 0xfb, 0x34, 0x4c, 0xc4, 0x15, 0x66, - 0xe1, 0x37, 0xdf, 0x31, 0x60, 0x5a, 0xdb, 0x05, 0xa6, 0x5b, 0xd4, 0xa5, 0x9d, 0x1a, 0x45, 0x0b, - 0x50, 0xe2, 0x67, 0xc9, 0x1c, 0x52, 0xf3, 0x8f, 0x7a, 0x52, 0x6d, 0xa4, 0x74, 0xd9, 0x47, 0xe0, - 0x90, 0x26, 0x70, 0x8b, 0xdc, 0x7e, 0x6e, 0xe1, 0x34, 0x09, 0xa3, 0x33, 0xf9, 0xa8, 0x5b, 0xac, - 0x71, 0x20, 0x96, 0x38, 0xf3, 0x4b, 0x70, 0xb7, 0xbf, 0x9e, 0x0d, 0xda, 0x76, 0x5a, 0xc4, 0xa3, - 0xe1, 0xa2, 0x0e, 0x74, 0x3d, 0x73, 0x1c, 0x46, 0x97, 0x1c, 0xc7, 0xb5, 0x77, 0x68, 0x7d, 0xdd, - 0x23, 0x0d, 0x6a, 0x7e, 0xc7, 0x80, 0x23, 0x4b, 0x6e, 0xc3, 0x5e, 0x3e, 0xbb, 0xe4, 0x38, 0x17, - 0x29, 0x69, 0x79, 0xcd, 0x75, 0x8f, 0x78, 0x5d, 0x86, 0x9e, 0x86, 0x22, 0x13, 0x7f, 0x29, 0x71, - 0xf7, 0xfb, 0x1e, 0x22, 0xf1, 0x37, 0x6f, 0xcc, 0x4f, 0x27, 0x30, 0x52, 0xac, 0xb8, 0xd0, 0x83, - 0x30, 0xd4, 0xa6, 0x8c, 0x91, 0x86, 0xbf, 0xe7, 0x71, 0x25, 0x60, 0xe8, 0x39, 0x09, 0xc6, 0x3e, - 0xde, 0xfc, 0x53, 0x0e, 0xc6, 0x03, 0x59, 0x4a, 0xfd, 0x6d, 0x30, 0x70, 0x17, 0x46, 0x9a, 0xda, - 0x0e, 0x85, 0x9d, 0xcb, 0x27, 0x9f, 0x4c, 0xe9, 0xcb, 0x49, 0x46, 0xaa, 0x4e, 0x2b, 0x35, 0x23, - 0x3a, 0x14, 0x47, 0xd4, 0xa0, 0x36, 0x00, 0xdb, 0xed, 0xd4, 0x94, 0xd2, 0x82, 0x50, 0xfa, 0x44, - 0x46, 0xa5, 0xeb, 0x81, 0x80, 0x2a, 0x52, 0x2a, 0x21, 0x84, 0x61, 0x4d, 0x81, 0xf9, 0x5b, 0x03, - 0xa6, 0x12, 0xf8, 0xd0, 0x53, 0xb1, 0xf3, 0xbc, 0xaf, 0xe7, 0x3c, 0x51, 0x0f, 0x5b, 0x78, 0x9a, - 0x0f, 0xc3, 0xb0, 0x4b, 0x77, 0x2c, 0x66, 0xd9, 0x1d, 0x65, 0xe1, 0x09, 0xc5, 0x3f, 0x8c, 0x15, - 0x1c, 0x07, 0x14, 0xe8, 0x21, 0x28, 0xf9, 0x7f, 0x73, 0x33, 0xe7, 0xb9, 0x3b, 0xf3, 0x83, 0xf3, - 0x49, 0x19, 0x0e, 0xf1, 0xe6, 0xa7, 0x86, 0x76, 0xfa, 0x57, 0x9c, 0x3a, 0xf1, 0x28, 0x77, 0x1e, - 0xe2, 0x38, 0x97, 0x43, 0x67, 0x0e, 0x9c, 0x67, 0x49, 0x82, 0xb1, 0x8f, 0x47, 0xa7, 0x61, 0x44, - 0xfd, 0x29, 0x7d, 0x45, 0xae, 0x2e, 0x38, 0x98, 0x25, 0x0d, 0x87, 0x23, 0x94, 0xa8, 0x0b, 0xa3, - 0xcc, 0xee, 0xba, 0x35, 0x2a, 0x95, 0xca, 0x95, 0x96, 0x4f, 0x9e, 0xce, 0x72, 0x36, 0xeb, 0x9a, - 0x80, 0xea, 0x11, 0xa5, 0x74, 0x54, 0x87, 0x32, 0x1c, 0xd5, 0x62, 0xbe, 0x06, 0x20, 0x79, 0x2f, - 0xd2, 0x56, 0x1b, 0xd5, 0xa0, 0x68, 0xb5, 0x49, 0x83, 0xfa, 0xf1, 0x3c, 0x93, 0x3b, 0x72, 0x09, - 0x2b, 0x9c, 0x5b, 0x2d, 0x20, 0x88, 0xe2, 0x02, 0xc8, 0xb0, 0x12, 0x6d, 0xbe, 0x1b, 0xdc, 0xf2, - 0x18, 0x07, 0x0f, 0x3a, 0x82, 0x46, 0x99, 0x39, 0x08, 0x3a, 0x82, 0x06, 0x4b, 0x1c, 0x3a, 0x26, - 0x23, 0xa6, 0xb4, 0x6c, 0x59, 0x91, 0xe4, 0x9f, 0xa5, 0xbb, 0x32, 0x7c, 0x3e, 0xe9, 0x87, 0x4f, - 0x19, 0xb8, 0x3e, 0x1f, 0xc9, 0x67, 0x3c, 0x4e, 0x68, 0x0a, 0x05, 0x6c, 0x63, 0xd7, 0x09, 0xf2, - 0xdc, 0x1b, 0xfe, 0xe1, 0x3f, 0xdb, 0x65, 0x9e, 0xdd, 0xb6, 0xbe, 0x41, 0x51, 0x33, 0x66, 0x92, - 0x2f, 0x67, 0x31, 0x49, 0x20, 0x26, 0x8d, 0x5d, 0x5c, 0x98, 0xed, 0xcf, 0x95, 0xce, 0x36, 0x0b, - 0x50, 0xea, 0x32, 0x7a, 0xd6, 0x6a, 0x50, 0xe6, 0x09, 0x0b, 0x0d, 0x87, 0x71, 0xea, 0x8a, 0x8f, - 0xc0, 0x21, 0x8d, 0xf9, 0xcf, 0x1c, 0xa0, 0x5e, 0xdf, 0xe1, 0x1e, 0xef, 0x52, 0xc7, 0xbe, 0x82, - 0x57, 0xe3, 0x1e, 0x8f, 0x25, 0x18, 0xfb, 0x78, 0xbe, 0xae, 0x5a, 0x93, 0xb8, 0x5e, 0xbc, 0x7e, - 0x58, 0xe6, 0x40, 0x2c, 0x71, 0x68, 0x0d, 0xa6, 0xbb, 0x42, 0xf2, 0x06, 0x71, 0x1b, 0xd4, 0xf3, - 0x6f, 0x9e, 0x38, 0xa3, 0xe1, 0xea, 0xe7, 0x14, 0xcf, 0xf4, 0x95, 0x04, 0x1a, 0x9c, 0xc8, 0x89, - 0x36, 0xa1, 0xb4, 0xed, 0x9b, 0x49, 0x85, 0xb1, 0xc5, 0x81, 0x4e, 0x46, 0xc6, 0x82, 0xe0, 0x5f, - 0x1c, 0x8a, 0x45, 0x97, 0xa1, 0xd0, 0xa4, 0xad, 0xf6, 0xcc, 0x61, 0x21, 0xfe, 0x8b, 0x59, 0xef, - 0x42, 0x75, 0x98, 0x87, 0x7c, 0xfe, 0x17, 0x16, 0x72, 0xcc, 0x6f, 0x81, 0xb4, 0x4a, 0x16, 0xf3, - 0x1e, 0x9c, 0x48, 0x1e, 0x84, 0xa1, 0x1d, 0xea, 0x06, 0xe6, 0xd4, 0x84, 0x5d, 0x95, 0x60, 0xec, - 0xe3, 0xcd, 0x5f, 0x1a, 0x30, 0x29, 0x56, 0xb0, 0xde, 0xdd, 0x64, 0x35, 0xd7, 0x72, 0x78, 0x21, - 0x72, 0x6b, 0x57, 0x73, 0x16, 0x26, 0x18, 0x6d, 0xef, 0x50, 0x77, 0xd9, 0xee, 0x30, 0xcf, 0x25, - 0x56, 0xc7, 0x53, 0xcb, 0x9a, 0x51, 0xd4, 0x13, 0xeb, 0x31, 0x3c, 0xee, 0xe1, 0x30, 0x7f, 0x51, - 0x80, 0xa1, 0xf3, 0x2e, 0xb5, 0x1a, 0x4d, 0x0f, 0x7d, 0x1d, 0x86, 0xdb, 0xaa, 0x5e, 0x13, 0xeb, - 0xe3, 0x27, 0x21, 0x8b, 0xe4, 0x8a, 0x5e, 0x24, 0x57, 0x9c, 0xed, 0x06, 0x07, 0xb0, 0x0a, 0xa7, - 0xae, 0xec, 0x9c, 0xa8, 0x3c, 0xbf, 0xf9, 0x2a, 0xad, 0x79, 0xbc, 0xd6, 0x0b, 0xd3, 0x54, 0x08, - 0xc3, 0x81, 0x54, 0xee, 0xc2, 0xa4, 0x65, 0x11, 0x36, 0x33, 0x14, 0x75, 0xe1, 0x25, 0x0e, 0xc4, - 0x12, 0xc7, 0xaf, 0xd6, 0x75, 0xe2, 0xd2, 0xa6, 0xdd, 0x65, 0x74, 0x66, 0x38, 0x5a, 0x02, 0xbc, - 0xe0, 0x23, 0x70, 0x48, 0x83, 0xae, 0xc1, 0x50, 0xcd, 0x6e, 0xb7, 0x2d, 0xcf, 0x0f, 0xe5, 0x0b, - 0xe9, 0x1c, 0xe8, 0x82, 0xe5, 0x2d, 0x0b, 0xbe, 0xf0, 0x1c, 0xe4, 0xff, 0x0c, 0xfb, 0x02, 0xd1, - 0x7a, 0x10, 0x94, 0x0a, 0x42, 0xf4, 0x43, 0xe9, 0x44, 0x8b, 0x58, 0xd1, 0x2f, 0xfe, 0x70, 0xa1, - 0xe2, 0xb6, 0xb2, 0x99, 0xc3, 0x59, 0x84, 0x0a, 0x87, 0x0a, 0x85, 0x8a, 0x7f, 0x19, 0x56, 0xa2, - 0xd0, 0x4b, 0x41, 0xa2, 0x2f, 0x8a, 0xb3, 0x3b, 0x95, 0x4e, 0xa8, 0x3a, 0x7c, 0x55, 0x65, 0x8c, - 0x45, 0xab, 0x03, 0xbf, 0x0e, 0x30, 0xdf, 0x33, 0xa0, 0xac, 0x28, 0x57, 0x2d, 0xe6, 0xa1, 0x97, - 0x7b, 0x5c, 0xa5, 0x92, 0xce, 0x55, 0x38, 0xb7, 0x70, 0x94, 0xa0, 0x8e, 0xf0, 0x21, 0x9a, 0x9b, - 0x60, 0x38, 0x6c, 0x79, 0xb4, 0xed, 0xb7, 0x1d, 0x8f, 0x64, 0xda, 0x89, 0x16, 0xb0, 0xb9, 0x0c, - 0x2c, 0x45, 0x99, 0x9f, 0x16, 0x60, 0x42, 0x51, 0x64, 0xa8, 0x9c, 0xa3, 0xce, 0x58, 0xcc, 0xe6, - 0x8c, 0xb9, 0xdb, 0xe7, 0x8c, 0xf9, 0xdb, 0xe1, 0x8c, 0x85, 0x5b, 0xe7, 0x8c, 0xaf, 0xc3, 0xc4, - 0x0e, 0x75, 0xad, 0x2d, 0xab, 0x26, 0x5a, 0xb0, 0x95, 0xce, 0x96, 0xad, 0x82, 0xfb, 0x63, 0xe9, - 0xc4, 0x5f, 0x8d, 0x71, 0x57, 0xa7, 0x79, 0x40, 0x8b, 0x43, 0x71, 0x8f, 0x16, 0xf4, 0x96, 0x01, - 0x53, 0x3a, 0xf0, 0xa2, 0xc5, 0x3c, 0xdb, 0xdd, 0x9d, 0x19, 0x12, 0x9b, 0x1b, 0x54, 0xfb, 0x3d, - 0x6a, 0x9f, 0x53, 0x57, 0x7b, 0x45, 0xe3, 0x24, 0x7d, 0xe6, 0xbf, 0xf2, 0x30, 0x1a, 0xb9, 0x5b, - 0xe8, 0x3a, 0x80, 0x24, 0xa4, 0xf5, 0x95, 0x8e, 0xaa, 0x71, 0x96, 0x07, 0xb8, 0xa4, 0x6a, 0x75, - 0x5c, 0x8a, 0x6c, 0xa5, 0x83, 0x98, 0x1b, 0x22, 0xb0, 0xa6, 0x0a, 0xbd, 0x01, 0x65, 0xa2, 0xba, - 0xbf, 0xf3, 0xb6, 0xab, 0xdc, 0xf2, 0xec, 0x20, 0x9a, 0x97, 0x42, 0x31, 0xf1, 0x2e, 0x3e, 0xc4, - 0x60, 0x5d, 0xdb, 0xac, 0x0b, 0xe3, 0xb1, 0xf5, 0x26, 0x74, 0xe2, 0x2b, 0x7a, 0x27, 0x9e, 0x3a, - 0x74, 0xf9, 0x72, 0x45, 0x4b, 0xab, 0xb7, 0xff, 0x0c, 0x26, 0xe2, 0x2b, 0xbd, 0x65, 0x4a, 0x23, - 0x7d, 0xb4, 0x3e, 0x33, 0xf8, 0x5d, 0x0e, 0x4a, 0xc1, 0x25, 0xce, 0x92, 0xea, 0x67, 0x21, 0x67, - 0xd5, 0x55, 0xa2, 0x07, 0x45, 0x95, 0x5b, 0x39, 0x8b, 0x73, 0x56, 0x1d, 0xdd, 0x0f, 0xc5, 0x4d, - 0x97, 0x74, 0x6a, 0x4d, 0x95, 0xda, 0x83, 0xfb, 0x56, 0x15, 0x50, 0xac, 0xb0, 0xbc, 0x54, 0xf7, - 0x48, 0x43, 0x94, 0x67, 0x5a, 0xa9, 0xbe, 0x41, 0x1a, 0x98, 0xc3, 0xd1, 0x05, 0x98, 0x94, 0xbd, - 0xe9, 0x72, 0x93, 0xd6, 0xb6, 0xe5, 0x12, 0xc5, 0x7d, 0x2c, 0x55, 0xef, 0x56, 0xc4, 0x93, 0x17, - 0xe3, 0x04, 0xb8, 0x97, 0x47, 0xef, 0xee, 0x8b, 0xfb, 0x77, 0xf7, 0x7c, 0xe9, 0xa4, 0xeb, 0x35, - 0x6d, 0x57, 0x25, 0xfb, 0x60, 0xe9, 0x4b, 0x02, 0x8a, 0x15, 0xd6, 0x9c, 0x82, 0xc9, 0x0b, 0x96, - 0x77, 0xb1, 0xbb, 0xb9, 0xd6, 0x6d, 0xb5, 0x30, 0x7d, 0xad, 0xcb, 0xab, 0x65, 0x09, 0x5c, 0x25, - 0x11, 0xe0, 0xaf, 0x0e, 0xc3, 0xe8, 0x05, 0xcb, 0x13, 0x06, 0xcc, 0x5c, 0x3d, 0xaf, 0xc3, 0x11, - 0xab, 0xc3, 0x68, 0xad, 0xeb, 0xd2, 0xf5, 0x6d, 0xcb, 0xd9, 0x58, 0x5d, 0x17, 0xee, 0xb3, 0xab, - 0x8a, 0xf7, 0x63, 0x8a, 0xf1, 0xc8, 0x4a, 0x12, 0x11, 0x4e, 0xe6, 0x45, 0x27, 0x01, 0x5c, 0x4a, - 0xea, 0x55, 0xfd, 0x88, 0x82, 0xdb, 0x88, 0x03, 0x0c, 0xd6, 0xa8, 0xd0, 0x22, 0x94, 0xaf, 0xbb, - 0x96, 0x47, 0x15, 0x93, 0x3c, 0xb2, 0xe0, 0x1e, 0xbd, 0x10, 0xa2, 0xb0, 0x4e, 0x87, 0x76, 0xa0, - 0xec, 0x84, 0xb6, 0x50, 0xc1, 0x34, 0x65, 0xf8, 0xd0, 0x8c, 0xb8, 0xe6, 0xda, 0x6d, 0x9b, 0xc7, - 0xa9, 0xe7, 0x68, 0xad, 0x49, 0x3a, 0x16, 0x6b, 0x57, 0xc7, 0xb9, 0x5e, 0x8d, 0x04, 0xeb, 0x8a, - 0x50, 0x03, 0x8a, 0x2e, 0xed, 0xd4, 0xa9, 0xab, 0xca, 0x8a, 0x94, 0x2a, 0x9f, 0xe5, 0x20, 0x2c, - 0x18, 0x13, 0x54, 0x02, 0xf7, 0x03, 0x89, 0xc5, 0x4a, 0x3c, 0xea, 0xe8, 0x7d, 0xc6, 0x90, 0xd0, - 0xb5, 0x94, 0x52, 0x97, 0xcf, 0x96, 0xa0, 0xa9, 0x7f, 0xcf, 0x71, 0x4d, 0xf5, 0x1c, 0xc3, 0x42, - 0xd5, 0x53, 0xe9, 0x54, 0xf1, 0x1e, 0x23, 0x41, 0x4b, 0xbc, 0xff, 0xf8, 0x63, 0x01, 0xc6, 0x2f, - 0x58, 0x03, 0x17, 0xff, 0x1e, 0xdc, 0x25, 0x53, 0xfe, 0x3a, 0x6d, 0xd1, 0x1a, 0xe7, 0x5e, 0xf7, - 0x5c, 0xe2, 0xd1, 0x86, 0xdf, 0x8c, 0x9f, 0x51, 0xac, 0x77, 0x2d, 0x27, 0x93, 0xdd, 0xec, 0x8f, - 0xc2, 0xfd, 0x44, 0xa7, 0x8e, 0x35, 0x49, 0x8d, 0x47, 0x21, 0x6b, 0xe3, 0xc1, 0x0b, 0x2b, 0xd2, - 0x6a, 0xd9, 0xd7, 0x37, 0x48, 0x83, 0xa9, 0x50, 0x14, 0x14, 0x56, 0x4b, 0x3e, 0x02, 0x87, 0x34, - 0xa8, 0x02, 0x60, 0x35, 0x3a, 0xb6, 0x4b, 0x05, 0x47, 0x51, 0x4c, 0x97, 0xc6, 0xf8, 0x3d, 0x5b, - 0x09, 0xa0, 0x58, 0xa3, 0xe8, 0x7f, 0xe1, 0x87, 0xfe, 0x87, 0x0b, 0xff, 0x28, 0x8c, 0x58, 0x9d, - 0x5a, 0xab, 0x5b, 0xa7, 0x6b, 0xc4, 0x6b, 0xb2, 0x99, 0x61, 0xb1, 0x8c, 0x89, 0xbd, 0x1b, 0xf3, - 0x23, 0x2b, 0x1a, 0x1c, 0x47, 0xa8, 0x38, 0x17, 0x7d, 0x5d, 0xe3, 0x2a, 0x85, 0x5c, 0xe7, 0x5e, - 0xd7, 0xb9, 0x74, 0x2a, 0xf3, 0xcf, 0x06, 0x14, 0x65, 0x50, 0x46, 0x8b, 0xb1, 0x21, 0xde, 0xb1, - 0x9e, 0x21, 0x5e, 0x39, 0x69, 0x16, 0x6b, 0x42, 0xd1, 0x62, 0xac, 0x4b, 0x65, 0x29, 0x5a, 0x92, - 0xd7, 0x6e, 0x45, 0x40, 0xb0, 0xc2, 0x20, 0x0b, 0x80, 0xf8, 0x53, 0x38, 0xbf, 0xae, 0x5c, 0xcc, - 0x3a, 0xa6, 0x8c, 0x8d, 0x28, 0x03, 0x04, 0xc3, 0x9a, 0x70, 0xf3, 0x67, 0x06, 0xdc, 0xcd, 0x2f, - 0x89, 0xa8, 0x15, 0xcf, 0x52, 0x87, 0xdf, 0xfb, 0x4e, 0x6d, 0x57, 0xc5, 0x72, 0x11, 0x4b, 0x1d, - 0x9b, 0x59, 0xa2, 0x5c, 0x33, 0xe2, 0xb1, 0xd4, 0xc7, 0x60, 0x8d, 0x2a, 0x45, 0x97, 0xbc, 0x00, - 0x25, 0x51, 0x92, 0x72, 0x93, 0x2a, 0xbf, 0x0e, 0xdc, 0x6c, 0xd9, 0x47, 0xe0, 0x90, 0xc6, 0xfc, - 0x8b, 0x01, 0xe3, 0x03, 0x4d, 0xcb, 0x9e, 0x86, 0x31, 0x51, 0x0c, 0xb0, 0xf3, 0x56, 0x4b, 0x9c, - 0xa0, 0x5a, 0xd5, 0x51, 0x45, 0x3d, 0x76, 0x35, 0x82, 0xc5, 0x31, 0x6a, 0x7f, 0xda, 0x96, 0x3f, - 0x68, 0xda, 0x56, 0x18, 0x60, 0xda, 0xf6, 0xb1, 0x01, 0x47, 0x93, 0x43, 0x17, 0x7a, 0x25, 0x36, - 0x75, 0x5b, 0x4c, 0x1f, 0x08, 0x53, 0x8c, 0xda, 0x78, 0xfa, 0x50, 0xdd, 0x85, 0x2c, 0x3b, 0x9f, - 0x49, 0x2f, 0x3e, 0xd1, 0x4d, 0xfa, 0x75, 0x1c, 0xe6, 0x6f, 0x0c, 0x90, 0xe7, 0x91, 0x25, 0xd0, - 0x9e, 0x04, 0x68, 0xa8, 0x82, 0x02, 0xaf, 0xaa, 0xf3, 0x0a, 0x7c, 0xee, 0x42, 0x80, 0xc1, 0x1a, - 0x95, 0x5f, 0x6a, 0xe5, 0xfb, 0x94, 0x5a, 0xf7, 0x43, 0xb1, 0x2e, 0xa7, 0x82, 0x85, 0x68, 0x14, - 0x55, 0x23, 0x41, 0x85, 0x35, 0xdf, 0x29, 0xc0, 0xa4, 0x58, 0xef, 0xa0, 0x49, 0x62, 0x90, 0xb5, - 0x3b, 0x70, 0x54, 0x9c, 0x4b, 0x6f, 0x5e, 0x91, 0xdb, 0x39, 0xad, 0xf8, 0x8f, 0xae, 0x24, 0x52, - 0xdd, 0xec, 0x8b, 0xc1, 0x7d, 0xe4, 0xfe, 0xbf, 0x24, 0x8b, 0x87, 0x61, 0xd8, 0x69, 0x11, 0x6f, - 0xcb, 0x76, 0xdb, 0xaa, 0x5c, 0x0d, 0xe6, 0x13, 0x6b, 0x0a, 0x8e, 0x03, 0x8a, 0xfe, 0xa9, 0x65, - 0x78, 0xf0, 0xd4, 0x62, 0x76, 0xe0, 0xa8, 0x56, 0x34, 0xdd, 0xfe, 0x81, 0xf4, 0x5b, 0x06, 0x1c, - 0xdb, 0xb7, 0x4a, 0x43, 0xf5, 0x58, 0x68, 0x78, 0x2a, 0x73, 0xe9, 0x97, 0x66, 0x18, 0xff, 0x8e, - 0x01, 0xd3, 0x83, 0xcf, 0xe1, 0x8f, 0x43, 0xc1, 0x09, 0x63, 0x6d, 0x90, 0x01, 0x44, 0x84, 0x15, - 0x98, 0xa8, 0x61, 0xf2, 0x29, 0x0c, 0xf3, 0xa6, 0x01, 0xf7, 0xec, 0x53, 0x52, 0xa2, 0xcd, 0x98, - 0x59, 0xce, 0x64, 0xac, 0x52, 0xd3, 0x18, 0xe5, 0xa7, 0x39, 0x18, 0x5a, 0x73, 0xed, 0x57, 0x69, - 0xed, 0x4e, 0x8c, 0x65, 0x9f, 0x87, 0x02, 0x73, 0x68, 0x4d, 0x35, 0xc2, 0x27, 0x52, 0x36, 0x15, - 0x72, 0x79, 0xeb, 0x0e, 0xad, 0xc9, 0xfa, 0x97, 0xff, 0x85, 0x85, 0x20, 0x6d, 0x16, 0x99, 0xcf, - 0xd2, 0x5b, 0xfb, 0x22, 0x0f, 0x9e, 0x45, 0x2a, 0xca, 0xcf, 0xec, 0x2c, 0x52, 0xad, 0xaf, 0xcf, - 0x2c, 0xf2, 0x07, 0xe1, 0x0e, 0xb8, 0xd1, 0xd0, 0x37, 0x61, 0xd2, 0xf1, 0xfd, 0x6c, 0xcd, 0x6e, - 0x59, 0x35, 0x2b, 0x6b, 0x3a, 0x5e, 0x8b, 0xb0, 0xef, 0x86, 0x5d, 0xfd, 0x5a, 0x5c, 0x2e, 0xee, - 0x55, 0x65, 0xda, 0x30, 0x1a, 0x31, 0x3d, 0x3a, 0xe5, 0xbf, 0x49, 0x88, 0x96, 0x9b, 0xf2, 0x4d, - 0xc2, 0xcd, 0x1b, 0xf3, 0x23, 0x8a, 0x5c, 0x7f, 0xa3, 0x90, 0xe5, 0xcb, 0xff, 0xcf, 0x73, 0x50, - 0x0a, 0x56, 0x76, 0x07, 0x1c, 0xfc, 0x4a, 0xc4, 0xc1, 0x4f, 0x65, 0xb4, 0xa9, 0x70, 0xf1, 0x20, - 0xb4, 0x68, 0x6e, 0xfe, 0x4a, 0xcc, 0xcd, 0xb3, 0x1e, 0xd6, 0x01, 0x8e, 0xfe, 0x6f, 0x43, 0x9c, - 0x8b, 0xa4, 0x15, 0xc3, 0xcd, 0x83, 0xe7, 0xd5, 0x04, 0x86, 0xb6, 0xe4, 0xc8, 0x4e, 0x6d, 0xf6, - 0xb1, 0x4c, 0x73, 0xbe, 0x60, 0x34, 0x1e, 0x1e, 0x9e, 0x8f, 0xf1, 0xe5, 0xa2, 0xaf, 0xde, 0x9a, - 0x5d, 0x43, 0xc2, 0x8e, 0xdf, 0xd7, 0x77, 0x7c, 0x07, 0x2e, 0xf7, 0x46, 0xf4, 0x72, 0x2f, 0x64, - 0xdc, 0x49, 0x9f, 0xeb, 0xfd, 0xfd, 0x1c, 0x4c, 0xf5, 0xe6, 0x0d, 0x86, 0x18, 0x8c, 0x35, 0xf4, - 0xf1, 0x95, 0x7f, 0xc7, 0x4f, 0xa5, 0xfe, 0x42, 0x10, 0xf2, 0x86, 0x6d, 0x45, 0x04, 0xcc, 0x70, - 0x4c, 0x05, 0x7a, 0x03, 0x26, 0x48, 0xf4, 0x95, 0x85, 0xbf, 0xdb, 0xac, 0x5d, 0x9e, 0x52, 0x1c, - 0xd4, 0x6d, 0x31, 0x04, 0xc3, 0x3d, 0x8a, 0xcc, 0xb7, 0x0d, 0x18, 0x8f, 0x85, 0x26, 0x9e, 0xd6, - 0x99, 0x97, 0x90, 0xd6, 0xd5, 0x40, 0x55, 0xe0, 0xd0, 0x1a, 0x4c, 0x93, 0xae, 0x67, 0x07, 0xbc, - 0xe7, 0x3a, 0x64, 0xb3, 0x45, 0xeb, 0xaa, 0xb0, 0x09, 0x3e, 0x63, 0x2f, 0x25, 0xd0, 0xe0, 0x44, - 0x4e, 0xf3, 0x6b, 0x9a, 0x67, 0x89, 0xa0, 0x9b, 0x6a, 0x1d, 0x0f, 0x46, 0xaf, 0x53, 0xa9, 0xff, - 0xb5, 0x30, 0xff, 0x91, 0xd7, 0xf6, 0xaa, 0xe2, 0xe8, 0x25, 0x40, 0x2d, 0xc2, 0xbc, 0x8b, 0xa4, - 0x53, 0xe7, 0x2b, 0xa3, 0x5b, 0x2e, 0x65, 0xfe, 0xc8, 0x6f, 0x56, 0x49, 0x42, 0xab, 0x3d, 0x14, - 0x38, 0x81, 0x0b, 0x2d, 0x46, 0x63, 0xf2, 0x7c, 0x3c, 0x26, 0x8f, 0x85, 0x86, 0x1e, 0x2c, 0x2a, - 0xa3, 0xd7, 0xb4, 0xbb, 0x96, 0xcf, 0xf2, 0x79, 0x22, 0xb6, 0xed, 0x8a, 0xff, 0xea, 0x4f, 0x7e, - 0x23, 0x08, 0x2e, 0xa0, 0x0f, 0xd6, 0x2e, 0x60, 0x17, 0xc6, 0x65, 0x3a, 0xa2, 0x75, 0x65, 0xd0, - 0x6c, 0x9f, 0x89, 0x7a, 0xc2, 0xd6, 0xd4, 0xde, 0x8d, 0x79, 0x75, 0x0c, 0x81, 0x48, 0x1c, 0xd7, - 0x31, 0xfb, 0x24, 0x8c, 0x46, 0xd6, 0x98, 0xe9, 0x71, 0xe0, 0x5f, 0x0d, 0x38, 0xb6, 0xef, 0x44, - 0x95, 0x97, 0x3f, 0x72, 0xf5, 0x2a, 0x64, 0x3d, 0x9e, 0xfa, 0x82, 0x47, 0xc7, 0xe0, 0x32, 0x46, - 0x4a, 0x30, 0x56, 0x22, 0x95, 0xf0, 0x16, 0xd9, 0x54, 0x01, 0x3e, 0xbd, 0xf0, 0xe8, 0x38, 0x3d, - 0x10, 0xbe, 0x4a, 0xa4, 0xf0, 0x16, 0xd9, 0x34, 0xdf, 0xcd, 0xc1, 0x04, 0x8f, 0x1e, 0x91, 0xa6, - 0x74, 0x0d, 0xf2, 0x0d, 0xcb, 0x53, 0x7b, 0x59, 0x4c, 0xad, 0x4e, 0x97, 0x51, 0x1d, 0xe2, 0x4d, - 0x32, 0x0f, 0x55, 0x5c, 0x14, 0x7a, 0xd1, 0x2f, 0xed, 0x33, 0x6d, 0xa1, 0xa7, 0x5d, 0xae, 0x96, - 0x7a, 0xfa, 0x81, 0x17, 0xfd, 0x47, 0x32, 0xf9, 0x2c, 0x92, 0x7b, 0x9e, 0x6a, 0x48, 0xc9, 0xfa, - 0xcb, 0x1a, 0xf3, 0x27, 0x39, 0x90, 0xb1, 0xe1, 0x0e, 0xd4, 0x2b, 0x5f, 0x89, 0xd4, 0x2b, 0x29, - 0xd3, 0x92, 0x58, 0x5c, 0xdf, 0x5a, 0x25, 0x9e, 0xb5, 0x4f, 0x64, 0x11, 0xba, 0x7f, 0x9d, 0xf2, - 0x07, 0x03, 0x4a, 0x82, 0xee, 0x0e, 0x64, 0xec, 0xb5, 0x68, 0xc6, 0x7e, 0x28, 0xc3, 0x2e, 0xfa, - 0x64, 0xeb, 0x1f, 0xe7, 0xd5, 0xea, 0x83, 0xac, 0xd0, 0x24, 0x6e, 0x5d, 0x05, 0xe9, 0x30, 0x2b, - 0x70, 0x20, 0x96, 0x38, 0xe4, 0xc0, 0x28, 0xd3, 0x9c, 0x85, 0xa9, 0x7d, 0xa6, 0xcc, 0xe3, 0xba, - 0x9f, 0x31, 0xed, 0xf1, 0xa0, 0x0e, 0xc6, 0x51, 0x05, 0xe8, 0x7b, 0x06, 0x4c, 0x39, 0xbd, 0x25, - 0x85, 0x72, 0x90, 0x27, 0x32, 0x86, 0xe9, 0x50, 0x40, 0xf5, 0xae, 0xbd, 0x1b, 0xf3, 0x49, 0xc5, - 0x0a, 0x4e, 0x52, 0x87, 0x9a, 0x30, 0xa2, 0x7f, 0xeb, 0x56, 0xae, 0x74, 0x32, 0xfb, 0x47, 0x75, - 0x39, 0xfc, 0xd6, 0x21, 0x38, 0x22, 0xd9, 0xfc, 0x51, 0x11, 0xca, 0x9a, 0xef, 0xf5, 0xc9, 0xa4, - 0xe5, 0x81, 0x32, 0xe9, 0x89, 0x68, 0x26, 0xbd, 0x27, 0x9e, 0x49, 0x41, 0x28, 0x8e, 0x64, 0x51, - 0x17, 0xc6, 0x6a, 0x5d, 0xd7, 0xa5, 0x1d, 0xef, 0xfc, 0x2d, 0xa9, 0xae, 0x11, 0xaf, 0xdc, 0x96, - 0x23, 0x12, 0x71, 0x4c, 0x03, 0x2f, 0xe5, 0x9b, 0xea, 0xf1, 0x42, 0x3e, 0xcb, 0xe3, 0x85, 0xfe, - 0xa5, 0xbc, 0xff, 0x60, 0xc1, 0x97, 0x8b, 0xd6, 0xa0, 0x28, 0xbf, 0xf1, 0xaa, 0xaf, 0x60, 0x0f, - 0xa7, 0x9d, 0xce, 0x72, 0x1e, 0x99, 0x40, 0xe4, 0xdf, 0x58, 0xc9, 0xd1, 0xcb, 0x8d, 0xd2, 0x01, - 0xe5, 0xc6, 0x25, 0x40, 0xf6, 0x26, 0xa3, 0xee, 0x0e, 0xad, 0x5f, 0x90, 0xbf, 0xb1, 0xe0, 0x2e, - 0x55, 0x3c, 0x6e, 0x3c, 0x90, 0x0f, 0x8f, 0xf4, 0xf9, 0x1e, 0x0a, 0x9c, 0xc0, 0x85, 0xba, 0x30, - 0xa1, 0xac, 0x17, 0xf8, 0xb2, 0xfa, 0x86, 0x98, 0xb5, 0xd9, 0x0b, 0x1f, 0x9b, 0x2c, 0xc7, 0x04, - 0xe2, 0x1e, 0x15, 0xa8, 0x05, 0xa3, 0xdc, 0xbf, 0x42, 0x9d, 0x30, 0xb8, 0xce, 0x49, 0x1e, 0x04, - 0x56, 0x75, 0x69, 0x38, 0x2a, 0xdc, 0x5c, 0x84, 0x49, 0x79, 0x25, 0xf4, 0xe4, 0x7c, 0xf0, 0xe3, - 0xff, 0xdf, 0x1b, 0x10, 0x0d, 0x2e, 0xd1, 0x47, 0x4d, 0x46, 0x8a, 0x47, 0x4d, 0xd7, 0x61, 0xac, - 0xeb, 0x30, 0xcf, 0xa5, 0xa4, 0x2d, 0x56, 0xe0, 0x87, 0xdf, 0xc7, 0xb3, 0x24, 0x11, 0x3d, 0xbd, - 0x06, 0xdd, 0xcb, 0x95, 0x88, 0x58, 0x1c, 0x53, 0x63, 0xfe, 0x27, 0x07, 0x91, 0x28, 0x81, 0xde, - 0x36, 0x60, 0x92, 0xc4, 0x7e, 0x09, 0xe1, 0xf7, 0x51, 0xcf, 0x64, 0xfb, 0x79, 0x4a, 0xcf, 0x0f, - 0x29, 0xc2, 0xa9, 0x49, 0x9c, 0x84, 0xe1, 0x5e, 0xa5, 0x22, 0x26, 0x93, 0xde, 0x9f, 0xba, 0x64, - 0x8b, 0xc9, 0x09, 0xbf, 0x95, 0x91, 0x31, 0x39, 0x01, 0x81, 0x93, 0xd4, 0xa1, 0x97, 0xa0, 0x40, - 0xdc, 0x86, 0xff, 0xe9, 0x2e, 0xbb, 0x5a, 0xff, 0x17, 0x4c, 0xa1, 0xef, 0x2c, 0xb9, 0x0d, 0x86, - 0x85, 0x50, 0xf3, 0x6f, 0x79, 0xe8, 0x79, 0x74, 0xa5, 0x1e, 0xac, 0x14, 0x12, 0x1f, 0xac, 0xdc, - 0x0b, 0x87, 0x49, 0xcd, 0x0b, 0x1e, 0x7d, 0x84, 0x2f, 0x3c, 0x39, 0x10, 0x4b, 0x1c, 0x7a, 0x01, - 0x4a, 0xcc, 0x23, 0xae, 0xb7, 0x61, 0xb5, 0xa9, 0xaa, 0xf7, 0xbf, 0x90, 0xae, 0x46, 0xe0, 0x1c, - 0xf2, 0x9b, 0xfe, 0xba, 0x2f, 0x00, 0x87, 0xb2, 0xd0, 0xe9, 0x68, 0x64, 0x37, 0xe3, 0x91, 0x7d, - 0x52, 0xdf, 0xcb, 0xa0, 0x6d, 0x52, 0x1b, 0xca, 0xda, 0x39, 0xa8, 0x1c, 0x78, 0x26, 0xb3, 0xdd, - 0xb5, 0xf8, 0x2c, 0x7f, 0x06, 0x15, 0x62, 0x74, 0xf9, 0xe8, 0x1a, 0xc0, 0x96, 0xd5, 0xb1, 0x58, - 0x53, 0x58, 0xab, 0x98, 0xd9, 0x5a, 0xe2, 0xb3, 0xc7, 0xf9, 0x40, 0x02, 0xd6, 0xa4, 0x99, 0xe3, - 0x30, 0x1a, 0x79, 0x44, 0x25, 0x06, 0x73, 0x41, 0x04, 0xf8, 0xac, 0x0e, 0xe6, 0x82, 0x05, 0xde, - 0xea, 0xc1, 0x5c, 0x28, 0x78, 0xff, 0x82, 0xf7, 0x7d, 0x03, 0x46, 0x03, 0xda, 0xcf, 0xec, 0x98, - 0x2a, 0x58, 0x61, 0x9f, 0xc2, 0xf7, 0xd7, 0xfa, 0x2e, 0xa2, 0xc5, 0x6f, 0x6e, 0x9f, 0xe2, 0x97, - 0xf5, 0x16, 0xbf, 0x19, 0x8a, 0x93, 0x78, 0x73, 0x99, 0xae, 0xfe, 0x35, 0xdf, 0xcb, 0xc1, 0x78, - 0xec, 0x74, 0xfa, 0x94, 0x84, 0xc5, 0x81, 0x4a, 0x42, 0xed, 0xfa, 0xe7, 0x07, 0x2a, 0x5b, 0x0a, - 0x03, 0x95, 0x2d, 0x16, 0x94, 0xf9, 0x62, 0x6e, 0xcd, 0xe8, 0x43, 0x84, 0x91, 0xd5, 0x50, 0x1c, - 0xd6, 0x65, 0x57, 0x2f, 0x7d, 0xf0, 0xc9, 0xdc, 0xa1, 0x0f, 0x3f, 0x99, 0x3b, 0xf4, 0xd1, 0x27, - 0x73, 0x87, 0xbe, 0xbd, 0x37, 0x67, 0x7c, 0xb0, 0x37, 0x67, 0x7c, 0xb8, 0x37, 0x67, 0x7c, 0xb4, - 0x37, 0x67, 0x7c, 0xbc, 0x37, 0x67, 0xfc, 0xf0, 0xef, 0x73, 0x87, 0xae, 0xdd, 0x97, 0xe6, 0x67, - 0xc0, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x23, 0x46, 0xf9, 0x2d, 0x3c, 0x00, 0x00, + // 3444 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3b, 0x4b, 0x6c, 0x24, 0xc5, + 0xd9, 0xdb, 0x33, 0xe3, 0xb1, 0xe7, 0x1b, 0x3f, 0xcb, 0xde, 0xc5, 0x98, 0x7f, 0xbd, 0xab, 0x86, + 0x1f, 0x41, 0x80, 0x71, 0x76, 0x17, 0xc3, 0xb2, 0x10, 0x88, 0xc7, 0xfb, 0xf2, 0x62, 0x16, 0xa7, + 0xec, 0x5d, 0xc8, 0x02, 0x4a, 0xca, 0x33, 0xe5, 0x99, 0xc6, 0x33, 0xd3, 0x4d, 0x57, 0x8f, 0x17, + 0x07, 0x29, 0x09, 0x49, 0x50, 0xb8, 0x04, 0x25, 0xca, 0x21, 0xe4, 0x9a, 0x44, 0x89, 0x72, 0x48, + 0x6e, 0x39, 0x44, 0x39, 0x20, 0x85, 0x0b, 0xca, 0x01, 0xa1, 0x9c, 0x88, 0x14, 0xad, 0xc0, 0xb9, + 0x45, 0x22, 0xb9, 0xaf, 0x14, 0x29, 0xaa, 0x47, 0x77, 0x57, 0xf7, 0xf4, 0xd8, 0xdd, 0xc3, 0xee, + 0x8a, 0xdc, 0xec, 0xef, 0x59, 0xf5, 0xd5, 0x57, 0xdf, 0xab, 0x6b, 0xe0, 0xd1, 0x86, 0xe5, 0x35, + 0xbb, 0x9b, 0x95, 0x9a, 0xdd, 0x5e, 0x20, 0xdb, 0x5d, 0xcb, 0xdb, 0x5d, 0xd8, 0x26, 0x6e, 0xc3, + 0x5e, 0x20, 0x8e, 0xb5, 0xb0, 0x73, 0x82, 0xb4, 0x9c, 0x26, 0x39, 0xb1, 0xd0, 0xa0, 0x1d, 0xea, + 0x12, 0x8f, 0xd6, 0x2b, 0x8e, 0x6b, 0x7b, 0x36, 0xba, 0x2f, 0xe4, 0xaa, 0x48, 0xae, 0x8a, 0xe0, + 0xaa, 0x10, 0xc7, 0xaa, 0xf8, 0x5c, 0x73, 0x8f, 0x68, 0xb2, 0x1b, 0x76, 0xc3, 0x5e, 0x10, 0xcc, + 0x9b, 0xdd, 0x2d, 0xf1, 0x9f, 0xf8, 0x47, 0xfc, 0x25, 0x85, 0xce, 0x3d, 0xba, 0x7d, 0x9a, 0x55, + 0x2c, 0xa1, 0xb9, 0x4d, 0x6a, 0x4d, 0xab, 0x43, 0xdd, 0xdd, 0x05, 0x67, 0xbb, 0xc1, 0x01, 0x6c, + 0xa1, 0x4d, 0x3d, 0xb2, 0xb0, 0xd3, 0xb3, 0x94, 0xb9, 0x85, 0x7e, 0x5c, 0x6e, 0xb7, 0xe3, 0x59, + 0x6d, 0xda, 0xc3, 0xf0, 0xd8, 0x41, 0x0c, 0xac, 0xd6, 0xa4, 0x6d, 0x12, 0xe7, 0x33, 0x5f, 0x86, + 0xe9, 0xa5, 0x0e, 0x69, 0xed, 0x32, 0x8b, 0xe1, 0x6e, 0x67, 0xc9, 0x6d, 0x74, 0xdb, 0xb4, 0xe3, + 0xa1, 0xe3, 0x50, 0xe8, 0x90, 0x36, 0x9d, 0x35, 0x8e, 0x1b, 0x0f, 0x94, 0xaa, 0xa3, 0x1f, 0xdc, + 0x38, 0x76, 0x68, 0xef, 0xc6, 0xb1, 0xc2, 0x65, 0xd2, 0xa6, 0x58, 0x60, 0xd0, 0xbd, 0x30, 0xb4, + 0x43, 0x5a, 0x5d, 0x3a, 0x9b, 0x13, 0x24, 0x63, 0x8a, 0x64, 0xe8, 0x2a, 0x07, 0x62, 0x89, 0x33, + 0xbf, 0x9f, 0x8f, 0x88, 0x7f, 0x8e, 0x7a, 0xa4, 0x4e, 0x3c, 0x82, 0xda, 0x50, 0x6c, 0x91, 0x4d, + 0xda, 0x62, 0xb3, 0xc6, 0xf1, 0xfc, 0x03, 0xe5, 0x93, 0xe7, 0x2a, 0x69, 0x4c, 0x5f, 0x49, 0x10, + 0x55, 0x59, 0x15, 0x72, 0xce, 0x75, 0x3c, 0x77, 0xb7, 0x3a, 0xae, 0x16, 0x51, 0x94, 0x40, 0xac, + 0x94, 0xa0, 0x37, 0x0d, 0x28, 0x93, 0x4e, 0xc7, 0xf6, 0x88, 0x67, 0xd9, 0x1d, 0x36, 0x9b, 0x13, + 0x4a, 0x2f, 0x0d, 0xae, 0x74, 0x29, 0x14, 0x26, 0x35, 0x4f, 0x2b, 0xcd, 0x65, 0x0d, 0x83, 0x75, + 0x9d, 0x73, 0x4f, 0x40, 0x59, 0x5b, 0x2a, 0x9a, 0x84, 0xfc, 0x36, 0xdd, 0x95, 0xf6, 0xc5, 0xfc, + 0x4f, 0x34, 0x13, 0x31, 0xa8, 0xb2, 0xe0, 0x99, 0xdc, 0x69, 0x63, 0xee, 0x69, 0x98, 0x8c, 0x2b, + 0xcc, 0xc2, 0x6f, 0xbe, 0x63, 0xc0, 0x8c, 0xb6, 0x0b, 0x4c, 0xb7, 0xa8, 0x4b, 0x3b, 0x35, 0x8a, + 0x16, 0xa0, 0xc4, 0xcf, 0x92, 0x39, 0xa4, 0xe6, 0x1f, 0xf5, 0x94, 0xda, 0x48, 0xe9, 0xb2, 0x8f, + 0xc0, 0x21, 0x4d, 0xe0, 0x16, 0xb9, 0xfd, 0xdc, 0xc2, 0x69, 0x12, 0x46, 0x67, 0xf3, 0x51, 0xb7, + 0x58, 0xe3, 0x40, 0x2c, 0x71, 0xe6, 0x57, 0xe0, 0x6e, 0x7f, 0x3d, 0x1b, 0xb4, 0xed, 0xb4, 0x88, + 0x47, 0xc3, 0x45, 0x1d, 0xe8, 0x7a, 0xe6, 0x04, 0x8c, 0x2d, 0x39, 0x8e, 0x6b, 0xef, 0xd0, 0xfa, + 0xba, 0x47, 0x1a, 0xd4, 0xfc, 0x9e, 0x01, 0x87, 0x97, 0xdc, 0x86, 0xbd, 0x7c, 0x76, 0xc9, 0x71, + 0x2e, 0x52, 0xd2, 0xf2, 0x9a, 0xeb, 0x1e, 0xf1, 0xba, 0x0c, 0x3d, 0x0d, 0x45, 0x26, 0xfe, 0x52, + 0xe2, 0xee, 0xf7, 0x3d, 0x44, 0xe2, 0x6f, 0xde, 0x38, 0x36, 0x93, 0xc0, 0x48, 0xb1, 0xe2, 0x42, + 0x0f, 0xc2, 0x70, 0x9b, 0x32, 0x46, 0x1a, 0xfe, 0x9e, 0x27, 0x94, 0x80, 0xe1, 0xe7, 0x24, 0x18, + 0xfb, 0x78, 0xf3, 0x2f, 0x39, 0x98, 0x08, 0x64, 0x29, 0xf5, 0xb7, 0xc1, 0xc0, 0x5d, 0x18, 0x6d, + 0x6a, 0x3b, 0x14, 0x76, 0x2e, 0x9f, 0x7c, 0x32, 0xa5, 0x2f, 0x27, 0x19, 0xa9, 0x3a, 0xa3, 0xd4, + 0x8c, 0xea, 0x50, 0x1c, 0x51, 0x83, 0xda, 0x00, 0x6c, 0xb7, 0x53, 0x53, 0x4a, 0x0b, 0x42, 0xe9, + 0x13, 0x19, 0x95, 0xae, 0x07, 0x02, 0xaa, 0x48, 0xa9, 0x84, 0x10, 0x86, 0x35, 0x05, 0xe6, 0xef, + 0x0d, 0x98, 0x4e, 0xe0, 0x43, 0x4f, 0xc5, 0xce, 0xf3, 0xbe, 0x9e, 0xf3, 0x44, 0x3d, 0x6c, 0xe1, + 0x69, 0x3e, 0x0c, 0x23, 0x2e, 0xdd, 0xb1, 0x98, 0x65, 0x77, 0x94, 0x85, 0x27, 0x15, 0xff, 0x08, + 0x56, 0x70, 0x1c, 0x50, 0xa0, 0x87, 0xa0, 0xe4, 0xff, 0xcd, 0xcd, 0x9c, 0xe7, 0xee, 0xcc, 0x0f, + 0xce, 0x27, 0x65, 0x38, 0xc4, 0x9b, 0x9f, 0x19, 0xda, 0xe9, 0x5f, 0x71, 0xea, 0xc4, 0xa3, 0xdc, + 0x79, 0x88, 0xe3, 0x5c, 0x0e, 0x9d, 0x39, 0x70, 0x9e, 0x25, 0x09, 0xc6, 0x3e, 0x1e, 0x9d, 0x86, + 0x51, 0xf5, 0xa7, 0xf4, 0x15, 0xb9, 0xba, 0xe0, 0x60, 0x96, 0x34, 0x1c, 0x8e, 0x50, 0xa2, 0x2e, + 0x8c, 0x31, 0xbb, 0xeb, 0xd6, 0xa8, 0x54, 0x2a, 0x57, 0x5a, 0x3e, 0x79, 0x3a, 0xcb, 0xd9, 0xac, + 0x6b, 0x02, 0xaa, 0x87, 0x95, 0xd2, 0x31, 0x1d, 0xca, 0x70, 0x54, 0x8b, 0xf9, 0x1a, 0x80, 0xe4, + 0xbd, 0x48, 0x5b, 0x6d, 0x54, 0x83, 0xa2, 0xd5, 0x26, 0x0d, 0xea, 0xc7, 0xf3, 0x4c, 0xee, 0xc8, + 0x25, 0xac, 0x70, 0x6e, 0xb5, 0x80, 0x20, 0x8a, 0x0b, 0x20, 0xc3, 0x4a, 0xb4, 0xf9, 0x6e, 0x70, + 0xcb, 0x63, 0x1c, 0x3c, 0xe8, 0x08, 0x1a, 0x65, 0xe6, 0x20, 0xe8, 0x08, 0x1a, 0x2c, 0x71, 0xe8, + 0xa8, 0x8c, 0x98, 0xd2, 0xb2, 0x65, 0x45, 0x92, 0x7f, 0x96, 0xee, 0xca, 0xf0, 0xf9, 0xa4, 0x1f, + 0x3e, 0x65, 0xe0, 0xfa, 0xff, 0x48, 0x3e, 0xe3, 0x71, 0x42, 0x53, 0x28, 0x60, 0x1b, 0xbb, 0x4e, + 0x90, 0xe7, 0xde, 0xf0, 0x0f, 0xff, 0xd9, 0x2e, 0xf3, 0xec, 0xb6, 0xf5, 0x2d, 0x8a, 0x9a, 0x31, + 0x93, 0x7c, 0x35, 0x8b, 0x49, 0x02, 0x31, 0x69, 0xec, 0xe2, 0xc2, 0x5c, 0x7f, 0xae, 0x74, 0xb6, + 0x59, 0x80, 0x52, 0x97, 0xd1, 0xb3, 0x56, 0x83, 0x32, 0x4f, 0x58, 0x68, 0x24, 0x8c, 0x53, 0x57, + 0x7c, 0x04, 0x0e, 0x69, 0xcc, 0x7f, 0xe6, 0x00, 0xf5, 0xfa, 0x0e, 0xf7, 0x78, 0x97, 0x3a, 0xf6, + 0x15, 0xbc, 0x1a, 0xf7, 0x78, 0x2c, 0xc1, 0xd8, 0xc7, 0xf3, 0x75, 0xd5, 0x9a, 0xc4, 0xf5, 0xe2, + 0xf5, 0xc3, 0x32, 0x07, 0x62, 0x89, 0x43, 0x6b, 0x30, 0xd3, 0x15, 0x92, 0x37, 0x88, 0xdb, 0xa0, + 0x9e, 0x7f, 0xf3, 0xc4, 0x19, 0x8d, 0x54, 0xff, 0x4f, 0xf1, 0xcc, 0x5c, 0x49, 0xa0, 0xc1, 0x89, + 0x9c, 0x68, 0x13, 0x4a, 0xdb, 0xbe, 0x99, 0x54, 0x18, 0x5b, 0x1c, 0xe8, 0x64, 0x64, 0x2c, 0x08, + 0xfe, 0xc5, 0xa1, 0x58, 0x74, 0x19, 0x0a, 0x4d, 0xda, 0x6a, 0xcf, 0x0e, 0x09, 0xf1, 0x5f, 0xce, + 0x7a, 0x17, 0xaa, 0x23, 0x3c, 0xe4, 0xf3, 0xbf, 0xb0, 0x90, 0x63, 0x7e, 0x07, 0xa4, 0x55, 0xb2, + 0x98, 0xf7, 0xe0, 0x44, 0xf2, 0x20, 0x0c, 0xef, 0x50, 0x37, 0x30, 0xa7, 0x26, 0xec, 0xaa, 0x04, + 0x63, 0x1f, 0x6f, 0xfe, 0xda, 0x80, 0x29, 0xb1, 0x82, 0xf5, 0xee, 0x26, 0xab, 0xb9, 0x96, 0xc3, + 0x0b, 0x91, 0x5b, 0xbb, 0x9a, 0xb3, 0x30, 0xc9, 0x68, 0x7b, 0x87, 0xba, 0xcb, 0x76, 0x87, 0x79, + 0x2e, 0xb1, 0x3a, 0x9e, 0x5a, 0xd6, 0xac, 0xa2, 0x9e, 0x5c, 0x8f, 0xe1, 0x71, 0x0f, 0x87, 0xf9, + 0xab, 0x02, 0x0c, 0x9f, 0x77, 0xa9, 0xd5, 0x68, 0x7a, 0xe8, 0x9b, 0x30, 0xd2, 0x56, 0xf5, 0x9a, + 0x58, 0x1f, 0x3f, 0x09, 0x59, 0x24, 0x57, 0xf4, 0x22, 0xb9, 0xe2, 0x6c, 0x37, 0x38, 0x80, 0x55, + 0x38, 0x75, 0x65, 0xe7, 0x44, 0xe5, 0xf9, 0xcd, 0x57, 0x69, 0xcd, 0xe3, 0xb5, 0x5e, 0x98, 0xa6, + 0x42, 0x18, 0x0e, 0xa4, 0x72, 0x17, 0x26, 0x2d, 0x8b, 0xb0, 0xd9, 0xe1, 0xa8, 0x0b, 0x2f, 0x71, + 0x20, 0x96, 0x38, 0x7e, 0xb5, 0xae, 0x13, 0x97, 0x36, 0xed, 0x2e, 0xa3, 0xb3, 0x23, 0xd1, 0x12, + 0xe0, 0x05, 0x1f, 0x81, 0x43, 0x1a, 0x74, 0x0d, 0x86, 0x6b, 0x76, 0xbb, 0x6d, 0x79, 0x7e, 0x28, + 0x5f, 0x48, 0xe7, 0x40, 0x17, 0x2c, 0x6f, 0x59, 0xf0, 0x85, 0xe7, 0x20, 0xff, 0x67, 0xd8, 0x17, + 0x88, 0xd6, 0x83, 0xa0, 0x54, 0x10, 0xa2, 0x1f, 0x4a, 0x27, 0x5a, 0xc4, 0x8a, 0x7e, 0xf1, 0x87, + 0x0b, 0x15, 0xb7, 0x95, 0xcd, 0x0e, 0x65, 0x11, 0x2a, 0x1c, 0x2a, 0x14, 0x2a, 0xfe, 0x65, 0x58, + 0x89, 0x42, 0x2f, 0x05, 0x89, 0xbe, 0x28, 0xce, 0xee, 0x54, 0x3a, 0xa1, 0xea, 0xf0, 0x55, 0x95, + 0x31, 0x1e, 0xad, 0x0e, 0xfc, 0x3a, 0xc0, 0x7c, 0xcf, 0x80, 0xb2, 0xa2, 0x5c, 0xb5, 0x98, 0x87, + 0x5e, 0xee, 0x71, 0x95, 0x4a, 0x3a, 0x57, 0xe1, 0xdc, 0xc2, 0x51, 0x82, 0x3a, 0xc2, 0x87, 0x68, + 0x6e, 0x82, 0x61, 0xc8, 0xf2, 0x68, 0xdb, 0x6f, 0x3b, 0x1e, 0xc9, 0xb4, 0x13, 0x2d, 0x60, 0x73, + 0x19, 0x58, 0x8a, 0x32, 0x3f, 0x2b, 0xc0, 0xa4, 0xa2, 0xc8, 0x50, 0x39, 0x47, 0x9d, 0xb1, 0x98, + 0xcd, 0x19, 0x73, 0xb7, 0xcf, 0x19, 0xf3, 0xb7, 0xc3, 0x19, 0x0b, 0xb7, 0xce, 0x19, 0x5f, 0x87, + 0xc9, 0x1d, 0xea, 0x5a, 0x5b, 0x56, 0x4d, 0xb4, 0x60, 0x2b, 0x9d, 0x2d, 0x5b, 0x05, 0xf7, 0xc7, + 0xd2, 0x89, 0xbf, 0x1a, 0xe3, 0xae, 0xce, 0xf0, 0x80, 0x16, 0x87, 0xe2, 0x1e, 0x2d, 0xe8, 0x2d, + 0x03, 0xa6, 0x75, 0xe0, 0x45, 0x8b, 0x79, 0xb6, 0xbb, 0x3b, 0x3b, 0x2c, 0x36, 0x37, 0xa8, 0xf6, + 0x7b, 0xd4, 0x3e, 0xa7, 0xaf, 0xf6, 0x8a, 0xc6, 0x49, 0xfa, 0xcc, 0x7f, 0xe5, 0x61, 0x2c, 0x72, + 0xb7, 0xd0, 0x75, 0x00, 0x49, 0x48, 0xeb, 0x2b, 0x1d, 0x55, 0xe3, 0x2c, 0x0f, 0x70, 0x49, 0xd5, + 0xea, 0xb8, 0x14, 0xd9, 0x4a, 0x07, 0x31, 0x37, 0x44, 0x60, 0x4d, 0x15, 0x7a, 0x03, 0xca, 0x44, + 0x75, 0x7f, 0xe7, 0x6d, 0x57, 0xb9, 0xe5, 0xd9, 0x41, 0x34, 0x2f, 0x85, 0x62, 0xe2, 0x5d, 0x7c, + 0x88, 0xc1, 0xba, 0xb6, 0x39, 0x17, 0x26, 0x62, 0xeb, 0x4d, 0xe8, 0xc4, 0x57, 0xf4, 0x4e, 0x3c, + 0x75, 0xe8, 0xf2, 0xe5, 0x8a, 0x96, 0x56, 0x6f, 0xff, 0x19, 0x4c, 0xc6, 0x57, 0x7a, 0xcb, 0x94, + 0x46, 0xfa, 0x68, 0x7d, 0x66, 0xf0, 0x87, 0x1c, 0x94, 0x82, 0x4b, 0x9c, 0x25, 0xd5, 0xcf, 0x41, + 0xce, 0xaa, 0xab, 0x44, 0x0f, 0x8a, 0x2a, 0xb7, 0x72, 0x16, 0xe7, 0xac, 0x3a, 0xba, 0x1f, 0x8a, + 0x9b, 0x2e, 0xe9, 0xd4, 0x9a, 0x2a, 0xb5, 0x07, 0xf7, 0xad, 0x2a, 0xa0, 0x58, 0x61, 0x79, 0xa9, + 0xee, 0x91, 0x86, 0x28, 0xcf, 0xb4, 0x52, 0x7d, 0x83, 0x34, 0x30, 0x87, 0xa3, 0x0b, 0x30, 0x25, + 0x7b, 0xd3, 0xe5, 0x26, 0xad, 0x6d, 0xcb, 0x25, 0x8a, 0xfb, 0x58, 0xaa, 0xde, 0xad, 0x88, 0xa7, + 0x2e, 0xc6, 0x09, 0x70, 0x2f, 0x8f, 0xde, 0xdd, 0x17, 0xf7, 0xef, 0xee, 0xf9, 0xd2, 0x49, 0xd7, + 0x6b, 0xda, 0xae, 0x4a, 0xf6, 0xc1, 0xd2, 0x97, 0x04, 0x14, 0x2b, 0xac, 0x39, 0x0d, 0x53, 0x17, + 0x2c, 0xef, 0x62, 0x77, 0x73, 0xad, 0xdb, 0x6a, 0x61, 0xfa, 0x5a, 0x97, 0x57, 0xcb, 0x12, 0xb8, + 0x4a, 0x22, 0xc0, 0xdf, 0x0c, 0xc1, 0xd8, 0x05, 0xcb, 0x13, 0x06, 0xcc, 0x5c, 0x3d, 0xaf, 0xc3, + 0x61, 0xab, 0xc3, 0x68, 0xad, 0xeb, 0xd2, 0xf5, 0x6d, 0xcb, 0xd9, 0x58, 0x5d, 0x17, 0xee, 0xb3, + 0xab, 0x8a, 0xf7, 0xa3, 0x8a, 0xf1, 0xf0, 0x4a, 0x12, 0x11, 0x4e, 0xe6, 0x45, 0x27, 0x01, 0x5c, + 0x4a, 0xea, 0x55, 0xfd, 0x88, 0x82, 0xdb, 0x88, 0x03, 0x0c, 0xd6, 0xa8, 0xd0, 0x22, 0x94, 0xaf, + 0xbb, 0x96, 0x47, 0x15, 0x93, 0x3c, 0xb2, 0xe0, 0x1e, 0xbd, 0x10, 0xa2, 0xb0, 0x4e, 0x87, 0x76, + 0xa0, 0xec, 0x84, 0xb6, 0x50, 0xc1, 0x34, 0x65, 0xf8, 0xd0, 0x8c, 0xb8, 0xe6, 0xda, 0x6d, 0x9b, + 0xc7, 0xa9, 0xe7, 0x68, 0xad, 0x49, 0x3a, 0x16, 0x6b, 0x57, 0x27, 0xb8, 0x5e, 0x8d, 0x04, 0xeb, + 0x8a, 0x50, 0x03, 0x8a, 0x2e, 0xed, 0xd4, 0xa9, 0xab, 0xca, 0x8a, 0x94, 0x2a, 0x9f, 0xe5, 0x20, + 0x2c, 0x18, 0x13, 0x54, 0x02, 0xf7, 0x03, 0x89, 0xc5, 0x4a, 0x3c, 0xea, 0xe8, 0x7d, 0xc6, 0xb0, + 0xd0, 0xb5, 0x94, 0x52, 0x97, 0xcf, 0x96, 0xa0, 0xa9, 0x7f, 0xcf, 0x71, 0x4d, 0xf5, 0x1c, 0x23, + 0x42, 0xd5, 0x53, 0xe9, 0x54, 0xf1, 0x1e, 0x23, 0x41, 0x4b, 0xbc, 0xff, 0xf8, 0x73, 0x01, 0x26, + 0x2e, 0x58, 0x03, 0x17, 0xff, 0x1e, 0xdc, 0x25, 0x53, 0xfe, 0x3a, 0x6d, 0xd1, 0x1a, 0xe7, 0x5e, + 0xf7, 0x5c, 0xe2, 0xd1, 0x86, 0xdf, 0x8c, 0x9f, 0x51, 0xac, 0x77, 0x2d, 0x27, 0x93, 0xdd, 0xec, + 0x8f, 0xc2, 0xfd, 0x44, 0xa7, 0x8e, 0x35, 0x49, 0x8d, 0x47, 0x21, 0x6b, 0xe3, 0xc1, 0x0b, 0x2b, + 0xd2, 0x6a, 0xd9, 0xd7, 0x37, 0x48, 0x83, 0xa9, 0x50, 0x14, 0x14, 0x56, 0x4b, 0x3e, 0x02, 0x87, + 0x34, 0xa8, 0x02, 0x60, 0x35, 0x3a, 0xb6, 0x4b, 0x05, 0x47, 0x51, 0x4c, 0x97, 0xc6, 0xf9, 0x3d, + 0x5b, 0x09, 0xa0, 0x58, 0xa3, 0xe8, 0x7f, 0xe1, 0x87, 0x3f, 0xc7, 0x85, 0x7f, 0x14, 0x46, 0xad, + 0x4e, 0xad, 0xd5, 0xad, 0xd3, 0x35, 0xe2, 0x35, 0xd9, 0xec, 0x88, 0x58, 0xc6, 0xe4, 0xde, 0x8d, + 0x63, 0xa3, 0x2b, 0x1a, 0x1c, 0x47, 0xa8, 0x38, 0x17, 0x7d, 0x5d, 0xe3, 0x2a, 0x85, 0x5c, 0xe7, + 0x5e, 0xd7, 0xb9, 0x74, 0x2a, 0xf3, 0x43, 0x03, 0x8a, 0x32, 0x28, 0xa3, 0xc5, 0xd8, 0x10, 0xef, + 0x68, 0xcf, 0x10, 0xaf, 0x9c, 0x34, 0x8b, 0x35, 0xa1, 0x68, 0x31, 0xd6, 0xa5, 0xb2, 0x14, 0x2d, + 0xc9, 0x6b, 0xb7, 0x22, 0x20, 0x58, 0x61, 0x90, 0x05, 0x40, 0xfc, 0x29, 0x9c, 0x5f, 0x57, 0x2e, + 0x66, 0x1d, 0x53, 0xc6, 0x46, 0x94, 0x01, 0x82, 0x61, 0x4d, 0xb8, 0xf9, 0x0b, 0x03, 0xee, 0xe6, + 0x97, 0x44, 0xd4, 0x8a, 0x67, 0xa9, 0xc3, 0xef, 0x7d, 0xa7, 0xb6, 0xab, 0x62, 0xb9, 0x88, 0xa5, + 0x8e, 0xcd, 0x2c, 0x51, 0xae, 0x19, 0xf1, 0x58, 0xea, 0x63, 0xb0, 0x46, 0x95, 0xa2, 0x4b, 0x5e, + 0x80, 0x92, 0x28, 0x49, 0xb9, 0x49, 0x95, 0x5f, 0x07, 0x6e, 0xb6, 0xec, 0x23, 0x70, 0x48, 0x63, + 0xfe, 0xd5, 0x80, 0x89, 0x81, 0xa6, 0x65, 0x4f, 0xc3, 0xb8, 0x28, 0x06, 0xd8, 0x79, 0xab, 0x25, + 0x4e, 0x50, 0xad, 0xea, 0x88, 0xa2, 0x1e, 0xbf, 0x1a, 0xc1, 0xe2, 0x18, 0xb5, 0x3f, 0x6d, 0xcb, + 0x1f, 0x34, 0x6d, 0x2b, 0x0c, 0x30, 0x6d, 0xfb, 0xc4, 0x80, 0x23, 0xc9, 0xa1, 0x0b, 0xbd, 0x12, + 0x9b, 0xba, 0x2d, 0xa6, 0x0f, 0x84, 0x29, 0x46, 0x6d, 0x3c, 0x7d, 0xa8, 0xee, 0x42, 0x96, 0x9d, + 0xcf, 0xa4, 0x17, 0x9f, 0xe8, 0x26, 0xfd, 0x3a, 0x0e, 0xf3, 0x77, 0x06, 0xc8, 0xf3, 0xc8, 0x12, + 0x68, 0x4f, 0x02, 0x34, 0x54, 0x41, 0x81, 0x57, 0xd5, 0x79, 0x05, 0x3e, 0x77, 0x21, 0xc0, 0x60, + 0x8d, 0xca, 0x2f, 0xb5, 0xf2, 0x7d, 0x4a, 0xad, 0xfb, 0xa1, 0x58, 0x97, 0x53, 0xc1, 0x42, 0x34, + 0x8a, 0xaa, 0x91, 0xa0, 0xc2, 0x9a, 0xef, 0x14, 0x60, 0x4a, 0xac, 0x77, 0xd0, 0x24, 0x31, 0xc8, + 0xda, 0x1d, 0x38, 0x22, 0xce, 0xa5, 0x37, 0xaf, 0xc8, 0xed, 0x9c, 0x56, 0xfc, 0x47, 0x56, 0x12, + 0xa9, 0x6e, 0xf6, 0xc5, 0xe0, 0x3e, 0x72, 0xff, 0x57, 0x92, 0xc5, 0xc3, 0x30, 0xe2, 0xb4, 0x88, + 0xb7, 0x65, 0xbb, 0x6d, 0x55, 0xae, 0x06, 0xf3, 0x89, 0x35, 0x05, 0xc7, 0x01, 0x45, 0xff, 0xd4, + 0x32, 0x32, 0x78, 0x6a, 0x31, 0x3b, 0x70, 0x44, 0x2b, 0x9a, 0x6e, 0xff, 0x40, 0xfa, 0x2d, 0x03, + 0x8e, 0xee, 0x5b, 0xa5, 0xa1, 0x7a, 0x2c, 0x34, 0x3c, 0x95, 0xb9, 0xf4, 0x4b, 0x33, 0x8c, 0x7f, + 0xc7, 0x80, 0x99, 0xc1, 0xe7, 0xf0, 0xc7, 0xa1, 0xe0, 0x84, 0xb1, 0x36, 0xc8, 0x00, 0x22, 0xc2, + 0x0a, 0x4c, 0xd4, 0x30, 0xf9, 0x14, 0x86, 0x79, 0xd3, 0x80, 0x7b, 0xf6, 0x29, 0x29, 0xd1, 0x66, + 0xcc, 0x2c, 0x67, 0x32, 0x56, 0xa9, 0x69, 0x8c, 0xf2, 0xf3, 0x1c, 0x0c, 0xaf, 0xb9, 0xf6, 0xab, + 0xb4, 0x76, 0x27, 0xc6, 0xb2, 0xcf, 0x43, 0x81, 0x39, 0xb4, 0xa6, 0x1a, 0xe1, 0x13, 0x29, 0x9b, + 0x0a, 0xb9, 0xbc, 0x75, 0x87, 0xd6, 0x64, 0xfd, 0xcb, 0xff, 0xc2, 0x42, 0x90, 0x36, 0x8b, 0xcc, + 0x67, 0xe9, 0xad, 0x7d, 0x91, 0x07, 0xcf, 0x22, 0x15, 0xe5, 0x17, 0x76, 0x16, 0xa9, 0xd6, 0xd7, + 0x67, 0x16, 0xf9, 0xa3, 0x70, 0x07, 0xdc, 0x68, 0xe8, 0xdb, 0x30, 0xe5, 0xf8, 0x7e, 0xb6, 0x66, + 0xb7, 0xac, 0x9a, 0x95, 0x35, 0x1d, 0xaf, 0x45, 0xd8, 0x77, 0xc3, 0xae, 0x7e, 0x2d, 0x2e, 0x17, + 0xf7, 0xaa, 0x32, 0x6d, 0x18, 0x8b, 0x98, 0x1e, 0x9d, 0xf2, 0xdf, 0x24, 0x44, 0xcb, 0x4d, 0xf9, + 0x26, 0xe1, 0xe6, 0x8d, 0x63, 0xa3, 0x8a, 0x5c, 0x7f, 0xa3, 0x90, 0xe5, 0xcb, 0xff, 0x2f, 0x73, + 0x50, 0x0a, 0x56, 0x76, 0x07, 0x1c, 0xfc, 0x4a, 0xc4, 0xc1, 0x4f, 0x65, 0xb4, 0xa9, 0x70, 0xf1, + 0x20, 0xb4, 0x68, 0x6e, 0xfe, 0x4a, 0xcc, 0xcd, 0xb3, 0x1e, 0xd6, 0x01, 0x8e, 0xfe, 0x6f, 0x43, + 0x9c, 0x8b, 0xa4, 0x15, 0xc3, 0xcd, 0x83, 0xe7, 0xd5, 0x04, 0x86, 0xb7, 0xe4, 0xc8, 0x4e, 0x6d, + 0xf6, 0xb1, 0x4c, 0x73, 0xbe, 0x60, 0x34, 0x1e, 0x1e, 0x9e, 0x8f, 0xf1, 0xe5, 0xa2, 0xaf, 0xdf, + 0x9a, 0x5d, 0x43, 0xc2, 0x8e, 0xdf, 0xd7, 0x77, 0x7c, 0x07, 0x2e, 0xf7, 0x46, 0xf4, 0x72, 0x2f, + 0x64, 0xdc, 0x49, 0x9f, 0xeb, 0xfd, 0xc3, 0x1c, 0x4c, 0xf7, 0xe6, 0x0d, 0x86, 0x18, 0x8c, 0x37, + 0xf4, 0xf1, 0x95, 0x7f, 0xc7, 0x4f, 0xa5, 0xfe, 0x42, 0x10, 0xf2, 0x86, 0x6d, 0x45, 0x04, 0xcc, + 0x70, 0x4c, 0x05, 0x7a, 0x03, 0x26, 0x49, 0xf4, 0x95, 0x85, 0xbf, 0xdb, 0xac, 0x5d, 0x9e, 0x52, + 0x1c, 0xd4, 0x6d, 0x31, 0x04, 0xc3, 0x3d, 0x8a, 0xcc, 0xb7, 0x0d, 0x98, 0x88, 0x85, 0x26, 0x9e, + 0xd6, 0x99, 0x97, 0x90, 0xd6, 0xd5, 0x40, 0x55, 0xe0, 0xd0, 0x1a, 0xcc, 0x90, 0xae, 0x67, 0x07, + 0xbc, 0xe7, 0x3a, 0x64, 0xb3, 0x45, 0xeb, 0xaa, 0xb0, 0x09, 0x3e, 0x63, 0x2f, 0x25, 0xd0, 0xe0, + 0x44, 0x4e, 0xf3, 0x1b, 0x9a, 0x67, 0x89, 0xa0, 0x9b, 0x6a, 0x1d, 0x0f, 0x46, 0xaf, 0x53, 0xa9, + 0xff, 0xb5, 0x30, 0x3f, 0xcc, 0x6b, 0x7b, 0x55, 0x71, 0xf4, 0x12, 0xa0, 0x16, 0x61, 0xde, 0x45, + 0xd2, 0xa9, 0xf3, 0x95, 0xd1, 0x2d, 0x97, 0x32, 0x7f, 0xe4, 0x37, 0xa7, 0x24, 0xa1, 0xd5, 0x1e, + 0x0a, 0x9c, 0xc0, 0x85, 0x16, 0xa3, 0x31, 0xf9, 0x58, 0x3c, 0x26, 0x8f, 0x87, 0x86, 0x1e, 0x2c, + 0x2a, 0xa3, 0xd7, 0xb4, 0xbb, 0x96, 0xcf, 0xf2, 0x79, 0x22, 0xb6, 0xed, 0x8a, 0xff, 0xea, 0x4f, + 0x7e, 0x23, 0x08, 0x2e, 0xa0, 0x0f, 0xd6, 0x2e, 0xe0, 0x2b, 0xa1, 0x7d, 0x87, 0x3e, 0x57, 0xb8, + 0x2a, 0x27, 0x9d, 0xc9, 0xdc, 0x93, 0x30, 0x16, 0x59, 0x4b, 0xa6, 0x47, 0x80, 0x7f, 0x33, 0xe0, + 0xe8, 0xbe, 0x93, 0x53, 0x5e, 0xe6, 0xc8, 0xd5, 0xaa, 0xd0, 0xf4, 0x78, 0xea, 0x8b, 0x1c, 0x1d, + 0x77, 0xcb, 0x58, 0x28, 0xc1, 0x58, 0x89, 0x54, 0xc2, 0x5b, 0x64, 0x53, 0x05, 0xf2, 0xf4, 0xc2, + 0xa3, 0x63, 0xf3, 0x40, 0xf8, 0x2a, 0x91, 0xc2, 0x5b, 0x64, 0xd3, 0x7c, 0x37, 0x07, 0x93, 0x3c, + 0x4a, 0x44, 0x9a, 0xcf, 0x35, 0xc8, 0x37, 0x2c, 0x4f, 0xed, 0x65, 0x31, 0xb5, 0x3a, 0x5d, 0x46, + 0x75, 0x98, 0x37, 0xc3, 0x3c, 0x24, 0x71, 0x51, 0xe8, 0x45, 0xbf, 0x84, 0xcf, 0xb4, 0x85, 0x9e, + 0xb6, 0xb8, 0x5a, 0xea, 0xa9, 0xfb, 0x5f, 0xf4, 0x1f, 0xc3, 0xe4, 0xb3, 0x48, 0xee, 0x79, 0x92, + 0x21, 0x25, 0xeb, 0x2f, 0x68, 0xcc, 0x9f, 0xe5, 0x40, 0xc6, 0x80, 0x3b, 0x50, 0x97, 0x7c, 0x2d, + 0x52, 0x97, 0xa4, 0x4c, 0x3f, 0x62, 0x71, 0x7d, 0x6b, 0x92, 0x78, 0x76, 0x3e, 0x91, 0x45, 0xe8, + 0xfe, 0xf5, 0xc8, 0x9f, 0x0c, 0x28, 0x09, 0xba, 0x3b, 0x90, 0x99, 0xd7, 0xa2, 0x99, 0xf9, 0xa1, + 0x0c, 0xbb, 0xe8, 0x93, 0x95, 0x7f, 0x9a, 0x57, 0xab, 0x0f, 0xa2, 0x7f, 0x93, 0xb8, 0x75, 0x15, + 0x8c, 0xc3, 0xe8, 0xcf, 0x81, 0x58, 0xe2, 0x90, 0x03, 0x63, 0x4c, 0x73, 0x16, 0xa6, 0xf6, 0x99, + 0x32, 0x5f, 0xeb, 0x7e, 0xc6, 0xb4, 0x47, 0x82, 0x3a, 0x18, 0x47, 0x15, 0xa0, 0x1f, 0x18, 0x30, + 0xed, 0xf4, 0x96, 0x0e, 0xca, 0x41, 0x9e, 0xc8, 0x18, 0x8e, 0x43, 0x01, 0xd5, 0xbb, 0xf6, 0x6e, + 0x1c, 0x4b, 0x2a, 0x4a, 0x70, 0x92, 0x3a, 0xd4, 0x84, 0x51, 0xfd, 0x9b, 0xb6, 0x72, 0xa5, 0x93, + 0xd9, 0x3f, 0x9e, 0xcb, 0x21, 0xb7, 0x0e, 0xc1, 0x11, 0xc9, 0xe6, 0x4f, 0x8a, 0x50, 0xd6, 0x7c, + 0xaf, 0x4f, 0xc6, 0x2c, 0x0f, 0x94, 0x31, 0x4f, 0x44, 0x33, 0xe6, 0x3d, 0xf1, 0x8c, 0x09, 0x42, + 0x71, 0x24, 0x5b, 0xba, 0x30, 0x5e, 0xeb, 0xba, 0x2e, 0xed, 0x78, 0xe7, 0x6f, 0x49, 0x15, 0x8d, + 0x78, 0x85, 0xb6, 0x1c, 0x91, 0x88, 0x63, 0x1a, 0x78, 0xc9, 0xde, 0x54, 0x8f, 0x14, 0xf2, 0x59, + 0x1e, 0x29, 0xf4, 0x2f, 0xd9, 0xfd, 0x87, 0x09, 0xbe, 0x5c, 0xb4, 0x06, 0x45, 0xf9, 0x2d, 0x57, + 0x7d, 0xed, 0x7a, 0x38, 0xed, 0x14, 0x96, 0xf3, 0xc8, 0x04, 0x22, 0xff, 0xc6, 0x4a, 0x8e, 0x5e, + 0x56, 0x94, 0x0e, 0x28, 0x2b, 0x2e, 0x01, 0xb2, 0x37, 0x19, 0x75, 0x77, 0x68, 0xfd, 0x82, 0xfc, + 0x2d, 0x05, 0x77, 0xa9, 0xe2, 0x71, 0xe3, 0x81, 0x7c, 0x78, 0xa4, 0xcf, 0xf7, 0x50, 0xe0, 0x04, + 0x2e, 0xd4, 0x85, 0x49, 0x65, 0xbd, 0xc0, 0x97, 0xd5, 0xb7, 0xc2, 0xac, 0x4d, 0x5d, 0xf8, 0xa8, + 0x64, 0x39, 0x26, 0x10, 0xf7, 0xa8, 0x40, 0x2d, 0x18, 0xe3, 0xfe, 0x15, 0xea, 0x84, 0xc1, 0x75, + 0x4e, 0xf1, 0x20, 0xb0, 0xaa, 0x4b, 0xc3, 0x51, 0xe1, 0xe6, 0x22, 0x4c, 0xc9, 0x2b, 0xa1, 0x27, + 0xe7, 0x83, 0x1f, 0xf9, 0xff, 0xd1, 0x80, 0x68, 0x70, 0x89, 0x3e, 0x5e, 0x32, 0x52, 0x3c, 0x5e, + 0xba, 0x0e, 0xe3, 0x5d, 0x87, 0x79, 0x2e, 0x25, 0x6d, 0xb1, 0x02, 0x3f, 0xfc, 0x3e, 0x9e, 0x25, + 0x89, 0xe8, 0xe9, 0x35, 0xe8, 0x52, 0xae, 0x44, 0xc4, 0xe2, 0x98, 0x1a, 0xf3, 0x3f, 0x39, 0x88, + 0x44, 0x09, 0xf4, 0xb6, 0x01, 0x53, 0x24, 0xf6, 0x8b, 0x07, 0xbf, 0x5f, 0x7a, 0x26, 0xdb, 0xcf, + 0x50, 0x7a, 0x7e, 0x30, 0x11, 0x4e, 0x47, 0xe2, 0x24, 0x0c, 0xf7, 0x2a, 0x15, 0x31, 0x99, 0xf4, + 0xfe, 0xa4, 0x25, 0x5b, 0x4c, 0x4e, 0xf8, 0x4d, 0x8c, 0x8c, 0xc9, 0x09, 0x08, 0x9c, 0xa4, 0x0e, + 0xbd, 0x04, 0x05, 0xe2, 0x36, 0xfc, 0x4f, 0x74, 0xd9, 0xd5, 0xfa, 0xbf, 0x54, 0x0a, 0x7d, 0x67, + 0xc9, 0x6d, 0x30, 0x2c, 0x84, 0x9a, 0x7f, 0xcf, 0x43, 0xcf, 0xe3, 0x2a, 0xf5, 0x30, 0xa5, 0x90, + 0xf8, 0x30, 0xe5, 0x5e, 0x18, 0x22, 0x35, 0x2f, 0x78, 0xdc, 0x11, 0xbe, 0xe4, 0xe4, 0x40, 0x2c, + 0x71, 0xe8, 0x05, 0x28, 0x31, 0x8f, 0xb8, 0xde, 0x86, 0xd5, 0xa6, 0xaa, 0xbe, 0xff, 0x52, 0xba, + 0x1a, 0x81, 0x73, 0xc8, 0x6f, 0xf7, 0xeb, 0xbe, 0x00, 0x1c, 0xca, 0x42, 0xa7, 0xa3, 0x91, 0xdd, + 0x8c, 0x47, 0xf6, 0x29, 0x7d, 0x2f, 0x83, 0xb6, 0x43, 0x6d, 0x28, 0x6b, 0xe7, 0xa0, 0x72, 0xe0, + 0x99, 0xcc, 0x76, 0xd7, 0xe2, 0xb3, 0xfc, 0xb9, 0x53, 0x88, 0xd1, 0xe5, 0xa3, 0x6b, 0x00, 0x5b, + 0x56, 0xc7, 0x62, 0x4d, 0x61, 0xad, 0x62, 0x66, 0x6b, 0x89, 0xcf, 0x1b, 0xe7, 0x03, 0x09, 0x58, + 0x93, 0x66, 0x4e, 0xc0, 0x58, 0xe4, 0xb1, 0x94, 0x18, 0xc0, 0x05, 0x11, 0xe0, 0x8b, 0x3a, 0x80, + 0x0b, 0x16, 0x78, 0xab, 0x07, 0x70, 0xa1, 0xe0, 0xfd, 0x0b, 0xde, 0xf7, 0x0d, 0x18, 0x0b, 0x68, + 0xbf, 0xb0, 0xe3, 0xa8, 0x60, 0x85, 0x7d, 0x0a, 0xdf, 0xdf, 0xea, 0xbb, 0x88, 0x16, 0xbf, 0xb9, + 0x7d, 0x8a, 0x5f, 0xd6, 0x5b, 0xfc, 0x66, 0x28, 0x4e, 0xe2, 0xcd, 0x65, 0xba, 0xfa, 0xd7, 0x7c, + 0x2f, 0x07, 0x13, 0xb1, 0xd3, 0xe9, 0x53, 0x12, 0x16, 0x07, 0x2a, 0x09, 0xb5, 0xeb, 0x9f, 0x1f, + 0xa8, 0x6c, 0x29, 0x0c, 0x54, 0xb6, 0x58, 0x50, 0xe6, 0x8b, 0x39, 0x7f, 0x4b, 0x46, 0x1d, 0x22, + 0x8c, 0xac, 0x86, 0xe2, 0xb0, 0x2e, 0xbb, 0x7a, 0xe9, 0x83, 0x4f, 0xe7, 0x0f, 0x7d, 0xf4, 0xe9, + 0xfc, 0xa1, 0x8f, 0x3f, 0x9d, 0x3f, 0xf4, 0xdd, 0xbd, 0x79, 0xe3, 0x83, 0xbd, 0x79, 0xe3, 0xa3, + 0xbd, 0x79, 0xe3, 0xe3, 0xbd, 0x79, 0xe3, 0x93, 0xbd, 0x79, 0xe3, 0xc7, 0xff, 0x98, 0x3f, 0x74, + 0xed, 0xbe, 0x34, 0x3f, 0xf7, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0xf4, 0x42, 0x6b, + 0x15, 0x3c, 0x00, 0x00, } func (m *AnalysisRunArgument) Marshal() (dAtA []byte, err error) { @@ -4201,9 +4201,9 @@ func (m *PromotionStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.PromotedFreight != nil { + if m.Freight != nil { { - size, err := m.PromotedFreight.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Freight.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -5897,8 +5897,8 @@ func (m *PromotionStatus) Size() (n int) { } l = len(m.LastHandledRefresh) n += 1 + l + sovGenerated(uint64(l)) - if m.PromotedFreight != nil { - l = m.PromotedFreight.Size() + if m.Freight != nil { + l = m.Freight.Size() n += 1 + l + sovGenerated(uint64(l)) } return n @@ -6899,7 +6899,7 @@ func (this *PromotionStatus) String() string { `Message:` + fmt.Sprintf("%v", this.Message) + `,`, `Metadata:` + mapStringForMetadata + `,`, `LastHandledRefresh:` + fmt.Sprintf("%v", this.LastHandledRefresh) + `,`, - `PromotedFreight:` + strings.Replace(this.PromotedFreight.String(), "FreightReference", "FreightReference", 1) + `,`, + `Freight:` + strings.Replace(this.Freight.String(), "FreightReference", "FreightReference", 1) + `,`, `}`, }, "") return s @@ -14268,7 +14268,7 @@ func (m *PromotionStatus) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PromotedFreight", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Freight", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -14295,10 +14295,10 @@ func (m *PromotionStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.PromotedFreight == nil { - m.PromotedFreight = &FreightReference{} + if m.Freight == nil { + m.Freight = &FreightReference{} } - if err := m.PromotedFreight.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Freight.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/api/v1alpha1/generated.proto b/api/v1alpha1/generated.proto index 3d027acdc..94856b683 100644 --- a/api/v1alpha1/generated.proto +++ b/api/v1alpha1/generated.proto @@ -917,8 +917,8 @@ message PromotionStatus { // (e.g. for display purposes, or internal bookkeeping) map metadata = 3; - // PromotedFreight is the detail of the piece of freight that was referenced by this promotion. - optional FreightReference promotedFreight = 5; + // Freight is the detail of the piece of freight that was referenced by this promotion. + optional FreightReference freight = 5; } // PullRequestPromotionMechanism describes how to generate a pull request against the write branch during promotion diff --git a/api/v1alpha1/promotion_types.go b/api/v1alpha1/promotion_types.go index b353ddab3..0212a5450 100644 --- a/api/v1alpha1/promotion_types.go +++ b/api/v1alpha1/promotion_types.go @@ -101,8 +101,8 @@ type PromotionStatus struct { // Metadata holds arbitrary metadata set by promotion mechanisms // (e.g. for display purposes, or internal bookkeeping) Metadata map[string]string `json:"metadata,omitempty" protobuf:"bytes,3,rep,name=metadata" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // PromotedFreight is the detail of the piece of freight that was referenced by this promotion. - PromotedFreight *FreightReference `json:"promotedFreight,omitempty" protobuf:"bytes,5,opt,name=promotedFreight"` + // Freight is the detail of the piece of freight that was referenced by this promotion. + Freight *FreightReference `json:"promotedFreight,omitempty" protobuf:"bytes,5,opt,name=freight"` } // WithPhase returns a copy of PromotionStatus with the given phase @@ -112,6 +112,13 @@ func (p *PromotionStatus) WithPhase(phase PromotionPhase) *PromotionStatus { return status } +// WithFreight returns a copy of PromotionStatus with the given freight +func (p *PromotionStatus) WithFreight(freight *FreightReference) *PromotionStatus { + status := p.DeepCopy() + status.Freight = freight + return status +} + // +kubebuilder:object:root=true // PromotionList contains a list of Promotion diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index d3cdeff16..9b869c82e 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -1005,8 +1005,8 @@ func (in *PromotionStatus) DeepCopyInto(out *PromotionStatus) { (*out)[key] = val } } - if in.PromotedFreight != nil { - in, out := &in.PromotedFreight, &out.PromotedFreight + if in.Freight != nil { + in, out := &in.Freight, &out.Freight *out = new(FreightReference) (*in).DeepCopyInto(*out) } diff --git a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml index 267024509..b063efa7e 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml @@ -110,8 +110,8 @@ spec: lifecycle. type: string promotedFreight: - description: PromotedFreight is the detail of the piece of freight - that was referenced by this promotion. + description: Freight is the detail of the piece of freight that was + referenced by this promotion. properties: charts: description: Charts describes specific versions of specific Helm diff --git a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml index e2844e173..c10f5f447 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml @@ -1050,8 +1050,8 @@ spec: is in its lifecycle. type: string promotedFreight: - description: PromotedFreight is the detail of the piece of - freight that was referenced by this promotion. + description: Freight is the detail of the piece of freight + that was referenced by this promotion. properties: charts: description: Charts describes specific versions of specific @@ -1845,8 +1845,8 @@ spec: is in its lifecycle. type: string promotedFreight: - description: PromotedFreight is the detail of the piece of - freight that was referenced by this promotion. + description: Freight is the detail of the piece of freight + that was referenced by this promotion. properties: charts: description: Charts describes specific versions of specific diff --git a/internal/controller/promotion/git.go b/internal/controller/promotion/git.go index 98cc3413f..c39494761 100644 --- a/internal/controller/promotion/git.go +++ b/internal/controller/promotion/git.go @@ -139,7 +139,7 @@ func (g *gitMechanism) Promote( ); err != nil { return nil, newFreight, err } - newStatus = aggregateGitPromoStatus(newStatus, *otherStatus) + newStatus = aggregateGitPromoStatus(newStatus, *otherStatus).WithFreight(&newFreight) } logger.Debugf("done executing %s", g.name) diff --git a/internal/controller/promotions/promotions.go b/internal/controller/promotions/promotions.go index 80b55e79c..c106f66f3 100644 --- a/internal/controller/promotions/promotions.go +++ b/internal/controller/promotions/promotions.go @@ -418,7 +418,7 @@ func (r *reconciler) promote( logger.Debug("found associated Stage") if targetFreight == nil { - return nil, fmt.Errorf("freight %q not found in namespace %q", promo.Spec.Freight, promo.Namespace) + return nil, fmt.Errorf("Freight %q not found in namespace %q", promo.Spec.Freight, promo.Namespace) } upstreamStages := make([]string, len(stage.Spec.Subscriptions.UpstreamStages)) for i, upstreamStage := range stage.Spec.Subscriptions.UpstreamStages { @@ -454,10 +454,10 @@ func (r *reconciler) promote( } // record the freight reference to the promotion's status err = kubeclient.PatchStatus(ctx, r.kargoClient, &promo, func(status *kargoapi.PromotionStatus) { - status.PromotedFreight = &targetFreightRef + status.Freight = &targetFreightRef }) if err != nil { - return nil, err + logger.Errorf("Promotion status patch failed: %v", err) } newStatus, nextFreight, err := r.promoMechanisms.Promote(ctx, stage, &promo, targetFreightRef) diff --git a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json index 1c71a8bc0..cdd0013f2 100644 --- a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json @@ -57,7 +57,7 @@ "type": "string" }, "promotedFreight": { - "description": "PromotedFreight is the detail of the piece of freight that was referenced by this promotion.", + "description": "Freight is the detail of the piece of freight that was referenced by this promotion.", "properties": { "charts": { "description": "Charts describes specific versions of specific Helm charts.", diff --git a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json index ed7c205ec..857d8c2c3 100644 --- a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json @@ -910,7 +910,7 @@ "type": "string" }, "promotedFreight": { - "description": "PromotedFreight is the detail of the piece of freight that was referenced by this promotion.", + "description": "Freight is the detail of the piece of freight that was referenced by this promotion.", "properties": { "charts": { "description": "Charts describes specific versions of specific Helm charts.", @@ -1674,7 +1674,7 @@ "type": "string" }, "promotedFreight": { - "description": "PromotedFreight is the detail of the piece of freight that was referenced by this promotion.", + "description": "Freight is the detail of the piece of freight that was referenced by this promotion.", "properties": { "charts": { "description": "Charts describes specific versions of specific Helm charts.", diff --git a/ui/src/gen/v1alpha1/generated_pb.ts b/ui/src/gen/v1alpha1/generated_pb.ts index 25a2a3b46..904e4cb4d 100644 --- a/ui/src/gen/v1alpha1/generated_pb.ts +++ b/ui/src/gen/v1alpha1/generated_pb.ts @@ -2930,11 +2930,11 @@ export class PromotionStatus extends Message { metadata: { [key: string]: string } = {}; /** - * PromotedFreight is the detail of the piece of freight that was referenced by this promotion. + * Freight is the detail of the piece of freight that was referenced by this promotion. * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.FreightReference promotedFreight = 5; + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.FreightReference freight = 5; */ - promotedFreight?: FreightReference; + freight?: FreightReference; constructor(data?: PartialMessage) { super(); @@ -2948,7 +2948,7 @@ export class PromotionStatus extends Message { { no: 1, name: "phase", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 2, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 3, name: "metadata", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, - { no: 5, name: "promotedFreight", kind: "message", T: FreightReference, opt: true }, + { no: 5, name: "freight", kind: "message", T: FreightReference, opt: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): PromotionStatus { From a79a28f7e9f19bb23c1a000c443320c0471d339b Mon Sep 17 00:00:00 2001 From: "Phuong D. Nguyen" Date: Wed, 17 Apr 2024 12:48:43 +0700 Subject: [PATCH 3/5] Update api/v1alpha1/promotion_types.go Co-authored-by: Kent Rancourt Signed-off-by: Nguyen Duy Phuong --- api/v1alpha1/promotion_types.go | 2 +- .../crds/kargo.akuity.io_promotions.yaml | 50 ++++----- .../crds/kargo.akuity.io_stages.yaml | 100 +++++++++--------- .../promotions.kargo.akuity.io_v1alpha1.json | 40 +++---- .../stages.kargo.akuity.io_v1alpha1.json | 80 +++++++------- 5 files changed, 136 insertions(+), 136 deletions(-) diff --git a/api/v1alpha1/promotion_types.go b/api/v1alpha1/promotion_types.go index 0212a5450..2ca7fd998 100644 --- a/api/v1alpha1/promotion_types.go +++ b/api/v1alpha1/promotion_types.go @@ -102,7 +102,7 @@ type PromotionStatus struct { // (e.g. for display purposes, or internal bookkeeping) Metadata map[string]string `json:"metadata,omitempty" protobuf:"bytes,3,rep,name=metadata" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Freight is the detail of the piece of freight that was referenced by this promotion. - Freight *FreightReference `json:"promotedFreight,omitempty" protobuf:"bytes,5,opt,name=freight"` + Freight *FreightReference `json:"freight,omitempty" protobuf:"bytes,5,opt,name=freight"` } // WithPhase returns a copy of PromotionStatus with the given phase diff --git a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml index b063efa7e..59e11d5b3 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml @@ -85,31 +85,7 @@ spec: Status describes the current state of the transition represented by this Promotion. properties: - lastHandledRefresh: - description: |- - LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh - annotation that was handled by the controller. This field can be used to - determine whether the request to refresh the resource has been handled. - type: string - message: - description: |- - Message is a display message about the promotion, including any errors - preventing the Promotion controller from executing this Promotion. - i.e. If the Phase field has a value of Failed, this field can be expected - to explain why. - type: string - metadata: - additionalProperties: - type: string - description: |- - Metadata holds arbitrary metadata set by promotion mechanisms - (e.g. for display purposes, or internal bookkeeping) - type: object - phase: - description: Phase describes where the Promotion currently is in its - lifecycle. - type: string - promotedFreight: + freight: description: Freight is the detail of the piece of freight that was referenced by this promotion. properties: @@ -335,6 +311,30 @@ spec: this Freight. type: string type: object + lastHandledRefresh: + description: |- + LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh + annotation that was handled by the controller. This field can be used to + determine whether the request to refresh the resource has been handled. + type: string + message: + description: |- + Message is a display message about the promotion, including any errors + preventing the Promotion controller from executing this Promotion. + i.e. If the Phase field has a value of Failed, this field can be expected + to explain why. + type: string + metadata: + additionalProperties: + type: string + description: |- + Metadata holds arbitrary metadata set by promotion mechanisms + (e.g. for display purposes, or internal bookkeeping) + type: object + phase: + description: Phase describes where the Promotion currently is in its + lifecycle. + type: string type: object required: - spec diff --git a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml index c10f5f447..e04f43fda 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml @@ -1025,31 +1025,7 @@ spec: status: description: Status is the (optional) status of the promotion properties: - lastHandledRefresh: - description: |- - LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh - annotation that was handled by the controller. This field can be used to - determine whether the request to refresh the resource has been handled. - type: string - message: - description: |- - Message is a display message about the promotion, including any errors - preventing the Promotion controller from executing this Promotion. - i.e. If the Phase field has a value of Failed, this field can be expected - to explain why. - type: string - metadata: - additionalProperties: - type: string - description: |- - Metadata holds arbitrary metadata set by promotion mechanisms - (e.g. for display purposes, or internal bookkeeping) - type: object - phase: - description: Phase describes where the Promotion currently - is in its lifecycle. - type: string - promotedFreight: + freight: description: Freight is the detail of the piece of freight that was referenced by this promotion. properties: @@ -1281,6 +1257,30 @@ spec: created this Freight. type: string type: object + lastHandledRefresh: + description: |- + LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh + annotation that was handled by the controller. This field can be used to + determine whether the request to refresh the resource has been handled. + type: string + message: + description: |- + Message is a display message about the promotion, including any errors + preventing the Promotion controller from executing this Promotion. + i.e. If the Phase field has a value of Failed, this field can be expected + to explain why. + type: string + metadata: + additionalProperties: + type: string + description: |- + Metadata holds arbitrary metadata set by promotion mechanisms + (e.g. for display purposes, or internal bookkeeping) + type: object + phase: + description: Phase describes where the Promotion currently + is in its lifecycle. + type: string type: object required: - freight @@ -1820,31 +1820,7 @@ spec: status: description: Status is the (optional) status of the promotion properties: - lastHandledRefresh: - description: |- - LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh - annotation that was handled by the controller. This field can be used to - determine whether the request to refresh the resource has been handled. - type: string - message: - description: |- - Message is a display message about the promotion, including any errors - preventing the Promotion controller from executing this Promotion. - i.e. If the Phase field has a value of Failed, this field can be expected - to explain why. - type: string - metadata: - additionalProperties: - type: string - description: |- - Metadata holds arbitrary metadata set by promotion mechanisms - (e.g. for display purposes, or internal bookkeeping) - type: object - phase: - description: Phase describes where the Promotion currently - is in its lifecycle. - type: string - promotedFreight: + freight: description: Freight is the detail of the piece of freight that was referenced by this promotion. properties: @@ -2076,6 +2052,30 @@ spec: created this Freight. type: string type: object + lastHandledRefresh: + description: |- + LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh + annotation that was handled by the controller. This field can be used to + determine whether the request to refresh the resource has been handled. + type: string + message: + description: |- + Message is a display message about the promotion, including any errors + preventing the Promotion controller from executing this Promotion. + i.e. If the Phase field has a value of Failed, this field can be expected + to explain why. + type: string + metadata: + additionalProperties: + type: string + description: |- + Metadata holds arbitrary metadata set by promotion mechanisms + (e.g. for display purposes, or internal bookkeeping) + type: object + phase: + description: Phase describes where the Promotion currently + is in its lifecycle. + type: string type: object required: - freight diff --git a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json index cdd0013f2..13d686952 100644 --- a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json @@ -37,26 +37,7 @@ "status": { "description": "Status describes the current state of the transition represented by this\nPromotion.", "properties": { - "lastHandledRefresh": { - "description": "LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh\nannotation that was handled by the controller. This field can be used to\ndetermine whether the request to refresh the resource has been handled.", - "type": "string" - }, - "message": { - "description": "Message is a display message about the promotion, including any errors\npreventing the Promotion controller from executing this Promotion.\ni.e. If the Phase field has a value of Failed, this field can be expected\nto explain why.", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "type": "string" - }, - "description": "Metadata holds arbitrary metadata set by promotion mechanisms\n(e.g. for display purposes, or internal bookkeeping)", - "type": "object" - }, - "phase": { - "description": "Phase describes where the Promotion currently is in its lifecycle.", - "type": "string" - }, - "promotedFreight": { + "freight": { "description": "Freight is the detail of the piece of freight that was referenced by this promotion.", "properties": { "charts": { @@ -269,6 +250,25 @@ } }, "type": "object" + }, + "lastHandledRefresh": { + "description": "LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh\nannotation that was handled by the controller. This field can be used to\ndetermine whether the request to refresh the resource has been handled.", + "type": "string" + }, + "message": { + "description": "Message is a display message about the promotion, including any errors\npreventing the Promotion controller from executing this Promotion.\ni.e. If the Phase field has a value of Failed, this field can be expected\nto explain why.", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "description": "Metadata holds arbitrary metadata set by promotion mechanisms\n(e.g. for display purposes, or internal bookkeeping)", + "type": "object" + }, + "phase": { + "description": "Phase describes where the Promotion currently is in its lifecycle.", + "type": "string" } }, "type": "object" diff --git a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json index 857d8c2c3..a760d878a 100644 --- a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json @@ -890,26 +890,7 @@ "status": { "description": "Status is the (optional) status of the promotion", "properties": { - "lastHandledRefresh": { - "description": "LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh\nannotation that was handled by the controller. This field can be used to\ndetermine whether the request to refresh the resource has been handled.", - "type": "string" - }, - "message": { - "description": "Message is a display message about the promotion, including any errors\npreventing the Promotion controller from executing this Promotion.\ni.e. If the Phase field has a value of Failed, this field can be expected\nto explain why.", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "type": "string" - }, - "description": "Metadata holds arbitrary metadata set by promotion mechanisms\n(e.g. for display purposes, or internal bookkeeping)", - "type": "object" - }, - "phase": { - "description": "Phase describes where the Promotion currently is in its lifecycle.", - "type": "string" - }, - "promotedFreight": { + "freight": { "description": "Freight is the detail of the piece of freight that was referenced by this promotion.", "properties": { "charts": { @@ -1122,6 +1103,25 @@ } }, "type": "object" + }, + "lastHandledRefresh": { + "description": "LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh\nannotation that was handled by the controller. This field can be used to\ndetermine whether the request to refresh the resource has been handled.", + "type": "string" + }, + "message": { + "description": "Message is a display message about the promotion, including any errors\npreventing the Promotion controller from executing this Promotion.\ni.e. If the Phase field has a value of Failed, this field can be expected\nto explain why.", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "description": "Metadata holds arbitrary metadata set by promotion mechanisms\n(e.g. for display purposes, or internal bookkeeping)", + "type": "object" + }, + "phase": { + "description": "Phase describes where the Promotion currently is in its lifecycle.", + "type": "string" } }, "type": "object" @@ -1654,26 +1654,7 @@ "status": { "description": "Status is the (optional) status of the promotion", "properties": { - "lastHandledRefresh": { - "description": "LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh\nannotation that was handled by the controller. This field can be used to\ndetermine whether the request to refresh the resource has been handled.", - "type": "string" - }, - "message": { - "description": "Message is a display message about the promotion, including any errors\npreventing the Promotion controller from executing this Promotion.\ni.e. If the Phase field has a value of Failed, this field can be expected\nto explain why.", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "type": "string" - }, - "description": "Metadata holds arbitrary metadata set by promotion mechanisms\n(e.g. for display purposes, or internal bookkeeping)", - "type": "object" - }, - "phase": { - "description": "Phase describes where the Promotion currently is in its lifecycle.", - "type": "string" - }, - "promotedFreight": { + "freight": { "description": "Freight is the detail of the piece of freight that was referenced by this promotion.", "properties": { "charts": { @@ -1886,6 +1867,25 @@ } }, "type": "object" + }, + "lastHandledRefresh": { + "description": "LastHandledRefresh holds the value of the most recent AnnotationKeyRefresh\nannotation that was handled by the controller. This field can be used to\ndetermine whether the request to refresh the resource has been handled.", + "type": "string" + }, + "message": { + "description": "Message is a display message about the promotion, including any errors\npreventing the Promotion controller from executing this Promotion.\ni.e. If the Phase field has a value of Failed, this field can be expected\nto explain why.", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "description": "Metadata holds arbitrary metadata set by promotion mechanisms\n(e.g. for display purposes, or internal bookkeeping)", + "type": "object" + }, + "phase": { + "description": "Phase describes where the Promotion currently is in its lifecycle.", + "type": "string" } }, "type": "object" From 41751fa00c5d3aec77be5bc0a57b85f60f88b185 Mon Sep 17 00:00:00 2001 From: "Phuong D. Nguyen" Date: Thu, 18 Apr 2024 13:23:23 +0000 Subject: [PATCH 4/5] update freight after invoke promoMechanism Signed-off-by: Phuong D. Nguyen --- internal/controller/promotion/git.go | 2 +- internal/controller/promotions/promotions.go | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/internal/controller/promotion/git.go b/internal/controller/promotion/git.go index c39494761..98cc3413f 100644 --- a/internal/controller/promotion/git.go +++ b/internal/controller/promotion/git.go @@ -139,7 +139,7 @@ func (g *gitMechanism) Promote( ); err != nil { return nil, newFreight, err } - newStatus = aggregateGitPromoStatus(newStatus, *otherStatus).WithFreight(&newFreight) + newStatus = aggregateGitPromoStatus(newStatus, *otherStatus) } logger.Debugf("done executing %s", g.name) diff --git a/internal/controller/promotions/promotions.go b/internal/controller/promotions/promotions.go index c106f66f3..a1dad5ad4 100644 --- a/internal/controller/promotions/promotions.go +++ b/internal/controller/promotions/promotions.go @@ -452,18 +452,12 @@ func (r *reconciler) promote( if err != nil { return nil, err } - // record the freight reference to the promotion's status - err = kubeclient.PatchStatus(ctx, r.kargoClient, &promo, func(status *kargoapi.PromotionStatus) { - status.Freight = &targetFreightRef - }) - if err != nil { - logger.Errorf("Promotion status patch failed: %v", err) - } newStatus, nextFreight, err := r.promoMechanisms.Promote(ctx, stage, &promo, targetFreightRef) if err != nil { return nil, err } + newStatus = newStatus.WithFreight(&targetFreight) logger.Debugf("promotion %s", newStatus.Phase) From ba3004d610e2a13cb2db60a9e8194090b9ed6e0b Mon Sep 17 00:00:00 2001 From: "Phuong D. Nguyen" Date: Fri, 19 Apr 2024 07:33:14 +0700 Subject: [PATCH 5/5] Update promotions.go Co-authored-by: Kent Rancourt Signed-off-by: Phuong D. Nguyen --- internal/controller/promotions/promotions.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/controller/promotions/promotions.go b/internal/controller/promotions/promotions.go index a1dad5ad4..f8c5b9e1e 100644 --- a/internal/controller/promotions/promotions.go +++ b/internal/controller/promotions/promotions.go @@ -457,7 +457,7 @@ func (r *reconciler) promote( if err != nil { return nil, err } - newStatus = newStatus.WithFreight(&targetFreight) + newStatus = newStatus.WithFreight(&nextFreight) logger.Debugf("promotion %s", newStatus.Phase)