summaryrefslogtreecommitdiffhomepage
path: root/api
diff options
context:
space:
mode:
authorSatoshi Fujimoto <satoshi.fujimoto7@gmail.com>2018-05-31 16:49:57 +0900
committerSatoshi Fujimoto <satoshi.fujimoto7@gmail.com>2018-06-13 13:56:57 +0900
commitc821cfbc8e04bb05bf0e300e52693b5085e1bfef (patch)
tree082a195fc38e678f188465ceacb1eed7951e9d17 /api
parent96034c286bdf02acac954e6860e48f1705b820ee (diff)
api: Implement PeerGroup and DynamicNeighbor API
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
Diffstat (limited to 'api')
-rw-r--r--api/gobgp.pb.go1964
-rw-r--r--api/gobgp.proto93
-rw-r--r--api/grpc_server.go211
3 files changed, 1610 insertions, 658 deletions
diff --git a/api/gobgp.pb.go b/api/gobgp.pb.go
index 83c2c7fb..bf4d4ab6 100644
--- a/api/gobgp.pb.go
+++ b/api/gobgp.pb.go
@@ -22,6 +22,14 @@ It has these top-level messages:
DeleteNeighborResponse
UpdateNeighborRequest
UpdateNeighborResponse
+ AddPeerGroupRequest
+ AddPeerGroupResponse
+ DeletePeerGroupRequest
+ DeletePeerGroupResponse
+ UpdatePeerGroupRequest
+ UpdatePeerGroupResponse
+ AddDynamicNeighborRequest
+ AddDynamicNeighborResponse
ResetNeighborRequest
ResetNeighborResponse
SoftResetNeighborRequest
@@ -117,9 +125,13 @@ It has these top-level messages:
ValidateRibRequest
ValidateRibResponse
Peer
+ PeerGroup
+ DynamicNeighbor
ApplyPolicy
PrefixLimit
PeerConf
+ PeerGroupConf
+ PeerGroupState
EbgpMultihop
RouteReflector
PeerState
@@ -619,7 +631,7 @@ func (x SoftResetNeighborRequest_SoftResetDirection) String() string {
return proto.EnumName(SoftResetNeighborRequest_SoftResetDirection_name, int32(x))
}
func (SoftResetNeighborRequest_SoftResetDirection) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{15, 0}
+ return fileDescriptor0, []int{23, 0}
}
type AddBmpRequest_MonitoringPolicy int32
@@ -651,7 +663,7 @@ func (x AddBmpRequest_MonitoringPolicy) String() string {
return proto.EnumName(AddBmpRequest_MonitoringPolicy_name, int32(x))
}
func (AddBmpRequest_MonitoringPolicy) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{29, 0}
+ return fileDescriptor0, []int{37, 0}
}
type RPKIValidation_State int32
@@ -679,7 +691,7 @@ var RPKIValidation_State_value = map[string]int32{
func (x RPKIValidation_State) String() string {
return proto.EnumName(RPKIValidation_State_name, int32(x))
}
-func (RPKIValidation_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{97, 0} }
+func (RPKIValidation_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{105, 0} }
type RPKIValidation_Reason int32
@@ -703,7 +715,7 @@ var RPKIValidation_Reason_value = map[string]int32{
func (x RPKIValidation_Reason) String() string {
return proto.EnumName(RPKIValidation_Reason_name, int32(x))
}
-func (RPKIValidation_Reason) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{97, 1} }
+func (RPKIValidation_Reason) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{105, 1} }
type PeerConf_RemovePrivateAs int32
@@ -728,7 +740,59 @@ func (x PeerConf_RemovePrivateAs) String() string {
return proto.EnumName(PeerConf_RemovePrivateAs_name, int32(x))
}
func (PeerConf_RemovePrivateAs) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{110, 0}
+ return fileDescriptor0, []int{120, 0}
+}
+
+type PeerGroupConf_RemovePrivateAs int32
+
+const (
+ PeerGroupConf_NONE PeerGroupConf_RemovePrivateAs = 0
+ PeerGroupConf_ALL PeerGroupConf_RemovePrivateAs = 1
+ PeerGroupConf_REPLACE PeerGroupConf_RemovePrivateAs = 2
+)
+
+var PeerGroupConf_RemovePrivateAs_name = map[int32]string{
+ 0: "NONE",
+ 1: "ALL",
+ 2: "REPLACE",
+}
+var PeerGroupConf_RemovePrivateAs_value = map[string]int32{
+ "NONE": 0,
+ "ALL": 1,
+ "REPLACE": 2,
+}
+
+func (x PeerGroupConf_RemovePrivateAs) String() string {
+ return proto.EnumName(PeerGroupConf_RemovePrivateAs_name, int32(x))
+}
+func (PeerGroupConf_RemovePrivateAs) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{121, 0}
+}
+
+type PeerGroupState_RemovePrivateAs int32
+
+const (
+ PeerGroupState_NONE PeerGroupState_RemovePrivateAs = 0
+ PeerGroupState_ALL PeerGroupState_RemovePrivateAs = 1
+ PeerGroupState_REPLACE PeerGroupState_RemovePrivateAs = 2
+)
+
+var PeerGroupState_RemovePrivateAs_name = map[int32]string{
+ 0: "NONE",
+ 1: "ALL",
+ 2: "REPLACE",
+}
+var PeerGroupState_RemovePrivateAs_value = map[string]int32{
+ "NONE": 0,
+ "ALL": 1,
+ "REPLACE": 2,
+}
+
+func (x PeerGroupState_RemovePrivateAs) String() string {
+ return proto.EnumName(PeerGroupState_RemovePrivateAs_name, int32(x))
+}
+func (PeerGroupState_RemovePrivateAs) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{122, 0}
}
type PeerState_AdminState int32
@@ -753,7 +817,7 @@ var PeerState_AdminState_value = map[string]int32{
func (x PeerState_AdminState) String() string {
return proto.EnumName(PeerState_AdminState_name, int32(x))
}
-func (PeerState_AdminState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{113, 0} }
+func (PeerState_AdminState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{125, 0} }
type Conditions_RouteType int32
@@ -780,7 +844,7 @@ var Conditions_RouteType_value = map[string]int32{
func (x Conditions_RouteType) String() string {
return proto.EnumName(Conditions_RouteType_name, int32(x))
}
-func (Conditions_RouteType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{154, 0} }
+func (Conditions_RouteType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{166, 0} }
type GetNeighborRequest struct {
EnableAdvertised bool `protobuf:"varint,1,opt,name=enableAdvertised" json:"enableAdvertised,omitempty"`
@@ -1059,6 +1123,118 @@ func (m *UpdateNeighborResponse) GetNeedsSoftResetIn() bool {
return false
}
+type AddPeerGroupRequest struct {
+ PeerGroup *PeerGroup `protobuf:"bytes,1,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
+}
+
+func (m *AddPeerGroupRequest) Reset() { *m = AddPeerGroupRequest{} }
+func (m *AddPeerGroupRequest) String() string { return proto.CompactTextString(m) }
+func (*AddPeerGroupRequest) ProtoMessage() {}
+func (*AddPeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+
+func (m *AddPeerGroupRequest) GetPeerGroup() *PeerGroup {
+ if m != nil {
+ return m.PeerGroup
+ }
+ return nil
+}
+
+type AddPeerGroupResponse struct {
+}
+
+func (m *AddPeerGroupResponse) Reset() { *m = AddPeerGroupResponse{} }
+func (m *AddPeerGroupResponse) String() string { return proto.CompactTextString(m) }
+func (*AddPeerGroupResponse) ProtoMessage() {}
+func (*AddPeerGroupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+
+type DeletePeerGroupRequest struct {
+ PeerGroup *PeerGroup `protobuf:"bytes,1,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
+}
+
+func (m *DeletePeerGroupRequest) Reset() { *m = DeletePeerGroupRequest{} }
+func (m *DeletePeerGroupRequest) String() string { return proto.CompactTextString(m) }
+func (*DeletePeerGroupRequest) ProtoMessage() {}
+func (*DeletePeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+
+func (m *DeletePeerGroupRequest) GetPeerGroup() *PeerGroup {
+ if m != nil {
+ return m.PeerGroup
+ }
+ return nil
+}
+
+type DeletePeerGroupResponse struct {
+}
+
+func (m *DeletePeerGroupResponse) Reset() { *m = DeletePeerGroupResponse{} }
+func (m *DeletePeerGroupResponse) String() string { return proto.CompactTextString(m) }
+func (*DeletePeerGroupResponse) ProtoMessage() {}
+func (*DeletePeerGroupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+
+type UpdatePeerGroupRequest struct {
+ PeerGroup *PeerGroup `protobuf:"bytes,1,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
+ DoSoftResetIn bool `protobuf:"varint,2,opt,name=do_soft_reset_in,json=doSoftResetIn" json:"do_soft_reset_in,omitempty"`
+}
+
+func (m *UpdatePeerGroupRequest) Reset() { *m = UpdatePeerGroupRequest{} }
+func (m *UpdatePeerGroupRequest) String() string { return proto.CompactTextString(m) }
+func (*UpdatePeerGroupRequest) ProtoMessage() {}
+func (*UpdatePeerGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+
+func (m *UpdatePeerGroupRequest) GetPeerGroup() *PeerGroup {
+ if m != nil {
+ return m.PeerGroup
+ }
+ return nil
+}
+
+func (m *UpdatePeerGroupRequest) GetDoSoftResetIn() bool {
+ if m != nil {
+ return m.DoSoftResetIn
+ }
+ return false
+}
+
+type UpdatePeerGroupResponse struct {
+ NeedsSoftResetIn bool `protobuf:"varint,1,opt,name=needs_soft_reset_in,json=needsSoftResetIn" json:"needs_soft_reset_in,omitempty"`
+}
+
+func (m *UpdatePeerGroupResponse) Reset() { *m = UpdatePeerGroupResponse{} }
+func (m *UpdatePeerGroupResponse) String() string { return proto.CompactTextString(m) }
+func (*UpdatePeerGroupResponse) ProtoMessage() {}
+func (*UpdatePeerGroupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+
+func (m *UpdatePeerGroupResponse) GetNeedsSoftResetIn() bool {
+ if m != nil {
+ return m.NeedsSoftResetIn
+ }
+ return false
+}
+
+type AddDynamicNeighborRequest struct {
+ DynamicNeighbor *DynamicNeighbor `protobuf:"bytes,1,opt,name=dynamic_neighbor,json=dynamicNeighbor" json:"dynamic_neighbor,omitempty"`
+}
+
+func (m *AddDynamicNeighborRequest) Reset() { *m = AddDynamicNeighborRequest{} }
+func (m *AddDynamicNeighborRequest) String() string { return proto.CompactTextString(m) }
+func (*AddDynamicNeighborRequest) ProtoMessage() {}
+func (*AddDynamicNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+
+func (m *AddDynamicNeighborRequest) GetDynamicNeighbor() *DynamicNeighbor {
+ if m != nil {
+ return m.DynamicNeighbor
+ }
+ return nil
+}
+
+type AddDynamicNeighborResponse struct {
+}
+
+func (m *AddDynamicNeighborResponse) Reset() { *m = AddDynamicNeighborResponse{} }
+func (m *AddDynamicNeighborResponse) String() string { return proto.CompactTextString(m) }
+func (*AddDynamicNeighborResponse) ProtoMessage() {}
+func (*AddDynamicNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+
type ResetNeighborRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
Communication string `protobuf:"bytes,2,opt,name=communication" json:"communication,omitempty"`
@@ -1067,7 +1243,7 @@ type ResetNeighborRequest struct {
func (m *ResetNeighborRequest) Reset() { *m = ResetNeighborRequest{} }
func (m *ResetNeighborRequest) String() string { return proto.CompactTextString(m) }
func (*ResetNeighborRequest) ProtoMessage() {}
-func (*ResetNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (*ResetNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func (m *ResetNeighborRequest) GetAddress() string {
if m != nil {
@@ -1089,7 +1265,7 @@ type ResetNeighborResponse struct {
func (m *ResetNeighborResponse) Reset() { *m = ResetNeighborResponse{} }
func (m *ResetNeighborResponse) String() string { return proto.CompactTextString(m) }
func (*ResetNeighborResponse) ProtoMessage() {}
-func (*ResetNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+func (*ResetNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
type SoftResetNeighborRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1099,7 +1275,7 @@ type SoftResetNeighborRequest struct {
func (m *SoftResetNeighborRequest) Reset() { *m = SoftResetNeighborRequest{} }
func (m *SoftResetNeighborRequest) String() string { return proto.CompactTextString(m) }
func (*SoftResetNeighborRequest) ProtoMessage() {}
-func (*SoftResetNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (*SoftResetNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
func (m *SoftResetNeighborRequest) GetAddress() string {
if m != nil {
@@ -1121,7 +1297,7 @@ type SoftResetNeighborResponse struct {
func (m *SoftResetNeighborResponse) Reset() { *m = SoftResetNeighborResponse{} }
func (m *SoftResetNeighborResponse) String() string { return proto.CompactTextString(m) }
func (*SoftResetNeighborResponse) ProtoMessage() {}
-func (*SoftResetNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (*SoftResetNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
type ShutdownNeighborRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1131,7 +1307,7 @@ type ShutdownNeighborRequest struct {
func (m *ShutdownNeighborRequest) Reset() { *m = ShutdownNeighborRequest{} }
func (m *ShutdownNeighborRequest) String() string { return proto.CompactTextString(m) }
func (*ShutdownNeighborRequest) ProtoMessage() {}
-func (*ShutdownNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (*ShutdownNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (m *ShutdownNeighborRequest) GetAddress() string {
if m != nil {
@@ -1153,7 +1329,7 @@ type ShutdownNeighborResponse struct {
func (m *ShutdownNeighborResponse) Reset() { *m = ShutdownNeighborResponse{} }
func (m *ShutdownNeighborResponse) String() string { return proto.CompactTextString(m) }
func (*ShutdownNeighborResponse) ProtoMessage() {}
-func (*ShutdownNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (*ShutdownNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
type EnableNeighborRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1162,7 +1338,7 @@ type EnableNeighborRequest struct {
func (m *EnableNeighborRequest) Reset() { *m = EnableNeighborRequest{} }
func (m *EnableNeighborRequest) String() string { return proto.CompactTextString(m) }
func (*EnableNeighborRequest) ProtoMessage() {}
-func (*EnableNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+func (*EnableNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
func (m *EnableNeighborRequest) GetAddress() string {
if m != nil {
@@ -1177,7 +1353,7 @@ type EnableNeighborResponse struct {
func (m *EnableNeighborResponse) Reset() { *m = EnableNeighborResponse{} }
func (m *EnableNeighborResponse) String() string { return proto.CompactTextString(m) }
func (*EnableNeighborResponse) ProtoMessage() {}
-func (*EnableNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+func (*EnableNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
type DisableNeighborRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1187,7 +1363,7 @@ type DisableNeighborRequest struct {
func (m *DisableNeighborRequest) Reset() { *m = DisableNeighborRequest{} }
func (m *DisableNeighborRequest) String() string { return proto.CompactTextString(m) }
func (*DisableNeighborRequest) ProtoMessage() {}
-func (*DisableNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+func (*DisableNeighborRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
func (m *DisableNeighborRequest) GetAddress() string {
if m != nil {
@@ -1209,7 +1385,7 @@ type DisableNeighborResponse struct {
func (m *DisableNeighborResponse) Reset() { *m = DisableNeighborResponse{} }
func (m *DisableNeighborResponse) String() string { return proto.CompactTextString(m) }
func (*DisableNeighborResponse) ProtoMessage() {}
-func (*DisableNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+func (*DisableNeighborResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
type EnableMrtRequest struct {
DumpType int32 `protobuf:"varint,1,opt,name=dump_type,json=dumpType" json:"dump_type,omitempty"`
@@ -1220,7 +1396,7 @@ type EnableMrtRequest struct {
func (m *EnableMrtRequest) Reset() { *m = EnableMrtRequest{} }
func (m *EnableMrtRequest) String() string { return proto.CompactTextString(m) }
func (*EnableMrtRequest) ProtoMessage() {}
-func (*EnableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+func (*EnableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
func (m *EnableMrtRequest) GetDumpType() int32 {
if m != nil {
@@ -1249,7 +1425,7 @@ type EnableMrtResponse struct {
func (m *EnableMrtResponse) Reset() { *m = EnableMrtResponse{} }
func (m *EnableMrtResponse) String() string { return proto.CompactTextString(m) }
func (*EnableMrtResponse) ProtoMessage() {}
-func (*EnableMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
+func (*EnableMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
type DisableMrtRequest struct {
}
@@ -1257,7 +1433,7 @@ type DisableMrtRequest struct {
func (m *DisableMrtRequest) Reset() { *m = DisableMrtRequest{} }
func (m *DisableMrtRequest) String() string { return proto.CompactTextString(m) }
func (*DisableMrtRequest) ProtoMessage() {}
-func (*DisableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+func (*DisableMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
type DisableMrtResponse struct {
}
@@ -1265,7 +1441,7 @@ type DisableMrtResponse struct {
func (m *DisableMrtResponse) Reset() { *m = DisableMrtResponse{} }
func (m *DisableMrtResponse) String() string { return proto.CompactTextString(m) }
func (*DisableMrtResponse) ProtoMessage() {}
-func (*DisableMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+func (*DisableMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
type InjectMrtRequest struct {
Resource Resource `protobuf:"varint,1,opt,name=resource,enum=gobgpapi.Resource" json:"resource,omitempty"`
@@ -1276,7 +1452,7 @@ type InjectMrtRequest struct {
func (m *InjectMrtRequest) Reset() { *m = InjectMrtRequest{} }
func (m *InjectMrtRequest) String() string { return proto.CompactTextString(m) }
func (*InjectMrtRequest) ProtoMessage() {}
-func (*InjectMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+func (*InjectMrtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
func (m *InjectMrtRequest) GetResource() Resource {
if m != nil {
@@ -1305,7 +1481,7 @@ type InjectMrtResponse struct {
func (m *InjectMrtResponse) Reset() { *m = InjectMrtResponse{} }
func (m *InjectMrtResponse) String() string { return proto.CompactTextString(m) }
func (*InjectMrtResponse) ProtoMessage() {}
-func (*InjectMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+func (*InjectMrtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
type AddBmpRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1316,7 +1492,7 @@ type AddBmpRequest struct {
func (m *AddBmpRequest) Reset() { *m = AddBmpRequest{} }
func (m *AddBmpRequest) String() string { return proto.CompactTextString(m) }
func (*AddBmpRequest) ProtoMessage() {}
-func (*AddBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+func (*AddBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
func (m *AddBmpRequest) GetAddress() string {
if m != nil {
@@ -1345,7 +1521,7 @@ type AddBmpResponse struct {
func (m *AddBmpResponse) Reset() { *m = AddBmpResponse{} }
func (m *AddBmpResponse) String() string { return proto.CompactTextString(m) }
func (*AddBmpResponse) ProtoMessage() {}
-func (*AddBmpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+func (*AddBmpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
type DeleteBmpRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1355,7 +1531,7 @@ type DeleteBmpRequest struct {
func (m *DeleteBmpRequest) Reset() { *m = DeleteBmpRequest{} }
func (m *DeleteBmpRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteBmpRequest) ProtoMessage() {}
-func (*DeleteBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
+func (*DeleteBmpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
func (m *DeleteBmpRequest) GetAddress() string {
if m != nil {
@@ -1377,7 +1553,7 @@ type DeleteBmpResponse struct {
func (m *DeleteBmpResponse) Reset() { *m = DeleteBmpResponse{} }
func (m *DeleteBmpResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteBmpResponse) ProtoMessage() {}
-func (*DeleteBmpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
+func (*DeleteBmpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
type MonitorRibRequest struct {
Table *Table `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"`
@@ -1387,7 +1563,7 @@ type MonitorRibRequest struct {
func (m *MonitorRibRequest) Reset() { *m = MonitorRibRequest{} }
func (m *MonitorRibRequest) String() string { return proto.CompactTextString(m) }
func (*MonitorRibRequest) ProtoMessage() {}
-func (*MonitorRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
+func (*MonitorRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }
func (m *MonitorRibRequest) GetTable() *Table {
if m != nil {
@@ -1411,7 +1587,7 @@ type RPKIConf struct {
func (m *RPKIConf) Reset() { *m = RPKIConf{} }
func (m *RPKIConf) String() string { return proto.CompactTextString(m) }
func (*RPKIConf) ProtoMessage() {}
-func (*RPKIConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
+func (*RPKIConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }
func (m *RPKIConf) GetAddress() string {
if m != nil {
@@ -1450,7 +1626,7 @@ type RPKIState struct {
func (m *RPKIState) Reset() { *m = RPKIState{} }
func (m *RPKIState) String() string { return proto.CompactTextString(m) }
func (*RPKIState) ProtoMessage() {}
-func (*RPKIState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
+func (*RPKIState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }
func (m *RPKIState) GetUptime() int64 {
if m != nil {
@@ -1579,7 +1755,7 @@ type Rpki struct {
func (m *Rpki) Reset() { *m = Rpki{} }
func (m *Rpki) String() string { return proto.CompactTextString(m) }
func (*Rpki) ProtoMessage() {}
-func (*Rpki) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
+func (*Rpki) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }
func (m *Rpki) GetConf() *RPKIConf {
if m != nil {
@@ -1602,7 +1778,7 @@ type GetRpkiRequest struct {
func (m *GetRpkiRequest) Reset() { *m = GetRpkiRequest{} }
func (m *GetRpkiRequest) String() string { return proto.CompactTextString(m) }
func (*GetRpkiRequest) ProtoMessage() {}
-func (*GetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
+func (*GetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }
func (m *GetRpkiRequest) GetFamily() uint32 {
if m != nil {
@@ -1618,7 +1794,7 @@ type GetRpkiResponse struct {
func (m *GetRpkiResponse) Reset() { *m = GetRpkiResponse{} }
func (m *GetRpkiResponse) String() string { return proto.CompactTextString(m) }
func (*GetRpkiResponse) ProtoMessage() {}
-func (*GetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
+func (*GetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }
func (m *GetRpkiResponse) GetServers() []*Rpki {
if m != nil {
@@ -1636,7 +1812,7 @@ type AddRpkiRequest struct {
func (m *AddRpkiRequest) Reset() { *m = AddRpkiRequest{} }
func (m *AddRpkiRequest) String() string { return proto.CompactTextString(m) }
func (*AddRpkiRequest) ProtoMessage() {}
-func (*AddRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
+func (*AddRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }
func (m *AddRpkiRequest) GetAddress() string {
if m != nil {
@@ -1665,7 +1841,7 @@ type AddRpkiResponse struct {
func (m *AddRpkiResponse) Reset() { *m = AddRpkiResponse{} }
func (m *AddRpkiResponse) String() string { return proto.CompactTextString(m) }
func (*AddRpkiResponse) ProtoMessage() {}
-func (*AddRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
+func (*AddRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }
type DeleteRpkiRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1675,7 +1851,7 @@ type DeleteRpkiRequest struct {
func (m *DeleteRpkiRequest) Reset() { *m = DeleteRpkiRequest{} }
func (m *DeleteRpkiRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteRpkiRequest) ProtoMessage() {}
-func (*DeleteRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }
+func (*DeleteRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }
func (m *DeleteRpkiRequest) GetAddress() string {
if m != nil {
@@ -1697,7 +1873,7 @@ type DeleteRpkiResponse struct {
func (m *DeleteRpkiResponse) Reset() { *m = DeleteRpkiResponse{} }
func (m *DeleteRpkiResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteRpkiResponse) ProtoMessage() {}
-func (*DeleteRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }
+func (*DeleteRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }
type EnableRpkiRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1706,7 +1882,7 @@ type EnableRpkiRequest struct {
func (m *EnableRpkiRequest) Reset() { *m = EnableRpkiRequest{} }
func (m *EnableRpkiRequest) String() string { return proto.CompactTextString(m) }
func (*EnableRpkiRequest) ProtoMessage() {}
-func (*EnableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }
+func (*EnableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }
func (m *EnableRpkiRequest) GetAddress() string {
if m != nil {
@@ -1721,7 +1897,7 @@ type EnableRpkiResponse struct {
func (m *EnableRpkiResponse) Reset() { *m = EnableRpkiResponse{} }
func (m *EnableRpkiResponse) String() string { return proto.CompactTextString(m) }
func (*EnableRpkiResponse) ProtoMessage() {}
-func (*EnableRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }
+func (*EnableRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }
type DisableRpkiRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1730,7 +1906,7 @@ type DisableRpkiRequest struct {
func (m *DisableRpkiRequest) Reset() { *m = DisableRpkiRequest{} }
func (m *DisableRpkiRequest) String() string { return proto.CompactTextString(m) }
func (*DisableRpkiRequest) ProtoMessage() {}
-func (*DisableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }
+func (*DisableRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }
func (m *DisableRpkiRequest) GetAddress() string {
if m != nil {
@@ -1745,7 +1921,7 @@ type DisableRpkiResponse struct {
func (m *DisableRpkiResponse) Reset() { *m = DisableRpkiResponse{} }
func (m *DisableRpkiResponse) String() string { return proto.CompactTextString(m) }
func (*DisableRpkiResponse) ProtoMessage() {}
-func (*DisableRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }
+func (*DisableRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} }
type ResetRpkiRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1754,7 +1930,7 @@ type ResetRpkiRequest struct {
func (m *ResetRpkiRequest) Reset() { *m = ResetRpkiRequest{} }
func (m *ResetRpkiRequest) String() string { return proto.CompactTextString(m) }
func (*ResetRpkiRequest) ProtoMessage() {}
-func (*ResetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }
+func (*ResetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} }
func (m *ResetRpkiRequest) GetAddress() string {
if m != nil {
@@ -1769,7 +1945,7 @@ type ResetRpkiResponse struct {
func (m *ResetRpkiResponse) Reset() { *m = ResetRpkiResponse{} }
func (m *ResetRpkiResponse) String() string { return proto.CompactTextString(m) }
func (*ResetRpkiResponse) ProtoMessage() {}
-func (*ResetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }
+func (*ResetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} }
type SoftResetRpkiRequest struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1778,7 +1954,7 @@ type SoftResetRpkiRequest struct {
func (m *SoftResetRpkiRequest) Reset() { *m = SoftResetRpkiRequest{} }
func (m *SoftResetRpkiRequest) String() string { return proto.CompactTextString(m) }
func (*SoftResetRpkiRequest) ProtoMessage() {}
-func (*SoftResetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }
+func (*SoftResetRpkiRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} }
func (m *SoftResetRpkiRequest) GetAddress() string {
if m != nil {
@@ -1793,7 +1969,7 @@ type SoftResetRpkiResponse struct {
func (m *SoftResetRpkiResponse) Reset() { *m = SoftResetRpkiResponse{} }
func (m *SoftResetRpkiResponse) String() string { return proto.CompactTextString(m) }
func (*SoftResetRpkiResponse) ProtoMessage() {}
-func (*SoftResetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }
+func (*SoftResetRpkiResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} }
type EnableZebraRequest struct {
Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
@@ -1806,7 +1982,7 @@ type EnableZebraRequest struct {
func (m *EnableZebraRequest) Reset() { *m = EnableZebraRequest{} }
func (m *EnableZebraRequest) String() string { return proto.CompactTextString(m) }
func (*EnableZebraRequest) ProtoMessage() {}
-func (*EnableZebraRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }
+func (*EnableZebraRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} }
func (m *EnableZebraRequest) GetUrl() string {
if m != nil {
@@ -1849,7 +2025,7 @@ type EnableZebraResponse struct {
func (m *EnableZebraResponse) Reset() { *m = EnableZebraResponse{} }
func (m *EnableZebraResponse) String() string { return proto.CompactTextString(m) }
func (*EnableZebraResponse) ProtoMessage() {}
-func (*EnableZebraResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }
+func (*EnableZebraResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} }
type GetVrfRequest struct {
}
@@ -1857,7 +2033,7 @@ type GetVrfRequest struct {
func (m *GetVrfRequest) Reset() { *m = GetVrfRequest{} }
func (m *GetVrfRequest) String() string { return proto.CompactTextString(m) }
func (*GetVrfRequest) ProtoMessage() {}
-func (*GetVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }
+func (*GetVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} }
type GetVrfResponse struct {
Vrfs []*Vrf `protobuf:"bytes,1,rep,name=vrfs" json:"vrfs,omitempty"`
@@ -1866,7 +2042,7 @@ type GetVrfResponse struct {
func (m *GetVrfResponse) Reset() { *m = GetVrfResponse{} }
func (m *GetVrfResponse) String() string { return proto.CompactTextString(m) }
func (*GetVrfResponse) ProtoMessage() {}
-func (*GetVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} }
+func (*GetVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} }
func (m *GetVrfResponse) GetVrfs() []*Vrf {
if m != nil {
@@ -1882,7 +2058,7 @@ type AddVrfRequest struct {
func (m *AddVrfRequest) Reset() { *m = AddVrfRequest{} }
func (m *AddVrfRequest) String() string { return proto.CompactTextString(m) }
func (*AddVrfRequest) ProtoMessage() {}
-func (*AddVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} }
+func (*AddVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} }
func (m *AddVrfRequest) GetVrf() *Vrf {
if m != nil {
@@ -1897,7 +2073,7 @@ type AddVrfResponse struct {
func (m *AddVrfResponse) Reset() { *m = AddVrfResponse{} }
func (m *AddVrfResponse) String() string { return proto.CompactTextString(m) }
func (*AddVrfResponse) ProtoMessage() {}
-func (*AddVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} }
+func (*AddVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} }
type DeleteVrfRequest struct {
Vrf *Vrf `protobuf:"bytes,1,opt,name=vrf" json:"vrf,omitempty"`
@@ -1906,7 +2082,7 @@ type DeleteVrfRequest struct {
func (m *DeleteVrfRequest) Reset() { *m = DeleteVrfRequest{} }
func (m *DeleteVrfRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteVrfRequest) ProtoMessage() {}
-func (*DeleteVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} }
+func (*DeleteVrfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} }
func (m *DeleteVrfRequest) GetVrf() *Vrf {
if m != nil {
@@ -1921,7 +2097,7 @@ type DeleteVrfResponse struct {
func (m *DeleteVrfResponse) Reset() { *m = DeleteVrfResponse{} }
func (m *DeleteVrfResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteVrfResponse) ProtoMessage() {}
-func (*DeleteVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} }
+func (*DeleteVrfResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} }
type GetDefinedSetRequest struct {
Type DefinedType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.DefinedType" json:"type,omitempty"`
@@ -1931,7 +2107,7 @@ type GetDefinedSetRequest struct {
func (m *GetDefinedSetRequest) Reset() { *m = GetDefinedSetRequest{} }
func (m *GetDefinedSetRequest) String() string { return proto.CompactTextString(m) }
func (*GetDefinedSetRequest) ProtoMessage() {}
-func (*GetDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} }
+func (*GetDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} }
func (m *GetDefinedSetRequest) GetType() DefinedType {
if m != nil {
@@ -1954,7 +2130,7 @@ type GetDefinedSetResponse struct {
func (m *GetDefinedSetResponse) Reset() { *m = GetDefinedSetResponse{} }
func (m *GetDefinedSetResponse) String() string { return proto.CompactTextString(m) }
func (*GetDefinedSetResponse) ProtoMessage() {}
-func (*GetDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} }
+func (*GetDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} }
func (m *GetDefinedSetResponse) GetSets() []*DefinedSet {
if m != nil {
@@ -1970,7 +2146,7 @@ type AddDefinedSetRequest struct {
func (m *AddDefinedSetRequest) Reset() { *m = AddDefinedSetRequest{} }
func (m *AddDefinedSetRequest) String() string { return proto.CompactTextString(m) }
func (*AddDefinedSetRequest) ProtoMessage() {}
-func (*AddDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} }
+func (*AddDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} }
func (m *AddDefinedSetRequest) GetSet() *DefinedSet {
if m != nil {
@@ -1985,7 +2161,7 @@ type AddDefinedSetResponse struct {
func (m *AddDefinedSetResponse) Reset() { *m = AddDefinedSetResponse{} }
func (m *AddDefinedSetResponse) String() string { return proto.CompactTextString(m) }
func (*AddDefinedSetResponse) ProtoMessage() {}
-func (*AddDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} }
+func (*AddDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} }
type DeleteDefinedSetRequest struct {
Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
@@ -1995,7 +2171,7 @@ type DeleteDefinedSetRequest struct {
func (m *DeleteDefinedSetRequest) Reset() { *m = DeleteDefinedSetRequest{} }
func (m *DeleteDefinedSetRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteDefinedSetRequest) ProtoMessage() {}
-func (*DeleteDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} }
+func (*DeleteDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} }
func (m *DeleteDefinedSetRequest) GetSet() *DefinedSet {
if m != nil {
@@ -2017,7 +2193,7 @@ type DeleteDefinedSetResponse struct {
func (m *DeleteDefinedSetResponse) Reset() { *m = DeleteDefinedSetResponse{} }
func (m *DeleteDefinedSetResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteDefinedSetResponse) ProtoMessage() {}
-func (*DeleteDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} }
+func (*DeleteDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} }
type ReplaceDefinedSetRequest struct {
Set *DefinedSet `protobuf:"bytes,1,opt,name=set" json:"set,omitempty"`
@@ -2026,7 +2202,7 @@ type ReplaceDefinedSetRequest struct {
func (m *ReplaceDefinedSetRequest) Reset() { *m = ReplaceDefinedSetRequest{} }
func (m *ReplaceDefinedSetRequest) String() string { return proto.CompactTextString(m) }
func (*ReplaceDefinedSetRequest) ProtoMessage() {}
-func (*ReplaceDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} }
+func (*ReplaceDefinedSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} }
func (m *ReplaceDefinedSetRequest) GetSet() *DefinedSet {
if m != nil {
@@ -2041,7 +2217,7 @@ type ReplaceDefinedSetResponse struct {
func (m *ReplaceDefinedSetResponse) Reset() { *m = ReplaceDefinedSetResponse{} }
func (m *ReplaceDefinedSetResponse) String() string { return proto.CompactTextString(m) }
func (*ReplaceDefinedSetResponse) ProtoMessage() {}
-func (*ReplaceDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} }
+func (*ReplaceDefinedSetResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} }
type GetStatementRequest struct {
}
@@ -2049,7 +2225,7 @@ type GetStatementRequest struct {
func (m *GetStatementRequest) Reset() { *m = GetStatementRequest{} }
func (m *GetStatementRequest) String() string { return proto.CompactTextString(m) }
func (*GetStatementRequest) ProtoMessage() {}
-func (*GetStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} }
+func (*GetStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} }
type GetStatementResponse struct {
Statements []*Statement `protobuf:"bytes,1,rep,name=statements" json:"statements,omitempty"`
@@ -2058,7 +2234,7 @@ type GetStatementResponse struct {
func (m *GetStatementResponse) Reset() { *m = GetStatementResponse{} }
func (m *GetStatementResponse) String() string { return proto.CompactTextString(m) }
func (*GetStatementResponse) ProtoMessage() {}
-func (*GetStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} }
+func (*GetStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} }
func (m *GetStatementResponse) GetStatements() []*Statement {
if m != nil {
@@ -2074,7 +2250,7 @@ type AddStatementRequest struct {
func (m *AddStatementRequest) Reset() { *m = AddStatementRequest{} }
func (m *AddStatementRequest) String() string { return proto.CompactTextString(m) }
func (*AddStatementRequest) ProtoMessage() {}
-func (*AddStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} }
+func (*AddStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} }
func (m *AddStatementRequest) GetStatement() *Statement {
if m != nil {
@@ -2089,7 +2265,7 @@ type AddStatementResponse struct {
func (m *AddStatementResponse) Reset() { *m = AddStatementResponse{} }
func (m *AddStatementResponse) String() string { return proto.CompactTextString(m) }
func (*AddStatementResponse) ProtoMessage() {}
-func (*AddStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} }
+func (*AddStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} }
type DeleteStatementRequest struct {
Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
@@ -2099,7 +2275,7 @@ type DeleteStatementRequest struct {
func (m *DeleteStatementRequest) Reset() { *m = DeleteStatementRequest{} }
func (m *DeleteStatementRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteStatementRequest) ProtoMessage() {}
-func (*DeleteStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} }
+func (*DeleteStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} }
func (m *DeleteStatementRequest) GetStatement() *Statement {
if m != nil {
@@ -2121,7 +2297,7 @@ type DeleteStatementResponse struct {
func (m *DeleteStatementResponse) Reset() { *m = DeleteStatementResponse{} }
func (m *DeleteStatementResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteStatementResponse) ProtoMessage() {}
-func (*DeleteStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} }
+func (*DeleteStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} }
type ReplaceStatementRequest struct {
Statement *Statement `protobuf:"bytes,1,opt,name=statement" json:"statement,omitempty"`
@@ -2130,7 +2306,7 @@ type ReplaceStatementRequest struct {
func (m *ReplaceStatementRequest) Reset() { *m = ReplaceStatementRequest{} }
func (m *ReplaceStatementRequest) String() string { return proto.CompactTextString(m) }
func (*ReplaceStatementRequest) ProtoMessage() {}
-func (*ReplaceStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} }
+func (*ReplaceStatementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} }
func (m *ReplaceStatementRequest) GetStatement() *Statement {
if m != nil {
@@ -2145,7 +2321,7 @@ type ReplaceStatementResponse struct {
func (m *ReplaceStatementResponse) Reset() { *m = ReplaceStatementResponse{} }
func (m *ReplaceStatementResponse) String() string { return proto.CompactTextString(m) }
func (*ReplaceStatementResponse) ProtoMessage() {}
-func (*ReplaceStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} }
+func (*ReplaceStatementResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} }
type GetPolicyRequest struct {
}
@@ -2153,7 +2329,7 @@ type GetPolicyRequest struct {
func (m *GetPolicyRequest) Reset() { *m = GetPolicyRequest{} }
func (m *GetPolicyRequest) String() string { return proto.CompactTextString(m) }
func (*GetPolicyRequest) ProtoMessage() {}
-func (*GetPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} }
+func (*GetPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} }
type GetPolicyResponse struct {
Policies []*Policy `protobuf:"bytes,1,rep,name=policies" json:"policies,omitempty"`
@@ -2162,7 +2338,7 @@ type GetPolicyResponse struct {
func (m *GetPolicyResponse) Reset() { *m = GetPolicyResponse{} }
func (m *GetPolicyResponse) String() string { return proto.CompactTextString(m) }
func (*GetPolicyResponse) ProtoMessage() {}
-func (*GetPolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} }
+func (*GetPolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} }
func (m *GetPolicyResponse) GetPolicies() []*Policy {
if m != nil {
@@ -2181,7 +2357,7 @@ type AddPolicyRequest struct {
func (m *AddPolicyRequest) Reset() { *m = AddPolicyRequest{} }
func (m *AddPolicyRequest) String() string { return proto.CompactTextString(m) }
func (*AddPolicyRequest) ProtoMessage() {}
-func (*AddPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} }
+func (*AddPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} }
func (m *AddPolicyRequest) GetPolicy() *Policy {
if m != nil {
@@ -2203,7 +2379,7 @@ type AddPolicyResponse struct {
func (m *AddPolicyResponse) Reset() { *m = AddPolicyResponse{} }
func (m *AddPolicyResponse) String() string { return proto.CompactTextString(m) }
func (*AddPolicyResponse) ProtoMessage() {}
-func (*AddPolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} }
+func (*AddPolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} }
type DeletePolicyRequest struct {
Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
@@ -2216,7 +2392,7 @@ type DeletePolicyRequest struct {
func (m *DeletePolicyRequest) Reset() { *m = DeletePolicyRequest{} }
func (m *DeletePolicyRequest) String() string { return proto.CompactTextString(m) }
func (*DeletePolicyRequest) ProtoMessage() {}
-func (*DeletePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} }
+func (*DeletePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} }
func (m *DeletePolicyRequest) GetPolicy() *Policy {
if m != nil {
@@ -2245,7 +2421,7 @@ type DeletePolicyResponse struct {
func (m *DeletePolicyResponse) Reset() { *m = DeletePolicyResponse{} }
func (m *DeletePolicyResponse) String() string { return proto.CompactTextString(m) }
func (*DeletePolicyResponse) ProtoMessage() {}
-func (*DeletePolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} }
+func (*DeletePolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} }
type ReplacePolicyRequest struct {
Policy *Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
@@ -2260,7 +2436,7 @@ type ReplacePolicyRequest struct {
func (m *ReplacePolicyRequest) Reset() { *m = ReplacePolicyRequest{} }
func (m *ReplacePolicyRequest) String() string { return proto.CompactTextString(m) }
func (*ReplacePolicyRequest) ProtoMessage() {}
-func (*ReplacePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} }
+func (*ReplacePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} }
func (m *ReplacePolicyRequest) GetPolicy() *Policy {
if m != nil {
@@ -2289,7 +2465,7 @@ type ReplacePolicyResponse struct {
func (m *ReplacePolicyResponse) Reset() { *m = ReplacePolicyResponse{} }
func (m *ReplacePolicyResponse) String() string { return proto.CompactTextString(m) }
func (*ReplacePolicyResponse) ProtoMessage() {}
-func (*ReplacePolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} }
+func (*ReplacePolicyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{90} }
type GetPolicyAssignmentRequest struct {
Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
@@ -2298,7 +2474,7 @@ type GetPolicyAssignmentRequest struct {
func (m *GetPolicyAssignmentRequest) Reset() { *m = GetPolicyAssignmentRequest{} }
func (m *GetPolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
func (*GetPolicyAssignmentRequest) ProtoMessage() {}
-func (*GetPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} }
+func (*GetPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{91} }
func (m *GetPolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
if m != nil {
@@ -2314,7 +2490,7 @@ type GetPolicyAssignmentResponse struct {
func (m *GetPolicyAssignmentResponse) Reset() { *m = GetPolicyAssignmentResponse{} }
func (m *GetPolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
func (*GetPolicyAssignmentResponse) ProtoMessage() {}
-func (*GetPolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} }
+func (*GetPolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{92} }
func (m *GetPolicyAssignmentResponse) GetAssignment() *PolicyAssignment {
if m != nil {
@@ -2330,7 +2506,7 @@ type AddPolicyAssignmentRequest struct {
func (m *AddPolicyAssignmentRequest) Reset() { *m = AddPolicyAssignmentRequest{} }
func (m *AddPolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
func (*AddPolicyAssignmentRequest) ProtoMessage() {}
-func (*AddPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} }
+func (*AddPolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{93} }
func (m *AddPolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
if m != nil {
@@ -2345,7 +2521,7 @@ type AddPolicyAssignmentResponse struct {
func (m *AddPolicyAssignmentResponse) Reset() { *m = AddPolicyAssignmentResponse{} }
func (m *AddPolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
func (*AddPolicyAssignmentResponse) ProtoMessage() {}
-func (*AddPolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} }
+func (*AddPolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{94} }
type DeletePolicyAssignmentRequest struct {
Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
@@ -2355,7 +2531,7 @@ type DeletePolicyAssignmentRequest struct {
func (m *DeletePolicyAssignmentRequest) Reset() { *m = DeletePolicyAssignmentRequest{} }
func (m *DeletePolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
func (*DeletePolicyAssignmentRequest) ProtoMessage() {}
-func (*DeletePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} }
+func (*DeletePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{95} }
func (m *DeletePolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
if m != nil {
@@ -2377,7 +2553,7 @@ type DeletePolicyAssignmentResponse struct {
func (m *DeletePolicyAssignmentResponse) Reset() { *m = DeletePolicyAssignmentResponse{} }
func (m *DeletePolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
func (*DeletePolicyAssignmentResponse) ProtoMessage() {}
-func (*DeletePolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} }
+func (*DeletePolicyAssignmentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{96} }
type ReplacePolicyAssignmentRequest struct {
Assignment *PolicyAssignment `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"`
@@ -2386,7 +2562,7 @@ type ReplacePolicyAssignmentRequest struct {
func (m *ReplacePolicyAssignmentRequest) Reset() { *m = ReplacePolicyAssignmentRequest{} }
func (m *ReplacePolicyAssignmentRequest) String() string { return proto.CompactTextString(m) }
func (*ReplacePolicyAssignmentRequest) ProtoMessage() {}
-func (*ReplacePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} }
+func (*ReplacePolicyAssignmentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{97} }
func (m *ReplacePolicyAssignmentRequest) GetAssignment() *PolicyAssignment {
if m != nil {
@@ -2402,7 +2578,7 @@ func (m *ReplacePolicyAssignmentResponse) Reset() { *m = ReplacePolicyAs
func (m *ReplacePolicyAssignmentResponse) String() string { return proto.CompactTextString(m) }
func (*ReplacePolicyAssignmentResponse) ProtoMessage() {}
func (*ReplacePolicyAssignmentResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{90}
+ return fileDescriptor0, []int{98}
}
type GetServerRequest struct {
@@ -2411,7 +2587,7 @@ type GetServerRequest struct {
func (m *GetServerRequest) Reset() { *m = GetServerRequest{} }
func (m *GetServerRequest) String() string { return proto.CompactTextString(m) }
func (*GetServerRequest) ProtoMessage() {}
-func (*GetServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{91} }
+func (*GetServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{99} }
type GetServerResponse struct {
Global *Global `protobuf:"bytes,1,opt,name=global" json:"global,omitempty"`
@@ -2420,7 +2596,7 @@ type GetServerResponse struct {
func (m *GetServerResponse) Reset() { *m = GetServerResponse{} }
func (m *GetServerResponse) String() string { return proto.CompactTextString(m) }
func (*GetServerResponse) ProtoMessage() {}
-func (*GetServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{92} }
+func (*GetServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{100} }
func (m *GetServerResponse) GetGlobal() *Global {
if m != nil {
@@ -2436,7 +2612,7 @@ type StartServerRequest struct {
func (m *StartServerRequest) Reset() { *m = StartServerRequest{} }
func (m *StartServerRequest) String() string { return proto.CompactTextString(m) }
func (*StartServerRequest) ProtoMessage() {}
-func (*StartServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{93} }
+func (*StartServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{101} }
func (m *StartServerRequest) GetGlobal() *Global {
if m != nil {
@@ -2451,7 +2627,7 @@ type StartServerResponse struct {
func (m *StartServerResponse) Reset() { *m = StartServerResponse{} }
func (m *StartServerResponse) String() string { return proto.CompactTextString(m) }
func (*StartServerResponse) ProtoMessage() {}
-func (*StartServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{94} }
+func (*StartServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{102} }
type StopServerRequest struct {
}
@@ -2459,7 +2635,7 @@ type StopServerRequest struct {
func (m *StopServerRequest) Reset() { *m = StopServerRequest{} }
func (m *StopServerRequest) String() string { return proto.CompactTextString(m) }
func (*StopServerRequest) ProtoMessage() {}
-func (*StopServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{95} }
+func (*StopServerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{103} }
type StopServerResponse struct {
}
@@ -2467,7 +2643,7 @@ type StopServerResponse struct {
func (m *StopServerResponse) Reset() { *m = StopServerResponse{} }
func (m *StopServerResponse) String() string { return proto.CompactTextString(m) }
func (*StopServerResponse) ProtoMessage() {}
-func (*StopServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{96} }
+func (*StopServerResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{104} }
type RPKIValidation struct {
State RPKIValidation_State `protobuf:"varint,1,opt,name=state,enum=gobgpapi.RPKIValidation_State" json:"state,omitempty"`
@@ -2480,7 +2656,7 @@ type RPKIValidation struct {
func (m *RPKIValidation) Reset() { *m = RPKIValidation{} }
func (m *RPKIValidation) String() string { return proto.CompactTextString(m) }
func (*RPKIValidation) ProtoMessage() {}
-func (*RPKIValidation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{97} }
+func (*RPKIValidation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{105} }
func (m *RPKIValidation) GetState() RPKIValidation_State {
if m != nil {
@@ -2560,7 +2736,7 @@ type Path struct {
func (m *Path) Reset() { *m = Path{} }
func (m *Path) String() string { return proto.CompactTextString(m) }
func (*Path) ProtoMessage() {}
-func (*Path) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{98} }
+func (*Path) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{106} }
func (m *Path) GetNlri() []byte {
if m != nil {
@@ -2719,7 +2895,7 @@ type Destination struct {
func (m *Destination) Reset() { *m = Destination{} }
func (m *Destination) String() string { return proto.CompactTextString(m) }
func (*Destination) ProtoMessage() {}
-func (*Destination) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{99} }
+func (*Destination) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{107} }
func (m *Destination) GetPrefix() string {
if m != nil {
@@ -2760,7 +2936,7 @@ type Table struct {
func (m *Table) Reset() { *m = Table{} }
func (m *Table) String() string { return proto.CompactTextString(m) }
func (*Table) ProtoMessage() {}
-func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{100} }
+func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{108} }
func (m *Table) GetType() Resource {
if m != nil {
@@ -2804,7 +2980,7 @@ type GetRibRequest struct {
func (m *GetRibRequest) Reset() { *m = GetRibRequest{} }
func (m *GetRibRequest) String() string { return proto.CompactTextString(m) }
func (*GetRibRequest) ProtoMessage() {}
-func (*GetRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{101} }
+func (*GetRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{109} }
func (m *GetRibRequest) GetTable() *Table {
if m != nil {
@@ -2820,7 +2996,7 @@ type GetRibResponse struct {
func (m *GetRibResponse) Reset() { *m = GetRibResponse{} }
func (m *GetRibResponse) String() string { return proto.CompactTextString(m) }
func (*GetRibResponse) ProtoMessage() {}
-func (*GetRibResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{102} }
+func (*GetRibResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{110} }
func (m *GetRibResponse) GetTable() *Table {
if m != nil {
@@ -2838,7 +3014,7 @@ type TableLookupPrefix struct {
func (m *TableLookupPrefix) Reset() { *m = TableLookupPrefix{} }
func (m *TableLookupPrefix) String() string { return proto.CompactTextString(m) }
func (*TableLookupPrefix) ProtoMessage() {}
-func (*TableLookupPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{103} }
+func (*TableLookupPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{111} }
func (m *TableLookupPrefix) GetPrefix() string {
if m != nil {
@@ -2864,7 +3040,7 @@ type GetPathRequest struct {
func (m *GetPathRequest) Reset() { *m = GetPathRequest{} }
func (m *GetPathRequest) String() string { return proto.CompactTextString(m) }
func (*GetPathRequest) ProtoMessage() {}
-func (*GetPathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{104} }
+func (*GetPathRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{112} }
func (m *GetPathRequest) GetType() Resource {
if m != nil {
@@ -2903,7 +3079,7 @@ type ValidateRibRequest struct {
func (m *ValidateRibRequest) Reset() { *m = ValidateRibRequest{} }
func (m *ValidateRibRequest) String() string { return proto.CompactTextString(m) }
func (*ValidateRibRequest) ProtoMessage() {}
-func (*ValidateRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{105} }
+func (*ValidateRibRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{113} }
func (m *ValidateRibRequest) GetType() Resource {
if m != nil {
@@ -2932,7 +3108,7 @@ type ValidateRibResponse struct {
func (m *ValidateRibResponse) Reset() { *m = ValidateRibResponse{} }
func (m *ValidateRibResponse) String() string { return proto.CompactTextString(m) }
func (*ValidateRibResponse) ProtoMessage() {}
-func (*ValidateRibResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{106} }
+func (*ValidateRibResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{114} }
type Peer struct {
// Note: Regarding to the consistency with OpenConfig model, a list of
@@ -2955,7 +3131,7 @@ type Peer struct {
func (m *Peer) Reset() { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage() {}
-func (*Peer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{107} }
+func (*Peer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{115} }
func (m *Peer) GetFamilies() []uint32 {
if m != nil {
@@ -3041,6 +3217,137 @@ func (m *Peer) GetAddPaths() *AddPaths {
return nil
}
+type PeerGroup struct {
+ // Note: Regarding to the consistency with OpenConfig model, a list of
+ // address family should be removed from here, and should be configured with
+ // the list of AfiSafi instead.
+ Families []uint32 `protobuf:"varint,1,rep,packed,name=families" json:"families,omitempty"`
+ ApplyPolicy *ApplyPolicy `protobuf:"bytes,2,opt,name=apply_policy,json=applyPolicy" json:"apply_policy,omitempty"`
+ Conf *PeerGroupConf `protobuf:"bytes,3,opt,name=conf" json:"conf,omitempty"`
+ EbgpMultihop *EbgpMultihop `protobuf:"bytes,4,opt,name=ebgp_multihop,json=ebgpMultihop" json:"ebgp_multihop,omitempty"`
+ RouteReflector *RouteReflector `protobuf:"bytes,5,opt,name=route_reflector,json=routeReflector" json:"route_reflector,omitempty"`
+ Info *PeerGroupState `protobuf:"bytes,6,opt,name=info" json:"info,omitempty"`
+ Timers *Timers `protobuf:"bytes,7,opt,name=timers" json:"timers,omitempty"`
+ Transport *Transport `protobuf:"bytes,8,opt,name=transport" json:"transport,omitempty"`
+ RouteServer *RouteServer `protobuf:"bytes,9,opt,name=route_server,json=routeServer" json:"route_server,omitempty"`
+ GracefulRestart *GracefulRestart `protobuf:"bytes,10,opt,name=graceful_restart,json=gracefulRestart" json:"graceful_restart,omitempty"`
+ AfiSafis []*AfiSafi `protobuf:"bytes,11,rep,name=afi_safis,json=afiSafis" json:"afi_safis,omitempty"`
+ AddPaths *AddPaths `protobuf:"bytes,12,opt,name=add_paths,json=addPaths" json:"add_paths,omitempty"`
+}
+
+func (m *PeerGroup) Reset() { *m = PeerGroup{} }
+func (m *PeerGroup) String() string { return proto.CompactTextString(m) }
+func (*PeerGroup) ProtoMessage() {}
+func (*PeerGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{116} }
+
+func (m *PeerGroup) GetFamilies() []uint32 {
+ if m != nil {
+ return m.Families
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetApplyPolicy() *ApplyPolicy {
+ if m != nil {
+ return m.ApplyPolicy
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetConf() *PeerGroupConf {
+ if m != nil {
+ return m.Conf
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetEbgpMultihop() *EbgpMultihop {
+ if m != nil {
+ return m.EbgpMultihop
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetRouteReflector() *RouteReflector {
+ if m != nil {
+ return m.RouteReflector
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetInfo() *PeerGroupState {
+ if m != nil {
+ return m.Info
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetTimers() *Timers {
+ if m != nil {
+ return m.Timers
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetTransport() *Transport {
+ if m != nil {
+ return m.Transport
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetRouteServer() *RouteServer {
+ if m != nil {
+ return m.RouteServer
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetGracefulRestart() *GracefulRestart {
+ if m != nil {
+ return m.GracefulRestart
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetAfiSafis() []*AfiSafi {
+ if m != nil {
+ return m.AfiSafis
+ }
+ return nil
+}
+
+func (m *PeerGroup) GetAddPaths() *AddPaths {
+ if m != nil {
+ return m.AddPaths
+ }
+ return nil
+}
+
+type DynamicNeighbor struct {
+ Prefix string `protobuf:"bytes,1,opt,name=prefix" json:"prefix,omitempty"`
+ PeerGroup string `protobuf:"bytes,2,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
+}
+
+func (m *DynamicNeighbor) Reset() { *m = DynamicNeighbor{} }
+func (m *DynamicNeighbor) String() string { return proto.CompactTextString(m) }
+func (*DynamicNeighbor) ProtoMessage() {}
+func (*DynamicNeighbor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{117} }
+
+func (m *DynamicNeighbor) GetPrefix() string {
+ if m != nil {
+ return m.Prefix
+ }
+ return ""
+}
+
+func (m *DynamicNeighbor) GetPeerGroup() string {
+ if m != nil {
+ return m.PeerGroup
+ }
+ return ""
+}
+
type ApplyPolicy struct {
InPolicy *PolicyAssignment `protobuf:"bytes,1,opt,name=in_policy,json=inPolicy" json:"in_policy,omitempty"`
ExportPolicy *PolicyAssignment `protobuf:"bytes,2,opt,name=export_policy,json=exportPolicy" json:"export_policy,omitempty"`
@@ -3050,7 +3357,7 @@ type ApplyPolicy struct {
func (m *ApplyPolicy) Reset() { *m = ApplyPolicy{} }
func (m *ApplyPolicy) String() string { return proto.CompactTextString(m) }
func (*ApplyPolicy) ProtoMessage() {}
-func (*ApplyPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{108} }
+func (*ApplyPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{118} }
func (m *ApplyPolicy) GetInPolicy() *PolicyAssignment {
if m != nil {
@@ -3082,7 +3389,7 @@ type PrefixLimit struct {
func (m *PrefixLimit) Reset() { *m = PrefixLimit{} }
func (m *PrefixLimit) String() string { return proto.CompactTextString(m) }
func (*PrefixLimit) ProtoMessage() {}
-func (*PrefixLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{109} }
+func (*PrefixLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{119} }
func (m *PrefixLimit) GetFamily() uint32 {
if m != nil {
@@ -3133,7 +3440,7 @@ type PeerConf struct {
func (m *PeerConf) Reset() { *m = PeerConf{} }
func (m *PeerConf) String() string { return proto.CompactTextString(m) }
func (*PeerConf) ProtoMessage() {}
-func (*PeerConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{110} }
+func (*PeerConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{120} }
func (m *PeerConf) GetAuthPassword() string {
if m != nil {
@@ -3268,6 +3575,182 @@ func (m *PeerConf) GetReplacePeerAs() bool {
return false
}
+type PeerGroupConf struct {
+ AuthPassword string `protobuf:"bytes,1,opt,name=auth_password,json=authPassword" json:"auth_password,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+ LocalAs uint32 `protobuf:"varint,3,opt,name=local_as,json=localAs" json:"local_as,omitempty"`
+ PeerAs uint32 `protobuf:"varint,5,opt,name=peer_as,json=peerAs" json:"peer_as,omitempty"`
+ PeerGroupName string `protobuf:"bytes,6,opt,name=peer_group_name,json=peerGroupName" json:"peer_group_name,omitempty"`
+ PeerType uint32 `protobuf:"varint,7,opt,name=peer_type,json=peerType" json:"peer_type,omitempty"`
+ RemovePrivateAs PeerGroupConf_RemovePrivateAs `protobuf:"varint,8,opt,name=remove_private_as,json=removePrivateAs,enum=gobgpapi.PeerGroupConf_RemovePrivateAs" json:"remove_private_as,omitempty"`
+ RouteFlapDamping bool `protobuf:"varint,9,opt,name=route_flap_damping,json=routeFlapDamping" json:"route_flap_damping,omitempty"`
+ SendCommunity uint32 `protobuf:"varint,10,opt,name=send_community,json=sendCommunity" json:"send_community,omitempty"`
+}
+
+func (m *PeerGroupConf) Reset() { *m = PeerGroupConf{} }
+func (m *PeerGroupConf) String() string { return proto.CompactTextString(m) }
+func (*PeerGroupConf) ProtoMessage() {}
+func (*PeerGroupConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{121} }
+
+func (m *PeerGroupConf) GetAuthPassword() string {
+ if m != nil {
+ return m.AuthPassword
+ }
+ return ""
+}
+
+func (m *PeerGroupConf) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+func (m *PeerGroupConf) GetLocalAs() uint32 {
+ if m != nil {
+ return m.LocalAs
+ }
+ return 0
+}
+
+func (m *PeerGroupConf) GetPeerAs() uint32 {
+ if m != nil {
+ return m.PeerAs
+ }
+ return 0
+}
+
+func (m *PeerGroupConf) GetPeerGroupName() string {
+ if m != nil {
+ return m.PeerGroupName
+ }
+ return ""
+}
+
+func (m *PeerGroupConf) GetPeerType() uint32 {
+ if m != nil {
+ return m.PeerType
+ }
+ return 0
+}
+
+func (m *PeerGroupConf) GetRemovePrivateAs() PeerGroupConf_RemovePrivateAs {
+ if m != nil {
+ return m.RemovePrivateAs
+ }
+ return PeerGroupConf_NONE
+}
+
+func (m *PeerGroupConf) GetRouteFlapDamping() bool {
+ if m != nil {
+ return m.RouteFlapDamping
+ }
+ return false
+}
+
+func (m *PeerGroupConf) GetSendCommunity() uint32 {
+ if m != nil {
+ return m.SendCommunity
+ }
+ return 0
+}
+
+type PeerGroupState struct {
+ AuthPassword string `protobuf:"bytes,1,opt,name=auth_password,json=authPassword" json:"auth_password,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+ LocalAs uint32 `protobuf:"varint,3,opt,name=local_as,json=localAs" json:"local_as,omitempty"`
+ PeerAs uint32 `protobuf:"varint,5,opt,name=peer_as,json=peerAs" json:"peer_as,omitempty"`
+ PeerGroupName string `protobuf:"bytes,6,opt,name=peer_group_name,json=peerGroupName" json:"peer_group_name,omitempty"`
+ PeerType uint32 `protobuf:"varint,7,opt,name=peer_type,json=peerType" json:"peer_type,omitempty"`
+ RemovePrivateAs PeerGroupState_RemovePrivateAs `protobuf:"varint,8,opt,name=remove_private_as,json=removePrivateAs,enum=gobgpapi.PeerGroupState_RemovePrivateAs" json:"remove_private_as,omitempty"`
+ RouteFlapDamping bool `protobuf:"varint,9,opt,name=route_flap_damping,json=routeFlapDamping" json:"route_flap_damping,omitempty"`
+ SendCommunity uint32 `protobuf:"varint,10,opt,name=send_community,json=sendCommunity" json:"send_community,omitempty"`
+ TotalPaths uint32 `protobuf:"varint,11,opt,name=total_paths,json=totalPaths" json:"total_paths,omitempty"`
+ TotalPrefixes uint32 `protobuf:"varint,12,opt,name=total_prefixes,json=totalPrefixes" json:"total_prefixes,omitempty"`
+}
+
+func (m *PeerGroupState) Reset() { *m = PeerGroupState{} }
+func (m *PeerGroupState) String() string { return proto.CompactTextString(m) }
+func (*PeerGroupState) ProtoMessage() {}
+func (*PeerGroupState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{122} }
+
+func (m *PeerGroupState) GetAuthPassword() string {
+ if m != nil {
+ return m.AuthPassword
+ }
+ return ""
+}
+
+func (m *PeerGroupState) GetDescription() string {
+ if m != nil {
+ return m.Description
+ }
+ return ""
+}
+
+func (m *PeerGroupState) GetLocalAs() uint32 {
+ if m != nil {
+ return m.LocalAs
+ }
+ return 0
+}
+
+func (m *PeerGroupState) GetPeerAs() uint32 {
+ if m != nil {
+ return m.PeerAs
+ }
+ return 0
+}
+
+func (m *PeerGroupState) GetPeerGroupName() string {
+ if m != nil {
+ return m.PeerGroupName
+ }
+ return ""
+}
+
+func (m *PeerGroupState) GetPeerType() uint32 {
+ if m != nil {
+ return m.PeerType
+ }
+ return 0
+}
+
+func (m *PeerGroupState) GetRemovePrivateAs() PeerGroupState_RemovePrivateAs {
+ if m != nil {
+ return m.RemovePrivateAs
+ }
+ return PeerGroupState_NONE
+}
+
+func (m *PeerGroupState) GetRouteFlapDamping() bool {
+ if m != nil {
+ return m.RouteFlapDamping
+ }
+ return false
+}
+
+func (m *PeerGroupState) GetSendCommunity() uint32 {
+ if m != nil {
+ return m.SendCommunity
+ }
+ return 0
+}
+
+func (m *PeerGroupState) GetTotalPaths() uint32 {
+ if m != nil {
+ return m.TotalPaths
+ }
+ return 0
+}
+
+func (m *PeerGroupState) GetTotalPrefixes() uint32 {
+ if m != nil {
+ return m.TotalPrefixes
+ }
+ return 0
+}
+
type EbgpMultihop struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
MultihopTtl uint32 `protobuf:"varint,2,opt,name=multihop_ttl,json=multihopTtl" json:"multihop_ttl,omitempty"`
@@ -3276,7 +3759,7 @@ type EbgpMultihop struct {
func (m *EbgpMultihop) Reset() { *m = EbgpMultihop{} }
func (m *EbgpMultihop) String() string { return proto.CompactTextString(m) }
func (*EbgpMultihop) ProtoMessage() {}
-func (*EbgpMultihop) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{111} }
+func (*EbgpMultihop) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{123} }
func (m *EbgpMultihop) GetEnabled() bool {
if m != nil {
@@ -3300,7 +3783,7 @@ type RouteReflector struct {
func (m *RouteReflector) Reset() { *m = RouteReflector{} }
func (m *RouteReflector) String() string { return proto.CompactTextString(m) }
func (*RouteReflector) ProtoMessage() {}
-func (*RouteReflector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{112} }
+func (*RouteReflector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{124} }
func (m *RouteReflector) GetRouteReflectorClient() bool {
if m != nil {
@@ -3343,7 +3826,7 @@ type PeerState struct {
func (m *PeerState) Reset() { *m = PeerState{} }
func (m *PeerState) String() string { return proto.CompactTextString(m) }
func (*PeerState) ProtoMessage() {}
-func (*PeerState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{113} }
+func (*PeerState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{125} }
func (m *PeerState) GetAuthPassword() string {
if m != nil {
@@ -3500,7 +3983,7 @@ type Messages struct {
func (m *Messages) Reset() { *m = Messages{} }
func (m *Messages) String() string { return proto.CompactTextString(m) }
func (*Messages) ProtoMessage() {}
-func (*Messages) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{114} }
+func (*Messages) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{126} }
func (m *Messages) GetReceived() *Message {
if m != nil {
@@ -3529,7 +4012,7 @@ type Message struct {
func (m *Message) Reset() { *m = Message{} }
func (m *Message) String() string { return proto.CompactTextString(m) }
func (*Message) ProtoMessage() {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{115} }
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{127} }
func (m *Message) GetNOTIFICATION() uint64 {
if m != nil {
@@ -3588,7 +4071,7 @@ type Queues struct {
func (m *Queues) Reset() { *m = Queues{} }
func (m *Queues) String() string { return proto.CompactTextString(m) }
func (*Queues) ProtoMessage() {}
-func (*Queues) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{116} }
+func (*Queues) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{128} }
func (m *Queues) GetInput() uint32 {
if m != nil {
@@ -3612,7 +4095,7 @@ type Timers struct {
func (m *Timers) Reset() { *m = Timers{} }
func (m *Timers) String() string { return proto.CompactTextString(m) }
func (*Timers) ProtoMessage() {}
-func (*Timers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{117} }
+func (*Timers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{129} }
func (m *Timers) GetConfig() *TimersConfig {
if m != nil {
@@ -3638,7 +4121,7 @@ type TimersConfig struct {
func (m *TimersConfig) Reset() { *m = TimersConfig{} }
func (m *TimersConfig) String() string { return proto.CompactTextString(m) }
func (*TimersConfig) ProtoMessage() {}
-func (*TimersConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{118} }
+func (*TimersConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{130} }
func (m *TimersConfig) GetConnectRetry() uint64 {
if m != nil {
@@ -3681,7 +4164,7 @@ type TimersState struct {
func (m *TimersState) Reset() { *m = TimersState{} }
func (m *TimersState) String() string { return proto.CompactTextString(m) }
func (*TimersState) ProtoMessage() {}
-func (*TimersState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{119} }
+func (*TimersState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{131} }
func (m *TimersState) GetConnectRetry() uint64 {
if m != nil {
@@ -3745,7 +4228,7 @@ type Transport struct {
func (m *Transport) Reset() { *m = Transport{} }
func (m *Transport) String() string { return proto.CompactTextString(m) }
func (*Transport) ProtoMessage() {}
-func (*Transport) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{120} }
+func (*Transport) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{132} }
func (m *Transport) GetLocalAddress() string {
if m != nil {
@@ -3803,7 +4286,7 @@ type RouteServer struct {
func (m *RouteServer) Reset() { *m = RouteServer{} }
func (m *RouteServer) String() string { return proto.CompactTextString(m) }
func (*RouteServer) ProtoMessage() {}
-func (*RouteServer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{121} }
+func (*RouteServer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{133} }
func (m *RouteServer) GetRouteServerClient() bool {
if m != nil {
@@ -3829,7 +4312,7 @@ type GracefulRestart struct {
func (m *GracefulRestart) Reset() { *m = GracefulRestart{} }
func (m *GracefulRestart) String() string { return proto.CompactTextString(m) }
func (*GracefulRestart) ProtoMessage() {}
-func (*GracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{122} }
+func (*GracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{134} }
func (m *GracefulRestart) GetEnabled() bool {
if m != nil {
@@ -3915,7 +4398,7 @@ type MpGracefulRestartConfig struct {
func (m *MpGracefulRestartConfig) Reset() { *m = MpGracefulRestartConfig{} }
func (m *MpGracefulRestartConfig) String() string { return proto.CompactTextString(m) }
func (*MpGracefulRestartConfig) ProtoMessage() {}
-func (*MpGracefulRestartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{123} }
+func (*MpGracefulRestartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{135} }
func (m *MpGracefulRestartConfig) GetEnabled() bool {
if m != nil {
@@ -3935,7 +4418,7 @@ type MpGracefulRestartState struct {
func (m *MpGracefulRestartState) Reset() { *m = MpGracefulRestartState{} }
func (m *MpGracefulRestartState) String() string { return proto.CompactTextString(m) }
func (*MpGracefulRestartState) ProtoMessage() {}
-func (*MpGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{124} }
+func (*MpGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{136} }
func (m *MpGracefulRestartState) GetEnabled() bool {
if m != nil {
@@ -3980,7 +4463,7 @@ type MpGracefulRestart struct {
func (m *MpGracefulRestart) Reset() { *m = MpGracefulRestart{} }
func (m *MpGracefulRestart) String() string { return proto.CompactTextString(m) }
func (*MpGracefulRestart) ProtoMessage() {}
-func (*MpGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{125} }
+func (*MpGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{137} }
func (m *MpGracefulRestart) GetConfig() *MpGracefulRestartConfig {
if m != nil {
@@ -4004,7 +4487,7 @@ type AfiSafiConfig struct {
func (m *AfiSafiConfig) Reset() { *m = AfiSafiConfig{} }
func (m *AfiSafiConfig) String() string { return proto.CompactTextString(m) }
func (*AfiSafiConfig) ProtoMessage() {}
-func (*AfiSafiConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{126} }
+func (*AfiSafiConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{138} }
func (m *AfiSafiConfig) GetFamily() uint32 {
if m != nil {
@@ -4030,7 +4513,7 @@ type AfiSafiState struct {
func (m *AfiSafiState) Reset() { *m = AfiSafiState{} }
func (m *AfiSafiState) String() string { return proto.CompactTextString(m) }
func (*AfiSafiState) ProtoMessage() {}
-func (*AfiSafiState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{127} }
+func (*AfiSafiState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{139} }
func (m *AfiSafiState) GetFamily() uint32 {
if m != nil {
@@ -4073,7 +4556,7 @@ type RouteSelectionOptionsConfig struct {
func (m *RouteSelectionOptionsConfig) Reset() { *m = RouteSelectionOptionsConfig{} }
func (m *RouteSelectionOptionsConfig) String() string { return proto.CompactTextString(m) }
func (*RouteSelectionOptionsConfig) ProtoMessage() {}
-func (*RouteSelectionOptionsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{128} }
+func (*RouteSelectionOptionsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{140} }
func (m *RouteSelectionOptionsConfig) GetAlwaysCompareMed() bool {
if m != nil {
@@ -4137,7 +4620,7 @@ type RouteSelectionOptionsState struct {
func (m *RouteSelectionOptionsState) Reset() { *m = RouteSelectionOptionsState{} }
func (m *RouteSelectionOptionsState) String() string { return proto.CompactTextString(m) }
func (*RouteSelectionOptionsState) ProtoMessage() {}
-func (*RouteSelectionOptionsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{129} }
+func (*RouteSelectionOptionsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{141} }
func (m *RouteSelectionOptionsState) GetAlwaysCompareMed() bool {
if m != nil {
@@ -4196,7 +4679,7 @@ type RouteSelectionOptions struct {
func (m *RouteSelectionOptions) Reset() { *m = RouteSelectionOptions{} }
func (m *RouteSelectionOptions) String() string { return proto.CompactTextString(m) }
func (*RouteSelectionOptions) ProtoMessage() {}
-func (*RouteSelectionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{130} }
+func (*RouteSelectionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{142} }
func (m *RouteSelectionOptions) GetConfig() *RouteSelectionOptionsConfig {
if m != nil {
@@ -4219,7 +4702,7 @@ type UseMultiplePathsConfig struct {
func (m *UseMultiplePathsConfig) Reset() { *m = UseMultiplePathsConfig{} }
func (m *UseMultiplePathsConfig) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePathsConfig) ProtoMessage() {}
-func (*UseMultiplePathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{131} }
+func (*UseMultiplePathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{143} }
func (m *UseMultiplePathsConfig) GetEnabled() bool {
if m != nil {
@@ -4235,7 +4718,7 @@ type UseMultiplePathsState struct {
func (m *UseMultiplePathsState) Reset() { *m = UseMultiplePathsState{} }
func (m *UseMultiplePathsState) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePathsState) ProtoMessage() {}
-func (*UseMultiplePathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{132} }
+func (*UseMultiplePathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{144} }
func (m *UseMultiplePathsState) GetEnabled() bool {
if m != nil {
@@ -4252,7 +4735,7 @@ type EbgpConfig struct {
func (m *EbgpConfig) Reset() { *m = EbgpConfig{} }
func (m *EbgpConfig) String() string { return proto.CompactTextString(m) }
func (*EbgpConfig) ProtoMessage() {}
-func (*EbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{133} }
+func (*EbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{145} }
func (m *EbgpConfig) GetAllowMultipleAs() bool {
if m != nil {
@@ -4276,7 +4759,7 @@ type EbgpState struct {
func (m *EbgpState) Reset() { *m = EbgpState{} }
func (m *EbgpState) String() string { return proto.CompactTextString(m) }
func (*EbgpState) ProtoMessage() {}
-func (*EbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{134} }
+func (*EbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{146} }
func (m *EbgpState) GetAllowMultipleAs() bool {
if m != nil {
@@ -4300,7 +4783,7 @@ type Ebgp struct {
func (m *Ebgp) Reset() { *m = Ebgp{} }
func (m *Ebgp) String() string { return proto.CompactTextString(m) }
func (*Ebgp) ProtoMessage() {}
-func (*Ebgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{135} }
+func (*Ebgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{147} }
func (m *Ebgp) GetConfig() *EbgpConfig {
if m != nil {
@@ -4323,7 +4806,7 @@ type IbgpConfig struct {
func (m *IbgpConfig) Reset() { *m = IbgpConfig{} }
func (m *IbgpConfig) String() string { return proto.CompactTextString(m) }
func (*IbgpConfig) ProtoMessage() {}
-func (*IbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{136} }
+func (*IbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{148} }
func (m *IbgpConfig) GetMaximumPaths() uint32 {
if m != nil {
@@ -4339,7 +4822,7 @@ type IbgpState struct {
func (m *IbgpState) Reset() { *m = IbgpState{} }
func (m *IbgpState) String() string { return proto.CompactTextString(m) }
func (*IbgpState) ProtoMessage() {}
-func (*IbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{137} }
+func (*IbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{149} }
func (m *IbgpState) GetMaximumPaths() uint32 {
if m != nil {
@@ -4356,7 +4839,7 @@ type Ibgp struct {
func (m *Ibgp) Reset() { *m = Ibgp{} }
func (m *Ibgp) String() string { return proto.CompactTextString(m) }
func (*Ibgp) ProtoMessage() {}
-func (*Ibgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{138} }
+func (*Ibgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{150} }
func (m *Ibgp) GetConfig() *IbgpConfig {
if m != nil {
@@ -4382,7 +4865,7 @@ type UseMultiplePaths struct {
func (m *UseMultiplePaths) Reset() { *m = UseMultiplePaths{} }
func (m *UseMultiplePaths) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePaths) ProtoMessage() {}
-func (*UseMultiplePaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{139} }
+func (*UseMultiplePaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{151} }
func (m *UseMultiplePaths) GetConfig() *UseMultiplePathsConfig {
if m != nil {
@@ -4419,7 +4902,7 @@ type RouteTargetMembershipConfig struct {
func (m *RouteTargetMembershipConfig) Reset() { *m = RouteTargetMembershipConfig{} }
func (m *RouteTargetMembershipConfig) String() string { return proto.CompactTextString(m) }
func (*RouteTargetMembershipConfig) ProtoMessage() {}
-func (*RouteTargetMembershipConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{140} }
+func (*RouteTargetMembershipConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{152} }
func (m *RouteTargetMembershipConfig) GetDeferralTime() uint32 {
if m != nil {
@@ -4435,7 +4918,7 @@ type RouteTargetMembershipState struct {
func (m *RouteTargetMembershipState) Reset() { *m = RouteTargetMembershipState{} }
func (m *RouteTargetMembershipState) String() string { return proto.CompactTextString(m) }
func (*RouteTargetMembershipState) ProtoMessage() {}
-func (*RouteTargetMembershipState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{141} }
+func (*RouteTargetMembershipState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{153} }
func (m *RouteTargetMembershipState) GetDeferralTime() uint32 {
if m != nil {
@@ -4452,7 +4935,7 @@ type RouteTargetMembership struct {
func (m *RouteTargetMembership) Reset() { *m = RouteTargetMembership{} }
func (m *RouteTargetMembership) String() string { return proto.CompactTextString(m) }
func (*RouteTargetMembership) ProtoMessage() {}
-func (*RouteTargetMembership) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{142} }
+func (*RouteTargetMembership) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{154} }
func (m *RouteTargetMembership) GetConfig() *RouteTargetMembershipConfig {
if m != nil {
@@ -4477,7 +4960,7 @@ func (m *LongLivedGracefulRestartConfig) Reset() { *m = LongLivedGracefu
func (m *LongLivedGracefulRestartConfig) String() string { return proto.CompactTextString(m) }
func (*LongLivedGracefulRestartConfig) ProtoMessage() {}
func (*LongLivedGracefulRestartConfig) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{143}
+ return fileDescriptor0, []int{155}
}
func (m *LongLivedGracefulRestartConfig) GetEnabled() bool {
@@ -4505,7 +4988,7 @@ type LongLivedGracefulRestartState struct {
func (m *LongLivedGracefulRestartState) Reset() { *m = LongLivedGracefulRestartState{} }
func (m *LongLivedGracefulRestartState) String() string { return proto.CompactTextString(m) }
func (*LongLivedGracefulRestartState) ProtoMessage() {}
-func (*LongLivedGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{144} }
+func (*LongLivedGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{156} }
func (m *LongLivedGracefulRestartState) GetEnabled() bool {
if m != nil {
@@ -4550,7 +5033,7 @@ type LongLivedGracefulRestart struct {
func (m *LongLivedGracefulRestart) Reset() { *m = LongLivedGracefulRestart{} }
func (m *LongLivedGracefulRestart) String() string { return proto.CompactTextString(m) }
func (*LongLivedGracefulRestart) ProtoMessage() {}
-func (*LongLivedGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{145} }
+func (*LongLivedGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{157} }
func (m *LongLivedGracefulRestart) GetConfig() *LongLivedGracefulRestartConfig {
if m != nil {
@@ -4593,7 +5076,7 @@ type AfiSafi struct {
func (m *AfiSafi) Reset() { *m = AfiSafi{} }
func (m *AfiSafi) String() string { return proto.CompactTextString(m) }
func (*AfiSafi) ProtoMessage() {}
-func (*AfiSafi) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{146} }
+func (*AfiSafi) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{158} }
func (m *AfiSafi) GetMpGracefulRestart() *MpGracefulRestart {
if m != nil {
@@ -4666,7 +5149,7 @@ type AddPathsConfig struct {
func (m *AddPathsConfig) Reset() { *m = AddPathsConfig{} }
func (m *AddPathsConfig) String() string { return proto.CompactTextString(m) }
func (*AddPathsConfig) ProtoMessage() {}
-func (*AddPathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{147} }
+func (*AddPathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{159} }
func (m *AddPathsConfig) GetReceive() bool {
if m != nil {
@@ -4690,7 +5173,7 @@ type AddPathsState struct {
func (m *AddPathsState) Reset() { *m = AddPathsState{} }
func (m *AddPathsState) String() string { return proto.CompactTextString(m) }
func (*AddPathsState) ProtoMessage() {}
-func (*AddPathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{148} }
+func (*AddPathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{160} }
func (m *AddPathsState) GetReceive() bool {
if m != nil {
@@ -4714,7 +5197,7 @@ type AddPaths struct {
func (m *AddPaths) Reset() { *m = AddPaths{} }
func (m *AddPaths) String() string { return proto.CompactTextString(m) }
func (*AddPaths) ProtoMessage() {}
-func (*AddPaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{149} }
+func (*AddPaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{161} }
func (m *AddPaths) GetConfig() *AddPathsConfig {
if m != nil {
@@ -4739,7 +5222,7 @@ type Prefix struct {
func (m *Prefix) Reset() { *m = Prefix{} }
func (m *Prefix) String() string { return proto.CompactTextString(m) }
func (*Prefix) ProtoMessage() {}
-func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{150} }
+func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{162} }
func (m *Prefix) GetIpPrefix() string {
if m != nil {
@@ -4772,7 +5255,7 @@ type DefinedSet struct {
func (m *DefinedSet) Reset() { *m = DefinedSet{} }
func (m *DefinedSet) String() string { return proto.CompactTextString(m) }
func (*DefinedSet) ProtoMessage() {}
-func (*DefinedSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{151} }
+func (*DefinedSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{163} }
func (m *DefinedSet) GetType() DefinedType {
if m != nil {
@@ -4810,7 +5293,7 @@ type MatchSet struct {
func (m *MatchSet) Reset() { *m = MatchSet{} }
func (m *MatchSet) String() string { return proto.CompactTextString(m) }
func (*MatchSet) ProtoMessage() {}
-func (*MatchSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{152} }
+func (*MatchSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{164} }
func (m *MatchSet) GetType() MatchType {
if m != nil {
@@ -4834,7 +5317,7 @@ type AsPathLength struct {
func (m *AsPathLength) Reset() { *m = AsPathLength{} }
func (m *AsPathLength) String() string { return proto.CompactTextString(m) }
func (*AsPathLength) ProtoMessage() {}
-func (*AsPathLength) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{153} }
+func (*AsPathLength) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{165} }
func (m *AsPathLength) GetType() AsPathLengthType {
if m != nil {
@@ -4866,7 +5349,7 @@ type Conditions struct {
func (m *Conditions) Reset() { *m = Conditions{} }
func (m *Conditions) String() string { return proto.CompactTextString(m) }
func (*Conditions) ProtoMessage() {}
-func (*Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{154} }
+func (*Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{166} }
func (m *Conditions) GetPrefixSet() *MatchSet {
if m != nil {
@@ -4946,7 +5429,7 @@ type CommunityAction struct {
func (m *CommunityAction) Reset() { *m = CommunityAction{} }
func (m *CommunityAction) String() string { return proto.CompactTextString(m) }
func (*CommunityAction) ProtoMessage() {}
-func (*CommunityAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{155} }
+func (*CommunityAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{167} }
func (m *CommunityAction) GetType() CommunityActionType {
if m != nil {
@@ -4970,7 +5453,7 @@ type MedAction struct {
func (m *MedAction) Reset() { *m = MedAction{} }
func (m *MedAction) String() string { return proto.CompactTextString(m) }
func (*MedAction) ProtoMessage() {}
-func (*MedAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{156} }
+func (*MedAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{168} }
func (m *MedAction) GetType() MedActionType {
if m != nil {
@@ -4995,7 +5478,7 @@ type AsPrependAction struct {
func (m *AsPrependAction) Reset() { *m = AsPrependAction{} }
func (m *AsPrependAction) String() string { return proto.CompactTextString(m) }
func (*AsPrependAction) ProtoMessage() {}
-func (*AsPrependAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{157} }
+func (*AsPrependAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{169} }
func (m *AsPrependAction) GetAsn() uint32 {
if m != nil {
@@ -5026,7 +5509,7 @@ type NexthopAction struct {
func (m *NexthopAction) Reset() { *m = NexthopAction{} }
func (m *NexthopAction) String() string { return proto.CompactTextString(m) }
func (*NexthopAction) ProtoMessage() {}
-func (*NexthopAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{158} }
+func (*NexthopAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{170} }
func (m *NexthopAction) GetAddress() string {
if m != nil {
@@ -5049,7 +5532,7 @@ type LocalPrefAction struct {
func (m *LocalPrefAction) Reset() { *m = LocalPrefAction{} }
func (m *LocalPrefAction) String() string { return proto.CompactTextString(m) }
func (*LocalPrefAction) ProtoMessage() {}
-func (*LocalPrefAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{159} }
+func (*LocalPrefAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{171} }
func (m *LocalPrefAction) GetValue() uint32 {
if m != nil {
@@ -5072,7 +5555,7 @@ type Actions struct {
func (m *Actions) Reset() { *m = Actions{} }
func (m *Actions) String() string { return proto.CompactTextString(m) }
func (*Actions) ProtoMessage() {}
-func (*Actions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{160} }
+func (*Actions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{172} }
func (m *Actions) GetRouteAction() RouteAction {
if m != nil {
@@ -5139,7 +5622,7 @@ type Statement struct {
func (m *Statement) Reset() { *m = Statement{} }
func (m *Statement) String() string { return proto.CompactTextString(m) }
func (*Statement) ProtoMessage() {}
-func (*Statement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{161} }
+func (*Statement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{173} }
func (m *Statement) GetName() string {
if m != nil {
@@ -5170,7 +5653,7 @@ type Policy struct {
func (m *Policy) Reset() { *m = Policy{} }
func (m *Policy) String() string { return proto.CompactTextString(m) }
func (*Policy) ProtoMessage() {}
-func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{162} }
+func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{174} }
func (m *Policy) GetName() string {
if m != nil {
@@ -5197,7 +5680,7 @@ type PolicyAssignment struct {
func (m *PolicyAssignment) Reset() { *m = PolicyAssignment{} }
func (m *PolicyAssignment) String() string { return proto.CompactTextString(m) }
func (*PolicyAssignment) ProtoMessage() {}
-func (*PolicyAssignment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{163} }
+func (*PolicyAssignment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{175} }
func (m *PolicyAssignment) GetType() PolicyType {
if m != nil {
@@ -5245,7 +5728,7 @@ type Roa struct {
func (m *Roa) Reset() { *m = Roa{} }
func (m *Roa) String() string { return proto.CompactTextString(m) }
func (*Roa) ProtoMessage() {}
-func (*Roa) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{164} }
+func (*Roa) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{176} }
func (m *Roa) GetAs() uint32 {
if m != nil {
@@ -5289,7 +5772,7 @@ type GetRoaRequest struct {
func (m *GetRoaRequest) Reset() { *m = GetRoaRequest{} }
func (m *GetRoaRequest) String() string { return proto.CompactTextString(m) }
func (*GetRoaRequest) ProtoMessage() {}
-func (*GetRoaRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{165} }
+func (*GetRoaRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{177} }
func (m *GetRoaRequest) GetFamily() uint32 {
if m != nil {
@@ -5305,7 +5788,7 @@ type GetRoaResponse struct {
func (m *GetRoaResponse) Reset() { *m = GetRoaResponse{} }
func (m *GetRoaResponse) String() string { return proto.CompactTextString(m) }
func (*GetRoaResponse) ProtoMessage() {}
-func (*GetRoaResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{166} }
+func (*GetRoaResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{178} }
func (m *GetRoaResponse) GetRoas() []*Roa {
if m != nil {
@@ -5325,7 +5808,7 @@ type Vrf struct {
func (m *Vrf) Reset() { *m = Vrf{} }
func (m *Vrf) String() string { return proto.CompactTextString(m) }
func (*Vrf) ProtoMessage() {}
-func (*Vrf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{167} }
+func (*Vrf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{179} }
func (m *Vrf) GetName() string {
if m != nil {
@@ -5370,7 +5853,7 @@ type DefaultRouteDistance struct {
func (m *DefaultRouteDistance) Reset() { *m = DefaultRouteDistance{} }
func (m *DefaultRouteDistance) String() string { return proto.CompactTextString(m) }
func (*DefaultRouteDistance) ProtoMessage() {}
-func (*DefaultRouteDistance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{168} }
+func (*DefaultRouteDistance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{180} }
func (m *DefaultRouteDistance) GetExternalRouteDistance() uint32 {
if m != nil {
@@ -5403,7 +5886,7 @@ type Global struct {
func (m *Global) Reset() { *m = Global{} }
func (m *Global) String() string { return proto.CompactTextString(m) }
func (*Global) ProtoMessage() {}
-func (*Global) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{169} }
+func (*Global) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{181} }
func (m *Global) GetAs() uint32 {
if m != nil {
@@ -5491,7 +5974,7 @@ type Confederation struct {
func (m *Confederation) Reset() { *m = Confederation{} }
func (m *Confederation) String() string { return proto.CompactTextString(m) }
func (*Confederation) ProtoMessage() {}
-func (*Confederation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{170} }
+func (*Confederation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{182} }
func (m *Confederation) GetEnabled() bool {
if m != nil {
@@ -5526,7 +6009,7 @@ type TableInfo struct {
func (m *TableInfo) Reset() { *m = TableInfo{} }
func (m *TableInfo) String() string { return proto.CompactTextString(m) }
func (*TableInfo) ProtoMessage() {}
-func (*TableInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{171} }
+func (*TableInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{183} }
func (m *TableInfo) GetType() Resource {
if m != nil {
@@ -5577,7 +6060,7 @@ type GetRibInfoRequest struct {
func (m *GetRibInfoRequest) Reset() { *m = GetRibInfoRequest{} }
func (m *GetRibInfoRequest) String() string { return proto.CompactTextString(m) }
func (*GetRibInfoRequest) ProtoMessage() {}
-func (*GetRibInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{172} }
+func (*GetRibInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{184} }
func (m *GetRibInfoRequest) GetInfo() *TableInfo {
if m != nil {
@@ -5593,7 +6076,7 @@ type GetRibInfoResponse struct {
func (m *GetRibInfoResponse) Reset() { *m = GetRibInfoResponse{} }
func (m *GetRibInfoResponse) String() string { return proto.CompactTextString(m) }
func (*GetRibInfoResponse) ProtoMessage() {}
-func (*GetRibInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{173} }
+func (*GetRibInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{185} }
func (m *GetRibInfoResponse) GetInfo() *TableInfo {
if m != nil {
@@ -5616,6 +6099,14 @@ func init() {
proto.RegisterType((*DeleteNeighborResponse)(nil), "gobgpapi.DeleteNeighborResponse")
proto.RegisterType((*UpdateNeighborRequest)(nil), "gobgpapi.UpdateNeighborRequest")
proto.RegisterType((*UpdateNeighborResponse)(nil), "gobgpapi.UpdateNeighborResponse")
+ proto.RegisterType((*AddPeerGroupRequest)(nil), "gobgpapi.AddPeerGroupRequest")
+ proto.RegisterType((*AddPeerGroupResponse)(nil), "gobgpapi.AddPeerGroupResponse")
+ proto.RegisterType((*DeletePeerGroupRequest)(nil), "gobgpapi.DeletePeerGroupRequest")
+ proto.RegisterType((*DeletePeerGroupResponse)(nil), "gobgpapi.DeletePeerGroupResponse")
+ proto.RegisterType((*UpdatePeerGroupRequest)(nil), "gobgpapi.UpdatePeerGroupRequest")
+ proto.RegisterType((*UpdatePeerGroupResponse)(nil), "gobgpapi.UpdatePeerGroupResponse")
+ proto.RegisterType((*AddDynamicNeighborRequest)(nil), "gobgpapi.AddDynamicNeighborRequest")
+ proto.RegisterType((*AddDynamicNeighborResponse)(nil), "gobgpapi.AddDynamicNeighborResponse")
proto.RegisterType((*ResetNeighborRequest)(nil), "gobgpapi.ResetNeighborRequest")
proto.RegisterType((*ResetNeighborResponse)(nil), "gobgpapi.ResetNeighborResponse")
proto.RegisterType((*SoftResetNeighborRequest)(nil), "gobgpapi.SoftResetNeighborRequest")
@@ -5711,9 +6202,13 @@ func init() {
proto.RegisterType((*ValidateRibRequest)(nil), "gobgpapi.ValidateRibRequest")
proto.RegisterType((*ValidateRibResponse)(nil), "gobgpapi.ValidateRibResponse")
proto.RegisterType((*Peer)(nil), "gobgpapi.Peer")
+ proto.RegisterType((*PeerGroup)(nil), "gobgpapi.PeerGroup")
+ proto.RegisterType((*DynamicNeighbor)(nil), "gobgpapi.DynamicNeighbor")
proto.RegisterType((*ApplyPolicy)(nil), "gobgpapi.ApplyPolicy")
proto.RegisterType((*PrefixLimit)(nil), "gobgpapi.PrefixLimit")
proto.RegisterType((*PeerConf)(nil), "gobgpapi.PeerConf")
+ proto.RegisterType((*PeerGroupConf)(nil), "gobgpapi.PeerGroupConf")
+ proto.RegisterType((*PeerGroupState)(nil), "gobgpapi.PeerGroupState")
proto.RegisterType((*EbgpMultihop)(nil), "gobgpapi.EbgpMultihop")
proto.RegisterType((*RouteReflector)(nil), "gobgpapi.RouteReflector")
proto.RegisterType((*PeerState)(nil), "gobgpapi.PeerState")
@@ -5792,6 +6287,8 @@ func init() {
proto.RegisterEnum("gobgpapi.RPKIValidation_State", RPKIValidation_State_name, RPKIValidation_State_value)
proto.RegisterEnum("gobgpapi.RPKIValidation_Reason", RPKIValidation_Reason_name, RPKIValidation_Reason_value)
proto.RegisterEnum("gobgpapi.PeerConf_RemovePrivateAs", PeerConf_RemovePrivateAs_name, PeerConf_RemovePrivateAs_value)
+ proto.RegisterEnum("gobgpapi.PeerGroupConf_RemovePrivateAs", PeerGroupConf_RemovePrivateAs_name, PeerGroupConf_RemovePrivateAs_value)
+ proto.RegisterEnum("gobgpapi.PeerGroupState_RemovePrivateAs", PeerGroupState_RemovePrivateAs_name, PeerGroupState_RemovePrivateAs_value)
proto.RegisterEnum("gobgpapi.PeerState_AdminState", PeerState_AdminState_name, PeerState_AdminState_value)
proto.RegisterEnum("gobgpapi.Conditions_RouteType", Conditions_RouteType_name, Conditions_RouteType_value)
}
@@ -5860,6 +6357,10 @@ type GobgpApiClient interface {
DeletePolicyAssignment(ctx context.Context, in *DeletePolicyAssignmentRequest, opts ...grpc.CallOption) (*DeletePolicyAssignmentResponse, error)
ReplacePolicyAssignment(ctx context.Context, in *ReplacePolicyAssignmentRequest, opts ...grpc.CallOption) (*ReplacePolicyAssignmentResponse, error)
GetRibInfo(ctx context.Context, in *GetRibInfoRequest, opts ...grpc.CallOption) (*GetRibInfoResponse, error)
+ AddPeerGroup(ctx context.Context, in *AddPeerGroupRequest, opts ...grpc.CallOption) (*AddPeerGroupResponse, error)
+ DeletePeerGroup(ctx context.Context, in *DeletePeerGroupRequest, opts ...grpc.CallOption) (*DeletePeerGroupResponse, error)
+ UpdatePeerGroup(ctx context.Context, in *UpdatePeerGroupRequest, opts ...grpc.CallOption) (*UpdatePeerGroupResponse, error)
+ AddDynamicNeighbor(ctx context.Context, in *AddDynamicNeighborRequest, opts ...grpc.CallOption) (*AddDynamicNeighborResponse, error)
}
type gobgpApiClient struct {
@@ -6441,6 +6942,42 @@ func (c *gobgpApiClient) GetRibInfo(ctx context.Context, in *GetRibInfoRequest,
return out, nil
}
+func (c *gobgpApiClient) AddPeerGroup(ctx context.Context, in *AddPeerGroupRequest, opts ...grpc.CallOption) (*AddPeerGroupResponse, error) {
+ out := new(AddPeerGroupResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddPeerGroup", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *gobgpApiClient) DeletePeerGroup(ctx context.Context, in *DeletePeerGroupRequest, opts ...grpc.CallOption) (*DeletePeerGroupResponse, error) {
+ out := new(DeletePeerGroupResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/DeletePeerGroup", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *gobgpApiClient) UpdatePeerGroup(ctx context.Context, in *UpdatePeerGroupRequest, opts ...grpc.CallOption) (*UpdatePeerGroupResponse, error) {
+ out := new(UpdatePeerGroupResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/UpdatePeerGroup", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *gobgpApiClient) AddDynamicNeighbor(ctx context.Context, in *AddDynamicNeighborRequest, opts ...grpc.CallOption) (*AddDynamicNeighborResponse, error) {
+ out := new(AddDynamicNeighborResponse)
+ err := grpc.Invoke(ctx, "/gobgpapi.GobgpApi/AddDynamicNeighbor", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// Server API for GobgpApi service
type GobgpApiServer interface {
@@ -6497,6 +7034,10 @@ type GobgpApiServer interface {
DeletePolicyAssignment(context.Context, *DeletePolicyAssignmentRequest) (*DeletePolicyAssignmentResponse, error)
ReplacePolicyAssignment(context.Context, *ReplacePolicyAssignmentRequest) (*ReplacePolicyAssignmentResponse, error)
GetRibInfo(context.Context, *GetRibInfoRequest) (*GetRibInfoResponse, error)
+ AddPeerGroup(context.Context, *AddPeerGroupRequest) (*AddPeerGroupResponse, error)
+ DeletePeerGroup(context.Context, *DeletePeerGroupRequest) (*DeletePeerGroupResponse, error)
+ UpdatePeerGroup(context.Context, *UpdatePeerGroupRequest) (*UpdatePeerGroupResponse, error)
+ AddDynamicNeighbor(context.Context, *AddDynamicNeighborRequest) (*AddDynamicNeighborResponse, error)
}
func RegisterGobgpApiServer(s *grpc.Server, srv GobgpApiServer) {
@@ -7474,6 +8015,78 @@ func _GobgpApi_GetRibInfo_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler)
}
+func _GobgpApi_AddPeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddPeerGroupRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GobgpApiServer).AddPeerGroup(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/gobgpapi.GobgpApi/AddPeerGroup",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GobgpApiServer).AddPeerGroup(ctx, req.(*AddPeerGroupRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GobgpApi_DeletePeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(DeletePeerGroupRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GobgpApiServer).DeletePeerGroup(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/gobgpapi.GobgpApi/DeletePeerGroup",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GobgpApiServer).DeletePeerGroup(ctx, req.(*DeletePeerGroupRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GobgpApi_UpdatePeerGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UpdatePeerGroupRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GobgpApiServer).UpdatePeerGroup(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/gobgpapi.GobgpApi/UpdatePeerGroup",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GobgpApiServer).UpdatePeerGroup(ctx, req.(*UpdatePeerGroupRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _GobgpApi_AddDynamicNeighbor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddDynamicNeighborRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(GobgpApiServer).AddDynamicNeighbor(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/gobgpapi.GobgpApi/AddDynamicNeighbor",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(GobgpApiServer).AddDynamicNeighbor(ctx, req.(*AddDynamicNeighborRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
var _GobgpApi_serviceDesc = grpc.ServiceDesc{
ServiceName: "gobgpapi.GobgpApi",
HandlerType: (*GobgpApiServer)(nil),
@@ -7674,6 +8287,22 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
MethodName: "GetRibInfo",
Handler: _GobgpApi_GetRibInfo_Handler,
},
+ {
+ MethodName: "AddPeerGroup",
+ Handler: _GobgpApi_AddPeerGroup_Handler,
+ },
+ {
+ MethodName: "DeletePeerGroup",
+ Handler: _GobgpApi_DeletePeerGroup_Handler,
+ },
+ {
+ MethodName: "UpdatePeerGroup",
+ Handler: _GobgpApi_UpdatePeerGroup_Handler,
+ },
+ {
+ MethodName: "AddDynamicNeighbor",
+ Handler: _GobgpApi_AddDynamicNeighbor_Handler,
+ },
},
Streams: []grpc.StreamDesc{
{
@@ -7703,494 +8332,513 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("gobgp.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
- // 7823 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7c, 0x4d, 0x6f, 0x23, 0x49,
- 0x96, 0x98, 0xf8, 0x21, 0x8a, 0x7c, 0x24, 0xc5, 0x54, 0xe8, 0x8b, 0x25, 0x75, 0x57, 0x55, 0xe7,
- 0x74, 0x75, 0x55, 0x6b, 0xba, 0x55, 0x5d, 0xd5, 0x3d, 0xea, 0xde, 0xae, 0xa9, 0xd9, 0x61, 0x49,
- 0x2c, 0x15, 0xb7, 0x25, 0x91, 0x1d, 0x62, 0xd5, 0x54, 0x8f, 0x77, 0x9c, 0x4e, 0x31, 0x83, 0x54,
- 0xba, 0xc9, 0xcc, 0x9c, 0xcc, 0xa4, 0x5a, 0x82, 0x01, 0xbb, 0x6a, 0x76, 0x77, 0x6c, 0xc0, 0xd8,
- 0x8b, 0x7d, 0x31, 0x60, 0x1b, 0x3e, 0xf8, 0xb6, 0x80, 0x0f, 0x06, 0x16, 0x30, 0xe0, 0x8b, 0x6d,
- 0xc0, 0xbb, 0x30, 0xb0, 0x80, 0x8f, 0x3e, 0xda, 0x3f, 0xc0, 0x27, 0xc3, 0x17, 0x1f, 0x7c, 0x30,
- 0xe2, 0x23, 0x33, 0x23, 0x3f, 0x28, 0xa9, 0x7a, 0xab, 0x3d, 0x30, 0xe0, 0x13, 0x99, 0xef, 0xbd,
- 0x78, 0xf1, 0x22, 0xe2, 0xc5, 0x8b, 0x17, 0x2f, 0x22, 0x1e, 0x54, 0x47, 0xf6, 0xc9, 0xc8, 0xd9,
- 0x76, 0x5c, 0xdb, 0xb7, 0x51, 0x99, 0x7d, 0xe8, 0x8e, 0xb9, 0x71, 0x63, 0x64, 0xdb, 0xa3, 0x31,
- 0xb9, 0xcf, 0xe0, 0x27, 0xd3, 0xe1, 0x7d, 0xdd, 0xba, 0xe0, 0x44, 0xea, 0x2f, 0x01, 0xed, 0x13,
- 0xff, 0x88, 0x98, 0xa3, 0xd3, 0x13, 0xdb, 0xc5, 0xe4, 0xd7, 0x53, 0xe2, 0xf9, 0x68, 0x0b, 0x14,
- 0x62, 0xe9, 0x27, 0x63, 0xd2, 0x32, 0xce, 0x88, 0xeb, 0x9b, 0x1e, 0x31, 0x9a, 0xb9, 0xdb, 0xb9,
- 0x7b, 0x65, 0x9c, 0x82, 0xa3, 0x26, 0x2c, 0xe8, 0x86, 0xe1, 0x12, 0xcf, 0x6b, 0xe6, 0x6f, 0xe7,
- 0xee, 0x55, 0x70, 0xf0, 0xa9, 0x3e, 0x82, 0xe5, 0x18, 0x6f, 0xcf, 0xb1, 0x2d, 0x8f, 0xa0, 0xf7,
- 0x61, 0xde, 0x21, 0xc4, 0xf5, 0x9a, 0xb9, 0xdb, 0x85, 0x7b, 0xd5, 0x87, 0x8b, 0xdb, 0x81, 0x9c,
- 0xdb, 0x3d, 0x42, 0x5c, 0xcc, 0x91, 0xea, 0xeb, 0x1c, 0x54, 0x5a, 0xee, 0x68, 0x3a, 0x21, 0x96,
- 0xef, 0xa1, 0x6d, 0x28, 0xbb, 0xc4, 0xb3, 0xa7, 0xee, 0x80, 0x30, 0x41, 0x16, 0x1f, 0xa2, 0xa8,
- 0x18, 0x16, 0x18, 0x1c, 0xd2, 0xa0, 0x35, 0x28, 0x0d, 0xf5, 0x89, 0x39, 0xbe, 0x60, 0x32, 0xd5,
- 0xb1, 0xf8, 0x42, 0x08, 0x8a, 0x96, 0x3e, 0x21, 0xcd, 0x02, 0x93, 0x94, 0xfd, 0xa7, 0x0d, 0x18,
- 0x4c, 0x5d, 0x97, 0x58, 0x7e, 0xb3, 0xc8, 0xda, 0x18, 0x7c, 0xaa, 0x7f, 0x07, 0x16, 0x5b, 0x86,
- 0xd1, 0xd3, 0xfd, 0xd3, 0xa0, 0x63, 0xde, 0x54, 0x8e, 0x55, 0x28, 0x9d, 0xb9, 0x43, 0xcd, 0x34,
- 0x44, 0xdf, 0xcc, 0x9f, 0xb9, 0xc3, 0x8e, 0x81, 0x54, 0x28, 0x3a, 0xba, 0x7f, 0xca, 0xc4, 0x88,
- 0xf7, 0x00, 0xad, 0x8b, 0xe1, 0xd4, 0x3b, 0xd0, 0x08, 0x2b, 0x17, 0x3d, 0x87, 0xa0, 0x38, 0x9d,
- 0x9a, 0x7c, 0x28, 0x6a, 0x98, 0xfd, 0x57, 0xff, 0x2c, 0x07, 0x4b, 0x7b, 0x64, 0x4c, 0x7c, 0xf2,
- 0x03, 0xc8, 0x19, 0x75, 0x63, 0x21, 0xd6, 0x8d, 0x81, 0xfc, 0xc5, 0xd9, 0xf2, 0x87, 0xc2, 0xce,
- 0x4b, 0xc2, 0xae, 0x00, 0x92, 0x65, 0xe5, 0xcd, 0x52, 0xbf, 0x00, 0xd4, 0x32, 0x8c, 0xa4, 0x0e,
- 0xd2, 0x3a, 0x08, 0x71, 0x99, 0xf8, 0x69, 0x2d, 0x61, 0x38, 0x75, 0x15, 0x96, 0x63, 0x25, 0x05,
- 0xc3, 0x47, 0xb0, 0xca, 0xab, 0xf9, 0x3e, 0x3c, 0x9b, 0xb0, 0x96, 0x2c, 0x2c, 0xd8, 0x1a, 0xb0,
- 0xfa, 0xdc, 0x31, 0xf4, 0xef, 0xc5, 0x16, 0xdd, 0x05, 0xc5, 0xb0, 0x35, 0xcf, 0x1e, 0xfa, 0x9a,
- 0x4b, 0x3c, 0xe2, 0x6b, 0xa6, 0xc5, 0xfa, 0xba, 0x8c, 0xeb, 0x86, 0x7d, 0x6c, 0x0f, 0x7d, 0x4c,
- 0xa1, 0x1d, 0x4b, 0xdd, 0x87, 0xb5, 0x64, 0x2d, 0x62, 0xf8, 0x3f, 0x86, 0x65, 0x8b, 0x10, 0xc3,
- 0x4b, 0x70, 0x11, 0x13, 0x93, 0xa1, 0x64, 0x46, 0x2f, 0x60, 0x85, 0xfd, 0x4d, 0x4a, 0x2b, 0x4d,
- 0xd8, 0x5c, 0x6c, 0xc2, 0xa2, 0xf7, 0xa1, 0x3e, 0xb0, 0x27, 0x93, 0xa9, 0x65, 0x0e, 0x74, 0xdf,
- 0xb4, 0x2d, 0xa1, 0x0c, 0x71, 0xa0, 0xba, 0x0e, 0xab, 0x09, 0xbe, 0xa2, 0x7f, 0xfe, 0x6d, 0x0e,
- 0x9a, 0xa1, 0x00, 0xd7, 0xaf, 0xf5, 0x18, 0x2a, 0x86, 0xe9, 0x92, 0x41, 0x58, 0xe3, 0xe2, 0xc3,
- 0x9f, 0x44, 0x5d, 0x38, 0x8b, 0x61, 0x84, 0xd8, 0x0b, 0x0a, 0xe3, 0x88, 0x8f, 0x7a, 0x1f, 0x50,
- 0x9a, 0x00, 0x95, 0x20, 0xdf, 0x39, 0x52, 0xe6, 0xd0, 0x02, 0x14, 0xba, 0xcf, 0xfb, 0x4a, 0x0e,
- 0x95, 0xa1, 0xf8, 0xa4, 0xdb, 0x7f, 0xa6, 0xe4, 0xd5, 0x4d, 0xb8, 0x91, 0x51, 0x95, 0x68, 0xd9,
- 0x37, 0xb0, 0x7e, 0x7c, 0x3a, 0xf5, 0x0d, 0xfb, 0x3b, 0xeb, 0x6d, 0xf7, 0xe6, 0x06, 0x34, 0xd3,
- 0xac, 0x45, 0xb5, 0x0f, 0x60, 0xb5, 0xcd, 0xcc, 0xed, 0xb5, 0x2b, 0xa5, 0xda, 0x9b, 0x2c, 0x22,
- 0x98, 0xbd, 0x84, 0xb5, 0x3d, 0xd3, 0x7b, 0x23, 0x6e, 0xd7, 0x6c, 0xc2, 0x0d, 0x58, 0x4f, 0x71,
- 0x16, 0x95, 0x8e, 0x40, 0xe1, 0xe2, 0x1c, 0xba, 0x7e, 0x50, 0xdd, 0x26, 0x54, 0x8c, 0xe9, 0xc4,
- 0xd1, 0xfc, 0x0b, 0x87, 0x1b, 0xa7, 0x79, 0x5c, 0xa6, 0x80, 0xfe, 0x85, 0x43, 0xd0, 0x06, 0x94,
- 0x87, 0xe6, 0x98, 0x30, 0x23, 0xcd, 0x2b, 0x0b, 0xbf, 0x29, 0xce, 0xb4, 0x7c, 0xe2, 0x9e, 0xe9,
- 0x63, 0x66, 0x8f, 0x8a, 0x38, 0xfc, 0x56, 0x97, 0x61, 0x49, 0xaa, 0x48, 0xd4, 0xbe, 0x0c, 0x4b,
- 0x42, 0xb0, 0xa8, 0x7a, 0x66, 0x83, 0x24, 0xa0, 0x20, 0xfd, 0x7b, 0xa0, 0x74, 0xac, 0xbf, 0x4d,
- 0x06, 0xbe, 0x24, 0xe8, 0x5b, 0x32, 0xa2, 0x74, 0xbd, 0xd3, 0xfd, 0x53, 0xaf, 0x59, 0x48, 0xad,
- 0x77, 0xd4, 0x0a, 0x72, 0x24, 0x95, 0x55, 0x12, 0x40, 0x48, 0xf5, 0xef, 0x73, 0x50, 0x6f, 0x19,
- 0xc6, 0x93, 0x89, 0x73, 0xf5, 0x58, 0x21, 0x28, 0x3a, 0xb6, 0xeb, 0x8b, 0x05, 0x8f, 0xfd, 0x47,
- 0x3f, 0x85, 0x22, 0xeb, 0xe5, 0x02, 0x93, 0xfe, 0x5e, 0x54, 0x73, 0x8c, 0xe9, 0xf6, 0xa1, 0x6d,
- 0x99, 0xbe, 0xed, 0x9a, 0xd6, 0xa8, 0x67, 0x8f, 0xcd, 0xc1, 0x05, 0x66, 0xa5, 0xd4, 0x5d, 0x50,
- 0x92, 0x18, 0x3a, 0x73, 0x7a, 0xb8, 0xad, 0xcc, 0xd1, 0x99, 0xd3, 0xeb, 0x1e, 0xc7, 0xe6, 0x10,
- 0xaa, 0xc0, 0xfc, 0x41, 0x77, 0xb7, 0x75, 0xa0, 0x14, 0x28, 0x5d, 0xeb, 0xe0, 0x40, 0x29, 0xaa,
- 0x0a, 0x5b, 0x43, 0x59, 0x65, 0xa2, 0x51, 0x3f, 0x07, 0x85, 0x1b, 0xd8, 0xef, 0xdb, 0x2c, 0x36,
- 0xae, 0x11, 0x07, 0xc1, 0xb6, 0x0f, 0x4b, 0x42, 0x5a, 0x6c, 0x9e, 0x04, 0x7c, 0xef, 0xc0, 0xbc,
- 0x4f, 0x87, 0x5a, 0x98, 0xe6, 0x46, 0xd4, 0x03, 0x7d, 0x0a, 0xc6, 0x1c, 0x2b, 0xbb, 0x00, 0xf9,
- 0xb8, 0x0b, 0xd0, 0x86, 0x32, 0xee, 0x7d, 0xd5, 0xd9, 0xb5, 0xad, 0xe1, 0x25, 0x42, 0xde, 0x82,
- 0xaa, 0x4b, 0x26, 0xb6, 0x4f, 0xb4, 0x50, 0xd6, 0x0a, 0x06, 0x0e, 0xea, 0x51, 0x89, 0xff, 0x59,
- 0x11, 0x2a, 0x94, 0xcf, 0xb1, 0xaf, 0xfb, 0xcc, 0x3b, 0x99, 0x3a, 0xbe, 0x39, 0xe1, 0x62, 0x15,
- 0xb0, 0xf8, 0xa2, 0x0a, 0x4e, 0xed, 0x00, 0xc3, 0xe4, 0x19, 0x26, 0xfc, 0x46, 0x8b, 0x90, 0x9f,
- 0x3a, 0x6c, 0x20, 0xcb, 0x38, 0x3f, 0x75, 0x78, 0x95, 0x03, 0xdb, 0x35, 0x34, 0xd3, 0x39, 0xfb,
- 0x8c, 0xad, 0xc4, 0x75, 0x5a, 0x25, 0x05, 0x75, 0x9c, 0xb3, 0xcf, 0xe2, 0x04, 0x3b, 0x6c, 0x19,
- 0x96, 0x09, 0x76, 0x28, 0x81, 0xe3, 0x92, 0xa1, 0x79, 0xce, 0x39, 0x94, 0x38, 0x01, 0x07, 0x05,
- 0x1c, 0x22, 0x82, 0x9d, 0xe6, 0x42, 0x82, 0x60, 0x87, 0xb6, 0xc3, 0x23, 0xae, 0xa9, 0x8f, 0x9b,
- 0x65, 0xee, 0x1e, 0xf0, 0x2f, 0xf4, 0x23, 0xa8, 0xbb, 0x64, 0x40, 0xcc, 0x33, 0x22, 0xa4, 0xab,
- 0xb0, 0xc6, 0xd4, 0x02, 0x20, 0xe3, 0x9e, 0x20, 0xda, 0x69, 0x42, 0x8a, 0x68, 0x87, 0x12, 0x71,
- 0x9e, 0x9a, 0x65, 0xfb, 0xe6, 0xf0, 0xa2, 0x59, 0xe5, 0x44, 0x1c, 0x78, 0xc4, 0x60, 0x54, 0xce,
- 0x81, 0x3e, 0x38, 0x25, 0x7c, 0x49, 0x6c, 0xd6, 0x18, 0x09, 0x30, 0x10, 0x33, 0xe7, 0xe8, 0x0e,
- 0x2c, 0x86, 0x04, 0x4c, 0x59, 0x9a, 0x75, 0x46, 0x53, 0x0f, 0x68, 0xf8, 0xfa, 0x7a, 0x13, 0xaa,
- 0xc4, 0x32, 0x34, 0x7b, 0xa8, 0x19, 0xba, 0xaf, 0x37, 0x17, 0x19, 0x4d, 0x85, 0x58, 0x46, 0x77,
- 0xb8, 0xa7, 0xfb, 0x3a, 0x5a, 0x81, 0x79, 0xe2, 0xba, 0xb6, 0xdb, 0x6c, 0x30, 0x0c, 0xff, 0x40,
- 0xef, 0x81, 0x90, 0x46, 0xfb, 0xf5, 0x94, 0xb8, 0x17, 0x4d, 0x85, 0x21, 0xab, 0x1c, 0xf6, 0x35,
- 0x05, 0xf1, 0xa1, 0xa0, 0xab, 0x35, 0xa7, 0x58, 0xe2, 0x02, 0x32, 0x10, 0x23, 0x50, 0xbf, 0x81,
- 0x22, 0x76, 0xbe, 0x35, 0xd1, 0x07, 0x50, 0x1c, 0xd8, 0xd6, 0x50, 0x68, 0xab, 0x6c, 0x6d, 0x84,
- 0x0e, 0x62, 0x86, 0x47, 0x1f, 0xc2, 0xbc, 0x47, 0x35, 0x89, 0x69, 0x49, 0xf5, 0xe1, 0x72, 0x9c,
- 0x90, 0x29, 0x19, 0xe6, 0x14, 0xea, 0x3d, 0x58, 0xdc, 0x27, 0x3e, 0xe5, 0x1e, 0xcc, 0x89, 0xc8,
- 0xa9, 0xcb, 0xc9, 0x4e, 0x9d, 0xfa, 0x08, 0x1a, 0x21, 0xa5, 0xe8, 0x91, 0x7b, 0xb0, 0xe0, 0x11,
- 0xf7, 0x2c, 0xd3, 0x59, 0x67, 0x84, 0x01, 0x5a, 0xfd, 0x25, 0x9b, 0xe6, 0x72, 0x35, 0x6f, 0x66,
- 0xa9, 0x36, 0xa0, 0x3c, 0x36, 0x87, 0x84, 0xa9, 0x7e, 0x81, 0xab, 0x7e, 0xf0, 0xad, 0x2e, 0x31,
- 0x4f, 0x58, 0x16, 0x4c, 0x6d, 0x05, 0x16, 0xe0, 0x7b, 0xd7, 0x18, 0xf9, 0xa2, 0x31, 0xc6, 0x1f,
- 0x07, 0xeb, 0xc8, 0xb5, 0x18, 0x53, 0x26, 0x32, 0xb9, 0x60, 0xb2, 0x1d, 0x2e, 0x31, 0xd7, 0xe3,
- 0xb2, 0x0a, 0xcb, 0x31, 0x7a, 0xc1, 0xe6, 0x23, 0x50, 0x98, 0xfe, 0x5e, 0x8f, 0xc9, 0x32, 0x2c,
- 0x49, 0xd4, 0x82, 0xc5, 0x27, 0xb0, 0x12, 0x7a, 0x35, 0xd7, 0x63, 0xb3, 0x0e, 0xab, 0x89, 0x12,
- 0x82, 0xd5, 0x5f, 0xe5, 0x82, 0xb6, 0xfe, 0x92, 0x9c, 0xb8, 0x7a, 0xc0, 0x49, 0x81, 0xc2, 0xd4,
- 0x1d, 0x0b, 0x2e, 0xf4, 0x2f, 0xd3, 0x76, 0x7b, 0xea, 0x13, 0xb6, 0xc0, 0xd3, 0x4d, 0x61, 0x81,
- 0x19, 0x43, 0x0a, 0xa2, 0x4b, 0xbc, 0x47, 0x2b, 0xa7, 0x3a, 0x43, 0xfd, 0x09, 0xbe, 0xad, 0x08,
- 0x3e, 0xd1, 0x67, 0xb0, 0x66, 0x91, 0x73, 0xff, 0xd4, 0x76, 0x34, 0xdf, 0x35, 0x47, 0x23, 0xe2,
- 0x6a, 0x7c, 0xbf, 0x29, 0x76, 0x66, 0x2b, 0x02, 0xdb, 0xe7, 0x48, 0x2e, 0x0e, 0x7a, 0x08, 0xab,
- 0xc9, 0x52, 0x06, 0x19, 0xeb, 0x17, 0xc2, 0xe6, 0x2d, 0xc7, 0x0b, 0xed, 0x51, 0x14, 0xed, 0xf2,
- 0x58, 0x63, 0x44, 0x23, 0x1b, 0x50, 0xdf, 0x27, 0xfe, 0x0b, 0x77, 0x18, 0x78, 0x0b, 0x9f, 0xb2,
- 0xe9, 0xc3, 0x00, 0x62, 0x4e, 0xbc, 0x07, 0xc5, 0x33, 0x77, 0x18, 0x4c, 0x88, 0x7a, 0x34, 0x21,
- 0x28, 0x11, 0x43, 0xa9, 0x9f, 0xb0, 0x55, 0x3b, 0xe2, 0x82, 0x6e, 0x41, 0xe1, 0xcc, 0x0d, 0xa6,
- 0x75, 0xa2, 0x08, 0xc5, 0x88, 0x55, 0x52, 0xaa, 0x46, 0xfd, 0x34, 0x58, 0x25, 0xdf, 0x84, 0x4d,
- 0xb8, 0x30, 0xca, 0x9c, 0x9e, 0xc3, 0xca, 0x3e, 0xf1, 0xf7, 0xc8, 0xd0, 0xb4, 0x88, 0x71, 0x4c,
- 0x42, 0xf7, 0xe6, 0x43, 0xe1, 0x1c, 0x70, 0xd7, 0x66, 0x35, 0x62, 0x27, 0x48, 0xe9, 0x60, 0x71,
- 0x4f, 0x20, 0xdc, 0x36, 0xe7, 0xa3, 0x6d, 0xb3, 0xda, 0x82, 0xd5, 0x04, 0xdb, 0xd0, 0x68, 0x14,
- 0x3d, 0xe2, 0x07, 0x1d, 0xb4, 0x92, 0xe2, 0x4b, 0x69, 0x19, 0x85, 0xfa, 0x33, 0x58, 0x69, 0x19,
- 0x46, 0x5a, 0xb2, 0x0f, 0xa0, 0x40, 0x0d, 0x39, 0x6f, 0x67, 0x36, 0x03, 0x4a, 0x40, 0x75, 0x35,
- 0x51, 0x5e, 0x34, 0xf9, 0x18, 0xd6, 0x79, 0x3f, 0x7c, 0x6f, 0xde, 0x54, 0xaf, 0xf5, 0xf1, 0x58,
- 0xb8, 0x03, 0xf4, 0x2f, 0xf5, 0xd4, 0xd3, 0x4c, 0x45, 0x85, 0x4f, 0xa0, 0x89, 0x89, 0x33, 0xd6,
- 0x07, 0xdf, 0xbf, 0x46, 0xba, 0x03, 0xc9, 0xe0, 0x21, 0x2a, 0x58, 0x65, 0xb1, 0x14, 0x66, 0xd9,
- 0x27, 0xc4, 0x0a, 0x9d, 0xd9, 0xaf, 0xd8, 0xd8, 0x4a, 0x60, 0x31, 0x06, 0x9f, 0x02, 0x78, 0x01,
- 0x30, 0x18, 0x09, 0x69, 0x95, 0x88, 0x0a, 0x48, 0x64, 0xea, 0x33, 0xb6, 0x9b, 0x4e, 0xd6, 0x81,
- 0x1e, 0x40, 0x25, 0x24, 0x12, 0xad, 0xc8, 0x64, 0x15, 0x51, 0xa9, 0x6b, 0x6c, 0x60, 0x53, 0x62,
- 0xa9, 0xbf, 0x0a, 0xf6, 0xd6, 0x6f, 0xa1, 0x92, 0x8c, 0x11, 0xba, 0x11, 0x0c, 0x7b, 0xba, 0xe6,
- 0x03, 0x58, 0x17, 0x9d, 0xfb, 0x36, 0xda, 0xb7, 0x11, 0x0e, 0x77, 0xba, 0x26, 0x04, 0xca, 0x3e,
- 0xf1, 0x85, 0x23, 0x2d, 0x86, 0xa9, 0x05, 0x4b, 0x12, 0x4c, 0x8c, 0xd1, 0x47, 0x50, 0x76, 0x28,
- 0xc4, 0x24, 0xc1, 0x08, 0x29, 0xd2, 0xd6, 0x80, 0xd3, 0x86, 0x14, 0xea, 0x39, 0x28, 0x2d, 0xc3,
- 0x88, 0xb1, 0x45, 0xf7, 0xa0, 0xc4, 0xf0, 0x17, 0x42, 0xec, 0x74, 0x79, 0x81, 0x47, 0x5f, 0xc2,
- 0x0d, 0x97, 0x0c, 0xa9, 0x39, 0x3d, 0x37, 0x3d, 0xdf, 0xb4, 0x46, 0x9a, 0xa4, 0x1e, 0xbc, 0x07,
- 0xd7, 0x19, 0x41, 0x5b, 0xe0, 0x8f, 0x23, 0xb5, 0x58, 0x86, 0x25, 0xa9, 0x66, 0xd1, 0xca, 0xdf,
- 0xe4, 0x60, 0x59, 0x84, 0x72, 0xbe, 0xa7, 0x48, 0xf7, 0x61, 0xd9, 0xa1, 0x2e, 0x90, 0x7b, 0x46,
- 0xd2, 0xc2, 0xa0, 0x00, 0x15, 0xc9, 0x11, 0x8c, 0x77, 0x21, 0x1a, 0xef, 0x35, 0x58, 0x89, 0xcb,
- 0x20, 0x84, 0xfb, 0x57, 0x39, 0x58, 0x11, 0xe3, 0xf3, 0x3b, 0xe8, 0xb0, 0x59, 0x2d, 0x2b, 0xcc,
- 0x6a, 0x19, 0x8f, 0xa8, 0xc4, 0xc4, 0x0d, 0xf7, 0xec, 0x1b, 0xa1, 0xde, 0xb4, 0x3c, 0xcf, 0x1c,
- 0x59, 0xb2, 0xe2, 0x7e, 0x09, 0xa0, 0x87, 0x40, 0xd1, 0xa2, 0x8d, 0x64, 0x8b, 0xa4, 0x62, 0x12,
- 0xb5, 0xfa, 0x0d, 0x6c, 0x66, 0x72, 0x16, 0xba, 0xf9, 0xd7, 0x61, 0xfd, 0x12, 0x36, 0x42, 0x7d,
- 0x79, 0xbb, 0x42, 0xbf, 0x0b, 0x9b, 0x99, 0x9c, 0x45, 0x6f, 0x4d, 0xe0, 0x5d, 0x59, 0x1d, 0xde,
- 0x6a, 0xdd, 0x19, 0xd6, 0xe6, 0x36, 0xdc, 0x9c, 0x55, 0x9d, 0x10, 0xe8, 0x0f, 0xe1, 0x66, 0x6c,
- 0x5c, 0xdf, 0x6e, 0x6f, 0xbc, 0x07, 0xb7, 0x66, 0x72, 0x8f, 0xd9, 0xa2, 0x63, 0xe6, 0xa3, 0x07,
- 0xb6, 0xe8, 0x31, 0xb3, 0x45, 0x01, 0x2c, 0x5c, 0xb3, 0x4b, 0xa3, 0xb1, 0x7d, 0xa2, 0x8f, 0xd3,
- 0x13, 0x63, 0x9f, 0xc1, 0xb1, 0xc0, 0xab, 0x3f, 0x03, 0x74, 0xec, 0xeb, 0x6e, 0x9c, 0xe9, 0x1b,
- 0x94, 0x5f, 0x85, 0xe5, 0x58, 0xf9, 0x28, 0x54, 0x73, 0xec, 0xdb, 0x4e, 0x5c, 0xd4, 0x15, 0x5a,
- 0x57, 0x04, 0x14, 0xa4, 0xff, 0xb2, 0x00, 0x8b, 0x74, 0x9b, 0xf3, 0x42, 0x1f, 0x9b, 0x06, 0x8b,
- 0x40, 0xa1, 0xcf, 0x82, 0xfd, 0x10, 0xf7, 0x65, 0x6e, 0xc6, 0xf7, 0x43, 0x11, 0xe1, 0xb6, 0xbc,
- 0x35, 0x42, 0x9f, 0x43, 0xc9, 0x25, 0xba, 0x17, 0x46, 0x1d, 0x6f, 0xcd, 0x2c, 0x86, 0x19, 0x19,
- 0x16, 0xe4, 0xe8, 0x2e, 0x2c, 0x4c, 0x74, 0x7f, 0x70, 0x4a, 0x0c, 0x11, 0xd3, 0x91, 0x7c, 0x31,
- 0x6c, 0xeb, 0x38, 0xc0, 0xa2, 0x4f, 0xa0, 0x36, 0xb5, 0xc4, 0x87, 0xa6, 0x7b, 0xcd, 0x62, 0x16,
- 0x75, 0x35, 0x24, 0x69, 0x79, 0xe8, 0x0b, 0x50, 0xa2, 0x12, 0x63, 0x62, 0x8d, 0xfc, 0xd3, 0xe6,
- 0x7c, 0x56, 0xa9, 0x46, 0x48, 0x76, 0xc0, 0xa8, 0xd4, 0x1e, 0xcc, 0xf3, 0xe8, 0xc2, 0x22, 0xc0,
- 0x71, 0xbf, 0xd5, 0x6f, 0x6b, 0x47, 0xdd, 0xa3, 0xb6, 0x32, 0x87, 0x96, 0xa1, 0x11, 0x7c, 0xf7,
- 0xb5, 0xa7, 0xdd, 0xe7, 0x47, 0x7b, 0x4a, 0x0e, 0x35, 0xa0, 0xca, 0x81, 0x2f, 0x5a, 0x07, 0x9d,
- 0x3d, 0x25, 0x8f, 0x96, 0xa0, 0xce, 0x01, 0x9d, 0x23, 0x0e, 0x2a, 0xa8, 0x8f, 0xa0, 0xc4, 0x1b,
- 0x4e, 0xa9, 0x71, 0xbb, 0x75, 0xdc, 0xed, 0x07, 0x3c, 0xeb, 0x50, 0x61, 0x80, 0x23, 0xad, 0x75,
- 0xac, 0xe4, 0x68, 0x61, 0xf1, 0x79, 0xd0, 0x3e, 0xda, 0x67, 0xf1, 0xd4, 0xff, 0x32, 0x0f, 0xc5,
- 0x9e, 0x38, 0x07, 0xb0, 0xc6, 0xae, 0x19, 0x1c, 0x5a, 0xd0, 0xff, 0x74, 0x0b, 0xea, 0xe8, 0xbe,
- 0xef, 0xf2, 0xdd, 0x41, 0x0d, 0x8b, 0x2f, 0x36, 0xc9, 0x46, 0xc1, 0x06, 0x90, 0xfe, 0xa5, 0xa5,
- 0x4f, 0x88, 0x17, 0x9c, 0xcc, 0xb0, 0xff, 0x74, 0x83, 0x61, 0x7a, 0xda, 0x77, 0xa6, 0x7f, 0x6a,
- 0xb8, 0xfa, 0x77, 0xcc, 0xcb, 0x2f, 0x63, 0x30, 0xbd, 0x5f, 0x08, 0x08, 0xba, 0x09, 0x70, 0x16,
- 0x0e, 0x1e, 0x0b, 0x6c, 0xcc, 0x63, 0x09, 0x82, 0xda, 0xb0, 0x14, 0x7d, 0x69, 0x06, 0xf1, 0x75,
- 0x73, 0xcc, 0xc2, 0x1b, 0xd5, 0x87, 0xcd, 0x59, 0x3a, 0x80, 0x95, 0xa8, 0xc8, 0x1e, 0x2b, 0x81,
- 0x3e, 0x81, 0x15, 0xcb, 0xd6, 0xcc, 0x89, 0x43, 0x97, 0x68, 0x3f, 0x12, 0xa8, 0xcc, 0x0d, 0xbd,
- 0x65, 0x77, 0x04, 0x2a, 0x14, 0x2c, 0xda, 0x7a, 0x57, 0x62, 0xe7, 0x29, 0xef, 0x02, 0xf0, 0x18,
- 0xa2, 0xa6, 0x7b, 0x16, 0x0b, 0x84, 0xd4, 0x71, 0x85, 0x43, 0x5a, 0x9e, 0x85, 0x36, 0x41, 0x7c,
- 0x68, 0xa6, 0xc1, 0x22, 0x20, 0x15, 0x5c, 0xe6, 0x80, 0x8e, 0x21, 0x22, 0xa6, 0x3e, 0x71, 0x89,
- 0xc1, 0x42, 0x1f, 0x65, 0x1c, 0x7e, 0xa3, 0x15, 0x36, 0x2f, 0xc6, 0x3c, 0xde, 0x51, 0xc6, 0xfc,
- 0x03, 0xdd, 0x03, 0xc5, 0xf4, 0xb4, 0xa1, 0x6b, 0x4f, 0x34, 0x72, 0xee, 0x13, 0xd7, 0xd2, 0xc7,
- 0x2c, 0xd8, 0x51, 0xc6, 0x8b, 0xa6, 0xf7, 0xd4, 0xb5, 0x27, 0x6d, 0x01, 0xa5, 0x3d, 0x6d, 0x89,
- 0x90, 0xae, 0x66, 0x3a, 0x2c, 0xee, 0x51, 0xc1, 0x10, 0x80, 0x3a, 0x4e, 0x78, 0xc8, 0xa3, 0x44,
- 0x87, 0x3c, 0xe8, 0x23, 0x40, 0xa6, 0xa7, 0x05, 0x3b, 0x32, 0xd3, 0x62, 0xfd, 0xc6, 0x82, 0x1e,
- 0x65, 0xac, 0x98, 0xde, 0x11, 0x47, 0x74, 0x38, 0x9c, 0x8e, 0x95, 0x69, 0x10, 0xcb, 0x37, 0x87,
- 0x26, 0x71, 0x9b, 0x88, 0xc7, 0x98, 0x22, 0x08, 0xfa, 0x10, 0x94, 0xb1, 0x3d, 0xd0, 0xc7, 0x9a,
- 0x44, 0xb5, 0xcc, 0xa8, 0x1a, 0x0c, 0xde, 0x89, 0x48, 0xef, 0x43, 0x59, 0xb7, 0x2e, 0x34, 0xa6,
- 0x6d, 0x2b, 0xa1, 0xb7, 0x6d, 0x8f, 0xc6, 0x64, 0x3b, 0x38, 0xf9, 0xdc, 0x6e, 0x59, 0x17, 0x78,
- 0x41, 0xb7, 0x2e, 0x8e, 0xa8, 0x1a, 0x7e, 0x0a, 0x40, 0x0b, 0x08, 0x55, 0x5c, 0x0d, 0xf7, 0x2b,
- 0xe9, 0x22, 0x15, 0xdd, 0xba, 0xe8, 0x31, 0x32, 0xf5, 0x5f, 0xe4, 0xa0, 0xba, 0x47, 0xe8, 0x9a,
- 0xcf, 0x95, 0x89, 0xea, 0x32, 0x0b, 0x89, 0x89, 0x3d, 0xb0, 0xf8, 0x8a, 0xc2, 0xbe, 0xf9, 0x4b,
- 0xc2, 0xbe, 0xe8, 0x2e, 0x34, 0xc6, 0xb6, 0x45, 0xb7, 0xac, 0xbc, 0x18, 0x09, 0xfc, 0x84, 0x45,
- 0x0e, 0xee, 0x09, 0x28, 0xed, 0x07, 0xef, 0xd4, 0x76, 0x7d, 0x99, 0x92, 0x4f, 0x8a, 0x86, 0x80,
- 0x07, 0xa4, 0xea, 0xbf, 0xc9, 0xc1, 0x3c, 0x0b, 0x6f, 0xa2, 0x0f, 0x62, 0x5b, 0xbc, 0xac, 0xe8,
- 0xf5, 0xcc, 0xfd, 0xdd, 0xcc, 0xb3, 0xbf, 0xdf, 0x83, 0x9a, 0x11, 0x35, 0x3f, 0xb0, 0x69, 0xb1,
- 0xed, 0x63, 0x88, 0xc5, 0x31, 0x52, 0x16, 0x50, 0xb4, 0x3d, 0x5f, 0x13, 0x3e, 0x98, 0x98, 0xb8,
- 0x14, 0xc4, 0x57, 0x30, 0x75, 0x87, 0x6d, 0xbf, 0xdf, 0x38, 0x7e, 0xab, 0x7e, 0xce, 0x83, 0x5c,
- 0xb4, 0x9c, 0x58, 0xd0, 0xae, 0x59, 0x70, 0x02, 0x4b, 0xec, 0xfb, 0xc0, 0xb6, 0xbf, 0x9d, 0x3a,
- 0xbc, 0x07, 0x67, 0x8e, 0xe8, 0xcf, 0xa1, 0x3e, 0x66, 0x74, 0x9a, 0xed, 0x48, 0x87, 0x55, 0x9b,
- 0x09, 0xde, 0x9c, 0x57, 0xd7, 0xe1, 0x1d, 0x30, 0x96, 0xbe, 0xd4, 0x7f, 0x9e, 0x63, 0x82, 0xca,
- 0x27, 0xb5, 0x3f, 0xc4, 0x10, 0x7d, 0x0e, 0x65, 0x49, 0x47, 0xe8, 0xf0, 0x64, 0xcb, 0xc8, 0xdb,
- 0x8b, 0x43, 0x62, 0x75, 0x0c, 0x48, 0x58, 0x3c, 0x22, 0x0d, 0xc2, 0x75, 0x45, 0x9c, 0x75, 0xe8,
- 0x1e, 0xf5, 0x67, 0x41, 0xee, 0x4f, 0xea, 0x0a, 0xc4, 0x6a, 0x13, 0xeb, 0xfb, 0x7f, 0x2f, 0x42,
- 0xb1, 0x47, 0x88, 0xcb, 0x2c, 0x1b, 0xe5, 0x10, 0x6c, 0x90, 0xea, 0x38, 0xfc, 0x46, 0x5f, 0x40,
- 0x4d, 0x77, 0x9c, 0xf1, 0x45, 0xa0, 0x4b, 0x3c, 0x10, 0x2a, 0x69, 0x61, 0x8b, 0x62, 0x85, 0x3b,
- 0x5d, 0xd5, 0xa3, 0x8f, 0x30, 0xc6, 0x5a, 0x48, 0xc6, 0x58, 0x69, 0x9d, 0x52, 0x8c, 0xf5, 0x11,
- 0xd4, 0xc9, 0xc9, 0xc8, 0xd1, 0x26, 0xd3, 0xb1, 0x6f, 0x9e, 0xda, 0x8e, 0x38, 0xec, 0x5e, 0x8b,
- 0x0a, 0xb4, 0x4f, 0x46, 0xce, 0xa1, 0xc0, 0xe2, 0x1a, 0x91, 0xbe, 0x50, 0x0b, 0x1a, 0x3c, 0x06,
- 0xe6, 0x92, 0xe1, 0x98, 0x0c, 0x7c, 0xdb, 0x65, 0xda, 0x1e, 0x5f, 0x5f, 0x28, 0x01, 0x0e, 0xf0,
- 0x78, 0xd1, 0x8d, 0x7d, 0xa3, 0xbb, 0x50, 0x34, 0xad, 0xa1, 0xcd, 0x96, 0xaf, 0xd8, 0x8e, 0x94,
- 0xca, 0xc9, 0xfd, 0x18, 0x46, 0x40, 0x7d, 0x2f, 0xdf, 0x9c, 0x10, 0xd7, 0x13, 0x4b, 0x98, 0xe4,
- 0x7b, 0xf5, 0x19, 0x1c, 0x0b, 0x3c, 0xdd, 0xe9, 0xfa, 0xae, 0x6e, 0x79, 0x2c, 0x16, 0x5a, 0x4e,
- 0xf2, 0xed, 0x07, 0x28, 0x1c, 0x51, 0xd1, 0x7e, 0xe6, 0x0d, 0xe1, 0x81, 0x5e, 0xb6, 0x6e, 0xc5,
- 0xfa, 0x99, 0xb5, 0x42, 0x78, 0x68, 0x3c, 0xee, 0xc7, 0x3f, 0xd0, 0x1e, 0x28, 0x23, 0x57, 0x1f,
- 0x90, 0xe1, 0x74, 0xac, 0xb9, 0xc4, 0xa3, 0x3e, 0x1f, 0x5b, 0xd9, 0xaa, 0x0f, 0x6f, 0x48, 0xce,
- 0xa1, 0xa0, 0xc0, 0x9c, 0x00, 0x37, 0x46, 0x71, 0x00, 0xda, 0x86, 0x8a, 0x3e, 0x34, 0x35, 0x4f,
- 0x1f, 0x9a, 0x5e, 0xb3, 0xca, 0x74, 0x79, 0x49, 0x1a, 0xe4, 0xa1, 0x79, 0xac, 0x0f, 0x4d, 0x5c,
- 0xd6, 0xf9, 0x1f, 0xba, 0xf7, 0xaa, 0xe8, 0x86, 0xa1, 0x71, 0xcb, 0x5b, 0x4b, 0x0e, 0xb1, 0xb8,
- 0x50, 0xe1, 0xe1, 0xb2, 0x2e, 0xfe, 0xa9, 0xff, 0x29, 0x07, 0x55, 0x49, 0x57, 0xd0, 0xe7, 0x50,
- 0x31, 0x2d, 0x2d, 0xb6, 0x4b, 0xbc, 0xcc, 0x21, 0x2f, 0x9b, 0x96, 0x28, 0xf8, 0xfb, 0x50, 0x27,
- 0xe7, 0xb4, 0xcf, 0xe2, 0x2a, 0x79, 0x59, 0xe1, 0x1a, 0x2f, 0x10, 0x31, 0x30, 0x27, 0x32, 0x83,
- 0xc2, 0xd5, 0x0c, 0x78, 0x01, 0x61, 0x3d, 0xff, 0x2e, 0x54, 0xf9, 0x8c, 0x3e, 0x30, 0x27, 0xe6,
- 0xcc, 0x38, 0x3f, 0x7a, 0x0f, 0x6a, 0x13, 0xfd, 0x3c, 0x5a, 0x45, 0xf8, 0x64, 0xad, 0x4e, 0xf4,
- 0xf3, 0x70, 0xb1, 0xf9, 0x0c, 0xd6, 0x3c, 0x71, 0x28, 0xad, 0xf9, 0xa7, 0x2e, 0xf1, 0x4e, 0xed,
- 0xb1, 0xa1, 0x39, 0x03, 0x5f, 0x18, 0x9a, 0x95, 0x00, 0xdb, 0x0f, 0x90, 0xbd, 0x81, 0xaf, 0xfe,
- 0xef, 0x79, 0x28, 0x07, 0x93, 0x08, 0xfd, 0x08, 0xea, 0xfa, 0xd4, 0x3f, 0xd5, 0x1c, 0xdd, 0xf3,
- 0xbe, 0xb3, 0x5d, 0x43, 0xd8, 0xd2, 0x1a, 0x05, 0xf6, 0x04, 0x0c, 0xdd, 0x86, 0xaa, 0x41, 0xbc,
- 0x81, 0x6b, 0x3a, 0xd2, 0xe9, 0xb2, 0x0c, 0x42, 0x37, 0xa0, 0xcc, 0x97, 0x7f, 0xdd, 0x0b, 0x82,
- 0xc5, 0xec, 0xbb, 0xc5, 0x56, 0xc4, 0xd0, 0x39, 0x09, 0x82, 0xd9, 0x45, 0xc6, 0xa1, 0x11, 0xc0,
- 0x5b, 0x22, 0xfe, 0xbf, 0x0e, 0x0b, 0x0e, 0x21, 0x2e, 0x65, 0xc2, 0x63, 0xc2, 0x25, 0xfa, 0xd9,
- 0xf2, 0xa8, 0xe3, 0xc5, 0x10, 0x23, 0xd7, 0x9e, 0x3a, 0x6c, 0xaa, 0x55, 0x70, 0x85, 0x42, 0xf6,
- 0x29, 0x80, 0x3a, 0x5e, 0x0c, 0xcd, 0xcc, 0x1f, 0x3f, 0xff, 0x2a, 0x53, 0x00, 0x3b, 0xaa, 0x3e,
- 0x82, 0x25, 0x97, 0x4c, 0xec, 0x33, 0xa2, 0x39, 0xae, 0x79, 0xa6, 0xfb, 0xd4, 0x79, 0x63, 0xb3,
- 0x6a, 0xf1, 0xa1, 0x9a, 0xb6, 0x2a, 0xdb, 0x98, 0xd1, 0xf6, 0x38, 0x69, 0xcb, 0xc3, 0x0d, 0x37,
- 0x0e, 0xa0, 0x7e, 0x13, 0x9f, 0x6a, 0xc3, 0xb1, 0xee, 0x68, 0x86, 0x3e, 0x71, 0x4c, 0x6b, 0xc4,
- 0x26, 0x5c, 0x19, 0x2b, 0x0c, 0xf3, 0x74, 0xac, 0x3b, 0x7b, 0x1c, 0x8e, 0xee, 0xc0, 0xa2, 0x47,
- 0x2c, 0x43, 0x13, 0x47, 0xf1, 0xfe, 0x85, 0x70, 0x1b, 0xeb, 0x14, 0xba, 0x1b, 0x00, 0x69, 0x03,
- 0xc5, 0xc9, 0xe4, 0x40, 0x77, 0xd8, 0x04, 0xaa, 0xe1, 0x0a, 0x87, 0xec, 0xea, 0xac, 0x81, 0xbc,
- 0x7b, 0x29, 0xb6, 0xc6, 0xb0, 0xbc, 0xbf, 0x29, 0x72, 0x11, 0xf2, 0xa6, 0xc1, 0x5c, 0xc7, 0x0a,
- 0xce, 0x9b, 0x06, 0xfa, 0x12, 0xea, 0xe2, 0x3c, 0x70, 0x4c, 0x15, 0xcc, 0x6b, 0x2e, 0x26, 0x97,
- 0x7e, 0x49, 0xfd, 0x70, 0xcd, 0x89, 0x3e, 0x3c, 0xaa, 0x0e, 0x62, 0x1c, 0xc5, 0x48, 0x71, 0x5f,
- 0xb2, 0xc6, 0x07, 0x53, 0x0c, 0xd3, 0xc7, 0x80, 0x22, 0x77, 0xd3, 0xf2, 0x89, 0x3b, 0xd4, 0x07,
- 0x84, 0xf9, 0x96, 0x15, 0xbc, 0x14, 0x7a, 0x9d, 0x01, 0x82, 0xee, 0x16, 0xce, 0xdc, 0x21, 0xf3,
- 0x2c, 0x2b, 0x2c, 0xfe, 0x8d, 0x6e, 0x43, 0x4d, 0x1f, 0x8f, 0xed, 0xef, 0x34, 0xaa, 0xb8, 0xba,
- 0x17, 0xb8, 0x93, 0x0c, 0xd6, 0xfd, 0xce, 0x6a, 0x79, 0xe8, 0x03, 0x68, 0xb8, 0x7c, 0xd3, 0xac,
- 0x05, 0x1a, 0xb1, 0xcc, 0x6f, 0xe1, 0x08, 0x70, 0x8f, 0x29, 0x86, 0xfa, 0x00, 0x1a, 0x89, 0x01,
- 0x43, 0x65, 0x28, 0x8a, 0xdd, 0x8f, 0x38, 0xdc, 0xce, 0xa1, 0x2a, 0x2c, 0xe0, 0x76, 0xef, 0xa0,
- 0xb5, 0xdb, 0x56, 0xf2, 0xea, 0x57, 0x50, 0x93, 0x57, 0x04, 0xd4, 0x84, 0x05, 0x7e, 0x78, 0x11,
- 0xdc, 0x9d, 0x0b, 0x3e, 0xd9, 0x0c, 0x14, 0x54, 0x9a, 0xef, 0x8f, 0xc3, 0x19, 0x28, 0x60, 0x7d,
- 0x7f, 0xac, 0xfe, 0x51, 0x0e, 0x16, 0xe3, 0x0b, 0x04, 0x9d, 0x94, 0x89, 0x35, 0x45, 0x1b, 0x8c,
- 0xcd, 0x20, 0x6e, 0x50, 0xc6, 0x2b, 0xf1, 0x05, 0x64, 0x97, 0xe1, 0xd0, 0x23, 0xd8, 0x48, 0x97,
- 0x9a, 0x7a, 0xd4, 0x8f, 0x0c, 0x2f, 0x2a, 0xac, 0x27, 0x4b, 0x32, 0x7c, 0xc7, 0x50, 0xff, 0x75,
- 0x09, 0x2a, 0xe1, 0x72, 0xf3, 0x7f, 0x61, 0x4a, 0x6f, 0x43, 0x79, 0x42, 0x3c, 0x4f, 0x1f, 0x09,
- 0xe7, 0x36, 0x66, 0xbc, 0x0f, 0x05, 0x06, 0x87, 0x34, 0x99, 0x26, 0x60, 0xfe, 0x4a, 0x13, 0x50,
- 0xba, 0xc4, 0x04, 0x2c, 0x5c, 0x6a, 0x02, 0xca, 0x09, 0x13, 0x70, 0x0f, 0x4a, 0xbf, 0x9e, 0x92,
- 0x29, 0xf1, 0xc4, 0xba, 0x28, 0x2d, 0xbd, 0x5f, 0x33, 0x38, 0x16, 0x78, 0xb4, 0x95, 0x65, 0x2c,
- 0xf8, 0x8c, 0xbd, 0xa6, 0x21, 0xa8, 0x5e, 0xdb, 0x10, 0xd4, 0xb2, 0x0c, 0x01, 0x3b, 0x49, 0xf7,
- 0x3c, 0xba, 0xe1, 0xe5, 0xa1, 0x92, 0x3a, 0xa3, 0xaa, 0x09, 0x20, 0x1f, 0xe1, 0x9f, 0xc0, 0x9a,
- 0x37, 0x75, 0xe8, 0x92, 0x42, 0x0c, 0x6a, 0x12, 0xf4, 0x13, 0x73, 0x6c, 0xfa, 0xd4, 0xff, 0x5a,
- 0x64, 0xa7, 0x78, 0xab, 0x21, 0x76, 0x57, 0x42, 0xd2, 0x3e, 0xa2, 0x9e, 0x12, 0xe7, 0xcb, 0x27,
- 0x76, 0xf9, 0x64, 0xe4, 0x70, 0x9e, 0xbf, 0x0f, 0x55, 0xdd, 0x98, 0x98, 0x41, 0xb5, 0x4a, 0x32,
- 0x42, 0x13, 0xea, 0xd7, 0x76, 0x8b, 0x92, 0x71, 0xcf, 0x06, 0xf4, 0xf0, 0x3f, 0x75, 0x03, 0x83,
- 0x3b, 0x01, 0x6c, 0xae, 0xd7, 0x71, 0xf8, 0x4d, 0x71, 0xfa, 0x60, 0x40, 0x1c, 0x9f, 0x18, 0x62,
- 0xb2, 0x87, 0xdf, 0x74, 0x67, 0xa9, 0x47, 0xd7, 0x57, 0x97, 0x85, 0x29, 0x88, 0x2e, 0xae, 0x2e,
- 0xc3, 0xbc, 0x3d, 0xf5, 0xb5, 0x5f, 0xb3, 0xbd, 0x62, 0x1d, 0x17, 0xed, 0xa9, 0xff, 0x35, 0xdd,
- 0x31, 0x0f, 0xc7, 0xb6, 0x43, 0x77, 0x83, 0x14, 0xc8, 0x3f, 0xd4, 0x2d, 0x80, 0x48, 0x38, 0x54,
- 0x82, 0xfc, 0xf3, 0x1e, 0xbf, 0x02, 0xb3, 0xd7, 0xfd, 0xc5, 0x91, 0x92, 0x43, 0x00, 0xa5, 0xde,
- 0xd3, 0x97, 0xda, 0x6e, 0x5f, 0xc9, 0xab, 0x7f, 0x0b, 0xca, 0x81, 0xa6, 0xa2, 0x8f, 0x25, 0xd1,
- 0xb9, 0x2f, 0xb1, 0x94, 0xd2, 0x67, 0xa9, 0x35, 0x77, 0xa0, 0xe8, 0x05, 0x77, 0x50, 0x32, 0x49,
- 0x19, 0x5a, 0xfd, 0x8b, 0x1c, 0x2c, 0x08, 0x08, 0x52, 0xa1, 0x76, 0xd4, 0xed, 0x77, 0x9e, 0x76,
- 0x76, 0x5b, 0xfd, 0x4e, 0xf7, 0x88, 0xd5, 0x52, 0xc4, 0x31, 0x18, 0x75, 0x04, 0x9e, 0xf7, 0xf6,
- 0x5a, 0xfd, 0x36, 0x63, 0x5c, 0xc4, 0xe2, 0x8b, 0x6e, 0x29, 0xba, 0xbd, 0xf6, 0x91, 0xb8, 0x4b,
- 0xc5, 0xfe, 0xa3, 0x77, 0xa0, 0xf2, 0x55, 0xbb, 0xdd, 0x6b, 0x1d, 0x74, 0x5e, 0xb4, 0xd9, 0x14,
- 0x2c, 0xe2, 0x08, 0x40, 0x4d, 0x1a, 0x6e, 0x3f, 0xc5, 0xed, 0xe3, 0x67, 0x6c, 0x9a, 0x15, 0x71,
- 0xf0, 0x49, 0xcb, 0xed, 0x75, 0x8e, 0x77, 0x5b, 0x78, 0xaf, 0xbd, 0xc7, 0x26, 0x58, 0x11, 0x47,
- 0x00, 0xda, 0xab, 0xfd, 0x6e, 0xbf, 0x75, 0xc0, 0xa6, 0x57, 0x11, 0xf3, 0x0f, 0x75, 0x07, 0x4a,
- 0x7c, 0x96, 0x50, 0xbc, 0x69, 0x39, 0x53, 0x5f, 0x78, 0x2a, 0xfc, 0x83, 0xca, 0x6d, 0x4f, 0x7d,
- 0x0a, 0x16, 0xfb, 0x09, 0xfe, 0xa5, 0x12, 0x28, 0x71, 0xc7, 0x16, 0x6d, 0x43, 0x89, 0xfa, 0xea,
- 0xe6, 0x48, 0xf4, 0xee, 0x5a, 0xd2, 0xf5, 0xdd, 0x65, 0x58, 0x2c, 0xa8, 0xd0, 0x8f, 0xe3, 0xf7,
- 0x26, 0x56, 0x93, 0xe4, 0xb1, 0x9b, 0x13, 0x7f, 0x91, 0x83, 0x9a, 0xcc, 0x85, 0x4e, 0xa1, 0x81,
- 0x6d, 0x59, 0x64, 0xe0, 0x6b, 0x2e, 0xf1, 0xdd, 0x8b, 0xa0, 0xb3, 0x05, 0x10, 0x53, 0x18, 0x9d,
- 0x0b, 0xcc, 0x59, 0x0a, 0x2f, 0xf1, 0x14, 0x71, 0x99, 0x02, 0x28, 0x27, 0xba, 0xc0, 0x7d, 0x4b,
- 0x88, 0xa3, 0x8f, 0xcd, 0x33, 0xa2, 0x25, 0xee, 0xb2, 0x2d, 0x85, 0x98, 0x8e, 0x40, 0xa0, 0x3d,
- 0xb8, 0x39, 0x31, 0x2d, 0x73, 0x32, 0x9d, 0x68, 0xa1, 0xde, 0x52, 0xbf, 0x2f, 0x2a, 0xca, 0x47,
- 0xe8, 0x1d, 0x41, 0xd5, 0x92, 0x89, 0x02, 0x2e, 0xea, 0x9f, 0xe5, 0xa1, 0x2a, 0x35, 0xef, 0xff,
- 0xd1, 0x66, 0xb0, 0x68, 0x1b, 0x19, 0xd9, 0xbe, 0xa9, 0x53, 0xe3, 0x14, 0x09, 0xc7, 0x15, 0x11,
- 0x45, 0xb8, 0x67, 0x81, 0x98, 0xd1, 0x35, 0x2b, 0xae, 0x90, 0x59, 0xd7, 0xac, 0xb8, 0x42, 0x86,
- 0xdf, 0xea, 0xff, 0xca, 0x41, 0x25, 0xdc, 0x08, 0xa5, 0xbd, 0x96, 0x5c, 0x86, 0xd7, 0xf2, 0x2e,
- 0x00, 0x27, 0x92, 0xae, 0x98, 0x70, 0xaf, 0xaa, 0x27, 0x78, 0x4c, 0xfc, 0xa9, 0x66, 0x98, 0xde,
- 0xc0, 0x3e, 0x23, 0xee, 0x85, 0x88, 0xef, 0xd4, 0x26, 0xfe, 0x74, 0x2f, 0x80, 0x51, 0x8f, 0x80,
- 0xae, 0xaa, 0xb4, 0x3f, 0x27, 0xb6, 0x11, 0x5c, 0x77, 0xa8, 0x0a, 0xd8, 0xa1, 0x6d, 0x10, 0x6a,
- 0xe7, 0x85, 0x27, 0x17, 0x5f, 0xe9, 0xea, 0x1c, 0xda, 0xca, 0xbe, 0x8a, 0x56, 0x0a, 0xae, 0x7d,
- 0x05, 0x57, 0xd1, 0xe8, 0x42, 0xe8, 0x0f, 0x1c, 0x6d, 0xe2, 0x79, 0xc2, 0xa3, 0x2d, 0xf9, 0x03,
- 0xe7, 0xd0, 0xf3, 0xd4, 0xc7, 0x50, 0x95, 0x36, 0x73, 0x68, 0x1b, 0x96, 0xe5, 0x9d, 0x5f, 0xdc,
- 0xd7, 0x58, 0x92, 0x76, 0x7a, 0xdc, 0xd1, 0x50, 0xff, 0xbc, 0x00, 0x8d, 0xc4, 0x76, 0xee, 0x72,
- 0x17, 0x48, 0x6c, 0x0a, 0x23, 0x15, 0xab, 0xe3, 0xaa, 0x80, 0xb1, 0xe1, 0xbb, 0x05, 0xd5, 0x53,
- 0x32, 0x76, 0x88, 0xab, 0xd9, 0xd6, 0x38, 0xe8, 0x36, 0xe0, 0xa0, 0xae, 0x35, 0x66, 0x4b, 0x9a,
- 0x41, 0x86, 0xc4, 0x75, 0xf5, 0x31, 0x67, 0xc2, 0x2f, 0xc1, 0xd5, 0x02, 0x20, 0xe3, 0xf2, 0x00,
- 0x56, 0xd8, 0xd5, 0x31, 0x71, 0x59, 0x55, 0x0b, 0xe4, 0xe1, 0xc1, 0xa7, 0x65, 0x19, 0xd7, 0x16,
- 0xb2, 0xfd, 0x18, 0x96, 0xc6, 0xb6, 0x35, 0x1a, 0xb3, 0xab, 0x69, 0x01, 0x7d, 0x89, 0x2f, 0xbf,
- 0x21, 0x22, 0x20, 0xde, 0x82, 0x25, 0x16, 0x55, 0xd5, 0x58, 0x8f, 0x78, 0x5a, 0xa8, 0x55, 0x75,
- 0xdc, 0x60, 0x08, 0xd6, 0xa7, 0x1e, 0x93, 0x65, 0x0b, 0x96, 0x98, 0x2f, 0x11, 0x6b, 0x39, 0xf7,
- 0x29, 0x1a, 0x14, 0x81, 0xa5, 0xd6, 0xdf, 0x85, 0x86, 0x4c, 0x1b, 0x6d, 0x05, 0x16, 0x25, 0x4a,
- 0xba, 0xfe, 0x87, 0x01, 0x52, 0x89, 0x12, 0x78, 0x60, 0x90, 0xc1, 0x25, 0x52, 0x04, 0x45, 0xa6,
- 0x5d, 0x3c, 0x84, 0xcc, 0xfe, 0xab, 0x9f, 0xc2, 0xfa, 0xa1, 0x93, 0x18, 0x37, 0x61, 0xef, 0x66,
- 0x8e, 0x9e, 0xfa, 0x1f, 0x73, 0xb0, 0x96, 0x2a, 0xc5, 0xad, 0xcb, 0xec, 0x21, 0x97, 0xd7, 0x71,
- 0x7e, 0x8c, 0x16, 0xad, 0x7c, 0xf1, 0xb5, 0x5a, 0x0c, 0xb5, 0xb4, 0x56, 0x7f, 0x0c, 0xcb, 0xe2,
- 0x6a, 0x9e, 0x6b, 0x9e, 0x68, 0x21, 0x9b, 0x62, 0xf0, 0x26, 0xc5, 0xe8, 0x0e, 0x59, 0x08, 0x29,
- 0x5c, 0x48, 0x1b, 0x12, 0x39, 0x5b, 0x53, 0xf9, 0x78, 0xd7, 0x02, 0xd2, 0x63, 0xaa, 0xb2, 0xbf,
- 0xcd, 0xc1, 0x52, 0xaa, 0x19, 0xe8, 0xf7, 0x12, 0x8b, 0xca, 0x7b, 0xd2, 0x3a, 0x9c, 0xdd, 0x53,
- 0xe1, 0xfa, 0xb2, 0x13, 0x5f, 0x5f, 0x6e, 0x5f, 0x52, 0x32, 0xb6, 0xd4, 0xb4, 0xa0, 0x2e, 0x42,
- 0x19, 0xa2, 0xeb, 0x67, 0xed, 0xdd, 0xa5, 0xde, 0xcd, 0xc7, 0x87, 0xe4, 0x1f, 0xe4, 0xa0, 0x26,
- 0x78, 0x84, 0x97, 0x4c, 0xdf, 0x8c, 0x05, 0x9d, 0x70, 0xbe, 0xed, 0x53, 0x43, 0x26, 0xae, 0x2b,
- 0x33, 0xd3, 0xc1, 0x40, 0x2c, 0x56, 0x42, 0x4d, 0x90, 0x20, 0x90, 0x23, 0xd0, 0x75, 0x5c, 0xe7,
- 0x34, 0x41, 0x14, 0xf1, 0x1f, 0x17, 0x60, 0x53, 0x58, 0x92, 0x31, 0xbf, 0x78, 0xcf, 0xc3, 0x9f,
- 0xc1, 0x3a, 0xfa, 0x11, 0x20, 0x7d, 0xfc, 0x9d, 0x7e, 0xe1, 0x51, 0x9f, 0xd5, 0xd1, 0x5d, 0xa2,
- 0x4d, 0xa2, 0xf7, 0x45, 0x1c, 0xb3, 0xcb, 0x11, 0x87, 0xc4, 0x40, 0x0f, 0x60, 0xd5, 0x1c, 0x59,
- 0xb6, 0x4b, 0x3d, 0x66, 0x26, 0x59, 0x70, 0x2c, 0x26, 0x6e, 0x0a, 0x70, 0x64, 0xcb, 0xa3, 0x22,
- 0xf2, 0xa3, 0x30, 0xba, 0xe7, 0x09, 0x0e, 0x36, 0xc2, 0x2a, 0xd8, 0xf4, 0x64, 0x7b, 0x1e, 0xae,
- 0x5d, 0xeb, 0x01, 0x85, 0xa8, 0x8a, 0x09, 0xec, 0x76, 0xe8, 0x2e, 0xf7, 0x46, 0xa8, 0x78, 0x9a,
- 0x69, 0xe9, 0x03, 0x9f, 0x5a, 0x65, 0x3e, 0xbb, 0x85, 0xc2, 0xad, 0x87, 0x04, 0x1d, 0x81, 0xe7,
- 0x93, 0x9c, 0xf6, 0x20, 0xef, 0x4c, 0x4d, 0x37, 0x47, 0x4e, 0x10, 0xe0, 0x16, 0x4f, 0xa6, 0xcc,
- 0x91, 0x83, 0xbe, 0x84, 0x0d, 0xd1, 0x18, 0x8b, 0x9c, 0xfb, 0x1a, 0x3b, 0x20, 0x19, 0x39, 0xda,
- 0x84, 0xf8, 0xae, 0x39, 0x10, 0x36, 0x66, 0x8d, 0x53, 0x1c, 0x91, 0x73, 0xff, 0x99, 0xed, 0x74,
- 0x46, 0xce, 0x21, 0xc3, 0xa2, 0xc7, 0xb0, 0x69, 0xf0, 0x5b, 0x82, 0xda, 0x09, 0xf1, 0x7c, 0xde,
- 0x17, 0x5e, 0xd0, 0xc5, 0xcc, 0xe6, 0x94, 0x71, 0x53, 0x90, 0x3c, 0x21, 0x1e, 0x0b, 0x33, 0x87,
- 0x43, 0xa0, 0xfe, 0xa3, 0x02, 0x6c, 0x64, 0x8e, 0x0a, 0x57, 0x97, 0xff, 0x3f, 0x28, 0xbf, 0x93,
- 0x41, 0xc9, 0xc1, 0x6a, 0xe6, 0xa0, 0xa0, 0xc7, 0x09, 0x2b, 0x74, 0x27, 0x15, 0x72, 0xcd, 0x9a,
- 0x5b, 0xa1, 0x25, 0xfa, 0x32, 0x6e, 0x89, 0xde, 0xbf, 0xa2, 0x74, 0xcc, 0x1a, 0x3d, 0x84, 0xb5,
- 0xe7, 0x1e, 0x61, 0x71, 0x0c, 0x67, 0xcc, 0x9e, 0x6a, 0x79, 0x57, 0xae, 0x08, 0x0f, 0x60, 0x35,
- 0x59, 0xe6, 0x8a, 0xf5, 0x40, 0xfd, 0x15, 0x40, 0xfb, 0x64, 0xe4, 0x08, 0xd6, 0x5b, 0xb0, 0xc4,
- 0x43, 0x37, 0x13, 0xc1, 0x83, 0x6e, 0x90, 0x79, 0x89, 0x06, 0x43, 0x04, 0xbc, 0x5b, 0x2c, 0x98,
- 0x34, 0xd1, 0xcf, 0x99, 0x43, 0x19, 0x1c, 0xb1, 0xb1, 0x85, 0x5f, 0x00, 0x79, 0x60, 0xf7, 0x0f,
- 0xa1, 0xd2, 0x0e, 0x37, 0xa1, 0x6f, 0x9d, 0xbb, 0x06, 0x45, 0xca, 0x1d, 0x7d, 0x94, 0x18, 0xa6,
- 0x95, 0xf8, 0xf1, 0x40, 0x62, 0x54, 0x66, 0xdf, 0xdb, 0x0e, 0x45, 0x0d, 0x06, 0xe1, 0x01, 0x40,
- 0x27, 0xea, 0x9d, 0x94, 0x4c, 0xb9, 0x0c, 0x99, 0x3e, 0x81, 0x4a, 0x27, 0x6c, 0xf1, 0xb5, 0x4a,
- 0x68, 0x50, 0xec, 0x5c, 0xd1, 0x8a, 0xce, 0x9b, 0xb4, 0xa2, 0x93, 0x6c, 0xc5, 0x5f, 0xe5, 0x40,
- 0x49, 0xea, 0x05, 0xfa, 0x22, 0x51, 0x9b, 0xb4, 0x4c, 0x66, 0xeb, 0x5d, 0x58, 0xf3, 0x4f, 0xe2,
- 0x35, 0xdf, 0x9a, 0x5d, 0x30, 0x76, 0xd1, 0x43, 0x85, 0x22, 0x39, 0x19, 0x39, 0xe9, 0xe7, 0x96,
- 0xb4, 0xd7, 0x31, 0xc3, 0x51, 0x1a, 0x93, 0xd2, 0xa4, 0x9e, 0x34, 0x76, 0x18, 0x0d, 0xc5, 0xa9,
- 0x4f, 0xc4, 0xba, 0xd6, 0xd7, 0xdd, 0x11, 0xf1, 0x0f, 0xc9, 0xe4, 0x84, 0xb8, 0xde, 0xa9, 0x29,
- 0x0d, 0x52, 0xdc, 0x1f, 0xcd, 0xa5, 0xfd, 0x51, 0xb5, 0x25, 0xac, 0x70, 0x92, 0x47, 0x38, 0x6a,
- 0x57, 0xb3, 0x08, 0x8d, 0x46, 0x92, 0xc7, 0x95, 0x46, 0x23, 0x5b, 0xf0, 0xeb, 0x1a, 0x8d, 0x4c,
- 0x91, 0x83, 0x91, 0xfe, 0x15, 0xdc, 0x3c, 0xb0, 0xad, 0xd1, 0x01, 0xf5, 0xbf, 0xde, 0xd0, 0x9d,
- 0xbc, 0xc6, 0x66, 0x40, 0xfd, 0xaf, 0x39, 0x78, 0x77, 0x16, 0xff, 0x1f, 0xd2, 0xf1, 0xcc, 0x74,
- 0xd9, 0x8b, 0xd9, 0x2e, 0xfb, 0x23, 0xd8, 0x48, 0xd1, 0xba, 0x1a, 0x39, 0x77, 0x4c, 0x37, 0xdc,
- 0x70, 0xac, 0x27, 0x0a, 0xb9, 0x6d, 0x8e, 0x56, 0xff, 0x69, 0x0e, 0x9a, 0xb3, 0x1a, 0x88, 0x7e,
- 0x9e, 0x18, 0x57, 0xe9, 0x25, 0xd7, 0xe5, 0x9d, 0x1e, 0x0e, 0xed, 0xe3, 0xf8, 0xd0, 0xde, 0xbd,
- 0x9a, 0x41, 0x6c, 0x74, 0xff, 0x74, 0x1e, 0x16, 0x84, 0x77, 0x89, 0xbe, 0x82, 0xe5, 0x89, 0xa3,
- 0xa5, 0xce, 0xf6, 0xb8, 0x64, 0x9b, 0x97, 0xb8, 0xbc, 0x78, 0x69, 0x92, 0x72, 0xb6, 0xef, 0x87,
- 0x2d, 0xe3, 0x82, 0xad, 0xa7, 0x0e, 0xf7, 0x12, 0x0d, 0x49, 0x1e, 0xfc, 0x16, 0xae, 0x7d, 0xf0,
- 0xfb, 0x0b, 0x58, 0x0f, 0x36, 0xb4, 0x62, 0xf1, 0x13, 0xe7, 0xf8, 0x41, 0xac, 0xf9, 0xd6, 0x15,
- 0x8b, 0x24, 0x5e, 0x75, 0x33, 0x97, 0xea, 0x67, 0x80, 0xa6, 0x1e, 0x89, 0x96, 0x16, 0x6e, 0x6f,
- 0xe7, 0x93, 0xa7, 0x77, 0x49, 0x13, 0x85, 0x95, 0x69, 0xd2, 0x32, 0xa6, 0x4e, 0x58, 0x4a, 0xc9,
- 0xd6, 0xcd, 0x3e, 0x61, 0x09, 0x9b, 0xe7, 0xb3, 0x69, 0xaa, 0x4d, 0xc2, 0x79, 0x2a, 0xce, 0x85,
- 0x6f, 0x5d, 0x31, 0x9d, 0x45, 0xf3, 0x52, 0x46, 0x45, 0x87, 0x4d, 0xba, 0xeb, 0xd5, 0xf8, 0x7e,
- 0x38, 0x35, 0xee, 0xfc, 0x1c, 0x59, 0xbd, 0x5a, 0xa1, 0x70, 0x73, 0x3c, 0x4b, 0xbf, 0x63, 0xa7,
- 0xb6, 0x95, 0x6b, 0x9c, 0xda, 0xb6, 0xc3, 0x97, 0xf9, 0x92, 0x6b, 0x22, 0x26, 0x75, 0x30, 0xfd,
- 0xc5, 0x27, 0xba, 0x01, 0x65, 0x16, 0x20, 0x9f, 0xe8, 0xe7, 0xc2, 0xb2, 0x2c, 0xd0, 0xef, 0x43,
- 0xfd, 0x5c, 0xdd, 0x63, 0x0f, 0x35, 0xe2, 0xde, 0xca, 0x9b, 0x73, 0xf9, 0x16, 0xca, 0x01, 0x17,
- 0xf4, 0x49, 0x62, 0xa6, 0x36, 0xd3, 0xcd, 0x48, 0x28, 0xf4, 0xc7, 0xf1, 0x99, 0xb9, 0x9e, 0x2e,
- 0x10, 0x9b, 0x89, 0x53, 0x28, 0x89, 0x6b, 0x2a, 0x9b, 0x50, 0x31, 0x1d, 0x2d, 0x76, 0x53, 0xa5,
- 0x6c, 0x06, 0x77, 0x58, 0x3e, 0x80, 0xc6, 0x44, 0xf7, 0xbe, 0x15, 0x6e, 0xb9, 0x36, 0x11, 0xaf,
- 0xcd, 0xeb, 0xb8, 0x4e, 0xc1, 0xdc, 0x25, 0x3f, 0x34, 0xad, 0x14, 0x9d, 0x7e, 0x2e, 0xf6, 0x7d,
- 0x32, 0x9d, 0x7e, 0xae, 0xfe, 0x69, 0x0e, 0x20, 0x7a, 0x96, 0xf0, 0xd7, 0x7c, 0x3b, 0x42, 0x61,
- 0x63, 0xd3, 0xf3, 0xd9, 0xed, 0xc9, 0x0a, 0x66, 0xff, 0xd9, 0x75, 0xf8, 0xf8, 0xa5, 0x15, 0x25,
- 0xa9, 0xf6, 0xd2, 0x4d, 0x95, 0x7d, 0x28, 0x1f, 0xea, 0xfe, 0xe0, 0x94, 0x0a, 0x73, 0x37, 0x26,
- 0x8c, 0xe4, 0x8e, 0x30, 0x8a, 0x2b, 0x9e, 0xb1, 0xbc, 0x80, 0x5a, 0x6c, 0x9b, 0xb2, 0x1d, 0x63,
- 0x26, 0x4d, 0x5f, 0x99, 0x4a, 0xe2, 0xb9, 0x06, 0x25, 0x69, 0xeb, 0x53, 0xc7, 0xe2, 0x4b, 0xfd,
- 0x27, 0xf3, 0x00, 0xbb, 0xb6, 0x65, 0x98, 0xdc, 0x46, 0x3c, 0x00, 0xf1, 0x70, 0x52, 0x8b, 0xde,
- 0x82, 0xa0, 0x84, 0xa4, 0xc7, 0xc4, 0xc7, 0x15, 0x4e, 0x45, 0x9b, 0xf5, 0x13, 0xa8, 0x85, 0x87,
- 0x5b, 0xb4, 0x50, 0x7e, 0x66, 0xa1, 0xf0, 0x92, 0x1e, 0x2d, 0xf6, 0x53, 0x58, 0x4c, 0xec, 0xc9,
- 0x0a, 0xc9, 0xd8, 0xb8, 0xdc, 0x14, 0x5c, 0xd3, 0xe5, 0xe6, 0x3f, 0x84, 0x6a, 0x50, 0x9a, 0xd6,
- 0x59, 0x9c, 0x2d, 0x28, 0x2f, 0x46, 0x6b, 0xfc, 0x3c, 0x7c, 0x25, 0xee, 0x5f, 0xb0, 0x52, 0xf3,
- 0x33, 0x4b, 0xd5, 0x42, 0x42, 0x5a, 0xf0, 0x67, 0xb0, 0x44, 0x37, 0x5c, 0xf1, 0xc2, 0xa5, 0x99,
- 0x85, 0x1b, 0xe4, 0xdc, 0xdf, 0x95, 0xcb, 0xdf, 0x82, 0xaa, 0xeb, 0x7c, 0x6b, 0x52, 0x53, 0x34,
- 0x1d, 0xfb, 0xcc, 0xcc, 0xcd, 0x63, 0x70, 0xf9, 0xab, 0xb5, 0xe9, 0xd8, 0x47, 0x8f, 0x01, 0xa2,
- 0xa7, 0x68, 0xe2, 0x6c, 0x5e, 0x3a, 0x7a, 0x8a, 0xc6, 0x47, 0x58, 0x44, 0x3a, 0xac, 0x95, 0xf0,
- 0xa5, 0x1a, 0x7a, 0x02, 0xcb, 0x63, 0x6a, 0x0d, 0x13, 0x12, 0x56, 0x66, 0x4a, 0xb8, 0xc4, 0xc8,
- 0x63, 0x32, 0xde, 0x05, 0x25, 0xda, 0x55, 0x5a, 0x1a, 0x53, 0x7b, 0x60, 0x6a, 0x5f, 0xb7, 0xc4,
- 0x66, 0xd2, 0x3a, 0x30, 0x3d, 0x5f, 0x3d, 0x85, 0x4a, 0x28, 0x04, 0x5a, 0x86, 0x06, 0xee, 0x3e,
- 0xef, 0xb7, 0xb5, 0xfe, 0x37, 0xbd, 0xf0, 0x22, 0xef, 0x3a, 0x2c, 0x4b, 0xc0, 0xce, 0x51, 0xbf,
- 0x8d, 0x8f, 0x5a, 0x07, 0x4a, 0x2e, 0x81, 0x68, 0xbf, 0x14, 0x88, 0x3c, 0x5a, 0x01, 0x45, 0x42,
- 0x88, 0xb7, 0xd9, 0xea, 0x10, 0x1a, 0xa1, 0x88, 0x2d, 0x9e, 0x18, 0xe1, 0x41, 0x4c, 0xeb, 0xdf,
- 0x95, 0xbb, 0x28, 0x46, 0x28, 0x29, 0xfe, 0x6d, 0xa8, 0x06, 0xdd, 0x62, 0x86, 0xcf, 0xfc, 0x64,
- 0x90, 0x7a, 0x04, 0x95, 0x43, 0x62, 0x88, 0x1a, 0x7e, 0x1c, 0xab, 0x61, 0x5d, 0x3e, 0xdb, 0x32,
- 0x52, 0xbc, 0x57, 0x60, 0xfe, 0x4c, 0x1f, 0x4f, 0x83, 0x57, 0xd0, 0xfc, 0x43, 0xd5, 0xa0, 0xd1,
- 0xf2, 0x7a, 0x2e, 0x71, 0x88, 0x15, 0x70, 0x55, 0xa0, 0xa0, 0x7b, 0x96, 0xf0, 0x92, 0xe9, 0x5f,
- 0x3a, 0x1f, 0x29, 0x85, 0x1e, 0x1e, 0x1a, 0xf1, 0x2f, 0xa4, 0x42, 0x9d, 0x2e, 0xd2, 0x63, 0x32,
- 0xf4, 0xb5, 0x89, 0xed, 0xf9, 0xc2, 0xd7, 0xab, 0x4e, 0x3d, 0x72, 0x40, 0x86, 0xfe, 0xa1, 0xcd,
- 0xae, 0xc6, 0xd7, 0xc5, 0xed, 0x54, 0xc1, 0xfe, 0xd2, 0x17, 0xa5, 0x1e, 0x19, 0x0f, 0x85, 0x3f,
- 0xc9, 0xfe, 0xab, 0x77, 0xa1, 0x71, 0xc0, 0xc2, 0xfe, 0x2e, 0x19, 0x0a, 0x06, 0x61, 0x43, 0xc4,
- 0xc1, 0x16, 0x6f, 0xc8, 0x7f, 0x2e, 0xc0, 0x02, 0x27, 0xf0, 0xa2, 0x0b, 0x56, 0x3a, 0x8f, 0x18,
- 0xa4, 0x2c, 0x2a, 0x53, 0x0a, 0x4e, 0x2d, 0x2e, 0x58, 0x09, 0xde, 0x9f, 0x43, 0x25, 0x3a, 0xf3,
- 0xcd, 0x27, 0x6f, 0x56, 0x25, 0x06, 0x0e, 0x47, 0xb4, 0xe8, 0x0e, 0x14, 0x26, 0xc2, 0xd9, 0x8d,
- 0xed, 0xde, 0xc2, 0x91, 0xc0, 0x14, 0x8f, 0xbe, 0x00, 0xa0, 0xa6, 0x80, 0xf7, 0xb7, 0xb0, 0x04,
- 0x37, 0x62, 0x46, 0x44, 0x1e, 0x0a, 0x66, 0x10, 0x38, 0x00, 0xfd, 0x0c, 0xea, 0xb1, 0x79, 0x2d,
- 0x0c, 0xc2, 0x25, 0xd2, 0xd5, 0xe4, 0xa9, 0x8d, 0x1e, 0xc0, 0x82, 0xb8, 0x3e, 0x2c, 0xac, 0x81,
- 0xa4, 0x2e, 0xb1, 0x01, 0xc2, 0x01, 0x1d, 0x15, 0x56, 0x1c, 0xc2, 0xb8, 0x64, 0x28, 0x1c, 0x9e,
- 0x1b, 0xb2, 0x4f, 0x12, 0x1b, 0x97, 0xe0, 0x7c, 0xc6, 0x25, 0x43, 0xf4, 0x04, 0x1a, 0x89, 0x49,
- 0x2e, 0x5c, 0x9a, 0x4b, 0xc4, 0x5d, 0x8c, 0xcf, 0x73, 0xf5, 0x37, 0x39, 0xa8, 0x84, 0xef, 0x79,
- 0xc2, 0x65, 0x26, 0x27, 0xad, 0x78, 0x9f, 0x01, 0x0c, 0x42, 0x6b, 0x23, 0x46, 0x6b, 0x25, 0xcb,
- 0x12, 0x61, 0x89, 0x0e, 0xfd, 0x18, 0x16, 0xb8, 0x5a, 0x78, 0x62, 0xb4, 0xe4, 0xbb, 0x6f, 0x1c,
- 0x81, 0x03, 0x0a, 0xf5, 0x6b, 0x28, 0x09, 0x4f, 0x37, 0x4b, 0x80, 0xf8, 0x8b, 0xc0, 0xfc, 0xf5,
- 0x5e, 0x04, 0xfe, 0xb7, 0x1c, 0x28, 0xc9, 0x4b, 0x67, 0xe8, 0x5e, 0x6c, 0x26, 0xaf, 0x24, 0xaf,
- 0xa7, 0x49, 0xd3, 0x58, 0x4e, 0xa0, 0x91, 0xbf, 0x46, 0x02, 0x8d, 0xac, 0xec, 0x4c, 0xf2, 0x2b,
- 0xb9, 0xe2, 0x55, 0xaf, 0xe4, 0xd0, 0x7d, 0x58, 0x30, 0xc8, 0x50, 0xa7, 0xab, 0xc1, 0xfc, 0x65,
- 0x13, 0x29, 0xa0, 0x52, 0xff, 0x61, 0x0e, 0x0a, 0xd8, 0xd6, 0xd1, 0x22, 0xe4, 0xf5, 0x20, 0x46,
- 0x92, 0xd7, 0x3d, 0xf4, 0x0e, 0x88, 0x95, 0x78, 0x4c, 0x02, 0xcf, 0x29, 0x02, 0x50, 0x23, 0x33,
- 0xd1, 0x19, 0x4a, 0x5c, 0xbc, 0xe5, 0x5f, 0xd2, 0x4d, 0xd7, 0x62, 0xec, 0xe6, 0x70, 0x70, 0xe7,
- 0x74, 0xfe, 0xf2, 0x77, 0xfd, 0xea, 0x5d, 0x7e, 0xff, 0xd9, 0xd6, 0xaf, 0x7a, 0xab, 0xcf, 0x9f,
- 0x25, 0x33, 0xc2, 0xe8, 0x59, 0xb2, 0x6b, 0xeb, 0x19, 0xcf, 0x92, 0x29, 0x11, 0x43, 0xa9, 0x1e,
- 0x14, 0x5e, 0xb8, 0xc3, 0x4c, 0xed, 0x58, 0x84, 0xbc, 0xcb, 0x37, 0xc7, 0x35, 0x9c, 0x77, 0x0d,
- 0xe6, 0x5b, 0xf2, 0xbb, 0x88, 0x2e, 0xf7, 0xd2, 0x6a, 0xb8, 0xcc, 0x01, 0x98, 0x25, 0x70, 0x11,
- 0x37, 0x1d, 0x5d, 0x9f, 0x8d, 0x49, 0x0d, 0x97, 0x39, 0x00, 0xfb, 0xe2, 0xd2, 0x18, 0xbf, 0x65,
- 0x97, 0x37, 0x0d, 0xf5, 0xb7, 0x39, 0x58, 0xd9, 0xe3, 0x9d, 0xcd, 0x06, 0x60, 0xcf, 0xf4, 0x7c,
- 0xdd, 0x1a, 0x10, 0xb4, 0x03, 0x61, 0xb4, 0x97, 0x07, 0x72, 0x35, 0x43, 0xa0, 0x44, 0x5b, 0x57,
- 0x03, 0x74, 0xaa, 0x1c, 0x3b, 0x37, 0xce, 0x28, 0xc7, 0xc7, 0x69, 0x35, 0x40, 0xc7, 0xca, 0xa9,
- 0xff, 0xae, 0x08, 0x25, 0xfe, 0x16, 0x29, 0x35, 0xd8, 0x9b, 0x50, 0x89, 0x22, 0xd1, 0x22, 0xeb,
- 0x8c, 0x1b, 0x84, 0x9e, 0x6f, 0x41, 0x95, 0x2e, 0xda, 0xc4, 0xe2, 0x07, 0xaa, 0x05, 0xee, 0x64,
- 0x70, 0x10, 0x3b, 0x50, 0xfd, 0x10, 0x14, 0x41, 0x20, 0x16, 0x07, 0xa1, 0xa9, 0x15, 0xdc, 0xe0,
- 0xf0, 0x56, 0x00, 0x8e, 0xdd, 0x68, 0x9e, 0x4f, 0xdc, 0x68, 0xfe, 0x28, 0x73, 0x17, 0x29, 0x8e,
- 0x1d, 0x53, 0x3b, 0xc5, 0x5f, 0xcd, 0xde, 0xcc, 0x2e, 0xbc, 0x49, 0xbc, 0x78, 0xc6, 0x96, 0xb6,
- 0x0f, 0x6b, 0x62, 0x86, 0x24, 0xfb, 0x98, 0xdb, 0xc6, 0x9b, 0x31, 0x8f, 0x3f, 0x35, 0xb8, 0x78,
- 0xc5, 0xc8, 0x1a, 0xf2, 0xc7, 0xec, 0xe6, 0xc1, 0x90, 0x18, 0xc4, 0xe5, 0x4f, 0x73, 0x2a, 0x49,
- 0xeb, 0xbe, 0x2b, 0xa3, 0x71, 0x9c, 0xfa, 0x2d, 0xdd, 0x28, 0x4e, 0x06, 0x10, 0xaa, 0xd7, 0x0d,
- 0x20, 0xa8, 0x36, 0xd4, 0x63, 0xf2, 0x5d, 0x12, 0x72, 0x8a, 0xbf, 0x6a, 0xc9, 0xa7, 0x5e, 0xb5,
- 0xbc, 0x0f, 0x8b, 0x7c, 0x7f, 0xae, 0xe9, 0x9e, 0x16, 0x6e, 0x85, 0xea, 0xb8, 0xc6, 0xa1, 0x2d,
- 0x8f, 0xb9, 0x84, 0x7f, 0x99, 0x83, 0x0a, 0xbb, 0xae, 0xdf, 0xb1, 0x86, 0xf6, 0x0f, 0xf2, 0x52,
- 0xe0, 0x2e, 0x34, 0xac, 0xe9, 0x44, 0x93, 0x5e, 0x69, 0x88, 0xbb, 0x18, 0x8b, 0xd6, 0x74, 0x22,
- 0xbf, 0x72, 0xb9, 0x01, 0x65, 0x4b, 0x84, 0x92, 0x83, 0xab, 0x3f, 0x16, 0x8f, 0x22, 0xa3, 0xf7,
- 0xa0, 0x46, 0x51, 0xe1, 0x3d, 0x2c, 0x7e, 0xd9, 0xa2, 0x6a, 0x4d, 0x27, 0x2d, 0x01, 0x52, 0x7f,
- 0xca, 0xde, 0x1c, 0x62, 0xf3, 0x84, 0x36, 0x24, 0xb0, 0x6d, 0xc1, 0x05, 0xf7, 0xd4, 0x93, 0xeb,
- 0xb0, 0xc9, 0xfc, 0x82, 0xbb, 0xfa, 0x98, 0xe5, 0x28, 0x0c, 0x4b, 0x0b, 0x83, 0x77, 0xdd, 0xe2,
- 0x5b, 0x7f, 0x54, 0x80, 0xd2, 0x53, 0xde, 0xdc, 0x1a, 0x94, 0x71, 0xfb, 0xb8, 0x8d, 0x5f, 0xb4,
- 0xf7, 0x94, 0x39, 0x04, 0x50, 0xec, 0xf4, 0xce, 0x3e, 0x53, 0x5e, 0xbf, 0x2a, 0x8a, 0xff, 0x3b,
- 0xca, 0xeb, 0x57, 0x65, 0x54, 0x87, 0x05, 0x0a, 0xd7, 0x0e, 0x77, 0x95, 0xdf, 0xbc, 0x2a, 0x8a,
- 0xcf, 0x1d, 0xfe, 0x59, 0x46, 0x0d, 0xa8, 0x70, 0x6c, 0xef, 0xe0, 0x58, 0xf9, 0xe3, 0x57, 0x45,
- 0x01, 0xd8, 0x09, 0x00, 0x65, 0xb4, 0x08, 0x65, 0x46, 0xf1, 0xa2, 0x77, 0xa4, 0xbc, 0x7a, 0x5d,
- 0x14, 0xdf, 0x3b, 0xe2, 0xbb, 0x8c, 0x96, 0xa0, 0x1a, 0xe0, 0x29, 0xd3, 0xd7, 0xaf, 0x8b, 0x02,
- 0xb4, 0x13, 0x81, 0xca, 0x54, 0xa2, 0x17, 0x94, 0xe3, 0x7f, 0x78, 0x65, 0xd0, 0xff, 0x6d, 0x5a,
- 0xfa, 0x2f, 0x5f, 0x19, 0xa8, 0x02, 0x05, 0xdc, 0xdf, 0x55, 0xfe, 0xf8, 0x75, 0x11, 0x29, 0x00,
- 0x8c, 0x51, 0xfb, 0x68, 0xb7, 0xd5, 0x53, 0xfe, 0xfe, 0xab, 0x00, 0xb2, 0x13, 0x42, 0xca, 0x68,
- 0x05, 0x16, 0x9f, 0x1e, 0x74, 0x7f, 0xa1, 0x1d, 0xf7, 0xda, 0xbb, 0x1a, 0x6b, 0xee, 0x9f, 0xbc,
- 0x2e, 0xa6, 0xa0, 0x3b, 0xca, 0x9f, 0xbc, 0x2e, 0xa3, 0x26, 0xa0, 0x38, 0x2d, 0x13, 0xf9, 0xb7,
- 0xaf, 0x8b, 0x29, 0xcc, 0x8e, 0xc0, 0x94, 0xd1, 0x1a, 0x28, 0x11, 0xe6, 0xe0, 0xa1, 0x80, 0x1b,
- 0x68, 0x11, 0x4a, 0xdd, 0x5e, 0xeb, 0xeb, 0xe7, 0x6d, 0xe5, 0x7f, 0xbc, 0xfe, 0xf3, 0x57, 0xc5,
- 0xad, 0x5d, 0x28, 0x07, 0x7a, 0x8a, 0x00, 0x4a, 0xfb, 0x07, 0xdd, 0x27, 0xad, 0x03, 0x65, 0x2e,
- 0xca, 0x19, 0xc5, 0x6e, 0xd1, 0xb5, 0xf6, 0xfe, 0x40, 0xeb, 0x1c, 0x29, 0x79, 0x54, 0x85, 0x05,
- 0xfa, 0xbf, 0xfb, 0xbc, 0xcf, 0x93, 0x49, 0xbd, 0xc0, 0x4f, 0x95, 0xe2, 0xd6, 0x41, 0xec, 0xb9,
- 0x0e, 0x37, 0x56, 0x48, 0x81, 0xda, 0x41, 0xb7, 0xfb, 0xd5, 0xf3, 0x9e, 0xd6, 0x7e, 0xd9, 0xda,
- 0xed, 0x2b, 0x73, 0x68, 0x09, 0xea, 0x02, 0x72, 0xd0, 0x3d, 0xda, 0x6f, 0x63, 0x25, 0x87, 0x10,
- 0x2c, 0x0a, 0xd0, 0xf1, 0xb3, 0x2e, 0xee, 0xb7, 0xb1, 0x92, 0xdf, 0xfa, 0x0d, 0x7b, 0xc9, 0x15,
- 0xc6, 0x2b, 0xd8, 0x2d, 0x3e, 0xdc, 0x7e, 0xda, 0x79, 0xa9, 0xcc, 0x51, 0x4d, 0x39, 0x6a, 0x77,
- 0xf6, 0x9f, 0x3d, 0xe9, 0xd2, 0xd2, 0x0b, 0x50, 0xe8, 0xb7, 0xf6, 0x85, 0x58, 0xc7, 0x5a, 0xaf,
- 0xd5, 0x7f, 0xa6, 0x14, 0x50, 0x1d, 0x2a, 0xbb, 0xdd, 0xc3, 0xc3, 0xe7, 0x47, 0x9d, 0xfe, 0x37,
- 0x0a, 0x1d, 0xc3, 0x7a, 0xfb, 0x65, 0x5f, 0x8b, 0x40, 0xf3, 0x74, 0x1b, 0x77, 0xd0, 0xc2, 0xfb,
- 0x6d, 0x09, 0x58, 0xe2, 0xac, 0x5f, 0xf6, 0xb5, 0x67, 0xdd, 0x9e, 0xb2, 0xb0, 0xf5, 0x21, 0x54,
- 0xc2, 0x30, 0x05, 0xbb, 0x58, 0x7c, 0xf4, 0x8d, 0x7c, 0xc3, 0x18, 0xa0, 0xd4, 0x39, 0x7a, 0xd1,
- 0xc6, 0x7d, 0x25, 0xbf, 0xb5, 0x05, 0x4a, 0x32, 0x08, 0x81, 0x4a, 0x90, 0x6f, 0x7f, 0xad, 0xcc,
- 0xd1, 0xdf, 0xfd, 0xb6, 0x92, 0xa3, 0xbf, 0x07, 0x6d, 0x25, 0xbf, 0x75, 0x5f, 0x5c, 0xe6, 0x11,
- 0x7b, 0x85, 0xe8, 0xee, 0x32, 0xed, 0xe4, 0xdd, 0xdd, 0x76, 0xaf, 0xcf, 0x99, 0xe3, 0xf6, 0x1f,
- 0xb4, 0x77, 0x29, 0xf3, 0xe7, 0xb0, 0x9c, 0xb1, 0xd7, 0xa3, 0x8d, 0x0a, 0x65, 0xd7, 0x5a, 0x7b,
- 0x74, 0xda, 0xac, 0x80, 0x12, 0x81, 0x70, 0xfb, 0xb0, 0xfb, 0x82, 0x56, 0xbc, 0x0a, 0x4b, 0x32,
- 0x54, 0x5c, 0x8a, 0xde, 0xfa, 0x18, 0xea, 0xb1, 0x0d, 0x1e, 0xed, 0xc1, 0xc3, 0xf6, 0x9e, 0x76,
- 0xd8, 0xa5, 0xac, 0x1a, 0x50, 0xa5, 0x1f, 0x01, 0x79, 0x6e, 0xeb, 0x23, 0x80, 0xc8, 0x8b, 0x0c,
- 0xd3, 0xf5, 0xd1, 0x4e, 0x38, 0xec, 0x75, 0xb1, 0x90, 0xb9, 0xfd, 0x92, 0xfd, 0xcf, 0x3f, 0xfc,
- 0x9f, 0xb7, 0xa1, 0xbc, 0x4f, 0xa7, 0x7d, 0xcb, 0x31, 0xd1, 0x01, 0x54, 0xa5, 0x87, 0xc5, 0xe8,
- 0x9d, 0x98, 0x6f, 0x9b, 0x78, 0xaf, 0xbc, 0xf1, 0xee, 0x0c, 0xac, 0x78, 0x82, 0x34, 0x87, 0x3a,
- 0x00, 0xd1, 0xd3, 0x63, 0xb4, 0x29, 0x93, 0x27, 0x5e, 0x29, 0x6f, 0xbc, 0x93, 0x8d, 0x0c, 0x59,
- 0x3d, 0x85, 0x4a, 0xf8, 0xe0, 0x1a, 0x49, 0x01, 0xa5, 0xe4, 0xcb, 0xec, 0x8d, 0xcd, 0x4c, 0x5c,
- 0xc8, 0xe7, 0x00, 0xaa, 0x52, 0xb2, 0x4b, 0xb9, 0x81, 0xe9, 0xec, 0x99, 0x72, 0x03, 0xb3, 0x32,
- 0x64, 0xce, 0xa1, 0xe7, 0xb0, 0x18, 0x4f, 0x73, 0x89, 0x6e, 0xc9, 0x6b, 0x7a, 0x46, 0xf6, 0xcc,
- 0x8d, 0xdb, 0xb3, 0x09, 0x64, 0xb6, 0xf1, 0xec, 0x95, 0x32, 0xdb, 0xcc, 0xec, 0x99, 0x32, 0xdb,
- 0xec, 0xc4, 0x97, 0xbc, 0xed, 0x52, 0x2a, 0x59, 0xb9, 0xed, 0xe9, 0xec, 0xb5, 0x72, 0xdb, 0x33,
- 0xf2, 0xcf, 0xaa, 0x73, 0x08, 0x43, 0x3d, 0x96, 0xe7, 0x11, 0xdd, 0x8c, 0x2d, 0xa6, 0x69, 0x8e,
- 0xb7, 0x66, 0xe2, 0x43, 0x9e, 0x7f, 0x13, 0x96, 0x52, 0xf9, 0x23, 0x91, 0x7a, 0x75, 0x1e, 0xcb,
- 0x8d, 0x1f, 0x5d, 0x4a, 0x13, 0xf2, 0xff, 0x1b, 0xa0, 0x24, 0xf3, 0x44, 0x22, 0xe9, 0x66, 0xd2,
- 0x8c, 0xf4, 0x94, 0x1b, 0xea, 0x65, 0x24, 0xf2, 0xa8, 0xc5, 0xb3, 0x46, 0xca, 0xa3, 0x96, 0x99,
- 0x82, 0x52, 0x1e, 0xb5, 0x19, 0x09, 0x27, 0xe7, 0xd0, 0x4b, 0x68, 0x24, 0x12, 0x43, 0x22, 0x59,
- 0x87, 0x32, 0xb3, 0x51, 0x6e, 0xbc, 0x77, 0x09, 0x45, 0xc8, 0xf9, 0x31, 0x94, 0xb8, 0x4b, 0x80,
- 0xd6, 0x63, 0x83, 0x1d, 0xbd, 0x5a, 0xdc, 0x68, 0xa6, 0x11, 0x61, 0xf1, 0xcf, 0x61, 0x41, 0x3c,
- 0xc3, 0x44, 0x71, 0x32, 0xe9, 0x65, 0xe6, 0x46, 0xe2, 0xc5, 0xae, 0x3a, 0xf7, 0x49, 0x8e, 0xea,
- 0xa1, 0xf4, 0x64, 0x51, 0xd6, 0xc3, 0xf4, 0xbb, 0x49, 0x59, 0x0f, 0xb3, 0xde, 0x39, 0xce, 0xa1,
- 0x9f, 0xc3, 0x82, 0x88, 0xf1, 0xa3, 0xf4, 0x39, 0x41, 0xc0, 0xe5, 0x46, 0x06, 0x46, 0x36, 0x53,
- 0x51, 0x42, 0x5d, 0xd9, 0x4c, 0xa5, 0x52, 0x02, 0xcb, 0x66, 0x2a, 0x23, 0x07, 0xef, 0x1c, 0xda,
- 0x03, 0x88, 0xf2, 0x27, 0xca, 0xac, 0x52, 0x59, 0x15, 0x37, 0xb2, 0x1f, 0xfb, 0xb2, 0x0e, 0x7a,
- 0x14, 0xe6, 0x8c, 0x8c, 0xde, 0x8d, 0x48, 0xbe, 0x59, 0x98, 0xd1, 0x79, 0x23, 0x91, 0x25, 0x97,
- 0x15, 0x7e, 0x0a, 0x95, 0x30, 0x89, 0xa7, 0x6c, 0x29, 0x93, 0x29, 0x44, 0x65, 0x4b, 0x99, 0xce,
- 0xfa, 0xc9, 0x7b, 0x25, 0x4c, 0xf1, 0x19, 0xeb, 0x95, 0x64, 0x36, 0xd0, 0x58, 0xaf, 0xa4, 0xb3,
- 0x82, 0xce, 0xa1, 0x67, 0x50, 0x09, 0xd3, 0x72, 0xca, 0x22, 0x25, 0x93, 0x85, 0xca, 0x22, 0xa5,
- 0xf3, 0x78, 0xce, 0xdd, 0xcb, 0x51, 0x95, 0xe5, 0x89, 0x30, 0xd1, 0xfa, 0x8c, 0x3c, 0x9c, 0x1b,
- 0xcd, 0x34, 0x42, 0x5e, 0x45, 0xc2, 0x9c, 0x97, 0xb2, 0x20, 0xc9, 0x54, 0x9a, 0x1b, 0x9b, 0x99,
- 0x38, 0x59, 0xe7, 0x44, 0x96, 0xbf, 0x84, 0xea, 0x4b, 0xe9, 0xe1, 0x64, 0x9d, 0x4b, 0xa4, 0x04,
- 0x0c, 0xb5, 0x36, 0xc9, 0x21, 0x9e, 0xfd, 0x2f, 0xa1, 0xb5, 0x09, 0x0e, 0xa1, 0xd6, 0x32, 0x26,
- 0x29, 0x81, 0x65, 0x3e, 0xef, 0x64, 0x23, 0x65, 0x56, 0x51, 0x02, 0x3e, 0x94, 0xd2, 0x8b, 0x19,
- 0xac, 0x32, 0x72, 0xf6, 0xb1, 0x35, 0x46, 0xca, 0xc2, 0x87, 0xd2, 0x9a, 0x21, 0x33, 0x7b, 0x77,
- 0x06, 0x56, 0x1e, 0xaf, 0x30, 0x87, 0x9e, 0x3c, 0x5e, 0xc9, 0x54, 0x7c, 0xf2, 0x78, 0xa5, 0x93,
- 0xee, 0xb1, 0xb5, 0x2a, 0x96, 0x8f, 0x4f, 0x5e, 0xab, 0xb2, 0x52, 0xfb, 0xc9, 0x6b, 0x55, 0x76,
- 0x22, 0xbf, 0xd0, 0x7a, 0xda, 0x7a, 0xd2, 0x7a, 0x86, 0x81, 0xa7, 0xa4, 0xf5, 0x8c, 0x02, 0x4d,
- 0xbc, 0xa3, 0xa4, 0xdc, 0x79, 0x28, 0xd5, 0xaf, 0x72, 0x7e, 0x40, 0xb9, 0xa3, 0xb2, 0x12, 0xee,
- 0xcd, 0x89, 0x79, 0xf1, 0xc2, 0x1d, 0x26, 0xe6, 0x45, 0x94, 0xf7, 0x2e, 0x31, 0x2f, 0xe4, 0xdc,
- 0x76, 0xd2, 0xbc, 0xa0, 0x1c, 0x52, 0xf3, 0x42, 0x62, 0xb2, 0x99, 0x89, 0x4b, 0xf4, 0x49, 0x42,
- 0x8c, 0x58, 0x2e, 0xc0, 0x44, 0x9f, 0xc4, 0x8b, 0x63, 0x16, 0xb9, 0x93, 0x4e, 0x48, 0x6f, 0xc6,
- 0x88, 0x53, 0x59, 0xe1, 0xe4, 0x61, 0xca, 0x4c, 0xa3, 0xc7, 0x79, 0xc6, 0xd2, 0xdb, 0xc9, 0x3c,
- 0xb3, 0xf2, 0xe6, 0xc9, 0x3c, 0xb3, 0xf3, 0xe2, 0x31, 0x37, 0x22, 0x99, 0xc4, 0x4e, 0x76, 0x23,
- 0x66, 0x64, 0xcd, 0x93, 0xdd, 0x88, 0x99, 0x39, 0xf0, 0x98, 0x0f, 0x94, 0xca, 0x60, 0x27, 0xfb,
- 0x40, 0xb3, 0x52, 0xe4, 0xc9, 0x3e, 0xd0, 0xec, 0x14, 0x78, 0x73, 0xa8, 0x0b, 0x35, 0x39, 0xdb,
- 0x1d, 0x8a, 0x3b, 0x7a, 0xc9, 0xc4, 0x6e, 0x1b, 0x37, 0x67, 0xa1, 0x65, 0x86, 0x72, 0x9e, 0x3a,
- 0x14, 0xf7, 0x9a, 0x2f, 0x63, 0x98, 0x99, 0xde, 0x8e, 0x7b, 0x3c, 0xf1, 0x0c, 0x74, 0x28, 0xe5,
- 0x35, 0xa7, 0xd8, 0xbe, 0x77, 0x09, 0x85, 0x3c, 0x70, 0xc9, 0x94, 0x73, 0xf2, 0xc0, 0xcd, 0x48,
- 0x6e, 0xb7, 0xa1, 0x5e, 0x46, 0x92, 0xd8, 0xa2, 0x88, 0xd3, 0x83, 0xf8, 0x16, 0x25, 0x96, 0x40,
- 0x2d, 0xb1, 0x45, 0x49, 0x64, 0x2b, 0x63, 0x7c, 0xc2, 0x04, 0x5d, 0x32, 0x9f, 0x64, 0xe6, 0x3a,
- 0x99, 0x4f, 0x3a, 0xb7, 0x1c, 0x1b, 0x17, 0x39, 0xb5, 0x96, 0x3c, 0x2e, 0x19, 0x49, 0xe7, 0x36,
- 0x6e, 0xce, 0x42, 0xc7, 0x3d, 0x7e, 0x29, 0x57, 0x56, 0xdc, 0xe3, 0x4f, 0x67, 0x8a, 0x8b, 0x7b,
- 0xfc, 0x59, 0xa9, 0xd9, 0xe6, 0x90, 0xc1, 0x52, 0x32, 0xa6, 0x8e, 0x47, 0xde, 0xcf, 0xe8, 0xa2,
- 0x54, 0xe2, 0xaf, 0x8d, 0x3b, 0x57, 0x50, 0xc9, 0xb5, 0x64, 0xe4, 0x3c, 0x93, 0x6b, 0x99, 0x9d,
- 0x6c, 0x4d, 0xae, 0xe5, 0xb2, 0xc4, 0x69, 0x73, 0x68, 0x12, 0x24, 0x66, 0x4c, 0x55, 0x74, 0x37,
- 0xbb, 0x6f, 0xd3, 0x75, 0xdd, 0xbb, 0x9a, 0x30, 0xac, 0xce, 0x09, 0xb3, 0x31, 0xa6, 0x4f, 0x97,
- 0x66, 0x74, 0x7c, 0xba, 0xc2, 0x0f, 0xaf, 0x41, 0x29, 0xfb, 0x09, 0x51, 0x0c, 0x11, 0x6d, 0x26,
- 0xf7, 0x06, 0x52, 0x5c, 0x72, 0xe3, 0x9d, 0x6c, 0x64, 0xc0, 0xea, 0xa4, 0xc4, 0x32, 0x03, 0x7d,
- 0xfa, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x09, 0xe0, 0x1f, 0x89, 0x6d, 0x65, 0x00, 0x00,
+ // 8119 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x4d, 0x6f, 0x23, 0x49,
+ 0x96, 0x98, 0xf8, 0x21, 0x8a, 0x7c, 0x24, 0xc5, 0x54, 0xe8, 0x8b, 0x25, 0x75, 0x7d, 0x65, 0x7f,
+ 0x54, 0x75, 0x75, 0xb7, 0xba, 0xab, 0xba, 0x47, 0xdd, 0xdb, 0x3d, 0x35, 0x3b, 0x2c, 0x89, 0xa5,
+ 0xe2, 0xb6, 0x24, 0xb2, 0x53, 0xac, 0x9a, 0xea, 0xf1, 0x8e, 0xd3, 0x29, 0x66, 0x90, 0x4a, 0x37,
+ 0x99, 0x99, 0x93, 0x99, 0x54, 0x4b, 0x30, 0x60, 0x57, 0xcd, 0xee, 0x8e, 0x0d, 0x18, 0x7b, 0xb1,
+ 0x2f, 0x06, 0x6c, 0xc3, 0x07, 0xdf, 0x16, 0xf6, 0xc1, 0xc0, 0x02, 0x06, 0x7c, 0xb1, 0x0d, 0x78,
+ 0x17, 0x06, 0x16, 0xf0, 0xd1, 0x17, 0x03, 0xf6, 0x0f, 0xf0, 0xc9, 0x17, 0xc3, 0x30, 0x7c, 0x30,
+ 0xe2, 0x23, 0x23, 0x23, 0x3f, 0x28, 0xa9, 0x6a, 0xab, 0x77, 0x76, 0x81, 0x3d, 0x89, 0xf9, 0xde,
+ 0x8b, 0x17, 0x2f, 0x22, 0x5e, 0xc4, 0x7b, 0x2f, 0x3e, 0x9e, 0xa0, 0x3a, 0x72, 0x8e, 0x47, 0xee,
+ 0x96, 0xeb, 0x39, 0x81, 0x83, 0xca, 0xf4, 0xc3, 0x70, 0xad, 0x8d, 0x6b, 0x23, 0xc7, 0x19, 0x8d,
+ 0xf1, 0xc7, 0x14, 0x7e, 0x3c, 0x1d, 0x7e, 0x6c, 0xd8, 0xe7, 0x8c, 0x48, 0xfd, 0x39, 0xa0, 0x3d,
+ 0x1c, 0x1c, 0x62, 0x6b, 0x74, 0x72, 0xec, 0x78, 0x1a, 0xfe, 0xe5, 0x14, 0xfb, 0x01, 0xba, 0x07,
+ 0x0a, 0xb6, 0x8d, 0xe3, 0x31, 0x6e, 0x99, 0xa7, 0xd8, 0x0b, 0x2c, 0x1f, 0x9b, 0xcd, 0xdc, 0xad,
+ 0xdc, 0xdd, 0xb2, 0x96, 0x82, 0xa3, 0x26, 0x2c, 0x18, 0xa6, 0xe9, 0x61, 0xdf, 0x6f, 0xe6, 0x6f,
+ 0xe5, 0xee, 0x56, 0xb4, 0xf0, 0x53, 0xfd, 0x0a, 0x96, 0x63, 0xbc, 0x7d, 0xd7, 0xb1, 0x7d, 0x8c,
+ 0xde, 0x81, 0x79, 0x17, 0x63, 0xcf, 0x6f, 0xe6, 0x6e, 0x15, 0xee, 0x56, 0x1f, 0x2c, 0x6e, 0x85,
+ 0x72, 0x6e, 0xf5, 0x30, 0xf6, 0x34, 0x86, 0x54, 0x5f, 0xe6, 0xa0, 0xd2, 0xf2, 0x46, 0xd3, 0x09,
+ 0xb6, 0x03, 0x1f, 0x6d, 0x41, 0xd9, 0xc3, 0xbe, 0x33, 0xf5, 0x06, 0x98, 0x0a, 0xb2, 0xf8, 0x00,
+ 0x45, 0xc5, 0x34, 0x8e, 0xd1, 0x04, 0x0d, 0x5a, 0x83, 0xd2, 0xd0, 0x98, 0x58, 0xe3, 0x73, 0x2a,
+ 0x53, 0x5d, 0xe3, 0x5f, 0x08, 0x41, 0xd1, 0x36, 0x26, 0xb8, 0x59, 0xa0, 0x92, 0xd2, 0xdf, 0xa4,
+ 0x01, 0x83, 0xa9, 0xe7, 0x61, 0x3b, 0x68, 0x16, 0x69, 0x1b, 0xc3, 0x4f, 0xf5, 0xef, 0xc0, 0x62,
+ 0xcb, 0x34, 0x7b, 0x46, 0x70, 0x12, 0x76, 0xcc, 0xab, 0xca, 0xb1, 0x0a, 0xa5, 0x53, 0x6f, 0xa8,
+ 0x5b, 0x26, 0xef, 0x9b, 0xf9, 0x53, 0x6f, 0xd8, 0x31, 0x91, 0x0a, 0x45, 0xd7, 0x08, 0x4e, 0xa8,
+ 0x18, 0xf1, 0x1e, 0x20, 0x75, 0x51, 0x9c, 0xfa, 0x2e, 0x34, 0x44, 0xe5, 0xbc, 0xe7, 0x10, 0x14,
+ 0xa7, 0x53, 0x8b, 0x0d, 0x45, 0x4d, 0xa3, 0xbf, 0xd5, 0x3f, 0xca, 0xc1, 0xd2, 0x2e, 0x1e, 0xe3,
+ 0x00, 0xff, 0x00, 0x72, 0x46, 0xdd, 0x58, 0x88, 0x75, 0x63, 0x28, 0x7f, 0x71, 0xb6, 0xfc, 0x42,
+ 0xd8, 0x79, 0x49, 0xd8, 0x15, 0x40, 0xb2, 0xac, 0xac, 0x59, 0xea, 0x17, 0x80, 0x5a, 0xa6, 0x99,
+ 0xd4, 0x41, 0x52, 0x07, 0xc6, 0x1e, 0x15, 0x3f, 0xad, 0x25, 0x14, 0xa7, 0xae, 0xc2, 0x72, 0xac,
+ 0x24, 0x67, 0xf8, 0x15, 0xac, 0xb2, 0x6a, 0x5e, 0x87, 0x67, 0x13, 0xd6, 0x92, 0x85, 0x39, 0x5b,
+ 0x13, 0x56, 0x9f, 0xba, 0xa6, 0xf1, 0x5a, 0x6c, 0xd1, 0x1d, 0x50, 0x4c, 0x47, 0xf7, 0x9d, 0x61,
+ 0xa0, 0x7b, 0xd8, 0xc7, 0x81, 0x6e, 0xd9, 0xb4, 0xaf, 0xcb, 0x5a, 0xdd, 0x74, 0x8e, 0x9c, 0x61,
+ 0xa0, 0x11, 0x68, 0xc7, 0x56, 0xf7, 0x60, 0x2d, 0x59, 0x0b, 0x1f, 0xfe, 0x8f, 0x60, 0xd9, 0xc6,
+ 0xd8, 0xf4, 0x13, 0x5c, 0xf8, 0xc4, 0xa4, 0x28, 0x99, 0x51, 0x87, 0x76, 0x0e, 0x11, 0x61, 0xcf,
+ 0x73, 0xa6, 0x6e, 0x28, 0xec, 0x03, 0x00, 0x22, 0x90, 0x3e, 0x22, 0x40, 0x2e, 0xf2, 0x72, 0x5c,
+ 0x64, 0x46, 0x5f, 0x71, 0xc3, 0x9f, 0xea, 0x1a, 0xac, 0xc4, 0x59, 0xf1, 0x1e, 0xd9, 0x0f, 0xfb,
+ 0xea, 0x8d, 0xd4, 0x72, 0x0d, 0xd6, 0x53, 0xdc, 0x78, 0x45, 0xd3, 0xb0, 0x53, 0xde, 0x44, 0x45,
+ 0x57, 0x1f, 0x8b, 0x27, 0xb0, 0x9e, 0xaa, 0xf6, 0xf5, 0x06, 0xc3, 0x80, 0x6b, 0x2d, 0xd3, 0xdc,
+ 0x3d, 0xb7, 0x8d, 0x89, 0x35, 0x48, 0xea, 0xcf, 0x2e, 0x28, 0x26, 0xc3, 0xe8, 0x36, 0x47, 0xf1,
+ 0x96, 0x5c, 0x8b, 0x5a, 0x92, 0x2c, 0xdb, 0x30, 0xe3, 0x00, 0xf5, 0x2d, 0xd8, 0xc8, 0xaa, 0x82,
+ 0xf7, 0xe0, 0x33, 0x58, 0xa1, 0xb2, 0x24, 0xeb, 0x96, 0x96, 0xef, 0x5c, 0x6c, 0xf9, 0x46, 0xef,
+ 0x40, 0x7d, 0xe0, 0x4c, 0x26, 0x53, 0xdb, 0x1a, 0x18, 0x81, 0xe5, 0xd8, 0x7c, 0x69, 0x88, 0x03,
+ 0xd5, 0x75, 0x58, 0x4d, 0xf0, 0xe5, 0x15, 0xfe, 0xbb, 0x1c, 0x34, 0x45, 0x0f, 0x5c, 0xbd, 0xd6,
+ 0x23, 0xa8, 0x98, 0x96, 0x87, 0x07, 0xa2, 0xc6, 0xc5, 0x07, 0x3f, 0x8a, 0x3a, 0x61, 0x16, 0xc3,
+ 0x08, 0xb1, 0x1b, 0x16, 0xd6, 0x22, 0x3e, 0xea, 0xc7, 0x80, 0xd2, 0x04, 0xa8, 0x04, 0xf9, 0xce,
+ 0xa1, 0x32, 0x87, 0x16, 0xa0, 0xd0, 0x7d, 0xda, 0x57, 0x72, 0xa8, 0x0c, 0xc5, 0x47, 0xdd, 0xfe,
+ 0x13, 0x25, 0xaf, 0x6e, 0xc2, 0xb5, 0x8c, 0xaa, 0x78, 0xcb, 0xbe, 0x85, 0xf5, 0xa3, 0x93, 0x69,
+ 0x60, 0x3a, 0xdf, 0xdb, 0x6f, 0xba, 0x37, 0x37, 0xa0, 0x99, 0x66, 0xcd, 0xab, 0xbd, 0x0f, 0xab,
+ 0x6d, 0x6a, 0x7c, 0xaf, 0x5c, 0x29, 0x59, 0xcb, 0x92, 0x45, 0x38, 0xb3, 0xe7, 0xb0, 0xb6, 0x6b,
+ 0xf9, 0xaf, 0xc4, 0xed, 0x8a, 0x4d, 0x20, 0xb3, 0x38, 0xc9, 0x99, 0x57, 0x3a, 0x02, 0x85, 0x89,
+ 0x73, 0xe0, 0x05, 0x61, 0x75, 0x9b, 0x50, 0x31, 0xa7, 0x13, 0x57, 0x0f, 0xce, 0x5d, 0x66, 0xaa,
+ 0xe6, 0xb5, 0x32, 0x01, 0xf4, 0xcf, 0x5d, 0x8c, 0x36, 0xa0, 0x3c, 0xb4, 0xc6, 0x98, 0x9a, 0x6c,
+ 0x56, 0x99, 0xf8, 0x26, 0x38, 0xcb, 0x0e, 0xb0, 0x77, 0x6a, 0x8c, 0xa9, 0x75, 0x2a, 0x6a, 0xe2,
+ 0x5b, 0x5d, 0x86, 0x25, 0xa9, 0x22, 0x5e, 0xfb, 0x32, 0x2c, 0x71, 0xc1, 0xa2, 0xea, 0xa9, 0x45,
+ 0x92, 0x80, 0x9c, 0xf4, 0xef, 0x81, 0xd2, 0xb1, 0xff, 0x36, 0x1e, 0x04, 0x92, 0xa0, 0x6f, 0xc8,
+ 0xa4, 0x12, 0xef, 0xc7, 0x08, 0x4e, 0xfc, 0x66, 0x21, 0xe5, 0xfd, 0x10, 0x9b, 0xc8, 0x90, 0x44,
+ 0x56, 0x49, 0x00, 0x2e, 0xd5, 0x7f, 0xc8, 0x41, 0xbd, 0x65, 0x9a, 0x8f, 0x26, 0xee, 0xe5, 0x63,
+ 0x85, 0xa0, 0xe8, 0x3a, 0x5e, 0xc0, 0xdd, 0x1f, 0xfa, 0x1b, 0xfd, 0x18, 0x8a, 0xb4, 0x97, 0x0b,
+ 0x54, 0xfa, 0xbb, 0x51, 0xcd, 0x31, 0xa6, 0x5b, 0x07, 0x8e, 0x6d, 0x05, 0x8e, 0x67, 0xd9, 0xa3,
+ 0x9e, 0x33, 0xb6, 0x06, 0xe7, 0x1a, 0x2d, 0xa5, 0xee, 0x80, 0x92, 0xc4, 0x90, 0x99, 0xd3, 0xd3,
+ 0xda, 0xca, 0x1c, 0x99, 0x39, 0xbd, 0xee, 0x51, 0x6c, 0x0e, 0xa1, 0x0a, 0xcc, 0xef, 0x77, 0x77,
+ 0x5a, 0xfb, 0x4a, 0x81, 0xd0, 0xb5, 0xf6, 0xf7, 0x95, 0xa2, 0xaa, 0x50, 0x8f, 0x8a, 0x56, 0xc6,
+ 0x1b, 0xf5, 0x53, 0x50, 0xd8, 0xa2, 0xff, 0xba, 0xcd, 0xa2, 0xe3, 0x1a, 0x71, 0xe0, 0x6c, 0xfb,
+ 0xb0, 0xc4, 0xa5, 0xd5, 0xac, 0xe3, 0x90, 0xef, 0xbb, 0x30, 0x1f, 0x90, 0xa1, 0xe6, 0x8b, 0x6b,
+ 0x23, 0xea, 0x81, 0x3e, 0x01, 0x6b, 0x0c, 0x2b, 0x3b, 0x84, 0xf9, 0xb8, 0x43, 0xd8, 0x86, 0xb2,
+ 0xd6, 0xfb, 0xba, 0xb3, 0xe3, 0xd8, 0xc3, 0x0b, 0x84, 0xbc, 0x09, 0x55, 0x0f, 0x4f, 0x9c, 0x00,
+ 0xeb, 0x42, 0xd6, 0x8a, 0x06, 0x0c, 0xd4, 0x23, 0x12, 0xff, 0xb3, 0x22, 0x54, 0x08, 0x9f, 0xa3,
+ 0xc0, 0x08, 0xa8, 0xaf, 0x3a, 0x75, 0x03, 0x6b, 0xc2, 0xc4, 0x2a, 0x68, 0xfc, 0x8b, 0x28, 0x38,
+ 0x59, 0x07, 0x28, 0x26, 0x4f, 0x31, 0xe2, 0x1b, 0x2d, 0x42, 0x7e, 0xea, 0xd2, 0x81, 0x2c, 0x6b,
+ 0xf9, 0xa9, 0xcb, 0xaa, 0x1c, 0x38, 0x9e, 0xa9, 0x5b, 0xee, 0xe9, 0x67, 0xd4, 0x2f, 0xab, 0x93,
+ 0x2a, 0x09, 0xa8, 0xe3, 0x9e, 0x7e, 0x16, 0x27, 0xd8, 0xa6, 0x4e, 0x99, 0x4c, 0xb0, 0x4d, 0x08,
+ 0x5c, 0x0f, 0x0f, 0xad, 0x33, 0xc6, 0xa1, 0xc4, 0x08, 0x18, 0x28, 0xe4, 0x10, 0x11, 0x6c, 0x37,
+ 0x17, 0x12, 0x04, 0xdb, 0xa4, 0x1d, 0x3e, 0xf6, 0x2c, 0x63, 0xdc, 0x2c, 0x33, 0x67, 0x91, 0x7d,
+ 0xa1, 0xb7, 0xa1, 0xee, 0xe1, 0x01, 0xb6, 0x4e, 0x31, 0x97, 0xae, 0x42, 0x1b, 0x53, 0x0b, 0x81,
+ 0x94, 0x7b, 0x82, 0x68, 0xbb, 0x09, 0x29, 0xa2, 0x6d, 0x42, 0xc4, 0x78, 0xea, 0xb6, 0x13, 0x58,
+ 0xc3, 0xf3, 0x66, 0x95, 0x11, 0x31, 0xe0, 0x21, 0x85, 0x11, 0x39, 0x07, 0xc6, 0xe0, 0x04, 0x33,
+ 0x9b, 0xdc, 0xac, 0x51, 0x12, 0xa0, 0x20, 0xba, 0x9c, 0xa3, 0x77, 0x61, 0x51, 0x10, 0x50, 0x65,
+ 0x69, 0xd6, 0x29, 0x4d, 0x3d, 0xa4, 0x61, 0x06, 0xfe, 0x06, 0x54, 0xb1, 0x6d, 0xea, 0xce, 0x50,
+ 0x37, 0x8d, 0xc0, 0x68, 0x2e, 0x52, 0x9a, 0x0a, 0xb6, 0xcd, 0xee, 0x70, 0xd7, 0x08, 0x0c, 0xb4,
+ 0x02, 0xf3, 0xd8, 0xf3, 0x1c, 0xaf, 0xd9, 0xa0, 0x18, 0xf6, 0x81, 0x6e, 0x03, 0x97, 0x46, 0xff,
+ 0xe5, 0x14, 0x7b, 0xe7, 0x4d, 0x85, 0x22, 0xab, 0x0c, 0xf6, 0x0d, 0x01, 0xb1, 0xa1, 0x20, 0xee,
+ 0x02, 0xa3, 0x58, 0x62, 0x02, 0x52, 0x10, 0x25, 0x50, 0xbf, 0x85, 0xa2, 0xe6, 0x7e, 0x67, 0xa1,
+ 0xf7, 0xa0, 0x38, 0x70, 0xec, 0x21, 0xd7, 0x56, 0x79, 0xb5, 0xe1, 0x3a, 0xa8, 0x51, 0x3c, 0x7a,
+ 0x1f, 0xe6, 0x7d, 0xa2, 0x49, 0x54, 0x4b, 0x62, 0xde, 0x8f, 0x50, 0x32, 0x8d, 0x51, 0xa8, 0x77,
+ 0x61, 0x71, 0x0f, 0x07, 0x84, 0x7b, 0x38, 0x27, 0x22, 0x17, 0x3f, 0x27, 0xbb, 0xf8, 0xea, 0x57,
+ 0xd0, 0x10, 0x94, 0xbc, 0x47, 0xee, 0xc2, 0x82, 0x8f, 0xbd, 0xd3, 0xcc, 0xd0, 0x8d, 0x12, 0x86,
+ 0x68, 0xf5, 0xe7, 0x74, 0x9a, 0xcb, 0xd5, 0xbc, 0xda, 0x4a, 0xb5, 0x01, 0xe5, 0xb1, 0x35, 0xc4,
+ 0x54, 0xf5, 0x0b, 0x4c, 0xf5, 0xc3, 0x6f, 0x75, 0x89, 0xc6, 0x45, 0xb2, 0x60, 0x6a, 0x2b, 0x5c,
+ 0x01, 0x5e, 0xbb, 0xc6, 0x28, 0x32, 0x89, 0x31, 0xfe, 0x28, 0xb4, 0x23, 0x57, 0x62, 0x4c, 0x98,
+ 0xc8, 0xe4, 0x9c, 0xc9, 0x96, 0x30, 0x31, 0x57, 0xe3, 0xb2, 0x0a, 0xcb, 0x31, 0x7a, 0xce, 0xe6,
+ 0x43, 0x50, 0xa8, 0xfe, 0x5e, 0x8d, 0xc9, 0x32, 0x2c, 0x49, 0xd4, 0x9c, 0xc5, 0x27, 0xb0, 0x22,
+ 0xbc, 0x9a, 0xab, 0xb1, 0x59, 0x87, 0xd5, 0x44, 0x09, 0xce, 0xea, 0xcf, 0x72, 0x61, 0x5b, 0x7f,
+ 0x8e, 0x8f, 0x3d, 0x23, 0xe4, 0xa4, 0x40, 0x61, 0xea, 0x8d, 0x39, 0x17, 0xf2, 0x93, 0x6a, 0xbb,
+ 0x33, 0x0d, 0x30, 0x35, 0xf0, 0x7e, 0x33, 0x7f, 0xab, 0x40, 0x17, 0x43, 0x02, 0x22, 0x26, 0xde,
+ 0x27, 0x95, 0x13, 0x9d, 0x21, 0xfe, 0x04, 0x0b, 0x32, 0xc3, 0x4f, 0xf4, 0x19, 0xac, 0xd9, 0xf8,
+ 0x2c, 0x38, 0x71, 0x5c, 0x3d, 0xf0, 0xac, 0xd1, 0x08, 0x7b, 0x3a, 0xdb, 0x7d, 0xe0, 0x71, 0xfa,
+ 0x0a, 0xc7, 0xf6, 0x19, 0x92, 0x89, 0x83, 0x1e, 0xc0, 0x6a, 0xb2, 0x94, 0x89, 0xc7, 0xc6, 0x39,
+ 0x5f, 0xf3, 0x96, 0xe3, 0x85, 0x76, 0x09, 0x8a, 0x74, 0x79, 0xac, 0x31, 0xbc, 0x91, 0x0d, 0xa8,
+ 0xef, 0xe1, 0xe0, 0x99, 0x37, 0x0c, 0xbd, 0x85, 0x4f, 0xe9, 0xf4, 0xa1, 0x00, 0x3e, 0x27, 0x6e,
+ 0x43, 0xf1, 0xd4, 0x1b, 0x86, 0x13, 0xa2, 0x1e, 0x4d, 0x08, 0x42, 0x44, 0x51, 0xea, 0x27, 0xd4,
+ 0x6a, 0x47, 0x5c, 0xd0, 0x4d, 0x28, 0x9c, 0x7a, 0xe1, 0xb4, 0x4e, 0x14, 0x21, 0x18, 0x6e, 0x25,
+ 0xa5, 0x6a, 0xd4, 0x4f, 0x43, 0x2b, 0xf9, 0x2a, 0x6c, 0x84, 0x61, 0x94, 0x39, 0x3d, 0x85, 0x95,
+ 0x3d, 0x1c, 0xec, 0xe2, 0xa1, 0x65, 0x63, 0xf3, 0x08, 0x0b, 0xf7, 0xe6, 0x7d, 0xee, 0x1c, 0x30,
+ 0xd7, 0x66, 0x55, 0x8a, 0x3b, 0x18, 0x29, 0x19, 0x2c, 0xe6, 0x09, 0x88, 0x4d, 0x94, 0x7c, 0xb4,
+ 0x89, 0xa2, 0xb6, 0x60, 0x35, 0xc1, 0x56, 0x2c, 0x1a, 0x45, 0x1f, 0x07, 0x61, 0x07, 0xad, 0xa4,
+ 0xf8, 0x12, 0x5a, 0x4a, 0xa1, 0xfe, 0x84, 0x06, 0x99, 0x69, 0xc9, 0xde, 0x83, 0x02, 0x59, 0xc8,
+ 0x59, 0x3b, 0xb3, 0x19, 0x10, 0x02, 0xa2, 0xab, 0x89, 0xf2, 0xbc, 0xc9, 0x47, 0x61, 0x5c, 0xf9,
+ 0xda, 0xbc, 0x89, 0x5e, 0x1b, 0xe3, 0x31, 0x77, 0x07, 0xc8, 0x4f, 0xe2, 0xa9, 0xa7, 0x99, 0xf2,
+ 0x0a, 0x1f, 0x41, 0x53, 0xc3, 0xee, 0xd8, 0x18, 0xbc, 0x7e, 0x8d, 0x24, 0x02, 0xc9, 0xe0, 0xc1,
+ 0x2b, 0x58, 0xa5, 0x3b, 0x6b, 0x74, 0x65, 0x9f, 0x60, 0x5b, 0x38, 0xb3, 0x5f, 0xd3, 0xb1, 0x95,
+ 0xc0, 0x7c, 0x0c, 0x3e, 0x05, 0xf0, 0x43, 0x60, 0x38, 0x12, 0x92, 0x95, 0x88, 0x0a, 0x48, 0x64,
+ 0xea, 0x13, 0xba, 0x7d, 0x90, 0xac, 0x03, 0xdd, 0x87, 0x8a, 0x20, 0x4a, 0x87, 0xdb, 0x11, 0x79,
+ 0x44, 0xc5, 0x77, 0x0f, 0x52, 0x62, 0xa9, 0xbf, 0x08, 0x77, 0x0f, 0xde, 0x40, 0x25, 0x19, 0x23,
+ 0x24, 0xb6, 0x13, 0xd2, 0x35, 0xef, 0xc3, 0x3a, 0xef, 0xdc, 0x37, 0xd1, 0xbe, 0x0d, 0x31, 0xdc,
+ 0xe9, 0x9a, 0x10, 0x28, 0x7b, 0x38, 0xe0, 0x8e, 0x34, 0x1f, 0xa6, 0x16, 0x2c, 0x49, 0x30, 0x3e,
+ 0x46, 0x1f, 0x42, 0xd9, 0x25, 0x10, 0x0b, 0x87, 0x23, 0xa4, 0x48, 0xa1, 0x01, 0xa3, 0x15, 0x14,
+ 0xea, 0x19, 0x28, 0x2d, 0xd3, 0x8c, 0xb1, 0x45, 0x77, 0xa1, 0x44, 0xf1, 0xe7, 0x5c, 0xec, 0x74,
+ 0x79, 0x8e, 0x47, 0x5f, 0xc2, 0x35, 0x0f, 0x0f, 0xc9, 0x72, 0x7a, 0x66, 0xf9, 0x81, 0x65, 0x8f,
+ 0x74, 0x49, 0x3d, 0x58, 0x0f, 0xae, 0x53, 0x82, 0x36, 0xc7, 0x1f, 0x45, 0x6a, 0xb1, 0x0c, 0x4b,
+ 0x52, 0xcd, 0xbc, 0x95, 0xbf, 0xca, 0xc1, 0x32, 0xdf, 0xba, 0x79, 0x4d, 0x91, 0x3e, 0x86, 0x65,
+ 0x97, 0xb8, 0x40, 0xde, 0x29, 0x4e, 0x0b, 0x83, 0x42, 0x54, 0x24, 0x47, 0x38, 0xde, 0x85, 0x68,
+ 0xbc, 0xd7, 0x60, 0x25, 0x2e, 0x03, 0x17, 0xee, 0x5f, 0xe7, 0x60, 0x85, 0x8f, 0xcf, 0x6f, 0xa0,
+ 0xc3, 0x66, 0xb5, 0xac, 0x30, 0xab, 0x65, 0x6c, 0x47, 0x25, 0x26, 0xae, 0x88, 0xd9, 0x37, 0x84,
+ 0xde, 0xb4, 0x7c, 0xdf, 0x1a, 0xd9, 0xb2, 0xe2, 0x7e, 0x09, 0x60, 0x08, 0x20, 0x6f, 0xd1, 0x46,
+ 0xb2, 0x45, 0x52, 0x31, 0x89, 0x5a, 0xfd, 0x16, 0x36, 0x33, 0x39, 0x73, 0xdd, 0xfc, 0xf3, 0xb0,
+ 0x7e, 0x4e, 0x77, 0xa5, 0x7e, 0x08, 0xa1, 0xaf, 0xc3, 0x66, 0x26, 0x67, 0xde, 0x5b, 0x13, 0xb8,
+ 0x2e, 0xab, 0xc3, 0x1b, 0xad, 0x3b, 0x63, 0xb5, 0xb9, 0x05, 0x37, 0x66, 0x55, 0xc7, 0x05, 0xfa,
+ 0x5d, 0xb8, 0x11, 0x1b, 0xd7, 0x37, 0xdb, 0x1b, 0xb7, 0xe1, 0xe6, 0x4c, 0xee, 0xb1, 0xb5, 0xe8,
+ 0x88, 0xfa, 0xe8, 0xe1, 0x5a, 0xf4, 0x90, 0xae, 0x45, 0x21, 0x4c, 0xd8, 0xec, 0xd2, 0x68, 0xec,
+ 0x1c, 0x1b, 0xe3, 0xf4, 0xc4, 0xd8, 0xa3, 0x70, 0x8d, 0xe3, 0xd5, 0x9f, 0x00, 0x3a, 0x0a, 0x0c,
+ 0x2f, 0xce, 0xf4, 0x15, 0xca, 0xaf, 0xc2, 0x72, 0xac, 0x7c, 0xb4, 0x55, 0x73, 0x14, 0x38, 0x6e,
+ 0x5c, 0xd4, 0x15, 0x52, 0x57, 0x04, 0xe4, 0xa4, 0xff, 0xb2, 0x00, 0x8b, 0x24, 0xcc, 0x79, 0x66,
+ 0x8c, 0x2d, 0x93, 0xee, 0x40, 0xa1, 0xcf, 0xc2, 0x78, 0x88, 0xf9, 0x32, 0x37, 0xe2, 0xf1, 0x50,
+ 0x44, 0xb8, 0x25, 0x87, 0x46, 0xe8, 0x73, 0x28, 0x79, 0xd8, 0xf0, 0xc5, 0xae, 0xe3, 0xcd, 0x99,
+ 0xc5, 0x34, 0x4a, 0xa6, 0x71, 0x72, 0x74, 0x07, 0x16, 0x26, 0x46, 0x30, 0x38, 0xc1, 0x26, 0xdf,
+ 0xd3, 0x91, 0x7c, 0x31, 0xcd, 0x31, 0xb4, 0x10, 0x8b, 0x3e, 0x81, 0xda, 0xd4, 0xe6, 0x1f, 0xba,
+ 0xe1, 0x37, 0x8b, 0x59, 0xd4, 0x55, 0x41, 0xd2, 0xf2, 0xd1, 0x17, 0xa0, 0x44, 0x25, 0xc6, 0xd8,
+ 0x1e, 0x05, 0x27, 0xcd, 0xf9, 0xac, 0x52, 0x0d, 0x41, 0xb6, 0x4f, 0xa9, 0xd4, 0x1e, 0xcc, 0xb3,
+ 0xdd, 0x85, 0x45, 0x80, 0xa3, 0x7e, 0xab, 0xdf, 0xd6, 0x0f, 0xbb, 0x87, 0x6d, 0x65, 0x0e, 0x2d,
+ 0x43, 0x23, 0xfc, 0xee, 0xeb, 0x8f, 0xbb, 0x4f, 0x0f, 0x77, 0x95, 0x1c, 0x6a, 0x40, 0x95, 0x01,
+ 0x9f, 0xb5, 0xf6, 0x3b, 0xbb, 0x4a, 0x1e, 0x2d, 0x41, 0x9d, 0x01, 0x3a, 0x87, 0x0c, 0x54, 0x50,
+ 0xbf, 0x82, 0x12, 0x6b, 0x38, 0xa1, 0xd6, 0xda, 0xad, 0xa3, 0x6e, 0x3f, 0xe4, 0x59, 0x87, 0x0a,
+ 0x05, 0x1c, 0xea, 0xad, 0x23, 0x25, 0x47, 0x0a, 0xf3, 0xcf, 0xfd, 0xf6, 0xe1, 0x1e, 0xdd, 0x4f,
+ 0xfd, 0xaf, 0xf3, 0x50, 0xec, 0xf1, 0x53, 0x21, 0x7b, 0xec, 0x59, 0xe1, 0x11, 0x16, 0xf9, 0x4d,
+ 0x42, 0x50, 0xd7, 0x08, 0x02, 0x8f, 0x45, 0x07, 0x35, 0x8d, 0x7f, 0xd1, 0x49, 0x36, 0x0a, 0x03,
+ 0x40, 0xf2, 0x93, 0x94, 0x3e, 0xc6, 0x7e, 0x78, 0x4e, 0x47, 0x7f, 0x93, 0x00, 0xc3, 0xf2, 0xf5,
+ 0xef, 0xad, 0xe0, 0xc4, 0xf4, 0x8c, 0xef, 0xa9, 0x97, 0x5f, 0xd6, 0xc0, 0xf2, 0x7f, 0xc6, 0x21,
+ 0xe8, 0x06, 0xc0, 0xa9, 0x18, 0x3c, 0xba, 0xb1, 0x31, 0xaf, 0x49, 0x10, 0xd4, 0x86, 0xa5, 0xe8,
+ 0x4b, 0x37, 0x71, 0x60, 0x58, 0x63, 0xba, 0xbd, 0x51, 0x7d, 0xd0, 0x9c, 0xa5, 0x03, 0x9a, 0x12,
+ 0x15, 0xd9, 0xa5, 0x25, 0xd0, 0x27, 0xb0, 0x62, 0x3b, 0xba, 0x35, 0x71, 0x89, 0x89, 0x0e, 0x22,
+ 0x81, 0xca, 0x6c, 0xa1, 0xb7, 0x9d, 0x0e, 0x47, 0x09, 0xc1, 0xa2, 0xd0, 0xbb, 0x12, 0x3b, 0x5d,
+ 0xbb, 0x0e, 0xc0, 0xf6, 0x10, 0x75, 0xc3, 0xb7, 0xe9, 0x46, 0x48, 0x5d, 0xab, 0x30, 0x48, 0xcb,
+ 0xb7, 0xd1, 0x26, 0xf0, 0x0f, 0xdd, 0x32, 0xe9, 0x0e, 0x48, 0x45, 0x2b, 0x33, 0x40, 0xc7, 0xe4,
+ 0x3b, 0xa6, 0x01, 0xf6, 0xb0, 0x49, 0xb7, 0x3e, 0xca, 0x9a, 0xf8, 0x46, 0x2b, 0x74, 0x5e, 0x8c,
+ 0xd9, 0x7e, 0x47, 0x59, 0x63, 0x1f, 0xe8, 0x2e, 0x28, 0x96, 0xaf, 0x0f, 0x3d, 0x67, 0xa2, 0xe3,
+ 0xb3, 0x00, 0x7b, 0xb6, 0x31, 0xa6, 0x9b, 0x1d, 0x65, 0x6d, 0xd1, 0xf2, 0x1f, 0x7b, 0xce, 0xa4,
+ 0xcd, 0xa1, 0xa4, 0xa7, 0xc3, 0xe3, 0x09, 0xdd, 0x72, 0xe9, 0xbe, 0x47, 0x45, 0x83, 0x10, 0xd4,
+ 0x71, 0xc5, 0x91, 0x9f, 0x12, 0x1d, 0xf9, 0xa1, 0x0f, 0x01, 0x59, 0xbe, 0x1e, 0x46, 0x64, 0x96,
+ 0x4d, 0xfb, 0x8d, 0x6e, 0x7a, 0x94, 0x35, 0xc5, 0xf2, 0x0f, 0x19, 0xa2, 0xc3, 0xe0, 0x64, 0xac,
+ 0x2c, 0x13, 0xdb, 0x81, 0x35, 0xb4, 0xb0, 0xd7, 0x44, 0x6c, 0x8f, 0x29, 0x82, 0xa0, 0xf7, 0x41,
+ 0x19, 0x3b, 0x03, 0x63, 0xac, 0x4b, 0x54, 0xcb, 0x94, 0xaa, 0x41, 0xe1, 0x9d, 0x88, 0xf4, 0x63,
+ 0x28, 0x1b, 0xf6, 0xb9, 0x4e, 0xb5, 0x6d, 0x45, 0x78, 0xdb, 0xce, 0x68, 0x8c, 0xb7, 0xc2, 0x73,
+ 0xf0, 0xad, 0x96, 0x7d, 0xae, 0x2d, 0x18, 0xf6, 0xf9, 0x21, 0x51, 0xc3, 0x4f, 0x01, 0x48, 0x01,
+ 0xae, 0x8a, 0xab, 0x22, 0x5e, 0x49, 0x17, 0xa9, 0x18, 0xf6, 0x79, 0x8f, 0x92, 0xa9, 0xff, 0x22,
+ 0x07, 0xd5, 0x5d, 0x4c, 0x6c, 0x3e, 0x53, 0x26, 0xa2, 0xcb, 0x74, 0x4b, 0x8c, 0xc7, 0xc0, 0xfc,
+ 0x2b, 0xda, 0xf6, 0xcd, 0x5f, 0xb0, 0xed, 0x8b, 0xee, 0x40, 0x63, 0xec, 0xd8, 0x24, 0x64, 0x65,
+ 0xc5, 0x70, 0xe8, 0x27, 0x2c, 0x32, 0x70, 0x8f, 0x43, 0x49, 0x3f, 0xf8, 0x27, 0x8e, 0x17, 0xc8,
+ 0x94, 0x6c, 0x52, 0x34, 0x38, 0x3c, 0x24, 0x55, 0xff, 0x6d, 0x0e, 0xe6, 0xe9, 0xf6, 0x26, 0x7a,
+ 0x2f, 0x16, 0xe2, 0x65, 0xed, 0x5e, 0xcf, 0x8c, 0xef, 0x66, 0x9e, 0x04, 0xff, 0x16, 0xd4, 0xcc,
+ 0xa8, 0xf9, 0xe1, 0x9a, 0x16, 0x0b, 0x1f, 0x05, 0x56, 0x8b, 0x91, 0xd2, 0x0d, 0x45, 0xc7, 0x0f,
+ 0x74, 0xee, 0x83, 0xf1, 0x89, 0x4b, 0x40, 0xcc, 0x82, 0xa9, 0xdb, 0x34, 0xfc, 0x7e, 0xe5, 0xfd,
+ 0x5b, 0xf5, 0x73, 0xb6, 0xc9, 0x45, 0xca, 0x71, 0x83, 0x76, 0xc5, 0x82, 0x13, 0x58, 0xa2, 0xdf,
+ 0xfb, 0x8e, 0xf3, 0xdd, 0xd4, 0x65, 0x3d, 0x38, 0x73, 0x44, 0x7f, 0x0a, 0xf5, 0x31, 0xa5, 0xd3,
+ 0x1d, 0x57, 0x3a, 0xac, 0xda, 0x4c, 0xf0, 0x66, 0xbc, 0xba, 0x2e, 0xeb, 0x80, 0xb1, 0xf4, 0xa5,
+ 0xfe, 0xf3, 0x1c, 0x15, 0x54, 0x3e, 0xb7, 0xff, 0x21, 0x86, 0xe8, 0x73, 0x28, 0x4b, 0x3a, 0x42,
+ 0x86, 0x27, 0x5b, 0x46, 0xd6, 0x5e, 0x4d, 0x10, 0xab, 0x63, 0x40, 0x7c, 0xc5, 0xc3, 0xd2, 0x20,
+ 0x5c, 0x55, 0xc4, 0x59, 0x57, 0x30, 0xa2, 0xfe, 0x2c, 0xc8, 0xfd, 0x49, 0x5c, 0x81, 0x58, 0x6d,
+ 0xdc, 0xbe, 0xff, 0xcf, 0x22, 0x14, 0x7b, 0x18, 0x7b, 0x74, 0x65, 0x23, 0x1c, 0xc2, 0x00, 0xa9,
+ 0xae, 0x89, 0x6f, 0xf4, 0x05, 0xd4, 0x0c, 0xd7, 0x1d, 0x9f, 0x87, 0xba, 0xc4, 0x36, 0x42, 0x25,
+ 0x2d, 0x6c, 0x11, 0x2c, 0x77, 0xa7, 0xab, 0x46, 0xf4, 0x21, 0xf6, 0x58, 0x0b, 0xc9, 0x3d, 0x56,
+ 0x52, 0xa7, 0xb4, 0xc7, 0xfa, 0x15, 0xd4, 0xf1, 0xf1, 0xc8, 0xd5, 0x27, 0xd3, 0x71, 0x60, 0x9d,
+ 0x38, 0x2e, 0xbf, 0xfa, 0xb0, 0x16, 0x15, 0x68, 0x1f, 0x8f, 0xdc, 0x03, 0x8e, 0xd5, 0x6a, 0x58,
+ 0xfa, 0x42, 0x2d, 0x68, 0xb0, 0x3d, 0x30, 0x0f, 0x0f, 0xc7, 0x78, 0x10, 0x38, 0x1e, 0xd5, 0xf6,
+ 0xb8, 0x7d, 0x21, 0x04, 0x5a, 0x88, 0xd7, 0x16, 0xbd, 0xd8, 0x37, 0xba, 0x03, 0x45, 0xcb, 0x1e,
+ 0x3a, 0xd4, 0x7c, 0xa5, 0x0e, 0xb8, 0x99, 0x1f, 0x43, 0x09, 0x88, 0xef, 0x15, 0x58, 0x13, 0xec,
+ 0xf9, 0xdc, 0x84, 0x49, 0xbe, 0x57, 0x9f, 0xc2, 0x35, 0x8e, 0x27, 0x91, 0x6e, 0xe0, 0x19, 0xb6,
+ 0x4f, 0xf7, 0x42, 0xcb, 0x49, 0xbe, 0xfd, 0x10, 0xa5, 0x45, 0x54, 0xa4, 0x9f, 0x59, 0x43, 0xd8,
+ 0x46, 0x2f, 0xb5, 0x5b, 0xb1, 0x7e, 0xa6, 0xad, 0xe0, 0x1e, 0x1a, 0xdb, 0xf7, 0x63, 0x1f, 0x68,
+ 0x17, 0x94, 0x91, 0x67, 0x0c, 0xf0, 0x70, 0x3a, 0xd6, 0x3d, 0xec, 0x13, 0x9f, 0x8f, 0x5a, 0xb6,
+ 0xd8, 0x11, 0xf7, 0x1e, 0xa7, 0xd0, 0x18, 0x81, 0xd6, 0x18, 0xc5, 0x01, 0x68, 0x0b, 0x2a, 0xc6,
+ 0xd0, 0xd2, 0x7d, 0x63, 0x68, 0xf9, 0xcd, 0x2a, 0xd5, 0xe5, 0x25, 0x69, 0x90, 0x87, 0xd6, 0x91,
+ 0x31, 0xb4, 0xb4, 0xb2, 0xc1, 0x7e, 0x90, 0xd8, 0xab, 0x62, 0x98, 0xa6, 0xce, 0x56, 0xde, 0x5a,
+ 0x72, 0x88, 0xf9, 0xf5, 0x1a, 0x5f, 0x2b, 0x1b, 0xfc, 0x97, 0xfa, 0x7f, 0x8b, 0x50, 0x11, 0x67,
+ 0xfd, 0x3f, 0x90, 0xca, 0x7d, 0x10, 0x53, 0xb9, 0xf5, 0x8c, 0xbb, 0x0a, 0x7f, 0x89, 0xf4, 0xee,
+ 0xc3, 0x98, 0xde, 0x35, 0x33, 0x84, 0xfd, 0x6b, 0xe5, 0x7b, 0x53, 0xca, 0xf7, 0x04, 0x1a, 0x89,
+ 0xdb, 0x1b, 0x33, 0x8d, 0xcf, 0xf5, 0xd8, 0xad, 0x17, 0x66, 0x05, 0xa4, 0x9b, 0x34, 0xff, 0x39,
+ 0x07, 0x55, 0x49, 0xff, 0xd0, 0xe7, 0x50, 0xb1, 0x6c, 0x3d, 0xb6, 0xd9, 0x71, 0x51, 0x5c, 0x59,
+ 0xb6, 0x6c, 0x5e, 0xf0, 0xb7, 0xa1, 0x8e, 0xcf, 0x48, 0xef, 0xc7, 0xd5, 0xfc, 0xa2, 0xc2, 0x35,
+ 0x56, 0x20, 0x62, 0x60, 0x4d, 0x64, 0x06, 0x85, 0xcb, 0x19, 0xb0, 0x02, 0xdc, 0x09, 0xf8, 0xbb,
+ 0x50, 0x65, 0x86, 0x69, 0xdf, 0x9a, 0x58, 0x33, 0x8f, 0xab, 0xd0, 0x6d, 0xa8, 0x4d, 0x8c, 0xb3,
+ 0xc8, 0x19, 0x62, 0x36, 0xa7, 0x3a, 0x31, 0xce, 0x84, 0xcf, 0xf4, 0x19, 0xac, 0xf9, 0xfc, 0x6e,
+ 0x85, 0x1e, 0x9c, 0x78, 0xd8, 0x3f, 0x71, 0xc6, 0xa6, 0xee, 0x0e, 0x02, 0x6e, 0x2f, 0x57, 0x42,
+ 0x6c, 0x3f, 0x44, 0xf6, 0x06, 0x81, 0xfa, 0xff, 0xe6, 0xa1, 0x1c, 0xda, 0x02, 0xf4, 0x36, 0xd4,
+ 0x8d, 0x69, 0x70, 0xa2, 0xbb, 0x86, 0xef, 0x7f, 0xef, 0x78, 0x26, 0x1f, 0x95, 0x1a, 0x01, 0xf6,
+ 0x38, 0x0c, 0xdd, 0x82, 0xaa, 0x89, 0xfd, 0x81, 0x67, 0xb9, 0xd2, 0x25, 0x09, 0x19, 0x84, 0xae,
+ 0x41, 0x99, 0x79, 0xb1, 0x86, 0x1f, 0x9e, 0x79, 0xd0, 0xef, 0x16, 0x75, 0xec, 0x84, 0x8f, 0x1d,
+ 0x9e, 0xc9, 0x14, 0x29, 0x87, 0x46, 0x08, 0x6f, 0xf1, 0x63, 0xac, 0x75, 0x58, 0xa0, 0x3a, 0x60,
+ 0xf8, 0xfc, 0x68, 0xa3, 0x44, 0x3e, 0x5b, 0x7e, 0x42, 0x39, 0x4a, 0x09, 0xe5, 0x20, 0xf1, 0x03,
+ 0x45, 0x53, 0x2b, 0xce, 0x8e, 0x71, 0xcb, 0x04, 0x40, 0x6f, 0x5c, 0x1c, 0xc2, 0x92, 0x87, 0x27,
+ 0xce, 0x29, 0xd6, 0x5d, 0xcf, 0x3a, 0x35, 0x02, 0x12, 0x83, 0xd0, 0xf9, 0xb9, 0xf8, 0x40, 0x4d,
+ 0x1b, 0xc7, 0x2d, 0x8d, 0xd2, 0xf6, 0x18, 0x69, 0xcb, 0xd7, 0x1a, 0x5e, 0x1c, 0x40, 0xdc, 0x7f,
+ 0x36, 0x69, 0x87, 0x63, 0xc3, 0xd5, 0x4d, 0x63, 0xe2, 0x5a, 0xf6, 0x88, 0x4e, 0xdd, 0xb2, 0xa6,
+ 0x50, 0xcc, 0xe3, 0xb1, 0xe1, 0xee, 0x32, 0x38, 0x7a, 0x17, 0x16, 0x7d, 0x6c, 0x9b, 0x3a, 0xbf,
+ 0x51, 0x12, 0x9c, 0xf3, 0xe8, 0xa7, 0x4e, 0xa0, 0x3b, 0x21, 0x90, 0x34, 0x90, 0x1f, 0xb0, 0x0f,
+ 0x0c, 0x97, 0x4e, 0xc5, 0x9a, 0x56, 0x61, 0x90, 0x1d, 0x83, 0x36, 0x90, 0x75, 0x2f, 0xc1, 0xd6,
+ 0x28, 0x96, 0xf5, 0x37, 0x41, 0x2e, 0x42, 0xde, 0x32, 0x69, 0x04, 0x54, 0xd1, 0xf2, 0x96, 0x89,
+ 0xbe, 0x84, 0x3a, 0x3f, 0xd6, 0x1e, 0x13, 0x05, 0xf3, 0x9b, 0x8b, 0x49, 0x0f, 0x56, 0x52, 0x3f,
+ 0xad, 0xe6, 0x46, 0x1f, 0x3e, 0x51, 0x07, 0x3e, 0x8e, 0x7c, 0xa4, 0x58, 0x48, 0x54, 0x63, 0x83,
+ 0xc9, 0x87, 0xe9, 0x23, 0x40, 0x51, 0xd4, 0x64, 0x07, 0xd8, 0x1b, 0x1a, 0x03, 0x4c, 0x43, 0xa4,
+ 0x8a, 0xb6, 0x24, 0x82, 0xa7, 0x10, 0x41, 0x82, 0xde, 0x53, 0x6f, 0x48, 0x03, 0xa4, 0x0a, 0x3d,
+ 0xc6, 0x41, 0xb7, 0xa0, 0x66, 0x8c, 0xc7, 0xce, 0xf7, 0x3a, 0x51, 0x5c, 0xc3, 0x0f, 0xa3, 0x22,
+ 0x0a, 0xeb, 0x7e, 0x6f, 0xb7, 0x7c, 0xf4, 0x1e, 0x34, 0x3c, 0xb6, 0xf7, 0xa3, 0x87, 0x1a, 0xb1,
+ 0xcc, 0xae, 0xb3, 0x71, 0x70, 0x8f, 0x2a, 0x86, 0x7a, 0x1f, 0x1a, 0x89, 0x01, 0x43, 0x65, 0x28,
+ 0xf2, 0x20, 0x9e, 0xdf, 0xd1, 0xc8, 0xa1, 0x2a, 0x2c, 0x68, 0xed, 0xde, 0x7e, 0x6b, 0xa7, 0xad,
+ 0xe4, 0xd5, 0x7f, 0x55, 0x80, 0x7a, 0xcc, 0x2e, 0xfd, 0x05, 0xcc, 0x81, 0x99, 0x8a, 0xfd, 0x1e,
+ 0x34, 0x22, 0xc5, 0xd6, 0xa9, 0x03, 0xcc, 0xb4, 0xbb, 0x2e, 0xb4, 0xfb, 0x90, 0x78, 0xc2, 0x17,
+ 0x6a, 0xf8, 0xd1, 0x6c, 0x0d, 0xbf, 0x33, 0xc3, 0x16, 0xff, 0x66, 0xd4, 0xfc, 0x75, 0x86, 0xeb,
+ 0x7f, 0x17, 0x60, 0x31, 0x6e, 0x99, 0xff, 0xca, 0x8f, 0x57, 0x7f, 0xf6, 0x78, 0xdd, 0x9d, 0xe5,
+ 0x8e, 0xfc, 0x86, 0xd6, 0xa5, 0x9b, 0x50, 0x0d, 0x9c, 0xc0, 0x18, 0x73, 0x9b, 0x5f, 0x65, 0x13,
+ 0x95, 0x82, 0xa8, 0x85, 0x27, 0x7c, 0x38, 0x41, 0x68, 0xa7, 0x6a, 0x8c, 0x0f, 0xa3, 0x09, 0x03,
+ 0xaf, 0xd7, 0x18, 0xf8, 0xaf, 0xa1, 0x26, 0x3b, 0x82, 0xa8, 0x09, 0x0b, 0xec, 0xac, 0x3c, 0xbc,
+ 0xb8, 0x1f, 0x7e, 0x52, 0x4b, 0xc9, 0xa9, 0xf4, 0x20, 0x18, 0x0b, 0x4b, 0xc9, 0x61, 0xfd, 0x60,
+ 0xac, 0xfe, 0x5e, 0x0e, 0x16, 0xe3, 0x7e, 0x21, 0x31, 0x9e, 0x09, 0x57, 0x52, 0x1f, 0x8c, 0xad,
+ 0x70, 0x9b, 0xba, 0xac, 0xad, 0xc4, 0xfd, 0xc6, 0x1d, 0x8a, 0x43, 0x5f, 0xc1, 0x46, 0xba, 0xd4,
+ 0xd4, 0x0f, 0xb0, 0x17, 0xdd, 0x8b, 0x5b, 0x4f, 0x96, 0xa4, 0xf8, 0x8e, 0xa9, 0xfe, 0x9b, 0x12,
+ 0xf3, 0xc5, 0xff, 0xa2, 0xd4, 0x78, 0x0b, 0xca, 0x13, 0xec, 0xfb, 0xc6, 0x88, 0xef, 0xa5, 0xc4,
+ 0xdc, 0xb5, 0x03, 0x8e, 0xd1, 0x04, 0x4d, 0xa6, 0xa9, 0x9e, 0xbf, 0xd4, 0x54, 0x97, 0x2e, 0x30,
+ 0xd5, 0x0b, 0x17, 0x9a, 0xea, 0x72, 0x62, 0x62, 0xdc, 0x85, 0xd2, 0x2f, 0xa7, 0x78, 0x8a, 0x7d,
+ 0xee, 0x09, 0x4b, 0xce, 0xf6, 0x37, 0x14, 0xae, 0x71, 0x3c, 0xba, 0x97, 0x35, 0x85, 0x98, 0x06,
+ 0x5f, 0x71, 0x62, 0x54, 0xaf, 0x3c, 0x31, 0x6a, 0x59, 0x13, 0x83, 0x5e, 0xdc, 0xf2, 0x7d, 0xcb,
+ 0xb1, 0xd9, 0x11, 0x18, 0xb5, 0xbf, 0x75, 0xad, 0xc6, 0x81, 0x6c, 0x84, 0x7f, 0x04, 0x6b, 0xfe,
+ 0xd4, 0x25, 0xae, 0x1f, 0x36, 0x89, 0xe9, 0x36, 0x8e, 0xad, 0xb1, 0x15, 0x90, 0xd8, 0x6b, 0x91,
+ 0x5e, 0x1a, 0x59, 0x15, 0xd8, 0x1d, 0x09, 0x49, 0xfa, 0x88, 0x04, 0x48, 0x8c, 0x2f, 0x33, 0xc0,
+ 0xe5, 0xe3, 0x11, 0x5f, 0xfc, 0x7e, 0x1b, 0xaa, 0x86, 0x39, 0xb1, 0xc2, 0x6a, 0x95, 0xe4, 0x81,
+ 0x80, 0xd0, 0xaf, 0xad, 0x16, 0x21, 0x63, 0xb1, 0x0c, 0x18, 0xe2, 0x37, 0x09, 0x01, 0xc3, 0x2b,
+ 0x68, 0xd4, 0x26, 0xd7, 0x35, 0xf1, 0x4d, 0x70, 0xc6, 0x60, 0x80, 0xdd, 0x00, 0x9b, 0xdc, 0x28,
+ 0x8b, 0x6f, 0x74, 0x03, 0xc0, 0x88, 0xde, 0xce, 0x2c, 0x73, 0x93, 0x1d, 0xbd, 0x9a, 0x59, 0x86,
+ 0x79, 0x67, 0x1a, 0xe8, 0xbf, 0xa4, 0x5b, 0x93, 0x75, 0xad, 0xe8, 0x4c, 0x83, 0x6f, 0xd0, 0x0a,
+ 0xcc, 0x0f, 0xc7, 0x8e, 0xeb, 0x37, 0x57, 0x29, 0x90, 0x7d, 0xa8, 0xf7, 0x00, 0x22, 0xe1, 0x50,
+ 0x09, 0xf2, 0x4f, 0x7b, 0xec, 0xc6, 0xe5, 0x6e, 0xf7, 0x67, 0x87, 0x4a, 0x0e, 0x01, 0x94, 0x7a,
+ 0x8f, 0x9f, 0xeb, 0x3b, 0x7d, 0x25, 0xaf, 0xfe, 0x2d, 0x28, 0x87, 0x9a, 0x8a, 0x3e, 0x92, 0x44,
+ 0x67, 0x3e, 0xff, 0x52, 0x4a, 0x9f, 0xa5, 0xd6, 0xbc, 0x0b, 0x45, 0x3f, 0xbc, 0xf2, 0x98, 0x49,
+ 0x4a, 0xd1, 0xea, 0x9f, 0xe4, 0x60, 0x81, 0x43, 0x90, 0x0a, 0xb5, 0xc3, 0x6e, 0xbf, 0xf3, 0xb8,
+ 0xb3, 0xd3, 0xea, 0x77, 0xba, 0x87, 0xb4, 0x96, 0xa2, 0x16, 0x83, 0x11, 0x87, 0xfd, 0x69, 0x6f,
+ 0xb7, 0xd5, 0x6f, 0x53, 0xc6, 0x45, 0x8d, 0x7f, 0x21, 0x04, 0xc5, 0x6e, 0xaf, 0x7d, 0xc8, 0xaf,
+ 0xee, 0xd2, 0xdf, 0xe8, 0x2d, 0xa8, 0x7c, 0xdd, 0x6e, 0xf7, 0x5a, 0xfb, 0x9d, 0x67, 0x6d, 0x3a,
+ 0x05, 0x8b, 0x5a, 0x04, 0x20, 0x4b, 0x9a, 0xd6, 0x7e, 0xac, 0xb5, 0x8f, 0x9e, 0xd0, 0x69, 0x56,
+ 0xd4, 0xc2, 0x4f, 0x52, 0x6e, 0xb7, 0x73, 0xb4, 0xd3, 0xd2, 0x76, 0xdb, 0xbb, 0x74, 0x82, 0x15,
+ 0xb5, 0x08, 0x40, 0x7a, 0xb5, 0xdf, 0xed, 0xb7, 0xf6, 0xe9, 0xf4, 0x2a, 0x6a, 0xec, 0x43, 0xdd,
+ 0x86, 0x12, 0x9b, 0x25, 0x04, 0x6f, 0xd9, 0xee, 0x34, 0xe0, 0x11, 0x05, 0xfb, 0x20, 0x72, 0x3b,
+ 0xd3, 0x80, 0x80, 0xf9, 0xf6, 0x15, 0xfb, 0x52, 0x31, 0x94, 0x58, 0x28, 0x8b, 0xb6, 0xa0, 0x44,
+ 0x42, 0x74, 0x6b, 0xc4, 0x7b, 0x77, 0x2d, 0x19, 0xec, 0xee, 0x50, 0xac, 0xc6, 0xa9, 0xd0, 0x07,
+ 0xf1, 0x6b, 0x7a, 0xab, 0x49, 0xf2, 0xd8, 0x45, 0xbd, 0x3f, 0xc9, 0x41, 0x4d, 0xe6, 0x42, 0xa6,
+ 0xd0, 0xc0, 0xb1, 0x6d, 0x3c, 0x08, 0x74, 0x0f, 0x07, 0xde, 0x79, 0xd8, 0xd9, 0x1c, 0xa8, 0x11,
+ 0x18, 0x99, 0x0b, 0x34, 0xa8, 0x11, 0x77, 0x46, 0x8b, 0x5a, 0x99, 0x00, 0x08, 0x27, 0xe2, 0x88,
+ 0x7e, 0x87, 0xb1, 0x6b, 0x8c, 0xad, 0x53, 0xac, 0x27, 0xae, 0x4e, 0x2f, 0x09, 0x4c, 0x87, 0x23,
+ 0xd0, 0x2e, 0xdc, 0x98, 0x58, 0xb6, 0x35, 0x99, 0x4e, 0x74, 0xa1, 0xb7, 0x24, 0x3e, 0x8b, 0x8a,
+ 0xb2, 0x11, 0x7a, 0x8b, 0x53, 0xb5, 0x64, 0xa2, 0x90, 0x8b, 0xfa, 0x47, 0x79, 0xa8, 0x4a, 0xcd,
+ 0xfb, 0x2b, 0xda, 0x0c, 0x7a, 0xb8, 0x83, 0x47, 0x4e, 0x60, 0x19, 0x64, 0x71, 0x8a, 0x84, 0x63,
+ 0x8a, 0x88, 0x22, 0xdc, 0x93, 0x50, 0xcc, 0xe8, 0x56, 0x2f, 0x53, 0xc8, 0xac, 0x5b, 0xbd, 0x4c,
+ 0x21, 0xc5, 0xb7, 0xfa, 0x7f, 0x72, 0x50, 0x11, 0x5b, 0x1f, 0xe9, 0xe8, 0x22, 0x97, 0x11, 0x5d,
+ 0x5c, 0x07, 0x60, 0x44, 0xd2, 0x8d, 0x46, 0x16, 0xfd, 0xf4, 0x38, 0x8f, 0x49, 0x30, 0xd5, 0x4d,
+ 0xcb, 0x1f, 0x38, 0xa7, 0xd8, 0x3b, 0xe7, 0xc7, 0x09, 0xb5, 0x49, 0x30, 0xdd, 0x0d, 0x61, 0xc4,
+ 0x23, 0x20, 0x56, 0x95, 0xf4, 0xe7, 0xc4, 0x31, 0xc3, 0xdb, 0x75, 0x55, 0x0e, 0x3b, 0x70, 0x4c,
+ 0x4c, 0xd6, 0x79, 0x1e, 0x71, 0xc5, 0x2d, 0x5d, 0x9d, 0x41, 0x5b, 0xd9, 0x37, 0x9f, 0x4b, 0xe1,
+ 0x2d, 0xe3, 0xf0, 0xe6, 0x33, 0x31, 0x84, 0xc1, 0xc0, 0xd5, 0x27, 0xbe, 0xcf, 0xfd, 0xbc, 0x52,
+ 0x30, 0x70, 0x0f, 0x7c, 0x5f, 0x7d, 0x08, 0x55, 0x69, 0xfb, 0x06, 0x6d, 0xc1, 0xb2, 0xbc, 0xd7,
+ 0x13, 0xf7, 0x35, 0x96, 0xa4, 0xbd, 0x1d, 0xe6, 0x68, 0xa8, 0x7f, 0x5c, 0x80, 0x46, 0x62, 0x03,
+ 0xe7, 0x62, 0x17, 0x88, 0x6f, 0x03, 0x45, 0x2a, 0x56, 0xd7, 0xaa, 0x1c, 0x46, 0x87, 0xef, 0x26,
+ 0x54, 0x4f, 0xf0, 0xd8, 0xc5, 0x9e, 0xee, 0xd8, 0xe3, 0xb0, 0xdb, 0x80, 0x81, 0xba, 0xf6, 0x98,
+ 0x9a, 0x34, 0x13, 0x0f, 0xb1, 0xe7, 0x19, 0x63, 0xc6, 0x84, 0xdd, 0xb9, 0xae, 0x85, 0x40, 0xca,
+ 0xe5, 0x3e, 0xac, 0xd0, 0x9b, 0xca, 0xfc, 0x6d, 0x84, 0x1e, 0xca, 0xc3, 0xce, 0x3a, 0x96, 0x65,
+ 0x5c, 0x9b, 0xcb, 0xf6, 0x01, 0x2c, 0x8d, 0x1d, 0x7b, 0x34, 0xa6, 0x37, 0xa1, 0x43, 0xfa, 0x12,
+ 0x33, 0xbf, 0x02, 0x11, 0x12, 0xdf, 0x83, 0x25, 0x7a, 0x88, 0xa7, 0xd3, 0x1e, 0xf1, 0x75, 0xa1,
+ 0x55, 0x75, 0xad, 0x41, 0x11, 0xb4, 0x4f, 0x7d, 0x2a, 0xcb, 0x3d, 0x58, 0xa2, 0xbe, 0x44, 0xac,
+ 0xe5, 0xcc, 0xa7, 0xa0, 0x5e, 0xba, 0x26, 0xb5, 0xfe, 0x0e, 0x77, 0xdc, 0x39, 0x6d, 0xe4, 0x1a,
+ 0x2f, 0x4a, 0x94, 0xc4, 0xfe, 0x8b, 0xf3, 0x38, 0x89, 0x12, 0xd8, 0x39, 0x14, 0x85, 0x4b, 0xa4,
+ 0x08, 0x8a, 0x54, 0xbb, 0xd8, 0x89, 0x25, 0xfd, 0xad, 0x7e, 0x0a, 0xeb, 0x07, 0x6e, 0x62, 0xdc,
+ 0xf8, 0x7a, 0x37, 0x73, 0xf4, 0xd4, 0xff, 0x94, 0x83, 0xb5, 0x54, 0x29, 0xb6, 0xba, 0xcc, 0x1e,
+ 0x72, 0xd9, 0x8e, 0xb3, 0x5b, 0x1b, 0x91, 0xe5, 0x8b, 0xdb, 0x6a, 0x3e, 0xd4, 0x92, 0xad, 0xfe,
+ 0x08, 0x96, 0xf9, 0x4d, 0x70, 0xcf, 0x3a, 0xd6, 0x05, 0x9b, 0x62, 0xf8, 0x20, 0xd6, 0xec, 0x0e,
+ 0xe9, 0x89, 0x85, 0x30, 0xa4, 0x0d, 0x89, 0x9c, 0xda, 0x54, 0x36, 0xde, 0xb5, 0x90, 0xf4, 0x88,
+ 0xa8, 0xec, 0xaf, 0x73, 0xb0, 0x94, 0x6a, 0x06, 0xfa, 0xad, 0x84, 0x51, 0xb9, 0x2d, 0xd9, 0xe1,
+ 0xec, 0x9e, 0x12, 0xf6, 0x65, 0x3b, 0x6e, 0x5f, 0x6e, 0x5d, 0x50, 0x32, 0x66, 0x6a, 0x5a, 0x50,
+ 0xe7, 0x9b, 0x97, 0xbc, 0xeb, 0x67, 0xed, 0xb1, 0x49, 0xbd, 0x9b, 0x8f, 0x0f, 0xc9, 0x3f, 0xc8,
+ 0x41, 0x8d, 0xf3, 0x10, 0x6f, 0x1a, 0x5e, 0x8d, 0x45, 0x32, 0x76, 0x2a, 0x5c, 0x21, 0x76, 0x2a,
+ 0x66, 0xc5, 0x4e, 0xff, 0xb8, 0x00, 0x9b, 0x7c, 0x25, 0x19, 0xb3, 0x77, 0x5e, 0xec, 0xb4, 0x2d,
+ 0xb4, 0xa3, 0x1f, 0x02, 0x32, 0xc6, 0xdf, 0x1b, 0xe7, 0x3e, 0xf1, 0x59, 0x5d, 0xc3, 0xc3, 0xfa,
+ 0x24, 0x7a, 0xdc, 0xcc, 0x30, 0x3b, 0x0c, 0x71, 0x80, 0x4d, 0x74, 0x1f, 0x56, 0xad, 0x91, 0xed,
+ 0x78, 0xc4, 0x63, 0xa6, 0x92, 0x85, 0xb7, 0x30, 0xf8, 0xc5, 0x34, 0x86, 0x6c, 0xf9, 0x44, 0x44,
+ 0x76, 0xf3, 0x82, 0xc4, 0x3c, 0xe1, 0x39, 0xba, 0xa8, 0x82, 0x4e, 0x4f, 0x1a, 0xf3, 0x30, 0xed,
+ 0x5a, 0x0f, 0x29, 0x78, 0x55, 0x54, 0x60, 0xaf, 0x63, 0xa2, 0x2f, 0xe1, 0x9a, 0x50, 0x3c, 0xdd,
+ 0xb2, 0x8d, 0x41, 0x40, 0x56, 0x65, 0x36, 0xbb, 0xb9, 0xc2, 0xad, 0x0b, 0x82, 0x0e, 0xc7, 0xb3,
+ 0x49, 0x4e, 0x7a, 0x90, 0x75, 0xa6, 0x6e, 0x58, 0x23, 0x37, 0x3c, 0x4f, 0xe5, 0xef, 0xb5, 0xad,
+ 0x91, 0x8b, 0xbe, 0x84, 0x0d, 0xde, 0x18, 0x1b, 0x9f, 0x05, 0x3a, 0x3d, 0x8f, 0x1f, 0xb9, 0xfa,
+ 0x04, 0x07, 0x9e, 0x35, 0xe0, 0x6b, 0xcc, 0x1a, 0xa3, 0x38, 0xc4, 0x67, 0xc1, 0x13, 0xc7, 0xed,
+ 0x8c, 0xdc, 0x03, 0x8a, 0x45, 0x0f, 0x61, 0xd3, 0x64, 0x97, 0xd2, 0xf5, 0x63, 0xec, 0x07, 0xac,
+ 0x2f, 0xfc, 0xb0, 0x8b, 0xe9, 0x9a, 0x53, 0xd6, 0x9a, 0x9c, 0xe4, 0x11, 0xf6, 0xe9, 0xa9, 0xa6,
+ 0x18, 0x02, 0xf5, 0x1f, 0x15, 0x60, 0x23, 0x73, 0x54, 0x98, 0xba, 0xfc, 0xf5, 0xa0, 0xfc, 0x46,
+ 0x06, 0x25, 0x07, 0xab, 0x99, 0x83, 0x82, 0x1e, 0x26, 0x56, 0xa1, 0x77, 0x53, 0x87, 0x2c, 0x59,
+ 0x73, 0x4b, 0xac, 0x44, 0x5f, 0xc6, 0x57, 0xa2, 0x77, 0x2e, 0x29, 0x1d, 0x5b, 0x8d, 0x1e, 0xc0,
+ 0xda, 0x53, 0x1f, 0xd3, 0x7d, 0x0c, 0x77, 0x4c, 0xdf, 0x89, 0xfb, 0x97, 0x5a, 0x84, 0xfb, 0xb0,
+ 0x9a, 0x2c, 0x73, 0x89, 0x3d, 0x50, 0x7f, 0x01, 0xd0, 0x3e, 0x1e, 0xb9, 0x9c, 0xf5, 0x3d, 0x58,
+ 0x62, 0x5b, 0xac, 0x13, 0xce, 0x83, 0x04, 0xc8, 0xac, 0x44, 0x83, 0x22, 0x42, 0xde, 0x2d, 0xba,
+ 0xe9, 0x3b, 0x31, 0xce, 0xa8, 0x43, 0x19, 0xde, 0xe8, 0xa0, 0x86, 0x9f, 0x03, 0xd9, 0x51, 0xce,
+ 0xef, 0x42, 0xa5, 0x2d, 0x82, 0xd0, 0x37, 0xce, 0x5d, 0x87, 0x22, 0xe1, 0x8e, 0x3e, 0x4c, 0x0c,
+ 0xd3, 0x4a, 0xfc, 0x54, 0x30, 0x31, 0x2a, 0xb3, 0x9f, 0x09, 0x09, 0x51, 0xc3, 0x41, 0xb8, 0x0f,
+ 0xd0, 0x89, 0x7a, 0x27, 0x25, 0x53, 0x2e, 0x43, 0xa6, 0x4f, 0xa0, 0xd2, 0x11, 0x2d, 0xbe, 0x52,
+ 0x09, 0x1d, 0x8a, 0x9d, 0x4b, 0x5a, 0xd1, 0x79, 0x95, 0x56, 0x74, 0x92, 0xad, 0xf8, 0xb3, 0x1c,
+ 0x28, 0x49, 0xbd, 0x40, 0x5f, 0x24, 0x6a, 0x93, 0xcc, 0x64, 0xb6, 0xde, 0x89, 0x9a, 0x7f, 0x14,
+ 0xaf, 0xf9, 0xe6, 0xec, 0x82, 0xb1, 0x7b, 0x85, 0x2a, 0x14, 0xf1, 0xf1, 0xc8, 0x4d, 0xe7, 0x7a,
+ 0x20, 0xbd, 0xae, 0x51, 0x1c, 0xa1, 0xb1, 0x08, 0x4d, 0x2a, 0x9f, 0x42, 0x87, 0xd2, 0x10, 0x9c,
+ 0xfa, 0x88, 0xdb, 0xb5, 0xbe, 0xe1, 0x8d, 0x70, 0x70, 0x80, 0x27, 0xc7, 0xd8, 0xf3, 0x4f, 0x2c,
+ 0x69, 0x90, 0xe2, 0xfe, 0x68, 0x2e, 0xed, 0x8f, 0xaa, 0x2d, 0xbe, 0x0a, 0x27, 0x79, 0x88, 0x51,
+ 0xbb, 0x9c, 0x85, 0x58, 0x34, 0x92, 0x3c, 0x2e, 0x5d, 0x34, 0xb2, 0x05, 0xbf, 0xea, 0xa2, 0x91,
+ 0x29, 0x72, 0x38, 0xd2, 0xbf, 0x80, 0x1b, 0xfb, 0x8e, 0x3d, 0xda, 0x27, 0xfe, 0xd7, 0x2b, 0xba,
+ 0x93, 0x57, 0x08, 0x06, 0xd4, 0xff, 0x9e, 0x83, 0xeb, 0xb3, 0xf8, 0xff, 0x90, 0x8e, 0x67, 0xa6,
+ 0xcb, 0x5e, 0xcc, 0x76, 0xd9, 0xbf, 0x82, 0x8d, 0x14, 0xad, 0xa7, 0xe3, 0x33, 0xd7, 0xf2, 0x44,
+ 0xc0, 0xb1, 0x9e, 0x28, 0xe4, 0xb5, 0x19, 0x5a, 0xfd, 0xa7, 0x39, 0x68, 0xce, 0x6a, 0x20, 0xfa,
+ 0x69, 0x62, 0x5c, 0xa5, 0x5d, 0xf7, 0x8b, 0x3b, 0x5d, 0x0c, 0xed, 0xc3, 0xf8, 0xd0, 0xde, 0xb9,
+ 0x9c, 0x41, 0x6c, 0x74, 0xff, 0x70, 0x1e, 0x16, 0xb8, 0x77, 0x89, 0xbe, 0x86, 0xe5, 0x89, 0xab,
+ 0xa7, 0x4e, 0xf3, 0x99, 0x64, 0x9b, 0x17, 0xb8, 0xbc, 0xda, 0xd2, 0x24, 0xe5, 0x6c, 0x7f, 0x2c,
+ 0x5a, 0x96, 0x4f, 0xde, 0xc5, 0x88, 0x79, 0xc4, 0xa2, 0x21, 0xc9, 0x4b, 0x1f, 0x85, 0x2b, 0x5f,
+ 0xfa, 0xf8, 0x19, 0xac, 0x87, 0x01, 0x2d, 0x37, 0x7e, 0xfc, 0xda, 0x58, 0xb8, 0xd7, 0x7c, 0xf3,
+ 0x12, 0x23, 0xa9, 0xad, 0x7a, 0x99, 0xa6, 0xfa, 0x09, 0xa0, 0xa9, 0x8f, 0x23, 0xd3, 0xc2, 0xd6,
+ 0xdb, 0xf9, 0xe4, 0x29, 0x7b, 0x72, 0x89, 0xd2, 0x94, 0x69, 0x72, 0x65, 0x4c, 0x9d, 0x84, 0x96,
+ 0x92, 0xad, 0x9b, 0x7d, 0x12, 0x2a, 0x9a, 0x17, 0xd0, 0x69, 0xaa, 0x4f, 0xc4, 0x3c, 0xe5, 0x37,
+ 0x41, 0x6e, 0x5e, 0x32, 0x9d, 0x79, 0xf3, 0x52, 0x8b, 0x8a, 0x01, 0x9b, 0x24, 0xea, 0xd5, 0x59,
+ 0x3c, 0x9c, 0x1a, 0x77, 0x76, 0x73, 0x44, 0xbd, 0x5c, 0xa1, 0xb4, 0xe6, 0x78, 0x96, 0x7e, 0xc7,
+ 0xee, 0x69, 0x54, 0xae, 0x70, 0x4f, 0xa3, 0x2d, 0xd2, 0x02, 0x49, 0xae, 0x09, 0x9f, 0xd4, 0xe1,
+ 0xf4, 0xe7, 0x9f, 0xe8, 0x1a, 0x94, 0xe9, 0x06, 0xf9, 0xc4, 0x38, 0xe3, 0x2b, 0xcb, 0x02, 0xf9,
+ 0x3e, 0x30, 0xce, 0xd4, 0x5d, 0xfa, 0x2e, 0x30, 0xee, 0xad, 0xbc, 0x3a, 0x97, 0xef, 0xa0, 0x1c,
+ 0x72, 0x41, 0x9f, 0x24, 0x66, 0x6a, 0x33, 0xdd, 0x8c, 0x84, 0x42, 0x7f, 0x14, 0x9f, 0x99, 0xeb,
+ 0xe9, 0x02, 0xb1, 0x99, 0x38, 0x85, 0x12, 0xbf, 0x15, 0xb9, 0x09, 0x15, 0xcb, 0xd5, 0x63, 0x77,
+ 0x53, 0xca, 0x56, 0x78, 0x65, 0xf2, 0x3d, 0x68, 0x4c, 0x0c, 0xff, 0x3b, 0xee, 0x96, 0xeb, 0x13,
+ 0x9e, 0x5e, 0xa5, 0xae, 0xd5, 0x09, 0x98, 0xb9, 0xe4, 0x07, 0x96, 0x9d, 0xa2, 0x33, 0xce, 0x78,
+ 0xdc, 0x27, 0xd3, 0x19, 0x67, 0xea, 0x1f, 0xe6, 0x00, 0xa2, 0x57, 0x70, 0x7f, 0xce, 0xa7, 0x8a,
+ 0x04, 0x36, 0xb6, 0xfc, 0x80, 0x5e, 0xd6, 0xaf, 0x68, 0xf4, 0x37, 0x7d, 0x7d, 0x15, 0xbf, 0x23,
+ 0xa9, 0x24, 0xd5, 0x5e, 0xba, 0x18, 0xb9, 0x07, 0xe5, 0x03, 0x23, 0x18, 0x9c, 0x10, 0x61, 0xee,
+ 0xc4, 0x84, 0x91, 0xdc, 0x11, 0x4a, 0x71, 0xc9, 0xab, 0xc9, 0x67, 0x50, 0x8b, 0x85, 0x29, 0x5b,
+ 0x31, 0x66, 0xd2, 0xf4, 0x95, 0xa9, 0x24, 0x9e, 0x6b, 0x50, 0x92, 0x42, 0x9f, 0xba, 0xc6, 0xbf,
+ 0xd4, 0x7f, 0x32, 0x0f, 0xb0, 0xe3, 0xd8, 0xa6, 0xc5, 0xd6, 0x88, 0xfb, 0xc0, 0xdf, 0xe9, 0xeb,
+ 0xd1, 0xd3, 0x43, 0x94, 0x90, 0xf4, 0x08, 0x07, 0x5a, 0x85, 0x51, 0x91, 0x66, 0xfd, 0x08, 0x6a,
+ 0xe2, 0x70, 0x8b, 0x14, 0xca, 0xcf, 0x2c, 0x24, 0xee, 0x84, 0x93, 0x62, 0x3f, 0x86, 0xc5, 0x44,
+ 0x4c, 0x56, 0x48, 0xee, 0x8d, 0xcb, 0x4d, 0xd1, 0x6a, 0x86, 0xdc, 0xfc, 0x07, 0x50, 0x0d, 0x4b,
+ 0x93, 0x3a, 0x8b, 0xb3, 0x05, 0x65, 0xc5, 0x48, 0x8d, 0x9f, 0x8b, 0xa4, 0x24, 0xc1, 0x39, 0x2d,
+ 0x35, 0x3f, 0xb3, 0x54, 0x4d, 0x10, 0x92, 0x82, 0x3f, 0x81, 0x25, 0x12, 0x70, 0xc5, 0x0b, 0x97,
+ 0x66, 0x16, 0x6e, 0xe0, 0xb3, 0x60, 0x47, 0x2e, 0x7f, 0x13, 0xaa, 0x9e, 0xfb, 0x9d, 0x45, 0x96,
+ 0xa2, 0xe9, 0x38, 0xa0, 0xcb, 0xdc, 0xbc, 0x06, 0x1e, 0x7b, 0x24, 0x3d, 0x1d, 0x07, 0xe8, 0x21,
+ 0x40, 0xf4, 0xf2, 0x99, 0x9f, 0x58, 0x4b, 0x47, 0x4f, 0xd1, 0xf8, 0xf0, 0x15, 0x91, 0x0c, 0x6b,
+ 0x45, 0x3c, 0x8c, 0x46, 0x8f, 0x60, 0x79, 0x4c, 0x56, 0xc3, 0x84, 0x84, 0x95, 0x99, 0x12, 0x2e,
+ 0x51, 0xf2, 0x98, 0x8c, 0x77, 0x40, 0x89, 0xa2, 0x4a, 0x5b, 0xa7, 0x6a, 0x0f, 0x54, 0xed, 0xeb,
+ 0x36, 0x0f, 0x26, 0xed, 0x7d, 0xcb, 0x0f, 0xd4, 0x13, 0xa8, 0x08, 0x21, 0xd0, 0x32, 0x34, 0xb4,
+ 0xee, 0xd3, 0x7e, 0x5b, 0xef, 0x7f, 0xdb, 0x13, 0xef, 0x46, 0xd6, 0x61, 0x59, 0x02, 0x76, 0x0e,
+ 0xfb, 0x6d, 0xed, 0xb0, 0xb5, 0xaf, 0xe4, 0x12, 0x88, 0xf6, 0x73, 0x8e, 0xc8, 0xa3, 0x15, 0x50,
+ 0x24, 0x04, 0x4f, 0x05, 0xa2, 0x0e, 0xa1, 0x21, 0x44, 0x6c, 0xb1, 0x3c, 0x3c, 0xf7, 0x63, 0x5a,
+ 0x7f, 0x5d, 0xee, 0xa2, 0x18, 0xa1, 0xa4, 0xf8, 0xb7, 0xa0, 0x1a, 0x76, 0x8b, 0x25, 0x5e, 0x95,
+ 0xcb, 0x20, 0xf5, 0x10, 0x2a, 0x07, 0xd8, 0xe4, 0x35, 0x7c, 0x10, 0xab, 0x61, 0x5d, 0x3e, 0xdb,
+ 0x32, 0x53, 0xbc, 0x57, 0x60, 0xfe, 0xd4, 0x18, 0x4f, 0xc3, 0xa4, 0x1b, 0xec, 0x43, 0xd5, 0xa1,
+ 0xd1, 0xf2, 0x7b, 0x1e, 0x76, 0xb1, 0x1d, 0x72, 0x55, 0xa0, 0x60, 0xf8, 0x36, 0xf7, 0x92, 0xc9,
+ 0x4f, 0x32, 0x1f, 0x09, 0x85, 0x21, 0x0e, 0x8d, 0xd8, 0x17, 0x52, 0xa1, 0x4e, 0x8c, 0xf4, 0x18,
+ 0x0f, 0x03, 0x7d, 0xe2, 0xf8, 0x01, 0xf7, 0xf5, 0xaa, 0x53, 0x1f, 0xef, 0xe3, 0x61, 0x70, 0xe0,
+ 0xd0, 0x97, 0x58, 0x75, 0xfe, 0x18, 0x82, 0xb3, 0xbf, 0x30, 0x81, 0x81, 0x8f, 0xc7, 0x43, 0xee,
+ 0x4f, 0xd2, 0xdf, 0xea, 0x1d, 0x68, 0xec, 0xd3, 0x6d, 0x7f, 0x0f, 0x0f, 0x39, 0x03, 0xd1, 0x10,
+ 0x7e, 0xb0, 0xc5, 0x1a, 0xf2, 0x5f, 0x0a, 0xb0, 0xc0, 0x08, 0xfc, 0xe8, 0x4a, 0xa5, 0xc1, 0x76,
+ 0x0c, 0x52, 0x2b, 0x2a, 0x55, 0x0a, 0x46, 0xcd, 0xaf, 0x54, 0x72, 0xde, 0x9f, 0x43, 0x25, 0x3a,
+ 0xf3, 0xcd, 0x27, 0xef, 0x52, 0x26, 0x06, 0x4e, 0x8b, 0x68, 0xd1, 0xbb, 0x50, 0x98, 0x70, 0x67,
+ 0x37, 0x16, 0xbd, 0x89, 0x91, 0xd0, 0x08, 0x1e, 0x7d, 0x01, 0x40, 0x96, 0x02, 0xd6, 0xdf, 0x7c,
+ 0x25, 0xb8, 0x16, 0x5b, 0x44, 0xe4, 0xa1, 0xa0, 0x0b, 0x02, 0x03, 0xa0, 0x9f, 0x40, 0x3d, 0x36,
+ 0xaf, 0xf9, 0x82, 0x70, 0x81, 0x74, 0x35, 0x79, 0x6a, 0xa3, 0xfb, 0xb0, 0xc0, 0x5f, 0xab, 0xf0,
+ 0xd5, 0x40, 0x52, 0x97, 0xd8, 0x00, 0x69, 0x21, 0x1d, 0x11, 0x96, 0x1f, 0xc2, 0x78, 0x78, 0xc8,
+ 0x1d, 0x9e, 0x6b, 0xb2, 0x4f, 0x12, 0x1b, 0x97, 0xf0, 0x7c, 0xc6, 0xc3, 0x43, 0xf4, 0x08, 0x1a,
+ 0x89, 0x49, 0xce, 0x5d, 0x9a, 0x0b, 0xc4, 0x5d, 0x8c, 0xcf, 0x73, 0xf5, 0x57, 0x39, 0xa8, 0x88,
+ 0xe7, 0xa3, 0xc2, 0xcc, 0xe4, 0x24, 0x8b, 0xf7, 0x19, 0xc0, 0x40, 0xac, 0x36, 0x7c, 0xb4, 0x56,
+ 0xb2, 0x56, 0x22, 0x4d, 0xa2, 0x43, 0x1f, 0xc0, 0x02, 0x53, 0x0b, 0x9f, 0x8f, 0x96, 0x7c, 0xdb,
+ 0x95, 0x21, 0xb4, 0x90, 0x42, 0xfd, 0x06, 0x4a, 0xdc, 0xd3, 0xcd, 0x12, 0x20, 0xfe, 0x00, 0x3d,
+ 0x7f, 0xb5, 0x07, 0xe8, 0xff, 0x23, 0x07, 0x4a, 0xf2, 0x72, 0x28, 0xba, 0x1b, 0x9b, 0xc9, 0x2b,
+ 0xc9, 0x6b, 0xa4, 0xd2, 0x34, 0x96, 0xf3, 0x35, 0xe5, 0xaf, 0x90, 0xaf, 0x29, 0x2b, 0x35, 0xa4,
+ 0xfc, 0x28, 0xbb, 0x78, 0xd9, 0xa3, 0x6c, 0xf4, 0x31, 0x2c, 0x98, 0x78, 0x68, 0x10, 0x6b, 0x30,
+ 0x7f, 0xd1, 0x44, 0x0a, 0xa9, 0xd4, 0x7f, 0x98, 0x83, 0x82, 0xe6, 0x18, 0x68, 0x11, 0xf2, 0x46,
+ 0xb8, 0x47, 0x92, 0x37, 0x7c, 0xf4, 0x16, 0x70, 0x4b, 0x3c, 0xc6, 0xa1, 0xe7, 0x14, 0x01, 0xc8,
+ 0x22, 0x33, 0x31, 0x28, 0x8a, 0xbf, 0xf3, 0x60, 0x5f, 0xd2, 0x5d, 0xe1, 0x62, 0xec, 0xae, 0x70,
+ 0xf8, 0xc4, 0x61, 0xfe, 0xe2, 0x34, 0x32, 0xea, 0x1d, 0xf6, 0xdc, 0xc6, 0x31, 0x2e, 0x4b, 0x0d,
+ 0xc3, 0xb2, 0x60, 0x50, 0xc2, 0x28, 0x0b, 0x86, 0xe7, 0x18, 0x19, 0x59, 0x30, 0x08, 0x11, 0x45,
+ 0xa9, 0x3e, 0x14, 0x9e, 0x79, 0xc3, 0x4c, 0xed, 0x58, 0x84, 0xbc, 0xc7, 0x82, 0xe3, 0x9a, 0x96,
+ 0xf7, 0x4c, 0xea, 0x5b, 0xb2, 0x3b, 0xc3, 0x1e, 0xf3, 0xd2, 0x6a, 0x5a, 0x99, 0x01, 0x34, 0x9a,
+ 0x2f, 0x8c, 0xdf, 0x48, 0xf6, 0x02, 0x3a, 0x26, 0x35, 0xad, 0xcc, 0x00, 0x5a, 0xc0, 0x2f, 0x77,
+ 0xb2, 0x4b, 0x68, 0x79, 0xcb, 0x54, 0x7f, 0x9d, 0x83, 0x95, 0x5d, 0xd6, 0xd9, 0x74, 0x00, 0x76,
+ 0x2d, 0x3f, 0x30, 0xec, 0x01, 0x46, 0xdb, 0x20, 0x76, 0x7b, 0xd9, 0x46, 0xae, 0x6e, 0x72, 0x14,
+ 0x6f, 0xeb, 0x6a, 0x88, 0x4e, 0x95, 0xa3, 0xe7, 0xc6, 0x19, 0xe5, 0xd8, 0x38, 0xad, 0x86, 0xe8,
+ 0x58, 0x39, 0xf5, 0xdf, 0x17, 0xa1, 0xc4, 0x9e, 0xbe, 0xa6, 0x06, 0x7b, 0x13, 0x2a, 0xd1, 0x4e,
+ 0x34, 0x4f, 0x72, 0xe6, 0x85, 0x5b, 0xcf, 0x37, 0xa1, 0x4a, 0x8c, 0x36, 0xb6, 0xd9, 0x81, 0x6a,
+ 0x81, 0x39, 0x19, 0x0c, 0x44, 0x0f, 0x54, 0xdf, 0x07, 0x85, 0x13, 0x70, 0xe3, 0xc0, 0x35, 0xb5,
+ 0xa2, 0x35, 0x18, 0xbc, 0x15, 0x82, 0x63, 0xaf, 0x19, 0xe6, 0x13, 0xaf, 0x19, 0x3e, 0xcc, 0x8c,
+ 0x22, 0xf9, 0xb1, 0x63, 0x2a, 0x52, 0xfc, 0xc5, 0xec, 0x60, 0x76, 0xe1, 0x55, 0xf6, 0x8b, 0x67,
+ 0x84, 0xb4, 0x7d, 0x58, 0xe3, 0x33, 0x24, 0xd9, 0xc7, 0x6c, 0x6d, 0xbc, 0x11, 0xf3, 0xf8, 0x53,
+ 0x83, 0xab, 0xad, 0x98, 0x59, 0x43, 0xfe, 0x90, 0xde, 0x3c, 0x18, 0x62, 0x13, 0x7b, 0xec, 0x25,
+ 0x68, 0x25, 0xb9, 0xba, 0xef, 0xc8, 0x68, 0x2d, 0x4e, 0xfd, 0x86, 0xde, 0x10, 0x24, 0x37, 0x10,
+ 0xaa, 0x57, 0xdd, 0x40, 0x50, 0x1d, 0xa8, 0xc7, 0xe4, 0xbb, 0x60, 0xcb, 0x29, 0xfe, 0x88, 0x32,
+ 0x9f, 0x7a, 0x44, 0xf9, 0x0e, 0x2c, 0xb2, 0xf8, 0x5c, 0x37, 0x7c, 0x5d, 0x84, 0x42, 0x75, 0xad,
+ 0xc6, 0xa0, 0x2d, 0x9f, 0xba, 0x84, 0x7f, 0x9a, 0x83, 0x0a, 0x7d, 0x1d, 0xd6, 0xb1, 0x87, 0xce,
+ 0x0f, 0xf2, 0x30, 0xed, 0x0e, 0x34, 0xec, 0xe9, 0x44, 0x97, 0x1e, 0x05, 0xf2, 0xbb, 0x18, 0x8b,
+ 0xf6, 0x74, 0x22, 0x3f, 0xaa, 0xbc, 0x06, 0x65, 0x9b, 0x6f, 0x25, 0x87, 0x57, 0x7f, 0x6c, 0xb6,
+ 0x8b, 0x8c, 0x6e, 0x43, 0x8d, 0xa0, 0xc4, 0x3d, 0x2c, 0x76, 0xd9, 0xa2, 0x6a, 0x4f, 0x27, 0x2d,
+ 0x0e, 0x52, 0x7f, 0x4c, 0x9f, 0xb8, 0x6b, 0xd6, 0x31, 0x69, 0x48, 0xb8, 0xb6, 0x85, 0xef, 0xa9,
+ 0x52, 0x19, 0x3e, 0x44, 0x93, 0xd9, 0x93, 0x16, 0xf5, 0x21, 0x4d, 0x90, 0x2c, 0x4a, 0xf3, 0x05,
+ 0xef, 0xaa, 0xc5, 0xef, 0xfd, 0x5e, 0x01, 0x4a, 0x8f, 0x59, 0x73, 0x6b, 0x50, 0xd6, 0xda, 0x47,
+ 0x6d, 0xed, 0x59, 0x7b, 0x57, 0x99, 0x43, 0x00, 0xc5, 0x4e, 0xef, 0xf4, 0x33, 0xe5, 0xe5, 0x8b,
+ 0x22, 0xff, 0xbd, 0xad, 0xbc, 0x7c, 0x51, 0x46, 0x75, 0x58, 0x20, 0x70, 0xfd, 0x60, 0x47, 0xf9,
+ 0xd5, 0x8b, 0x22, 0xff, 0xdc, 0x66, 0x9f, 0x65, 0xd4, 0x80, 0x0a, 0xc3, 0xf6, 0xf6, 0x8f, 0x94,
+ 0xdf, 0x7f, 0x51, 0xe4, 0x80, 0xed, 0x10, 0x50, 0x46, 0x8b, 0x50, 0xa6, 0x14, 0xcf, 0x7a, 0x87,
+ 0xca, 0x8b, 0x97, 0x45, 0xfe, 0xbd, 0xcd, 0xbf, 0xcb, 0x68, 0x09, 0xaa, 0x21, 0x9e, 0x30, 0x7d,
+ 0xf9, 0xb2, 0xc8, 0x41, 0xdb, 0x11, 0xa8, 0x4c, 0x24, 0x7a, 0x46, 0x38, 0xfe, 0xc7, 0x17, 0x26,
+ 0xf9, 0xdd, 0x26, 0xa5, 0xff, 0xf4, 0x85, 0x89, 0x2a, 0x50, 0xd0, 0xfa, 0x3b, 0xca, 0xef, 0xbf,
+ 0x2c, 0x22, 0x05, 0x80, 0x32, 0x6a, 0x1f, 0xee, 0xb4, 0x7a, 0xca, 0xdf, 0x7f, 0x11, 0x42, 0xb6,
+ 0x05, 0xa4, 0x8c, 0x56, 0x60, 0xf1, 0xf1, 0x7e, 0xf7, 0x67, 0xfa, 0x51, 0xaf, 0xbd, 0xa3, 0xd3,
+ 0xe6, 0xfe, 0xc1, 0xcb, 0x62, 0x0a, 0xba, 0xad, 0xfc, 0xc1, 0xcb, 0x32, 0x6a, 0x02, 0x8a, 0xd3,
+ 0x52, 0x91, 0x7f, 0xfd, 0xb2, 0x98, 0xc2, 0x6c, 0x73, 0x4c, 0x19, 0xad, 0x81, 0x12, 0x61, 0xf6,
+ 0x1f, 0x70, 0xb8, 0x89, 0x16, 0xa1, 0xd4, 0xed, 0xb5, 0xbe, 0x79, 0xda, 0x56, 0xfe, 0xd7, 0xcb,
+ 0x3f, 0x7e, 0x51, 0xbc, 0xb7, 0x03, 0xe5, 0x50, 0x4f, 0x11, 0x40, 0x69, 0x6f, 0xbf, 0xfb, 0xa8,
+ 0xb5, 0xaf, 0xcc, 0x45, 0x29, 0x0a, 0xe9, 0x2d, 0xba, 0xd6, 0xee, 0xef, 0xe8, 0x9d, 0x43, 0x25,
+ 0x8f, 0xaa, 0xb0, 0x40, 0x7e, 0x77, 0x9f, 0xf6, 0x59, 0xee, 0xc2, 0x67, 0xda, 0x63, 0xa5, 0x78,
+ 0x6f, 0x3f, 0xf6, 0x3a, 0x94, 0x2d, 0x56, 0x48, 0x81, 0xda, 0x7e, 0xb7, 0xfb, 0xf5, 0xd3, 0x9e,
+ 0xde, 0x7e, 0xde, 0xda, 0xe9, 0x2b, 0x73, 0x68, 0x09, 0xea, 0x1c, 0xb2, 0xdf, 0x3d, 0xdc, 0x6b,
+ 0x6b, 0x4a, 0x0e, 0x21, 0x58, 0xe4, 0xa0, 0xa3, 0x27, 0x5d, 0xad, 0xdf, 0xd6, 0x94, 0xfc, 0xbd,
+ 0x5f, 0xd1, 0x87, 0xc3, 0x62, 0xbf, 0x82, 0xde, 0xe2, 0xd3, 0xda, 0x8f, 0x3b, 0xcf, 0x95, 0x39,
+ 0xa2, 0x29, 0x87, 0xed, 0xce, 0xde, 0x93, 0x47, 0x5d, 0x52, 0x7a, 0x01, 0x0a, 0xfd, 0xd6, 0x1e,
+ 0x17, 0xeb, 0x48, 0xef, 0xb5, 0xfa, 0x4f, 0x94, 0x02, 0xaa, 0x43, 0x65, 0xa7, 0x7b, 0x70, 0xf0,
+ 0xf4, 0xb0, 0xd3, 0xff, 0x56, 0x21, 0x63, 0x58, 0x6f, 0x3f, 0xef, 0xeb, 0x11, 0x68, 0x9e, 0x84,
+ 0x71, 0xfb, 0x2d, 0x6d, 0xaf, 0x2d, 0x01, 0x4b, 0x8c, 0xf5, 0xf3, 0xbe, 0xfe, 0xa4, 0xdb, 0x53,
+ 0x16, 0xee, 0xbd, 0x0f, 0x15, 0xb1, 0x4d, 0x41, 0x2f, 0x16, 0x1f, 0x7e, 0x2b, 0xdf, 0x30, 0x06,
+ 0x28, 0x75, 0x0e, 0x9f, 0xb5, 0xb5, 0xbe, 0x92, 0xbf, 0x77, 0x0f, 0x94, 0xe4, 0x26, 0x04, 0x2a,
+ 0x41, 0xbe, 0xfd, 0x8d, 0x32, 0x47, 0xfe, 0xee, 0xb5, 0x95, 0x1c, 0xf9, 0xbb, 0xdf, 0x56, 0xf2,
+ 0xf7, 0x3e, 0xe6, 0x97, 0x79, 0x78, 0xac, 0x10, 0xdd, 0x5d, 0x26, 0x9d, 0xbc, 0xb3, 0xd3, 0xee,
+ 0xf5, 0x19, 0x73, 0xad, 0xfd, 0x3b, 0xed, 0x1d, 0xc2, 0xfc, 0x29, 0x2c, 0x67, 0xc4, 0x7a, 0xa4,
+ 0x51, 0x42, 0x76, 0xbd, 0xb5, 0x4b, 0xa6, 0xcd, 0x0a, 0x28, 0x11, 0x48, 0x6b, 0x1f, 0x74, 0x9f,
+ 0x91, 0x8a, 0x57, 0x61, 0x49, 0x86, 0xf2, 0x4b, 0xd1, 0xf7, 0x3e, 0x82, 0x7a, 0x2c, 0xc0, 0x23,
+ 0x3d, 0x78, 0xd0, 0xde, 0xd5, 0x0f, 0xba, 0x84, 0x55, 0x03, 0xaa, 0xe4, 0x23, 0x24, 0xcf, 0xdd,
+ 0xfb, 0x10, 0x20, 0xf2, 0x22, 0x45, 0x76, 0x58, 0xd2, 0x09, 0x07, 0xbd, 0xae, 0xc6, 0x65, 0x6e,
+ 0x3f, 0xa7, 0xbf, 0xf3, 0x0f, 0xfe, 0xdb, 0xdb, 0x50, 0xde, 0x23, 0xd3, 0xbe, 0xe5, 0x5a, 0x68,
+ 0x1f, 0xaa, 0x52, 0x1e, 0x0b, 0xf4, 0x56, 0xcc, 0xb7, 0x4d, 0xa4, 0xc7, 0xd8, 0xb8, 0x3e, 0x03,
+ 0xcb, 0x5f, 0xbc, 0xce, 0xa1, 0x0e, 0x40, 0x94, 0xe9, 0x02, 0x6d, 0xca, 0xe4, 0x89, 0xa4, 0x18,
+ 0x1b, 0x6f, 0x65, 0x23, 0x05, 0xab, 0xc7, 0x50, 0x11, 0xf9, 0x3d, 0x90, 0xb4, 0xa1, 0x94, 0x4c,
+ 0x04, 0xb2, 0xb1, 0x99, 0x89, 0x13, 0x7c, 0xf6, 0xa1, 0x2a, 0x65, 0xda, 0x96, 0x1b, 0x98, 0x4e,
+ 0xdd, 0x2d, 0x37, 0x30, 0x2b, 0x3d, 0xf7, 0x1c, 0x7a, 0x0a, 0x8b, 0xf1, 0x1c, 0xdb, 0xe8, 0xa6,
+ 0x6c, 0xd3, 0x33, 0x52, 0x77, 0x6f, 0xdc, 0x9a, 0x4d, 0x20, 0xb3, 0x8d, 0xa7, 0xce, 0x96, 0xd9,
+ 0x66, 0xa6, 0xee, 0x96, 0xd9, 0x66, 0x67, 0xdd, 0x66, 0x6d, 0x97, 0xf2, 0xd8, 0xcb, 0x6d, 0x4f,
+ 0xa7, 0xce, 0x97, 0xdb, 0x9e, 0x91, 0xfc, 0x5e, 0x9d, 0x43, 0x1a, 0xd4, 0x63, 0x69, 0x85, 0xd1,
+ 0x8d, 0x98, 0x31, 0x4d, 0x73, 0xbc, 0x39, 0x13, 0x2f, 0x78, 0xfe, 0x4d, 0x58, 0x4a, 0xa5, 0x2b,
+ 0x46, 0xea, 0xe5, 0x69, 0x93, 0x37, 0xde, 0xbe, 0x90, 0x46, 0xf0, 0xff, 0x1b, 0xa0, 0x24, 0xd3,
+ 0x12, 0x23, 0xe9, 0x66, 0xd2, 0x8c, 0x6c, 0xc8, 0x1b, 0xea, 0x45, 0x24, 0xf2, 0xa8, 0xc5, 0x93,
+ 0x14, 0xcb, 0xa3, 0x96, 0x99, 0xf1, 0x58, 0x1e, 0xb5, 0x19, 0xf9, 0x8d, 0xe7, 0xd0, 0x73, 0x68,
+ 0x24, 0xf2, 0x10, 0x23, 0x59, 0x87, 0x32, 0x93, 0x1f, 0x6f, 0xdc, 0xbe, 0x80, 0x42, 0x70, 0x7e,
+ 0x08, 0x25, 0xe6, 0x12, 0xa0, 0xf5, 0xd8, 0x60, 0x47, 0x8f, 0xe4, 0x37, 0x9a, 0x69, 0x84, 0x28,
+ 0xfe, 0x39, 0x2c, 0xf0, 0x57, 0xff, 0x28, 0x4e, 0x26, 0x25, 0x02, 0xd8, 0x48, 0x24, 0x88, 0x50,
+ 0xe7, 0x3e, 0xc9, 0x11, 0x3d, 0x94, 0x5e, 0xc8, 0xcb, 0x7a, 0x98, 0x7e, 0xa6, 0x2f, 0xeb, 0x61,
+ 0xd6, 0xb3, 0xfa, 0x39, 0xf4, 0x53, 0x58, 0xe0, 0x7b, 0xfc, 0x28, 0x7d, 0x4e, 0x10, 0x72, 0xb9,
+ 0x96, 0x81, 0x91, 0x97, 0xa9, 0x28, 0x9b, 0xbf, 0xbc, 0x4c, 0xa5, 0xfe, 0x1f, 0x81, 0xbc, 0x4c,
+ 0x65, 0xfc, 0x03, 0x80, 0x39, 0xb4, 0x0b, 0x10, 0xa5, 0xeb, 0x95, 0x59, 0xa5, 0x92, 0xf8, 0x6e,
+ 0x64, 0xe7, 0x96, 0xa0, 0x1d, 0xf4, 0x95, 0x48, 0x51, 0x1c, 0xbd, 0x1b, 0x91, 0x7c, 0x33, 0xf1,
+ 0xef, 0x24, 0x36, 0x12, 0x29, 0xfa, 0x69, 0xe1, 0xc7, 0x50, 0x11, 0x39, 0xa3, 0xe5, 0x95, 0x32,
+ 0x99, 0xb1, 0x5a, 0x5e, 0x29, 0xd3, 0x49, 0xa6, 0x59, 0xaf, 0x88, 0x8c, 0xd2, 0xb1, 0x5e, 0x49,
+ 0x26, 0x9f, 0x8e, 0xf5, 0x4a, 0x3a, 0x09, 0xf5, 0x1c, 0x7a, 0x02, 0x15, 0x91, 0x05, 0x5a, 0x16,
+ 0x29, 0x99, 0x9b, 0x5a, 0x16, 0x29, 0x9d, 0x36, 0x7a, 0xee, 0x6e, 0x8e, 0xa8, 0x2c, 0xcb, 0xbb,
+ 0x8c, 0xd6, 0x67, 0xa4, 0x7d, 0xde, 0x68, 0xa6, 0x11, 0xb2, 0x15, 0x11, 0x29, 0x96, 0x65, 0x41,
+ 0x92, 0x99, 0x9b, 0x37, 0x36, 0x33, 0x71, 0xb2, 0xce, 0xf1, 0xa4, 0xb2, 0x09, 0xd5, 0x97, 0xb2,
+ 0x91, 0xca, 0x3a, 0x97, 0xc8, 0x40, 0x2b, 0xb4, 0x36, 0xc9, 0x21, 0x9e, 0x6c, 0x36, 0xa1, 0xb5,
+ 0x09, 0x0e, 0x42, 0x6b, 0x29, 0x93, 0x94, 0xc0, 0x32, 0x9f, 0xb7, 0xb2, 0x91, 0x32, 0xab, 0x28,
+ 0xdf, 0x2b, 0x4a, 0xe9, 0xc5, 0x0c, 0x56, 0x19, 0x29, 0x62, 0xa9, 0x8d, 0x91, 0x92, 0xbe, 0xa2,
+ 0xb4, 0x66, 0xc8, 0xcc, 0xae, 0xcf, 0xc0, 0xca, 0xe3, 0x25, 0x52, 0xb6, 0xca, 0xe3, 0x95, 0xcc,
+ 0xfc, 0x2a, 0x8f, 0x57, 0x3a, 0xc7, 0x2b, 0xb5, 0x55, 0xb1, 0xf4, 0xaf, 0xb2, 0xad, 0xca, 0xca,
+ 0x24, 0x2b, 0xdb, 0xaa, 0xec, 0xbc, 0xb1, 0x62, 0xf5, 0x74, 0x8c, 0xe4, 0xea, 0x29, 0x36, 0x9e,
+ 0x92, 0xab, 0x67, 0xb4, 0xd1, 0xc4, 0x3a, 0x4a, 0x4a, 0xd5, 0x8a, 0x52, 0xfd, 0x2a, 0xa7, 0xa3,
+ 0x95, 0x3b, 0x2a, 0x2b, 0xbf, 0xeb, 0x1c, 0x9f, 0x17, 0xcf, 0xbc, 0x61, 0x62, 0x5e, 0x44, 0x69,
+ 0x56, 0x13, 0xf3, 0x42, 0x4e, 0xa5, 0x2a, 0xcd, 0x0b, 0xc2, 0x21, 0x35, 0x2f, 0x24, 0x26, 0x9b,
+ 0x99, 0xb8, 0x44, 0x9f, 0x24, 0xc4, 0x88, 0xa5, 0x9e, 0x4d, 0xf4, 0x49, 0xbc, 0xb8, 0x46, 0x77,
+ 0xee, 0xa4, 0x13, 0xd2, 0x1b, 0x31, 0xe2, 0x54, 0x12, 0x52, 0x79, 0x98, 0x32, 0xb3, 0xb6, 0x32,
+ 0x9e, 0xb1, 0x6c, 0xaa, 0x32, 0xcf, 0xac, 0x34, 0xad, 0x32, 0xcf, 0xec, 0x34, 0xac, 0xd4, 0x8d,
+ 0x48, 0xe6, 0x4c, 0x95, 0xdd, 0x88, 0x19, 0x49, 0x5a, 0x65, 0x37, 0x62, 0x66, 0xca, 0x55, 0xea,
+ 0x03, 0xa5, 0x12, 0xa6, 0xca, 0x3e, 0xd0, 0xac, 0x8c, 0xac, 0xb2, 0x0f, 0x34, 0x3b, 0xe3, 0xea,
+ 0x1c, 0xea, 0x42, 0x4d, 0x4e, 0xae, 0x8a, 0xe2, 0x8e, 0x5e, 0x32, 0x8f, 0xe8, 0xc6, 0x8d, 0x59,
+ 0x68, 0x99, 0xa1, 0x9c, 0x16, 0x15, 0xc5, 0xbd, 0xe6, 0x8b, 0x18, 0x66, 0x66, 0x53, 0x65, 0x1e,
+ 0x4f, 0x3c, 0xe1, 0x29, 0x4a, 0x79, 0xcd, 0x29, 0xb6, 0xb7, 0x2f, 0xa0, 0x90, 0x07, 0x2e, 0x99,
+ 0xe1, 0x54, 0x1e, 0xb8, 0x19, 0xb9, 0x54, 0x37, 0xd4, 0x8b, 0x48, 0x12, 0x21, 0x0a, 0x3f, 0x3d,
+ 0x88, 0x87, 0x28, 0xb1, 0x7c, 0x9d, 0x89, 0x10, 0x25, 0x91, 0x1c, 0x93, 0xf2, 0x11, 0xf9, 0x20,
+ 0x65, 0x3e, 0xc9, 0x44, 0xa9, 0x32, 0x9f, 0x74, 0x2a, 0x53, 0x3a, 0x2e, 0x72, 0x26, 0x47, 0x79,
+ 0x5c, 0x32, 0x72, 0x9c, 0x6e, 0xdc, 0x98, 0x85, 0x8e, 0x7b, 0xfc, 0x52, 0x6a, 0xc6, 0xb8, 0xc7,
+ 0x9f, 0x4e, 0x4c, 0x1a, 0xf7, 0xf8, 0xb3, 0x32, 0x81, 0xce, 0x21, 0x93, 0x66, 0x00, 0x4e, 0x1d,
+ 0x8f, 0xbc, 0x93, 0xd1, 0x45, 0xa9, 0x3c, 0x93, 0x1b, 0xef, 0x5e, 0x42, 0x25, 0xd7, 0x92, 0x91,
+ 0x62, 0x53, 0xae, 0x65, 0x76, 0x6e, 0x4f, 0xb9, 0x96, 0x8b, 0xf2, 0x74, 0xce, 0xa1, 0x89, 0xf8,
+ 0x2f, 0x42, 0xc9, 0x8a, 0xee, 0x64, 0xf7, 0x6d, 0xba, 0xae, 0xbb, 0x97, 0x13, 0x8a, 0xea, 0x5c,
+ 0x91, 0xfc, 0x37, 0x7d, 0xba, 0x34, 0xa3, 0xe3, 0xd3, 0x15, 0xbe, 0x7f, 0x05, 0x4a, 0xd9, 0x4f,
+ 0x88, 0xf6, 0x10, 0xd1, 0x66, 0x32, 0x36, 0x90, 0xf6, 0x25, 0x37, 0xde, 0xca, 0x46, 0x26, 0x16,
+ 0x8d, 0x28, 0x45, 0x51, 0x7c, 0xd1, 0x48, 0xfe, 0x77, 0xa4, 0xc4, 0xa2, 0x91, 0xfe, 0xbf, 0x4a,
+ 0xd2, 0xa2, 0x11, 0xf1, 0x4c, 0x2d, 0x1a, 0x29, 0xb6, 0xb7, 0x2f, 0xa0, 0x90, 0x39, 0x27, 0xfe,
+ 0x79, 0x12, 0x4a, 0x45, 0xdb, 0x17, 0x71, 0x9e, 0xf1, 0x9f, 0x97, 0xd4, 0x39, 0x64, 0xd0, 0x7f,
+ 0x18, 0x96, 0xcc, 0x95, 0xf3, 0x76, 0xdc, 0x00, 0x65, 0xfe, 0xab, 0xa5, 0x8d, 0x77, 0x2e, 0x26,
+ 0x0a, 0xab, 0x38, 0x2e, 0xd1, 0x84, 0x7f, 0x9f, 0xfe, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x29,
+ 0xb8, 0x04, 0xd1, 0x52, 0x6f, 0x00, 0x00,
}
diff --git a/api/gobgp.proto b/api/gobgp.proto
index cf0f2653..02644e6b 100644
--- a/api/gobgp.proto
+++ b/api/gobgp.proto
@@ -81,6 +81,10 @@ service GobgpApi {
rpc DeletePolicyAssignment(DeletePolicyAssignmentRequest) returns (DeletePolicyAssignmentResponse) {}
rpc ReplacePolicyAssignment(ReplacePolicyAssignmentRequest) returns (ReplacePolicyAssignmentResponse) {}
rpc GetRibInfo(GetRibInfoRequest) returns (GetRibInfoResponse) {}
+ rpc AddPeerGroup(AddPeerGroupRequest) returns (AddPeerGroupResponse) {}
+ rpc DeletePeerGroup(DeletePeerGroupRequest) returns (DeletePeerGroupResponse) {}
+ rpc UpdatePeerGroup(UpdatePeerGroupRequest) returns (UpdatePeerGroupResponse) {}
+ rpc AddDynamicNeighbor(AddDynamicNeighborRequest) returns (AddDynamicNeighborResponse) {}
}
// Constants for address families
@@ -174,6 +178,36 @@ message UpdateNeighborResponse {
bool needs_soft_reset_in = 1;
}
+message AddPeerGroupRequest {
+ PeerGroup peer_group = 1;
+}
+
+message AddPeerGroupResponse {
+}
+
+message DeletePeerGroupRequest {
+ PeerGroup peer_group = 1;
+}
+
+message DeletePeerGroupResponse {
+}
+
+message UpdatePeerGroupRequest {
+ PeerGroup peer_group = 1;
+ bool do_soft_reset_in = 2;
+}
+
+message UpdatePeerGroupResponse {
+ bool needs_soft_reset_in = 1;
+}
+
+message AddDynamicNeighborRequest {
+ DynamicNeighbor dynamic_neighbor = 1;
+}
+
+message AddDynamicNeighborResponse {
+}
+
message ResetNeighborRequest {
string address = 1;
string communication = 2;
@@ -676,6 +710,29 @@ message Peer {
AddPaths add_paths = 12;
}
+message PeerGroup {
+ // Note: Regarding to the consistency with OpenConfig model, a list of
+ // address family should be removed from here, and should be configured with
+ // the list of AfiSafi instead.
+ repeated uint32 families = 1;
+ ApplyPolicy apply_policy = 2;
+ PeerGroupConf conf = 3;
+ EbgpMultihop ebgp_multihop = 4;
+ RouteReflector route_reflector = 5;
+ PeerGroupState info = 6;
+ Timers timers = 7;
+ Transport transport = 8;
+ RouteServer route_server = 9;
+ GracefulRestart graceful_restart = 10;
+ repeated AfiSafi afi_safis = 11;
+ AddPaths add_paths = 12;
+}
+
+message DynamicNeighbor {
+ string prefix = 1;
+ string peer_group = 2;
+}
+
message ApplyPolicy {
PolicyAssignment in_policy = 1;
PolicyAssignment export_policy = 2;
@@ -718,6 +775,42 @@ message PeerConf {
bool replace_peer_as = 19;
}
+message PeerGroupConf {
+ string auth_password = 1;
+ string description = 2;
+ uint32 local_as = 3;
+ uint32 peer_as = 5;
+ string peer_group_name = 6;
+ uint32 peer_type = 7;
+ enum RemovePrivateAs {
+ NONE = 0;
+ ALL = 1;
+ REPLACE = 2;
+ }
+ RemovePrivateAs remove_private_as = 8;
+ bool route_flap_damping = 9;
+ uint32 send_community = 10;
+}
+
+message PeerGroupState {
+ string auth_password = 1;
+ string description = 2;
+ uint32 local_as = 3;
+ uint32 peer_as = 5;
+ string peer_group_name = 6;
+ uint32 peer_type = 7;
+ enum RemovePrivateAs {
+ NONE = 0;
+ ALL = 1;
+ REPLACE = 2;
+ }
+ RemovePrivateAs remove_private_as = 8;
+ bool route_flap_damping = 9;
+ uint32 send_community = 10;
+ uint32 total_paths = 11;
+ uint32 total_prefixes = 12;
+}
+
message EbgpMultihop {
bool enabled = 1;
uint32 multihop_ttl = 2;
diff --git a/api/grpc_server.go b/api/grpc_server.go
index 8fc6e085..aab7c52c 100644
--- a/api/grpc_server.go
+++ b/api/grpc_server.go
@@ -349,6 +349,75 @@ func NewPeerFromConfigStruct(pconf *config.Neighbor) *Peer {
}
}
+func NewPeerGroupFromConfigStruct(pconf *config.PeerGroup) *PeerGroup {
+ families := make([]uint32, 0, len(pconf.AfiSafis))
+ afiSafis := make([]*AfiSafi, 0, len(pconf.AfiSafis))
+ for _, f := range pconf.AfiSafis {
+ families = append(families, extractFamilyFromConfigAfiSafi(&f))
+ if afiSafi := NewAfiSafiFromConfigStruct(&f); afiSafi != nil {
+ afiSafis = append(afiSafis, afiSafi)
+ }
+ }
+
+ timer := pconf.Timers
+ s := pconf.State
+ return &PeerGroup{
+ Families: families,
+ ApplyPolicy: NewApplyPolicyFromConfigStruct(&pconf.ApplyPolicy),
+ Conf: &PeerGroupConf{
+ PeerAs: pconf.Config.PeerAs,
+ LocalAs: pconf.Config.LocalAs,
+ PeerType: uint32(pconf.Config.PeerType.ToInt()),
+ AuthPassword: pconf.Config.AuthPassword,
+ RouteFlapDamping: pconf.Config.RouteFlapDamping,
+ Description: pconf.Config.Description,
+ PeerGroupName: pconf.Config.PeerGroupName,
+ },
+ Info: &PeerGroupState{
+ PeerAs: s.PeerAs,
+ PeerType: uint32(s.PeerType.ToInt()),
+ TotalPaths: s.TotalPaths,
+ TotalPrefixes: s.TotalPrefixes,
+ },
+ Timers: &Timers{
+ Config: &TimersConfig{
+ ConnectRetry: uint64(timer.Config.ConnectRetry),
+ HoldTime: uint64(timer.Config.HoldTime),
+ KeepaliveInterval: uint64(timer.Config.KeepaliveInterval),
+ },
+ State: &TimersState{
+ KeepaliveInterval: uint64(timer.State.KeepaliveInterval),
+ NegotiatedHoldTime: uint64(timer.State.NegotiatedHoldTime),
+ Uptime: uint64(timer.State.Uptime),
+ Downtime: uint64(timer.State.Downtime),
+ },
+ },
+ RouteReflector: &RouteReflector{
+ RouteReflectorClient: pconf.RouteReflector.Config.RouteReflectorClient,
+ RouteReflectorClusterId: string(pconf.RouteReflector.Config.RouteReflectorClusterId),
+ },
+ RouteServer: &RouteServer{
+ RouteServerClient: pconf.RouteServer.Config.RouteServerClient,
+ },
+ GracefulRestart: &GracefulRestart{
+ Enabled: pconf.GracefulRestart.Config.Enabled,
+ RestartTime: uint32(pconf.GracefulRestart.Config.RestartTime),
+ HelperOnly: pconf.GracefulRestart.Config.HelperOnly,
+ DeferralTime: uint32(pconf.GracefulRestart.Config.DeferralTime),
+ NotificationEnabled: pconf.GracefulRestart.Config.NotificationEnabled,
+ LonglivedEnabled: pconf.GracefulRestart.Config.LongLivedEnabled,
+ LocalRestarting: pconf.GracefulRestart.State.LocalRestarting,
+ },
+ Transport: &Transport{
+ RemotePort: uint32(pconf.Transport.Config.RemotePort),
+ LocalAddress: pconf.Transport.Config.LocalAddress,
+ PassiveMode: pconf.Transport.Config.PassiveMode,
+ },
+ AfiSafis: afiSafis,
+ AddPaths: NewAddPathsFromConfigStruct(&pconf.AddPaths),
+ }
+}
+
func (s *Server) GetNeighbor(ctx context.Context, arg *GetNeighborRequest) (*GetNeighborResponse, error) {
if arg == nil {
return nil, fmt.Errorf("invalid request")
@@ -1345,6 +1414,112 @@ func NewNeighborFromAPIStruct(a *Peer) (*config.Neighbor, error) {
return pconf, nil
}
+func NewPeerGroupFromAPIStruct(a *PeerGroup) (*config.PeerGroup, error) {
+ pconf := &config.PeerGroup{}
+ if a.Conf != nil {
+ pconf.Config.PeerAs = a.Conf.PeerAs
+ pconf.Config.LocalAs = a.Conf.LocalAs
+ pconf.Config.AuthPassword = a.Conf.AuthPassword
+ pconf.Config.RouteFlapDamping = a.Conf.RouteFlapDamping
+ pconf.Config.Description = a.Conf.Description
+ pconf.Config.PeerGroupName = a.Conf.PeerGroupName
+
+ switch a.Conf.RemovePrivateAs {
+ case PeerGroupConf_ALL:
+ pconf.Config.RemovePrivateAs = config.REMOVE_PRIVATE_AS_OPTION_ALL
+ case PeerGroupConf_REPLACE:
+ pconf.Config.RemovePrivateAs = config.REMOVE_PRIVATE_AS_OPTION_REPLACE
+ }
+
+ for _, af := range a.AfiSafis {
+ afiSafi := config.AfiSafi{}
+ ReadMpGracefulRestartFromAPIStruct(&afiSafi.MpGracefulRestart, af.MpGracefulRestart)
+ ReadAfiSafiConfigFromAPIStruct(&afiSafi.Config, af.Config)
+ ReadAfiSafiStateFromAPIStruct(&afiSafi.State, af.Config)
+ ReadApplyPolicyFromAPIStruct(&afiSafi.ApplyPolicy, af.ApplyPolicy)
+ ReadRouteSelectionOptionsFromAPIStruct(&afiSafi.RouteSelectionOptions, af.RouteSelectionOptions)
+ ReadUseMultiplePathsFromAPIStruct(&afiSafi.UseMultiplePaths, af.UseMultiplePaths)
+ ReadPrefixLimitFromAPIStruct(&afiSafi.PrefixLimit, af.PrefixLimits)
+ ReadRouteTargetMembershipFromAPIStruct(&afiSafi.RouteTargetMembership, af.RouteTargetMembership)
+ ReadLongLivedGracefulRestartFromAPIStruct(&afiSafi.LongLivedGracefulRestart, af.LongLivedGracefulRestart)
+ ReadAddPathsFromAPIStruct(&afiSafi.AddPaths, af.AddPaths)
+ pconf.AfiSafis = append(pconf.AfiSafis, afiSafi)
+ }
+ // For the backward compatibility, we override AfiSafi configurations
+ // with Peer.Families.
+ for _, family := range a.Families {
+ found := false
+ for _, afiSafi := range pconf.AfiSafis {
+ if uint32(afiSafi.State.Family) == family {
+ // If Peer.Families contains the same address family,
+ // we enable this address family.
+ afiSafi.Config.Enabled = true
+ found = true
+ }
+ }
+ if !found {
+ // If Peer.Families does not contain the same address family,
+ // we append AfiSafi structure with the default value.
+ pconf.AfiSafis = append(pconf.AfiSafis, config.AfiSafi{
+ Config: config.AfiSafiConfig{
+ AfiSafiName: config.AfiSafiType(bgp.RouteFamily(family).String()),
+ Enabled: true,
+ },
+ })
+ }
+ }
+ }
+
+ if a.Timers != nil {
+ if a.Timers.Config != nil {
+ pconf.Timers.Config.ConnectRetry = float64(a.Timers.Config.ConnectRetry)
+ pconf.Timers.Config.HoldTime = float64(a.Timers.Config.HoldTime)
+ pconf.Timers.Config.KeepaliveInterval = float64(a.Timers.Config.KeepaliveInterval)
+ pconf.Timers.Config.MinimumAdvertisementInterval = float64(a.Timers.Config.MinimumAdvertisementInterval)
+ }
+ if a.Timers.State != nil {
+ pconf.Timers.State.KeepaliveInterval = float64(a.Timers.State.KeepaliveInterval)
+ pconf.Timers.State.NegotiatedHoldTime = float64(a.Timers.State.NegotiatedHoldTime)
+ pconf.Timers.State.Uptime = int64(a.Timers.State.Uptime)
+ pconf.Timers.State.Downtime = int64(a.Timers.State.Downtime)
+ }
+ }
+ if a.RouteReflector != nil {
+ pconf.RouteReflector.Config.RouteReflectorClusterId = config.RrClusterIdType(a.RouteReflector.RouteReflectorClusterId)
+ pconf.RouteReflector.Config.RouteReflectorClient = a.RouteReflector.RouteReflectorClient
+ }
+ if a.RouteServer != nil {
+ pconf.RouteServer.Config.RouteServerClient = a.RouteServer.RouteServerClient
+ }
+ if a.GracefulRestart != nil {
+ pconf.GracefulRestart.Config.Enabled = a.GracefulRestart.Enabled
+ pconf.GracefulRestart.Config.RestartTime = uint16(a.GracefulRestart.RestartTime)
+ pconf.GracefulRestart.Config.HelperOnly = a.GracefulRestart.HelperOnly
+ pconf.GracefulRestart.Config.DeferralTime = uint16(a.GracefulRestart.DeferralTime)
+ pconf.GracefulRestart.Config.NotificationEnabled = a.GracefulRestart.NotificationEnabled
+ pconf.GracefulRestart.Config.LongLivedEnabled = a.GracefulRestart.LonglivedEnabled
+ pconf.GracefulRestart.State.LocalRestarting = a.GracefulRestart.LocalRestarting
+ }
+ ReadApplyPolicyFromAPIStruct(&pconf.ApplyPolicy, a.ApplyPolicy)
+ if a.Transport != nil {
+ pconf.Transport.Config.LocalAddress = a.Transport.LocalAddress
+ pconf.Transport.Config.PassiveMode = a.Transport.PassiveMode
+ pconf.Transport.Config.RemotePort = uint16(a.Transport.RemotePort)
+ }
+ if a.EbgpMultihop != nil {
+ pconf.EbgpMultihop.Config.Enabled = a.EbgpMultihop.Enabled
+ pconf.EbgpMultihop.Config.MultihopTtl = uint8(a.EbgpMultihop.MultihopTtl)
+ }
+ if a.Info != nil {
+ pconf.State.TotalPaths = a.Info.TotalPaths
+ pconf.State.TotalPrefixes = a.Info.TotalPrefixes
+ pconf.State.PeerAs = a.Info.PeerAs
+ pconf.State.PeerType = config.IntToPeerTypeMap[int(a.Info.PeerType)]
+ }
+ ReadAddPathsFromAPIStruct(&pconf.AddPaths, a.AddPaths)
+ return pconf, nil
+}
+
func (s *Server) AddNeighbor(ctx context.Context, arg *AddNeighborRequest) (*AddNeighborResponse, error) {
c, err := NewNeighborFromAPIStruct(arg.Peer)
if err != nil {
@@ -1375,6 +1550,42 @@ func (s *Server) UpdateNeighbor(ctx context.Context, arg *UpdateNeighborRequest)
return &UpdateNeighborResponse{NeedsSoftResetIn: needsSoftResetIn}, nil
}
+func (s *Server) AddPeerGroup(ctx context.Context, arg *AddPeerGroupRequest) (*AddPeerGroupResponse, error) {
+ c, err := NewPeerGroupFromAPIStruct(arg.PeerGroup)
+ if err != nil {
+ return nil, err
+ }
+ return &AddPeerGroupResponse{}, s.bgpServer.AddPeerGroup(c)
+}
+
+func (s *Server) DeletePeerGroup(ctx context.Context, arg *DeletePeerGroupRequest) (*DeletePeerGroupResponse, error) {
+ return &DeletePeerGroupResponse{}, s.bgpServer.DeletePeerGroup(&config.PeerGroup{Config: config.PeerGroupConfig{
+ PeerGroupName: arg.PeerGroup.Conf.PeerGroupName,
+ }})
+}
+
+func (s *Server) UpdatePeerGroup(ctx context.Context, arg *UpdatePeerGroupRequest) (*UpdatePeerGroupResponse, error) {
+ c, err := NewPeerGroupFromAPIStruct(arg.PeerGroup)
+ if err != nil {
+ return nil, err
+ }
+ needsSoftResetIn, err := s.bgpServer.UpdatePeerGroup(c)
+ if err != nil {
+ return nil, err
+ }
+ if arg.DoSoftResetIn && needsSoftResetIn {
+ return &UpdatePeerGroupResponse{NeedsSoftResetIn: false}, s.bgpServer.SoftResetIn("", bgp.RouteFamily(0))
+ }
+ return &UpdatePeerGroupResponse{NeedsSoftResetIn: needsSoftResetIn}, nil
+}
+
+func (s *Server) AddDynamicNeighbor(ctx context.Context, arg *AddDynamicNeighborRequest) (*AddDynamicNeighborResponse, error) {
+ return &AddDynamicNeighborResponse{}, s.bgpServer.AddDynamicNeighbor(&config.DynamicNeighbor{Config: config.DynamicNeighborConfig{
+ Prefix: arg.DynamicNeighbor.Prefix,
+ PeerGroup: arg.DynamicNeighbor.PeerGroup,
+ }})
+}
+
func NewPrefixFromApiStruct(a *Prefix) (*table.Prefix, error) {
_, prefix, err := net.ParseCIDR(a.IpPrefix)
if err != nil {