github.com/kchristidis/fabric@v1.0.4-0.20171028114726-837acd08cde1/protos/common/configtx.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // source: common/configtx.proto
     3  
     4  package common
     5  
     6  import proto "github.com/golang/protobuf/proto"
     7  import fmt "fmt"
     8  import math "math"
     9  
    10  // Reference imports to suppress errors if they are not otherwise used.
    11  var _ = proto.Marshal
    12  var _ = fmt.Errorf
    13  var _ = math.Inf
    14  
    15  // ConfigEnvelope is designed to contain _all_ configuration for a chain with no dependency
    16  // on previous configuration transactions.
    17  //
    18  // It is generated with the following scheme:
    19  //   1. Retrieve the existing configuration
    20  //   2. Note the config properties (ConfigValue, ConfigPolicy, ConfigGroup) to be modified
    21  //   3. Add any intermediate ConfigGroups to the ConfigUpdate.read_set (sparsely)
    22  //   4. Add any additional desired dependencies to ConfigUpdate.read_set (sparsely)
    23  //   5. Modify the config properties, incrementing each version by 1, set them in the ConfigUpdate.write_set
    24  //      Note: any element not modified but specified should already be in the read_set, so may be specified sparsely
    25  //   6. Create ConfigUpdate message and marshal it into ConfigUpdateEnvelope.update and encode the required signatures
    26  //     a) Each signature is of type ConfigSignature
    27  //     b) The ConfigSignature signature is over the concatenation of signature_header and the ConfigUpdate bytes (which includes a ChainHeader)
    28  //   5. Submit new Config for ordering in Envelope signed by submitter
    29  //     a) The Envelope Payload has data set to the marshaled ConfigEnvelope
    30  //     b) The Envelope Payload has a header of type Header.Type.CONFIG_UPDATE
    31  //
    32  // The configuration manager will verify:
    33  //   1. All items in the read_set exist at the read versions
    34  //   2. All items in the write_set at a different version than, or not in, the read_set have been appropriately signed according to their mod_policy
    35  //   3. The new configuration satisfies the ConfigSchema
    36  type ConfigEnvelope struct {
    37  	Config     *Config   `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
    38  	LastUpdate *Envelope `protobuf:"bytes,2,opt,name=last_update,json=lastUpdate" json:"last_update,omitempty"`
    39  }
    40  
    41  func (m *ConfigEnvelope) Reset()                    { *m = ConfigEnvelope{} }
    42  func (m *ConfigEnvelope) String() string            { return proto.CompactTextString(m) }
    43  func (*ConfigEnvelope) ProtoMessage()               {}
    44  func (*ConfigEnvelope) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
    45  
    46  func (m *ConfigEnvelope) GetConfig() *Config {
    47  	if m != nil {
    48  		return m.Config
    49  	}
    50  	return nil
    51  }
    52  
    53  func (m *ConfigEnvelope) GetLastUpdate() *Envelope {
    54  	if m != nil {
    55  		return m.LastUpdate
    56  	}
    57  	return nil
    58  }
    59  
    60  type ConfigGroupSchema struct {
    61  	Groups   map[string]*ConfigGroupSchema  `protobuf:"bytes,1,rep,name=groups" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
    62  	Values   map[string]*ConfigValueSchema  `protobuf:"bytes,2,rep,name=values" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
    63  	Policies map[string]*ConfigPolicySchema `protobuf:"bytes,3,rep,name=policies" json:"policies,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
    64  }
    65  
    66  func (m *ConfigGroupSchema) Reset()                    { *m = ConfigGroupSchema{} }
    67  func (m *ConfigGroupSchema) String() string            { return proto.CompactTextString(m) }
    68  func (*ConfigGroupSchema) ProtoMessage()               {}
    69  func (*ConfigGroupSchema) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
    70  
    71  func (m *ConfigGroupSchema) GetGroups() map[string]*ConfigGroupSchema {
    72  	if m != nil {
    73  		return m.Groups
    74  	}
    75  	return nil
    76  }
    77  
    78  func (m *ConfigGroupSchema) GetValues() map[string]*ConfigValueSchema {
    79  	if m != nil {
    80  		return m.Values
    81  	}
    82  	return nil
    83  }
    84  
    85  func (m *ConfigGroupSchema) GetPolicies() map[string]*ConfigPolicySchema {
    86  	if m != nil {
    87  		return m.Policies
    88  	}
    89  	return nil
    90  }
    91  
    92  type ConfigValueSchema struct {
    93  }
    94  
    95  func (m *ConfigValueSchema) Reset()                    { *m = ConfigValueSchema{} }
    96  func (m *ConfigValueSchema) String() string            { return proto.CompactTextString(m) }
    97  func (*ConfigValueSchema) ProtoMessage()               {}
    98  func (*ConfigValueSchema) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
    99  
   100  type ConfigPolicySchema struct {
   101  }
   102  
   103  func (m *ConfigPolicySchema) Reset()                    { *m = ConfigPolicySchema{} }
   104  func (m *ConfigPolicySchema) String() string            { return proto.CompactTextString(m) }
   105  func (*ConfigPolicySchema) ProtoMessage()               {}
   106  func (*ConfigPolicySchema) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
   107  
   108  // Config represents the config for a particular channel
   109  type Config struct {
   110  	Sequence     uint64       `protobuf:"varint,1,opt,name=sequence" json:"sequence,omitempty"`
   111  	ChannelGroup *ConfigGroup `protobuf:"bytes,2,opt,name=channel_group,json=channelGroup" json:"channel_group,omitempty"`
   112  }
   113  
   114  func (m *Config) Reset()                    { *m = Config{} }
   115  func (m *Config) String() string            { return proto.CompactTextString(m) }
   116  func (*Config) ProtoMessage()               {}
   117  func (*Config) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
   118  
   119  func (m *Config) GetSequence() uint64 {
   120  	if m != nil {
   121  		return m.Sequence
   122  	}
   123  	return 0
   124  }
   125  
   126  func (m *Config) GetChannelGroup() *ConfigGroup {
   127  	if m != nil {
   128  		return m.ChannelGroup
   129  	}
   130  	return nil
   131  }
   132  
   133  type ConfigUpdateEnvelope struct {
   134  	ConfigUpdate []byte             `protobuf:"bytes,1,opt,name=config_update,json=configUpdate,proto3" json:"config_update,omitempty"`
   135  	Signatures   []*ConfigSignature `protobuf:"bytes,2,rep,name=signatures" json:"signatures,omitempty"`
   136  }
   137  
   138  func (m *ConfigUpdateEnvelope) Reset()                    { *m = ConfigUpdateEnvelope{} }
   139  func (m *ConfigUpdateEnvelope) String() string            { return proto.CompactTextString(m) }
   140  func (*ConfigUpdateEnvelope) ProtoMessage()               {}
   141  func (*ConfigUpdateEnvelope) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
   142  
   143  func (m *ConfigUpdateEnvelope) GetConfigUpdate() []byte {
   144  	if m != nil {
   145  		return m.ConfigUpdate
   146  	}
   147  	return nil
   148  }
   149  
   150  func (m *ConfigUpdateEnvelope) GetSignatures() []*ConfigSignature {
   151  	if m != nil {
   152  		return m.Signatures
   153  	}
   154  	return nil
   155  }
   156  
   157  // ConfigUpdate is used to submit a subset of config and to have the orderer apply to Config
   158  // it is always submitted inside a ConfigUpdateEnvelope which allows the addition of signatures
   159  // resulting in a new total configuration.  The update is applied as follows:
   160  // 1. The versions from all of the elements in the read_set is verified against the versions in the existing config.
   161  //    If there is a mismatch in the read versions, then the config update fails and is rejected.
   162  // 2. Any elements in the write_set with the same version as the read_set are ignored.
   163  // 3. The corresponding mod_policy for every remaining element in the write_set is collected.
   164  // 4. Each policy is checked against the signatures from the ConfigUpdateEnvelope, any failing to verify are rejected
   165  // 5. The write_set is applied to the Config and the ConfigGroupSchema verifies that the updates were legal
   166  type ConfigUpdate struct {
   167  	ChannelId string       `protobuf:"bytes,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"`
   168  	ReadSet   *ConfigGroup `protobuf:"bytes,2,opt,name=read_set,json=readSet" json:"read_set,omitempty"`
   169  	WriteSet  *ConfigGroup `protobuf:"bytes,3,opt,name=write_set,json=writeSet" json:"write_set,omitempty"`
   170  }
   171  
   172  func (m *ConfigUpdate) Reset()                    { *m = ConfigUpdate{} }
   173  func (m *ConfigUpdate) String() string            { return proto.CompactTextString(m) }
   174  func (*ConfigUpdate) ProtoMessage()               {}
   175  func (*ConfigUpdate) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
   176  
   177  func (m *ConfigUpdate) GetChannelId() string {
   178  	if m != nil {
   179  		return m.ChannelId
   180  	}
   181  	return ""
   182  }
   183  
   184  func (m *ConfigUpdate) GetReadSet() *ConfigGroup {
   185  	if m != nil {
   186  		return m.ReadSet
   187  	}
   188  	return nil
   189  }
   190  
   191  func (m *ConfigUpdate) GetWriteSet() *ConfigGroup {
   192  	if m != nil {
   193  		return m.WriteSet
   194  	}
   195  	return nil
   196  }
   197  
   198  // ConfigGroup is the hierarchical data structure for holding config
   199  type ConfigGroup struct {
   200  	Version   uint64                   `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
   201  	Groups    map[string]*ConfigGroup  `protobuf:"bytes,2,rep,name=groups" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
   202  	Values    map[string]*ConfigValue  `protobuf:"bytes,3,rep,name=values" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
   203  	Policies  map[string]*ConfigPolicy `protobuf:"bytes,4,rep,name=policies" json:"policies,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
   204  	ModPolicy string                   `protobuf:"bytes,5,opt,name=mod_policy,json=modPolicy" json:"mod_policy,omitempty"`
   205  }
   206  
   207  func (m *ConfigGroup) Reset()                    { *m = ConfigGroup{} }
   208  func (m *ConfigGroup) String() string            { return proto.CompactTextString(m) }
   209  func (*ConfigGroup) ProtoMessage()               {}
   210  func (*ConfigGroup) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
   211  
   212  func (m *ConfigGroup) GetVersion() uint64 {
   213  	if m != nil {
   214  		return m.Version
   215  	}
   216  	return 0
   217  }
   218  
   219  func (m *ConfigGroup) GetGroups() map[string]*ConfigGroup {
   220  	if m != nil {
   221  		return m.Groups
   222  	}
   223  	return nil
   224  }
   225  
   226  func (m *ConfigGroup) GetValues() map[string]*ConfigValue {
   227  	if m != nil {
   228  		return m.Values
   229  	}
   230  	return nil
   231  }
   232  
   233  func (m *ConfigGroup) GetPolicies() map[string]*ConfigPolicy {
   234  	if m != nil {
   235  		return m.Policies
   236  	}
   237  	return nil
   238  }
   239  
   240  func (m *ConfigGroup) GetModPolicy() string {
   241  	if m != nil {
   242  		return m.ModPolicy
   243  	}
   244  	return ""
   245  }
   246  
   247  // ConfigValue represents an individual piece of config data
   248  type ConfigValue struct {
   249  	Version   uint64 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
   250  	Value     []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
   251  	ModPolicy string `protobuf:"bytes,3,opt,name=mod_policy,json=modPolicy" json:"mod_policy,omitempty"`
   252  }
   253  
   254  func (m *ConfigValue) Reset()                    { *m = ConfigValue{} }
   255  func (m *ConfigValue) String() string            { return proto.CompactTextString(m) }
   256  func (*ConfigValue) ProtoMessage()               {}
   257  func (*ConfigValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
   258  
   259  func (m *ConfigValue) GetVersion() uint64 {
   260  	if m != nil {
   261  		return m.Version
   262  	}
   263  	return 0
   264  }
   265  
   266  func (m *ConfigValue) GetValue() []byte {
   267  	if m != nil {
   268  		return m.Value
   269  	}
   270  	return nil
   271  }
   272  
   273  func (m *ConfigValue) GetModPolicy() string {
   274  	if m != nil {
   275  		return m.ModPolicy
   276  	}
   277  	return ""
   278  }
   279  
   280  type ConfigPolicy struct {
   281  	Version   uint64  `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
   282  	Policy    *Policy `protobuf:"bytes,2,opt,name=policy" json:"policy,omitempty"`
   283  	ModPolicy string  `protobuf:"bytes,3,opt,name=mod_policy,json=modPolicy" json:"mod_policy,omitempty"`
   284  }
   285  
   286  func (m *ConfigPolicy) Reset()                    { *m = ConfigPolicy{} }
   287  func (m *ConfigPolicy) String() string            { return proto.CompactTextString(m) }
   288  func (*ConfigPolicy) ProtoMessage()               {}
   289  func (*ConfigPolicy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
   290  
   291  func (m *ConfigPolicy) GetVersion() uint64 {
   292  	if m != nil {
   293  		return m.Version
   294  	}
   295  	return 0
   296  }
   297  
   298  func (m *ConfigPolicy) GetPolicy() *Policy {
   299  	if m != nil {
   300  		return m.Policy
   301  	}
   302  	return nil
   303  }
   304  
   305  func (m *ConfigPolicy) GetModPolicy() string {
   306  	if m != nil {
   307  		return m.ModPolicy
   308  	}
   309  	return ""
   310  }
   311  
   312  type ConfigSignature struct {
   313  	SignatureHeader []byte `protobuf:"bytes,1,opt,name=signature_header,json=signatureHeader,proto3" json:"signature_header,omitempty"`
   314  	Signature       []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
   315  }
   316  
   317  func (m *ConfigSignature) Reset()                    { *m = ConfigSignature{} }
   318  func (m *ConfigSignature) String() string            { return proto.CompactTextString(m) }
   319  func (*ConfigSignature) ProtoMessage()               {}
   320  func (*ConfigSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} }
   321  
   322  func (m *ConfigSignature) GetSignatureHeader() []byte {
   323  	if m != nil {
   324  		return m.SignatureHeader
   325  	}
   326  	return nil
   327  }
   328  
   329  func (m *ConfigSignature) GetSignature() []byte {
   330  	if m != nil {
   331  		return m.Signature
   332  	}
   333  	return nil
   334  }
   335  
   336  func init() {
   337  	proto.RegisterType((*ConfigEnvelope)(nil), "common.ConfigEnvelope")
   338  	proto.RegisterType((*ConfigGroupSchema)(nil), "common.ConfigGroupSchema")
   339  	proto.RegisterType((*ConfigValueSchema)(nil), "common.ConfigValueSchema")
   340  	proto.RegisterType((*ConfigPolicySchema)(nil), "common.ConfigPolicySchema")
   341  	proto.RegisterType((*Config)(nil), "common.Config")
   342  	proto.RegisterType((*ConfigUpdateEnvelope)(nil), "common.ConfigUpdateEnvelope")
   343  	proto.RegisterType((*ConfigUpdate)(nil), "common.ConfigUpdate")
   344  	proto.RegisterType((*ConfigGroup)(nil), "common.ConfigGroup")
   345  	proto.RegisterType((*ConfigValue)(nil), "common.ConfigValue")
   346  	proto.RegisterType((*ConfigPolicy)(nil), "common.ConfigPolicy")
   347  	proto.RegisterType((*ConfigSignature)(nil), "common.ConfigSignature")
   348  }
   349  
   350  func init() { proto.RegisterFile("common/configtx.proto", fileDescriptor1) }
   351  
   352  var fileDescriptor1 = []byte{
   353  	// 674 bytes of a gzipped FileDescriptorProto
   354  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x55, 0xdb, 0x6e, 0xd3, 0x40,
   355  	0x10, 0x55, 0xe2, 0xd6, 0x4d, 0x26, 0xe9, 0x85, 0x6d, 0x10, 0xc6, 0x02, 0x51, 0x0c, 0x94, 0x16,
   356  	0x24, 0xa7, 0x94, 0x87, 0x56, 0x48, 0x7d, 0xa1, 0xaa, 0x80, 0x97, 0x0a, 0x1c, 0x2e, 0x52, 0x85,
   357  	0x88, 0x5c, 0x7b, 0xeb, 0x58, 0x75, 0xbc, 0x66, 0xbd, 0x2e, 0xe4, 0x2b, 0xf8, 0x40, 0xfe, 0x80,
   358  	0xaf, 0x40, 0xde, 0x5d, 0x9b, 0x75, 0xe2, 0x24, 0xe2, 0x29, 0x99, 0x99, 0x73, 0xce, 0xec, 0xce,
   359  	0xce, 0x91, 0xe1, 0xb6, 0x47, 0xc6, 0x63, 0x12, 0xf7, 0x3d, 0x12, 0x5f, 0x85, 0x01, 0xfb, 0x69,
   360  	0x27, 0x94, 0x30, 0x82, 0x74, 0x91, 0x36, 0xb7, 0xcb, 0x72, 0xfe, 0x23, 0x8a, 0x66, 0xc1, 0x49,
   361  	0x48, 0x14, 0x7a, 0x21, 0x4e, 0x45, 0xda, 0xba, 0x86, 0x8d, 0x53, 0xae, 0x72, 0x16, 0xdf, 0xe0,
   362  	0x88, 0x24, 0x18, 0xed, 0x82, 0x2e, 0x74, 0x8d, 0xc6, 0x4e, 0x63, 0xaf, 0x73, 0xb8, 0x61, 0x4b,
   363  	0x1d, 0x81, 0x73, 0x64, 0x15, 0xbd, 0x80, 0x4e, 0xe4, 0xa6, 0x6c, 0x98, 0x25, 0xbe, 0xcb, 0xb0,
   364  	0xd1, 0xe4, 0xe0, 0xad, 0x02, 0x5c, 0xc8, 0x39, 0x90, 0x83, 0x3e, 0x71, 0x8c, 0xf5, 0x5b, 0x83,
   365  	0x5b, 0x42, 0xe5, 0x0d, 0x25, 0x59, 0x32, 0xf0, 0x46, 0x78, 0xec, 0xa2, 0x13, 0xd0, 0x83, 0x3c,
   366  	0x4c, 0x8d, 0xc6, 0x8e, 0xb6, 0xd7, 0x39, 0x7c, 0x52, 0x6d, 0xa8, 0x40, 0x6d, 0xfe, 0x3f, 0x3d,
   367  	0x8b, 0x19, 0x9d, 0x38, 0x92, 0x94, 0xd3, 0x6f, 0xdc, 0x28, 0xc3, 0xa9, 0xd1, 0x5c, 0x46, 0xff,
   368  	0xcc, 0x71, 0x92, 0x2e, 0x48, 0xe8, 0x14, 0x5a, 0xc5, 0x48, 0x0c, 0x8d, 0x0b, 0x3c, 0x9d, 0x2f,
   369  	0xf0, 0x5e, 0x22, 0x85, 0x44, 0x49, 0x34, 0x3f, 0x42, 0x47, 0x39, 0x1a, 0xda, 0x02, 0xed, 0x1a,
   370  	0x4f, 0xf8, 0xfc, 0xda, 0x4e, 0xfe, 0x17, 0xf5, 0x61, 0x95, 0xf7, 0x93, 0x63, 0xba, 0x3b, 0xb7,
   371  	0x85, 0x23, 0x70, 0xaf, 0x9a, 0xc7, 0x8d, 0x5c, 0x55, 0x39, 0xf1, 0x7f, 0xab, 0x72, 0xee, 0xac,
   372  	0xea, 0x17, 0x58, 0xaf, 0x5c, 0xa3, 0x46, 0xf7, 0xa0, 0xaa, 0x6b, 0x56, 0x75, 0x39, 0x7b, 0x32,
   373  	0x23, 0x6c, 0x6d, 0x17, 0x8f, 0xab, 0x34, 0xb6, 0x7a, 0x80, 0x66, 0x59, 0xd6, 0x37, 0xd0, 0x45,
   374  	0x16, 0x99, 0xd0, 0x4a, 0xf1, 0xf7, 0x0c, 0xc7, 0x1e, 0xe6, 0x27, 0x58, 0x71, 0xca, 0x18, 0x1d,
   375  	0xc3, 0xba, 0x37, 0x72, 0xe3, 0x18, 0x47, 0x43, 0xfe, 0xd6, 0xf2, 0x38, 0xdb, 0x35, 0xc3, 0x73,
   376  	0xba, 0x12, 0xc9, 0x23, 0x8b, 0x41, 0x4f, 0x14, 0xc5, 0xe2, 0x95, 0xbb, 0xfd, 0x08, 0xd6, 0xc5,
   377  	0xf6, 0x16, 0x5b, 0x9b, 0xb7, 0xec, 0x3a, 0x5d, 0x4f, 0x01, 0xa3, 0x23, 0x80, 0x34, 0x0c, 0x62,
   378  	0x97, 0x65, 0xb4, 0x5c, 0xaa, 0x3b, 0xd5, 0x9e, 0x83, 0xa2, 0xee, 0x28, 0x50, 0xeb, 0x57, 0x03,
   379  	0xba, 0x6a, 0x5b, 0x74, 0x1f, 0xa0, 0xb8, 0x40, 0xe8, 0xcb, 0x01, 0xb7, 0x65, 0xe6, 0x9d, 0x8f,
   380  	0x6c, 0x68, 0x51, 0xec, 0xfa, 0xc3, 0x14, 0xb3, 0x45, 0x57, 0x5b, 0xcb, 0x41, 0x03, 0xcc, 0xd0,
   381  	0x01, 0xb4, 0x7f, 0xd0, 0x90, 0x61, 0x4e, 0xd0, 0xe6, 0x13, 0x5a, 0x1c, 0x35, 0xc0, 0xcc, 0xfa,
   382  	0xa3, 0x41, 0x47, 0xa9, 0x20, 0x03, 0xd6, 0x6e, 0x30, 0x4d, 0x43, 0x12, 0xcb, 0x61, 0x17, 0x21,
   383  	0x3a, 0x2a, 0x4d, 0x28, 0x2e, 0xfc, 0xa0, 0x46, 0xb8, 0xd6, 0x7e, 0x47, 0xa5, 0xfd, 0xb4, 0xf9,
   384  	0xc4, 0x3a, 0xe3, 0x9d, 0x28, 0xc6, 0x5b, 0xe1, 0xd4, 0x87, 0x75, 0xd4, 0x39, 0x96, 0xcb, 0x67,
   385  	0x3b, 0x26, 0xfe, 0x90, 0xc7, 0x13, 0x63, 0x55, 0xcc, 0x76, 0x4c, 0x7c, 0xb1, 0x67, 0xe6, 0xf9,
   386  	0x32, 0x47, 0xee, 0x57, 0x77, 0xbc, 0x76, 0x90, 0x8a, 0x6b, 0xce, 0x97, 0x79, 0x71, 0xb1, 0x1e,
   387  	0xe7, 0xaa, 0x7a, 0x1f, 0x96, 0xbb, 0xf0, 0x59, 0x55, 0xb1, 0x57, 0xe7, 0x42, 0xd5, 0x7f, 0x5f,
   388  	0x8b, 0xb7, 0xe6, 0xcd, 0x16, 0xbc, 0x75, 0x4f, 0x15, 0xee, 0x4a, 0x89, 0xa9, 0x81, 0x6a, 0x53,
   389  	0x03, 0xb5, 0x48, 0xb1, 0xdb, 0x22, 0x5e, 0x20, 0xbf, 0x0b, 0xba, 0x14, 0x69, 0x56, 0x3f, 0x20,
   390  	0xf2, 0xc8, 0xb2, 0xba, 0xac, 0xe1, 0x05, 0x6c, 0x4e, 0x99, 0x0d, 0xed, 0xc3, 0x56, 0x69, 0xb7,
   391  	0xe1, 0x08, 0xbb, 0x3e, 0xa6, 0xd2, 0xc1, 0x9b, 0x65, 0xfe, 0x2d, 0x4f, 0xa3, 0x7b, 0xd0, 0x2e,
   392  	0x53, 0xf2, 0x9e, 0xff, 0x12, 0xaf, 0x07, 0xf0, 0x98, 0xd0, 0xc0, 0x1e, 0x4d, 0x12, 0x4c, 0x23,
   393  	0xec, 0x07, 0x98, 0xda, 0x57, 0xee, 0x25, 0x0d, 0x3d, 0xf1, 0x55, 0x4c, 0xe5, 0x89, 0x2f, 0x9e,
   394  	0x07, 0x21, 0x1b, 0x65, 0x97, 0x79, 0xd8, 0x57, 0xc0, 0x7d, 0x01, 0xee, 0x0b, 0xb0, 0xfc, 0xce,
   395  	0x5e, 0xea, 0x3c, 0x7c, 0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0x25, 0x75, 0xfb, 0xf8, 0x9e, 0x07,
   396  	0x00, 0x00,
   397  }