diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index 67232589823..92e614c0213 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -6283,10 +6283,13 @@ type AddMFADeviceSyncRequest struct { // NewDeviceName is the name of a new mfa device. NewDeviceName string `protobuf:"bytes,2,opt,name=NewDeviceName,proto3" json:"new_device_name,omitempty"` // NewMFAResponse is a user's new mfa response to a mfa register challenge. - NewMFAResponse *MFARegisterResponse `protobuf:"bytes,3,opt,name=NewMFAResponse,proto3" json:"new_mfa_response,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NewMFAResponse *MFARegisterResponse `protobuf:"bytes,3,opt,name=NewMFAResponse,proto3" json:"new_mfa_response,omitempty"` + // DeviceUsage is the requested usage for the device. + // Defaults to DEVICE_USAGE_MFA. + DeviceUsage DeviceUsage `protobuf:"varint,4,opt,name=DeviceUsage,proto3,enum=proto.DeviceUsage" json:"device_usage,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *AddMFADeviceSyncRequest) Reset() { *m = AddMFADeviceSyncRequest{} } @@ -6343,6 +6346,13 @@ func (m *AddMFADeviceSyncRequest) GetNewMFAResponse() *MFARegisterResponse { return nil } +func (m *AddMFADeviceSyncRequest) GetDeviceUsage() DeviceUsage { + if m != nil { + return m.DeviceUsage + } + return DeviceUsage_DEVICE_USAGE_UNSPECIFIED +} + // AddMFADeviceSyncResponse is a response to AddMFADeviceSyncRequest. type AddMFADeviceSyncResponse struct { Device *types.MFADevice `protobuf:"bytes,1,opt,name=Device,proto3" json:"device"` @@ -8209,10 +8219,15 @@ func (m *CRL) GetCRL() []byte { } // ChangeUserAuthenticationRequest defines a request to change a password and if enabled -// also adds a new MFA device from a user reset or from a new user invite. After successful changing -// of authentications a new web session is created. Users may also receive new recovery codes if the -// user meets the requirement to receive recovery codes. If a user previously had recovery codes, -// the previous codes become invalid as it is replaced with newly generated ones. +// also adds a new MFA device from a user reset or from a new user invite. User can also skip +// setting a new password if passwordless is enabled and just provide a new webauthn register +// response. +// +// After a successful request a new web session is created. +// +// Users may also receive new recovery codes if they meet the necessary requirements. If a user +// previously had recovery codes, the previous codes become invalid as it is replaced with newly +// generated ones. type ChangeUserAuthenticationRequest struct { // TokenID is the ID of a reset or invite token. // The token allows the user to change their credentials without being logged @@ -10515,613 +10530,613 @@ func init() { func init() { proto.RegisterFile("authservice.proto", fileDescriptor_ce8bd90b12161215) } var fileDescriptor_ce8bd90b12161215 = []byte{ - // 9690 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7d, 0x5b, 0x6c, 0x5c, 0xcb, - 0x96, 0x50, 0xba, 0xfd, 0xea, 0x5e, 0x7e, 0xa4, 0x5d, 0xb6, 0xe3, 0x4e, 0xc7, 0x71, 0x27, 0x3b, - 0xe7, 0xe4, 0xe6, 0x9c, 0x39, 0x93, 0xe4, 0xd8, 0xe7, 0xfd, 0xbc, 0xdd, 0x6d, 0xc7, 0x76, 0xe2, - 0x38, 0x3e, 0xbb, 0x6d, 0xe7, 0x70, 0xee, 0x99, 0xdb, 0x67, 0xbb, 0xbb, 0x62, 0x6f, 0xdc, 0xee, - 0xdd, 0x77, 0xef, 0xdd, 0xc9, 0x89, 0x10, 0x08, 0x18, 0x06, 0x10, 0x12, 0x62, 0x90, 0x18, 0x01, - 0xe2, 0x83, 0x91, 0xe0, 0x0b, 0x04, 0x1f, 0x08, 0xf1, 0x3b, 0x3f, 0x08, 0x2e, 0x48, 0x08, 0x7e, - 0x46, 0x48, 0xf3, 0xd1, 0x5c, 0xee, 0x17, 0xf2, 0x1f, 0x42, 0x20, 0x71, 0xbf, 0x50, 0x3d, 0x77, - 0xd5, 0xde, 0xbb, 0xba, 0xed, 0x24, 0xcc, 0xfc, 0x24, 0xde, 0x55, 0xb5, 0x56, 0xad, 0x5a, 0xb5, - 0x6a, 0xd5, 0xaa, 0x55, 0xab, 0x56, 0xc3, 0xac, 0xd3, 0x0b, 0x8f, 0x03, 0xec, 0x3f, 0x77, 0x9b, - 0xf8, 0x6e, 0xd7, 0xf7, 0x42, 0x0f, 0x8d, 0xd1, 0xff, 0x4a, 0xf3, 0x47, 0xde, 0x91, 0x47, 0xff, - 0xbc, 0x47, 0xfe, 0x62, 0x95, 0xa5, 0x6b, 0x47, 0x9e, 0x77, 0xd4, 0xc6, 0xf7, 0xe8, 0xd7, 0x61, - 0xef, 0xd9, 0x3d, 0x7c, 0xda, 0x0d, 0x5f, 0xf2, 0xca, 0x72, 0xbc, 0x32, 0x74, 0x4f, 0x71, 0x10, - 0x3a, 0xa7, 0x5d, 0xde, 0x60, 0xb2, 0x89, 0xfd, 0x30, 0xe0, 0x1f, 0x1f, 0x1f, 0xb9, 0xe1, 0x71, - 0xef, 0xf0, 0x6e, 0xd3, 0x3b, 0xbd, 0x77, 0xe4, 0x3b, 0xcf, 0xdd, 0xd0, 0x09, 0x5d, 0xaf, 0xe3, - 0xb4, 0xef, 0x85, 0xb8, 0x8d, 0xbb, 0x9e, 0x1f, 0xde, 0x73, 0xba, 0xee, 0xbd, 0xf0, 0x65, 0x17, - 0x07, 0xec, 0x5f, 0x0e, 0x58, 0xbb, 0x08, 0xe0, 0x0b, 0x7c, 0x48, 0x86, 0xd8, 0x91, 0x7f, 0xbc, - 0x12, 0x12, 0xdf, 0xe9, 0x76, 0xb1, 0x1f, 0xfd, 0xc1, 0x91, 0x7c, 0x7d, 0x11, 0x24, 0xf8, 0x39, - 0xee, 0x84, 0xe2, 0x3f, 0x86, 0xc0, 0xfa, 0xe7, 0xf3, 0x30, 0xb6, 0x4e, 0x0a, 0xd0, 0x27, 0x30, - 0xba, 0xf7, 0xb2, 0x8b, 0x8b, 0x99, 0x1b, 0x99, 0x3b, 0x33, 0x2b, 0x05, 0x56, 0x7f, 0xf7, 0x49, - 0x17, 0xfb, 0x14, 0x65, 0x15, 0x9d, 0xf5, 0xcb, 0x33, 0x04, 0xd1, 0x7b, 0xde, 0xa9, 0x1b, 0x52, - 0xae, 0xdb, 0x14, 0x02, 0x3d, 0x85, 0x19, 0x1b, 0x07, 0x5e, 0xcf, 0x6f, 0xe2, 0x4d, 0xec, 0xb4, - 0xb0, 0x5f, 0xcc, 0xde, 0xc8, 0xdc, 0x99, 0x5c, 0x59, 0xb8, 0xcb, 0x98, 0xa6, 0x57, 0x56, 0xaf, - 0x9c, 0xf5, 0xcb, 0xc8, 0xe7, 0x65, 0x11, 0xb2, 0xcd, 0x4b, 0x76, 0x0c, 0x0d, 0xfa, 0x1e, 0xa6, - 0x6b, 0xd8, 0x0f, 0x2b, 0xbd, 0xf0, 0xd8, 0xf3, 0xdd, 0xf0, 0x65, 0x71, 0x84, 0xe2, 0xbd, 0xc2, - 0xf1, 0x6a, 0x75, 0x07, 0x2b, 0xd5, 0xa5, 0xb3, 0x7e, 0xb9, 0x48, 0x26, 0xb8, 0xe1, 0x88, 0x52, - 0x0d, 0xbd, 0x8e, 0x0c, 0x7d, 0x0b, 0x53, 0x75, 0xc2, 0xae, 0xe6, 0x9e, 0x77, 0x82, 0x3b, 0x41, - 0x71, 0x54, 0x23, 0x5a, 0xad, 0x3a, 0x58, 0xa9, 0x5e, 0x3b, 0xeb, 0x97, 0x17, 0x03, 0x5a, 0xd6, - 0x08, 0x69, 0xa1, 0x86, 0x5a, 0xc3, 0x84, 0x7e, 0x80, 0x99, 0x5d, 0xdf, 0x7b, 0xee, 0x06, 0xae, - 0xd7, 0xa1, 0x45, 0xc5, 0x31, 0x8a, 0x7b, 0x91, 0xe3, 0xd6, 0x2b, 0x0f, 0x56, 0xaa, 0xd7, 0xcf, - 0xfa, 0xe5, 0xab, 0x5d, 0x51, 0xca, 0x3a, 0xd0, 0x39, 0xa3, 0x83, 0xa0, 0x3d, 0x98, 0xac, 0xb5, - 0x7b, 0x41, 0x88, 0xfd, 0x1d, 0xe7, 0x14, 0x17, 0xc7, 0x29, 0xfa, 0x79, 0xc1, 0x97, 0xa8, 0xe6, - 0x60, 0xa5, 0x5a, 0x3a, 0xeb, 0x97, 0xaf, 0x34, 0x59, 0x51, 0xa3, 0xe3, 0x9c, 0xea, 0x2c, 0x57, - 0xd1, 0xa0, 0x8f, 0x61, 0x74, 0x3f, 0xc0, 0x7e, 0x31, 0x47, 0xd1, 0x4d, 0x73, 0x74, 0xa4, 0xe8, - 0x60, 0x85, 0xcd, 0x7f, 0x2f, 0xc0, 0xbe, 0x06, 0x4f, 0x01, 0x08, 0xa0, 0xed, 0xb5, 0x71, 0x31, - 0xaf, 0x01, 0x92, 0xa2, 0x83, 0x0f, 0x19, 0xa0, 0xef, 0xb5, 0xf5, 0x8e, 0x29, 0x00, 0xda, 0x82, - 0x3c, 0xe9, 0x39, 0xe8, 0x3a, 0x4d, 0x5c, 0x04, 0x0a, 0x5d, 0xe0, 0xd0, 0xb2, 0xbc, 0xba, 0x78, - 0xd6, 0x2f, 0xcf, 0x75, 0xc4, 0xa7, 0x86, 0x25, 0x82, 0x46, 0x5f, 0xc3, 0x78, 0x1d, 0xfb, 0xcf, - 0xb1, 0x5f, 0x9c, 0xa4, 0x78, 0x2e, 0x8b, 0x89, 0xa4, 0x85, 0x07, 0x2b, 0xd5, 0xf9, 0xb3, 0x7e, - 0xb9, 0x10, 0xd0, 0x2f, 0x0d, 0x07, 0x07, 0x23, 0xd2, 0x66, 0xe3, 0xe7, 0xd8, 0x0f, 0xf0, 0x5e, - 0xaf, 0xd3, 0xc1, 0xed, 0xe2, 0x94, 0x26, 0x6d, 0x5a, 0x9d, 0x90, 0x36, 0x9f, 0x15, 0x36, 0x42, - 0x5a, 0xaa, 0x4b, 0x9b, 0x06, 0x80, 0x8e, 0xa1, 0xc0, 0xfe, 0xaa, 0x79, 0x9d, 0x0e, 0x6e, 0x92, - 0x25, 0x55, 0x9c, 0xa6, 0x1d, 0x5c, 0xe5, 0x1d, 0xc4, 0xab, 0x0f, 0x56, 0xaa, 0xe5, 0xb3, 0x7e, - 0xf9, 0x1a, 0xc3, 0xdd, 0x68, 0xca, 0x0a, 0xad, 0x9b, 0x04, 0x56, 0x32, 0x8e, 0x4a, 0xb3, 0x89, - 0x83, 0xc0, 0xc6, 0xbf, 0xe8, 0xe1, 0x20, 0x2c, 0xce, 0x68, 0xe3, 0xd0, 0xea, 0x0e, 0x56, 0xd9, - 0x38, 0x1c, 0x5a, 0xd8, 0xf0, 0x59, 0xa9, 0x3e, 0x0e, 0x0d, 0x00, 0xed, 0x02, 0x54, 0xba, 0xdd, - 0x3a, 0x0e, 0x88, 0x30, 0x16, 0x2f, 0x53, 0xd4, 0x73, 0x1c, 0xf5, 0x53, 0x7c, 0xc8, 0x2b, 0x0e, - 0x56, 0xaa, 0x57, 0xcf, 0xfa, 0xe5, 0x05, 0xa7, 0xdb, 0x6d, 0x04, 0xac, 0x48, 0x43, 0xaa, 0xe0, - 0x60, 0x7c, 0x3f, 0xf5, 0x42, 0xcc, 0x45, 0xb1, 0x58, 0x88, 0xf1, 0x5d, 0xa9, 0x13, 0xf4, 0xfa, - 0xb4, 0xb0, 0xc1, 0xc5, 0x3a, 0xce, 0x77, 0x05, 0x80, 0xac, 0xc5, 0x35, 0x27, 0x74, 0x0e, 0x9d, - 0x00, 0x73, 0xf1, 0x98, 0xd5, 0xd6, 0xa2, 0x5e, 0x79, 0xb0, 0xca, 0xd6, 0x62, 0x8b, 0x97, 0x36, - 0x52, 0xe4, 0x25, 0x86, 0x8f, 0x70, 0x24, 0x1a, 0x78, 0x11, 0x0d, 0xe1, 0xc8, 0x0b, 0x7c, 0x98, - 0xce, 0x91, 0xa8, 0x29, 0xda, 0x84, 0xdc, 0x53, 0x7c, 0xc8, 0x34, 0xc7, 0x1c, 0xc5, 0x37, 0x1b, - 0xe1, 0x63, 0x3a, 0x63, 0x95, 0xad, 0x0a, 0x82, 0x2d, 0xa9, 0x2d, 0x24, 0x34, 0xfa, 0xbd, 0x0c, - 0x2c, 0x8a, 0x15, 0x8e, 0xc3, 0x17, 0x9e, 0x7f, 0xe2, 0x76, 0x8e, 0x6a, 0x5e, 0xe7, 0x99, 0x7b, - 0x54, 0x9c, 0xa7, 0x98, 0x6f, 0xc4, 0x94, 0x46, 0xac, 0xd5, 0xc1, 0x4a, 0xf5, 0x27, 0x67, 0xfd, - 0xf2, 0x2d, 0xa9, 0x40, 0x64, 0x3d, 0x11, 0xc8, 0x67, 0xee, 0x91, 0xd6, 0xb1, 0xa9, 0x2f, 0xf4, - 0x57, 0x32, 0x70, 0x85, 0x8f, 0xce, 0xc6, 0x4d, 0xcf, 0x6f, 0x45, 0x64, 0x2c, 0x50, 0x32, 0xca, - 0x72, 0xb5, 0xa6, 0x35, 0x3a, 0x58, 0xa9, 0xde, 0x3e, 0xeb, 0x97, 0x2d, 0xce, 0xb8, 0x86, 0x2f, - 0xaa, 0xd3, 0x88, 0x30, 0x74, 0x44, 0x24, 0x81, 0x28, 0xff, 0x5d, 0x1f, 0x3f, 0xc3, 0x3e, 0xee, - 0x34, 0x71, 0xf1, 0x8a, 0x26, 0x09, 0x7a, 0xa5, 0xd0, 0xca, 0x64, 0x2b, 0x69, 0x74, 0x65, 0xb1, - 0x2e, 0x09, 0x3a, 0x08, 0xfa, 0x05, 0x20, 0xce, 0x80, 0x4a, 0xaf, 0xe5, 0x86, 0x7c, 0x80, 0x8b, - 0xb4, 0x97, 0x6b, 0x3a, 0x9f, 0x95, 0x06, 0x07, 0x2b, 0x55, 0xeb, 0xac, 0x5f, 0x5e, 0x16, 0x2c, - 0x76, 0x48, 0x55, 0xda, 0xc0, 0x52, 0x90, 0x13, 0xcd, 0xbb, 0xed, 0x35, 0x4f, 0x8a, 0x45, 0x4d, - 0xf3, 0x92, 0x22, 0xa1, 0xb2, 0xdb, 0x5e, 0xf3, 0x44, 0xd7, 0xbc, 0xa4, 0x16, 0x85, 0x30, 0xc7, - 0x67, 0xc9, 0xc6, 0x41, 0xe8, 0xbb, 0x54, 0x77, 0x04, 0xc5, 0xab, 0x14, 0xcf, 0x92, 0xd0, 0xc1, - 0xc9, 0x16, 0x07, 0x1f, 0x30, 0x6a, 0xb9, 0x20, 0x34, 0x7c, 0xa5, 0x4e, 0xeb, 0x26, 0x0d, 0x3d, - 0xfa, 0x8b, 0xb0, 0xf0, 0xd4, 0xed, 0xb4, 0xbc, 0x17, 0xc1, 0x1a, 0x0e, 0x4e, 0x42, 0xaf, 0x5b, - 0x67, 0x96, 0x5f, 0xb1, 0x44, 0xfb, 0x5d, 0x16, 0x62, 0x9e, 0xd6, 0xe6, 0x60, 0xb5, 0xfa, 0xf6, - 0x59, 0xbf, 0x7c, 0xf3, 0x05, 0xab, 0x6c, 0xb4, 0x58, 0x6d, 0x83, 0x1b, 0x8f, 0x5a, 0xe7, 0xe9, - 0xbd, 0x10, 0x11, 0xd0, 0x2b, 0x8a, 0xd7, 0x34, 0x11, 0xd0, 0x2b, 0x85, 0x32, 0x88, 0x75, 0xa8, - 0x8b, 0x80, 0x0e, 0x82, 0x36, 0x20, 0x27, 0xd4, 0x43, 0x71, 0x49, 0x5b, 0xba, 0xa2, 0xf8, 0x60, - 0x95, 0x59, 0x40, 0x42, 0xc5, 0xe8, 0x2b, 0x57, 0xb4, 0x42, 0xdb, 0x90, 0xa7, 0x3a, 0x92, 0xaa, - 0xac, 0xeb, 0x14, 0x13, 0x12, 0x82, 0x2a, 0xca, 0x0f, 0x56, 0xab, 0xc5, 0xb3, 0x7e, 0x79, 0x9e, - 0x69, 0xd9, 0x84, 0xa2, 0x8a, 0x10, 0xa0, 0x55, 0x18, 0xa9, 0x74, 0xbb, 0xc5, 0x65, 0x8a, 0x67, - 0x2a, 0xc2, 0x73, 0xb0, 0x5a, 0x9d, 0x3d, 0xeb, 0x97, 0xa7, 0x9d, 0xae, 0x3e, 0x2c, 0xd2, 0xba, - 0x0a, 0x90, 0x13, 0x06, 0xd9, 0xc3, 0xd1, 0xdc, 0x44, 0x21, 0x67, 0x6d, 0xc2, 0xd8, 0x53, 0x27, - 0x6c, 0x1e, 0xa3, 0xaf, 0x61, 0xec, 0x91, 0xdb, 0x69, 0x05, 0xc5, 0xcc, 0x8d, 0x11, 0xba, 0x67, - 0x33, 0x6b, 0x91, 0x56, 0x92, 0x8a, 0xea, 0xe2, 0x2f, 0xfb, 0xe5, 0x4b, 0x67, 0xfd, 0xf2, 0xe5, - 0x13, 0xd2, 0x4c, 0x31, 0x19, 0x19, 0x9c, 0xf5, 0xaf, 0xb3, 0x90, 0x97, 0xad, 0xd1, 0x12, 0x8c, - 0x92, 0xff, 0xa9, 0xed, 0x99, 0xaf, 0xe6, 0xce, 0xfa, 0xe5, 0x51, 0x02, 0x67, 0xd3, 0x52, 0xb4, - 0x02, 0x93, 0xdb, 0x9e, 0xd3, 0xaa, 0xe3, 0xa6, 0x8f, 0xc3, 0x80, 0x1a, 0x97, 0xb9, 0x6a, 0xe1, - 0xac, 0x5f, 0x9e, 0x6a, 0x7b, 0x4e, 0xab, 0x11, 0xb0, 0x72, 0x5b, 0x6d, 0x44, 0x30, 0x52, 0xcb, - 0x68, 0x24, 0xc2, 0x48, 0x2c, 0x08, 0x9b, 0x96, 0xa2, 0x87, 0x30, 0xfe, 0xc0, 0x6d, 0x93, 0xbd, - 0x66, 0x94, 0xd2, 0xbf, 0x14, 0xa7, 0xff, 0x2e, 0xab, 0x5e, 0xef, 0x84, 0xfe, 0x4b, 0x66, 0x38, - 0x3c, 0xa3, 0x05, 0xca, 0x40, 0x38, 0x06, 0x74, 0x1f, 0x26, 0xea, 0xbd, 0x43, 0x4a, 0xfe, 0x18, - 0xed, 0x8c, 0xce, 0x6e, 0xd0, 0x3b, 0x6c, 0x90, 0x21, 0x28, 0x00, 0xa2, 0x59, 0xe9, 0x53, 0x98, - 0x54, 0xd0, 0xa3, 0x02, 0x8c, 0x9c, 0xe0, 0x97, 0x6c, 0xec, 0x36, 0xf9, 0x13, 0xcd, 0xc3, 0xd8, - 0x73, 0xa7, 0xdd, 0xc3, 0x74, 0xa8, 0x79, 0x9b, 0x7d, 0x7c, 0x96, 0xfd, 0x24, 0x63, 0xfd, 0xe7, - 0x51, 0x28, 0x6c, 0x7a, 0x41, 0x48, 0x2c, 0x59, 0xb9, 0x25, 0xdf, 0x82, 0x71, 0x52, 0xb6, 0xb5, - 0xc6, 0xf9, 0x37, 0x79, 0xd6, 0x2f, 0x4f, 0x1c, 0x7b, 0x41, 0xd8, 0x70, 0x5b, 0x36, 0xaf, 0x42, - 0xef, 0x40, 0x6e, 0xc7, 0x6b, 0x61, 0xca, 0x14, 0x8a, 0xb6, 0x3a, 0x7d, 0xd6, 0x2f, 0xe7, 0x3b, - 0x5e, 0x0b, 0x53, 0xab, 0xd0, 0x96, 0xd5, 0xe8, 0x80, 0x5b, 0x73, 0x8c, 0x77, 0x55, 0xc2, 0x3b, - 0x62, 0xbe, 0xfd, 0xa6, 0x5f, 0xfe, 0xe8, 0x02, 0xc7, 0x8d, 0xbb, 0xf5, 0x97, 0x41, 0x88, 0x4f, - 0x09, 0x26, 0x6e, 0xec, 0x3d, 0x85, 0xf9, 0x4a, 0xab, 0xe5, 0x32, 0x88, 0x5d, 0xdf, 0xed, 0x34, - 0xdd, 0xae, 0xd3, 0x0e, 0xe8, 0x1c, 0xe4, 0xab, 0xb7, 0xce, 0xfa, 0xe5, 0xb2, 0x23, 0xeb, 0x1b, - 0x5d, 0xd9, 0x40, 0xe1, 0x61, 0x2a, 0x02, 0xb4, 0x0a, 0xb9, 0xb5, 0x9d, 0x3a, 0x35, 0x05, 0x8b, - 0x63, 0x14, 0x19, 0xdd, 0x1c, 0x5b, 0x9d, 0x80, 0x0e, 0x4d, 0x45, 0x20, 0x1b, 0xa2, 0x8f, 0x60, - 0x6a, 0xb7, 0x77, 0xd8, 0x76, 0x9b, 0x7b, 0xdb, 0xf5, 0x47, 0xf8, 0x25, 0xb5, 0xa1, 0xa7, 0x98, - 0xca, 0xec, 0xd2, 0xf2, 0x46, 0xd8, 0x0e, 0x1a, 0x27, 0xf8, 0xa5, 0xad, 0xb5, 0x8b, 0xe0, 0xea, - 0xf5, 0x4d, 0x02, 0x37, 0x91, 0x80, 0x0b, 0x82, 0x63, 0x15, 0x8e, 0xb5, 0x43, 0xf7, 0x00, 0x98, - 0x65, 0x52, 0x69, 0xb5, 0x98, 0x89, 0x9d, 0xaf, 0x5e, 0x3e, 0xeb, 0x97, 0x27, 0xb9, 0x2d, 0xe3, - 0xb4, 0x5a, 0xbe, 0xad, 0x34, 0x41, 0x35, 0xc8, 0xd9, 0x1e, 0x63, 0x30, 0x37, 0xac, 0x2f, 0x4b, - 0xc3, 0x9a, 0x15, 0xf3, 0xa3, 0x14, 0xff, 0x52, 0x47, 0x29, 0x5a, 0xa0, 0x32, 0x4c, 0xec, 0x78, - 0x35, 0xa7, 0x79, 0xcc, 0xcc, 0xeb, 0x5c, 0x75, 0xec, 0xac, 0x5f, 0xce, 0xfc, 0xb6, 0x2d, 0x4a, - 0xad, 0x7f, 0x9a, 0x83, 0x02, 0xb1, 0xe1, 0x35, 0x89, 0x7a, 0x0f, 0xf2, 0x8c, 0xf6, 0x47, 0x5c, - 0x30, 0xa7, 0xaa, 0x33, 0x67, 0xfd, 0x32, 0xf0, 0x01, 0x92, 0xc1, 0x45, 0x0d, 0xd0, 0x1d, 0xc8, - 0x11, 0x0c, 0x9d, 0x48, 0xb4, 0xa6, 0xce, 0xfa, 0xe5, 0x5c, 0x8f, 0x97, 0xd9, 0xb2, 0x16, 0xd5, - 0x61, 0x62, 0xfd, 0xc7, 0xae, 0xeb, 0xe3, 0x80, 0x1f, 0xe5, 0x4a, 0x77, 0xd9, 0x89, 0xfd, 0xae, - 0x38, 0xb1, 0xdf, 0xdd, 0x13, 0x27, 0xf6, 0xea, 0x75, 0xae, 0x42, 0x66, 0x31, 0x03, 0x89, 0xc6, - 0xf7, 0xfb, 0xff, 0xad, 0x9c, 0xb1, 0x05, 0x26, 0xf4, 0x1e, 0x8c, 0x3f, 0xf0, 0xfc, 0x53, 0x27, - 0xa4, 0x27, 0xb8, 0x3c, 0x5f, 0xae, 0xb4, 0x44, 0x5b, 0xae, 0xb4, 0x04, 0x3d, 0x80, 0x19, 0xdb, - 0xeb, 0x85, 0x78, 0xcf, 0x13, 0xe6, 0x26, 0x5b, 0xb5, 0xcb, 0x67, 0xfd, 0x72, 0xc9, 0x27, 0x35, - 0x8d, 0xd0, 0x4b, 0x1a, 0x96, 0x76, 0x0c, 0x0a, 0xad, 0xc3, 0x8c, 0x66, 0x18, 0x07, 0xc5, 0x71, - 0x2a, 0x79, 0xcc, 0x68, 0xd0, 0xcc, 0x69, 0x55, 0xfe, 0x62, 0x40, 0x68, 0x07, 0x66, 0x1f, 0xf5, - 0x0e, 0xb1, 0xdf, 0xc1, 0x21, 0x0e, 0x04, 0x45, 0x13, 0x94, 0xa2, 0x1b, 0x67, 0xfd, 0xf2, 0xd2, - 0x89, 0xac, 0x4c, 0xa1, 0x29, 0x09, 0x8a, 0x30, 0x5c, 0xe6, 0x84, 0xca, 0x6d, 0x28, 0xc7, 0xcd, - 0x69, 0xa6, 0xe2, 0x62, 0xb5, 0xd5, 0x5b, 0x9c, 0xcb, 0xd7, 0xe4, 0xd8, 0x93, 0x1b, 0x93, 0x1d, - 0xc7, 0x49, 0x56, 0x9c, 0xd4, 0x26, 0x79, 0x4a, 0x2d, 0x3b, 0xa4, 0x09, 0x6d, 0xa2, 0xca, 0xa2, - 0xd4, 0x2b, 0xdb, 0x30, 0xb6, 0x1f, 0x38, 0x47, 0x4c, 0x12, 0x67, 0x56, 0x6e, 0x72, 0x8a, 0xe2, - 0xd2, 0x47, 0xcf, 0xf5, 0xb4, 0x61, 0x75, 0x8e, 0xec, 0x20, 0x3d, 0xf2, 0xa7, 0xba, 0x83, 0xd0, - 0x3a, 0xf4, 0x0d, 0x00, 0xa7, 0x8a, 0xec, 0x6c, 0x93, 0x7c, 0xaf, 0xd5, 0x06, 0x49, 0x36, 0xb1, - 0x65, 0x3e, 0xbe, 0x2b, 0x72, 0x7c, 0xda, 0x5e, 0x67, 0x2b, 0x48, 0xd0, 0xd7, 0x30, 0x45, 0xd5, - 0x95, 0x98, 0xd1, 0x29, 0x3a, 0xa3, 0xf4, 0xe8, 0x4f, 0x14, 0x60, 0xda, 0x7c, 0x6a, 0x00, 0xe8, - 0x2f, 0xc1, 0x02, 0x47, 0x17, 0x33, 0x33, 0xa6, 0xb9, 0x59, 0xa5, 0x91, 0xa7, 0xb7, 0xa9, 0xbe, - 0xcb, 0x29, 0xb5, 0x24, 0xa5, 0x46, 0xc3, 0xc3, 0x4e, 0xef, 0xc6, 0xfa, 0x16, 0xf2, 0x92, 0x79, - 0x68, 0x02, 0x46, 0x2a, 0xed, 0x76, 0xe1, 0x12, 0xf9, 0xa3, 0x5e, 0xdf, 0x2c, 0x64, 0xd0, 0x0c, - 0x40, 0x24, 0x31, 0x85, 0x2c, 0x9a, 0x8a, 0x8c, 0x95, 0xc2, 0x08, 0x6d, 0xdf, 0xed, 0x16, 0x46, - 0x11, 0x8a, 0x5b, 0x49, 0x85, 0x31, 0xeb, 0xbf, 0x66, 0x12, 0x82, 0x45, 0xf6, 0x65, 0x6e, 0x58, - 0x51, 0x39, 0x60, 0x9b, 0x0f, 0xdd, 0x97, 0xb9, 0x49, 0xc6, 0x36, 0x16, 0xb5, 0x11, 0xd1, 0x15, - 0xbb, 0x84, 0x07, 0x4d, 0xaf, 0xad, 0xea, 0x8a, 0x2e, 0x2f, 0xb3, 0x65, 0x2d, 0x5a, 0x51, 0xb4, - 0xca, 0x48, 0xb4, 0xb1, 0x0a, 0xad, 0xa2, 0x4a, 0x98, 0xd4, 0x2f, 0x2b, 0x8a, 0xf5, 0x35, 0x1a, - 0xc1, 0xa4, 0x48, 0xb4, 0x6c, 0x67, 0xf5, 0x0c, 0x73, 0x86, 0x3e, 0x4f, 0x18, 0x8b, 0x6c, 0x84, - 0x54, 0x28, 0x63, 0x53, 0x93, 0xb0, 0x03, 0xcb, 0x30, 0xb6, 0xed, 0x1d, 0xb9, 0x1d, 0x3e, 0xc8, - 0xfc, 0x59, 0xbf, 0x3c, 0xd6, 0x26, 0x05, 0x36, 0x2b, 0xb7, 0xfe, 0x6f, 0x46, 0x95, 0x5f, 0x69, - 0xaf, 0x64, 0x52, 0xed, 0x95, 0xf7, 0x20, 0xcf, 0x0f, 0x35, 0x5b, 0x6b, 0x1c, 0x23, 0xd5, 0xc7, - 0xe2, 0x3c, 0xe4, 0xb6, 0xec, 0xa8, 0x01, 0xd9, 0x69, 0x98, 0x72, 0xa6, 0x3b, 0xcd, 0x48, 0xb4, - 0xd3, 0x70, 0xf5, 0xcd, 0x76, 0x9a, 0xa8, 0x09, 0x99, 0x48, 0xd5, 0x9b, 0x34, 0x1a, 0x4d, 0xa4, - 0xea, 0x37, 0xd2, 0x7d, 0x45, 0x9f, 0x01, 0x54, 0x9e, 0xd6, 0x89, 0xf4, 0x57, 0xec, 0x1d, 0xae, - 0x43, 0xa9, 0xab, 0xc9, 0x79, 0x11, 0x34, 0xe8, 0x6a, 0x71, 0x7c, 0x75, 0x4b, 0x52, 0x5a, 0x5b, - 0x6d, 0x98, 0xd9, 0xc0, 0x21, 0x99, 0x35, 0xb1, 0xe1, 0x0c, 0x1e, 0xfe, 0x17, 0x30, 0xf9, 0xd4, - 0x0d, 0x8f, 0x75, 0x03, 0x90, 0x76, 0xf6, 0xc2, 0x0d, 0x8f, 0x85, 0x01, 0xa8, 0x74, 0xa6, 0x36, - 0xb7, 0xd6, 0xe1, 0x32, 0xef, 0x4d, 0xee, 0x6f, 0x2b, 0x3a, 0xc2, 0x4c, 0x64, 0x51, 0xaa, 0x08, - 0x75, 0x34, 0x38, 0xae, 0xf0, 0x51, 0x3d, 0xb1, 0x05, 0x30, 0x6b, 0xd8, 0xe4, 0x69, 0xa1, 0x82, - 0x13, 0xdb, 0x1a, 0xe2, 0x1b, 0x82, 0xb5, 0x0f, 0xd3, 0xbb, 0xed, 0xde, 0x91, 0xdb, 0x21, 0x02, - 0x5a, 0xc7, 0xbf, 0x40, 0x6b, 0x00, 0x51, 0x01, 0xef, 0x41, 0xb8, 0x17, 0xa2, 0x8a, 0x83, 0x55, - 0x3e, 0xc5, 0xb4, 0x84, 0xea, 0x70, 0x5b, 0x81, 0xb3, 0xfe, 0xd6, 0x08, 0x20, 0xde, 0x47, 0x3d, - 0x74, 0x42, 0x5c, 0xc7, 0x21, 0xd9, 0x2e, 0xae, 0x40, 0x56, 0x9a, 0x8d, 0xe3, 0x67, 0xfd, 0x72, - 0xd6, 0x6d, 0xd9, 0xd9, 0xad, 0x35, 0xf4, 0x01, 0x8c, 0xd1, 0x66, 0x94, 0xd7, 0x33, 0xb2, 0x3f, - 0x15, 0x03, 0x93, 0xe9, 0x80, 0xfc, 0x69, 0xb3, 0xc6, 0xe8, 0x43, 0xc8, 0xaf, 0xe1, 0x36, 0x3e, - 0x72, 0x42, 0x4f, 0xc8, 0x1d, 0x33, 0xc4, 0x44, 0xa1, 0x32, 0x45, 0x51, 0x4b, 0xb2, 0x81, 0xdb, - 0xd8, 0x09, 0xbc, 0x8e, 0xba, 0x81, 0xfb, 0xb4, 0x44, 0xdd, 0xc0, 0x59, 0x1b, 0xf4, 0x07, 0x19, - 0x98, 0xac, 0x74, 0x3a, 0xdc, 0xc0, 0x09, 0xb8, 0x6b, 0x75, 0xe1, 0xae, 0xf4, 0x8c, 0x6f, 0x3b, - 0x87, 0xb8, 0x7d, 0x40, 0x4c, 0xe6, 0xa0, 0xfa, 0x3d, 0xd1, 0xa9, 0x7f, 0xd2, 0x2f, 0x7f, 0xfe, - 0x2a, 0xce, 0xf6, 0xbb, 0x7b, 0xbe, 0xe3, 0x86, 0x01, 0xf5, 0x63, 0x45, 0x1d, 0xaa, 0x62, 0xa6, - 0xd0, 0x81, 0xde, 0x81, 0x31, 0x22, 0xdf, 0xc2, 0x0e, 0xa0, 0x93, 0x4d, 0xd6, 0x81, 0x76, 0xf8, - 0xa1, 0x2d, 0xac, 0x5b, 0x90, 0xe7, 0x9c, 0xdc, 0x5a, 0x33, 0x4d, 0x81, 0xb5, 0x06, 0xd7, 0xa9, - 0x15, 0x87, 0x89, 0xe4, 0x52, 0x6f, 0x0e, 0x97, 0xc4, 0xc8, 0xec, 0x9f, 0xa0, 0xc5, 0x12, 0x9a, - 0x4e, 0x08, 0xf5, 0x06, 0xd9, 0xa2, 0xc6, 0xaa, 0xc1, 0xd2, 0x06, 0x0e, 0x6d, 0x1c, 0xe0, 0x70, - 0xd7, 0x09, 0x82, 0x17, 0x9e, 0xdf, 0xa2, 0x55, 0x17, 0x42, 0xf2, 0xd7, 0x32, 0x50, 0xae, 0xf9, - 0x98, 0xcc, 0xb4, 0x11, 0xd1, 0xe0, 0x15, 0xbc, 0xc4, 0x2f, 0x17, 0xb2, 0x51, 0x2d, 0xe1, 0x35, - 0xbf, 0x40, 0x78, 0x1b, 0x46, 0xf6, 0xf6, 0xb6, 0xa9, 0xc4, 0x8c, 0x50, 0xc6, 0x8d, 0x84, 0x61, - 0xfb, 0x37, 0xfd, 0x72, 0x6e, 0xad, 0xc7, 0x2e, 0x1f, 0x6c, 0x52, 0x6f, 0x3d, 0x83, 0x05, 0x1b, - 0x77, 0xf0, 0x0b, 0xe7, 0xb0, 0x8d, 0x35, 0x73, 0xb5, 0x0c, 0x63, 0xcc, 0x59, 0x96, 0x18, 0x02, - 0x2b, 0xd7, 0xed, 0xd9, 0xec, 0x10, 0x7b, 0xd6, 0xfa, 0xc3, 0x0c, 0x14, 0xd8, 0x70, 0xab, 0x5e, - 0x78, 0xbe, 0xf1, 0xf1, 0x11, 0x64, 0x07, 0x8f, 0x00, 0xdd, 0x8e, 0xb8, 0x3d, 0x12, 0x6d, 0x7e, - 0x94, 0x54, 0xa2, 0xc3, 0x45, 0x25, 0x19, 0x10, 0x93, 0x25, 0x76, 0x34, 0xa2, 0x03, 0xa2, 0xb2, - 0x24, 0x24, 0xe8, 0x5f, 0x64, 0x61, 0x56, 0x21, 0x31, 0xe8, 0x7a, 0x9d, 0x00, 0x93, 0x33, 0x1e, - 0x11, 0x16, 0x85, 0x4e, 0x7a, 0xc6, 0x23, 0x5b, 0x66, 0x23, 0xb2, 0xc4, 0x29, 0xc1, 0xef, 0x90, - 0xc3, 0x45, 0x3b, 0x71, 0x1c, 0xa4, 0x8a, 0x9b, 0x35, 0x15, 0xd5, 0xe7, 0x26, 0xfa, 0x1e, 0xe4, - 0xe8, 0x9f, 0x84, 0x11, 0xa3, 0x66, 0x46, 0xc8, 0x46, 0xc8, 0x05, 0x78, 0xe8, 0xb9, 0x9d, 0xc7, - 0x38, 0x3c, 0xf6, 0xc4, 0xe1, 0x79, 0x8b, 0x28, 0xb1, 0x3f, 0xef, 0xb9, 0x9d, 0xc6, 0x29, 0x2d, - 0xbe, 0xe8, 0xa1, 0x33, 0x42, 0x68, 0x2b, 0xc8, 0xad, 0xfb, 0x50, 0x20, 0xfa, 0xe6, 0xfc, 0x33, - 0x6a, 0xcd, 0x03, 0xda, 0xc0, 0x61, 0xd5, 0xd3, 0x36, 0x0e, 0x6b, 0x1a, 0x26, 0x77, 0xdd, 0xce, - 0x91, 0xf8, 0xfc, 0x37, 0x59, 0x98, 0x62, 0xdf, 0x7c, 0x06, 0x62, 0x3b, 0x69, 0xe6, 0x3c, 0x3b, - 0xe9, 0x27, 0x30, 0xcd, 0xdd, 0x39, 0xd8, 0xa7, 0x2e, 0x64, 0x36, 0x1f, 0xf4, 0x44, 0xc9, 0xbc, - 0x3a, 0x8d, 0xe7, 0xac, 0xc6, 0xd6, 0x1b, 0xa2, 0x6d, 0x98, 0x61, 0x05, 0x0f, 0xb0, 0x13, 0xf6, - 0xa2, 0x53, 0xd5, 0x65, 0x6e, 0x67, 0x8a, 0x62, 0xa6, 0x8c, 0x38, 0xae, 0x67, 0xbc, 0xd0, 0x8e, - 0xc1, 0xa2, 0xaf, 0xe1, 0xf2, 0xae, 0xef, 0xfd, 0xf8, 0x52, 0xb1, 0x1d, 0x98, 0x3e, 0x5e, 0x20, - 0x87, 0xb0, 0x2e, 0xa9, 0x6a, 0xa8, 0x16, 0x44, 0xbc, 0x35, 0x91, 0xa9, 0xad, 0xa0, 0xea, 0xf9, - 0x6e, 0xe7, 0x88, 0xce, 0x66, 0x8e, 0xc9, 0x94, 0x1b, 0x34, 0x0e, 0x69, 0xa1, 0x2d, 0xab, 0xad, - 0xff, 0x31, 0x02, 0x39, 0xd9, 0xf1, 0x5d, 0xd5, 0x2c, 0xe5, 0x9b, 0x31, 0x5d, 0x9e, 0xd1, 0xe1, - 0xc7, 0x56, 0x5a, 0xa0, 0xab, 0xcc, 0x99, 0xc5, 0xcc, 0x80, 0x09, 0x22, 0x63, 0x4e, 0xb7, 0x4b, - 0x5d, 0x56, 0x44, 0x99, 0xae, 0x55, 0x29, 0x17, 0x72, 0x4c, 0x99, 0xb6, 0x0e, 0xed, 0xec, 0x5a, - 0x95, 0xcc, 0xf5, 0x93, 0xad, 0xb5, 0x1a, 0x1d, 0x50, 0x8e, 0xcd, 0xb5, 0xe7, 0xb6, 0x9a, 0x36, - 0x2d, 0x25, 0xb5, 0xf5, 0xca, 0xe3, 0x6d, 0x4e, 0x34, 0xad, 0x0d, 0x9c, 0xd3, 0xb6, 0x4d, 0x4b, - 0x89, 0x1d, 0xc8, 0xf6, 0xe8, 0x9a, 0xd7, 0x09, 0x7d, 0xaf, 0x1d, 0x50, 0x57, 0x41, 0x4e, 0xdb, - 0xce, 0x9b, 0xbc, 0xca, 0x8e, 0x35, 0x45, 0x4f, 0x61, 0xb1, 0xd2, 0x7a, 0xee, 0x74, 0x9a, 0xb8, - 0xc5, 0x6a, 0x9e, 0x7a, 0xfe, 0xc9, 0xb3, 0xb6, 0xf7, 0x22, 0xa0, 0xa7, 0xbc, 0x1c, 0x3f, 0x2f, - 0xf2, 0x26, 0x0d, 0x8e, 0xee, 0x85, 0x68, 0x64, 0x9b, 0xa0, 0x89, 0x8a, 0xa8, 0xb5, 0xbd, 0x5e, - 0x8b, 0x1e, 0xef, 0x72, 0x4c, 0x45, 0x34, 0x49, 0x81, 0xcd, 0xca, 0x09, 0x97, 0x36, 0xeb, 0x8f, - 0xe9, 0xe9, 0x8c, 0x73, 0xe9, 0x38, 0x38, 0xb5, 0x49, 0x19, 0x7a, 0x1b, 0x26, 0x84, 0x49, 0xcb, - 0x9c, 0x02, 0xd4, 0x63, 0x24, 0x4c, 0x59, 0x51, 0x87, 0xd6, 0x60, 0xf6, 0xb1, 0xd7, 0xc2, 0xbe, - 0x13, 0xe2, 0x16, 0xb7, 0x2e, 0x03, 0x7a, 0xd0, 0xca, 0x31, 0xb3, 0xfa, 0x54, 0x54, 0x8a, 0x0b, - 0x8d, 0xc0, 0x4e, 0x02, 0x58, 0xef, 0xc3, 0x2c, 0x5b, 0x7a, 0xe7, 0xb6, 0xf7, 0xac, 0x5d, 0x80, - 0x3a, 0x3e, 0x75, 0xba, 0xc7, 0x1e, 0x11, 0x8f, 0xaa, 0xfa, 0xc5, 0x0d, 0x20, 0x24, 0xaf, 0x0b, - 0x78, 0xc5, 0xc1, 0xaa, 0xb0, 0x88, 0x45, 0x4b, 0x5b, 0x81, 0xb2, 0xfe, 0x53, 0x16, 0x10, 0x75, - 0x9b, 0xd7, 0x43, 0x1f, 0x3b, 0xa7, 0x82, 0x8c, 0x4f, 0x61, 0x8a, 0x69, 0x51, 0x56, 0x4c, 0xc9, - 0x21, 0xd6, 0x15, 0x5b, 0x3e, 0x6a, 0xd5, 0xe6, 0x25, 0x5b, 0x6b, 0x4a, 0x40, 0x6d, 0x1c, 0xf4, - 0x4e, 0x05, 0x68, 0x56, 0x03, 0x55, 0xab, 0x08, 0xa8, 0xfa, 0x8d, 0xbe, 0x86, 0x99, 0x9a, 0x77, - 0xda, 0x25, 0x3c, 0xe1, 0xc0, 0x23, 0xdc, 0x86, 0xe1, 0xfd, 0x6a, 0x95, 0x9b, 0x97, 0xec, 0x58, - 0x73, 0xb4, 0x03, 0x73, 0x0f, 0xda, 0xbd, 0xe0, 0xb8, 0xd2, 0x69, 0xd5, 0xda, 0x5e, 0x20, 0xb0, - 0x8c, 0x72, 0x97, 0x0a, 0x5f, 0xfc, 0xc9, 0x16, 0x9b, 0x97, 0xec, 0x34, 0x40, 0xf4, 0x36, 0x8f, - 0x01, 0xe0, 0xb6, 0xd4, 0xf4, 0x5d, 0x1e, 0x22, 0xf0, 0xa4, 0x83, 0x9f, 0x3c, 0xdb, 0xbc, 0x64, - 0xb3, 0xda, 0x6a, 0x1e, 0x26, 0x84, 0xe2, 0xbb, 0x07, 0xb3, 0x0a, 0x3b, 0x89, 0xf5, 0xd7, 0x0b, - 0x50, 0x09, 0x72, 0xfb, 0xdd, 0xb6, 0xe7, 0xb4, 0x84, 0x31, 0x61, 0xcb, 0x6f, 0xeb, 0x3d, 0x9d, - 0xd3, 0x68, 0x49, 0x3d, 0xd1, 0xb0, 0xc6, 0x51, 0x81, 0xb5, 0xa9, 0x33, 0x77, 0x70, 0x6b, 0xad, - 0xdf, 0x6c, 0xac, 0xdf, 0x42, 0x9c, 0xd7, 0xd6, 0x42, 0x2a, 0xf3, 0xac, 0x47, 0xd4, 0x50, 0xaa, - 0x74, 0xbb, 0x6d, 0xb7, 0x49, 0xf7, 0x17, 0xa6, 0x1d, 0xa5, 0x8d, 0xf1, 0x5b, 0xea, 0x4d, 0xb5, - 0xb2, 0xb9, 0xca, 0x7b, 0x69, 0xe5, 0x2e, 0xda, 0xfa, 0x0e, 0xae, 0x1b, 0x90, 0xf1, 0x7d, 0xe2, - 0x53, 0x98, 0xe0, 0x45, 0x31, 0x81, 0x56, 0x7d, 0xfb, 0x74, 0x55, 0x06, 0x1c, 0x52, 0xb4, 0xb7, - 0xbe, 0x85, 0xe5, 0xfd, 0x6e, 0x80, 0xfd, 0x24, 0x7a, 0x41, 0xea, 0x47, 0xf2, 0x26, 0x3c, 0x63, - 0xbc, 0x37, 0x80, 0xb3, 0x7e, 0x79, 0x9c, 0xe1, 0x16, 0x17, 0xe0, 0xd6, 0xef, 0x67, 0x60, 0x99, - 0x2d, 0x55, 0x23, 0xea, 0x8b, 0x70, 0x41, 0xf1, 0x4b, 0x67, 0xcd, 0x7e, 0xe9, 0x81, 0x8e, 0x7a, - 0xeb, 0x1b, 0xb0, 0x38, 0x45, 0xed, 0xf6, 0x1b, 0x9a, 0x9b, 0xbf, 0x9a, 0x81, 0x79, 0x36, 0x39, - 0xaf, 0x81, 0x05, 0x7d, 0x09, 0x33, 0xf5, 0x13, 0xb7, 0x7b, 0xe0, 0xb4, 0xdd, 0x16, 0x73, 0xd1, - 0xb2, 0xed, 0x68, 0x81, 0xee, 0xb4, 0x27, 0x6e, 0xb7, 0xf1, 0x3c, 0xaa, 0xca, 0xd8, 0xb1, 0xc6, - 0xd6, 0x13, 0x58, 0x88, 0xd1, 0xc0, 0x05, 0xe3, 0xa3, 0xb8, 0x60, 0x24, 0xc2, 0x18, 0xd2, 0xa5, - 0xe2, 0x31, 0x5c, 0x91, 0x52, 0xa1, 0x4f, 0xd9, 0x6a, 0x4c, 0x1a, 0x12, 0x08, 0xd3, 0x44, 0xa1, - 0x09, 0x57, 0xa4, 0x24, 0xbc, 0x86, 0x04, 0x88, 0xc9, 0xcd, 0xa6, 0x4e, 0xee, 0x16, 0x94, 0xd4, - 0xc9, 0x7d, 0x9d, 0x49, 0xfd, 0x8f, 0x19, 0x58, 0xdc, 0xc0, 0x1d, 0xba, 0xf5, 0x54, 0xba, 0x5d, - 0xed, 0x64, 0xa2, 0xba, 0xa7, 0x33, 0x03, 0xdd, 0xd3, 0xd2, 0xec, 0xce, 0xa6, 0x9b, 0xdd, 0x64, - 0x4f, 0xdd, 0xb7, 0xb7, 0xb8, 0xac, 0xd2, 0x3d, 0xb5, 0xe7, 0xbb, 0x36, 0x29, 0x43, 0x5b, 0x91, - 0x6b, 0x7b, 0x74, 0xa8, 0x6b, 0x7b, 0x8e, 0xbb, 0xfa, 0x26, 0xb8, 0x6b, 0x5b, 0x73, 0x68, 0x5b, - 0x9f, 0x43, 0x31, 0x39, 0x16, 0x2e, 0x1f, 0xc3, 0x8e, 0x3a, 0xd6, 0x5a, 0x24, 0xdd, 0xfc, 0x16, - 0x5c, 0xba, 0xf4, 0x63, 0x2a, 0x74, 0x80, 0x0b, 0xc9, 0xaa, 0x47, 0xf2, 0xc9, 0xb1, 0xf0, 0xfe, - 0x3f, 0x23, 0xf2, 0xc9, 0x22, 0x1d, 0x32, 0xe6, 0x48, 0x07, 0x2e, 0xa3, 0x0c, 0x54, 0x00, 0x58, - 0x4f, 0xe1, 0x8a, 0x86, 0x34, 0x92, 0xfa, 0x2f, 0x21, 0x27, 0x0d, 0x0c, 0xdd, 0xc3, 0xa1, 0xa1, - 0xa5, 0xf3, 0x26, 0x6d, 0x0d, 0x09, 0x62, 0xfd, 0x2a, 0x03, 0x8b, 0x6c, 0x77, 0x49, 0x8e, 0xfb, - 0xfc, 0xb3, 0xff, 0xa7, 0xe2, 0x36, 0xbb, 0x9f, 0xe2, 0x36, 0xa3, 0x20, 0xaa, 0xdb, 0x4c, 0x75, - 0x96, 0x3d, 0x1c, 0xcd, 0x65, 0x0b, 0x23, 0xd6, 0x01, 0x14, 0x93, 0x23, 0x7c, 0x03, 0x73, 0xb2, - 0x01, 0x8b, 0xca, 0x42, 0x7f, 0x0d, 0x89, 0xd9, 0x84, 0xa5, 0xc8, 0xcc, 0xd3, 0xe6, 0xf8, 0x82, - 0xf3, 0xc0, 0x65, 0x2f, 0xa2, 0xfd, 0x0d, 0xca, 0x5e, 0xd4, 0xf0, 0x8d, 0xc9, 0xde, 0x16, 0xcc, - 0x31, 0xc4, 0xfa, 0x3a, 0x5d, 0x51, 0xd7, 0x69, 0x6a, 0xfc, 0x4e, 0x72, 0xe9, 0x3e, 0xa6, 0x4b, - 0x57, 0x34, 0x89, 0x28, 0xfc, 0x10, 0xc6, 0x79, 0x88, 0x22, 0xa3, 0x2f, 0x05, 0x19, 0xd5, 0xe1, - 0x2c, 0x2e, 0xd1, 0xe6, 0x8d, 0xad, 0x22, 0x1d, 0x32, 0x39, 0x37, 0x71, 0x07, 0xbc, 0x3c, 0xc5, - 0x7e, 0x43, 0x94, 0x65, 0xac, 0xe6, 0x35, 0xf7, 0x9f, 0x27, 0x50, 0x64, 0xfb, 0x8f, 0x82, 0xf5, - 0xb5, 0x76, 0xa0, 0x4f, 0xa0, 0xc8, 0xe4, 0x29, 0x05, 0xe1, 0xe0, 0x6d, 0x65, 0x59, 0x48, 0x62, - 0xa5, 0xdd, 0x4e, 0x1b, 0xfd, 0xdf, 0xc8, 0xc0, 0xd5, 0x0d, 0x1c, 0xea, 0x51, 0x5c, 0x7f, 0x26, - 0x56, 0xc0, 0xf7, 0x50, 0x4a, 0x23, 0x84, 0x4f, 0xc5, 0x57, 0xf1, 0xa9, 0x30, 0x86, 0xac, 0xa5, - 0x4f, 0xc9, 0x77, 0x70, 0x8d, 0x4d, 0x89, 0xde, 0x5e, 0x0c, 0xf4, 0xf3, 0xd8, 0xac, 0x18, 0xb1, - 0xa7, 0xcd, 0xce, 0xdf, 0xce, 0xc0, 0x35, 0xc6, 0xe4, 0x74, 0xe4, 0x7f, 0xda, 0x76, 0xe2, 0x0e, - 0x94, 0xe5, 0x9c, 0xbf, 0x81, 0x89, 0xb5, 0xfe, 0x65, 0x06, 0x90, 0xc0, 0x53, 0xab, 0xdb, 0x02, - 0xc7, 0x55, 0x18, 0xa9, 0xd5, 0x6d, 0x7e, 0x23, 0x4e, 0xf7, 0xff, 0x66, 0xe0, 0xdb, 0xa4, 0x2c, - 0xbe, 0x19, 0x64, 0xcf, 0xb3, 0x19, 0x6c, 0x01, 0xaa, 0xbb, 0x47, 0x9d, 0xa7, 0x6e, 0x78, 0x2c, - 0x3b, 0xab, 0x70, 0xef, 0x05, 0x0d, 0x16, 0x0c, 0xdc, 0xa3, 0x4e, 0x83, 0x5e, 0x49, 0xc8, 0x80, - 0xc4, 0xa6, 0x63, 0xa7, 0x00, 0x59, 0x3f, 0x83, 0x39, 0x8d, 0x5e, 0x2e, 0x43, 0x4b, 0x30, 0x5a, - 0xc3, 0x7e, 0xc8, 0x29, 0xa6, 0x5c, 0x6b, 0x62, 0x3f, 0xb4, 0x69, 0x29, 0xba, 0x0d, 0x13, 0xb5, - 0x0a, 0xf5, 0xa4, 0x52, 0x8b, 0x67, 0x8a, 0x29, 0xb9, 0xa6, 0xd3, 0xa0, 0x51, 0xf2, 0xb6, 0xa8, - 0xb4, 0xfe, 0x5d, 0x56, 0xc1, 0x4e, 0xc0, 0x87, 0xb3, 0xe3, 0x7d, 0x72, 0x68, 0x27, 0xfc, 0x57, - 0xb8, 0x31, 0x4b, 0x36, 0x53, 0xee, 0x85, 0x62, 0xfb, 0x80, 0xad, 0x34, 0x3a, 0xa7, 0x17, 0x58, - 0xdc, 0x3a, 0x32, 0x20, 0xe1, 0x21, 0x95, 0xb7, 0x8e, 0x1c, 0x75, 0x60, 0xab, 0x8d, 0xd0, 0xcf, - 0x61, 0x9a, 0xd3, 0xcc, 0x09, 0x1a, 0xa3, 0xd7, 0x1a, 0x6f, 0xf1, 0xa3, 0x72, 0xca, 0xd8, 0xee, - 0xca, 0xf6, 0x3c, 0x7e, 0x59, 0x7c, 0xb2, 0x69, 0xd4, 0xd1, 0x59, 0xb7, 0xa5, 0x43, 0x1f, 0xfb, - 0xe8, 0x32, 0x4c, 0xee, 0xef, 0xd4, 0x77, 0xd7, 0x6b, 0x5b, 0x0f, 0xb6, 0xd6, 0xd7, 0x0a, 0x97, - 0x50, 0x0e, 0x46, 0xf7, 0x6a, 0x7b, 0xdb, 0x85, 0x8c, 0xf5, 0x3d, 0xcc, 0xeb, 0x7d, 0xbd, 0xd1, - 0x69, 0x7a, 0x8b, 0x5e, 0xab, 0x29, 0x17, 0xd2, 0x08, 0xa9, 0x6e, 0x16, 0xbe, 0x54, 0x3e, 0x86, - 0x02, 0x6f, 0x15, 0xa9, 0x9a, 0x5b, 0xc2, 0xf0, 0x65, 0x8a, 0x46, 0x0f, 0xe0, 0x16, 0x3e, 0xe7, - 0x9f, 0x08, 0x47, 0xce, 0xb0, 0x1e, 0xfe, 0x7e, 0x06, 0x8a, 0x8f, 0x1f, 0x54, 0x2a, 0xbd, 0xf0, - 0x18, 0x77, 0x42, 0x72, 0x64, 0xc3, 0xb5, 0x63, 0xa7, 0xdd, 0xc6, 0x9d, 0x23, 0x8c, 0xee, 0xc0, - 0xe8, 0xde, 0x93, 0xbd, 0x5d, 0xee, 0x2f, 0x99, 0xe7, 0x33, 0x40, 0x8a, 0x64, 0x1b, 0x9b, 0xb6, - 0x40, 0x8f, 0x60, 0xf6, 0x29, 0x7f, 0x32, 0x21, 0xab, 0xb8, 0xa7, 0xe4, 0xfa, 0x5d, 0xf9, 0x98, - 0xa2, 0xe6, 0xe3, 0x16, 0xe9, 0xc5, 0x69, 0x57, 0x02, 0xa2, 0xec, 0x88, 0x9c, 0x24, 0xe1, 0x1e, - 0x8e, 0xe6, 0x32, 0x85, 0xac, 0xf5, 0x07, 0x19, 0x58, 0x8c, 0x51, 0xa6, 0x38, 0xcf, 0x55, 0xc2, - 0xe6, 0x14, 0xc2, 0x44, 0x93, 0xcd, 0x4b, 0x9c, 0xb2, 0x1a, 0x8d, 0xcf, 0xa5, 0x3d, 0x70, 0x82, - 0xde, 0x1e, 0x4c, 0x50, 0x84, 0x40, 0x02, 0xf2, 0xe8, 0x3a, 0x5a, 0x6e, 0x5d, 0x86, 0x69, 0x8d, - 0x03, 0x96, 0x05, 0x53, 0x6a, 0xcf, 0x84, 0xcd, 0x35, 0xaf, 0x25, 0xd9, 0x4c, 0xfe, 0xb6, 0xfe, - 0x6e, 0x06, 0xe6, 0x1f, 0x3f, 0xa8, 0xd8, 0xf8, 0xc8, 0x25, 0x72, 0x17, 0xb1, 0x78, 0x45, 0x1b, - 0xc9, 0x92, 0x36, 0x92, 0x58, 0x5b, 0x39, 0xa4, 0xcf, 0x12, 0x43, 0x5a, 0x4a, 0x1b, 0x12, 0xb5, - 0x41, 0x5d, 0xaf, 0xa3, 0x8d, 0x44, 0xf1, 0x0b, 0xfd, 0x83, 0x0c, 0xcc, 0x29, 0x34, 0x49, 0xfa, - 0xdf, 0xd7, 0x48, 0xba, 0x96, 0x42, 0x52, 0x82, 0xc9, 0xd5, 0x04, 0x45, 0x6f, 0x0d, 0xa2, 0x68, - 0x28, 0x8f, 0xff, 0x38, 0x03, 0x0b, 0xa9, 0x3c, 0x40, 0x57, 0xc8, 0x4e, 0xd8, 0xf4, 0x71, 0xc8, - 0xd9, 0xcb, 0xbf, 0x48, 0xf9, 0x56, 0x10, 0xf4, 0xf8, 0x7b, 0x96, 0xbc, 0xcd, 0xbf, 0xd0, 0x5b, - 0x30, 0xbd, 0x8b, 0x7d, 0xd7, 0x6b, 0xd5, 0x71, 0xd3, 0xeb, 0xb4, 0x98, 0xd7, 0x7d, 0xda, 0xd6, - 0x0b, 0xd1, 0x12, 0xe4, 0x2b, 0xed, 0x23, 0xcf, 0x77, 0xc3, 0x63, 0xe6, 0x9a, 0xcb, 0xdb, 0x51, - 0x01, 0xc1, 0xbd, 0xe6, 0x1e, 0xb9, 0x21, 0xbb, 0xbf, 0x9c, 0xb6, 0xf9, 0x17, 0x2a, 0xc2, 0x44, - 0xa5, 0xd9, 0xf4, 0x7a, 0x9d, 0x90, 0x7a, 0x99, 0xf3, 0xb6, 0xf8, 0x24, 0x10, 0xdf, 0xd8, 0x54, - 0x08, 0x68, 0xc4, 0x99, 0xcd, 0xbf, 0xac, 0x77, 0x61, 0x3e, 0x8d, 0x8f, 0xa9, 0x22, 0xf3, 0x97, - 0xb3, 0x30, 0x57, 0x69, 0xb5, 0x1e, 0x3f, 0xa8, 0xac, 0x61, 0xd5, 0xa0, 0xfa, 0x00, 0x46, 0xb7, - 0x3a, 0x6e, 0xc8, 0x2d, 0x81, 0x65, 0x3e, 0x3d, 0x29, 0x2d, 0x49, 0x2b, 0x32, 0x43, 0xe4, 0x7f, - 0x64, 0xc3, 0xdc, 0xfa, 0x8f, 0x6e, 0x10, 0xba, 0x9d, 0x23, 0x3a, 0xe7, 0xac, 0x63, 0x3e, 0xc7, - 0x02, 0x89, 0x61, 0xb9, 0x6d, 0x5e, 0xb2, 0xd3, 0x80, 0xd1, 0x1e, 0x5c, 0xd9, 0xc1, 0x2f, 0x52, - 0x44, 0x48, 0x06, 0x8c, 0x49, 0xb4, 0x29, 0x92, 0x63, 0x80, 0x55, 0x25, 0xf4, 0xaf, 0x67, 0x69, - 0x14, 0xa2, 0x32, 0x30, 0xde, 0xf3, 0x3e, 0xcc, 0x2b, 0x04, 0x45, 0x1a, 0x27, 0xc3, 0xe3, 0xd3, - 0x53, 0x87, 0xa3, 0x2e, 0xa4, 0x54, 0x70, 0xf4, 0x14, 0x16, 0x75, 0xa2, 0x22, 0xcc, 0xfa, 0x62, - 0x48, 0x6b, 0xb2, 0x79, 0xc9, 0x36, 0x41, 0xa3, 0x15, 0x18, 0xa9, 0x34, 0x4f, 0x38, 0x5b, 0xd2, - 0xa7, 0x8c, 0x8d, 0xac, 0xd2, 0x3c, 0xa1, 0x11, 0xbd, 0xcd, 0x13, 0x6d, 0x3d, 0xfc, 0xdb, 0x0c, - 0x2c, 0x1a, 0x66, 0x18, 0x2d, 0x03, 0xb0, 0x42, 0x45, 0xb7, 0x2b, 0x25, 0x64, 0x77, 0x67, 0x5f, - 0xf4, 0x52, 0x77, 0x84, 0x6e, 0xa6, 0x22, 0xf6, 0x2a, 0xaa, 0xb0, 0x95, 0x46, 0x68, 0x17, 0x26, - 0xd9, 0x17, 0x0b, 0x01, 0x1b, 0xa5, 0x30, 0x48, 0x83, 0x61, 0x31, 0x5f, 0x34, 0xae, 0xa3, 0x45, - 0x0b, 0x1a, 0xf1, 0xd0, 0x2f, 0x15, 0x05, 0x3f, 0x18, 0xd7, 0xe2, 0xa3, 0x90, 0x83, 0x46, 0x77, - 0x60, 0x9c, 0x15, 0xf2, 0x39, 0x14, 0x2f, 0x8b, 0xa2, 0xc6, 0xbc, 0xde, 0xfa, 0xc3, 0x8c, 0xf0, - 0x77, 0x25, 0x96, 0xc6, 0xc7, 0xda, 0xd2, 0xb8, 0x29, 0x09, 0x4e, 0x6b, 0xac, 0xad, 0x8e, 0x2a, - 0x4c, 0xbe, 0xca, 0xaa, 0x50, 0x81, 0x54, 0xb9, 0xfd, 0x27, 0x19, 0x71, 0x52, 0x4f, 0x8a, 0xee, - 0x3a, 0x4c, 0xbd, 0x9a, 0xc8, 0x6a, 0x60, 0xe8, 0x43, 0x26, 0x51, 0xd9, 0xc1, 0x23, 0x1d, 0x28, - 0x54, 0x5f, 0x08, 0x97, 0xde, 0xab, 0x88, 0x95, 0xb5, 0x94, 0x02, 0x2d, 0xbb, 0xb3, 0x7a, 0x89, - 0xda, 0xfa, 0xcb, 0x4e, 0x53, 0xcc, 0xd3, 0xed, 0x78, 0x20, 0x83, 0xf1, 0x96, 0x5a, 0xa5, 0x21, - 0x1b, 0x79, 0x79, 0xb8, 0xc8, 0x51, 0xf3, 0x4e, 0x25, 0xea, 0x2c, 0xb6, 0x4e, 0x5e, 0xa5, 0xd3, - 0x1a, 0x4c, 0xef, 0xe0, 0x17, 0x89, 0x7e, 0xe9, 0xdd, 0x5f, 0x07, 0xbf, 0x68, 0x28, 0x7d, 0x2b, - 0xd2, 0xae, 0xc3, 0xa0, 0x43, 0x98, 0x11, 0xba, 0xe0, 0xbc, 0x2a, 0x91, 0x45, 0xb5, 0x92, 0x1e, - 0x4e, 0x9f, 0x39, 0x0d, 0x9f, 0x97, 0xaa, 0xe1, 0xa8, 0x3a, 0x46, 0x6b, 0x17, 0x8a, 0xc9, 0xb1, - 0x72, 0x29, 0xfb, 0x60, 0xd8, 0x72, 0x62, 0x27, 0xc5, 0x96, 0xbe, 0xb4, 0x36, 0xa9, 0x53, 0x43, - 0xb6, 0x91, 0xc7, 0xb1, 0xfb, 0x71, 0xd6, 0xd1, 0x2b, 0x45, 0xc1, 0x3a, 0x35, 0x6c, 0x3e, 0x0a, - 0x65, 0x59, 0x88, 0x61, 0xe2, 0x84, 0xbd, 0x0b, 0x13, 0xbc, 0x48, 0x3e, 0x47, 0x88, 0x2f, 0x74, - 0xd1, 0xc0, 0xfa, 0x87, 0x19, 0xb8, 0xba, 0x1f, 0x60, 0xbf, 0xee, 0x76, 0x8e, 0xda, 0x78, 0x3f, - 0xd0, 0x03, 0x49, 0x7e, 0x5b, 0x5b, 0xec, 0x8b, 0x86, 0x00, 0xd5, 0xff, 0x5f, 0x4b, 0xfc, 0x1f, - 0x67, 0xa0, 0x94, 0x46, 0xdb, 0x9b, 0x5d, 0xe5, 0x77, 0xf9, 0x59, 0x83, 0x51, 0x5b, 0xe4, 0xe0, - 0xb2, 0x4f, 0x31, 0x58, 0x32, 0x48, 0xf2, 0xbf, 0xb6, 0xbc, 0xff, 0x4f, 0x06, 0xe6, 0xb7, 0x02, - 0x4a, 0xfe, 0x2f, 0x7a, 0xae, 0x8f, 0x5b, 0x82, 0x71, 0x77, 0xd3, 0xc2, 0x98, 0xe9, 0xbc, 0x6e, - 0x5e, 0x4a, 0x0b, 0x53, 0xfe, 0x40, 0x09, 0xd4, 0xcc, 0x0e, 0x8a, 0x4f, 0xd6, 0xde, 0xc4, 0xdc, - 0x86, 0xd1, 0x1d, 0x62, 0xd2, 0x8c, 0x70, 0xf9, 0x63, 0x10, 0xa4, 0x88, 0xc6, 0x54, 0x12, 0x92, - 0xc9, 0x07, 0x7a, 0x90, 0x88, 0xdc, 0x1c, 0x1d, 0x1e, 0x7f, 0x9b, 0x7c, 0xcc, 0x53, 0xcd, 0xc1, - 0xf8, 0x9e, 0xe3, 0x1f, 0xe1, 0xd0, 0xfa, 0x0e, 0x4a, 0xfc, 0xaa, 0x93, 0xf9, 0xfd, 0xe8, 0x85, - 0x68, 0x10, 0xf9, 0xa3, 0x06, 0x5d, 0x4f, 0x2e, 0x03, 0xd4, 0x43, 0xc7, 0x0f, 0xb7, 0x3a, 0x2d, - 0xfc, 0x23, 0x1d, 0xed, 0x98, 0xad, 0x94, 0x58, 0x1f, 0x42, 0x5e, 0x0e, 0x81, 0x9e, 0xa7, 0x14, - 0xab, 0x8d, 0x0e, 0x67, 0x5e, 0x8b, 0x25, 0x15, 0x01, 0xa4, 0xab, 0xb0, 0x10, 0x9b, 0x0a, 0x2e, - 0x27, 0x25, 0x32, 0x61, 0xac, 0x8c, 0x05, 0x53, 0xd8, 0xf2, 0xdb, 0xaa, 0xc1, 0x6c, 0x62, 0xa6, - 0x11, 0xa2, 0xf1, 0xc1, 0xec, 0xf0, 0x49, 0x94, 0x7a, 0xbd, 0xbe, 0x49, 0xca, 0xf6, 0xb6, 0xeb, - 0x2c, 0x56, 0x8a, 0x94, 0xed, 0x6d, 0xd7, 0xab, 0xe3, 0x4c, 0x72, 0xac, 0x7f, 0x96, 0xa5, 0x47, - 0xc8, 0x04, 0x0f, 0x62, 0xee, 0x15, 0xd5, 0xc5, 0x53, 0x85, 0x3c, 0x1d, 0xf1, 0x9a, 0x88, 0x29, - 0x1c, 0x7c, 0x3f, 0x92, 0xfb, 0x65, 0xbf, 0x7c, 0x89, 0x5e, 0x8a, 0x44, 0x60, 0xe8, 0x2b, 0x98, - 0x58, 0xef, 0xb4, 0x28, 0x86, 0x91, 0x0b, 0x60, 0x10, 0x40, 0x64, 0x1e, 0x28, 0xc9, 0xc4, 0x1c, - 0xe1, 0x7e, 0x03, 0x5b, 0x29, 0xa1, 0x6c, 0x76, 0x4f, 0x5d, 0x76, 0x0b, 0x3e, 0x66, 0xb3, 0x0f, - 0xc2, 0x4d, 0x4a, 0x82, 0x78, 0x22, 0x92, 0xb7, 0xe5, 0x37, 0xb2, 0x60, 0xec, 0x89, 0xdf, 0xe2, - 0x01, 0xfb, 0x33, 0x2b, 0x53, 0xe2, 0xcd, 0x3c, 0x29, 0xb3, 0x59, 0x95, 0xf5, 0xbf, 0xe8, 0xcd, - 0x54, 0x98, 0x2a, 0x37, 0x1a, 0x57, 0x32, 0xaf, 0xcd, 0x95, 0xec, 0xab, 0x70, 0x45, 0x8e, 0x7a, - 0xc4, 0x34, 0xea, 0x51, 0xd3, 0xa8, 0xc7, 0xcc, 0xa3, 0xde, 0x80, 0x71, 0x36, 0x54, 0x74, 0x0b, - 0xc6, 0xb6, 0x42, 0x7c, 0x1a, 0xb9, 0x16, 0xd4, 0xd8, 0x02, 0x9b, 0xd5, 0x91, 0x53, 0xcf, 0xb6, - 0x13, 0x84, 0x22, 0x3a, 0x2f, 0x6f, 0x8b, 0x4f, 0xeb, 0x4f, 0x32, 0x50, 0xd8, 0x76, 0x83, 0x90, - 0x2c, 0x84, 0x73, 0xca, 0x9a, 0x1c, 0x51, 0xd6, 0x34, 0xa2, 0x91, 0xd8, 0x88, 0x3e, 0x87, 0x71, - 0x1a, 0x34, 0x1a, 0xf0, 0xe7, 0x60, 0xb7, 0xf8, 0x90, 0xe2, 0x1d, 0xb3, 0xd0, 0xd2, 0x80, 0x3e, - 0xdb, 0xb2, 0x39, 0x48, 0xe9, 0x53, 0x98, 0x54, 0x8a, 0x2f, 0xf4, 0x9a, 0xeb, 0x5b, 0x98, 0x55, - 0xba, 0x90, 0x7e, 0x88, 0x21, 0x1e, 0x78, 0xe9, 0xe1, 0x25, 0x6c, 0xdb, 0xc1, 0x3f, 0xaa, 0x6c, - 0xe3, 0x9f, 0xd6, 0x0f, 0x34, 0xe6, 0x79, 0xdb, 0x6b, 0x9e, 0x28, 0xfe, 0xcf, 0x09, 0xa6, 0xcc, - 0xe2, 0xd7, 0x08, 0xa4, 0x15, 0xab, 0xb1, 0x45, 0x0b, 0x74, 0x03, 0x26, 0xb7, 0x3a, 0x0f, 0x3c, - 0xbf, 0x89, 0x9f, 0x74, 0xda, 0x0c, 0x7b, 0xce, 0x56, 0x8b, 0xb8, 0x1b, 0x89, 0xf7, 0x10, 0xb9, - 0x91, 0x68, 0x41, 0xcc, 0x8d, 0xc4, 0x5e, 0xa3, 0xda, 0xac, 0x8e, 0x7b, 0xa9, 0xc8, 0xdf, 0x83, - 0x7c, 0x48, 0xd2, 0xd9, 0x34, 0xac, 0xe1, 0x21, 0x5c, 0xb5, 0x71, 0xb7, 0xed, 0x10, 0x5b, 0xf1, - 0xd4, 0x63, 0xed, 0xe5, 0x98, 0x6f, 0xa4, 0x84, 0xe3, 0xe9, 0x2e, 0x58, 0x49, 0x72, 0x76, 0x00, - 0xc9, 0xa7, 0x70, 0x73, 0x03, 0x87, 0xa9, 0x4f, 0x4a, 0xa3, 0xc1, 0x6f, 0x42, 0x8e, 0x3f, 0x7b, - 0x10, 0xe3, 0x1f, 0xf6, 0x9a, 0x95, 0x5f, 0x29, 0x71, 0x3c, 0xf2, 0x2f, 0xeb, 0x6b, 0x28, 0x9b, - 0xba, 0x3b, 0x5f, 0xfc, 0x94, 0x0b, 0x37, 0xcc, 0x08, 0xa4, 0x35, 0x31, 0xc1, 0x3b, 0x94, 0xa7, - 0xfe, 0xc1, 0xd4, 0xca, 0x4b, 0x06, 0x6a, 0x4f, 0xf1, 0x3f, 0xac, 0xaa, 0x08, 0xd0, 0x78, 0x0d, - 0x72, 0x1b, 0xf4, 0x1a, 0x44, 0x47, 0x10, 0xf1, 0xb5, 0x02, 0x39, 0x51, 0x16, 0xbb, 0x07, 0x49, - 0xbc, 0xd6, 0xa5, 0x0c, 0x6d, 0x09, 0x04, 0x12, 0xcc, 0xfa, 0x41, 0x5c, 0x56, 0xe8, 0x10, 0xe7, - 0x0b, 0xed, 0x3d, 0xcf, 0xed, 0x84, 0xe5, 0xc1, 0x55, 0x1d, 0xb7, 0xea, 0x26, 0x2f, 0x28, 0x6e, - 0x72, 0xe6, 0x1d, 0x27, 0x72, 0x69, 0x6f, 0xaf, 0x77, 0x5a, 0x5d, 0xcf, 0xed, 0x84, 0x7c, 0xf1, - 0xaa, 0x45, 0x68, 0x59, 0x75, 0x86, 0x4f, 0x25, 0x63, 0xa1, 0xef, 0x43, 0x29, 0xad, 0x43, 0xc5, - 0xf7, 0x23, 0xfd, 0xc9, 0xcc, 0x8e, 0xb3, 0x8e, 0x61, 0x5e, 0xcb, 0x7f, 0x12, 0x25, 0x74, 0x88, - 0xf2, 0xbe, 0xe4, 0xab, 0x5f, 0xfc, 0xa6, 0x5f, 0xfe, 0xe4, 0x22, 0x01, 0xb7, 0x02, 0xe7, 0x9e, - 0x0c, 0xe7, 0xb6, 0x16, 0x61, 0xa4, 0x66, 0x6f, 0xd3, 0x61, 0xdb, 0xdb, 0x72, 0xd8, 0xf6, 0xb6, - 0xf5, 0x47, 0x59, 0x28, 0xd7, 0x8e, 0x9d, 0xce, 0x11, 0xbb, 0x24, 0x8e, 0xcc, 0x55, 0xe5, 0xd6, - 0xf9, 0xbc, 0x47, 0xaa, 0x15, 0x98, 0xdc, 0xc1, 0x2f, 0x44, 0x28, 0x3a, 0x0f, 0xea, 0xa6, 0xd7, - 0x00, 0xe4, 0xb8, 0xd3, 0xe5, 0xe5, 0xb6, 0xda, 0x08, 0xfd, 0x85, 0x57, 0x77, 0x2e, 0xb1, 0x2c, - 0x08, 0xd1, 0x49, 0x8a, 0xd5, 0xa6, 0x1d, 0xa9, 0x0c, 0x5d, 0x24, 0xcf, 0x80, 0xa3, 0x17, 0x3f, - 0x03, 0x5a, 0xff, 0x2a, 0x03, 0x37, 0xcc, 0x1c, 0xe4, 0x3d, 0xad, 0x69, 0x09, 0x29, 0x06, 0x5c, - 0x95, 0xd3, 0x73, 0xaf, 0x92, 0x90, 0x22, 0x9e, 0x84, 0xc2, 0xc6, 0x4d, 0xef, 0x39, 0xf6, 0x5f, - 0xc6, 0x9c, 0xf5, 0xa2, 0xb8, 0x46, 0xf6, 0x2d, 0x91, 0xce, 0x87, 0x15, 0x69, 0x6f, 0x50, 0x79, - 0x99, 0xf5, 0x1f, 0x32, 0x70, 0x8d, 0xee, 0xb5, 0xdc, 0x95, 0x29, 0x2a, 0x2e, 0x1e, 0xa2, 0xf1, - 0x21, 0x4c, 0xa9, 0x9d, 0xf3, 0x59, 0xa7, 0x2f, 0xd8, 0x05, 0x05, 0x8d, 0xa6, 0xd7, 0xc2, 0xb6, - 0xd6, 0x0c, 0x6d, 0xc1, 0x24, 0xff, 0x56, 0xfc, 0x55, 0x0b, 0x4a, 0x7a, 0x1b, 0x2a, 0x54, 0xcc, - 0xfd, 0x44, 0x45, 0x88, 0x23, 0x6b, 0xd0, 0x37, 0x0a, 0x2a, 0xac, 0xf5, 0xeb, 0x2c, 0x2c, 0x1d, - 0x60, 0xdf, 0x7d, 0xf6, 0xd2, 0x30, 0x98, 0x27, 0x30, 0x2f, 0x8a, 0xe8, 0x98, 0x75, 0x61, 0x66, - 0x6f, 0x09, 0x05, 0xa9, 0x01, 0x69, 0xd0, 0x90, 0xb2, 0x9d, 0x0a, 0x78, 0x81, 0xd7, 0xb5, 0x1f, - 0x40, 0x4e, 0xae, 0x87, 0x11, 0xca, 0x19, 0x3a, 0x37, 0x62, 0x2d, 0xe8, 0x89, 0x06, 0xe4, 0xa2, - 0xf8, 0x5d, 0xf3, 0x9d, 0x08, 0x3f, 0x36, 0x0d, 0x39, 0xd1, 0xb2, 0xa5, 0x41, 0x96, 0x85, 0xa3, - 0xd4, 0xa6, 0x2c, 0x8d, 0xcd, 0x4b, 0xb6, 0xa9, 0xa7, 0xea, 0x24, 0xe4, 0x2b, 0xf4, 0xc6, 0x86, - 0x9c, 0x52, 0xfe, 0x77, 0x16, 0x96, 0x45, 0xd4, 0xa6, 0x81, 0xcd, 0xdf, 0xc2, 0xa2, 0x28, 0xaa, - 0x74, 0xbb, 0xbe, 0xf7, 0x1c, 0xb7, 0x74, 0x4e, 0xb3, 0xf7, 0xbc, 0x82, 0xd3, 0x0e, 0x6f, 0x13, - 0x31, 0xdb, 0x04, 0xfe, 0x66, 0x7c, 0x35, 0x5f, 0xe9, 0xda, 0x89, 0xcd, 0x06, 0xf5, 0x6c, 0xaa, - 0xda, 0x49, 0xcf, 0xc4, 0xa4, 0x6a, 0xaa, 0x56, 0xc2, 0xd7, 0x33, 0xfa, 0xba, 0xbe, 0x1e, 0x72, - 0xbe, 0xd5, 0x71, 0x56, 0x67, 0x60, 0x6a, 0x07, 0xbf, 0x88, 0xf8, 0xfe, 0x7b, 0x19, 0x98, 0xd6, - 0x16, 0x37, 0x7a, 0x07, 0xc6, 0xe8, 0x1f, 0x74, 0xe7, 0xe5, 0x8f, 0x9a, 0xc8, 0x02, 0xd3, 0x1e, - 0x35, 0xb1, 0xa6, 0x5b, 0x30, 0xc1, 0x22, 0x94, 0x5a, 0xe7, 0x38, 0x88, 0xc8, 0x00, 0xb8, 0x26, - 0x03, 0x61, 0x67, 0x12, 0x0e, 0x6f, 0x3d, 0x82, 0x9b, 0x3c, 0xd8, 0x49, 0x9f, 0xfc, 0x9a, 0x7a, - 0x08, 0x38, 0xe7, 0x46, 0x61, 0x39, 0xb0, 0xbc, 0x81, 0xe3, 0xaa, 0x47, 0x0b, 0x10, 0xfc, 0x1a, - 0x2e, 0x6b, 0xe5, 0x12, 0x23, 0x7d, 0xf8, 0x20, 0x65, 0x48, 0xa2, 0x8e, 0xb7, 0xb6, 0x6e, 0xa4, - 0x75, 0xa1, 0x12, 0x6b, 0x61, 0xb8, 0x4c, 0x8f, 0xdb, 0xf2, 0xda, 0x2a, 0xb8, 0x80, 0xd6, 0xbb, - 0xa3, 0xac, 0x6b, 0xa6, 0xf1, 0xd8, 0x9b, 0x59, 0xb1, 0xc7, 0xc9, 0x5a, 0x6b, 0x1a, 0x26, 0x6b, - 0x5e, 0x27, 0xc4, 0x3f, 0xd2, 0x57, 0x2b, 0xd6, 0x0c, 0x4c, 0x89, 0xaa, 0x36, 0x0e, 0x02, 0xeb, - 0x1f, 0x8d, 0x80, 0xc5, 0x19, 0x9b, 0xe6, 0x2a, 0x12, 0xfc, 0x38, 0x4c, 0x10, 0xcb, 0x37, 0x91, - 0x2b, 0xaa, 0x43, 0x2c, 0xaa, 0x65, 0x92, 0x47, 0x5f, 0x19, 0x35, 0xa3, 0x52, 0x4d, 0xf2, 0x12, - 0xa3, 0xff, 0x99, 0x41, 0x4d, 0xb2, 0xc5, 0x46, 0xf3, 0xbc, 0x18, 0xd4, 0xa4, 0x86, 0x37, 0x5d, - 0x65, 0xda, 0x1a, 0x1b, 0xf8, 0xe6, 0x8e, 0x64, 0x74, 0xbd, 0xac, 0xe1, 0xb9, 0xd1, 0x58, 0x41, - 0x23, 0x91, 0xdb, 0x4c, 0x45, 0x82, 0xf6, 0x75, 0x5e, 0xf2, 0xf5, 0x28, 0xae, 0x89, 0xd5, 0x2a, - 0x86, 0xb5, 0xab, 0x94, 0xe8, 0xa9, 0xe2, 0xb4, 0xb6, 0x8a, 0xfb, 0xef, 0xef, 0x65, 0xe0, 0x1a, - 0x9b, 0x9d, 0x5d, 0xdf, 0x7d, 0xee, 0xb6, 0xf1, 0x11, 0xd6, 0xc4, 0xb4, 0x97, 0x7e, 0xdd, 0x96, - 0x39, 0x97, 0x8e, 0xa6, 0xd9, 0x35, 0x30, 0x07, 0x37, 0x79, 0x83, 0xd3, 0xf0, 0x5b, 0xfd, 0x0c, - 0x2c, 0x8b, 0xc7, 0x7f, 0xb1, 0x3b, 0xa8, 0x8b, 0xda, 0x6c, 0x55, 0xed, 0xda, 0x28, 0x6b, 0xb8, - 0x36, 0xd2, 0xdc, 0xf1, 0xe1, 0x90, 0x7b, 0xa4, 0x91, 0xd7, 0xbe, 0x47, 0xb2, 0x7e, 0x35, 0x02, - 0xb3, 0xbb, 0xce, 0x91, 0xdb, 0x21, 0xba, 0x47, 0x24, 0xbc, 0x41, 0x95, 0x44, 0xde, 0xb0, 0xc1, - 0x61, 0x52, 0x29, 0x89, 0xc1, 0x56, 0xd4, 0x14, 0x3e, 0x59, 0x53, 0x28, 0xbe, 0x9e, 0xa8, 0xe7, - 0x53, 0xcd, 0xc5, 0x99, 0x88, 0x94, 0xa3, 0xb1, 0x28, 0x1d, 0xaf, 0x15, 0xcb, 0xa5, 0x47, 0xdd, - 0x84, 0x4f, 0x60, 0x52, 0x09, 0x77, 0xe3, 0x02, 0x9a, 0xc0, 0x40, 0xd9, 0x72, 0xd2, 0x3b, 0xc4, - 0xa9, 0x79, 0x93, 0x54, 0x0c, 0x29, 0xd9, 0x92, 0xc6, 0xde, 0x70, 0xb6, 0xa4, 0xef, 0x18, 0xc9, - 0xc2, 0x61, 0x3c, 0xce, 0xf7, 0x0d, 0x86, 0x3e, 0xe1, 0x35, 0x3e, 0x58, 0x55, 0xa8, 0x4f, 0x4b, - 0xfd, 0xa6, 0x22, 0xab, 0x02, 0xe4, 0x44, 0x92, 0x49, 0xeb, 0x7f, 0x8e, 0xc3, 0xfc, 0xb6, 0x1b, - 0x84, 0x62, 0x76, 0x83, 0x48, 0xf5, 0x4f, 0x89, 0x32, 0xe5, 0x10, 0xc4, 0xad, 0x34, 0x56, 0xde, - 0x88, 0xe5, 0xbc, 0xd4, 0x00, 0xd0, 0x87, 0xaa, 0x2b, 0x2a, 0xab, 0x64, 0xc2, 0x48, 0xa6, 0x2b, - 0x54, 0x7d, 0x54, 0xef, 0x68, 0x5e, 0x37, 0xb6, 0xaf, 0xb6, 0x49, 0x81, 0xba, 0xaf, 0x32, 0xc7, - 0xd5, 0x6a, 0xdc, 0x15, 0xc7, 0x3a, 0x60, 0x4a, 0xf1, 0x04, 0x6b, 0x26, 0xb7, 0xf4, 0x68, 0xed, - 0x4b, 0x8f, 0xd6, 0x18, 0x3d, 0x32, 0xff, 0x44, 0xf1, 0x68, 0xc5, 0x99, 0xa0, 0x7a, 0xb5, 0xd8, - 0xdb, 0xeb, 0x36, 0x2d, 0x50, 0xdf, 0x5e, 0xb3, 0x26, 0x68, 0x0f, 0xe6, 0x76, 0x7d, 0xdc, 0xa2, - 0xaa, 0x65, 0xfd, 0xc7, 0xae, 0xcf, 0x8f, 0x18, 0xd4, 0x2f, 0xca, 0xd2, 0x82, 0x75, 0x45, 0x75, - 0x03, 0xcb, 0x7a, 0x55, 0xc3, 0xa4, 0x80, 0xa3, 0x75, 0x98, 0xa9, 0x63, 0xc7, 0x6f, 0x1e, 0x3f, - 0xc2, 0x2f, 0x89, 0x62, 0x0c, 0x8a, 0x13, 0x51, 0x2a, 0x95, 0x80, 0xd6, 0x90, 0x81, 0xd2, 0x2a, - 0xf5, 0xee, 0x4a, 0x07, 0x42, 0x3f, 0x85, 0xf1, 0xba, 0xe7, 0x87, 0xd5, 0x97, 0xb1, 0xfc, 0x95, - 0xac, 0xb0, 0x7a, 0x55, 0xa4, 0x93, 0x09, 0x3c, 0x3f, 0x6c, 0x1c, 0xaa, 0x7c, 0xe3, 0x70, 0xe8, - 0x01, 0xb1, 0xba, 0x88, 0x25, 0x18, 0x3a, 0xed, 0x1a, 0x8d, 0xc1, 0x60, 0xaf, 0xe7, 0xb8, 0x65, - 0x45, 0xcd, 0xc7, 0xd0, 0x69, 0x37, 0xe8, 0x3e, 0xaf, 0xdf, 0xa2, 0xa9, 0x50, 0xe8, 0x25, 0xcc, - 0xeb, 0x82, 0xce, 0x93, 0x4d, 0x81, 0x96, 0x09, 0x2e, 0xad, 0x49, 0xf5, 0x0e, 0xa7, 0xf2, 0x46, - 0x3c, 0xcb, 0x59, 0x22, 0xff, 0x54, 0x6a, 0x17, 0xe8, 0x31, 0xcd, 0xe6, 0xc3, 0x38, 0x53, 0x09, - 0x58, 0x50, 0x17, 0x7b, 0xb2, 0x77, 0xf3, 0xac, 0x5f, 0xbe, 0xde, 0xa3, 0x29, 0x0d, 0x29, 0x47, - 0x1d, 0x16, 0x6f, 0xae, 0x72, 0x34, 0x01, 0xfa, 0x3a, 0xce, 0xcd, 0x3f, 0xce, 0xc0, 0x42, 0x4c, - 0xdc, 0xf8, 0xf9, 0xf4, 0x09, 0xe4, 0x65, 0x21, 0x77, 0xe9, 0x14, 0xe5, 0x3e, 0x1a, 0xd3, 0xc3, - 0x4c, 0xd8, 0xc5, 0x5a, 0x54, 0x89, 0x8d, 0x70, 0xa0, 0xfb, 0x31, 0x3f, 0x28, 0x3b, 0xf7, 0x74, - 0xc8, 0xa6, 0xae, 0x2f, 0x10, 0xd1, 0x0c, 0x7d, 0x0a, 0xa0, 0xcc, 0x32, 0x5b, 0x84, 0x34, 0xe2, - 0x32, 0x7d, 0x82, 0x95, 0xc6, 0xd6, 0x1f, 0x4d, 0x88, 0x6d, 0x9a, 0x9f, 0x94, 0xf7, 0x7c, 0xa7, - 0x79, 0x12, 0x85, 0xbe, 0x7e, 0x98, 0x8c, 0x33, 0x3d, 0x8f, 0x46, 0xb8, 0xad, 0xbd, 0x90, 0x37, - 0x27, 0xdb, 0x8d, 0x92, 0x25, 0x8c, 0x9c, 0x23, 0x59, 0xc2, 0x3d, 0x98, 0xd8, 0xea, 0x3c, 0x77, - 0x89, 0x51, 0xce, 0x02, 0x25, 0xa9, 0x49, 0xeb, 0xb2, 0x22, 0x95, 0x31, 0xbc, 0x15, 0xfa, 0x14, - 0x72, 0x9b, 0x5e, 0x10, 0x76, 0x44, 0x90, 0x24, 0x5f, 0x85, 0x21, 0xf5, 0x0b, 0x37, 0x8e, 0x79, - 0x95, 0xaa, 0x73, 0x44, 0x73, 0xf4, 0x11, 0x4c, 0x54, 0x5a, 0x2d, 0xb2, 0xa8, 0xb9, 0x42, 0xa0, - 0x99, 0x3a, 0x39, 0xa4, 0xc3, 0x6a, 0xd4, 0x2e, 0x79, 0x63, 0xf4, 0x85, 0xee, 0xa4, 0x9d, 0x88, - 0x52, 0x89, 0xa4, 0x67, 0xad, 0xd5, 0x1d, 0xb8, 0xef, 0x88, 0xcb, 0xb1, 0x5c, 0x94, 0x9c, 0x85, - 0x26, 0x5a, 0xd1, 0x34, 0x29, 0xbd, 0x5b, 0xdb, 0x82, 0xfc, 0x56, 0xc7, 0x0d, 0x5d, 0x9a, 0x9e, - 0x22, 0xaf, 0xed, 0xc7, 0xbb, 0x8e, 0x1f, 0xba, 0x4d, 0xb7, 0xeb, 0x74, 0x42, 0x36, 0x5b, 0xae, - 0x68, 0xa8, 0xce, 0x96, 0x84, 0x56, 0x13, 0x59, 0xc1, 0x1b, 0x4b, 0x64, 0x95, 0x9a, 0x0b, 0x6a, - 0xf2, 0xd5, 0x73, 0x41, 0xad, 0xb2, 0xb9, 0xa4, 0x36, 0xf0, 0x54, 0x24, 0x88, 0xd4, 0x77, 0xa9, - 0x1b, 0xbb, 0xb6, 0x6c, 0x88, 0x6e, 0xd0, 0x74, 0x14, 0xd3, 0x51, 0xf8, 0xb2, 0x76, 0x19, 0x9f, - 0xdd, 0x5a, 0x43, 0x0d, 0x98, 0x22, 0xad, 0x77, 0xbd, 0xb6, 0xdb, 0x74, 0x71, 0x50, 0x9c, 0xd1, - 0x9c, 0xdd, 0xfa, 0xa2, 0xa0, 0x8d, 0x5e, 0xd6, 0x71, 0xc8, 0xf6, 0x54, 0xda, 0x75, 0x97, 0x03, - 0xaa, 0x7b, 0xaa, 0x8a, 0x10, 0xfd, 0x9c, 0xec, 0x07, 0x2a, 0x16, 0x9e, 0x66, 0x76, 0x31, 0xb5, - 0x8b, 0x83, 0xf7, 0xc5, 0x46, 0xc1, 0x9e, 0xa5, 0x84, 0xac, 0x58, 0xdf, 0x28, 0x54, 0x00, 0xcb, - 0x86, 0x62, 0x74, 0x23, 0x17, 0x5b, 0xbd, 0x1f, 0x25, 0x1f, 0xbd, 0xd0, 0x14, 0x8b, 0xd1, 0xa3, - 0x17, 0x55, 0x20, 0xa2, 0xe7, 0x2f, 0xfb, 0x70, 0xcd, 0xc6, 0xa7, 0xde, 0x73, 0xfc, 0x66, 0xd1, - 0xfe, 0x0c, 0xae, 0xea, 0x08, 0xf7, 0xbb, 0x2d, 0xfa, 0x88, 0x96, 0x5d, 0xfd, 0xa5, 0x26, 0x69, - 0xe1, 0x00, 0x2c, 0x49, 0x0b, 0x7b, 0xf9, 0x4f, 0xfe, 0x54, 0xd7, 0x03, 0xad, 0xb3, 0x3c, 0x58, - 0xd2, 0x91, 0x57, 0x5a, 0x2d, 0x65, 0x21, 0x10, 0x83, 0x52, 0xf9, 0x8c, 0x59, 0xb0, 0xea, 0x8a, - 0xa1, 0x9a, 0xb3, 0x1b, 0x15, 0xa8, 0x6b, 0x55, 0x69, 0x67, 0x61, 0x28, 0xc7, 0xd9, 0x43, 0x58, - 0xa6, 0xf6, 0x59, 0x85, 0x69, 0xe5, 0x53, 0x1e, 0x08, 0xa9, 0x2a, 0x51, 0x7a, 0xd0, 0x19, 0xa6, - 0x83, 0x58, 0x4d, 0x28, 0xa5, 0x31, 0x8d, 0x2e, 0xb3, 0x97, 0x68, 0x3d, 0x5a, 0xba, 0xc3, 0xaf, - 0x5c, 0x2f, 0x1b, 0x1f, 0xe9, 0xfd, 0x9d, 0x51, 0xb8, 0xc6, 0x27, 0xe3, 0x4d, 0xce, 0x38, 0xfa, - 0x01, 0x26, 0x95, 0x39, 0xe6, 0x4c, 0xbf, 0x21, 0xa2, 0x34, 0x4c, 0xb2, 0xc0, 0xf4, 0x65, 0x8f, - 0x16, 0x34, 0x62, 0xd3, 0x4d, 0x0c, 0x63, 0x55, 0x6c, 0xda, 0x30, 0xa3, 0x4f, 0x34, 0x3f, 0x6c, - 0xdc, 0x4a, 0xed, 0x44, 0x6f, 0x2a, 0xd2, 0x15, 0xb4, 0x1a, 0xa9, 0xd3, 0x4d, 0x73, 0xe2, 0xea, - 0x42, 0xf4, 0x23, 0xcc, 0x26, 0x66, 0x99, 0x9f, 0x4d, 0x6e, 0xa7, 0x76, 0x98, 0x68, 0xcd, 0x94, - 0x9f, 0x4f, 0x8b, 0x8d, 0xdd, 0x26, 0x3b, 0x41, 0x2d, 0x98, 0x52, 0x27, 0x9e, 0x1f, 0x5e, 0x6e, - 0x0e, 0x60, 0x25, 0x6b, 0xc8, 0x54, 0x15, 0xe7, 0x25, 0x9d, 0x7b, 0x3d, 0x8d, 0xbc, 0x86, 0xb5, - 0x9a, 0x83, 0x71, 0xf6, 0x4d, 0x54, 0xc0, 0xae, 0x8f, 0x03, 0xdc, 0x69, 0x62, 0x35, 0xe0, 0xe6, - 0x75, 0x55, 0xc0, 0xbf, 0xcf, 0x40, 0x31, 0x0d, 0x6f, 0x1d, 0x77, 0x5a, 0x68, 0x17, 0x0a, 0xf1, - 0x8e, 0xb8, 0x54, 0x5b, 0xc2, 0xa2, 0x32, 0x93, 0xb4, 0x79, 0xc9, 0x4e, 0x40, 0x93, 0x4d, 0x48, - 0x29, 0xbb, 0x60, 0x64, 0x53, 0x12, 0x54, 0x71, 0x70, 0xbc, 0xfb, 0x2e, 0xe4, 0xe5, 0xcf, 0x09, - 0xa0, 0x1c, 0x8c, 0x6e, 0xed, 0x6c, 0xed, 0xb1, 0xf4, 0x74, 0xbb, 0xfb, 0x7b, 0x85, 0x0c, 0x02, - 0x18, 0x5f, 0x5b, 0xdf, 0x5e, 0xdf, 0x5b, 0x2f, 0x64, 0xdf, 0x6d, 0xa8, 0xae, 0x02, 0x74, 0x0d, - 0x16, 0xd7, 0xd6, 0x0f, 0xb6, 0x6a, 0xeb, 0x8d, 0xbd, 0x3f, 0xb7, 0xbb, 0xde, 0xd0, 0x9f, 0x57, - 0xcc, 0x43, 0x41, 0xad, 0xdc, 0x7b, 0xb2, 0xb7, 0x5b, 0xc8, 0xa0, 0x22, 0xcc, 0xab, 0xa5, 0x4f, - 0xd7, 0xab, 0x95, 0xfd, 0xbd, 0xcd, 0x9d, 0xc2, 0x88, 0x35, 0x9a, 0xcb, 0x16, 0xb2, 0xef, 0xfe, - 0xa0, 0xf9, 0x11, 0xd0, 0x12, 0x14, 0x79, 0xf3, 0xfd, 0x7a, 0x65, 0xc3, 0xdc, 0x05, 0xab, 0x7d, - 0xfc, 0xa0, 0x52, 0xc8, 0xa0, 0xeb, 0x70, 0x55, 0x2b, 0xdd, 0xad, 0xd4, 0xeb, 0x4f, 0x9f, 0xd8, - 0x6b, 0xdb, 0xeb, 0xf5, 0x7a, 0x21, 0xfb, 0xee, 0x6d, 0x1e, 0x27, 0x81, 0x66, 0x00, 0xd6, 0xd6, - 0xeb, 0xb5, 0xf5, 0x9d, 0xb5, 0xad, 0x9d, 0x8d, 0xc2, 0x25, 0x34, 0x0d, 0xf9, 0x8a, 0xfc, 0xcc, - 0xac, 0xfc, 0xae, 0x03, 0x93, 0x84, 0x9f, 0xe2, 0xd8, 0xdd, 0x80, 0xc5, 0xc7, 0x8e, 0xdb, 0x09, - 0x1d, 0xb7, 0xc3, 0xa5, 0x40, 0xcc, 0x21, 0x2a, 0x0f, 0x98, 0x54, 0x22, 0x0f, 0xa5, 0x61, 0xd1, - 0x60, 0x77, 0x32, 0xf7, 0x33, 0xa8, 0x0e, 0xf3, 0x69, 0x06, 0x2c, 0xb2, 0xf4, 0xbc, 0x17, 0x69, - 0x6a, 0xad, 0x64, 0xda, 0x83, 0xd1, 0x63, 0x98, 0x4d, 0x6c, 0xaa, 0x92, 0x5e, 0xd3, 0x76, 0x3b, - 0x08, 0x5d, 0x91, 0xba, 0x54, 0x43, 0x37, 0xbe, 0xa5, 0x06, 0xe8, 0x4a, 0x42, 0x61, 0xaf, 0x93, - 0x45, 0x63, 0x44, 0x76, 0x3f, 0x83, 0x6c, 0x98, 0x4f, 0xdb, 0x9e, 0xe5, 0x90, 0x07, 0xec, 0xdd, - 0x25, 0x43, 0x77, 0x04, 0x67, 0xda, 0x06, 0x20, 0x71, 0x0e, 0xd8, 0x1d, 0x8c, 0x38, 0xbf, 0x20, - 0xa6, 0x4f, 0xa7, 0xf5, 0x08, 0xe3, 0x6e, 0xa5, 0xed, 0x3e, 0xc7, 0x01, 0x12, 0xb1, 0x8c, 0xb2, - 0xc8, 0x04, 0x7b, 0x27, 0x83, 0x7e, 0x0b, 0x26, 0x69, 0x06, 0x63, 0x1e, 0x7a, 0x33, 0xa5, 0x66, - 0x35, 0x2e, 0x89, 0x2f, 0x5a, 0x79, 0x3f, 0x83, 0xbe, 0x84, 0x89, 0x0d, 0x4c, 0x63, 0x4f, 0xd0, - 0xcd, 0xd8, 0x0f, 0x75, 0x6c, 0x75, 0xe4, 0xb9, 0x44, 0x10, 0x1c, 0xf7, 0x23, 0xa1, 0x1a, 0xe4, - 0x38, 0x78, 0x80, 0xac, 0x18, 0x7c, 0x90, 0x82, 0x60, 0x2e, 0x86, 0x80, 0x1c, 0x0d, 0x51, 0x0d, - 0xf2, 0x32, 0x00, 0x06, 0x2d, 0x1a, 0xa2, 0x6e, 0x4a, 0xc5, 0x64, 0x05, 0xf7, 0x4d, 0x8e, 0xfc, - 0xcd, 0x6c, 0x06, 0xdd, 0x03, 0x60, 0xef, 0x1c, 0xe9, 0x58, 0xe2, 0x84, 0x96, 0x12, 0x0c, 0x44, - 0x1b, 0x44, 0xb7, 0xb4, 0x71, 0x88, 0xcf, 0x3b, 0x78, 0xd3, 0x6c, 0x6d, 0xc3, 0x8c, 0x7c, 0x75, - 0x78, 0x7e, 0x4e, 0x98, 0xb0, 0x7d, 0x46, 0x56, 0x10, 0x7b, 0xf6, 0x2f, 0x23, 0x4e, 0x91, 0x29, - 0x06, 0x55, 0x4e, 0x27, 0x6b, 0xa6, 0xc0, 0xca, 0xf4, 0xd0, 0x12, 0x36, 0x9e, 0x30, 0x3a, 0x06, - 0x8b, 0xa1, 0xa4, 0xf6, 0xab, 0x47, 0x9f, 0xa2, 0x1b, 0x0a, 0x01, 0xa9, 0x41, 0xb3, 0xa5, 0x9b, - 0x03, 0x5a, 0xb0, 0x79, 0xa2, 0x5a, 0xe7, 0x21, 0x4c, 0x6b, 0xf1, 0x8a, 0x48, 0x3c, 0x7c, 0x48, - 0x0b, 0x28, 0x2d, 0x2d, 0xa5, 0x57, 0x72, 0x0f, 0xc2, 0x03, 0xaa, 0x6c, 0x62, 0xe9, 0x18, 0x4b, - 0x69, 0x69, 0x17, 0x99, 0x5b, 0xa4, 0x24, 0x52, 0xeb, 0xc4, 0x40, 0xd6, 0x61, 0x4e, 0x5e, 0x34, - 0x29, 0xbf, 0x71, 0x61, 0x48, 0xe0, 0x68, 0x9c, 0xb9, 0xaf, 0x61, 0x8e, 0xcb, 0x81, 0x86, 0xa6, - 0x20, 0x95, 0x0b, 0xcf, 0xf5, 0x67, 0x44, 0xf0, 0x10, 0x16, 0xea, 0xb1, 0xf1, 0x30, 0x5b, 0xed, - 0xaa, 0x8e, 0x42, 0x49, 0xdd, 0x68, 0xc4, 0xf5, 0x08, 0x50, 0xbd, 0x77, 0x78, 0xea, 0x4a, 0x74, - 0xcf, 0x5d, 0xfc, 0x02, 0x5d, 0x8f, 0x0d, 0x89, 0x14, 0xd2, 0x66, 0x54, 0x3b, 0x95, 0x0c, 0x23, - 0x46, 0x7b, 0x2c, 0x0f, 0x04, 0xcb, 0x69, 0xe5, 0x74, 0x9d, 0x43, 0xb7, 0xed, 0x86, 0xe4, 0x8c, - 0x76, 0x43, 0x03, 0x50, 0xab, 0xc4, 0x0c, 0x5e, 0x35, 0xb6, 0x40, 0x5f, 0xc1, 0xf4, 0x06, 0x0e, - 0xa3, 0xec, 0x94, 0x68, 0x31, 0x91, 0xcf, 0x92, 0xcf, 0x9b, 0x08, 0x39, 0xd0, 0x53, 0x62, 0x6e, - 0x41, 0x81, 0x29, 0x57, 0x05, 0xc5, 0xf5, 0x04, 0x0a, 0xde, 0xc4, 0xf1, 0x9d, 0xd3, 0xc0, 0xc8, - 0xad, 0x7b, 0x30, 0xba, 0xeb, 0x76, 0x8e, 0x90, 0xb8, 0x41, 0x50, 0xb2, 0xbb, 0x95, 0xe6, 0xb4, - 0x32, 0x2e, 0x7a, 0x87, 0x50, 0x66, 0x69, 0x19, 0x93, 0xa9, 0x10, 0x45, 0xee, 0xf9, 0xb7, 0x64, - 0x98, 0xf1, 0x80, 0xf4, 0x8d, 0x92, 0x3f, 0xf1, 0xfa, 0x83, 0x55, 0xb4, 0x4b, 0xb9, 0x9e, 0xec, - 0x00, 0xdd, 0x8a, 0xf6, 0x53, 0x63, 0x26, 0xc6, 0x12, 0x8a, 0x23, 0x3e, 0x58, 0x45, 0x32, 0x7d, - 0x44, 0x0a, 0xd2, 0xdb, 0xda, 0xb6, 0x7f, 0x31, 0xbc, 0x5f, 0x41, 0x5e, 0xa6, 0x21, 0x94, 0xfa, - 0x26, 0x9e, 0x3b, 0x51, 0x2a, 0xf0, 0x64, 0xc6, 0xc2, 0x2f, 0x58, 0xc6, 0x50, 0x1d, 0x3e, 0x9e, - 0xa9, 0xcf, 0x38, 0x79, 0x9f, 0xc2, 0xa4, 0x92, 0xa3, 0x4f, 0x2e, 0x96, 0x64, 0xde, 0xbe, 0x92, - 0xfe, 0x5b, 0x46, 0xf7, 0xc9, 0xa6, 0x31, 0xc1, 0x93, 0xc2, 0xa2, 0x85, 0x08, 0x4c, 0x49, 0x51, - 0x16, 0x03, 0x41, 0xab, 0x74, 0xbf, 0x63, 0x1d, 0x5d, 0xd1, 0x21, 0xcc, 0xbd, 0xac, 0x02, 0xb0, - 0x31, 0xd3, 0x8e, 0xf4, 0x6a, 0xe3, 0xa8, 0x56, 0xc9, 0x7e, 0xd6, 0xba, 0x20, 0xd0, 0x57, 0x62, - 0x4f, 0xa3, 0x40, 0x45, 0x8d, 0x93, 0xea, 0xa8, 0x4c, 0xf0, 0x5b, 0x50, 0xa8, 0x34, 0xa9, 0x96, - 0x95, 0x59, 0xd3, 0xd0, 0xb2, 0x5c, 0xc1, 0x7a, 0x85, 0xc0, 0xb5, 0x10, 0x4f, 0xc2, 0xb6, 0x8d, - 0x1d, 0x1a, 0x08, 0xb9, 0x28, 0xf7, 0xda, 0x58, 0x55, 0x3a, 0x84, 0x91, 0xa8, 0x75, 0x98, 0xaf, - 0x39, 0x9d, 0x26, 0x6e, 0xbf, 0x1e, 0x9a, 0xcf, 0xa8, 0xba, 0x51, 0x32, 0xca, 0x5d, 0x89, 0xc3, - 0x73, 0x6d, 0x33, 0x2b, 0xcf, 0x86, 0xb2, 0x69, 0x05, 0x2e, 0x33, 0x26, 0x46, 0x6c, 0x31, 0x41, - 0x9b, 0xba, 0xff, 0x18, 0x66, 0xd6, 0x89, 0x3a, 0xee, 0xb5, 0x5c, 0x16, 0x33, 0x8f, 0xf4, 0x20, - 0x68, 0x23, 0xe0, 0xa6, 0xc8, 0xf1, 0xa9, 0xa4, 0x5a, 0x93, 0x42, 0x9e, 0xcc, 0x66, 0x57, 0x9a, - 0x17, 0x68, 0xd5, 0xac, 0x6c, 0x74, 0xef, 0x3d, 0x12, 0xe9, 0x7c, 0x62, 0x09, 0xb4, 0x54, 0x85, - 0x62, 0x4c, 0xaf, 0x55, 0x7a, 0x6b, 0x70, 0x23, 0xd5, 0x16, 0xb3, 0x61, 0xd1, 0x90, 0x9c, 0x0c, - 0xbd, 0x2d, 0xcd, 0xe2, 0x41, 0xc9, 0xcb, 0x52, 0xcc, 0xb5, 0x6f, 0x95, 0x14, 0x35, 0x06, 0x9c, - 0x83, 0xb3, 0x96, 0x19, 0x19, 0x2c, 0xe3, 0x42, 0x53, 0xb3, 0x8b, 0xa1, 0x77, 0x74, 0xec, 0x03, - 0x32, 0x90, 0x19, 0x7b, 0x78, 0x42, 0x45, 0x2f, 0x4a, 0x6e, 0x25, 0x8d, 0x9e, 0xb4, 0x0c, 0x64, - 0xd2, 0xe8, 0x49, 0x4d, 0x0d, 0xc6, 0x18, 0xbc, 0x01, 0x97, 0x63, 0x79, 0xbe, 0xd0, 0xf5, 0x38, - 0x63, 0x87, 0x30, 0x94, 0x21, 0x7a, 0x2c, 0x04, 0x3b, 0x89, 0x28, 0x3d, 0xf3, 0x97, 0x69, 0x8c, - 0x0c, 0xdd, 0xbe, 0x34, 0x81, 0xd4, 0x5c, 0x5e, 0xe8, 0x66, 0x0a, 0x0b, 0xcf, 0xc7, 0x3a, 0x86, - 0xb6, 0x0e, 0x85, 0x78, 0x2a, 0x2c, 0xb4, 0x2c, 0xb9, 0x94, 0x9a, 0xef, 0xab, 0x54, 0x36, 0xd6, - 0xf3, 0x4d, 0xe7, 0x61, 0x34, 0x29, 0xec, 0x02, 0x32, 0x3e, 0x29, 0x6a, 0x1a, 0xa4, 0xc4, 0xa4, - 0xe8, 0x39, 0x89, 0x36, 0x68, 0x34, 0xbb, 0x92, 0xef, 0xc8, 0x78, 0x3a, 0xbd, 0x9e, 0x86, 0x27, - 0xba, 0x14, 0xab, 0x8b, 0x9c, 0xc3, 0x0a, 0x5d, 0xcb, 0xda, 0xbe, 0x99, 0x24, 0xad, 0x6c, 0xac, - 0x97, 0x23, 0x2d, 0xc4, 0xb3, 0x3b, 0x49, 0xa4, 0x86, 0xb4, 0x4f, 0x46, 0x51, 0x7e, 0x00, 0xf3, - 0xfa, 0x2c, 0x0e, 0x19, 0xaf, 0x09, 0xcf, 0x1e, 0x2c, 0xa4, 0x26, 0x8a, 0x92, 0xba, 0x68, 0x50, - 0x1a, 0xa9, 0x01, 0x16, 0xf4, 0xb4, 0x96, 0xdf, 0x09, 0x89, 0x5b, 0xd6, 0x58, 0x2a, 0xa9, 0xc4, - 0x9c, 0xa6, 0xe4, 0x99, 0x62, 0x73, 0xaa, 0xe4, 0x8a, 0x3a, 0xcf, 0x9c, 0xa6, 0xa5, 0x96, 0x92, - 0xec, 0x57, 0xe8, 0x12, 0x9b, 0x6a, 0xbc, 0xe2, 0x22, 0xec, 0x3f, 0x0f, 0x69, 0x26, 0x3c, 0x6b, - 0xd4, 0x66, 0x92, 0x3f, 0x10, 0x77, 0x55, 0x63, 0x93, 0xb6, 0x8e, 0x4a, 0xda, 0xe0, 0xf4, 0x25, - 0x54, 0x83, 0x29, 0x35, 0x55, 0x95, 0x91, 0x8a, 0x6b, 0x49, 0x1c, 0x81, 0x72, 0x8a, 0x9b, 0x91, - 0x5c, 0x60, 0xd4, 0x2c, 0xc5, 0x99, 0xa3, 0x11, 0x64, 0x1e, 0x12, 0x52, 0x59, 0x33, 0x84, 0x24, - 0xb3, 0xb1, 0x31, 0xc7, 0xcc, 0x2e, 0xfd, 0xf7, 0x03, 0x0d, 0x3f, 0x43, 0x68, 0x44, 0xb3, 0x4f, - 0x5f, 0xde, 0xa8, 0x79, 0xa7, 0x90, 0x22, 0x25, 0x29, 0xf9, 0xa8, 0x4a, 0xcb, 0xa6, 0x6a, 0x55, - 0xef, 0x7f, 0x03, 0xb3, 0x89, 0xfc, 0x5a, 0xd2, 0xbd, 0x66, 0xca, 0xbc, 0x35, 0x58, 0xb7, 0x6e, - 0x92, 0x01, 0xc7, 0x00, 0x0f, 0x56, 0x86, 0x23, 0x4d, 0xee, 0xd0, 0xdb, 0xe2, 0xb1, 0x4e, 0x1a, - 0x71, 0xa6, 0x2c, 0x5e, 0xc3, 0x15, 0x44, 0x2c, 0x7f, 0x57, 0x4c, 0x41, 0xa4, 0x67, 0xf7, 0x32, - 0x62, 0xfd, 0x39, 0xcd, 0xe7, 0x1d, 0xcb, 0x0d, 0x25, 0xbd, 0x1b, 0xc6, 0x7c, 0x60, 0xd2, 0xbb, - 0x61, 0x4e, 0xd4, 0xc5, 0xb8, 0xb9, 0x0d, 0xf3, 0x69, 0xd9, 0xb6, 0x14, 0x6f, 0xa0, 0x31, 0x15, - 0x57, 0x0a, 0x47, 0x6d, 0xb1, 0xda, 0x0d, 0xd8, 0x06, 0xe4, 0xde, 0x32, 0x72, 0xe0, 0x3b, 0x91, - 0x51, 0x2d, 0x99, 0x23, 0x4b, 0x9e, 0x01, 0x87, 0x24, 0xd1, 0x1a, 0x60, 0xaa, 0x5e, 0xae, 0xbb, - 0x47, 0x1d, 0x25, 0x05, 0x95, 0x34, 0x54, 0x93, 0x69, 0xb4, 0xa4, 0x66, 0x49, 0xcb, 0x58, 0xf5, - 0x04, 0xe6, 0xc5, 0xc6, 0xad, 0xa6, 0x4a, 0x42, 0x25, 0x73, 0xae, 0x26, 0xa9, 0x65, 0x52, 0x73, - 0x2b, 0xb1, 0x93, 0x1e, 0xfd, 0x01, 0x32, 0xe5, 0xa4, 0xa7, 0xe4, 0x30, 0x2a, 0xe9, 0xe9, 0x8e, - 0xd0, 0xe7, 0xf4, 0xa4, 0xc7, 0x12, 0x7e, 0x9a, 0x5d, 0xcd, 0x1a, 0xa6, 0x48, 0xa7, 0xad, 0x0a, - 0x67, 0x24, 0xed, 0x50, 0xc7, 0x3c, 0xfc, 0xf0, 0x46, 0x81, 0xf4, 0xc3, 0x9b, 0x4a, 0xa8, 0xd9, - 0xe5, 0x33, 0xa5, 0xbe, 0xda, 0x97, 0xbc, 0x4a, 0x49, 0xef, 0x21, 0x79, 0x95, 0x96, 0x34, 0x83, - 0x9e, 0x15, 0xf6, 0x84, 0x61, 0x18, 0xe1, 0xbb, 0x3e, 0x30, 0xeb, 0x45, 0x69, 0x79, 0x70, 0xaa, - 0x08, 0x7e, 0xe7, 0x50, 0x88, 0x27, 0x16, 0x40, 0x69, 0x49, 0x4b, 0x94, 0xec, 0x0a, 0xd2, 0xbc, - 0x31, 0x66, 0x24, 0xd8, 0x15, 0x46, 0xa7, 0x8e, 0xd7, 0x90, 0xba, 0x42, 0x45, 0x3d, 0xd8, 0x8c, - 0x88, 0x72, 0x0c, 0xa8, 0xa6, 0x61, 0x22, 0x87, 0x81, 0x6a, 0x46, 0xa4, 0xa4, 0x25, 0x70, 0x45, - 0x9c, 0x50, 0x7a, 0x22, 0xac, 0x77, 0x74, 0xe3, 0x6d, 0x40, 0x40, 0xf6, 0xd0, 0x5b, 0x1d, 0xf4, - 0x3b, 0x22, 0xff, 0x69, 0x32, 0x4d, 0xcc, 0xdb, 0x31, 0xef, 0x4e, 0x7a, 0x08, 0x6f, 0x69, 0x50, - 0x16, 0x1a, 0xf4, 0x98, 0xbe, 0xf5, 0x7c, 0xb2, 0xb5, 0x56, 0xe3, 0x3f, 0x33, 0xec, 0xf9, 0x09, - 0xb7, 0xb9, 0xf2, 0x53, 0x39, 0x11, 0x93, 0x59, 0x13, 0x0d, 0xf0, 0x60, 0x15, 0xd5, 0xa9, 0xf7, - 0x56, 0x2b, 0x4d, 0xf1, 0x9c, 0xa7, 0x20, 0x2c, 0xa5, 0x23, 0xa4, 0x57, 0x09, 0xeb, 0x62, 0x37, - 0xd3, 0xc9, 0x34, 0xd0, 0x30, 0xc8, 0x0a, 0x60, 0x62, 0x93, 0x8e, 0x46, 0x50, 0x37, 0x4c, 0x8e, - 0x18, 0xc7, 0xea, 0x95, 0xc7, 0xdb, 0xaf, 0xc4, 0x31, 0x0d, 0xf0, 0x60, 0x85, 0x73, 0x4c, 0x2b, - 0xbd, 0x18, 0xc7, 0x62, 0x08, 0x75, 0x8e, 0xe9, 0x64, 0x1a, 0x68, 0x18, 0xce, 0xb1, 0x74, 0x34, - 0xe7, 0xe5, 0xd8, 0x37, 0x74, 0x7f, 0xde, 0xa0, 0x2f, 0x0f, 0x2f, 0xc4, 0xb3, 0xa2, 0xb0, 0x60, - 0x75, 0xd0, 0x83, 0x55, 0xf4, 0x94, 0xa6, 0x66, 0x8d, 0x95, 0x9f, 0x8f, 0x6f, 0x4b, 0x26, 0xa4, - 0x94, 0x73, 0x5b, 0xb0, 0xc0, 0x38, 0x17, 0x27, 0xd7, 0x48, 0x8b, 0x71, 0xd8, 0x1b, 0xc2, 0xd8, - 0x89, 0xa3, 0xba, 0x28, 0xff, 0xd6, 0xa8, 0x88, 0xec, 0xf9, 0xc4, 0x3e, 0x6d, 0x25, 0x8d, 0x57, - 0x1d, 0x89, 0xf0, 0xb7, 0xeb, 0xcd, 0x0f, 0x56, 0xd0, 0x16, 0x9d, 0x05, 0xbd, 0x78, 0x90, 0x75, - 0x9f, 0x8e, 0x86, 0x32, 0x69, 0x53, 0x18, 0x44, 0x31, 0x9a, 0x4c, 0x7d, 0x9b, 0x89, 0x92, 0x47, - 0x9f, 0x73, 0x8e, 0xce, 0xc4, 0x22, 0xb6, 0xb1, 0xb3, 0x93, 0xc6, 0x30, 0xce, 0xc4, 0x7f, 0xa2, - 0x1f, 0xfd, 0x14, 0xf2, 0x02, 0x78, 0x38, 0x43, 0xe2, 0xd0, 0x94, 0x21, 0x5f, 0xc1, 0x24, 0x67, - 0x08, 0xa5, 0xc0, 0xd4, 0x93, 0x91, 0xfc, 0x2f, 0x61, 0x92, 0xb3, 0x61, 0xe0, 0x08, 0xcc, 0x97, - 0x95, 0x0b, 0x1b, 0x38, 0x4c, 0xf9, 0x09, 0xe9, 0x61, 0x83, 0x49, 0xfb, 0xc5, 0x6a, 0x74, 0x40, - 0xdf, 0x6c, 0x9b, 0x7e, 0xee, 0xdb, 0x84, 0x72, 0xe8, 0x8f, 0x8d, 0x13, 0xbc, 0x75, 0x33, 0xde, - 0xa1, 0xf0, 0xc6, 0xd1, 0xef, 0xc0, 0x12, 0xbd, 0xd9, 0xb8, 0x28, 0xc5, 0xe6, 0x43, 0xca, 0xd5, - 0x28, 0xa8, 0x21, 0xfe, 0x4b, 0xe3, 0x26, 0x64, 0xc3, 0x7e, 0xe4, 0x9c, 0x60, 0xad, 0x1b, 0xb1, - 0x0e, 0x83, 0x1e, 0xb0, 0x19, 0x5d, 0xa3, 0x63, 0xbf, 0x20, 0xb5, 0x83, 0x35, 0x4d, 0xec, 0xa7, - 0xcf, 0x87, 0xc5, 0x64, 0xc4, 0x7f, 0x5c, 0x9d, 0x60, 0xa9, 0x27, 0xb0, 0x98, 0x5a, 0x0f, 0xda, - 0x7c, 0xe8, 0xd0, 0xce, 0x49, 0x8d, 0xf9, 0xca, 0x25, 0x2f, 0x13, 0xda, 0x20, 0xc5, 0xb6, 0xd7, - 0xd2, 0xb5, 0x94, 0xa6, 0xd5, 0x08, 0x8a, 0x00, 0x55, 0xd8, 0x1e, 0xaf, 0x26, 0x76, 0x51, 0x7c, - 0x93, 0xa9, 0x19, 0x5f, 0xe2, 0x28, 0xd8, 0xd9, 0x84, 0xfe, 0x1e, 0xbb, 0x72, 0x36, 0x51, 0x52, - 0x5e, 0x94, 0xf4, 0x84, 0x14, 0x5c, 0x85, 0xd1, 0xac, 0x14, 0xea, 0x2d, 0x94, 0x9a, 0xf4, 0x42, - 0x3d, 0x9b, 0xe8, 0xe9, 0x39, 0xe4, 0xd9, 0x84, 0x76, 0xa8, 0x63, 0x1e, 0x7e, 0x36, 0xa1, 0x40, - 0xfa, 0xd9, 0x44, 0x25, 0xd4, 0xbc, 0xf0, 0x50, 0x32, 0x3f, 0x87, 0x3c, 0x77, 0x1b, 0x53, 0x77, - 0x0c, 0xb8, 0xa8, 0x9a, 0x4b, 0xc9, 0xc4, 0x24, 0x6d, 0x7e, 0x73, 0x96, 0xa6, 0x92, 0x7e, 0xeb, - 0x72, 0x3f, 0x83, 0x76, 0x68, 0x82, 0xf4, 0xb4, 0x9f, 0xa9, 0x37, 0xc9, 0xcf, 0xc0, 0xdf, 0xc5, - 0x27, 0xf8, 0xea, 0xe9, 0xf8, 0x06, 0xc2, 0x0d, 0x38, 0xd6, 0x5d, 0xe5, 0x71, 0x2a, 0x17, 0x20, - 0xd1, 0x2c, 0xe2, 0x13, 0xcc, 0xf3, 0x6c, 0x06, 0x2d, 0xa8, 0xbf, 0x0b, 0x4f, 0xb7, 0xac, 0xbb, - 0x30, 0xce, 0x80, 0x8c, 0xbb, 0x8d, 0xf6, 0x5b, 0xf2, 0xe8, 0x7d, 0x71, 0x1d, 0x4c, 0x40, 0xb4, - 0x2a, 0x23, 0x5d, 0xef, 0x43, 0x9e, 0xb9, 0xdd, 0xce, 0x0f, 0xf2, 0xb9, 0xb8, 0x34, 0x1e, 0x44, - 0x98, 0x39, 0x56, 0x63, 0x5a, 0x75, 0x63, 0x5f, 0x9c, 0x91, 0x5f, 0x52, 0xd7, 0xa7, 0x70, 0x35, - 0x98, 0xe1, 0x17, 0x12, 0xbf, 0xfb, 0x4f, 0x59, 0xfa, 0x09, 0xf5, 0xbf, 0xca, 0x94, 0x66, 0x26, - 0xf2, 0x67, 0x13, 0xd0, 0xe8, 0x73, 0x98, 0x61, 0xcc, 0x95, 0xc0, 0xc9, 0x46, 0x03, 0x78, 0x36, - 0xc3, 0xd8, 0xfc, 0x2a, 0xc0, 0x3f, 0x15, 0x8e, 0xda, 0xa1, 0x64, 0x9f, 0xc7, 0x45, 0x3b, 0x9c, - 0x75, 0x26, 0x2c, 0xbf, 0x43, 0x37, 0xdd, 0xf4, 0x3c, 0x3c, 0x46, 0x64, 0x77, 0x14, 0x17, 0xf4, - 0xe0, 0x0c, 0x3e, 0x27, 0x34, 0xe6, 0x30, 0xb5, 0x91, 0x74, 0x90, 0x0d, 0x49, 0xcc, 0x53, 0xfa, - 0xc9, 0xd0, 0x76, 0xd2, 0xcf, 0xc5, 0xb3, 0xf3, 0xa7, 0xf7, 0x37, 0x24, 0x1b, 0x4f, 0x8a, 0xcb, - 0xd0, 0x90, 0xe4, 0x46, 0x20, 0xd4, 0x2f, 0x33, 0x07, 0x8e, 0xc1, 0x7c, 0x44, 0x8b, 0x92, 0xec, - 0x5f, 0x70, 0x12, 0xcc, 0x66, 0x14, 0x4a, 0xa6, 0xfe, 0x41, 0x83, 0x5e, 0xc8, 0xa9, 0x0e, 0x59, - 0x53, 0xca, 0xa0, 0x0d, 0x11, 0xe0, 0x1a, 0x7b, 0x6e, 0x6a, 0x7a, 0xb8, 0x3a, 0xe0, 0x74, 0xc6, - 0x43, 0x3c, 0xdf, 0x08, 0xa2, 0xe4, 0x6c, 0x5f, 0x1c, 0x91, 0x74, 0x0c, 0xc7, 0x10, 0x59, 0x03, - 0xa6, 0x77, 0xb8, 0xd3, 0xab, 0x68, 0x98, 0xd7, 0x8b, 0x4f, 0xa8, 0x13, 0x05, 0x13, 0x26, 0xf3, - 0x13, 0xc9, 0x6d, 0xdf, 0x98, 0x2b, 0x49, 0xce, 0xee, 0x80, 0xe4, 0x46, 0xb5, 0xe8, 0xe7, 0x91, - 0xb4, 0x84, 0x46, 0x35, 0x7b, 0x5b, 0xba, 0xeb, 0xd2, 0x32, 0x1d, 0x95, 0x40, 0x54, 0xda, 0xdb, - 0x64, 0xad, 0x9b, 0xf2, 0xe8, 0x44, 0x01, 0x51, 0x83, 0x53, 0x15, 0xc9, 0xb5, 0x3e, 0x34, 0x21, - 0xcf, 0x0e, 0xcc, 0xa7, 0xe5, 0xbf, 0x91, 0x93, 0x36, 0x20, 0x39, 0x4e, 0x6a, 0xd4, 0xd5, 0x2e, - 0x2c, 0xa4, 0xe6, 0xa0, 0x91, 0x37, 0x24, 0x83, 0x32, 0xd4, 0xa4, 0x62, 0xfc, 0x16, 0x16, 0x0d, - 0x09, 0x57, 0x22, 0x07, 0xe2, 0xc0, 0x84, 0x2c, 0x46, 0x81, 0xf8, 0x1e, 0x4a, 0xe6, 0x5c, 0x1e, - 0xe8, 0x8e, 0xee, 0x04, 0x35, 0x67, 0xd0, 0x28, 0xa5, 0x26, 0x1f, 0x42, 0x7b, 0x34, 0xb9, 0x62, - 0x5a, 0x72, 0x0f, 0x49, 0xf7, 0xe0, 0xe4, 0x1f, 0x86, 0x68, 0xb9, 0x45, 0x43, 0x3e, 0x8f, 0x01, - 0x58, 0xcf, 0x41, 0xed, 0x8e, 0xd0, 0x4b, 0x7a, 0x82, 0x87, 0x58, 0xe0, 0x7d, 0x6a, 0xf6, 0x87, - 0x54, 0x3a, 0x1f, 0xc2, 0xb4, 0xf6, 0xc2, 0x56, 0x8a, 0x7f, 0xda, 0x33, 0x6f, 0xe9, 0xad, 0x4e, - 0x7d, 0x94, 0x5b, 0x2d, 0xfc, 0xf2, 0xbf, 0x2f, 0x67, 0x7e, 0xf9, 0xeb, 0xe5, 0xcc, 0x7f, 0xf9, - 0xf5, 0x72, 0xe6, 0x57, 0xbf, 0x5e, 0xce, 0x1c, 0x8e, 0xd3, 0xe6, 0xab, 0xff, 0x2f, 0x00, 0x00, - 0xff, 0xff, 0x21, 0x6d, 0x66, 0x44, 0xa2, 0x93, 0x00, 0x00, + // 9695 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7d, 0x5b, 0x6c, 0x5c, 0xc9, + 0xb6, 0x50, 0xba, 0xfd, 0xea, 0x5e, 0x7e, 0xa4, 0x5d, 0xb6, 0xe3, 0x4e, 0xc7, 0x71, 0x27, 0x3b, + 0x33, 0x39, 0x99, 0xb9, 0x73, 0x93, 0x8c, 0x3d, 0xef, 0xe7, 0xe9, 0x6e, 0x3b, 0xb6, 0x13, 0xc7, + 0xf1, 0xec, 0xb6, 0x9d, 0x61, 0xce, 0xdc, 0xd3, 0xb3, 0xdd, 0x5d, 0xb1, 0x37, 0x6e, 0xf7, 0xee, + 0xb3, 0xf7, 0xee, 0x64, 0x22, 0x04, 0x02, 0x2e, 0x17, 0x10, 0x12, 0xe2, 0x22, 0x71, 0x05, 0x88, + 0x0f, 0xae, 0x04, 0x5f, 0x20, 0xf8, 0x40, 0x88, 0x2f, 0xa4, 0xfb, 0x83, 0xe0, 0x80, 0x84, 0xe0, + 0xe7, 0x0a, 0xe9, 0x7e, 0x34, 0x87, 0xf3, 0x85, 0xfc, 0x87, 0x10, 0x48, 0x9c, 0x2f, 0x54, 0xcf, + 0x5d, 0xb5, 0xf7, 0xae, 0x6e, 0x3b, 0x09, 0x97, 0x9f, 0xc4, 0xbb, 0xaa, 0xd6, 0xaa, 0x55, 0xab, + 0x56, 0xad, 0x5a, 0xb5, 0x6a, 0xd5, 0x6a, 0x98, 0x75, 0x7a, 0xe1, 0x71, 0x80, 0xfd, 0xe7, 0x6e, + 0x13, 0xdf, 0xed, 0xfa, 0x5e, 0xe8, 0xa1, 0x31, 0xfa, 0x5f, 0x69, 0xfe, 0xc8, 0x3b, 0xf2, 0xe8, + 0x9f, 0xf7, 0xc8, 0x5f, 0xac, 0xb2, 0x74, 0xed, 0xc8, 0xf3, 0x8e, 0xda, 0xf8, 0x1e, 0xfd, 0x3a, + 0xec, 0x3d, 0xbb, 0x87, 0x4f, 0xbb, 0xe1, 0x4b, 0x5e, 0x59, 0x8e, 0x57, 0x86, 0xee, 0x29, 0x0e, + 0x42, 0xe7, 0xb4, 0xcb, 0x1b, 0x4c, 0x36, 0xb1, 0x1f, 0x06, 0xfc, 0xe3, 0xe3, 0x23, 0x37, 0x3c, + 0xee, 0x1d, 0xde, 0x6d, 0x7a, 0xa7, 0xf7, 0x8e, 0x7c, 0xe7, 0xb9, 0x1b, 0x3a, 0xa1, 0xeb, 0x75, + 0x9c, 0xf6, 0xbd, 0x10, 0xb7, 0x71, 0xd7, 0xf3, 0xc3, 0x7b, 0x4e, 0xd7, 0xbd, 0x17, 0xbe, 0xec, + 0xe2, 0x80, 0xfd, 0xcb, 0x01, 0x6b, 0x17, 0x01, 0x7c, 0x81, 0x0f, 0xc9, 0x10, 0x3b, 0xf2, 0x8f, + 0x57, 0x42, 0xe2, 0x3b, 0xdd, 0x2e, 0xf6, 0xa3, 0x3f, 0x38, 0x92, 0xaf, 0x2f, 0x82, 0x04, 0x3f, + 0xc7, 0x9d, 0x50, 0xfc, 0xc7, 0x10, 0x58, 0xff, 0x74, 0x1e, 0xc6, 0xd6, 0x49, 0x01, 0xfa, 0x04, + 0x46, 0xf7, 0x5e, 0x76, 0x71, 0x31, 0x73, 0x23, 0x73, 0x67, 0x66, 0xa5, 0xc0, 0xea, 0xef, 0x3e, + 0xe9, 0x62, 0x9f, 0xa2, 0xac, 0xa2, 0xb3, 0x7e, 0x79, 0x86, 0x20, 0x7a, 0xcf, 0x3b, 0x75, 0x43, + 0xca, 0x75, 0x9b, 0x42, 0xa0, 0xa7, 0x30, 0x63, 0xe3, 0xc0, 0xeb, 0xf9, 0x4d, 0xbc, 0x89, 0x9d, + 0x16, 0xf6, 0x8b, 0xd9, 0x1b, 0x99, 0x3b, 0x93, 0x2b, 0x0b, 0x77, 0x19, 0xd3, 0xf4, 0xca, 0xea, + 0x95, 0xb3, 0x7e, 0x19, 0xf9, 0xbc, 0x2c, 0x42, 0xb6, 0x79, 0xc9, 0x8e, 0xa1, 0x41, 0xdf, 0xc3, + 0x74, 0x0d, 0xfb, 0x61, 0xa5, 0x17, 0x1e, 0x7b, 0xbe, 0x1b, 0xbe, 0x2c, 0x8e, 0x50, 0xbc, 0x57, + 0x38, 0x5e, 0xad, 0xee, 0x60, 0xa5, 0xba, 0x74, 0xd6, 0x2f, 0x17, 0xc9, 0x04, 0x37, 0x1c, 0x51, + 0xaa, 0xa1, 0xd7, 0x91, 0xa1, 0x6f, 0x61, 0xaa, 0x4e, 0xd8, 0xd5, 0xdc, 0xf3, 0x4e, 0x70, 0x27, + 0x28, 0x8e, 0x6a, 0x44, 0xab, 0x55, 0x07, 0x2b, 0xd5, 0x6b, 0x67, 0xfd, 0xf2, 0x62, 0x40, 0xcb, + 0x1a, 0x21, 0x2d, 0xd4, 0x50, 0x6b, 0x98, 0xd0, 0x0f, 0x30, 0xb3, 0xeb, 0x7b, 0xcf, 0xdd, 0xc0, + 0xf5, 0x3a, 0xb4, 0xa8, 0x38, 0x46, 0x71, 0x2f, 0x72, 0xdc, 0x7a, 0xe5, 0xc1, 0x4a, 0xf5, 0xfa, + 0x59, 0xbf, 0x7c, 0xb5, 0x2b, 0x4a, 0x59, 0x07, 0x3a, 0x67, 0x74, 0x10, 0xb4, 0x07, 0x93, 0xb5, + 0x76, 0x2f, 0x08, 0xb1, 0xbf, 0xe3, 0x9c, 0xe2, 0xe2, 0x38, 0x45, 0x3f, 0x2f, 0xf8, 0x12, 0xd5, + 0x1c, 0xac, 0x54, 0x4b, 0x67, 0xfd, 0xf2, 0x95, 0x26, 0x2b, 0x6a, 0x74, 0x9c, 0x53, 0x9d, 0xe5, + 0x2a, 0x1a, 0xf4, 0x31, 0x8c, 0xee, 0x07, 0xd8, 0x2f, 0xe6, 0x28, 0xba, 0x69, 0x8e, 0x8e, 0x14, + 0x1d, 0xac, 0xb0, 0xf9, 0xef, 0x05, 0xd8, 0xd7, 0xe0, 0x29, 0x00, 0x01, 0xb4, 0xbd, 0x36, 0x2e, + 0xe6, 0x35, 0x40, 0x52, 0x74, 0xf0, 0x21, 0x03, 0xf4, 0xbd, 0xb6, 0xde, 0x31, 0x05, 0x40, 0x5b, + 0x90, 0x27, 0x3d, 0x07, 0x5d, 0xa7, 0x89, 0x8b, 0x40, 0xa1, 0x0b, 0x1c, 0x5a, 0x96, 0x57, 0x17, + 0xcf, 0xfa, 0xe5, 0xb9, 0x8e, 0xf8, 0xd4, 0xb0, 0x44, 0xd0, 0xe8, 0x6b, 0x18, 0xaf, 0x63, 0xff, + 0x39, 0xf6, 0x8b, 0x93, 0x14, 0xcf, 0x65, 0x31, 0x91, 0xb4, 0xf0, 0x60, 0xa5, 0x3a, 0x7f, 0xd6, + 0x2f, 0x17, 0x02, 0xfa, 0xa5, 0xe1, 0xe0, 0x60, 0x44, 0xda, 0x6c, 0xfc, 0x1c, 0xfb, 0x01, 0xde, + 0xeb, 0x75, 0x3a, 0xb8, 0x5d, 0x9c, 0xd2, 0xa4, 0x4d, 0xab, 0x13, 0xd2, 0xe6, 0xb3, 0xc2, 0x46, + 0x48, 0x4b, 0x75, 0x69, 0xd3, 0x00, 0xd0, 0x31, 0x14, 0xd8, 0x5f, 0x35, 0xaf, 0xd3, 0xc1, 0x4d, + 0xb2, 0xa4, 0x8a, 0xd3, 0xb4, 0x83, 0xab, 0xbc, 0x83, 0x78, 0xf5, 0xc1, 0x4a, 0xb5, 0x7c, 0xd6, + 0x2f, 0x5f, 0x63, 0xb8, 0x1b, 0x4d, 0x59, 0xa1, 0x75, 0x93, 0xc0, 0x4a, 0xc6, 0x51, 0x69, 0x36, + 0x71, 0x10, 0xd8, 0xf8, 0x17, 0x3d, 0x1c, 0x84, 0xc5, 0x19, 0x6d, 0x1c, 0x5a, 0xdd, 0xc1, 0x2a, + 0x1b, 0x87, 0x43, 0x0b, 0x1b, 0x3e, 0x2b, 0xd5, 0xc7, 0xa1, 0x01, 0xa0, 0x5d, 0x80, 0x4a, 0xb7, + 0x5b, 0xc7, 0x01, 0x11, 0xc6, 0xe2, 0x65, 0x8a, 0x7a, 0x8e, 0xa3, 0x7e, 0x8a, 0x0f, 0x79, 0xc5, + 0xc1, 0x4a, 0xf5, 0xea, 0x59, 0xbf, 0xbc, 0xe0, 0x74, 0xbb, 0x8d, 0x80, 0x15, 0x69, 0x48, 0x15, + 0x1c, 0x8c, 0xef, 0xa7, 0x5e, 0x88, 0xb9, 0x28, 0x16, 0x0b, 0x31, 0xbe, 0x2b, 0x75, 0x82, 0x5e, + 0x9f, 0x16, 0x36, 0xb8, 0x58, 0xc7, 0xf9, 0xae, 0x00, 0x90, 0xb5, 0xb8, 0xe6, 0x84, 0xce, 0xa1, + 0x13, 0x60, 0x2e, 0x1e, 0xb3, 0xda, 0x5a, 0xd4, 0x2b, 0x0f, 0x56, 0xd9, 0x5a, 0x6c, 0xf1, 0xd2, + 0x46, 0x8a, 0xbc, 0xc4, 0xf0, 0x11, 0x8e, 0x44, 0x03, 0x2f, 0xa2, 0x21, 0x1c, 0x79, 0x81, 0x0f, + 0xd3, 0x39, 0x12, 0x35, 0x45, 0x9b, 0x90, 0x7b, 0x8a, 0x0f, 0x99, 0xe6, 0x98, 0xa3, 0xf8, 0x66, + 0x23, 0x7c, 0x4c, 0x67, 0xac, 0xb2, 0x55, 0x41, 0xb0, 0x25, 0xb5, 0x85, 0x84, 0x46, 0xbf, 0x97, + 0x81, 0x45, 0xb1, 0xc2, 0x71, 0xf8, 0xc2, 0xf3, 0x4f, 0xdc, 0xce, 0x51, 0xcd, 0xeb, 0x3c, 0x73, + 0x8f, 0x8a, 0xf3, 0x14, 0xf3, 0x8d, 0x98, 0xd2, 0x88, 0xb5, 0x3a, 0x58, 0xa9, 0xfe, 0xe4, 0xac, + 0x5f, 0xbe, 0x25, 0x15, 0x88, 0xac, 0x27, 0x02, 0xf9, 0xcc, 0x3d, 0xd2, 0x3a, 0x36, 0xf5, 0x85, + 0xfe, 0x52, 0x06, 0xae, 0xf0, 0xd1, 0xd9, 0xb8, 0xe9, 0xf9, 0xad, 0x88, 0x8c, 0x05, 0x4a, 0x46, + 0x59, 0xae, 0xd6, 0xb4, 0x46, 0x07, 0x2b, 0xd5, 0xdb, 0x67, 0xfd, 0xb2, 0xc5, 0x19, 0xd7, 0xf0, + 0x45, 0x75, 0x1a, 0x11, 0x86, 0x8e, 0x88, 0x24, 0x10, 0xe5, 0xbf, 0xeb, 0xe3, 0x67, 0xd8, 0xc7, + 0x9d, 0x26, 0x2e, 0x5e, 0xd1, 0x24, 0x41, 0xaf, 0x14, 0x5a, 0x99, 0x6c, 0x25, 0x8d, 0xae, 0x2c, + 0xd6, 0x25, 0x41, 0x07, 0x41, 0xbf, 0x00, 0xc4, 0x19, 0x50, 0xe9, 0xb5, 0xdc, 0x90, 0x0f, 0x70, + 0x91, 0xf6, 0x72, 0x4d, 0xe7, 0xb3, 0xd2, 0xe0, 0x60, 0xa5, 0x6a, 0x9d, 0xf5, 0xcb, 0xcb, 0x82, + 0xc5, 0x0e, 0xa9, 0x4a, 0x1b, 0x58, 0x0a, 0x72, 0xa2, 0x79, 0xb7, 0xbd, 0xe6, 0x49, 0xb1, 0xa8, + 0x69, 0x5e, 0x52, 0x24, 0x54, 0x76, 0xdb, 0x6b, 0x9e, 0xe8, 0x9a, 0x97, 0xd4, 0xa2, 0x10, 0xe6, + 0xf8, 0x2c, 0xd9, 0x38, 0x08, 0x7d, 0x97, 0xea, 0x8e, 0xa0, 0x78, 0x95, 0xe2, 0x59, 0x12, 0x3a, + 0x38, 0xd9, 0xe2, 0xe0, 0x03, 0x46, 0x2d, 0x17, 0x84, 0x86, 0xaf, 0xd4, 0x69, 0xdd, 0xa4, 0xa1, + 0x47, 0x7f, 0x1e, 0x16, 0x9e, 0xba, 0x9d, 0x96, 0xf7, 0x22, 0x58, 0xc3, 0xc1, 0x49, 0xe8, 0x75, + 0xeb, 0xcc, 0xf2, 0x2b, 0x96, 0x68, 0xbf, 0xcb, 0x42, 0xcc, 0xd3, 0xda, 0x1c, 0xac, 0x56, 0xdf, + 0x3e, 0xeb, 0x97, 0x6f, 0xbe, 0x60, 0x95, 0x8d, 0x16, 0xab, 0x6d, 0x70, 0xe3, 0x51, 0xeb, 0x3c, + 0xbd, 0x17, 0x22, 0x02, 0x7a, 0x45, 0xf1, 0x9a, 0x26, 0x02, 0x7a, 0xa5, 0x50, 0x06, 0xb1, 0x0e, + 0x75, 0x11, 0xd0, 0x41, 0xd0, 0x06, 0xe4, 0x84, 0x7a, 0x28, 0x2e, 0x69, 0x4b, 0x57, 0x14, 0x1f, + 0xac, 0x32, 0x0b, 0x48, 0xa8, 0x18, 0x7d, 0xe5, 0x8a, 0x56, 0x68, 0x1b, 0xf2, 0x54, 0x47, 0x52, + 0x95, 0x75, 0x9d, 0x62, 0x42, 0x42, 0x50, 0x45, 0xf9, 0xc1, 0x6a, 0xb5, 0x78, 0xd6, 0x2f, 0xcf, + 0x33, 0x2d, 0x9b, 0x50, 0x54, 0x11, 0x02, 0xb4, 0x0a, 0x23, 0x95, 0x6e, 0xb7, 0xb8, 0x4c, 0xf1, + 0x4c, 0x45, 0x78, 0x0e, 0x56, 0xab, 0xb3, 0x67, 0xfd, 0xf2, 0xb4, 0xd3, 0xd5, 0x87, 0x45, 0x5a, + 0x57, 0x01, 0x72, 0xc2, 0x20, 0x7b, 0x38, 0x9a, 0x9b, 0x28, 0xe4, 0xac, 0x4d, 0x18, 0x7b, 0xea, + 0x84, 0xcd, 0x63, 0xf4, 0x35, 0x8c, 0x3d, 0x72, 0x3b, 0xad, 0xa0, 0x98, 0xb9, 0x31, 0x42, 0xf7, + 0x6c, 0x66, 0x2d, 0xd2, 0x4a, 0x52, 0x51, 0x5d, 0xfc, 0x65, 0xbf, 0x7c, 0xe9, 0xac, 0x5f, 0xbe, + 0x7c, 0x42, 0x9a, 0x29, 0x26, 0x23, 0x83, 0xb3, 0xfe, 0x65, 0x16, 0xf2, 0xb2, 0x35, 0x5a, 0x82, + 0x51, 0xf2, 0x3f, 0xb5, 0x3d, 0xf3, 0xd5, 0xdc, 0x59, 0xbf, 0x3c, 0x4a, 0xe0, 0x6c, 0x5a, 0x8a, + 0x56, 0x60, 0x72, 0xdb, 0x73, 0x5a, 0x75, 0xdc, 0xf4, 0x71, 0x18, 0x50, 0xe3, 0x32, 0x57, 0x2d, + 0x9c, 0xf5, 0xcb, 0x53, 0x6d, 0xcf, 0x69, 0x35, 0x02, 0x56, 0x6e, 0xab, 0x8d, 0x08, 0x46, 0x6a, + 0x19, 0x8d, 0x44, 0x18, 0x89, 0x05, 0x61, 0xd3, 0x52, 0xf4, 0x10, 0xc6, 0x1f, 0xb8, 0x6d, 0xb2, + 0xd7, 0x8c, 0x52, 0xfa, 0x97, 0xe2, 0xf4, 0xdf, 0x65, 0xd5, 0xeb, 0x9d, 0xd0, 0x7f, 0xc9, 0x0c, + 0x87, 0x67, 0xb4, 0x40, 0x19, 0x08, 0xc7, 0x80, 0xee, 0xc3, 0x44, 0xbd, 0x77, 0x48, 0xc9, 0x1f, + 0xa3, 0x9d, 0xd1, 0xd9, 0x0d, 0x7a, 0x87, 0x0d, 0x32, 0x04, 0x05, 0x40, 0x34, 0x2b, 0x7d, 0x0a, + 0x93, 0x0a, 0x7a, 0x54, 0x80, 0x91, 0x13, 0xfc, 0x92, 0x8d, 0xdd, 0x26, 0x7f, 0xa2, 0x79, 0x18, + 0x7b, 0xee, 0xb4, 0x7b, 0x98, 0x0e, 0x35, 0x6f, 0xb3, 0x8f, 0xcf, 0xb2, 0x9f, 0x64, 0xac, 0xff, + 0x34, 0x0a, 0x85, 0x4d, 0x2f, 0x08, 0x89, 0x25, 0x2b, 0xb7, 0xe4, 0x5b, 0x30, 0x4e, 0xca, 0xb6, + 0xd6, 0x38, 0xff, 0x26, 0xcf, 0xfa, 0xe5, 0x89, 0x63, 0x2f, 0x08, 0x1b, 0x6e, 0xcb, 0xe6, 0x55, + 0xe8, 0x1d, 0xc8, 0xed, 0x78, 0x2d, 0x4c, 0x99, 0x42, 0xd1, 0x56, 0xa7, 0xcf, 0xfa, 0xe5, 0x7c, + 0xc7, 0x6b, 0x61, 0x6a, 0x15, 0xda, 0xb2, 0x1a, 0x1d, 0x70, 0x6b, 0x8e, 0xf1, 0xae, 0x4a, 0x78, + 0x47, 0xcc, 0xb7, 0xdf, 0xf4, 0xcb, 0x1f, 0x5d, 0xe0, 0xb8, 0x71, 0xb7, 0xfe, 0x32, 0x08, 0xf1, + 0x29, 0xc1, 0xc4, 0x8d, 0xbd, 0xa7, 0x30, 0x5f, 0x69, 0xb5, 0x5c, 0x06, 0xb1, 0xeb, 0xbb, 0x9d, + 0xa6, 0xdb, 0x75, 0xda, 0x01, 0x9d, 0x83, 0x7c, 0xf5, 0xd6, 0x59, 0xbf, 0x5c, 0x76, 0x64, 0x7d, + 0xa3, 0x2b, 0x1b, 0x28, 0x3c, 0x4c, 0x45, 0x80, 0x56, 0x21, 0xb7, 0xb6, 0x53, 0xa7, 0xa6, 0x60, + 0x71, 0x8c, 0x22, 0xa3, 0x9b, 0x63, 0xab, 0x13, 0xd0, 0xa1, 0xa9, 0x08, 0x64, 0x43, 0xf4, 0x11, + 0x4c, 0xed, 0xf6, 0x0e, 0xdb, 0x6e, 0x73, 0x6f, 0xbb, 0xfe, 0x08, 0xbf, 0xa4, 0x36, 0xf4, 0x14, + 0x53, 0x99, 0x5d, 0x5a, 0xde, 0x08, 0xdb, 0x41, 0xe3, 0x04, 0xbf, 0xb4, 0xb5, 0x76, 0x11, 0x5c, + 0xbd, 0xbe, 0x49, 0xe0, 0x26, 0x12, 0x70, 0x41, 0x70, 0xac, 0xc2, 0xb1, 0x76, 0xe8, 0x1e, 0x00, + 0xb3, 0x4c, 0x2a, 0xad, 0x16, 0x33, 0xb1, 0xf3, 0xd5, 0xcb, 0x67, 0xfd, 0xf2, 0x24, 0xb7, 0x65, + 0x9c, 0x56, 0xcb, 0xb7, 0x95, 0x26, 0xa8, 0x06, 0x39, 0xdb, 0x63, 0x0c, 0xe6, 0x86, 0xf5, 0x65, + 0x69, 0x58, 0xb3, 0x62, 0x7e, 0x94, 0xe2, 0x5f, 0xea, 0x28, 0x45, 0x0b, 0x54, 0x86, 0x89, 0x1d, + 0xaf, 0xe6, 0x34, 0x8f, 0x99, 0x79, 0x9d, 0xab, 0x8e, 0x9d, 0xf5, 0xcb, 0x99, 0xdf, 0xb6, 0x45, + 0xa9, 0xf5, 0x8f, 0x73, 0x50, 0x20, 0x36, 0xbc, 0x26, 0x51, 0xef, 0x41, 0x9e, 0xd1, 0xfe, 0x88, + 0x0b, 0xe6, 0x54, 0x75, 0xe6, 0xac, 0x5f, 0x06, 0x3e, 0x40, 0x32, 0xb8, 0xa8, 0x01, 0xba, 0x03, + 0x39, 0x82, 0xa1, 0x13, 0x89, 0xd6, 0xd4, 0x59, 0xbf, 0x9c, 0xeb, 0xf1, 0x32, 0x5b, 0xd6, 0xa2, + 0x3a, 0x4c, 0xac, 0xff, 0xd8, 0x75, 0x7d, 0x1c, 0xf0, 0xa3, 0x5c, 0xe9, 0x2e, 0x3b, 0xb1, 0xdf, + 0x15, 0x27, 0xf6, 0xbb, 0x7b, 0xe2, 0xc4, 0x5e, 0xbd, 0xce, 0x55, 0xc8, 0x2c, 0x66, 0x20, 0xd1, + 0xf8, 0x7e, 0xff, 0xbf, 0x96, 0x33, 0xb6, 0xc0, 0x84, 0xde, 0x83, 0xf1, 0x07, 0x9e, 0x7f, 0xea, + 0x84, 0xf4, 0x04, 0x97, 0xe7, 0xcb, 0x95, 0x96, 0x68, 0xcb, 0x95, 0x96, 0xa0, 0x07, 0x30, 0x63, + 0x7b, 0xbd, 0x10, 0xef, 0x79, 0xc2, 0xdc, 0x64, 0xab, 0x76, 0xf9, 0xac, 0x5f, 0x2e, 0xf9, 0xa4, + 0xa6, 0x11, 0x7a, 0x49, 0xc3, 0xd2, 0x8e, 0x41, 0xa1, 0x75, 0x98, 0xd1, 0x0c, 0xe3, 0xa0, 0x38, + 0x4e, 0x25, 0x8f, 0x19, 0x0d, 0x9a, 0x39, 0xad, 0xca, 0x5f, 0x0c, 0x08, 0xed, 0xc0, 0xec, 0xa3, + 0xde, 0x21, 0xf6, 0x3b, 0x38, 0xc4, 0x81, 0xa0, 0x68, 0x82, 0x52, 0x74, 0xe3, 0xac, 0x5f, 0x5e, + 0x3a, 0x91, 0x95, 0x29, 0x34, 0x25, 0x41, 0x11, 0x86, 0xcb, 0x9c, 0x50, 0xb9, 0x0d, 0xe5, 0xb8, + 0x39, 0xcd, 0x54, 0x5c, 0xac, 0xb6, 0x7a, 0x8b, 0x73, 0xf9, 0x9a, 0x1c, 0x7b, 0x72, 0x63, 0xb2, + 0xe3, 0x38, 0xc9, 0x8a, 0x93, 0xda, 0x24, 0x4f, 0xa9, 0x65, 0x87, 0x34, 0xa1, 0x4d, 0x54, 0x59, + 0x94, 0x7a, 0x65, 0x1b, 0xc6, 0xf6, 0x03, 0xe7, 0x88, 0x49, 0xe2, 0xcc, 0xca, 0x4d, 0x4e, 0x51, + 0x5c, 0xfa, 0xe8, 0xb9, 0x9e, 0x36, 0xac, 0xce, 0x91, 0x1d, 0xa4, 0x47, 0xfe, 0x54, 0x77, 0x10, + 0x5a, 0x87, 0xbe, 0x01, 0xe0, 0x54, 0x91, 0x9d, 0x6d, 0x92, 0xef, 0xb5, 0xda, 0x20, 0xc9, 0x26, + 0xb6, 0xcc, 0xc7, 0x77, 0x45, 0x8e, 0x4f, 0xdb, 0xeb, 0x6c, 0x05, 0x09, 0xfa, 0x1a, 0xa6, 0xa8, + 0xba, 0x12, 0x33, 0x3a, 0x45, 0x67, 0x94, 0x1e, 0xfd, 0x89, 0x02, 0x4c, 0x9b, 0x4f, 0x0d, 0x00, + 0xfd, 0x05, 0x58, 0xe0, 0xe8, 0x62, 0x66, 0xc6, 0x34, 0x37, 0xab, 0x34, 0xf2, 0xf4, 0x36, 0xd5, + 0x77, 0x39, 0xa5, 0x96, 0xa4, 0xd4, 0x68, 0x78, 0xd8, 0xe9, 0xdd, 0x58, 0xdf, 0x42, 0x5e, 0x32, + 0x0f, 0x4d, 0xc0, 0x48, 0xa5, 0xdd, 0x2e, 0x5c, 0x22, 0x7f, 0xd4, 0xeb, 0x9b, 0x85, 0x0c, 0x9a, + 0x01, 0x88, 0x24, 0xa6, 0x90, 0x45, 0x53, 0x91, 0xb1, 0x52, 0x18, 0xa1, 0xed, 0xbb, 0xdd, 0xc2, + 0x28, 0x42, 0x71, 0x2b, 0xa9, 0x30, 0x66, 0xfd, 0x97, 0x4c, 0x42, 0xb0, 0xc8, 0xbe, 0xcc, 0x0d, + 0x2b, 0x2a, 0x07, 0x6c, 0xf3, 0xa1, 0xfb, 0x32, 0x37, 0xc9, 0xd8, 0xc6, 0xa2, 0x36, 0x22, 0xba, + 0x62, 0x97, 0xf0, 0xa0, 0xe9, 0xb5, 0x55, 0x5d, 0xd1, 0xe5, 0x65, 0xb6, 0xac, 0x45, 0x2b, 0x8a, + 0x56, 0x19, 0x89, 0x36, 0x56, 0xa1, 0x55, 0x54, 0x09, 0x93, 0xfa, 0x65, 0x45, 0xb1, 0xbe, 0x46, + 0x23, 0x98, 0x14, 0x89, 0x96, 0xed, 0xac, 0x9e, 0x61, 0xce, 0xd0, 0xe7, 0x09, 0x63, 0x91, 0x8d, + 0x90, 0x0a, 0x65, 0x6c, 0x6a, 0x12, 0x76, 0x60, 0x19, 0xc6, 0xb6, 0xbd, 0x23, 0xb7, 0xc3, 0x07, + 0x99, 0x3f, 0xeb, 0x97, 0xc7, 0xda, 0xa4, 0xc0, 0x66, 0xe5, 0xd6, 0xff, 0xc9, 0xa8, 0xf2, 0x2b, + 0xed, 0x95, 0x4c, 0xaa, 0xbd, 0xf2, 0x1e, 0xe4, 0xf9, 0xa1, 0x66, 0x6b, 0x8d, 0x63, 0xa4, 0xfa, + 0x58, 0x9c, 0x87, 0xdc, 0x96, 0x1d, 0x35, 0x20, 0x3b, 0x0d, 0x53, 0xce, 0x74, 0xa7, 0x19, 0x89, + 0x76, 0x1a, 0xae, 0xbe, 0xd9, 0x4e, 0x13, 0x35, 0x21, 0x13, 0xa9, 0x7a, 0x93, 0x46, 0xa3, 0x89, + 0x54, 0xfd, 0x46, 0xba, 0xaf, 0xe8, 0x33, 0x80, 0xca, 0xd3, 0x3a, 0x91, 0xfe, 0x8a, 0xbd, 0xc3, + 0x75, 0x28, 0x75, 0x35, 0x39, 0x2f, 0x82, 0x06, 0x5d, 0x2d, 0x8e, 0xaf, 0x6e, 0x49, 0x4a, 0x6b, + 0xab, 0x0d, 0x33, 0x1b, 0x38, 0x24, 0xb3, 0x26, 0x36, 0x9c, 0xc1, 0xc3, 0xff, 0x02, 0x26, 0x9f, + 0xba, 0xe1, 0xb1, 0x6e, 0x00, 0xd2, 0xce, 0x5e, 0xb8, 0xe1, 0xb1, 0x30, 0x00, 0x95, 0xce, 0xd4, + 0xe6, 0xd6, 0x3a, 0x5c, 0xe6, 0xbd, 0xc9, 0xfd, 0x6d, 0x45, 0x47, 0x98, 0x89, 0x2c, 0x4a, 0x15, + 0xa1, 0x8e, 0x06, 0xc7, 0x15, 0x3e, 0xaa, 0x27, 0xb6, 0x00, 0x66, 0x0d, 0x9b, 0x3c, 0x2d, 0x54, + 0x70, 0x62, 0x5b, 0x43, 0x7c, 0x43, 0xb0, 0xf6, 0x61, 0x7a, 0xb7, 0xdd, 0x3b, 0x72, 0x3b, 0x44, + 0x40, 0xeb, 0xf8, 0x17, 0x68, 0x0d, 0x20, 0x2a, 0xe0, 0x3d, 0x08, 0xf7, 0x42, 0x54, 0x71, 0xb0, + 0xca, 0xa7, 0x98, 0x96, 0x50, 0x1d, 0x6e, 0x2b, 0x70, 0xd6, 0xdf, 0x18, 0x01, 0xc4, 0xfb, 0xa8, + 0x87, 0x4e, 0x88, 0xeb, 0x38, 0x24, 0xdb, 0xc5, 0x15, 0xc8, 0x4a, 0xb3, 0x71, 0xfc, 0xac, 0x5f, + 0xce, 0xba, 0x2d, 0x3b, 0xbb, 0xb5, 0x86, 0x3e, 0x80, 0x31, 0xda, 0x8c, 0xf2, 0x7a, 0x46, 0xf6, + 0xa7, 0x62, 0x60, 0x32, 0x1d, 0x90, 0x3f, 0x6d, 0xd6, 0x18, 0x7d, 0x08, 0xf9, 0x35, 0xdc, 0xc6, + 0x47, 0x4e, 0xe8, 0x09, 0xb9, 0x63, 0x86, 0x98, 0x28, 0x54, 0xa6, 0x28, 0x6a, 0x49, 0x36, 0x70, + 0x1b, 0x3b, 0x81, 0xd7, 0x51, 0x37, 0x70, 0x9f, 0x96, 0xa8, 0x1b, 0x38, 0x6b, 0x83, 0xfe, 0x20, + 0x03, 0x93, 0x95, 0x4e, 0x87, 0x1b, 0x38, 0x01, 0x77, 0xad, 0x2e, 0xdc, 0x95, 0x9e, 0xf1, 0x6d, + 0xe7, 0x10, 0xb7, 0x0f, 0x88, 0xc9, 0x1c, 0x54, 0xbf, 0x27, 0x3a, 0xf5, 0x4f, 0xfa, 0xe5, 0xcf, + 0x5f, 0xc5, 0xd9, 0x7e, 0x77, 0xcf, 0x77, 0xdc, 0x30, 0xa0, 0x7e, 0xac, 0xa8, 0x43, 0x55, 0xcc, + 0x14, 0x3a, 0xd0, 0x3b, 0x30, 0x46, 0xe4, 0x5b, 0xd8, 0x01, 0x74, 0xb2, 0xc9, 0x3a, 0xd0, 0x0e, + 0x3f, 0xb4, 0x85, 0x75, 0x0b, 0xf2, 0x9c, 0x93, 0x5b, 0x6b, 0xa6, 0x29, 0xb0, 0xd6, 0xe0, 0x3a, + 0xb5, 0xe2, 0x30, 0x91, 0x5c, 0xea, 0xcd, 0xe1, 0x92, 0x18, 0x99, 0xfd, 0x13, 0xb4, 0x58, 0x42, + 0xd3, 0x09, 0xa1, 0xde, 0x20, 0x5b, 0xd4, 0x58, 0x35, 0x58, 0xda, 0xc0, 0xa1, 0x8d, 0x03, 0x1c, + 0xee, 0x3a, 0x41, 0xf0, 0xc2, 0xf3, 0x5b, 0xb4, 0xea, 0x42, 0x48, 0xfe, 0x4a, 0x06, 0xca, 0x35, + 0x1f, 0x93, 0x99, 0x36, 0x22, 0x1a, 0xbc, 0x82, 0x97, 0xf8, 0xe5, 0x42, 0x36, 0xaa, 0x25, 0xbc, + 0xe6, 0x17, 0x08, 0x6f, 0xc3, 0xc8, 0xde, 0xde, 0x36, 0x95, 0x98, 0x11, 0xca, 0xb8, 0x91, 0x30, + 0x6c, 0xff, 0xa6, 0x5f, 0xce, 0xad, 0xf5, 0xd8, 0xe5, 0x83, 0x4d, 0xea, 0xad, 0x67, 0xb0, 0x60, + 0xe3, 0x0e, 0x7e, 0xe1, 0x1c, 0xb6, 0xb1, 0x66, 0xae, 0x96, 0x61, 0x8c, 0x39, 0xcb, 0x12, 0x43, + 0x60, 0xe5, 0xba, 0x3d, 0x9b, 0x1d, 0x62, 0xcf, 0x5a, 0x7f, 0x98, 0x81, 0x02, 0x1b, 0x6e, 0xd5, + 0x0b, 0xcf, 0x37, 0x3e, 0x3e, 0x82, 0xec, 0xe0, 0x11, 0xa0, 0xdb, 0x11, 0xb7, 0x47, 0xa2, 0xcd, + 0x8f, 0x92, 0x4a, 0x74, 0xb8, 0xa8, 0x24, 0x03, 0x62, 0xb2, 0xc4, 0x8e, 0x46, 0x74, 0x40, 0x54, + 0x96, 0x84, 0x04, 0xfd, 0xb3, 0x2c, 0xcc, 0x2a, 0x24, 0x06, 0x5d, 0xaf, 0x13, 0x60, 0x72, 0xc6, + 0x23, 0xc2, 0xa2, 0xd0, 0x49, 0xcf, 0x78, 0x64, 0xcb, 0x6c, 0x44, 0x96, 0x38, 0x25, 0xf8, 0x1d, + 0x72, 0xb8, 0x68, 0x27, 0x8e, 0x83, 0x54, 0x71, 0xb3, 0xa6, 0xa2, 0xfa, 0xdc, 0x44, 0xdf, 0x83, + 0x1c, 0xfd, 0x93, 0x30, 0x62, 0xd4, 0xcc, 0x08, 0xd9, 0x08, 0xb9, 0x00, 0x0f, 0x3d, 0xb7, 0xf3, + 0x18, 0x87, 0xc7, 0x9e, 0x38, 0x3c, 0x6f, 0x11, 0x25, 0xf6, 0x67, 0x3d, 0xb7, 0xd3, 0x38, 0xa5, + 0xc5, 0x17, 0x3d, 0x74, 0x46, 0x08, 0x6d, 0x05, 0xb9, 0x75, 0x1f, 0x0a, 0x44, 0xdf, 0x9c, 0x7f, + 0x46, 0xad, 0x79, 0x40, 0x1b, 0x38, 0xac, 0x7a, 0xda, 0xc6, 0x61, 0x4d, 0xc3, 0xe4, 0xae, 0xdb, + 0x39, 0x12, 0x9f, 0xff, 0x2a, 0x0b, 0x53, 0xec, 0x9b, 0xcf, 0x40, 0x6c, 0x27, 0xcd, 0x9c, 0x67, + 0x27, 0xfd, 0x04, 0xa6, 0xb9, 0x3b, 0x07, 0xfb, 0xd4, 0x85, 0xcc, 0xe6, 0x83, 0x9e, 0x28, 0x99, + 0x57, 0xa7, 0xf1, 0x9c, 0xd5, 0xd8, 0x7a, 0x43, 0xb4, 0x0d, 0x33, 0xac, 0xe0, 0x01, 0x76, 0xc2, + 0x5e, 0x74, 0xaa, 0xba, 0xcc, 0xed, 0x4c, 0x51, 0xcc, 0x94, 0x11, 0xc7, 0xf5, 0x8c, 0x17, 0xda, + 0x31, 0x58, 0xf4, 0x35, 0x5c, 0xde, 0xf5, 0xbd, 0x1f, 0x5f, 0x2a, 0xb6, 0x03, 0xd3, 0xc7, 0x0b, + 0xe4, 0x10, 0xd6, 0x25, 0x55, 0x0d, 0xd5, 0x82, 0x88, 0xb7, 0x26, 0x32, 0xb5, 0x15, 0x54, 0x3d, + 0xdf, 0xed, 0x1c, 0xd1, 0xd9, 0xcc, 0x31, 0x99, 0x72, 0x83, 0xc6, 0x21, 0x2d, 0xb4, 0x65, 0xb5, + 0xf5, 0xdf, 0x47, 0x20, 0x27, 0x3b, 0xbe, 0xab, 0x9a, 0xa5, 0x7c, 0x33, 0xa6, 0xcb, 0x33, 0x3a, + 0xfc, 0xd8, 0x4a, 0x0b, 0x74, 0x95, 0x39, 0xb3, 0x98, 0x19, 0x30, 0x41, 0x64, 0xcc, 0xe9, 0x76, + 0xa9, 0xcb, 0x8a, 0x28, 0xd3, 0xb5, 0x2a, 0xe5, 0x42, 0x8e, 0x29, 0xd3, 0xd6, 0xa1, 0x9d, 0x5d, + 0xab, 0x92, 0xb9, 0x7e, 0xb2, 0xb5, 0x56, 0xa3, 0x03, 0xca, 0xb1, 0xb9, 0xf6, 0xdc, 0x56, 0xd3, + 0xa6, 0xa5, 0xa4, 0xb6, 0x5e, 0x79, 0xbc, 0xcd, 0x89, 0xa6, 0xb5, 0x81, 0x73, 0xda, 0xb6, 0x69, + 0x29, 0xb1, 0x03, 0xd9, 0x1e, 0x5d, 0xf3, 0x3a, 0xa1, 0xef, 0xb5, 0x03, 0xea, 0x2a, 0xc8, 0x69, + 0xdb, 0x79, 0x93, 0x57, 0xd9, 0xb1, 0xa6, 0xe8, 0x29, 0x2c, 0x56, 0x5a, 0xcf, 0x9d, 0x4e, 0x13, + 0xb7, 0x58, 0xcd, 0x53, 0xcf, 0x3f, 0x79, 0xd6, 0xf6, 0x5e, 0x04, 0xf4, 0x94, 0x97, 0xe3, 0xe7, + 0x45, 0xde, 0xa4, 0xc1, 0xd1, 0xbd, 0x10, 0x8d, 0x6c, 0x13, 0x34, 0x51, 0x11, 0xb5, 0xb6, 0xd7, + 0x6b, 0xd1, 0xe3, 0x5d, 0x8e, 0xa9, 0x88, 0x26, 0x29, 0xb0, 0x59, 0x39, 0xe1, 0xd2, 0x66, 0xfd, + 0x31, 0x3d, 0x9d, 0x71, 0x2e, 0x1d, 0x07, 0xa7, 0x36, 0x29, 0x43, 0x6f, 0xc3, 0x84, 0x30, 0x69, + 0x99, 0x53, 0x80, 0x7a, 0x8c, 0x84, 0x29, 0x2b, 0xea, 0xd0, 0x1a, 0xcc, 0x3e, 0xf6, 0x5a, 0xd8, + 0x77, 0x42, 0xdc, 0xe2, 0xd6, 0x65, 0x40, 0x0f, 0x5a, 0x39, 0x66, 0x56, 0x9f, 0x8a, 0x4a, 0x71, + 0xa1, 0x11, 0xd8, 0x49, 0x00, 0xeb, 0x7d, 0x98, 0x65, 0x4b, 0xef, 0xdc, 0xf6, 0x9e, 0xb5, 0x0b, + 0x50, 0xc7, 0xa7, 0x4e, 0xf7, 0xd8, 0x23, 0xe2, 0x51, 0x55, 0xbf, 0xb8, 0x01, 0x84, 0xe4, 0x75, + 0x01, 0xaf, 0x38, 0x58, 0x15, 0x16, 0xb1, 0x68, 0x69, 0x2b, 0x50, 0xd6, 0x7f, 0xcc, 0x02, 0xa2, + 0x6e, 0xf3, 0x7a, 0xe8, 0x63, 0xe7, 0x54, 0x90, 0xf1, 0x29, 0x4c, 0x31, 0x2d, 0xca, 0x8a, 0x29, + 0x39, 0xc4, 0xba, 0x62, 0xcb, 0x47, 0xad, 0xda, 0xbc, 0x64, 0x6b, 0x4d, 0x09, 0xa8, 0x8d, 0x83, + 0xde, 0xa9, 0x00, 0xcd, 0x6a, 0xa0, 0x6a, 0x15, 0x01, 0x55, 0xbf, 0xd1, 0xd7, 0x30, 0x53, 0xf3, + 0x4e, 0xbb, 0x84, 0x27, 0x1c, 0x78, 0x84, 0xdb, 0x30, 0xbc, 0x5f, 0xad, 0x72, 0xf3, 0x92, 0x1d, + 0x6b, 0x8e, 0x76, 0x60, 0xee, 0x41, 0xbb, 0x17, 0x1c, 0x57, 0x3a, 0xad, 0x5a, 0xdb, 0x0b, 0x04, + 0x96, 0x51, 0xee, 0x52, 0xe1, 0x8b, 0x3f, 0xd9, 0x62, 0xf3, 0x92, 0x9d, 0x06, 0x88, 0xde, 0xe6, + 0x31, 0x00, 0xdc, 0x96, 0x9a, 0xbe, 0xcb, 0x43, 0x04, 0x9e, 0x74, 0xf0, 0x93, 0x67, 0x9b, 0x97, + 0x6c, 0x56, 0x5b, 0xcd, 0xc3, 0x84, 0x50, 0x7c, 0xf7, 0x60, 0x56, 0x61, 0x27, 0xb1, 0xfe, 0x7a, + 0x01, 0x2a, 0x41, 0x6e, 0xbf, 0xdb, 0xf6, 0x9c, 0x96, 0x30, 0x26, 0x6c, 0xf9, 0x6d, 0xbd, 0xa7, + 0x73, 0x1a, 0x2d, 0xa9, 0x27, 0x1a, 0xd6, 0x38, 0x2a, 0xb0, 0x36, 0x75, 0xe6, 0x0e, 0x6e, 0xad, + 0xf5, 0x9b, 0x8d, 0xf5, 0x5b, 0x88, 0xf3, 0xda, 0x5a, 0x48, 0x65, 0x9e, 0xf5, 0x88, 0x1a, 0x4a, + 0x95, 0x6e, 0xb7, 0xed, 0x36, 0xe9, 0xfe, 0xc2, 0xb4, 0xa3, 0xb4, 0x31, 0x7e, 0x4b, 0xbd, 0xa9, + 0x56, 0x36, 0x57, 0x79, 0x2f, 0xad, 0xdc, 0x45, 0x5b, 0xdf, 0xc1, 0x75, 0x03, 0x32, 0xbe, 0x4f, + 0x7c, 0x0a, 0x13, 0xbc, 0x28, 0x26, 0xd0, 0xaa, 0x6f, 0x9f, 0xae, 0xca, 0x80, 0x43, 0x8a, 0xf6, + 0xd6, 0xb7, 0xb0, 0xbc, 0xdf, 0x0d, 0xb0, 0x9f, 0x44, 0x2f, 0x48, 0xfd, 0x48, 0xde, 0x84, 0x67, + 0x8c, 0xf7, 0x06, 0x70, 0xd6, 0x2f, 0x8f, 0x33, 0xdc, 0xe2, 0x02, 0xdc, 0xfa, 0xfd, 0x0c, 0x2c, + 0xb3, 0xa5, 0x6a, 0x44, 0x7d, 0x11, 0x2e, 0x28, 0x7e, 0xe9, 0xac, 0xd9, 0x2f, 0x3d, 0xd0, 0x51, + 0x6f, 0x7d, 0x03, 0x16, 0xa7, 0xa8, 0xdd, 0x7e, 0x43, 0x73, 0xf3, 0x97, 0x33, 0x30, 0xcf, 0x26, + 0xe7, 0x35, 0xb0, 0xa0, 0x2f, 0x61, 0xa6, 0x7e, 0xe2, 0x76, 0x0f, 0x9c, 0xb6, 0xdb, 0x62, 0x2e, + 0x5a, 0xb6, 0x1d, 0x2d, 0xd0, 0x9d, 0xf6, 0xc4, 0xed, 0x36, 0x9e, 0x47, 0x55, 0x19, 0x3b, 0xd6, + 0xd8, 0x7a, 0x02, 0x0b, 0x31, 0x1a, 0xb8, 0x60, 0x7c, 0x14, 0x17, 0x8c, 0x44, 0x18, 0x43, 0xba, + 0x54, 0x3c, 0x86, 0x2b, 0x52, 0x2a, 0xf4, 0x29, 0x5b, 0x8d, 0x49, 0x43, 0x02, 0x61, 0x9a, 0x28, + 0x34, 0xe1, 0x8a, 0x94, 0x84, 0xd7, 0x90, 0x00, 0x31, 0xb9, 0xd9, 0xd4, 0xc9, 0xdd, 0x82, 0x92, + 0x3a, 0xb9, 0xaf, 0x33, 0xa9, 0xff, 0x21, 0x03, 0x8b, 0x1b, 0xb8, 0x43, 0xb7, 0x9e, 0x4a, 0xb7, + 0xab, 0x9d, 0x4c, 0x54, 0xf7, 0x74, 0x66, 0xa0, 0x7b, 0x5a, 0x9a, 0xdd, 0xd9, 0x74, 0xb3, 0x9b, + 0xec, 0xa9, 0xfb, 0xf6, 0x16, 0x97, 0x55, 0xba, 0xa7, 0xf6, 0x7c, 0xd7, 0x26, 0x65, 0x68, 0x2b, + 0x72, 0x6d, 0x8f, 0x0e, 0x75, 0x6d, 0xcf, 0x71, 0x57, 0xdf, 0x04, 0x77, 0x6d, 0x6b, 0x0e, 0x6d, + 0xeb, 0x73, 0x28, 0x26, 0xc7, 0xc2, 0xe5, 0x63, 0xd8, 0x51, 0xc7, 0x5a, 0x8b, 0xa4, 0x9b, 0xdf, + 0x82, 0x4b, 0x97, 0x7e, 0x4c, 0x85, 0x0e, 0x70, 0x21, 0x59, 0xf5, 0x48, 0x3e, 0x39, 0x16, 0xde, + 0xff, 0x67, 0x44, 0x3e, 0x59, 0xa4, 0x43, 0xc6, 0x1c, 0xe9, 0xc0, 0x65, 0x94, 0x81, 0x0a, 0x00, + 0xeb, 0x29, 0x5c, 0xd1, 0x90, 0x46, 0x52, 0xff, 0x25, 0xe4, 0xa4, 0x81, 0xa1, 0x7b, 0x38, 0x34, + 0xb4, 0x74, 0xde, 0xa4, 0xad, 0x21, 0x41, 0xac, 0x5f, 0x65, 0x60, 0x91, 0xed, 0x2e, 0xc9, 0x71, + 0x9f, 0x7f, 0xf6, 0xff, 0x54, 0xdc, 0x66, 0xf7, 0x53, 0xdc, 0x66, 0x14, 0x44, 0x75, 0x9b, 0xa9, + 0xce, 0xb2, 0x87, 0xa3, 0xb9, 0x6c, 0x61, 0xc4, 0x3a, 0x80, 0x62, 0x72, 0x84, 0x6f, 0x60, 0x4e, + 0x36, 0x60, 0x51, 0x59, 0xe8, 0xaf, 0x21, 0x31, 0x9b, 0xb0, 0x14, 0x99, 0x79, 0xda, 0x1c, 0x5f, + 0x70, 0x1e, 0xb8, 0xec, 0x45, 0xb4, 0xbf, 0x41, 0xd9, 0x8b, 0x1a, 0xbe, 0x31, 0xd9, 0xdb, 0x82, + 0x39, 0x86, 0x58, 0x5f, 0xa7, 0x2b, 0xea, 0x3a, 0x4d, 0x8d, 0xdf, 0x49, 0x2e, 0xdd, 0xc7, 0x74, + 0xe9, 0x8a, 0x26, 0x11, 0x85, 0x1f, 0xc2, 0x38, 0x0f, 0x51, 0x64, 0xf4, 0xa5, 0x20, 0xa3, 0x3a, + 0x9c, 0xc5, 0x25, 0xda, 0xbc, 0xb1, 0x55, 0xa4, 0x43, 0x26, 0xe7, 0x26, 0xee, 0x80, 0x97, 0xa7, + 0xd8, 0x6f, 0x88, 0xb2, 0x8c, 0xd5, 0xbc, 0xe6, 0xfe, 0xf3, 0x04, 0x8a, 0x6c, 0xff, 0x51, 0xb0, + 0xbe, 0xd6, 0x0e, 0xf4, 0x09, 0x14, 0x99, 0x3c, 0xa5, 0x20, 0x1c, 0xbc, 0xad, 0x2c, 0x0b, 0x49, + 0xac, 0xb4, 0xdb, 0x69, 0xa3, 0xff, 0x6b, 0x19, 0xb8, 0xba, 0x81, 0x43, 0x3d, 0x8a, 0xeb, 0xff, + 0x8b, 0x15, 0xf0, 0x3d, 0x94, 0xd2, 0x08, 0xe1, 0x53, 0xf1, 0x55, 0x7c, 0x2a, 0x8c, 0x21, 0x6b, + 0xe9, 0x53, 0xf2, 0x1d, 0x5c, 0x63, 0x53, 0xa2, 0xb7, 0x17, 0x03, 0xfd, 0x3c, 0x36, 0x2b, 0x46, + 0xec, 0x69, 0xb3, 0xf3, 0x37, 0x33, 0x70, 0x8d, 0x31, 0x39, 0x1d, 0xf9, 0x9f, 0xb6, 0x9d, 0xb8, + 0x03, 0x65, 0x39, 0xe7, 0x6f, 0x60, 0x62, 0xad, 0x7f, 0x9e, 0x01, 0x24, 0xf0, 0xd4, 0xea, 0xb6, + 0xc0, 0x71, 0x15, 0x46, 0x6a, 0x75, 0x9b, 0xdf, 0x88, 0xd3, 0xfd, 0xbf, 0x19, 0xf8, 0x36, 0x29, + 0x8b, 0x6f, 0x06, 0xd9, 0xf3, 0x6c, 0x06, 0x5b, 0x80, 0xea, 0xee, 0x51, 0xe7, 0xa9, 0x1b, 0x1e, + 0xcb, 0xce, 0x2a, 0xdc, 0x7b, 0x41, 0x83, 0x05, 0x03, 0xf7, 0xa8, 0xd3, 0xa0, 0x57, 0x12, 0x32, + 0x20, 0xb1, 0xe9, 0xd8, 0x29, 0x40, 0xd6, 0xcf, 0x60, 0x4e, 0xa3, 0x97, 0xcb, 0xd0, 0x12, 0x8c, + 0xd6, 0xb0, 0x1f, 0x72, 0x8a, 0x29, 0xd7, 0x9a, 0xd8, 0x0f, 0x6d, 0x5a, 0x8a, 0x6e, 0xc3, 0x44, + 0xad, 0x42, 0x3d, 0xa9, 0xd4, 0xe2, 0x99, 0x62, 0x4a, 0xae, 0xe9, 0x34, 0x68, 0x94, 0xbc, 0x2d, + 0x2a, 0xad, 0x7f, 0x9b, 0x55, 0xb0, 0x13, 0xf0, 0xe1, 0xec, 0x78, 0x9f, 0x1c, 0xda, 0x09, 0xff, + 0x15, 0x6e, 0xcc, 0x92, 0xcd, 0x94, 0x7b, 0xa1, 0xd8, 0x3e, 0x60, 0x2b, 0x8d, 0xce, 0xe9, 0x05, + 0x16, 0xb7, 0x8e, 0x0c, 0x48, 0x78, 0x48, 0xe5, 0xad, 0x23, 0x47, 0x1d, 0xd8, 0x6a, 0x23, 0xf4, + 0x73, 0x98, 0xe6, 0x34, 0x73, 0x82, 0xc6, 0xe8, 0xb5, 0xc6, 0x5b, 0xfc, 0xa8, 0x9c, 0x32, 0xb6, + 0xbb, 0xb2, 0x3d, 0x8f, 0x5f, 0x16, 0x9f, 0x6c, 0x1a, 0x75, 0x74, 0xd6, 0x6d, 0xe9, 0xd0, 0xc7, + 0x3e, 0xba, 0x0c, 0x93, 0xfb, 0x3b, 0xf5, 0xdd, 0xf5, 0xda, 0xd6, 0x83, 0xad, 0xf5, 0xb5, 0xc2, + 0x25, 0x94, 0x83, 0xd1, 0xbd, 0xda, 0xde, 0x76, 0x21, 0x63, 0x7d, 0x0f, 0xf3, 0x7a, 0x5f, 0x6f, + 0x74, 0x9a, 0xde, 0xa2, 0xd7, 0x6a, 0xca, 0x85, 0x34, 0x42, 0xaa, 0x9b, 0x85, 0x2f, 0x95, 0x8f, + 0xa1, 0xc0, 0x5b, 0x45, 0xaa, 0xe6, 0x96, 0x30, 0x7c, 0x99, 0xa2, 0xd1, 0x03, 0xb8, 0x85, 0xcf, + 0xf9, 0x27, 0xc2, 0x91, 0x33, 0xac, 0x87, 0xbf, 0x9b, 0x81, 0xe2, 0xe3, 0x07, 0x95, 0x4a, 0x2f, + 0x3c, 0xc6, 0x9d, 0x90, 0x1c, 0xd9, 0x70, 0xed, 0xd8, 0x69, 0xb7, 0x71, 0xe7, 0x08, 0xa3, 0x3b, + 0x30, 0xba, 0xf7, 0x64, 0x6f, 0x97, 0xfb, 0x4b, 0xe6, 0xf9, 0x0c, 0x90, 0x22, 0xd9, 0xc6, 0xa6, + 0x2d, 0xd0, 0x23, 0x98, 0x7d, 0xca, 0x9f, 0x4c, 0xc8, 0x2a, 0xee, 0x29, 0xb9, 0x7e, 0x57, 0x3e, + 0xa6, 0xa8, 0xf9, 0xb8, 0x45, 0x7a, 0x71, 0xda, 0x95, 0x80, 0x28, 0x3b, 0x22, 0x27, 0x49, 0xb8, + 0x87, 0xa3, 0xb9, 0x4c, 0x21, 0x6b, 0xfd, 0x41, 0x06, 0x16, 0x63, 0x94, 0x29, 0xce, 0x73, 0x95, + 0xb0, 0x39, 0x85, 0x30, 0xd1, 0x64, 0xf3, 0x12, 0xa7, 0xac, 0x46, 0xe3, 0x73, 0x69, 0x0f, 0x9c, + 0xa0, 0xb7, 0x07, 0x13, 0x14, 0x21, 0x90, 0x80, 0x3c, 0xba, 0x8e, 0x96, 0x5b, 0x97, 0x61, 0x5a, + 0xe3, 0x80, 0x65, 0xc1, 0x94, 0xda, 0x33, 0x61, 0x73, 0xcd, 0x6b, 0x49, 0x36, 0x93, 0xbf, 0xad, + 0xbf, 0x9d, 0x81, 0xf9, 0xc7, 0x0f, 0x2a, 0x36, 0x3e, 0x72, 0x89, 0xdc, 0x45, 0x2c, 0x5e, 0xd1, + 0x46, 0xb2, 0xa4, 0x8d, 0x24, 0xd6, 0x56, 0x0e, 0xe9, 0xb3, 0xc4, 0x90, 0x96, 0xd2, 0x86, 0x44, + 0x6d, 0x50, 0xd7, 0xeb, 0x68, 0x23, 0x51, 0xfc, 0x42, 0x7f, 0x2f, 0x03, 0x73, 0x0a, 0x4d, 0x92, + 0xfe, 0xf7, 0x35, 0x92, 0xae, 0xa5, 0x90, 0x94, 0x60, 0x72, 0x35, 0x41, 0xd1, 0x5b, 0x83, 0x28, + 0x1a, 0xca, 0xe3, 0x3f, 0xce, 0xc0, 0x42, 0x2a, 0x0f, 0xd0, 0x15, 0xb2, 0x13, 0x36, 0x7d, 0x1c, + 0x72, 0xf6, 0xf2, 0x2f, 0x52, 0xbe, 0x15, 0x04, 0x3d, 0xfe, 0x9e, 0x25, 0x6f, 0xf3, 0x2f, 0xf4, + 0x16, 0x4c, 0xef, 0x62, 0xdf, 0xf5, 0x5a, 0x75, 0xdc, 0xf4, 0x3a, 0x2d, 0xe6, 0x75, 0x9f, 0xb6, + 0xf5, 0x42, 0xb4, 0x04, 0xf9, 0x4a, 0xfb, 0xc8, 0xf3, 0xdd, 0xf0, 0x98, 0xb9, 0xe6, 0xf2, 0x76, + 0x54, 0x40, 0x70, 0xaf, 0xb9, 0x47, 0x6e, 0xc8, 0xee, 0x2f, 0xa7, 0x6d, 0xfe, 0x85, 0x8a, 0x30, + 0x51, 0x69, 0x36, 0xbd, 0x5e, 0x27, 0xa4, 0x5e, 0xe6, 0xbc, 0x2d, 0x3e, 0x09, 0xc4, 0x37, 0x36, + 0x15, 0x02, 0x1a, 0x71, 0x66, 0xf3, 0x2f, 0xeb, 0x5d, 0x98, 0x4f, 0xe3, 0x63, 0xaa, 0xc8, 0xfc, + 0xc5, 0x2c, 0xcc, 0x55, 0x5a, 0xad, 0xc7, 0x0f, 0x2a, 0x6b, 0x58, 0x35, 0xa8, 0x3e, 0x80, 0xd1, + 0xad, 0x8e, 0x1b, 0x72, 0x4b, 0x60, 0x99, 0x4f, 0x4f, 0x4a, 0x4b, 0xd2, 0x8a, 0xcc, 0x10, 0xf9, + 0x1f, 0xd9, 0x30, 0xb7, 0xfe, 0xa3, 0x1b, 0x84, 0x6e, 0xe7, 0x88, 0xce, 0x39, 0xeb, 0x98, 0xcf, + 0xb1, 0x40, 0x62, 0x58, 0x6e, 0x9b, 0x97, 0xec, 0x34, 0x60, 0xb4, 0x07, 0x57, 0x76, 0xf0, 0x8b, + 0x14, 0x11, 0x92, 0x01, 0x63, 0x12, 0x6d, 0x8a, 0xe4, 0x18, 0x60, 0x55, 0x09, 0xfd, 0xab, 0x59, + 0x1a, 0x85, 0xa8, 0x0c, 0x8c, 0xf7, 0xbc, 0x0f, 0xf3, 0x0a, 0x41, 0x91, 0xc6, 0xc9, 0xf0, 0xf8, + 0xf4, 0xd4, 0xe1, 0xa8, 0x0b, 0x29, 0x15, 0x1c, 0x3d, 0x85, 0x45, 0x9d, 0xa8, 0x08, 0xb3, 0xbe, + 0x18, 0xd2, 0x9a, 0x6c, 0x5e, 0xb2, 0x4d, 0xd0, 0x68, 0x05, 0x46, 0x2a, 0xcd, 0x13, 0xce, 0x96, + 0xf4, 0x29, 0x63, 0x23, 0xab, 0x34, 0x4f, 0x68, 0x44, 0x6f, 0xf3, 0x44, 0x5b, 0x0f, 0xff, 0x26, + 0x03, 0x8b, 0x86, 0x19, 0x46, 0xcb, 0x00, 0xac, 0x50, 0xd1, 0xed, 0x4a, 0x09, 0xd9, 0xdd, 0xd9, + 0x17, 0xbd, 0xd4, 0x1d, 0xa1, 0x9b, 0xa9, 0x88, 0xbd, 0x8a, 0x2a, 0x6c, 0xa5, 0x11, 0xda, 0x85, + 0x49, 0xf6, 0xc5, 0x42, 0xc0, 0x46, 0x29, 0x0c, 0xd2, 0x60, 0x58, 0xcc, 0x17, 0x8d, 0xeb, 0x68, + 0xd1, 0x82, 0x46, 0x3c, 0xf4, 0x4b, 0x45, 0xc1, 0x0f, 0xc6, 0xb5, 0xf8, 0x28, 0xe4, 0xa0, 0xd1, + 0x1d, 0x18, 0x67, 0x85, 0x7c, 0x0e, 0xc5, 0xcb, 0xa2, 0xa8, 0x31, 0xaf, 0xb7, 0xfe, 0x30, 0x23, + 0xfc, 0x5d, 0x89, 0xa5, 0xf1, 0xb1, 0xb6, 0x34, 0x6e, 0x4a, 0x82, 0xd3, 0x1a, 0x6b, 0xab, 0xa3, + 0x0a, 0x93, 0xaf, 0xb2, 0x2a, 0x54, 0x20, 0x55, 0x6e, 0xff, 0x51, 0x46, 0x9c, 0xd4, 0x93, 0xa2, + 0xbb, 0x0e, 0x53, 0xaf, 0x26, 0xb2, 0x1a, 0x18, 0xfa, 0x90, 0x49, 0x54, 0x76, 0xf0, 0x48, 0x07, + 0x0a, 0xd5, 0x17, 0xc2, 0xa5, 0xf7, 0x2a, 0x62, 0x65, 0x2d, 0xa5, 0x40, 0xcb, 0xee, 0xac, 0x5e, + 0xa2, 0xb6, 0xfe, 0xb2, 0xd3, 0x14, 0xf3, 0x74, 0x3b, 0x1e, 0xc8, 0x60, 0xbc, 0xa5, 0x56, 0x69, + 0xc8, 0x46, 0x5e, 0x1e, 0x2e, 0x72, 0xd4, 0xbc, 0x53, 0x89, 0xfa, 0xd7, 0x59, 0x5d, 0xc2, 0x5e, + 0xa5, 0xd3, 0x1a, 0x4c, 0xef, 0xe0, 0x17, 0x89, 0x7e, 0xe9, 0xdd, 0x5f, 0x07, 0xbf, 0x68, 0x28, + 0x7d, 0x2b, 0xd2, 0xae, 0xc3, 0xa0, 0x43, 0x98, 0x11, 0xba, 0xe0, 0xbc, 0x2a, 0x91, 0x45, 0xb5, + 0x92, 0x1e, 0x4e, 0x9f, 0x39, 0x0d, 0x9f, 0x97, 0xaa, 0xe1, 0xa8, 0x3a, 0xc6, 0x37, 0xbf, 0x4a, + 0xad, 0x5d, 0x28, 0x26, 0xb9, 0xc7, 0x7b, 0xfb, 0x60, 0xd8, 0x02, 0x65, 0x67, 0xcf, 0x96, 0xbe, + 0x58, 0x37, 0xa9, 0x9b, 0x44, 0xb6, 0x91, 0x07, 0xbc, 0xfb, 0xf1, 0xc9, 0xa0, 0x97, 0x94, 0x62, + 0x32, 0xd4, 0x40, 0xfc, 0x28, 0x38, 0x66, 0x21, 0x86, 0x89, 0x13, 0xf6, 0x2e, 0x4c, 0xf0, 0x22, + 0xf9, 0xc0, 0x21, 0xae, 0x3a, 0x44, 0x03, 0xeb, 0xef, 0x67, 0xe0, 0xea, 0x7e, 0x80, 0xfd, 0xba, + 0xdb, 0x39, 0x6a, 0xe3, 0xfd, 0x40, 0x0f, 0x4d, 0xf9, 0x6d, 0x4d, 0x7d, 0x2c, 0x1a, 0x42, 0x5e, + 0xff, 0x5f, 0x29, 0x8d, 0x7f, 0x98, 0x81, 0x52, 0x1a, 0x6d, 0x6f, 0x56, 0x6f, 0xdc, 0xe5, 0xa7, + 0x17, 0x46, 0x6d, 0x91, 0x83, 0xcb, 0x3e, 0xc5, 0x60, 0xc9, 0x20, 0xc9, 0xff, 0x9a, 0xc2, 0xf8, + 0xdf, 0x19, 0x98, 0xdf, 0x0a, 0x28, 0xf9, 0xbf, 0xe8, 0xb9, 0x3e, 0x6e, 0x09, 0xc6, 0xdd, 0x4d, + 0x0b, 0x8c, 0xa6, 0xf3, 0xba, 0x79, 0x29, 0x2d, 0xf0, 0xf9, 0x03, 0x25, 0xf4, 0x33, 0x3b, 0x28, + 0xe2, 0x59, 0x7b, 0x65, 0x73, 0x1b, 0x46, 0x77, 0x88, 0x91, 0x34, 0xc2, 0xe5, 0x8f, 0x41, 0x90, + 0x22, 0x1a, 0xa5, 0x49, 0x48, 0x26, 0x1f, 0xe8, 0x41, 0x22, 0x16, 0x74, 0x74, 0x78, 0x44, 0x6f, + 0xf2, 0x79, 0x50, 0x35, 0x07, 0xe3, 0x7b, 0x8e, 0x7f, 0x84, 0x43, 0xeb, 0x3b, 0x28, 0xf1, 0xcb, + 0x53, 0xe6, 0x49, 0xa4, 0x57, 0xac, 0x41, 0xe4, 0xe1, 0x1a, 0x74, 0xe1, 0xb9, 0x0c, 0x50, 0x0f, + 0x1d, 0x3f, 0xdc, 0xea, 0xb4, 0xf0, 0x8f, 0x74, 0xb4, 0x63, 0xb6, 0x52, 0x62, 0x7d, 0x08, 0x79, + 0x39, 0x04, 0x7a, 0x42, 0x53, 0xec, 0x40, 0x3a, 0x9c, 0x79, 0x2d, 0x3a, 0x55, 0x84, 0xa4, 0xae, + 0xc2, 0x42, 0x6c, 0x2a, 0xb8, 0x9c, 0x94, 0xc8, 0x84, 0xb1, 0x32, 0x16, 0x9e, 0x61, 0xcb, 0x6f, + 0xab, 0x06, 0xb3, 0x89, 0x99, 0x46, 0x88, 0x46, 0x1c, 0xb3, 0xe3, 0x2c, 0xd9, 0x26, 0xea, 0xf5, + 0x4d, 0x52, 0xb6, 0xb7, 0x5d, 0x67, 0xd1, 0x57, 0xa4, 0x6c, 0x6f, 0xbb, 0x5e, 0x1d, 0x67, 0x92, + 0x63, 0xfd, 0x93, 0x2c, 0x3d, 0x94, 0x26, 0x78, 0x10, 0x73, 0xd8, 0xa8, 0x4e, 0xa3, 0x2a, 0xe4, + 0xe9, 0x88, 0xd7, 0x44, 0x94, 0xe2, 0xe0, 0x1b, 0x97, 0xdc, 0x2f, 0xfb, 0xe5, 0x4b, 0xf4, 0x9a, + 0x25, 0x02, 0x43, 0x5f, 0xc1, 0xc4, 0x7a, 0xa7, 0x45, 0x31, 0x8c, 0x5c, 0x00, 0x83, 0x00, 0x22, + 0xf3, 0x40, 0x49, 0x26, 0x06, 0x0e, 0xf7, 0x44, 0xd8, 0x4a, 0x09, 0x65, 0xb3, 0x7b, 0xea, 0xb2, + 0x7b, 0xf5, 0x31, 0x9b, 0x7d, 0x10, 0x6e, 0x52, 0x12, 0xc4, 0xa3, 0x93, 0xbc, 0x2d, 0xbf, 0x91, + 0x05, 0x63, 0x4f, 0xfc, 0x16, 0x7f, 0x02, 0x30, 0xb3, 0x32, 0x25, 0x5e, 0xe1, 0x93, 0x32, 0x9b, + 0x55, 0x59, 0xff, 0x93, 0xde, 0x75, 0x85, 0xa9, 0x72, 0xa3, 0x71, 0x25, 0xf3, 0xda, 0x5c, 0xc9, + 0xbe, 0x0a, 0x57, 0xe4, 0xa8, 0x47, 0x4c, 0xa3, 0x1e, 0x35, 0x8d, 0x7a, 0xcc, 0x3c, 0xea, 0x0d, + 0x18, 0x67, 0x43, 0x45, 0xb7, 0x60, 0x6c, 0x2b, 0xc4, 0xa7, 0x91, 0xb3, 0x42, 0x8d, 0x56, 0xb0, + 0x59, 0x1d, 0x39, 0x47, 0x6d, 0x3b, 0x41, 0x28, 0xe2, 0xfd, 0xf2, 0xb6, 0xf8, 0xb4, 0xfe, 0x24, + 0x03, 0x85, 0x6d, 0x37, 0x08, 0xc9, 0x42, 0x38, 0xa7, 0xac, 0xc9, 0x11, 0x65, 0x4d, 0x23, 0x1a, + 0x89, 0x8d, 0xe8, 0x73, 0x18, 0xa7, 0x61, 0xa8, 0x01, 0x7f, 0x60, 0x76, 0x8b, 0x0f, 0x29, 0xde, + 0x31, 0x0b, 0x56, 0x0d, 0xe8, 0x43, 0x30, 0x9b, 0x83, 0x94, 0x3e, 0x85, 0x49, 0xa5, 0xf8, 0x42, + 0xef, 0xc3, 0xbe, 0x85, 0x59, 0xa5, 0x0b, 0xe9, 0xd9, 0x18, 0xe2, 0xd3, 0x97, 0x3e, 0x63, 0xc2, + 0xb6, 0x1d, 0xfc, 0xa3, 0xca, 0x36, 0xfe, 0x69, 0xfd, 0x40, 0xa3, 0xa8, 0xb7, 0xbd, 0xe6, 0x89, + 0xe2, 0x51, 0x9d, 0x60, 0xca, 0x2c, 0x7e, 0x31, 0x41, 0x5a, 0xb1, 0x1a, 0x5b, 0xb4, 0x40, 0x37, + 0x60, 0x72, 0xab, 0xf3, 0xc0, 0xf3, 0x9b, 0xf8, 0x49, 0xa7, 0xcd, 0xb0, 0xe7, 0x6c, 0xb5, 0x88, + 0x3b, 0xa6, 0x78, 0x0f, 0x91, 0x63, 0x8a, 0x16, 0xc4, 0x1c, 0x53, 0xec, 0x7d, 0xab, 0xcd, 0xea, + 0xb8, 0xdf, 0x8b, 0xfc, 0x3d, 0xc8, 0x2b, 0x25, 0xdd, 0x57, 0xc3, 0x1a, 0x1e, 0xc2, 0x55, 0x1b, + 0x77, 0xdb, 0x0e, 0xb1, 0x3e, 0x4f, 0x3d, 0xd6, 0x5e, 0x8e, 0xf9, 0x46, 0x4a, 0x80, 0x9f, 0xee, + 0xd4, 0x95, 0x24, 0x67, 0x07, 0x90, 0x7c, 0x0a, 0x37, 0x37, 0x70, 0x98, 0xfa, 0x48, 0x35, 0x1a, + 0xfc, 0x26, 0xe4, 0xf8, 0x43, 0x0a, 0x31, 0xfe, 0x61, 0xef, 0x63, 0xf9, 0x25, 0x15, 0xc7, 0x23, + 0xff, 0xb2, 0xbe, 0x86, 0xb2, 0xa9, 0xbb, 0xf3, 0x45, 0x64, 0xb9, 0x70, 0xc3, 0x8c, 0x40, 0x5a, + 0x13, 0x13, 0xbc, 0x43, 0xe9, 0x47, 0x18, 0x4c, 0xad, 0xbc, 0xb6, 0xa0, 0xf6, 0x14, 0xff, 0xc3, + 0xaa, 0x8a, 0x90, 0x8f, 0xd7, 0x20, 0xb7, 0x41, 0x2f, 0x56, 0x74, 0x04, 0x11, 0x5f, 0x2b, 0x90, + 0x13, 0x65, 0xb1, 0x9b, 0x95, 0xc4, 0xfb, 0x5f, 0xca, 0xd0, 0x96, 0x40, 0x20, 0xc1, 0xac, 0x1f, + 0xc4, 0xf5, 0x87, 0x0e, 0x71, 0xbe, 0x60, 0xe1, 0xf3, 0xdc, 0x77, 0x58, 0x1e, 0x5c, 0xd5, 0x71, + 0xab, 0x8e, 0xf7, 0x82, 0xe2, 0x78, 0x67, 0xfe, 0x76, 0x22, 0x97, 0xf6, 0xf6, 0x7a, 0xa7, 0xd5, + 0xf5, 0xdc, 0x4e, 0xc8, 0x17, 0xaf, 0x5a, 0x84, 0x96, 0x55, 0xf7, 0xfa, 0x54, 0x32, 0xba, 0xfa, + 0x3e, 0x94, 0xd2, 0x3a, 0x54, 0xbc, 0x49, 0xd2, 0x43, 0xcd, 0xec, 0x38, 0xeb, 0x18, 0xe6, 0xb5, + 0x8c, 0x2a, 0x51, 0x8a, 0x88, 0x28, 0x93, 0x4c, 0xbe, 0xfa, 0xc5, 0x6f, 0xfa, 0xe5, 0x4f, 0x2e, + 0x12, 0xc2, 0x2b, 0x70, 0xee, 0xc9, 0x00, 0x71, 0x6b, 0x11, 0x46, 0x6a, 0xf6, 0x36, 0x1d, 0xb6, + 0xbd, 0x2d, 0x87, 0x6d, 0x6f, 0x5b, 0x7f, 0x94, 0x85, 0x72, 0xed, 0xd8, 0xe9, 0x1c, 0xb1, 0x6b, + 0xe7, 0xc8, 0x5c, 0x55, 0xee, 0xb1, 0xcf, 0x7b, 0x48, 0x5b, 0x81, 0xc9, 0x1d, 0xfc, 0x42, 0x04, + 0xb7, 0xf3, 0x30, 0x71, 0x7a, 0xb1, 0x40, 0x0e, 0x50, 0x5d, 0x5e, 0x6e, 0xab, 0x8d, 0xd0, 0x9f, + 0x7b, 0x75, 0x77, 0x15, 0xcb, 0xab, 0x10, 0x9d, 0xcd, 0x58, 0x6d, 0xda, 0x21, 0xcd, 0xd0, 0x45, + 0xf2, 0x54, 0x39, 0x7a, 0xf1, 0x53, 0xa5, 0xf5, 0x2f, 0x32, 0x70, 0xc3, 0xcc, 0x41, 0xde, 0xd3, + 0x9a, 0x96, 0xe2, 0x62, 0xc0, 0xe5, 0x3b, 0x3d, 0x49, 0x2b, 0x29, 0x2e, 0xe2, 0x69, 0x2d, 0x6c, + 0xdc, 0xf4, 0x9e, 0x63, 0xff, 0x65, 0xcc, 0xfd, 0x2f, 0x8a, 0x6b, 0x64, 0xdf, 0x12, 0x09, 0x82, + 0x58, 0x91, 0xf6, 0xaa, 0x95, 0x97, 0x59, 0xff, 0x3e, 0x03, 0xd7, 0xe8, 0x5e, 0xcb, 0x9d, 0xa3, + 0xa2, 0xe2, 0xe2, 0x41, 0x1f, 0x1f, 0xc2, 0x94, 0xda, 0x39, 0x9f, 0x75, 0xfa, 0x26, 0x5e, 0x50, + 0xd0, 0x68, 0x7a, 0x2d, 0x6c, 0x6b, 0xcd, 0xd0, 0x16, 0x4c, 0xf2, 0x6f, 0xc5, 0x03, 0xb6, 0xa0, + 0x24, 0xcc, 0xa1, 0x42, 0xc5, 0x8e, 0xca, 0x54, 0x84, 0x38, 0xb2, 0x06, 0x7d, 0xf5, 0xa0, 0xc2, + 0x5a, 0xbf, 0xce, 0xc2, 0xd2, 0x01, 0xf6, 0xdd, 0x67, 0x2f, 0x0d, 0x83, 0x79, 0x02, 0xf3, 0xa2, + 0x88, 0x8e, 0x59, 0x17, 0x66, 0xf6, 0x3a, 0x51, 0x90, 0x1a, 0x90, 0x06, 0x0d, 0x29, 0xdb, 0xa9, + 0x80, 0x17, 0x78, 0xaf, 0xfb, 0x01, 0xe4, 0xe4, 0x7a, 0x18, 0xa1, 0x9c, 0xa1, 0x73, 0x23, 0xd6, + 0x82, 0x9e, 0xba, 0x40, 0x2e, 0x8a, 0xdf, 0x35, 0xdf, 0xb2, 0xf0, 0x63, 0xd3, 0x90, 0x13, 0x2d, + 0x5b, 0x1a, 0x64, 0x59, 0x38, 0x4a, 0x6d, 0xca, 0xd2, 0xd8, 0xbc, 0x64, 0x9b, 0x7a, 0xaa, 0x4e, + 0x42, 0xbe, 0x42, 0xef, 0x80, 0xc8, 0x29, 0xe5, 0x7f, 0x65, 0x61, 0x59, 0xc4, 0x81, 0x1a, 0xd8, + 0xfc, 0x2d, 0x2c, 0x8a, 0xa2, 0x4a, 0xb7, 0xeb, 0x7b, 0xcf, 0x71, 0x4b, 0xe7, 0x34, 0x7b, 0x21, + 0x2c, 0x38, 0xed, 0xf0, 0x36, 0x11, 0xb3, 0x4d, 0xe0, 0x6f, 0xc6, 0xfb, 0xf3, 0x95, 0xae, 0x9d, + 0xd8, 0x6c, 0x50, 0x2f, 0x8c, 0xaa, 0x9d, 0xf4, 0xdc, 0x4e, 0xaa, 0xa6, 0x6a, 0x25, 0xbc, 0x47, + 0xa3, 0xaf, 0xeb, 0x3d, 0x22, 0xe7, 0x5b, 0x1d, 0x67, 0x75, 0x06, 0xa6, 0x76, 0xf0, 0x8b, 0x88, + 0xef, 0xbf, 0x97, 0x81, 0x69, 0x6d, 0x71, 0xa3, 0x77, 0x60, 0x8c, 0xfe, 0x41, 0x77, 0x5e, 0xfe, + 0x4c, 0x8a, 0x2c, 0x30, 0xed, 0x99, 0x14, 0x6b, 0xba, 0x05, 0x13, 0x2c, 0xe6, 0xa9, 0x75, 0x8e, + 0x83, 0x88, 0x0c, 0xa9, 0x6b, 0x32, 0x10, 0x76, 0x26, 0xe1, 0xf0, 0xd6, 0x23, 0xb8, 0xc9, 0xc3, + 0xa7, 0xf4, 0xc9, 0xaf, 0xa9, 0x87, 0x80, 0x73, 0x6e, 0x14, 0x96, 0x03, 0xcb, 0x1b, 0x38, 0xae, + 0x7a, 0xb4, 0x90, 0xc3, 0xaf, 0xe1, 0xb2, 0x56, 0x2e, 0x31, 0xd2, 0xa7, 0x14, 0x52, 0x86, 0x24, + 0xea, 0x78, 0x6b, 0xeb, 0x46, 0x5a, 0x17, 0x2a, 0xb1, 0x16, 0x86, 0xcb, 0xf4, 0xb8, 0x2d, 0x2f, + 0xc2, 0x82, 0x0b, 0x68, 0xbd, 0x3b, 0xca, 0xba, 0x66, 0x1a, 0x8f, 0xbd, 0xc2, 0x15, 0x7b, 0x9c, + 0xac, 0xb5, 0xa6, 0x61, 0xb2, 0xe6, 0x75, 0x42, 0xfc, 0x23, 0x7d, 0x07, 0x63, 0xcd, 0xc0, 0x94, + 0xa8, 0x6a, 0xe3, 0x20, 0xb0, 0xfe, 0xc1, 0x08, 0x58, 0x9c, 0xb1, 0x69, 0xae, 0x22, 0xc1, 0x8f, + 0xc3, 0x04, 0xb1, 0x7c, 0x13, 0xb9, 0xa2, 0x3a, 0xc4, 0xa2, 0x5a, 0x26, 0x79, 0xf4, 0xdd, 0x52, + 0x33, 0x2a, 0xd5, 0x24, 0x2f, 0x31, 0xfa, 0x9f, 0x19, 0xd4, 0x24, 0x5b, 0x6c, 0x34, 0x73, 0x8c, + 0x41, 0x4d, 0x6a, 0x78, 0xd3, 0x55, 0xa6, 0xad, 0xb1, 0x81, 0x6f, 0xee, 0x48, 0xc6, 0xeb, 0xcb, + 0x1a, 0x9e, 0x6d, 0x8d, 0x15, 0x34, 0x12, 0xd9, 0xd2, 0x54, 0x24, 0x68, 0x5f, 0xe7, 0x25, 0x5f, + 0x8f, 0xe2, 0xe2, 0x59, 0xad, 0x62, 0x58, 0xbb, 0x4a, 0x89, 0x9e, 0x7c, 0x4e, 0x6b, 0xab, 0xb8, + 0xff, 0xfe, 0x4e, 0x06, 0xae, 0xb1, 0xd9, 0xd9, 0xf5, 0xdd, 0xe7, 0x6e, 0x1b, 0x1f, 0x61, 0x4d, + 0x4c, 0x7b, 0xe9, 0x17, 0x78, 0x99, 0x73, 0xe9, 0x68, 0x9a, 0xaf, 0x03, 0x73, 0x70, 0x93, 0x7f, + 0x39, 0x0d, 0xbf, 0xd5, 0xcf, 0xc0, 0xb2, 0x78, 0x4e, 0x18, 0xbb, 0xd5, 0xba, 0xa8, 0xcd, 0x56, + 0xd5, 0x2e, 0xa2, 0xb2, 0x86, 0x8b, 0x28, 0xcd, 0xc1, 0x1f, 0x0e, 0xb9, 0x99, 0x1a, 0x79, 0x7d, + 0x9f, 0xf7, 0xaf, 0x46, 0x60, 0x76, 0xd7, 0x39, 0x72, 0x3b, 0x44, 0xf7, 0x88, 0x14, 0x3a, 0xa8, + 0x92, 0xc8, 0x44, 0x36, 0x38, 0xf0, 0x2a, 0x25, 0xd5, 0xd8, 0x8a, 0x9a, 0x14, 0x28, 0x6b, 0x0a, + 0xee, 0xd7, 0x53, 0xff, 0x7c, 0xaa, 0xb9, 0x38, 0x13, 0xb1, 0x77, 0x34, 0xba, 0xa5, 0xe3, 0xb5, + 0x62, 0xd9, 0xf9, 0xa8, 0x9b, 0xf0, 0x09, 0x4c, 0x2a, 0x01, 0x74, 0x5c, 0x40, 0x13, 0x18, 0x28, + 0x5b, 0x4e, 0x7a, 0x87, 0x38, 0x35, 0x13, 0x93, 0x8a, 0x21, 0x25, 0xff, 0xd2, 0xd8, 0x1b, 0xce, + 0xbf, 0xf4, 0x1d, 0x23, 0x59, 0x38, 0x8c, 0xc7, 0xf9, 0xbe, 0xc1, 0xd0, 0x27, 0xbc, 0xc6, 0x07, + 0xab, 0x0a, 0xf5, 0x69, 0xc9, 0xe4, 0x54, 0x64, 0x55, 0x80, 0x9c, 0x48, 0x5b, 0x69, 0xfd, 0x8f, + 0x71, 0x98, 0xdf, 0x76, 0x83, 0x50, 0xcc, 0x6e, 0x10, 0xa9, 0xfe, 0x29, 0x51, 0xa6, 0x1c, 0x82, + 0xb8, 0x95, 0xc6, 0xca, 0x1b, 0xb1, 0x2c, 0x9a, 0x1a, 0x00, 0xfa, 0x50, 0x75, 0x45, 0x65, 0x95, + 0xdc, 0x1a, 0xc9, 0x04, 0x88, 0xaa, 0x8f, 0xea, 0x1d, 0xcd, 0xeb, 0xc6, 0xf6, 0xd5, 0x36, 0x29, + 0x50, 0xf7, 0x55, 0xe6, 0xb8, 0x5a, 0x8d, 0xbb, 0xe2, 0x58, 0x07, 0x4c, 0x29, 0x9e, 0x60, 0xcd, + 0xe4, 0x96, 0x1e, 0xad, 0x7d, 0xe9, 0xd1, 0x1a, 0xa3, 0x47, 0xe6, 0x9f, 0x28, 0x1e, 0xad, 0x38, + 0x13, 0x54, 0xaf, 0x16, 0x7b, 0xcd, 0xdd, 0xa6, 0x05, 0xea, 0x6b, 0x6e, 0xd6, 0x04, 0xed, 0xc1, + 0xdc, 0xae, 0x8f, 0x5b, 0x54, 0xb5, 0xac, 0xff, 0xd8, 0xf5, 0xf9, 0x11, 0x83, 0xfa, 0x45, 0x59, + 0xa2, 0xb1, 0xae, 0xa8, 0x6e, 0x60, 0x59, 0xaf, 0x6a, 0x98, 0x14, 0x70, 0xb4, 0x0e, 0x33, 0x75, + 0xec, 0xf8, 0xcd, 0xe3, 0x47, 0xf8, 0x25, 0x51, 0x8c, 0x41, 0x71, 0x22, 0x4a, 0xce, 0x12, 0xd0, + 0x1a, 0x32, 0x50, 0x5a, 0xa5, 0xde, 0x86, 0xe9, 0x40, 0xe8, 0xa7, 0x30, 0x5e, 0xf7, 0xfc, 0xb0, + 0xfa, 0x32, 0x96, 0x11, 0x93, 0x15, 0x56, 0xaf, 0x8a, 0x04, 0x35, 0x81, 0xe7, 0x87, 0x8d, 0x43, + 0x95, 0x6f, 0x1c, 0x0e, 0x3d, 0x20, 0x56, 0x17, 0xb1, 0x04, 0x43, 0xa7, 0x5d, 0xa3, 0x51, 0x1d, + 0xec, 0x3d, 0x1e, 0xb7, 0xac, 0xa8, 0xf9, 0x18, 0x3a, 0xed, 0x06, 0xdd, 0xe7, 0xf5, 0x7b, 0x39, + 0x15, 0x0a, 0xbd, 0x84, 0x79, 0x5d, 0xd0, 0x79, 0xfa, 0x2a, 0xd0, 0x72, 0xcb, 0xa5, 0x35, 0xa9, + 0xde, 0xe1, 0x54, 0xde, 0x88, 0xe7, 0x4d, 0x4b, 0x64, 0xb4, 0x4a, 0xed, 0x02, 0x3d, 0xa6, 0xf9, + 0x81, 0x18, 0x67, 0x2a, 0x01, 0x0b, 0x13, 0x63, 0x8f, 0x00, 0x6f, 0x9e, 0xf5, 0xcb, 0xd7, 0x7b, + 0x34, 0x49, 0x22, 0xe5, 0xa8, 0xc3, 0x22, 0xd8, 0x55, 0x8e, 0x26, 0x40, 0x5f, 0xc7, 0xb9, 0xf9, + 0xc7, 0x19, 0x58, 0x88, 0x89, 0x1b, 0x3f, 0x9f, 0x3e, 0x81, 0xbc, 0x2c, 0xe4, 0x2e, 0x9d, 0xa2, + 0xdc, 0x47, 0x63, 0x7a, 0x98, 0x09, 0xbb, 0x58, 0x8b, 0x2a, 0xb1, 0x11, 0x0e, 0x74, 0x3f, 0xe6, + 0x07, 0x65, 0xe7, 0x9e, 0x0e, 0xd9, 0xd4, 0xf5, 0x05, 0x22, 0x9a, 0xa1, 0x4f, 0x01, 0x94, 0x59, + 0x66, 0x8b, 0x90, 0xc6, 0x70, 0xa6, 0x4f, 0xb0, 0xd2, 0xd8, 0xfa, 0xa3, 0x09, 0xb1, 0x4d, 0xf3, + 0x93, 0xf2, 0x9e, 0xef, 0x34, 0x4f, 0xa2, 0x60, 0xda, 0x0f, 0x93, 0x91, 0xab, 0xe7, 0xd1, 0x08, + 0xb7, 0xb5, 0x37, 0xf7, 0xe6, 0xf4, 0xbd, 0x51, 0xfa, 0x85, 0x91, 0x73, 0xa4, 0x5f, 0xb8, 0x07, + 0x13, 0x5b, 0x9d, 0xe7, 0x2e, 0x31, 0xca, 0x59, 0xe8, 0x25, 0x35, 0x69, 0x5d, 0x56, 0xa4, 0x32, + 0x86, 0xb7, 0x42, 0x9f, 0x42, 0x6e, 0xd3, 0x0b, 0xc2, 0x8e, 0x08, 0xbb, 0xe4, 0xab, 0x30, 0xa4, + 0x7e, 0xe1, 0xc6, 0x31, 0xaf, 0x52, 0x75, 0x8e, 0x68, 0x8e, 0x3e, 0x82, 0x89, 0x4a, 0xab, 0x45, + 0x16, 0x35, 0x57, 0x08, 0x34, 0xf7, 0x27, 0x87, 0x74, 0x58, 0x8d, 0xda, 0x25, 0x6f, 0x8c, 0xbe, + 0xd0, 0x9d, 0xb4, 0x13, 0x51, 0x72, 0x92, 0xf4, 0x3c, 0xb8, 0xba, 0x03, 0xf7, 0x1d, 0x71, 0x39, + 0x96, 0x8b, 0xd2, 0xbd, 0xd0, 0xd4, 0x2d, 0x9a, 0x26, 0xa5, 0x77, 0x6b, 0x5b, 0x90, 0xdf, 0xea, + 0xb8, 0xa1, 0x4b, 0x13, 0x5e, 0xe4, 0xb5, 0xfd, 0x78, 0xd7, 0xf1, 0x43, 0xb7, 0xe9, 0x76, 0x9d, + 0x4e, 0xc8, 0x66, 0xcb, 0x15, 0x0d, 0xd5, 0xd9, 0x92, 0xd0, 0x6a, 0x6a, 0x2c, 0x78, 0x63, 0xa9, + 0xb1, 0x52, 0xb3, 0x4b, 0x4d, 0xbe, 0x7a, 0x76, 0xa9, 0x55, 0x36, 0x97, 0xd4, 0x06, 0x9e, 0x8a, + 0x04, 0x91, 0xfa, 0x2e, 0x75, 0x63, 0xd7, 0x96, 0x0d, 0xd1, 0x0d, 0x9a, 0xe0, 0x62, 0x3a, 0x0a, + 0x88, 0xd6, 0x2e, 0xe3, 0xb3, 0x5b, 0x6b, 0xa8, 0x01, 0x53, 0xa4, 0xf5, 0xae, 0xd7, 0x76, 0x9b, + 0x2e, 0x0e, 0x8a, 0x33, 0x9a, 0xb3, 0x5b, 0x5f, 0x14, 0xb4, 0xd1, 0xcb, 0x3a, 0x0e, 0xd9, 0x9e, + 0x4a, 0xbb, 0xee, 0x72, 0x40, 0x75, 0x4f, 0x55, 0x11, 0xa2, 0x9f, 0x93, 0xfd, 0x40, 0xc5, 0xc2, + 0x13, 0xd7, 0x2e, 0xa6, 0x76, 0x71, 0xf0, 0xbe, 0xd8, 0x28, 0xd8, 0x43, 0x97, 0x90, 0x15, 0xeb, + 0x1b, 0x85, 0x0a, 0x60, 0xd9, 0x50, 0x8c, 0x6e, 0xe4, 0x62, 0xab, 0xf7, 0xa3, 0xe4, 0x33, 0x1a, + 0x9a, 0xb4, 0x31, 0x7a, 0x46, 0xa3, 0x0a, 0x44, 0xf4, 0xa0, 0x66, 0x1f, 0xae, 0xd9, 0xf8, 0xd4, + 0x7b, 0x8e, 0xdf, 0x2c, 0xda, 0x9f, 0xc1, 0x55, 0x1d, 0xe1, 0x7e, 0xb7, 0x45, 0x9f, 0xe5, 0xb2, + 0xab, 0xbf, 0xd4, 0xb4, 0x2f, 0x1c, 0x80, 0xa5, 0x7d, 0x61, 0xb9, 0x04, 0xc8, 0x9f, 0xea, 0x7a, + 0xa0, 0x75, 0x96, 0x07, 0x4b, 0x3a, 0xf2, 0x4a, 0xab, 0xa5, 0x2c, 0x04, 0x62, 0x50, 0x2a, 0x9f, + 0x31, 0x0b, 0x56, 0x5d, 0x31, 0x54, 0x73, 0x76, 0xa3, 0x02, 0x75, 0xad, 0x2a, 0xed, 0x2c, 0x0c, + 0xe5, 0x38, 0x7b, 0x08, 0xcb, 0xd4, 0x3e, 0xab, 0x30, 0xad, 0x7c, 0xca, 0x03, 0x21, 0x55, 0x25, + 0x4a, 0x0f, 0x3a, 0xc3, 0x74, 0x10, 0xab, 0x09, 0xa5, 0x34, 0xa6, 0xd1, 0x65, 0xf6, 0x12, 0xad, + 0x47, 0x4b, 0x77, 0xf8, 0x95, 0xeb, 0x65, 0xe3, 0xb3, 0xbf, 0xbf, 0x35, 0x0a, 0xd7, 0xf8, 0x64, + 0xbc, 0xc9, 0x19, 0x47, 0x3f, 0xc0, 0xa4, 0x32, 0xc7, 0x9c, 0xe9, 0x37, 0x44, 0x94, 0x86, 0x49, + 0x16, 0x98, 0xbe, 0xec, 0xd1, 0x82, 0x46, 0x6c, 0xba, 0x89, 0x61, 0xac, 0x8a, 0x4d, 0x1b, 0x66, + 0xf4, 0x89, 0xe6, 0x87, 0x8d, 0x5b, 0xa9, 0x9d, 0xe8, 0x4d, 0x45, 0x02, 0x84, 0x56, 0x23, 0x75, + 0xba, 0x69, 0x96, 0x5d, 0x5d, 0x88, 0x7e, 0x84, 0xd9, 0xc4, 0x2c, 0xf3, 0xb3, 0xc9, 0xed, 0xd4, + 0x0e, 0x13, 0xad, 0x99, 0xf2, 0xf3, 0x69, 0xb1, 0xb1, 0xdb, 0x64, 0x27, 0xa8, 0x05, 0x53, 0xea, + 0xc4, 0xf3, 0xc3, 0xcb, 0xcd, 0x01, 0xac, 0x64, 0x0d, 0x99, 0xaa, 0xe2, 0xbc, 0xa4, 0x73, 0xaf, + 0x27, 0xa6, 0xd7, 0xb0, 0x56, 0x73, 0x30, 0xce, 0xbe, 0x89, 0x0a, 0xd8, 0xf5, 0x71, 0x80, 0x3b, + 0x4d, 0xac, 0x06, 0xdc, 0xbc, 0xae, 0x0a, 0xf8, 0x77, 0x19, 0x28, 0xa6, 0xe1, 0xad, 0xe3, 0x4e, + 0x0b, 0xed, 0x42, 0x21, 0xde, 0x11, 0x97, 0x6a, 0x4b, 0x58, 0x54, 0x66, 0x92, 0x36, 0x2f, 0xd9, + 0x09, 0x68, 0xb2, 0x09, 0x29, 0x65, 0x17, 0x8c, 0x6c, 0x4a, 0x82, 0x2a, 0x0e, 0x8e, 0x77, 0xdf, + 0x85, 0xbc, 0xfc, 0x81, 0x02, 0x94, 0x83, 0xd1, 0xad, 0x9d, 0xad, 0x3d, 0x96, 0xf0, 0x6e, 0x77, + 0x7f, 0xaf, 0x90, 0x41, 0x00, 0xe3, 0x6b, 0xeb, 0xdb, 0xeb, 0x7b, 0xeb, 0x85, 0xec, 0xbb, 0x0d, + 0xd5, 0x55, 0x80, 0xae, 0xc1, 0xe2, 0xda, 0xfa, 0xc1, 0x56, 0x6d, 0xbd, 0xb1, 0xf7, 0x67, 0x76, + 0xd7, 0x1b, 0xfa, 0x83, 0x8d, 0x79, 0x28, 0xa8, 0x95, 0x7b, 0x4f, 0xf6, 0x76, 0x0b, 0x19, 0x54, + 0x84, 0x79, 0xb5, 0xf4, 0xe9, 0x7a, 0xb5, 0xb2, 0xbf, 0xb7, 0xb9, 0x53, 0x18, 0xb1, 0x46, 0x73, + 0xd9, 0x42, 0xf6, 0xdd, 0x1f, 0x34, 0x3f, 0x02, 0x5a, 0x82, 0x22, 0x6f, 0xbe, 0x5f, 0xaf, 0x6c, + 0x98, 0xbb, 0x60, 0xb5, 0x8f, 0x1f, 0x54, 0x0a, 0x19, 0x74, 0x1d, 0xae, 0x6a, 0xa5, 0xbb, 0x95, + 0x7a, 0xfd, 0xe9, 0x13, 0x7b, 0x6d, 0x7b, 0xbd, 0x5e, 0x2f, 0x64, 0xdf, 0xbd, 0xcd, 0xe3, 0x24, + 0xd0, 0x0c, 0xc0, 0xda, 0x7a, 0xbd, 0xb6, 0xbe, 0xb3, 0xb6, 0xb5, 0xb3, 0x51, 0xb8, 0x84, 0xa6, + 0x21, 0x5f, 0x91, 0x9f, 0x99, 0x95, 0xdf, 0x75, 0x60, 0x92, 0xf0, 0x53, 0x1c, 0xbb, 0x1b, 0xb0, + 0xf8, 0xd8, 0x71, 0x3b, 0xa1, 0xe3, 0x76, 0xb8, 0x14, 0x88, 0x39, 0x44, 0xe5, 0x01, 0x93, 0x4a, + 0xe4, 0xa1, 0x34, 0x2c, 0x1a, 0xec, 0x4e, 0xe6, 0x7e, 0x06, 0xd5, 0x61, 0x3e, 0xcd, 0x80, 0x45, + 0x96, 0x9e, 0x49, 0x23, 0x4d, 0xad, 0x95, 0x4c, 0x7b, 0x30, 0x7a, 0x0c, 0xb3, 0x89, 0x4d, 0x55, + 0xd2, 0x6b, 0xda, 0x6e, 0x07, 0xa1, 0x2b, 0x52, 0x97, 0x6a, 0xe8, 0xc6, 0xb7, 0xd4, 0x00, 0x5d, + 0x49, 0x28, 0xec, 0x75, 0xb2, 0x68, 0x8c, 0xc8, 0xee, 0x67, 0x90, 0x0d, 0xf3, 0x69, 0xdb, 0xb3, + 0x1c, 0xf2, 0x80, 0xbd, 0xbb, 0x64, 0xe8, 0x8e, 0xe0, 0x4c, 0xdb, 0x00, 0x24, 0xce, 0x01, 0xbb, + 0x83, 0x11, 0xe7, 0x17, 0xc4, 0xf4, 0xe9, 0xb4, 0x1e, 0x61, 0xdc, 0xad, 0xb4, 0xdd, 0xe7, 0x38, + 0x40, 0x22, 0x96, 0x51, 0x16, 0x99, 0x60, 0xef, 0x64, 0xd0, 0x6f, 0xc1, 0x24, 0xcd, 0x89, 0xcc, + 0x43, 0x6f, 0xa6, 0xd4, 0x3c, 0xc9, 0x25, 0xf1, 0x45, 0x2b, 0xef, 0x67, 0xd0, 0x97, 0x30, 0xb1, + 0x81, 0x69, 0xec, 0x09, 0xba, 0x19, 0xfb, 0xe9, 0x8f, 0xad, 0x8e, 0x3c, 0x97, 0x08, 0x82, 0xe3, + 0x7e, 0x24, 0x54, 0x83, 0x1c, 0x07, 0x0f, 0x90, 0x15, 0x83, 0x0f, 0x52, 0x10, 0xcc, 0xc5, 0x10, + 0x90, 0xa3, 0x21, 0xaa, 0x41, 0x5e, 0x06, 0xc0, 0xa0, 0x45, 0x43, 0xd4, 0x4d, 0xa9, 0x98, 0xac, + 0xe0, 0xbe, 0xc9, 0x91, 0xbf, 0x9e, 0xcd, 0xa0, 0x7b, 0x00, 0xec, 0xe5, 0x24, 0x1d, 0x4b, 0x9c, + 0xd0, 0x52, 0x82, 0x81, 0x68, 0x83, 0xe8, 0x96, 0x36, 0x0e, 0xf1, 0x79, 0x07, 0x6f, 0x9a, 0xad, + 0x6d, 0x98, 0x91, 0xef, 0x18, 0xcf, 0xcf, 0x09, 0x13, 0xb6, 0xcf, 0xc8, 0x0a, 0x62, 0x89, 0x04, + 0x64, 0xc4, 0x29, 0x32, 0xc5, 0xa0, 0xca, 0xe9, 0x64, 0xcd, 0x14, 0x58, 0x99, 0x70, 0x5a, 0xc2, + 0xc6, 0x53, 0x50, 0xc7, 0x60, 0x31, 0x94, 0xd4, 0x7e, 0xf5, 0xe8, 0x53, 0x74, 0x43, 0x21, 0x20, + 0x35, 0x68, 0xb6, 0x74, 0x73, 0x40, 0x0b, 0x36, 0x4f, 0x54, 0xeb, 0x3c, 0x84, 0x69, 0x2d, 0x5e, + 0x11, 0x89, 0xa7, 0x14, 0x69, 0x01, 0xa5, 0xa5, 0xa5, 0xf4, 0x4a, 0xee, 0x41, 0x78, 0x40, 0x95, + 0x4d, 0x2c, 0xc1, 0x63, 0x29, 0x2d, 0x91, 0x23, 0x73, 0x8b, 0x94, 0x44, 0xb2, 0x9e, 0x18, 0xc8, + 0x3a, 0xcc, 0xc9, 0x8b, 0x26, 0xe5, 0x57, 0x33, 0x0c, 0x29, 0x21, 0x8d, 0x33, 0xf7, 0x35, 0xcc, + 0x71, 0x39, 0xd0, 0xd0, 0x14, 0xa4, 0x72, 0xe1, 0xd9, 0x03, 0x8d, 0x08, 0x1e, 0xc2, 0x42, 0x3d, + 0x36, 0x1e, 0x66, 0xab, 0x5d, 0xd5, 0x51, 0x28, 0xc9, 0x20, 0x8d, 0xb8, 0x1e, 0x01, 0xaa, 0xf7, + 0x0e, 0x4f, 0x5d, 0x89, 0xee, 0xb9, 0x8b, 0x5f, 0xa0, 0xeb, 0xb1, 0x21, 0x91, 0x42, 0xda, 0x8c, + 0x6a, 0xa7, 0x92, 0x61, 0xc4, 0x68, 0x8f, 0x65, 0x96, 0x60, 0x59, 0xb2, 0x9c, 0xae, 0x73, 0xe8, + 0xb6, 0xdd, 0x90, 0x9c, 0xd1, 0x6e, 0x68, 0x00, 0x6a, 0x95, 0x98, 0xc1, 0xab, 0xc6, 0x16, 0xe8, + 0x2b, 0x98, 0xde, 0xc0, 0x61, 0x94, 0xef, 0x12, 0x2d, 0x26, 0x32, 0x64, 0xf2, 0x79, 0x13, 0x21, + 0x07, 0x7a, 0x92, 0xcd, 0x2d, 0x28, 0x30, 0xe5, 0xaa, 0xa0, 0xb8, 0x9e, 0x40, 0xc1, 0x9b, 0x38, + 0xbe, 0x73, 0x1a, 0x18, 0xb9, 0x75, 0x0f, 0x46, 0x77, 0xdd, 0xce, 0x11, 0x12, 0x37, 0x08, 0x4a, + 0xbe, 0xb8, 0xd2, 0x9c, 0x56, 0xc6, 0x45, 0xef, 0x10, 0xca, 0x2c, 0xd1, 0x63, 0x32, 0xb9, 0xa2, + 0xc8, 0x66, 0xff, 0x96, 0x0c, 0x33, 0x1e, 0x90, 0x10, 0x52, 0xf2, 0x27, 0x5e, 0x7f, 0xb0, 0x8a, + 0x76, 0x29, 0xd7, 0x93, 0x1d, 0xa0, 0x5b, 0xd1, 0x7e, 0x6a, 0xcc, 0xed, 0x58, 0x42, 0x71, 0xc4, + 0x07, 0xab, 0x48, 0x26, 0xa4, 0x48, 0x41, 0x7a, 0x5b, 0xdb, 0xf6, 0x2f, 0x86, 0xf7, 0x2b, 0xc8, + 0xcb, 0xc4, 0x86, 0x52, 0xdf, 0xc4, 0xb3, 0x31, 0x4a, 0x05, 0x9e, 0xcc, 0x81, 0xf8, 0x05, 0xcb, + 0x41, 0xaa, 0xc3, 0xc7, 0x73, 0xff, 0x19, 0x27, 0xef, 0x53, 0x98, 0x54, 0xb2, 0xfe, 0xc9, 0xc5, + 0x92, 0xcc, 0x04, 0x58, 0xd2, 0x7f, 0x1d, 0xe9, 0x3e, 0xd9, 0x34, 0x26, 0x78, 0x9a, 0x59, 0xb4, + 0x10, 0x81, 0x29, 0x49, 0xcf, 0x62, 0x20, 0x68, 0x95, 0xee, 0x77, 0xac, 0xa3, 0x2b, 0x3a, 0x84, + 0xb9, 0x97, 0x55, 0x00, 0x36, 0x66, 0xda, 0x91, 0x5e, 0x6d, 0x1c, 0xd5, 0x2a, 0xd9, 0xcf, 0x5a, + 0x17, 0x04, 0xfa, 0x4a, 0xec, 0x69, 0x14, 0xa8, 0xa8, 0x71, 0x52, 0x1d, 0x95, 0x09, 0x7e, 0x0b, + 0x0a, 0x95, 0x26, 0xd5, 0xb2, 0x32, 0x0f, 0x1b, 0x5a, 0x96, 0x2b, 0x58, 0xaf, 0x10, 0xb8, 0x16, + 0xe2, 0x69, 0xdd, 0xb6, 0xb1, 0x43, 0x03, 0x21, 0x17, 0xe5, 0x5e, 0x1b, 0xab, 0x4a, 0x87, 0x30, + 0x12, 0xb5, 0x0e, 0xf3, 0x35, 0xa7, 0xd3, 0xc4, 0xed, 0xd7, 0x43, 0xf3, 0x19, 0x55, 0x37, 0x4a, + 0x8e, 0xba, 0x2b, 0x71, 0x78, 0xae, 0x6d, 0x66, 0xe5, 0xd9, 0x50, 0x36, 0xad, 0xc0, 0x65, 0xc6, + 0xc4, 0x88, 0x2d, 0x26, 0x68, 0x53, 0xf7, 0x1f, 0xc3, 0xcc, 0x3a, 0x51, 0xc7, 0xbd, 0x96, 0xcb, + 0x62, 0xe6, 0x91, 0x1e, 0x04, 0x6d, 0x04, 0xdc, 0x14, 0x59, 0x43, 0x95, 0xe4, 0x6d, 0x52, 0xc8, + 0x93, 0xf9, 0xf1, 0x4a, 0xf3, 0x02, 0xad, 0x9a, 0xe7, 0x8d, 0xee, 0xbd, 0x47, 0x22, 0x41, 0x50, + 0x2c, 0x25, 0x97, 0xaa, 0x50, 0x8c, 0x09, 0xbb, 0x4a, 0x6f, 0x0d, 0x6e, 0xa4, 0xda, 0x62, 0x36, + 0x2c, 0x1a, 0xd2, 0x9d, 0xa1, 0xb7, 0xa5, 0x59, 0x3c, 0x28, 0x1d, 0x5a, 0x8a, 0xb9, 0xf6, 0xad, + 0x92, 0xf4, 0xc6, 0x80, 0x73, 0x70, 0x1e, 0x34, 0x23, 0x83, 0x65, 0x5c, 0x68, 0x6a, 0xbe, 0x32, + 0xf4, 0x8e, 0x8e, 0x7d, 0x40, 0x4e, 0x33, 0x63, 0x0f, 0x4f, 0xa8, 0xe8, 0x45, 0xe9, 0xb2, 0xa4, + 0xd1, 0x93, 0x96, 0xd3, 0x4c, 0x1a, 0x3d, 0xa9, 0xc9, 0xc6, 0x18, 0x83, 0x37, 0xe0, 0x72, 0x2c, + 0x73, 0x18, 0xba, 0x1e, 0x67, 0xec, 0x10, 0x86, 0x32, 0x44, 0x8f, 0x85, 0x60, 0x27, 0x11, 0xa5, + 0xe7, 0x12, 0x33, 0x8d, 0x91, 0xa1, 0xdb, 0x97, 0x26, 0x90, 0x9a, 0x1d, 0x0c, 0xdd, 0x4c, 0x61, + 0xe1, 0xf9, 0x58, 0xc7, 0xd0, 0xd6, 0xa1, 0x10, 0x4f, 0xae, 0x85, 0x96, 0x25, 0x97, 0x52, 0x33, + 0x88, 0x95, 0xca, 0xc6, 0x7a, 0xbe, 0xe9, 0x3c, 0x8c, 0x26, 0x85, 0x5d, 0x40, 0xc6, 0x27, 0x45, + 0x4d, 0xac, 0x94, 0x98, 0x14, 0x3d, 0xcb, 0xd1, 0x06, 0x8d, 0x66, 0x57, 0x32, 0x28, 0x19, 0x4f, + 0xa7, 0xd7, 0xd3, 0xf0, 0x44, 0x97, 0x62, 0x75, 0x91, 0xc5, 0x58, 0xa1, 0x6b, 0x59, 0xdb, 0x37, + 0x93, 0xa4, 0x95, 0x8d, 0xf5, 0x72, 0xa4, 0x85, 0x78, 0xbe, 0x28, 0x89, 0xd4, 0x90, 0x48, 0xca, + 0x28, 0xca, 0x0f, 0x60, 0x5e, 0x9f, 0xc5, 0x21, 0xe3, 0x35, 0xe1, 0xd9, 0x83, 0x85, 0xd4, 0xd4, + 0x53, 0x52, 0x17, 0x0d, 0x4a, 0x4c, 0x35, 0xc0, 0x82, 0x9e, 0xd6, 0x32, 0x46, 0x21, 0x71, 0xcb, + 0x1a, 0x4b, 0x4e, 0x95, 0x98, 0xd3, 0x94, 0xcc, 0x55, 0x6c, 0x4e, 0x95, 0xec, 0x53, 0xe7, 0x99, + 0xd3, 0xb4, 0x64, 0x55, 0x92, 0xfd, 0x0a, 0x5d, 0x62, 0x53, 0x8d, 0x57, 0x5c, 0x84, 0xfd, 0xe7, + 0x21, 0xcd, 0x84, 0x67, 0x8d, 0xda, 0x4c, 0xf2, 0x27, 0xe7, 0xae, 0x6a, 0x6c, 0xd2, 0xd6, 0x51, + 0x49, 0x1b, 0x9c, 0xbe, 0x84, 0x6a, 0x30, 0xa5, 0x26, 0xbf, 0x32, 0x52, 0x71, 0x2d, 0x89, 0x23, + 0x50, 0x4e, 0x71, 0x33, 0x92, 0x0b, 0x8c, 0x9a, 0xa5, 0x38, 0x73, 0x34, 0x82, 0xcc, 0x43, 0x42, + 0x2a, 0x6b, 0x86, 0x90, 0x64, 0x36, 0x36, 0xe6, 0x98, 0xd9, 0xa5, 0xff, 0x22, 0xa1, 0xe1, 0x87, + 0x0d, 0x8d, 0x68, 0xf6, 0xe9, 0xcb, 0x1b, 0x35, 0x93, 0x15, 0x52, 0xa4, 0x24, 0x25, 0xc3, 0x55, + 0x69, 0xd9, 0x54, 0xad, 0xea, 0xfd, 0x6f, 0x60, 0x36, 0x91, 0xb1, 0x4b, 0xba, 0xd7, 0x4c, 0xb9, + 0xbc, 0x06, 0xeb, 0xd6, 0x4d, 0x32, 0xe0, 0x18, 0xe0, 0xc1, 0xca, 0x70, 0xa4, 0xc9, 0x1d, 0x7a, + 0x5b, 0x3c, 0xd6, 0x49, 0x23, 0xce, 0x94, 0x17, 0x6c, 0xb8, 0x82, 0x88, 0x65, 0x04, 0x8b, 0x29, + 0x88, 0xf4, 0x7c, 0x61, 0x46, 0xac, 0x3f, 0xa7, 0x19, 0xc2, 0x63, 0xd9, 0xa6, 0xa4, 0x77, 0xc3, + 0x98, 0x61, 0x4c, 0x7a, 0x37, 0xcc, 0xa9, 0xbf, 0x18, 0x37, 0xb7, 0x61, 0x3e, 0x2d, 0x7f, 0x97, + 0xe2, 0x0d, 0x34, 0x26, 0xf7, 0x4a, 0xe1, 0xa8, 0x2d, 0x56, 0xbb, 0x01, 0xdb, 0x80, 0x6c, 0x5e, + 0x46, 0x0e, 0x7c, 0x27, 0x72, 0xb4, 0x25, 0xb3, 0x6e, 0xc9, 0x33, 0xe0, 0x90, 0xb4, 0x5c, 0x03, + 0x4c, 0xd5, 0xcb, 0x75, 0xf7, 0xa8, 0xa3, 0x24, 0xb5, 0x92, 0x86, 0x6a, 0x32, 0x31, 0x97, 0xd4, + 0x2c, 0x69, 0x39, 0xb0, 0x9e, 0xc0, 0xbc, 0xd8, 0xb8, 0xd5, 0xe4, 0x4b, 0xa8, 0x64, 0xce, 0xfe, + 0x24, 0xb5, 0x4c, 0x6a, 0xb6, 0x26, 0x76, 0xd2, 0xa3, 0x3f, 0x69, 0xa6, 0x9c, 0xf4, 0x94, 0xac, + 0x48, 0x25, 0x3d, 0x81, 0x12, 0xfa, 0x9c, 0x9e, 0xf4, 0x58, 0x0a, 0x51, 0xb3, 0xab, 0x59, 0xc3, + 0x14, 0xe9, 0xb4, 0x55, 0xe1, 0x8c, 0xa4, 0x1d, 0xea, 0x98, 0x87, 0x1f, 0xde, 0x28, 0x90, 0x7e, + 0x78, 0x53, 0x09, 0x35, 0xbb, 0x7c, 0xa6, 0xd4, 0x57, 0xfb, 0x92, 0x57, 0x29, 0x09, 0x43, 0x24, + 0xaf, 0xd2, 0xd2, 0x70, 0xd0, 0xb3, 0xc2, 0x9e, 0x30, 0x0c, 0x23, 0x7c, 0xd7, 0x07, 0xe6, 0xd1, + 0x28, 0x2d, 0x0f, 0x4e, 0x3e, 0xc1, 0xef, 0x1c, 0x0a, 0xf1, 0xc4, 0x02, 0x28, 0x2d, 0x0d, 0x8a, + 0x92, 0xaf, 0x41, 0x9a, 0x37, 0xc6, 0x8c, 0x04, 0xbb, 0xc2, 0xe8, 0xd4, 0xf1, 0x1a, 0x92, 0x61, + 0xa8, 0xa8, 0x07, 0x9b, 0x11, 0x51, 0x8e, 0x01, 0xd5, 0x34, 0x4c, 0xe4, 0x30, 0x50, 0xcd, 0x88, + 0x94, 0xb4, 0x04, 0xae, 0x88, 0x13, 0x4a, 0x4f, 0xad, 0xf5, 0x8e, 0x6e, 0xbc, 0x0d, 0x08, 0xc8, + 0x1e, 0x7a, 0xab, 0x83, 0x7e, 0x47, 0x64, 0x54, 0x4d, 0x26, 0x9e, 0x79, 0x3b, 0xe6, 0xdd, 0x49, + 0x0f, 0xe1, 0x2d, 0x0d, 0xca, 0x6b, 0x83, 0x1e, 0xd3, 0xb7, 0x9e, 0x4f, 0xb6, 0xd6, 0x6a, 0xfc, + 0x87, 0x8b, 0x3d, 0x3f, 0xe1, 0x36, 0x57, 0x7e, 0x7c, 0x27, 0x62, 0x32, 0x6b, 0xa2, 0x01, 0x1e, + 0xac, 0xa2, 0x3a, 0xf5, 0xde, 0x6a, 0xa5, 0x29, 0x9e, 0xf3, 0x14, 0x84, 0xa5, 0x74, 0x84, 0xf4, + 0x2a, 0x61, 0x5d, 0xec, 0x66, 0x3a, 0x99, 0x06, 0x1a, 0x06, 0x59, 0x01, 0x4c, 0x6c, 0xd2, 0xd1, + 0x08, 0xea, 0x86, 0xc9, 0x11, 0xe3, 0x58, 0xbd, 0xf2, 0x78, 0xfb, 0x95, 0x38, 0xa6, 0x01, 0x1e, + 0xac, 0x70, 0x8e, 0x69, 0xa5, 0x17, 0xe3, 0x58, 0x0c, 0xa1, 0xce, 0x31, 0x9d, 0x4c, 0x03, 0x0d, + 0xc3, 0x39, 0x96, 0x8e, 0xe6, 0xbc, 0x1c, 0xfb, 0x86, 0xee, 0xcf, 0x1b, 0xf4, 0xe5, 0xe1, 0x85, + 0x78, 0x56, 0x14, 0x16, 0xac, 0x0e, 0x7a, 0xb0, 0x8a, 0x9e, 0xd2, 0x64, 0xaf, 0xb1, 0xf2, 0xf3, + 0xf1, 0x6d, 0xc9, 0x84, 0x94, 0x72, 0x6e, 0x0b, 0x16, 0x18, 0xe7, 0xe2, 0xe4, 0x1a, 0x69, 0x31, + 0x0e, 0x7b, 0x43, 0x18, 0x3b, 0x71, 0x54, 0x17, 0xe5, 0xdf, 0x1a, 0x15, 0x91, 0x3d, 0x9f, 0xd8, + 0xa7, 0xad, 0xa4, 0xf1, 0xaa, 0x23, 0x11, 0xfe, 0x76, 0xbd, 0xf9, 0xc1, 0x0a, 0xda, 0xa2, 0xb3, + 0xa0, 0x17, 0x0f, 0xb2, 0xee, 0xd3, 0xd1, 0x50, 0x26, 0x6d, 0x0a, 0x83, 0x28, 0x46, 0x93, 0xa9, + 0x6f, 0x33, 0x51, 0xf2, 0xe8, 0x73, 0xce, 0xd1, 0x99, 0x58, 0xc4, 0x36, 0x76, 0x76, 0xd2, 0x18, + 0xc6, 0x99, 0xf8, 0x8f, 0xfe, 0xa3, 0x9f, 0x42, 0x5e, 0x00, 0x0f, 0x67, 0x48, 0x1c, 0x9a, 0x32, + 0xe4, 0x2b, 0x98, 0xe4, 0x0c, 0xa1, 0x14, 0x98, 0x7a, 0x32, 0x92, 0xff, 0x25, 0x4c, 0x72, 0x36, + 0x0c, 0x1c, 0x81, 0xf9, 0xb2, 0x72, 0x61, 0x03, 0x87, 0x29, 0x3f, 0x4a, 0x3d, 0x6c, 0x30, 0x69, + 0xbf, 0x81, 0x8d, 0x0e, 0xe8, 0x9b, 0x6d, 0xd3, 0x0f, 0x88, 0x9b, 0x50, 0x0e, 0xfd, 0xf9, 0x72, + 0x82, 0xb7, 0x6e, 0xc6, 0x3b, 0x14, 0xde, 0x38, 0xfa, 0x1d, 0x58, 0xa2, 0x37, 0x1b, 0x17, 0xa5, + 0xd8, 0x7c, 0x48, 0xb9, 0x1a, 0x05, 0x35, 0xc4, 0x7f, 0xbb, 0xdc, 0x84, 0x6c, 0xd8, 0xcf, 0xa6, + 0x13, 0xac, 0x75, 0x23, 0xd6, 0x61, 0xd0, 0x03, 0x36, 0xa3, 0x6b, 0x74, 0xec, 0x17, 0xa4, 0x76, + 0xb0, 0xa6, 0x89, 0xfd, 0x98, 0xfa, 0xb0, 0x98, 0x8c, 0xf8, 0xcf, 0xb5, 0x13, 0x2c, 0xf5, 0x04, + 0x16, 0x53, 0xeb, 0x41, 0x9b, 0x0f, 0x1d, 0xda, 0x39, 0xa9, 0x31, 0x5f, 0xb9, 0xe4, 0x65, 0x42, + 0x1b, 0xa4, 0xd8, 0xf6, 0x5a, 0xba, 0x96, 0xd2, 0xb4, 0x1a, 0x41, 0x11, 0xa0, 0x0a, 0xdb, 0xe3, + 0xd5, 0xc4, 0x2e, 0x8a, 0x6f, 0x32, 0x35, 0xe3, 0x4b, 0x1c, 0x05, 0x3b, 0x9b, 0xd0, 0x5f, 0x78, + 0x57, 0xce, 0x26, 0x4a, 0xca, 0x8b, 0x92, 0x9e, 0x90, 0x82, 0xab, 0x30, 0x9a, 0x95, 0x42, 0xbd, + 0x85, 0x52, 0x93, 0x5e, 0xa8, 0x67, 0x13, 0x3d, 0x3d, 0x87, 0x3c, 0x9b, 0xd0, 0x0e, 0x75, 0xcc, + 0xc3, 0xcf, 0x26, 0x14, 0x48, 0x3f, 0x9b, 0xa8, 0x84, 0x9a, 0x17, 0x1e, 0x4a, 0xe6, 0xe7, 0x90, + 0xe7, 0x6e, 0x63, 0xea, 0x8e, 0x01, 0x17, 0x55, 0x73, 0x29, 0x99, 0x98, 0xa4, 0xcd, 0x6f, 0xce, + 0xd2, 0x54, 0xd2, 0x6f, 0x5d, 0xee, 0x67, 0xd0, 0x0e, 0x4d, 0xb9, 0x9e, 0xf6, 0xc3, 0xf7, 0x26, + 0xf9, 0x19, 0xf8, 0x4b, 0xfb, 0x04, 0x5f, 0x3d, 0x1d, 0xdf, 0x40, 0xb8, 0x01, 0xc7, 0xba, 0xab, + 0x3c, 0x4e, 0xe5, 0x02, 0x24, 0x9a, 0x45, 0x7c, 0x82, 0x79, 0x9e, 0xcd, 0xa0, 0x05, 0xf5, 0x97, + 0xe6, 0xe9, 0x96, 0x75, 0x17, 0xc6, 0x19, 0x90, 0x71, 0xb7, 0xd1, 0x7e, 0x9d, 0x1e, 0xbd, 0x2f, + 0xae, 0x83, 0x09, 0x88, 0x56, 0x65, 0xa4, 0xeb, 0x7d, 0xc8, 0x33, 0xb7, 0xdb, 0xf9, 0x41, 0x3e, + 0x17, 0x97, 0xc6, 0x83, 0x08, 0x33, 0xc7, 0x6a, 0x4c, 0xab, 0x6e, 0xec, 0x8b, 0x33, 0xf2, 0x4b, + 0xea, 0xfa, 0x14, 0xae, 0x06, 0x33, 0xfc, 0x42, 0xec, 0xa1, 0x20, 0x67, 0xe9, 0x27, 0xd4, 0xff, + 0x2a, 0x53, 0x9a, 0x99, 0xc8, 0x9f, 0x4d, 0x40, 0xa3, 0xcf, 0x61, 0x86, 0x31, 0x57, 0x02, 0x27, + 0x1b, 0x0d, 0xe0, 0xd9, 0x0c, 0x63, 0xf3, 0xab, 0x00, 0xff, 0x54, 0x38, 0x6a, 0x87, 0x92, 0x7d, + 0x1e, 0x17, 0xed, 0x70, 0xd6, 0x99, 0xb0, 0xfc, 0x0e, 0xdd, 0x74, 0xd3, 0xf3, 0xf0, 0x18, 0x91, + 0xdd, 0x51, 0x5c, 0xd0, 0x83, 0x33, 0xf8, 0x9c, 0xd0, 0x98, 0xc3, 0xd4, 0x46, 0xd2, 0x41, 0x36, + 0x24, 0x31, 0x4f, 0xe9, 0x27, 0x43, 0xdb, 0x49, 0x3f, 0x17, 0xcf, 0xf7, 0x9f, 0xde, 0xdf, 0x90, + 0x6c, 0x3c, 0x29, 0x2e, 0x43, 0x43, 0x92, 0x1b, 0x81, 0x50, 0xbf, 0xcc, 0x1c, 0x38, 0x06, 0xf3, + 0x11, 0x2d, 0x4a, 0xdb, 0x7f, 0xc1, 0x49, 0x30, 0x9b, 0x51, 0x28, 0x99, 0xfa, 0x07, 0x0d, 0x7a, + 0x21, 0xa7, 0x3a, 0x64, 0x4d, 0x29, 0x83, 0x36, 0x44, 0x80, 0x6b, 0xec, 0xb9, 0xa9, 0xe9, 0xe1, + 0xea, 0x80, 0xd3, 0x19, 0x0f, 0xf1, 0x7c, 0x23, 0x88, 0x92, 0xb3, 0x7d, 0x71, 0x44, 0xd2, 0x31, + 0x1c, 0x43, 0x64, 0x0d, 0x98, 0xde, 0xe1, 0x4e, 0xaf, 0xa2, 0x61, 0x5e, 0x2f, 0x3e, 0xa1, 0x4e, + 0x14, 0x4c, 0x98, 0xcc, 0x4f, 0x24, 0xb7, 0x7d, 0x63, 0xae, 0x24, 0x39, 0xbb, 0x03, 0x92, 0x1b, + 0xd5, 0xa2, 0x1f, 0x5c, 0xd2, 0x12, 0x1a, 0xd5, 0xec, 0x6d, 0xe9, 0xae, 0x4b, 0xcb, 0x74, 0x54, + 0x02, 0x51, 0x69, 0x6f, 0x93, 0xb5, 0x6e, 0xca, 0xa3, 0x13, 0x05, 0x44, 0x0d, 0x4e, 0x55, 0x24, + 0xd7, 0xfa, 0xd0, 0x84, 0x3c, 0x3b, 0x30, 0x9f, 0x96, 0xff, 0x46, 0x4e, 0xda, 0x80, 0xe4, 0x38, + 0xa9, 0x51, 0x57, 0xbb, 0xb0, 0x90, 0x9a, 0x83, 0x46, 0xde, 0x90, 0x0c, 0xca, 0x50, 0x93, 0x8a, + 0xf1, 0x5b, 0x58, 0x34, 0x24, 0x5c, 0x89, 0x1c, 0x88, 0x03, 0x13, 0xb2, 0x18, 0x05, 0xe2, 0x7b, + 0x28, 0x99, 0x73, 0x79, 0xa0, 0x3b, 0xba, 0x13, 0xd4, 0x9c, 0x41, 0xa3, 0x94, 0x9a, 0x7c, 0x08, + 0xed, 0xd1, 0xe4, 0x8a, 0x69, 0xc9, 0x3d, 0x24, 0xdd, 0x83, 0x93, 0x7f, 0x18, 0xa2, 0xe5, 0x16, + 0x0d, 0xf9, 0x3c, 0x06, 0x60, 0x3d, 0x07, 0xb5, 0x3b, 0x42, 0x2f, 0xe9, 0x09, 0x1e, 0x62, 0x81, + 0xf7, 0xa9, 0xd9, 0x1f, 0x52, 0xe9, 0x7c, 0x08, 0xd3, 0xda, 0x0b, 0x5b, 0x29, 0xfe, 0x69, 0xcf, + 0xbc, 0xa5, 0xb7, 0x3a, 0xf5, 0x51, 0x6e, 0xb5, 0xf0, 0xcb, 0xff, 0xb6, 0x9c, 0xf9, 0xe5, 0xaf, + 0x97, 0x33, 0xff, 0xf9, 0xd7, 0xcb, 0x99, 0x5f, 0xfd, 0x7a, 0x39, 0x73, 0x38, 0x4e, 0x9b, 0xaf, + 0xfe, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x16, 0x40, 0x7b, 0xf4, 0x93, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -23000,6 +23015,11 @@ func (m *AddMFADeviceSyncRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.DeviceUsage != 0 { + i = encodeVarintAuthservice(dAtA, i, uint64(m.DeviceUsage)) + i-- + dAtA[i] = 0x20 + } if m.NewMFAResponse != nil { { size, err := m.NewMFAResponse.MarshalToSizedBuffer(dAtA[:i]) @@ -28590,6 +28610,9 @@ func (m *AddMFADeviceSyncRequest) Size() (n int) { l = m.NewMFAResponse.Size() n += 1 + l + sovAuthservice(uint64(l)) } + if m.DeviceUsage != 0 { + n += 1 + sovAuthservice(uint64(m.DeviceUsage)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -41773,6 +41796,25 @@ func (m *AddMFADeviceSyncRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DeviceUsage", wireType) + } + m.DeviceUsage = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DeviceUsage |= DeviceUsage(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) diff --git a/api/client/proto/authservice.proto b/api/client/proto/authservice.proto index 693bbe6e2f2..6ae832a41e4 100644 --- a/api/client/proto/authservice.proto +++ b/api/client/proto/authservice.proto @@ -1021,6 +1021,9 @@ message AddMFADeviceSyncRequest { string NewDeviceName = 2 [ (gogoproto.jsontag) = "new_device_name,omitempty" ]; // NewMFAResponse is a user's new mfa response to a mfa register challenge. MFARegisterResponse NewMFAResponse = 3 [ (gogoproto.jsontag) = "new_mfa_response,omitempty" ]; + // DeviceUsage is the requested usage for the device. + // Defaults to DEVICE_USAGE_MFA. + DeviceUsage DeviceUsage = 4 [ (gogoproto.jsontag) = "device_usage,omitempty" ]; } // AddMFADeviceSyncResponse is a response to AddMFADeviceSyncRequest. @@ -1279,10 +1282,15 @@ message CRL { } // ChangeUserAuthenticationRequest defines a request to change a password and if enabled -// also adds a new MFA device from a user reset or from a new user invite. After successful changing -// of authentications a new web session is created. Users may also receive new recovery codes if the -// user meets the requirement to receive recovery codes. If a user previously had recovery codes, -// the previous codes become invalid as it is replaced with newly generated ones. +// also adds a new MFA device from a user reset or from a new user invite. User can also skip +// setting a new password if passwordless is enabled and just provide a new webauthn register +// response. +// +// After a successful request a new web session is created. +// +// Users may also receive new recovery codes if they meet the necessary requirements. If a user +// previously had recovery codes, the previous codes become invalid as it is replaced with newly +// generated ones. message ChangeUserAuthenticationRequest { // TokenID is the ID of a reset or invite token. // The token allows the user to change their credentials without being logged diff --git a/lib/auth/accountrecovery.go b/lib/auth/accountrecovery.go index 45491779348..ab696c2225f 100644 --- a/lib/auth/accountrecovery.go +++ b/lib/auth/accountrecovery.go @@ -416,10 +416,11 @@ func (s *Server) CompleteAccountRecovery(ctx context.Context, req *proto.Complet return trace.AccessDenied(completeRecoveryGenericErrMsg) } - _, err = s.verifyMFARespAndAddDevice(ctx, req.GetNewMFAResponse(), &newMFADeviceFields{ + _, err = s.verifyMFARespAndAddDevice(ctx, &newMFADeviceFields{ username: approvedToken.GetUser(), newDeviceName: req.GetNewDeviceName(), tokenID: approvedToken.GetName(), + deviceResp: req.GetNewMFAResponse(), }) if err != nil { return trace.Wrap(err) diff --git a/lib/auth/accountrecovery_test.go b/lib/auth/accountrecovery_test.go index b45971f30c8..3e9f75d2dce 100644 --- a/lib/auth/accountrecovery_test.go +++ b/lib/auth/accountrecovery_test.go @@ -684,7 +684,7 @@ func TestCompleteAccountRecovery(t *testing.T) { { name: "add new WEBAUTHN device", getRequest: func() *proto.CompleteAccountRecoveryRequest { - _, webauthnRegRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), approvedToken.GetName()) + _, webauthnRegRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), approvedToken.GetName(), proto.DeviceUsage_DEVICE_USAGE_MFA) require.NoError(t, err) return &proto.CompleteAccountRecoveryRequest{ @@ -812,7 +812,7 @@ func TestCompleteAccountRecovery_WithErrors(t *testing.T) { require.NotEmpty(t, devs) // New register response. - _, mfaResp, err := getMockedWebauthnAndRegisterRes(srv.Auth(), approvedToken.GetName()) + _, mfaResp, err := getMockedWebauthnAndRegisterRes(srv.Auth(), approvedToken.GetName(), proto.DeviceUsage_DEVICE_USAGE_MFA) require.NoError(t, err) return &proto.CompleteAccountRecoveryRequest{ @@ -989,7 +989,7 @@ func TestAccountRecoveryFlow(t *testing.T) { } }, getCompleteRequest: func(u *userAuthCreds, approvedTokenID string) *proto.CompleteAccountRecoveryRequest { - _, webauthnRegRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), approvedTokenID) + _, webauthnRegRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), approvedTokenID, proto.DeviceUsage_DEVICE_USAGE_MFA) require.NoError(t, err) return &proto.CompleteAccountRecoveryRequest{ @@ -1350,7 +1350,7 @@ func createUserWithSecondFactors(srv *TestTLSServer) (*userAuthCreds, error) { } // Insert a password, device, and recovery codes. - webDev, mfaResp, err := getMockedWebauthnAndRegisterRes(srv.Auth(), resetToken.GetName()) + webDev, mfaResp, err := getMockedWebauthnAndRegisterRes(srv.Auth(), resetToken.GetName(), proto.DeviceUsage_DEVICE_USAGE_MFA) if err != nil { return nil, trace.Wrap(err) } @@ -1383,15 +1383,24 @@ func createUserWithSecondFactors(srv *TestTLSServer) (*userAuthCreds, error) { }, nil } -func getMockedWebauthnAndRegisterRes(authSrv *Server, tokenID string) (*TestDevice, *proto.MFARegisterResponse, error) { +func getMockedWebauthnAndRegisterRes(authSrv *Server, tokenID string, usage proto.DeviceUsage) (*TestDevice, *proto.MFARegisterResponse, error) { res, err := authSrv.CreateRegisterChallenge(context.Background(), &proto.CreateRegisterChallengeRequest{ - TokenID: tokenID, - DeviceType: proto.DeviceType_DEVICE_TYPE_WEBAUTHN, + TokenID: tokenID, + DeviceType: proto.DeviceType_DEVICE_TYPE_WEBAUTHN, + DeviceUsage: usage, }) if err != nil { return nil, nil, trace.Wrap(err) } - dev, regRes, err := NewTestDeviceFromChallenge(res) + var dev *TestDevice + var regRes *proto.MFARegisterResponse + + if usage == proto.DeviceUsage_DEVICE_USAGE_PASSWORDLESS { + dev, regRes, err = NewTestDeviceFromChallenge(res, WithPasswordless()) + } else { + dev, regRes, err = NewTestDeviceFromChallenge(res) + } + return dev, regRes, trace.Wrap(err) } diff --git a/lib/auth/auth.go b/lib/auth/auth.go index a1a9cf9d8b7..0755eefa68a 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -1628,10 +1628,12 @@ func (a *Server) AddMFADeviceSync(ctx context.Context, req *proto.AddMFADeviceSy return nil, trace.Wrap(err) } - dev, err := a.verifyMFARespAndAddDevice(ctx, req.GetNewMFAResponse(), &newMFADeviceFields{ + dev, err := a.verifyMFARespAndAddDevice(ctx, &newMFADeviceFields{ username: privilegeToken.GetUser(), newDeviceName: req.GetNewDeviceName(), tokenID: privilegeToken.GetName(), + deviceResp: req.GetNewMFAResponse(), + deviceUsage: req.DeviceUsage, }) if err != nil { return nil, trace.Wrap(err) @@ -1660,10 +1662,14 @@ type newMFADeviceFields struct { // Identity with an in-memory SessionData storage. // Defaults to the Server's IdentityService. webIdentityOverride wanlib.RegistrationIdentity + // deviceResp is the register response from the new device. + deviceResp *proto.MFARegisterResponse + // deviceUsage describes the intended usage of the new device. + deviceUsage proto.DeviceUsage } // verifyMFARespAndAddDevice validates MFA register response and on success adds the new MFA device. -func (a *Server) verifyMFARespAndAddDevice(ctx context.Context, regResp *proto.MFARegisterResponse, req *newMFADeviceFields) (*types.MFADevice, error) { +func (a *Server) verifyMFARespAndAddDevice(ctx context.Context, req *newMFADeviceFields) (*types.MFADevice, error) { cap, err := a.GetAuthPreference(ctx) if err != nil { return nil, trace.Wrap(err) @@ -1674,19 +1680,19 @@ func (a *Server) verifyMFARespAndAddDevice(ctx context.Context, regResp *proto.M } var dev *types.MFADevice - switch regResp.GetResponse().(type) { + switch req.deviceResp.GetResponse().(type) { case *proto.MFARegisterResponse_TOTP: - dev, err = a.registerTOTPDevice(ctx, regResp, req) + dev, err = a.registerTOTPDevice(ctx, req.deviceResp, req) if err != nil { return nil, trace.Wrap(err) } case *proto.MFARegisterResponse_Webauthn: - dev, err = a.registerWebauthnDevice(ctx, regResp, req) + dev, err = a.registerWebauthnDevice(ctx, req.deviceResp, req) if err != nil { return nil, trace.Wrap(err) } default: - return nil, trace.BadParameter("MFARegisterResponse is an unknown response type %T", regResp.Response) + return nil, trace.BadParameter("MFARegisterResponse is an unknown response type %T", req.deviceResp.Response) } clusterName, err := a.GetClusterName() @@ -1768,8 +1774,12 @@ func (a *Server) registerWebauthnDevice(ctx context.Context, regResp *proto.MFAR Identity: identity, } // Finish upserts the device on success. - dev, err := webRegistration.Finish( - ctx, req.username, req.newDeviceName, wanlib.CredentialCreationResponseFromProto(regResp.GetWebauthn())) + dev, err := webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: req.username, + DeviceName: req.newDeviceName, + CreationResponse: wanlib.CredentialCreationResponseFromProto(regResp.GetWebauthn()), + Passwordless: req.deviceUsage == proto.DeviceUsage_DEVICE_USAGE_PASSWORDLESS, + }) return dev, trace.Wrap(err) } diff --git a/lib/auth/auth_test.go b/lib/auth/auth_test.go index 3d1ea20cc1d..d738901f728 100644 --- a/lib/auth/auth_test.go +++ b/lib/auth/auth_test.go @@ -1609,7 +1609,7 @@ func TestAddMFADeviceSync(t *testing.T) { privExToken, err := srv.Auth().createPrivilegeToken(ctx, u.username, UserTokenTypePrivilegeException) require.NoError(t, err) - _, webauthnRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), privExToken.GetName()) + _, webauthnRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), privExToken.GetName(), proto.DeviceUsage_DEVICE_USAGE_MFA) require.NoError(t, err) return &proto.AddMFADeviceSyncRequest{ diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index ccf9db9fec2..57fa5800349 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -1902,11 +1902,13 @@ func addMFADeviceRegisterChallenge(gctx *grpcContext, stream proto.AuthService_A } // Validate MFARegisterResponse and upsert the new device on success. - dev, err := auth.verifyMFARespAndAddDevice(ctx, regResp, &newMFADeviceFields{ + dev, err := auth.verifyMFARespAndAddDevice(ctx, &newMFADeviceFields{ username: user, newDeviceName: initReq.DeviceName, totpSecret: regChallenge.GetTOTP().GetSecret(), webIdentityOverride: webIdentity, + deviceResp: regResp, + deviceUsage: initReq.DeviceUsage, }) return dev, trace.Wrap(err) diff --git a/lib/auth/helpers_mfa.go b/lib/auth/helpers_mfa.go index 9266db803b7..aac8a4ebeeb 100644 --- a/lib/auth/helpers_mfa.go +++ b/lib/auth/helpers_mfa.go @@ -36,8 +36,9 @@ type TestDevice struct { TOTPSecret string Key *mocku2f.Key - clock clockwork.Clock - origin string + clock clockwork.Clock + origin string + passwordless bool } // TestDeviceOpt is a creation option for TestDevice. @@ -49,6 +50,12 @@ func WithTestDeviceClock(clock clockwork.Clock) TestDeviceOpt { } } +func WithPasswordless() TestDeviceOpt { + return func(d *TestDevice) { + d.passwordless = true + } +} + func NewTestDeviceFromChallenge(c *proto.MFARegisterChallenge, opts ...TestDeviceOpt) (*TestDevice, *proto.MFARegisterResponse, error) { dev := &TestDevice{} for _, opt := range opts { @@ -225,6 +232,11 @@ func (d *TestDevice) solveRegisterWebauthn(c *proto.MFARegisterChallenge) (*prot } d.Key.PreferRPID = true + if d.passwordless { + d.Key.AllowResidentKey = true + d.Key.SetUV = true + } + resp, err := d.Key.SignCredentialCreation(d.Origin(), wanlib.CredentialCreationFromProto(c.GetWebauthn())) if err != nil { return nil, trace.Wrap(err) diff --git a/lib/auth/password.go b/lib/auth/password.go index c25d07e66e4..ee0bccac7ba 100644 --- a/lib/auth/password.go +++ b/lib/auth/password.go @@ -315,9 +315,16 @@ func (s *Server) changeUserAuthentication(ctx context.Context, req *proto.Change return nil, trace.AccessDenied(noLocalAuth) } - err = services.VerifyPassword(req.GetNewPassword()) - if err != nil { - return nil, trace.Wrap(err) + reqPasswordless := len(req.GetNewPassword()) == 0 && authPref.GetAllowPasswordless() + switch { + case reqPasswordless: + if req.GetNewMFARegisterResponse() == nil || req.NewMFARegisterResponse.GetWebauthn() == nil { + return nil, trace.BadParameter("passwordless: missing webauthn credentials") + } + default: + if err := services.VerifyPassword(req.GetNewPassword()); err != nil { + return nil, trace.Wrap(err) + } } // Check if token exists. @@ -343,10 +350,10 @@ func (s *Server) changeUserAuthentication(ctx context.Context, req *proto.Change return nil, trace.Wrap(err) } - // Set a new password. - err = s.UpsertPassword(username, req.GetNewPassword()) - if err != nil { - return nil, trace.Wrap(err) + if !reqPasswordless { + if err := s.UpsertPassword(username, req.GetNewPassword()); err != nil { + return nil, trace.Wrap(err) + } } user, err := s.GetUser(username, false) @@ -397,10 +404,17 @@ func (s *Server) changeUserSecondFactor(ctx context.Context, req *proto.ChangeUs } } - _, err = s.verifyMFARespAndAddDevice(ctx, req.GetNewMFARegisterResponse(), &newMFADeviceFields{ + deviceUsage := proto.DeviceUsage_DEVICE_USAGE_MFA + if len(req.GetNewPassword()) == 0 { + deviceUsage = proto.DeviceUsage_DEVICE_USAGE_PASSWORDLESS + } + + _, err = s.verifyMFARespAndAddDevice(ctx, &newMFADeviceFields{ username: token.GetUser(), newDeviceName: deviceName, tokenID: token.GetName(), + deviceResp: req.GetNewMFARegisterResponse(), + deviceUsage: deviceUsage, }) return trace.Wrap(err) } diff --git a/lib/auth/password_test.go b/lib/auth/password_test.go index c4b7cd5aed5..91b45d0edcd 100644 --- a/lib/auth/password_test.go +++ b/lib/auth/password_test.go @@ -384,7 +384,7 @@ func TestChangeUserAuthentication(t *testing.T) { require.NoError(t, err) }, getReq: func(resetTokenID string) *proto.ChangeUserAuthenticationRequest { - _, webauthnRegRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), resetTokenID) + _, webauthnRegRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), resetTokenID, proto.DeviceUsage_DEVICE_USAGE_MFA) require.NoError(t, err) return &proto.ChangeUserAuthenticationRequest{ @@ -402,6 +402,37 @@ func TestChangeUserAuthentication(t *testing.T) { } }, }, + { + name: "with passwordless", + setAuthPreference: func() { + authPreference, err := types.NewAuthPreference(types.AuthPreferenceSpecV2{ + Type: constants.Local, + SecondFactor: constants.SecondFactorWebauthn, + Webauthn: &types.Webauthn{ + RPID: "localhost", + }, + }) + require.NoError(t, err) + err = srv.Auth().SetAuthPreference(ctx, authPreference) + require.NoError(t, err) + }, + getReq: func(resetTokenID string) *proto.ChangeUserAuthenticationRequest { + _, webauthnRes, err := getMockedWebauthnAndRegisterRes(srv.Auth(), resetTokenID, proto.DeviceUsage_DEVICE_USAGE_PASSWORDLESS) + require.NoError(t, err) + + return &proto.ChangeUserAuthenticationRequest{ + TokenID: resetTokenID, + NewMFARegisterResponse: webauthnRes, + } + }, + // Missing webauthn for passwordless. + getInvalidReq: func(resetTokenID string) *proto.ChangeUserAuthenticationRequest { + return &proto.ChangeUserAuthenticationRequest{ + TokenID: resetTokenID, + NewMFARegisterResponse: &proto.MFARegisterResponse{Response: &proto.MFARegisterResponse_TOTP{}}, + } + }, + }, { name: "with second factor on", setAuthPreference: func() { @@ -417,7 +448,7 @@ func TestChangeUserAuthentication(t *testing.T) { require.NoError(t, err) }, getReq: func(resetTokenID string) *proto.ChangeUserAuthenticationRequest { - _, mfaResp, err := getMockedWebauthnAndRegisterRes(srv.Auth(), resetTokenID) + _, mfaResp, err := getMockedWebauthnAndRegisterRes(srv.Auth(), resetTokenID, proto.DeviceUsage_DEVICE_USAGE_MFA) require.NoError(t, err) return &proto.ChangeUserAuthenticationRequest{ @@ -473,7 +504,7 @@ func TestChangeUserAuthentication(t *testing.T) { if c.getInvalidReq != nil { invalidReq := c.getInvalidReq(token.GetName()) - _, err = srv.Auth().changeUserAuthentication(ctx, invalidReq) + _, err := srv.Auth().changeUserAuthentication(ctx, invalidReq) require.True(t, trace.IsBadParameter(err)) } @@ -482,8 +513,10 @@ func TestChangeUserAuthentication(t *testing.T) { require.NoError(t, err) // Test password is updated. - err = srv.Auth().checkPasswordWOToken(username, validReq.NewPassword) - require.NoError(t, err) + if len(validReq.NewPassword) != 0 { + err := srv.Auth().checkPasswordWOToken(username, validReq.NewPassword) + require.NoError(t, err) + } // Test device was registered. if validReq.NewMFARegisterResponse != nil { diff --git a/lib/auth/webauthn/login_test.go b/lib/auth/webauthn/login_test.go index 2c309cd5551..573e99278df 100644 --- a/lib/auth/webauthn/login_test.go +++ b/lib/auth/webauthn/login_test.go @@ -74,7 +74,11 @@ func TestLoginFlow_BeginFinish(t *testing.T) { require.NoError(t, err) ccr, err := webKey.SignCredentialCreation(webOrigin, cc) require.NoError(t, err) - _, err = webRegistration.Finish(ctx, webUser, "webauthn1" /* deviceName */, ccr) + _, err = webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: webUser, + DeviceName: "webauthn1", + CreationResponse: ccr, + }) require.NoError(t, err) tests := []struct { @@ -240,7 +244,11 @@ func TestLoginFlow_Finish_errors(t *testing.T) { require.NoError(t, err) ccr, err := key.SignCredentialCreation(webOrigin, cc) require.NoError(t, err) - _, err = webRegistration.Finish(ctx, user, "webauthn1" /* deviceName */, ccr) + _, err = webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: user, + DeviceName: "webauthn1", + CreationResponse: ccr, + }) require.NoError(t, err) webLogin := wanlib.LoginFlow{ @@ -362,7 +370,12 @@ func TestPasswordlessFlow_BeginAndFinish(t *testing.T) { require.NoError(t, err) ccr, err := webKey.SignCredentialCreation(webOrigin, cc) require.NoError(t, err) - _, err = webRegistration.Finish(ctx, user, "webauthn1" /* deviceName */, ccr) + _, err = webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: user, + DeviceName: "webauthn1", + CreationResponse: ccr, + Passwordless: true, + }) require.NoError(t, err) webLogin := &wanlib.PasswordlessFlow{ diff --git a/lib/auth/webauthn/register.go b/lib/auth/webauthn/register.go index 13927f9f8ba..bd06208d99e 100644 --- a/lib/auth/webauthn/register.go +++ b/lib/auth/webauthn/register.go @@ -228,20 +228,36 @@ func upsertOrGetWebID(ctx context.Context, user string, identity RegistrationIde return wla.UserID, nil } +// RegisterResponse represents fields needed to finish registering a new webautn device. +type RegisterResponse struct { + // User is the device owner. + User string + // DeviceName is the name for the new device. + DeviceName string + // CreationResponse is the response from the new device. + CreationResponse *CredentialCreationResponse + // Passwordless is true if this is expected to be a passwordless registration. + // Callers may make certain concessions when processing passwordless + // registration (such as skipping password validation), this flag reflects that. + // The data stored in the Begin SessionData must match the passwordless flag, + // otherwise the registration is denied. + Passwordless bool +} + // Finish is the second and last step of the registration ceremony. // If successful, it returns the created MFADevice. Finish has the side effect // or writing the device to storage (using its Identity interface). -func (f *RegistrationFlow) Finish(ctx context.Context, user, deviceName string, resp *CredentialCreationResponse) (*types.MFADevice, error) { +func (f *RegistrationFlow) Finish(ctx context.Context, req RegisterResponse) (*types.MFADevice, error) { switch { - case user == "": + case req.User == "": return nil, trace.BadParameter("user required") - case deviceName == "": + case req.DeviceName == "": return nil, trace.BadParameter("device name required") - case resp == nil: + case req.CreationResponse == nil: return nil, trace.BadParameter("credential creation response required") } - parsedResp, err := parseCredentialCreationResponse(resp) + parsedResp, err := parseCredentialCreationResponse(req.CreationResponse) if err != nil { return nil, trace.Wrap(err) } @@ -255,13 +271,13 @@ func (f *RegistrationFlow) Finish(ctx context.Context, user, deviceName string, // TODO(codingllama): Verify that the public key matches the allowed // credential params? It doesn't look like duo-labs/webauthn does that. - wla, err := f.Identity.GetWebauthnLocalAuth(ctx, user) + wla, err := f.Identity.GetWebauthnLocalAuth(ctx, req.User) if err != nil { return nil, trace.Wrap(err) } - u := newWebUser(user, wla.UserID, true /* credentialIDOnly */, nil /* devices */) + u := newWebUser(req.User, wla.UserID, true /* credentialIDOnly */, nil /* devices */) - sessionDataPB, err := f.Identity.GetWebauthnSessionData(ctx, user, scopeSession) + sessionDataPB, err := f.Identity.GetWebauthnSessionData(ctx, req.User, scopeSession) if err != nil { return nil, trace.Wrap(err) } @@ -270,6 +286,9 @@ func (f *RegistrationFlow) Finish(ctx context.Context, user, deviceName string, // Activate passwordless switches (resident key, user verification) if we // required verification in the begin step. passwordless := sessionData.UserVerification == protocol.VerificationRequired + if req.Passwordless && !passwordless { + return nil, trace.BadParameter("passwordless registration failed, requested CredentialCreation was for an MFA registration") + } web, err := newWebAuthn(webAuthnParams{ cfg: f.Webauthn, @@ -293,7 +312,7 @@ func (f *RegistrationFlow) Finish(ctx context.Context, user, deviceName string, return nil, trace.Wrap(err) } - newDevice := types.NewMFADevice(deviceName, uuid.NewString() /* id */, time.Now() /* addedAt */) + newDevice := types.NewMFADevice(req.DeviceName, uuid.NewString() /* id */, time.Now() /* addedAt */) newDevice.Device = &types.MFADevice_Webauthn{ Webauthn: &types.WebauthnDevice{ CredentialId: credential.ID, @@ -301,21 +320,21 @@ func (f *RegistrationFlow) Finish(ctx context.Context, user, deviceName string, AttestationType: credential.AttestationType, Aaguid: credential.Authenticator.AAGUID, SignatureCounter: credential.Authenticator.SignCount, - AttestationObject: resp.AttestationResponse.AttestationObject, - ResidentKey: passwordless, + AttestationObject: req.CreationResponse.AttestationResponse.AttestationObject, + ResidentKey: req.Passwordless, }, } // We delegate a few checks to identity, including: // * The validity of the created MFADevice // * Uniqueness validation of the deviceName // * Uniqueness validation of the Webauthn credential ID. - if err := f.Identity.UpsertMFADevice(ctx, user, newDevice); err != nil { + if err := f.Identity.UpsertMFADevice(ctx, req.User, newDevice); err != nil { return nil, trace.Wrap(err) } // Registration complete, remove the registration challenge we just used. - if err := f.Identity.DeleteWebauthnSessionData(ctx, user, scopeSession); err != nil { - log.Warnf("WebAuthn: failed to delete registration SessionData for user %v", user) + if err := f.Identity.DeleteWebauthnSessionData(ctx, req.User, scopeSession); err != nil { + log.Warnf("WebAuthn: failed to delete registration SessionData for user %v", req.User) } return newDevice, nil diff --git a/lib/auth/webauthn/register_test.go b/lib/auth/webauthn/register_test.go index 614428f05f9..4dadd2c425c 100644 --- a/lib/auth/webauthn/register_test.go +++ b/lib/auth/webauthn/register_test.go @@ -94,7 +94,12 @@ func TestRegistrationFlow_BeginFinish(t *testing.T) { require.NoError(t, err) // Finish is the final step in registration. - newDevice, err := webRegistration.Finish(ctx, user, test.deviceName, ccr) + newDevice, err := webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: user, + DeviceName: test.deviceName, + CreationResponse: ccr, + Passwordless: test.passwordless, + }) require.NoError(t, err) require.Equal(t, test.deviceName, newDevice.GetName()) // Did we get a proper WebauthnDevice? @@ -297,6 +302,7 @@ func TestRegistrationFlow_Finish_errors(t *testing.T) { user, deviceName string createResp func() *wanlib.CredentialCreationResponse wantErr string + passwordless bool }{ { name: "NOK user empty", @@ -362,10 +368,29 @@ func TestRegistrationFlow_Finish_errors(t *testing.T) { }, wantErr: "validating challenge", }, + { + name: "NOK passwordless on Finish but not on Begin", + user: user, + deviceName: "webauthn2", + passwordless: true, + createResp: func() *wanlib.CredentialCreationResponse { + cc, err := webRegistration.Begin(ctx, user, false /* passwordless */) + require.NoError(t, err) + resp, err := key.SignCredentialCreation(webOrigin, cc) + require.NoError(t, err) + return resp + }, + wantErr: "passwordless registration failed", + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - _, err := webRegistration.Finish(ctx, test.user, test.deviceName, test.createResp()) + _, err := webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: test.user, + DeviceName: test.deviceName, + CreationResponse: test.createResp(), + Passwordless: test.passwordless, + }) require.Error(t, err) require.Contains(t, err.Error(), test.wantErr) }) @@ -450,7 +475,11 @@ func TestRegistrationFlow_Finish_attestation(t *testing.T) { ccr, err := dev.SignCredentialCreation(origin, cc) require.NoError(t, err) - _, err = webRegistration.Finish(ctx, user, devName, ccr) + _, err = webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: user, + DeviceName: devName, + CreationResponse: ccr, + }) if ok := err == nil; ok != test.wantOK { t.Errorf("Finish returned err = %v, wantOK = %v", err, test.wantOK) } diff --git a/lib/auth/webauthncli/u2f_register_test.go b/lib/auth/webauthncli/u2f_register_test.go index f45a39d9569..db4f683a5ae 100644 --- a/lib/auth/webauthncli/u2f_register_test.go +++ b/lib/auth/webauthncli/u2f_register_test.go @@ -110,7 +110,11 @@ func TestRegister(t *testing.T) { } require.Equal(t, test.wantRawID, resp.GetWebauthn().RawId) - _, err = webRegistration.Finish(ctx, user, u2fKey.name, wanlib.CredentialCreationResponseFromProto(resp.GetWebauthn())) + _, err = webRegistration.Finish(ctx, wanlib.RegisterResponse{ + User: user, + DeviceName: u2fKey.name, + CreationResponse: wanlib.CredentialCreationResponseFromProto(resp.GetWebauthn()), + }) require.NoError(t, err, "server-side registration failed") }) } diff --git a/lib/web/mfa.go b/lib/web/mfa.go index 8813bd5ee43..b985b02408e 100644 --- a/lib/web/mfa.go +++ b/lib/web/mfa.go @@ -77,6 +77,10 @@ type addMFADeviceRequest struct { SecondFactorToken string `json:"secondFactorToken"` // WebauthnRegisterResponse is a WebAuthn registration challenge response. WebauthnRegisterResponse *webauthn.CredentialCreationResponse `json:"webauthnRegisterResponse"` + // DeviceUsage is the intended usage of the device (MFA, Passwordless, etc). + // It mimics the proto.DeviceUsage enum. + // Defaults to MFA. + DeviceUsage string `json:"deviceUsage"` } // addMFADeviceHandle adds a new mfa device for the user defined in the token. @@ -86,9 +90,15 @@ func (h *Handler) addMFADeviceHandle(w http.ResponseWriter, r *http.Request, par return nil, trace.Wrap(err) } + deviceUsage, err := getDeviceUsage(req.DeviceUsage) + if err != nil { + return nil, trace.Wrap(err) + } + protoReq := &proto.AddMFADeviceSyncRequest{ TokenID: req.PrivilegeTokenID, NewDeviceName: req.DeviceName, + DeviceUsage: deviceUsage, } switch { @@ -170,14 +180,9 @@ func (h *Handler) createRegisterChallengeWithTokenHandle(w http.ResponseWriter, return nil, trace.BadParameter("MFA device type %q unsupported", req.DeviceType) } - var deviceUsage proto.DeviceUsage - switch strings.ToLower(req.DeviceUsage) { - case "", "mfa": - deviceUsage = proto.DeviceUsage_DEVICE_USAGE_MFA - case "passwordless": - deviceUsage = proto.DeviceUsage_DEVICE_USAGE_PASSWORDLESS - default: - return nil, trace.BadParameter("device usage %q unsupported", req.DeviceUsage) + deviceUsage, err := getDeviceUsage(req.DeviceUsage) + if err != nil { + return nil, trace.Wrap(err) } chal, err := h.cfg.ProxyClient.CreateRegisterChallenge(r.Context(), &proto.CreateRegisterChallengeRequest{ @@ -191,3 +196,17 @@ func (h *Handler) createRegisterChallengeWithTokenHandle(w http.ResponseWriter, return client.MakeRegisterChallenge(chal), nil } + +func getDeviceUsage(reqUsage string) (proto.DeviceUsage, error) { + var deviceUsage proto.DeviceUsage + switch strings.ToLower(reqUsage) { + case "", "mfa": + deviceUsage = proto.DeviceUsage_DEVICE_USAGE_MFA + case "passwordless": + deviceUsage = proto.DeviceUsage_DEVICE_USAGE_PASSWORDLESS + default: + return proto.DeviceUsage_DEVICE_USAGE_UNSPECIFIED, trace.BadParameter("device usage %q unsupported", reqUsage) + } + + return deviceUsage, nil +}