From f609b84254ce8c731dff8b5163809cb7ef90509b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CDongLieu=E2=80=9D?= Date: Mon, 16 Sep 2024 20:42:06 +0700 Subject: [PATCH] updates --- .../automated-release-cosmovisor.yml | 64 + api/cosmos/staking/v1beta1/staking.pulsar.go | 279 ++- proto/cosmos/staking/v1beta1/staking.proto | 6 + x/auth/vesting/exported/exported.go | 3 + x/auth/vesting/types/vesting_account.go | 51 + x/auth/vesting/types/vesting_account_test.go | 101 +- x/bank/keeper/keeper.go | 2 +- x/bank/simulation/operations.go | 5 +- x/distribution/README.md | 4 + x/distribution/keeper/delegation.go | 18 + x/distribution/keeper/delegation_test.go | 187 ++ .../testutil/expected_keepers_mocks.go | 6 + x/distribution/types/expected_keepers.go | 1 + x/gov/keeper/vote.go | 24 + x/gov/types/v1beta1/content.go | 7 + x/staking/keeper/delegation.go | 31 + x/staking/keeper/grpc_query.go | 9 +- x/staking/keeper/keeper.go | 14 + x/staking/keeper/msg_server.go | 9 + x/staking/keeper/params.go | 7 + x/staking/keeper/pool.go | 29 +- x/staking/keeper/slash.go | 47 +- x/staking/keeper/slash_test.go | 114 ++ x/staking/simulation/genesis.go | 3 +- x/staking/types/expected_keepers.go | 3 + x/staking/types/params.go | 39 +- x/staking/types/params_legacy.go | 14 +- x/staking/types/staking.pb.go | 1683 +++++++++-------- 28 files changed, 1814 insertions(+), 946 deletions(-) create mode 100644 .github/workflows/automated-release-cosmovisor.yml diff --git a/.github/workflows/automated-release-cosmovisor.yml b/.github/workflows/automated-release-cosmovisor.yml new file mode 100644 index 000000000000..ed10c503a5f9 --- /dev/null +++ b/.github/workflows/automated-release-cosmovisor.yml @@ -0,0 +1,64 @@ +on: + push: + tags: + - "cosmovisor-v*" + +name: Automated release cosmovisor + +jobs: + build: + name: Build and upload release assets + runs-on: ubuntu-latest + + steps: + - name: Set up Go 1.x + uses: actions/setup-go@v2 + with: + go-version: ^1.20 + id: go + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: false + prerelease: true + + # build & upload cosmovisor + + - name: Build cosmovisor + run: make cosmovisor + + - name: Upload cosmovisor + id: upload-cosmovisor-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: cosmovisor/cosmovisor + asset_name: cosmovisor + asset_content_type: application/bin + + # build & upload cosmovisor arm64 + + - name: Build cosmovisor arm64 + run: GOARCH=arm64 make build + + - name: Upload cosmovisor arm64 + id: upload-cosmovisor-release-asset-arm + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: cosmovisor/cosmovisor + asset_name: cosmovisor-arm + asset_content_type: application/bin \ No newline at end of file diff --git a/api/cosmos/staking/v1beta1/staking.pulsar.go b/api/cosmos/staking/v1beta1/staking.pulsar.go index 9ec8314f45ca..e2d4a9d717e1 100644 --- a/api/cosmos/staking/v1beta1/staking.pulsar.go +++ b/api/cosmos/staking/v1beta1/staking.pulsar.go @@ -9409,13 +9409,14 @@ func (x *fastReflection_Redelegation) ProtoMethods() *protoiface.Methods { } var ( - md_Params protoreflect.MessageDescriptor - fd_Params_unbonding_time protoreflect.FieldDescriptor - fd_Params_max_validators protoreflect.FieldDescriptor - fd_Params_max_entries protoreflect.FieldDescriptor - fd_Params_historical_entries protoreflect.FieldDescriptor - fd_Params_bond_denom protoreflect.FieldDescriptor - fd_Params_min_commission_rate protoreflect.FieldDescriptor + md_Params protoreflect.MessageDescriptor + fd_Params_unbonding_time protoreflect.FieldDescriptor + fd_Params_max_validators protoreflect.FieldDescriptor + fd_Params_max_entries protoreflect.FieldDescriptor + fd_Params_historical_entries protoreflect.FieldDescriptor + fd_Params_bond_denom protoreflect.FieldDescriptor + fd_Params_min_commission_rate protoreflect.FieldDescriptor + fd_Params_min_global_self_delegation protoreflect.FieldDescriptor ) func init() { @@ -9427,6 +9428,7 @@ func init() { fd_Params_historical_entries = md_Params.Fields().ByName("historical_entries") fd_Params_bond_denom = md_Params.Fields().ByName("bond_denom") fd_Params_min_commission_rate = md_Params.Fields().ByName("min_commission_rate") + fd_Params_min_global_self_delegation = md_Params.Fields().ByName("min_global_self_delegation") } var _ protoreflect.Message = (*fastReflection_Params)(nil) @@ -9530,6 +9532,12 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if x.MinGlobalSelfDelegation != "" { + value := protoreflect.ValueOfString(x.MinGlobalSelfDelegation) + if !f(fd_Params_min_global_self_delegation, value) { + return + } + } } // Has reports whether a field is populated. @@ -9557,6 +9565,8 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return x.BondDenom != "" case "cosmos.staking.v1beta1.Params.min_commission_rate": return x.MinCommissionRate != "" + case "cosmos.staking.v1beta1.Params.min_global_self_delegation": + return x.MinGlobalSelfDelegation != "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9585,6 +9595,8 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.BondDenom = "" case "cosmos.staking.v1beta1.Params.min_commission_rate": x.MinCommissionRate = "" + case "cosmos.staking.v1beta1.Params.min_global_self_delegation": + x.MinGlobalSelfDelegation = "" default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9619,6 +9631,9 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro case "cosmos.staking.v1beta1.Params.min_commission_rate": value := x.MinCommissionRate return protoreflect.ValueOfString(value) + case "cosmos.staking.v1beta1.Params.min_global_self_delegation": + value := x.MinGlobalSelfDelegation + return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9651,6 +9666,8 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto x.BondDenom = value.Interface().(string) case "cosmos.staking.v1beta1.Params.min_commission_rate": x.MinCommissionRate = value.Interface().(string) + case "cosmos.staking.v1beta1.Params.min_global_self_delegation": + x.MinGlobalSelfDelegation = value.Interface().(string) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9686,6 +9703,8 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore panic(fmt.Errorf("field bond_denom of message cosmos.staking.v1beta1.Params is not mutable")) case "cosmos.staking.v1beta1.Params.min_commission_rate": panic(fmt.Errorf("field min_commission_rate of message cosmos.staking.v1beta1.Params is not mutable")) + case "cosmos.staking.v1beta1.Params.min_global_self_delegation": + panic(fmt.Errorf("field min_global_self_delegation of message cosmos.staking.v1beta1.Params is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9712,6 +9731,8 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor return protoreflect.ValueOfString("") case "cosmos.staking.v1beta1.Params.min_commission_rate": return protoreflect.ValueOfString("") + case "cosmos.staking.v1beta1.Params.min_global_self_delegation": + return protoreflect.ValueOfString("") default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.staking.v1beta1.Params")) @@ -9802,6 +9823,10 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.MinGlobalSelfDelegation) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -9831,6 +9856,13 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.MinGlobalSelfDelegation) > 0 { + i -= len(x.MinGlobalSelfDelegation) + copy(dAtA[i:], x.MinGlobalSelfDelegation) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MinGlobalSelfDelegation))) + i-- + dAtA[i] = 0x52 + } if len(x.MinCommissionRate) > 0 { i -= len(x.MinCommissionRate) copy(dAtA[i:], x.MinCommissionRate) @@ -10080,6 +10112,38 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } x.MinCommissionRate = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinGlobalSelfDelegation", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MinGlobalSelfDelegation = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -13747,6 +13811,8 @@ type Params struct { BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty"` // min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators MinCommissionRate string `protobuf:"bytes,6,opt,name=min_commission_rate,json=minCommissionRate,proto3" json:"min_commission_rate,omitempty"` + // min_global_self_delegation is the validators' self declared minimum self delegation. + MinGlobalSelfDelegation string `protobuf:"bytes,10,opt,name=min_global_self_delegation,json=minGlobalSelfDelegation,proto3" json:"min_global_self_delegation,omitempty"` } func (x *Params) Reset() { @@ -13811,6 +13877,13 @@ func (x *Params) GetMinCommissionRate() string { return "" } +func (x *Params) GetMinGlobalSelfDelegation() string { + if x != nil { + return x.MinGlobalSelfDelegation + } + return "" +} + // DelegationResponse is equivalent to Delegation except that it contains a // balance in addition to shares which is more suitable for client responses. type DelegationResponse struct { @@ -14308,7 +14381,7 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x08, 0x88, - 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x9c, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, + 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x86, 0x04, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x75, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, @@ -14332,98 +14405,104 @@ var file_cosmos_staking_v1beta1_staking_proto_rawDesc = []byte{ 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, - 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, - 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, - 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, - 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, - 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, - 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, - 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, - 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, - 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, - 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, - 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, - 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x59, 0x0a, 0x10, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x12, 0x45, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x61, - 0x62, 0x63, 0x69, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2a, 0xb6, 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, 0x9d, 0x20, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, - 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, - 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x0d, 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, - 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, - 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, - 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, - 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, - 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, - 0xdc, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, - 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, - 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, - 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, - 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, - 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x68, 0x0a, 0x1a, 0x6d, 0x69, 0x6e, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x73, + 0x65, 0x6c, 0x66, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x52, 0x17, 0x6d, 0x69, 0x6e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x66, + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x24, 0xe8, 0xa0, 0x1f, 0x01, + 0x8a, 0xe7, 0xb0, 0x2a, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, + 0x78, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0xa9, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xcd, 0x01, 0x0a, + 0x19, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x72, 0x65, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x72, 0x65, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x45, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xc9, 0x01, 0x0a, + 0x14, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, 0x72, 0x65, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x07, 0x65, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, + 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0xeb, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, + 0x6c, 0x12, 0x71, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x11, 0x6e, + 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x42, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, 0xc8, 0xde, 0x1f, + 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xea, 0xde, 0x1f, 0x0d, 0x62, 0x6f, + 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0c, + 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x3a, 0x08, 0xe8, 0xa0, + 0x1f, 0x01, 0xf0, 0xa0, 0x1f, 0x01, 0x22, 0x59, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x07, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x2e, 0x61, 0x62, 0x63, 0x69, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x2a, 0xb6, 0x01, 0x0a, 0x0a, 0x42, 0x6f, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x2c, 0x0a, 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x0f, 0x8a, + 0x9d, 0x20, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x26, + 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, + 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, 0x1a, 0x0c, 0x8a, 0x9d, 0x20, 0x08, 0x55, 0x6e, + 0x62, 0x6f, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x42, 0x4f, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x02, 0x1a, 0x0d, 0x8a, 0x9d, 0x20, 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x22, 0x0a, 0x12, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x42, 0x4f, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x03, 0x1a, 0x0a, 0x8a, 0x9d, 0x20, 0x06, 0x42, 0x6f, + 0x6e, 0x64, 0x65, 0x64, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x2a, 0x5d, 0x0a, 0x0a, 0x49, 0x6e, + 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x01, + 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, + 0x4f, 0x57, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x42, 0xdc, 0x01, 0x0a, 0x1a, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x3b, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, + 0x02, 0x16, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x5c, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, + 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/cosmos/staking/v1beta1/staking.proto b/proto/cosmos/staking/v1beta1/staking.proto index 24ec65d10202..d4e11e5bfc26 100644 --- a/proto/cosmos/staking/v1beta1/staking.proto +++ b/proto/cosmos/staking/v1beta1/staking.proto @@ -320,6 +320,12 @@ message Params { (amino.dont_omitempty) = true, (cosmos_proto.scalar) = "cosmos.Dec" ]; + // min_global_self_delegation is the validators' self declared minimum self delegation. + string min_global_self_delegation = 10 [ + (cosmos_proto.scalar) = "cosmos.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", + (gogoproto.nullable) = false + ]; } // DelegationResponse is equivalent to Delegation except that it contains a diff --git a/x/auth/vesting/exported/exported.go b/x/auth/vesting/exported/exported.go index bfc15f7175cb..e4db7e442f86 100644 --- a/x/auth/vesting/exported/exported.go +++ b/x/auth/vesting/exported/exported.go @@ -10,6 +10,9 @@ import ( type VestingAccount interface { sdk.AccountI + // AddOriginalVesting increases the original vesting spreading the amount according to the + // vesting account strategy. + AddOriginalVesting(amount sdk.Coins) // LockedCoins returns the set of coins that are not spendable (i.e. locked), // defined as the vesting coins that are not delegated. // diff --git a/x/auth/vesting/types/vesting_account.go b/x/auth/vesting/types/vesting_account.go index 868dc49588e7..12be75c702ce 100644 --- a/x/auth/vesting/types/vesting_account.go +++ b/x/auth/vesting/types/vesting_account.go @@ -226,12 +226,51 @@ func (cva ContinuousVestingAccount) GetVestingCoins(blockTime time.Time) sdk.Coi return cva.OriginalVesting.Sub(cva.GetVestedCoins(blockTime)...) } +// AddOriginalVesting increases the original vesting spreading the amount according to the +// vesting account strategy. +func (cva *ContinuousVestingAccount) AddOriginalVesting(amount sdk.Coins) { + cva.OriginalVesting = cva.OriginalVesting.Add(amount...) +} + // LockedCoins returns the set of coins that are not spendable (i.e. locked), // defined as the vesting coins that are not delegated. func (cva ContinuousVestingAccount) LockedCoins(blockTime time.Time) sdk.Coins { return cva.BaseVestingAccount.LockedCoinsFromVesting(cva.GetVestingCoins(blockTime)) } +// AddOriginalVesting increases the original vesting spreading the amount according to the +// vesting account strategy. For the periodic vesting it also equally increases the periods amount based on +// the period amount and total vesting amount. +func (pva *PeriodicVestingAccount) AddOriginalVesting(amount sdk.Coins) { + amount = amount.Sort() + incSum := sdk.NewCoins() + for i, period := range pva.VestingPeriods { + for _, incCoin := range amount { + incDenom := incCoin.Denom + prevOriginalAmt := pva.OriginalVesting.AmountOf(incDenom) + periodAmt := period.Amount.AmountOf(incDenom) + if periodAmt.IsZero() { + continue + } + incPeriodAmt := incCoin.Amount.ToLegacyDec().Mul(periodAmt.ToLegacyDec()).Quo(prevOriginalAmt.ToLegacyDec()).TruncateInt() + incPeriodCoin := sdk.NewCoin(incDenom, incPeriodAmt) + period.Amount = period.Amount.Add(incPeriodCoin) + incSum = incSum.Add(incPeriodCoin) + pva.VestingPeriods[i] = period + } + } + + // new denoms and truncation remainder will be added to the last period + remainder := amount.Sub(incSum...) + if !remainder.IsZero() && len(pva.VestingPeriods) != 0 { + lastPeriod := pva.VestingPeriods[len(pva.VestingPeriods)-1] + lastPeriod.Amount = lastPeriod.Amount.Add(remainder...) + pva.VestingPeriods[len(pva.VestingPeriods)-1] = lastPeriod + } + + pva.OriginalVesting = pva.OriginalVesting.Add(amount...) +} + // TrackDelegation tracks a desired delegation amount by setting the appropriate // values for the amount of delegated vesting, delegated free, and reducing the // overall amount of base coins. @@ -424,6 +463,12 @@ func (dva DelayedVestingAccount) GetVestedCoins(blockTime time.Time) sdk.Coins { return nil } +// AddOriginalVesting increases the original vesting spreading the amount according to the +// vesting account strategy. +func (dva *DelayedVestingAccount) AddOriginalVesting(amount sdk.Coins) { + dva.OriginalVesting = dva.OriginalVesting.Add(amount...) +} + // GetVestingCoins returns the total number of vesting coins for a delayed // vesting account. func (dva DelayedVestingAccount) GetVestingCoins(blockTime time.Time) sdk.Coins { @@ -486,6 +531,12 @@ func (plva PermanentLockedAccount) GetVestingCoins(_ time.Time) sdk.Coins { return plva.OriginalVesting } +// AddOriginalVesting increases the original vesting spreading the amount according to the +// vesting account strategy. +func (plva *PermanentLockedAccount) AddOriginalVesting(amount sdk.Coins) { + plva.OriginalVesting = plva.OriginalVesting.Add(amount...) +} + // LockedCoins returns the set of coins that are not spendable (i.e. locked), // defined as the vesting coins that are not delegated. func (plva PermanentLockedAccount) LockedCoins(_ time.Time) sdk.Coins { diff --git a/x/auth/vesting/types/vesting_account_test.go b/x/auth/vesting/types/vesting_account_test.go index 74cdfe59c5a5..aa617ef0dc30 100644 --- a/x/auth/vesting/types/vesting_account_test.go +++ b/x/auth/vesting/types/vesting_account_test.go @@ -25,9 +25,10 @@ import ( ) var ( - stakeDenom = "stake" - feeDenom = "fee" - emptyCoins = sdk.Coins{} + stakeDenom = "stake" + feeDenom = "fee" + customDenom = "custom" + emptyCoins = sdk.Coins{} ) type VestingAccountTestSuite struct { @@ -90,6 +91,100 @@ func TestGetVestedCoinsContVestingAcc(t *testing.T) { require.Equal(t, origCoins, vestedCoins) } +func TestAddOriginalVestingContVestingAcc(t *testing.T) { + now := tmtime.Now() + endTime := now.Add(24 * time.Hour) + + bacc, origCoins := initBaseAccount() + cva, err := types.NewContinuousVestingAccount(bacc, origCoins, now.Unix(), endTime.Unix()) + require.NoError(t, err) + + cva.AddOriginalVesting(origCoins) + err = cva.Validate() + require.NoError(t, err) + + require.Equal(t, origCoins.Add(origCoins...), cva.OriginalVesting) +} + +func TestAddOriginalVestingDelVestingAcc(t *testing.T) { + now := tmtime.Now() + endTime := now.Add(24 * time.Hour) + + bacc, origCoins := initBaseAccount() + dva, err := types.NewDelayedVestingAccount(bacc, origCoins, endTime.Unix()) + require.NoError(t, err) + + dva.AddOriginalVesting(origCoins) + err = dva.Validate() + require.NoError(t, err) + require.Equal(t, origCoins.Add(origCoins...), dva.OriginalVesting) +} + +func TestAddOriginalVestingPeriodicVestingAcc(t *testing.T) { + now := tmtime.Now() + + _, _, addr := testdata.KeyTestPubAddr() + initialOrigCoins := sdk.Coins{ + sdk.NewInt64Coin(feeDenom, 1000), + sdk.NewInt64Coin(stakeDenom, 100), + } + + bacc := authtypes.NewBaseAccountWithAddress(addr) + + initialPeriods := []types.Period{ + {Length: int64(12 * 60 * 60), Amount: sdk.Coins{ + sdk.NewInt64Coin(feeDenom, 500), sdk.NewInt64Coin(stakeDenom, 50)}, + }, + {Length: int64(6 * 60 * 60), Amount: sdk.Coins{ + sdk.NewInt64Coin(feeDenom, 250), sdk.NewInt64Coin(stakeDenom, 25)}, + }, + {Length: int64(6 * 60 * 60), Amount: sdk.Coins{ + sdk.NewInt64Coin(feeDenom, 250), sdk.NewInt64Coin(stakeDenom, 25)}, + }, + } + + pva, err := types.NewPeriodicVestingAccount(bacc, initialOrigCoins, now.Unix(), initialPeriods) + require.NoError(t, err) + err = pva.Validate() + require.NoError(t, err) + + incOrigCoins := sdk.Coins{ + sdk.NewInt64Coin(feeDenom, 1), + sdk.NewInt64Coin(stakeDenom, 10), + sdk.NewInt64Coin(customDenom, 100), + sdk.NewInt64Coin("zero-denom", 0), + } + + pva.AddOriginalVesting(incOrigCoins) + err = pva.Validate() + require.NoError(t, err) + require.Equal(t, initialOrigCoins.Add(incOrigCoins...), pva.OriginalVesting) + + expectedPeriods := []types.Period{ + {Length: int64(12 * 60 * 60), Amount: sdk.Coins{ + sdk.NewInt64Coin(feeDenom, 500), sdk.NewInt64Coin(stakeDenom, 55)}, + }, + {Length: int64(6 * 60 * 60), Amount: sdk.Coins{ + sdk.NewInt64Coin(feeDenom, 250), sdk.NewInt64Coin(stakeDenom, 27)}, + }, + {Length: int64(6 * 60 * 60), Amount: sdk.Coins{ + sdk.NewInt64Coin(customDenom, 100), sdk.NewInt64Coin(feeDenom, 251), sdk.NewInt64Coin(stakeDenom, 28)}, + }, + } + require.Equal(t, expectedPeriods, pva.VestingPeriods) +} + +func TestAddOriginalVestingPermLockedVestingAcc(t *testing.T) { + bacc, origCoins := initBaseAccount() + plva, err := types.NewPermanentLockedAccount(bacc, origCoins) + require.NoError(t, err) + + plva.AddOriginalVesting(origCoins) + err = plva.Validate() + require.NoError(t, err) + require.Equal(t, origCoins.Add(origCoins...), plva.OriginalVesting) +} + func TestGetVestingCoinsContVestingAcc(t *testing.T) { now := tmtime.Now() endTime := now.Add(24 * time.Hour) diff --git a/x/bank/keeper/keeper.go b/x/bank/keeper/keeper.go index bfa45d23f64e..1058c1453351 100644 --- a/x/bank/keeper/keeper.go +++ b/x/bank/keeper/keeper.go @@ -90,7 +90,7 @@ func NewBaseKeeper( logger log.Logger, ) BaseKeeper { if _, err := ak.AddressCodec().StringToBytes(authority); err != nil { - panic(fmt.Errorf("invalid bank authority address: %w", err)) + panic(fmt.Errorf("invalid bank authority address 00=%s: %w", authority, err)) } // add the module name to the logger diff --git a/x/bank/simulation/operations.go b/x/bank/simulation/operations.go index 76dd67f21350..03807c881cd6 100644 --- a/x/bank/simulation/operations.go +++ b/x/bank/simulation/operations.go @@ -12,7 +12,8 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/bank/keeper" "github.com/cosmos/cosmos-sdk/x/bank/types" - disttypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + // disttypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/cosmos/cosmos-sdk/x/simulation" ) @@ -428,7 +429,7 @@ func getModuleAccounts(ak types.AccountKeeper, ctx sdk.Context, moduleAccCount i moduleAccounts := make([]simtypes.Account, moduleAccCount) for i := 0; i < moduleAccCount; i++ { - acc := ak.GetModuleAccount(ctx, disttypes.ModuleName) + acc := ak.GetModuleAccount(ctx, govtypes.ModuleName) mAcc := simtypes.Account{ Address: acc.GetAddress(), PrivKey: nil, diff --git a/x/distribution/README.md b/x/distribution/README.md index 32858fd696db..d363a66bad09 100644 --- a/x/distribution/README.md +++ b/x/distribution/README.md @@ -331,6 +331,10 @@ rewards = rewards + (R(B) - R(PN)) * stake The historical rewards are calculated retroactively by playing back all the slashes and then attenuating the delegator's stake at each step. The final calculated stake is equivalent to the actual staked coins in the delegation with a margin of error due to rounding errors. +For the vesting account, with the coins still locked in vesting, the reward amount will be equally spread in the vesting +based on the vesting account type strategy: for all types, the OriginalVesting amount will be increased by the reward amount. For the PeriodicVestingAccount +the amount will be additionally spread among the periods based on the amount in each period. + Response: ```protobuf reference diff --git a/x/distribution/keeper/delegation.go b/x/distribution/keeper/delegation.go index 2b0e99d390e5..88f66b7166f1 100644 --- a/x/distribution/keeper/delegation.go +++ b/x/distribution/keeper/delegation.go @@ -8,6 +8,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/distribution/types" + + vestexported "github.com/cosmos/cosmos-sdk/x/auth/vesting/exported" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -257,6 +259,7 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes. if err != nil { return nil, err } + k.addVestingRewards(ctx, del.GetDelegatorAddr(), finalRewards) } // update the outstanding rewards and the community pool only if the @@ -318,3 +321,18 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes. return finalRewards, nil } + +func (k Keeper) addVestingRewards(ctx context.Context, delAddr string, amt sdk.Coins) error { + delAcc, err := sdk.AccAddressFromBech32(delAddr) + if err != nil { + return err + } + sdkCtx := sdk.UnwrapSDKContext(ctx) + vacc, ok := k.authKeeper.GetAccount(ctx, delAcc).(vestexported.VestingAccount) + if !ok || vacc.GetVestingCoins(sdkCtx.BlockTime()).IsZero() { + return fmt.Errorf("addVestingRewards fail") + } + vacc.AddOriginalVesting(amt) + k.authKeeper.SetAccount(ctx, vacc) + return nil +} diff --git a/x/distribution/keeper/delegation_test.go b/x/distribution/keeper/delegation_test.go index 4678d539d79a..6016f4ad6723 100644 --- a/x/distribution/keeper/delegation_test.go +++ b/x/distribution/keeper/delegation_test.go @@ -2,6 +2,7 @@ package keeper_test import ( "testing" + // "time" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/golang/mock/gomock" @@ -335,6 +336,192 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { valCommission.Commission) } +func TestWithdrawDelegationRewardsVesting(t *testing.T) { + // ctrl := gomock.NewController(t) + // key := storetypes.NewKVStoreKey(disttypes.StoreKey) + // storeService := runtime.NewKVStoreService(key) + // testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) + // encCfg := moduletestutil.MakeTestEncodingConfig(distribution.AppModuleBasic{}) + // ctx := testCtx.Ctx.WithBlockHeader(cmtproto.Header{Height: 1}) + + // bankKeeper := distrtestutil.NewMockBankKeeper(ctrl) + // stakingKeeper := distrtestutil.NewMockStakingKeeper(ctrl) + // accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl) + + // accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress()) + // stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes() + // accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes() + + // distrKeeper := keeper.NewKeeper( + // encCfg.Codec, + // storeService, + // accountKeeper, + // bankKeeper, + // stakingKeeper, + // "fee_collector", + // authtypes.NewModuleAddress("gov").String(), + // ) + + // val1BalAmt := sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction) + // val1VestingAmt := val1BalAmt.QuoRaw(4) + // val1VestingRatio := val1VestingAmt.ToLegacyDec().Quo(val1BalAmt.ToLegacyDec()) // 25% locked in vesting + // val1DelAmt := sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction) + // val1Commission := math.LegacyNewDecWithPrec(5, 1) // 50% + + // del1BalAmt := sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction) + // del1VestingAmt := del1BalAmt // all coins vested + // del1DelAmt := del1BalAmt // full delegation + + // del2BalAmt := sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction) + // del2VestingAmt := math.ZeroInt() // zero in vesting + // del2DelAmt := del2BalAmt // full delegation + + // allocatedReward := sdk.TokensFromConsensusPower(200, sdk.DefaultPowerReduction) + // allocatedRewardWithoutCommission := allocatedReward.ToLegacyDec().Mul(val1Commission) + + // delTotalAmt := val1DelAmt.Add(del1DelAmt).Add(del2DelAmt) + + // val1FullReward := val1DelAmt.ToLegacyDec().Quo(delTotalAmt.ToLegacyDec()).Mul(allocatedRewardWithoutCommission) + // del1FullReward := del1DelAmt.ToLegacyDec().Quo(delTotalAmt.ToLegacyDec()).Mul(allocatedRewardWithoutCommission) + // del2FullReward := del2DelAmt.ToLegacyDec().Quo(delTotalAmt.ToLegacyDec()).Mul(allocatedRewardWithoutCommission) + + // valAddr1 := sdk.ValAddress(valConsAddr0) + // addr1 := sdk.AccAddress(valAddr1) + // valAddr2 := sdk.ValAddress(valConsAddr1) + // addr2 := sdk.AccAddress(valAddr2) + + // // tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) + + // // set module account coins + // // distrAcc := distrKeeper.GetDistributionAccount(ctx) + // // require.NoError(t, simapp.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, allocatedReward)))) + // // accountKeeper.SetModuleAccount(ctx, distrAcc) + + // // create validator with 50% commission + // val1, err := distrtestutil.CreateValidator(valConsPk0, math.NewInt(1000)) + // require.NoError(t, err) + // val1.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)) + // val2, err := distrtestutil.CreateValidator(valConsPk1, math.NewInt(1000)) + // require.NoError(t, err) + // val2.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0)) + + // del1 := stakingtypes.NewDelegation(addr1.String(), valAddr1.String(), val1.DelegatorShares) + // stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr1).Return(val1, nil).Times(3) + // stakingKeeper.EXPECT().Delegation(gomock.Any(), addr1, valAddr1).Return(del1, nil) + + // del2 := stakingtypes.NewDelegation(addr2.String(), valAddr2.String(), val2.DelegatorShares) + // stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr2).Return(val2, nil).Times(3) + // stakingKeeper.EXPECT().Delegation(gomock.Any(), addr2, valAddr2).Return(del2, nil) + + // // assert correct initial balance + // expTokens := val1BalAmt.Sub(val1DelAmt) + // require.Equal(t, + // sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, expTokens)}, + // bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddr1)), + // ) + + // // end block to bond validator + // staking.EndBlocker(ctx, stakingKeeper) + + // // next block + // ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + + // // fetch validator and delegation + // val1, err := stakingKeeper.Validator(ctx, val1Addr) + // require.NoError(t, err) + + // // allocate some rewards + // distrKeeper.AllocateTokensToValidator(ctx, val1, sdk.DecCoins{sdk.NewDecCoin(sdk.DefaultBondDenom, allocatedReward)}) + + // require.Equal(t, uint64(6), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + + // // withdraw rewards + + // // val1 + // val1Reward, err := distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(val1Addr), val1Addr) + // require.NoError(t, err) + // require.Equal(t, val1FullReward.TruncateInt(), val1Reward.AmountOf(sdk.DefaultBondDenom)) + // // locked based on ratio + // require.Equal(t, val1VestingAmt.Sub(val1DelAmt).Add(val1FullReward.Mul(val1VestingRatio).TruncateInt()), + // bankKeeper.LockedCoins(ctx, sdk.AccAddress(val1Addr)).AmountOf(sdk.DefaultBondDenom)) + // // full on balance + // val1ExpBalance := val1BalAmt.Sub(val1DelAmt).Add(val1FullReward.TruncateInt()) + // require.Equal(t, + // sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, val1ExpBalance)}, + // bankKeeper.GetAllBalances(ctx, sdk.AccAddress(val1Addr)), + // ) + + // // del1 + // del1Reward, err := distrKeeper.WithdrawDelegationRewards(ctx, del1Addr, val1Addr) + // require.NoError(t, err) + // require.Equal(t, del1FullReward.TruncateInt(), del1Reward.AmountOf(sdk.DefaultBondDenom)) + // // full reward locked + // require.Equal(t, del1FullReward.TruncateInt(), bankKeeper.LockedCoins(ctx, del1Addr).AmountOf(sdk.DefaultBondDenom)) + // // only reward on balance + // require.Equal(t, del1FullReward.TruncateInt(), bankKeeper.GetAllBalances(ctx, del1Addr).AmountOf(sdk.DefaultBondDenom)) + + // // del2 + // del2Reward, err := distrKeeper.WithdrawDelegationRewards(ctx, del2Addr, val1Addr) + // require.NoError(t, err) + // require.Equal(t, del2FullReward.TruncateInt(), del2Reward.AmountOf(sdk.DefaultBondDenom)) + // // nothing locked + // require.Equal(t, math.ZeroInt(), bankKeeper.LockedCoins(ctx, del2Addr).AmountOf(sdk.DefaultBondDenom)) + // // only reward on balance + // require.Equal(t, del2Reward, bankKeeper.GetAllBalances(ctx, del2Addr)) + + // // validator commission + + // valCommissionReward, err := distrKeeper.WithdrawValidatorCommission(ctx, val1Addr) + // require.Equal(t, allocatedReward.ToLegacyDec().Mul(val1Commission).TruncateInt(), valCommissionReward.AmountOf(sdk.DefaultBondDenom)) + // require.NoError(t, err) + + // // assert correct validator balance + commission + // valExpFinalBalance := val1BalAmt.Sub(val1DelAmt). + // Add(val1FullReward.TruncateInt()). // reward + // Add(allocatedReward.ToLegacyDec().Mul(val1Commission).TruncateInt()) // commission + + // require.Equal(t, + // sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, valExpFinalBalance)}, + // bankKeeper.GetAllBalances(ctx, sdk.AccAddress(val1Addr)), + // ) + + // // ----- check when all vested + + // // next block + // ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) + // ctx = ctx.WithBlockTime(ctx.BlockTime().Add(time.Minute)) // increase time to pass the vesting periods + + // // val1 + // val1Reward, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(val1Addr), val1Addr) + // require.NoError(t, err) + // require.Equal(t, math.ZeroInt(), val1Reward.AmountOf(sdk.DefaultBondDenom)) + // // locked based on ratio + // require.Equal(t, math.ZeroInt(), bankKeeper.LockedCoins(ctx, sdk.AccAddress(val1Addr)).AmountOf(sdk.DefaultBondDenom)) + // // full on balance + // require.Equal(t, + // sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, valExpFinalBalance)}, + // bankKeeper.GetAllBalances(ctx, sdk.AccAddress(val1Addr)), + // ) + + // // del1 + // del1Reward, err = distrKeeper.WithdrawDelegationRewards(ctx, del1Addr, val1Addr) + // require.NoError(t, err) + // require.Equal(t, math.ZeroInt(), del1Reward.AmountOf(sdk.DefaultBondDenom)) + // // nothing locked + // require.Equal(t, math.ZeroInt(), bankKeeper.LockedCoins(ctx, del1Addr).AmountOf(sdk.DefaultBondDenom)) + // // only reward on balance + // require.Equal(t, del1FullReward.TruncateInt(), bankKeeper.GetAllBalances(ctx, del1Addr).AmountOf(sdk.DefaultBondDenom)) + + // // del2 + // del2Reward, err = distrKeeper.WithdrawDelegationRewards(ctx, del2Addr, val1Addr) + // require.NoError(t, err) + // require.Equal(t, math.ZeroInt(), del2Reward.AmountOf(sdk.DefaultBondDenom)) + // // nothing locked + // require.Equal(t, math.ZeroInt(), bankKeeper.LockedCoins(ctx, del2Addr).AmountOf(sdk.DefaultBondDenom)) + // // only reward on balance + // require.Equal(t, del2FullReward.TruncateInt(), bankKeeper.GetAllBalances(ctx, del2Addr).AmountOf(sdk.DefaultBondDenom)) +} + func TestCalculateRewardsMultiDelegator(t *testing.T) { ctrl := gomock.NewController(t) key := storetypes.NewKVStoreKey(disttypes.StoreKey) diff --git a/x/distribution/testutil/expected_keepers_mocks.go b/x/distribution/testutil/expected_keepers_mocks.go index c8d22259d623..6c6a9aea7515 100644 --- a/x/distribution/testutil/expected_keepers_mocks.go +++ b/x/distribution/testutil/expected_keepers_mocks.go @@ -99,6 +99,12 @@ func (m *MockAccountKeeper) SetModuleAccount(arg0 context.Context, arg1 types.Mo m.ctrl.Call(m, "SetModuleAccount", arg0, arg1) } +// SetAccount mocks base method. +func (m *MockAccountKeeper) SetAccount(arg0 context.Context, arg1 types.AccountI) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetAccount", arg0, arg1) +} + // SetModuleAccount indicates an expected call of SetModuleAccount. func (mr *MockAccountKeeperMockRecorder) SetModuleAccount(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() diff --git a/x/distribution/types/expected_keepers.go b/x/distribution/types/expected_keepers.go index 4237bb6691c9..200151d55a7e 100644 --- a/x/distribution/types/expected_keepers.go +++ b/x/distribution/types/expected_keepers.go @@ -17,6 +17,7 @@ type AccountKeeper interface { GetModuleAccount(ctx context.Context, name string) sdk.ModuleAccountI // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 SetModuleAccount(context.Context, sdk.ModuleAccountI) + SetAccount(ctx context.Context, acc sdk.AccountI) } // BankKeeper defines the expected interface needed to retrieve account balances. diff --git a/x/gov/keeper/vote.go b/x/gov/keeper/vote.go index 466fe4c2a27a..57deffb14a93 100644 --- a/x/gov/keeper/vote.go +++ b/x/gov/keeper/vote.go @@ -70,3 +70,27 @@ func (keeper Keeper) deleteVotes(ctx context.Context, proposalID uint64) error { return nil } + +func (keeper Keeper) GetVote(ctx context.Context, proposalID uint64, voter sdk.AccAddress) (v1.Vote, error) { + return keeper.Votes.Get(ctx, collections.Join(proposalID, voter)) +} + +func (keeper Keeper) IterateProposals(ctx context.Context, do func(v1.Proposal) bool) error { + iter, err := keeper.Proposals.Iterate(ctx, nil) + if err != nil { + return err + } + defer iter.Close() + + for ; iter.Valid(); iter.Next() { + v, err := iter.Value() + if err != nil { + return err + } + + if do(v) { + break + } + } + return nil +} diff --git a/x/gov/types/v1beta1/content.go b/x/gov/types/v1beta1/content.go index 64d4ef4f19ae..e36480941c32 100644 --- a/x/gov/types/v1beta1/content.go +++ b/x/gov/types/v1beta1/content.go @@ -26,3 +26,10 @@ type HandlerRoute struct { // IsManyPerContainerType implements the depinject.ManyPerContainerType interface. func (HandlerRoute) IsManyPerContainerType() {} + +// ContentWithProposer embeds Content interface and adds the GetProposer method used to validate +// that proposer in the content is equal to proposer in the MsgSubmitProposal. +type ContentWithProposer interface { + Content + GetProposer() string +} diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 606cb1e51c89..b4aa9014271c 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -1385,3 +1385,34 @@ func (k Keeper) ValidateUnbondAmount( return shares, nil } + +// UnbondAndUndelegateCoins unbonds the tokens from the validator and undelegates them from the not bonded pool to the delegator. +func (k Keeper) UnbondAndUndelegateCoins( + ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, shares math.LegacyDec, +) (amount math.Int, err error) { + amount, err = k.Unbond(ctx, delAddr, valAddr, shares) + if err != nil { + return amount, err + } + if amount.IsZero() { + return math.ZeroInt(), nil + } + + val, _ := k.GetValidator(ctx, valAddr) + if val.IsBonded() { + k.bondedTokensToNotBonded(ctx, amount) + } + + bondDenom, err := k.BondDenom(ctx) + if err != nil { + return math.ZeroInt(), err + } + + if err = k.bankKeeper.UndelegateCoinsFromModuleToAccount( + ctx, types.NotBondedPoolName, delAddr, sdk.Coins{sdk.NewCoin(bondDenom, amount)}, + ); err != nil { + return amount, err + } + + return amount, err +} diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index 890ca859c12b..afc524197b4d 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -481,9 +481,16 @@ func (k Querier) Pool(ctx context.Context, _ *types.QueryPoolRequest) (*types.Qu bondedPool := k.GetBondedPool(ctx) notBondedPool := k.GetNotBondedPool(ctx) + bondedSupply := k.bankKeeper.GetBalance(ctx, bondedPool.GetAddress(), bondDenom).Amount + daoAddr := k.authKeeper.GetModuleAddress("dao") + + if daoAddr != nil { + daoSupply := k.bankKeeper.GetBalance(ctx, daoAddr, bondDenom) + bondedSupply = bondedSupply.Add(daoSupply.Amount) + } pool := types.NewPool( k.bankKeeper.GetBalance(ctx, notBondedPool.GetAddress(), bondDenom).Amount, - k.bankKeeper.GetBalance(ctx, bondedPool.GetAddress(), bondDenom).Amount, + bondedSupply, ) return &types.QueryPoolResponse{Pool: pool}, nil diff --git a/x/staking/keeper/keeper.go b/x/staking/keeper/keeper.go index 45948f72224c..8453ac438709 100644 --- a/x/staking/keeper/keeper.go +++ b/x/staking/keeper/keeper.go @@ -32,6 +32,8 @@ type Keeper struct { authority string validatorAddressCodec addresscodec.Codec consensusAddressCodec addresscodec.Codec + + spm types.SlashingProtestedModules } // NewKeeper creates a new staking Keeper instance @@ -74,6 +76,18 @@ func NewKeeper( } } +// SetSlashingProtestedModules sets the set of the modules which are protected from the slashing and will be automatically +// unbonded before the slashing. +func (k *Keeper) SetSlashingProtestedModules(spm types.SlashingProtestedModules) *Keeper { + if k.spm != nil { + panic("cannot set slashing protested modules twice") + } + + k.spm = spm + + return k +} + // Logger returns a module-specific logger. func (k Keeper) Logger(ctx context.Context) log.Logger { sdkCtx := sdk.UnwrapSDKContext(ctx) diff --git a/x/staking/keeper/msg_server.go b/x/staking/keeper/msg_server.go index 19b7ba7a2593..7a43b62a4bd6 100644 --- a/x/staking/keeper/msg_server.go +++ b/x/staking/keeper/msg_server.go @@ -115,6 +115,15 @@ func (k msgServer) CreateValidator(ctx context.Context, msg *types.MsgCreateVali return nil, err } + minGlobalSelfDelegation, err := k.MinGlobalSelfDelegation(ctx) + if msg.MinSelfDelegation.LT(minGlobalSelfDelegation) || err != nil { + return nil, errorsmod.Wrapf( + types.ErrSelfDelegationBelowMinimum, + "min_global_self_delegation %q must be less or equal min_self_delegation %q and ", + minGlobalSelfDelegation, msg.MinSelfDelegation, + ) + } + validator.MinSelfDelegation = msg.MinSelfDelegation err = k.SetValidator(ctx, validator) diff --git a/x/staking/keeper/params.go b/x/staking/keeper/params.go index 83e29708470c..11edab20f6ff 100644 --- a/x/staking/keeper/params.go +++ b/x/staking/keeper/params.go @@ -56,6 +56,13 @@ func (k Keeper) MinCommissionRate(ctx context.Context) (math.LegacyDec, error) { return params.MinCommissionRate, err } +// MinGlobalSelfDelegation - MinGlobalSelfDelegation amount +func (k Keeper) MinGlobalSelfDelegation(ctx context.Context) (math.Int, error) { + params, err := k.GetParams(ctx) + + return params.MinGlobalSelfDelegation, err +} + // SetParams sets the x/staking module parameters. // CONTRACT: This method performs no validation of the parameters. func (k Keeper) SetParams(ctx context.Context, params types.Params) error { diff --git a/x/staking/keeper/pool.go b/x/staking/keeper/pool.go index dc81409ff6a7..588cf6b26542 100644 --- a/x/staking/keeper/pool.go +++ b/x/staking/keeper/pool.go @@ -91,7 +91,14 @@ func (k Keeper) StakingTokenSupply(ctx context.Context) (math.Int, error) { if err != nil { return math.ZeroInt(), err } - return k.bankKeeper.GetSupply(ctx, bondDenom).Amount, nil + stakeSupply := k.bankKeeper.GetSupply(ctx, bondDenom).Amount + daoAddr := k.authKeeper.GetModuleAddress("dao") + if daoAddr != nil { + daoSupply := k.bankKeeper.GetBalance(ctx, daoAddr, bondDenom) + stakeSupply = stakeSupply.Sub(daoSupply.Amount) + } + + return stakeSupply, nil } // BondedRatio the fraction of the staking tokens which are currently bonded @@ -101,12 +108,22 @@ func (k Keeper) BondedRatio(ctx context.Context) (math.LegacyDec, error) { return math.LegacyZeroDec(), err } + bondedSupply, err := k.TotalBondedTokens(ctx) + if err != nil { + return math.LegacyZeroDec(), err + } + bonDenom, err := k.BondDenom(ctx) + if err != nil { + return math.LegacyZeroDec(), err + } + daoAddr := k.authKeeper.GetModuleAddress("dao") + if daoAddr != nil { + daoSupply := k.bankKeeper.GetBalance(ctx, daoAddr, bonDenom) + bondedSupply = bondedSupply.Add(daoSupply.Amount) + } + if stakeSupply.IsPositive() { - totalBonded, err := k.TotalBondedTokens(ctx) - if err != nil { - return math.LegacyZeroDec(), err - } - return math.LegacyNewDecFromInt(totalBonded).QuoInt(stakeSupply), nil + return math.LegacyNewDecFromInt(bondedSupply).QuoInt(stakeSupply), nil } return math.LegacyZeroDec(), nil diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index e1fa8bb47d64..9afc39842bcb 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -40,10 +40,10 @@ func (k Keeper) Slash(ctx context.Context, consAddr sdk.ConsAddress, infractionH return math.NewInt(0), fmt.Errorf("attempted to slash with a negative slash factor: %v", slashFactor) } - // Amount of slashing = slash slashFactor * power at time of infraction - amount := k.TokensFromConsensusPower(ctx, power) - slashAmountDec := math.LegacyNewDecFromInt(amount).Mul(slashFactor) - slashAmount := slashAmountDec.TruncateInt() + // // Amount of slashing = slash slashFactor * power at time of infraction + // amount := k.TokensFromConsensusPower(ctx, power) + // slashAmountDec := math.LegacyNewDecFromInt(amount).Mul(slashFactor) + // slashAmount := slashAmountDec.TruncateInt() // ref https://github.com/cosmos/cosmos-sdk/issues/1348 @@ -77,6 +77,22 @@ func (k Keeper) Slash(ctx context.Context, consAddr sdk.ConsAddress, infractionH return math.Int{}, err } + unbondedAmount, err := k.UnbondSlashingProtectedModules(ctx, operatorAddress) + if err != nil { + panic(fmt.Errorf("attempted to unbond slashing protected modules: %v: %w ", k.spm(), err)) + } + // reload the validator since it's stake might have been changed + validator, _ = k.GetValidatorByConsAddr(ctx, consAddr) + + // amount of slashing = slash slashFactor * power at time of infraction + amount := k.TokensFromConsensusPower(ctx, power) + // since the unbond is performed just before the slashing we should decrease the total slash amount by the unbond amount. + amount = amount.Sub(unbondedAmount) + amount = math.MaxInt(amount, math.ZeroInt()) // defensive. + + slashAmountDec := amount.ToLegacyDec().Mul(slashFactor) + slashAmount := slashAmountDec.TruncateInt() + // call the before-modification hook if err := k.Hooks().BeforeValidatorModified(ctx, operatorAddress); err != nil { k.Logger(ctx).Error("failed to call before validator modified hook", "error", err) @@ -413,3 +429,26 @@ func (k Keeper) SlashRedelegation(ctx context.Context, srcValidator types.Valida return totalSlashAmount, nil } + +// UnbondSlashingProtectedModules - unbonds all slashing protected modules and returns the total unbond amount. +func (k Keeper) UnbondSlashingProtectedModules(ctx context.Context, valAddr sdk.ValAddress) (math.Int, error) { + unbondedAmount := math.ZeroInt() + if k.spm == nil { + return unbondedAmount, nil + } + for module := range k.spm() { + moduleAddress := k.authKeeper.GetModuleAddress(module) + delegation, err := k.GetDelegation(ctx, moduleAddress, valAddr) + if err != nil { + continue + } + unbondedDelegation, err := k.UnbondAndUndelegateCoins(ctx, moduleAddress, valAddr, delegation.Shares) + if err != nil { + return unbondedAmount, err + } + k.Logger(ctx).Info(fmt.Sprintf("module %s delegation protected from slashing", module), "validator", valAddr.String()) + unbondedAmount = unbondedAmount.Add(unbondedDelegation) + } + + return unbondedAmount, nil +} diff --git a/x/staking/keeper/slash_test.go b/x/staking/keeper/slash_test.go index 39a8f817a193..e7ce8d5dc6fa 100644 --- a/x/staking/keeper/slash_test.go +++ b/x/staking/keeper/slash_test.go @@ -1,9 +1,12 @@ package keeper_test import ( + // "cosmossdk.io/math" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + // distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + // minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/staking/testutil" ) @@ -50,3 +53,114 @@ func (s *KeeperTestSuite) TestSlashAtFutureHeight() { _, err := keeper.Slash(ctx, consAddr, 1, 10, fraction) require.Error(err) } + +// // tests Slash at the current height +// func (s *KeeperTestSuite) TestSlashValidatorAtCurrentHeightWithSlashingProtection() { +// // use disr types module name to withdraw the reward without errors and +// moduleDelegatorName := distrtypes.ModuleName + +// ctx, k := s.ctx, s.stakingKeeper +// require := s.Require() + +// k.SetSlashingProtestedModules(func() map[string]struct{} { +// return map[string]struct{}{ +// moduleDelegatorName: {}, +// } +// }) +// k.SetHooks(types.NewMultiStakingHooks(app.DistrKeeper.Hooks())) + +// valBondTokens := k.TokensFromConsensusPower(ctx, 10) +// valReward := k.TokensFromConsensusPower(ctx, 1).ToLegacyDec() +// delBondTokens := k.TokensFromConsensusPower(ctx, 2) +// delProtectedBondTokens := k.TokensFromConsensusPower(ctx, 4) +// delProtectedExpectedReward := k.TokensFromConsensusPower(ctx, 875).QuoRaw(1000) // 0.875 +// totalDelegation := valBondTokens.Add(delBondTokens).Add(delProtectedBondTokens) + +// fraction := math.LegacyNewDecWithPrec(5, 1) + +// // generate delegator account +// delAddr := simapp.AddTestAddrs(app, ctx, 1, delBondTokens)[0] +// // generate protected delegator account +// err := s.bankKeeper.SendCoinsFromAccountToModule(ctx, simapp.AddTestAddrs(app, ctx, 1, delProtectedBondTokens)[0], +// moduleDelegatorName, sdk.NewCoins(sdk.NewCoin(k.BondDenom(ctx), delProtectedBondTokens))) +// require.NoError(t, err) +// delProtectedAddr := app.AccountKeeper.GetModuleAddress(moduleDelegatorName) + +// // get already created validator +// vaConsAddr := sdk.ConsAddress(PKs[0].Address()) +// // delegate from normal account +// val, found := k.GetValidatorByConsAddr(ctx, vaConsAddr) +// require.True(t, found) +// // call this function here to init the validator in the distribution module +// k.AfterValidatorCreated(ctx, val.GetOperator()) + +// // delegate from normal account +// delShares := delegate(t, app, ctx, vaConsAddr, delAddr, delBondTokens) +// // delegate from protected account +// delegate(t, app, ctx, vaConsAddr, delProtectedAddr, delProtectedBondTokens) + +// // capture the current bond state +// bondedPool := k.GetBondedPool(ctx) +// oldBondedPoolBalances := app.BankKeeper.GetAllBalances(ctx, bondedPool.GetAddress()) +// // end block +// applyValidatorSetUpdates(t, ctx, app.StakingKeeper, 1) + +// // mint coins for the distr module +// require.NoError(t, app.BankKeeper.MintCoins(ctx, minttypes.ModuleName, sdk.NewCoins(sdk.NewCoin(k.BondDenom(ctx), valReward.TruncateInt())))) +// require.NoError(t, app.BankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, distrtypes.ModuleName, sdk.NewCoins(sdk.NewCoin(k.BondDenom(ctx), valReward.TruncateInt())))) +// // add reward to the validator to withdraw by the protected module +// app.DistrKeeper.AllocateTokensToValidator(ctx, val, sdk.NewDecCoins(sdk.NewDecCoinFromDec(k.BondDenom(ctx), valReward))) + +// // get current power +// power := k.GetLastValidatorPower(ctx, val.GetOperator()) +// require.Equal(t, k.TokensToConsensusPower(ctx, totalDelegation), power) + +// // increase the block number to be able to get the reward +// ctx = app.BaseApp.NewContext(false, tmproto.Header{Height: app.LastBlockHeight() + 1}) +// // now slash based on the current power +// k.Slash(ctx, vaConsAddr, ctx.BlockHeight(), power, fraction, types.InfractionEmpty) +// // end block +// applyValidatorSetUpdates(t, ctx, app.StakingKeeper, 1) + +// // read updated test +// val, found = k.GetValidator(ctx, val.GetOperator()) +// assert.True(t, found) +// // power decreased, the protected delegation was remove from the calculation +// // since the module is protected from the slashing +// expectedPower := k.TokensToConsensusPower(ctx, +// totalDelegation.Sub(delProtectedBondTokens). +// ToDec().Mul(fraction).TruncateInt()) +// power = val.GetConsensusPower(k.PowerReduction(ctx)) +// require.Equal(t, expectedPower, power) + +// // pool bonded shares decreased +// newBondedPoolBalances := app.BankKeeper.GetAllBalances(ctx, bondedPool.GetAddress()) +// diffTokens := oldBondedPoolBalances.Sub(newBondedPoolBalances).AmountOf(k.BondDenom(ctx)) +// require.Equal(t, totalDelegation.Sub(delProtectedBondTokens).ToDec().Mul(fraction).TruncateInt(). +// // add undelegated tokens +// Add(delProtectedBondTokens).String(), diffTokens.String()) + +// // check the delegation slashing +// unbondDelegationAmount, err := k.Unbond(ctx, delAddr, val.GetOperator(), delShares) +// assert.NoError(t, err) +// // the amount 50% less because of the slashing +// assert.Equal(t, delBondTokens.ToDec().Mul(fraction).TruncateInt(), unbondDelegationAmount) + +// // check that protected module has no delegation now +// _, found = k.GetDelegation(ctx, delProtectedAddr, val.GetOperator()) +// assert.False(t, found) + +// delProtectedBalance := app.BankKeeper.GetAllBalances(ctx, delProtectedAddr) +// assert.Equal(t, sdk.NewCoins(sdk.NewCoin(k.BondDenom(ctx), delProtectedBondTokens.Add(delProtectedExpectedReward))), delProtectedBalance) +// } + +// func delegate(t *testing.T, app *simapp.SimApp, ctx sdk.Context, vaConsAddr sdk.ConsAddress, delAddr sdk.AccAddress, delTokens sdk.Int) sdk.Dec { +// t.Helper() + +// val, found := k.GetValidatorByConsAddr(ctx, vaConsAddr) +// require.True(t, found) +// delShares, err := k.Delegate(ctx, delAddr, delTokens, types.Unbonded, val, true) +// require.NoError(t, err) +// require.Equal(t, delTokens.String(), delShares.TruncateInt().String()) +// return delShares +// } diff --git a/x/staking/simulation/genesis.go b/x/staking/simulation/genesis.go index 08cc7dd05c20..9cac838f183d 100644 --- a/x/staking/simulation/genesis.go +++ b/x/staking/simulation/genesis.go @@ -6,6 +6,7 @@ import ( "math/rand" "time" + "cosmossdk.io/math" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" @@ -55,7 +56,7 @@ func RandomizedGenState(simState *module.SimulationState) { // NOTE: the slashing module need to be defined after the staking module on the // NewSimulationManager constructor for this to work simState.UnbondTime = unbondTime - params := types.NewParams(simState.UnbondTime, maxVals, 7, histEntries, simState.BondDenom, minCommissionRate) + params := types.NewParams(simState.UnbondTime, maxVals, 7, histEntries, simState.BondDenom, minCommissionRate, math.ZeroInt()) // validators & delegations var ( diff --git a/x/staking/types/expected_keepers.go b/x/staking/types/expected_keepers.go index 96f816a5acb1..44ec28d51b8e 100644 --- a/x/staking/types/expected_keepers.go +++ b/x/staking/types/expected_keepers.go @@ -116,3 +116,6 @@ type StakingHooksWrapper struct{ StakingHooks } // IsOnePerModuleType implements the depinject.OnePerModuleType interface. func (StakingHooksWrapper) IsOnePerModuleType() {} + +// The SlashingProtestedModules is a type used for the slashing protected modules names. +type SlashingProtestedModules func() map[string]struct{} diff --git a/x/staking/types/params.go b/x/staking/types/params.go index 9687b206485c..6aa7e95e6962 100644 --- a/x/staking/types/params.go +++ b/x/staking/types/params.go @@ -32,17 +32,22 @@ const ( ) // DefaultMinCommissionRate is set to 0% -var DefaultMinCommissionRate = math.LegacyZeroDec() +var ( + DefaultMinCommissionRate = math.LegacyZeroDec() + // DefaultMinGlobalSelfDelegation is zero. + DefaultMinGlobalSelfDelegation = math.ZeroInt() +) // NewParams creates a new Params instance -func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string, minCommissionRate math.LegacyDec) Params { +func NewParams(unbondingTime time.Duration, maxValidators, maxEntries, historicalEntries uint32, bondDenom string, minCommissionRate math.LegacyDec, minGlobalSelfDelegation math.Int) Params { return Params{ - UnbondingTime: unbondingTime, - MaxValidators: maxValidators, - MaxEntries: maxEntries, - HistoricalEntries: historicalEntries, - BondDenom: bondDenom, - MinCommissionRate: minCommissionRate, + UnbondingTime: unbondingTime, + MaxValidators: maxValidators, + MaxEntries: maxEntries, + HistoricalEntries: historicalEntries, + BondDenom: bondDenom, + MinCommissionRate: minCommissionRate, + MinGlobalSelfDelegation: minGlobalSelfDelegation, } } @@ -55,6 +60,7 @@ func DefaultParams() Params { DefaultHistoricalEntries, sdk.DefaultBondDenom, DefaultMinCommissionRate, + DefaultMinGlobalSelfDelegation, ) } @@ -104,6 +110,10 @@ func (p Params) Validate() error { return err } + if err := validateMinGlobalSelfDelegation(p.MinGlobalSelfDelegation); err != nil { + return err + } + return nil } @@ -203,3 +213,16 @@ func validateMinCommissionRate(i interface{}) error { return nil } + +func validateMinGlobalSelfDelegation(i interface{}) error { + v, ok := i.(math.Int) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + + if v.LT(math.NewInt(0)) { + return fmt.Errorf("power reduction cannot be lower than or equal 0") + } + + return nil +} diff --git a/x/staking/types/params_legacy.go b/x/staking/types/params_legacy.go index f2ab55624976..b826229b1385 100644 --- a/x/staking/types/params_legacy.go +++ b/x/staking/types/params_legacy.go @@ -3,12 +3,13 @@ package types import paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" var ( - KeyUnbondingTime = []byte("UnbondingTime") - KeyMaxValidators = []byte("MaxValidators") - KeyMaxEntries = []byte("MaxEntries") - KeyBondDenom = []byte("BondDenom") - KeyHistoricalEntries = []byte("HistoricalEntries") - KeyMinCommissionRate = []byte("MinCommissionRate") + KeyUnbondingTime = []byte("UnbondingTime") + KeyMaxValidators = []byte("MaxValidators") + KeyMaxEntries = []byte("MaxEntries") + KeyBondDenom = []byte("BondDenom") + KeyHistoricalEntries = []byte("HistoricalEntries") + KeyMinCommissionRate = []byte("MinCommissionRate") + KeyMinGlobalSelfDelegation = []byte("MinGlobalSelfDelegation") ) var _ paramtypes.ParamSet = (*Params)(nil) @@ -28,5 +29,6 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { paramtypes.NewParamSetPair(KeyHistoricalEntries, &p.HistoricalEntries, validateHistoricalEntries), paramtypes.NewParamSetPair(KeyBondDenom, &p.BondDenom, validateBondDenom), paramtypes.NewParamSetPair(KeyMinCommissionRate, &p.MinCommissionRate, validateMinCommissionRate), + paramtypes.NewParamSetPair(KeyMinGlobalSelfDelegation, &p.MinGlobalSelfDelegation, validateMinGlobalSelfDelegation), } } diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 0f8b583e7a9b..9419a2fc4df0 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -932,6 +932,8 @@ type Params struct { BondDenom string `protobuf:"bytes,5,opt,name=bond_denom,json=bondDenom,proto3" json:"bond_denom,omitempty"` // min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators MinCommissionRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,6,opt,name=min_commission_rate,json=minCommissionRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_commission_rate" yaml:"min_commission_rate"` + // min_global_self_delegation is the validators' self declared minimum self delegation. + MinGlobalSelfDelegation cosmossdk_io_math.Int `protobuf:"bytes,10,opt,name=min_global_self_delegation,json=minGlobalSelfDelegation,proto3,customtype=cosmossdk.io/math.Int" json:"min_global_self_delegation"` } func (m *Params) Reset() { *m = Params{} } @@ -1276,126 +1278,128 @@ func init() { } var fileDescriptor_64c30c6cf92913c9 = []byte{ - // 1901 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4d, 0x6c, 0x63, 0x47, - 0x1d, 0xcf, 0x8b, 0x53, 0x27, 0xf9, 0x3b, 0x89, 0x9d, 0xd9, 0x2f, 0xaf, 0x97, 0xc6, 0x5e, 0x77, - 0xa1, 0xe9, 0xd2, 0xd8, 0x6c, 0x90, 0x7a, 0x08, 0x08, 0x14, 0xc7, 0xde, 0xae, 0x4b, 0x9b, 0x04, - 0x3b, 0x09, 0x94, 0xaf, 0xa7, 0xf1, 0x7b, 0x13, 0x67, 0x88, 0x3d, 0xcf, 0xbc, 0x19, 0x2f, 0xf1, - 0x9d, 0x43, 0x15, 0x84, 0x54, 0x09, 0x09, 0x21, 0xc1, 0x8a, 0x95, 0xb8, 0x94, 0x5b, 0x0f, 0x2b, - 0xee, 0xdc, 0x0a, 0x12, 0xd2, 0x6a, 0x4f, 0x08, 0x89, 0x80, 0x76, 0x0f, 0xad, 0xe0, 0x82, 0x38, - 0x71, 0x44, 0xf3, 0xf1, 0x3e, 0x1c, 0x27, 0x9b, 0xcd, 0xb6, 0x42, 0x15, 0x5c, 0x9e, 0xde, 0xcc, - 0xfc, 0xff, 0xbf, 0x99, 0xff, 0xef, 0xff, 0x31, 0x1f, 0x70, 0xc3, 0xf1, 0x78, 0xd7, 0xe3, 0x65, - 0x2e, 0xf0, 0x3e, 0x65, 0xed, 0xf2, 0xdd, 0x5b, 0x2d, 0x22, 0xf0, 0xad, 0xa0, 0x5d, 0xea, 0xf9, - 0x9e, 0xf0, 0xd0, 0x65, 0x2d, 0x55, 0x0a, 0x7a, 0x8d, 0x54, 0xee, 0x62, 0xdb, 0x6b, 0x7b, 0x4a, - 0xa4, 0x2c, 0xff, 0xb4, 0x74, 0xee, 0x6a, 0xdb, 0xf3, 0xda, 0x1d, 0x52, 0x56, 0xad, 0x56, 0x7f, - 0xb7, 0x8c, 0xd9, 0xc0, 0x0c, 0x2d, 0x1c, 0x1f, 0x72, 0xfb, 0x3e, 0x16, 0xd4, 0x63, 0x66, 0x3c, - 0x7f, 0x7c, 0x5c, 0xd0, 0x2e, 0xe1, 0x02, 0x77, 0x7b, 0x01, 0xb6, 0x5e, 0x89, 0xad, 0x27, 0x35, - 0xcb, 0x32, 0xd8, 0xc6, 0x94, 0x16, 0xe6, 0x24, 0xb4, 0xc3, 0xf1, 0x68, 0x80, 0x3d, 0x8f, 0xbb, - 0x94, 0x79, 0x65, 0xf5, 0x35, 0x5d, 0x9f, 0x11, 0x84, 0xb9, 0xc4, 0xef, 0x52, 0x26, 0xca, 0x62, - 0xd0, 0x23, 0x5c, 0x7f, 0xcd, 0xe8, 0xb5, 0xd8, 0x28, 0x6e, 0x39, 0x34, 0x3e, 0x58, 0xfc, 0xa9, - 0x05, 0x73, 0x77, 0x28, 0x17, 0x9e, 0x4f, 0x1d, 0xdc, 0xa9, 0xb3, 0x5d, 0x0f, 0x7d, 0x09, 0x92, - 0x7b, 0x04, 0xbb, 0xc4, 0xcf, 0x5a, 0x05, 0x6b, 0x31, 0xb5, 0x9c, 0x2d, 0x45, 0x00, 0x25, 0xad, - 0x7b, 0x47, 0x8d, 0x57, 0xa6, 0x3f, 0x38, 0xca, 0x8f, 0xbd, 0xf7, 0xe1, 0xfb, 0x37, 0xad, 0x86, - 0x51, 0x41, 0x55, 0x48, 0xde, 0xc5, 0x1d, 0x4e, 0x44, 0x76, 0xbc, 0x90, 0x58, 0x4c, 0x2d, 0x5f, - 0x2f, 0x9d, 0xcc, 0x79, 0x69, 0x07, 0x77, 0xa8, 0x8b, 0x85, 0x37, 0x8c, 0xa2, 0x75, 0x8b, 0x3f, - 0x1b, 0x87, 0xf4, 0x9a, 0xd7, 0xed, 0x52, 0xce, 0xa9, 0xc7, 0x1a, 0x58, 0x10, 0x8e, 0xde, 0x80, - 0x09, 0x1f, 0x0b, 0xa2, 0x16, 0x35, 0x5d, 0x79, 0x4d, 0x2a, 0xfd, 0xf9, 0x28, 0x7f, 0x4d, 0xc3, - 0x73, 0x77, 0xbf, 0x44, 0xbd, 0x72, 0x17, 0x8b, 0xbd, 0xd2, 0x9b, 0xa4, 0x8d, 0x9d, 0x41, 0x95, - 0x38, 0x8f, 0x1e, 0x2c, 0x81, 0x99, 0xbd, 0x4a, 0x1c, 0x3d, 0x83, 0xc2, 0x40, 0x5f, 0x87, 0xa9, - 0x2e, 0x3e, 0xb0, 0x15, 0xde, 0xf8, 0xc7, 0xc2, 0x9b, 0xec, 0xe2, 0x03, 0xb9, 0x3e, 0xf4, 0x3d, - 0x48, 0x4b, 0x48, 0x67, 0x0f, 0xb3, 0x36, 0xd1, 0xc8, 0x89, 0x8f, 0x85, 0x3c, 0xdb, 0xc5, 0x07, - 0x6b, 0x0a, 0x4d, 0xe2, 0xaf, 0x4c, 0x7c, 0x74, 0x3f, 0x6f, 0x15, 0x7f, 0x67, 0x01, 0x44, 0xc4, - 0x20, 0x0c, 0x19, 0x27, 0x6c, 0xa9, 0x49, 0xb9, 0x71, 0xda, 0xcb, 0xa7, 0xf1, 0x7e, 0x8c, 0xd6, - 0xca, 0xac, 0x5c, 0xde, 0xc3, 0xa3, 0xbc, 0xa5, 0x67, 0x4d, 0x3b, 0x23, 0xb4, 0xa7, 0xfa, 0x3d, - 0x17, 0x0b, 0x62, 0xcb, 0x18, 0x56, 0x6c, 0xa5, 0x96, 0x73, 0x25, 0x1d, 0xe0, 0xa5, 0x20, 0xc0, - 0x4b, 0x5b, 0x41, 0x80, 0x6b, 0xc0, 0x77, 0xff, 0x1a, 0x00, 0x82, 0xd6, 0x96, 0xe3, 0xc6, 0x86, - 0xf7, 0x2c, 0x48, 0x55, 0x09, 0x77, 0x7c, 0xda, 0x93, 0x29, 0x83, 0xb2, 0x30, 0xd9, 0xf5, 0x18, - 0xdd, 0x37, 0x01, 0x37, 0xdd, 0x08, 0x9a, 0x28, 0x07, 0x53, 0xd4, 0x25, 0x4c, 0x50, 0x31, 0xd0, - 0x6e, 0x6a, 0x84, 0x6d, 0xa9, 0xf5, 0x43, 0xd2, 0xe2, 0x34, 0xe0, 0xb9, 0x11, 0x34, 0xd1, 0x2b, - 0x90, 0xe1, 0xc4, 0xe9, 0xfb, 0x54, 0x0c, 0x6c, 0xc7, 0x63, 0x02, 0x3b, 0x22, 0x3b, 0xa1, 0x44, - 0xd2, 0x41, 0xff, 0x9a, 0xee, 0x96, 0x20, 0x2e, 0x11, 0x98, 0x76, 0x78, 0xf6, 0x05, 0x0d, 0x62, - 0x9a, 0x66, 0xa9, 0x87, 0x93, 0x30, 0x1d, 0x06, 0x2a, 0x5a, 0x83, 0x8c, 0xd7, 0x23, 0xbe, 0xfc, - 0xb7, 0xb1, 0xeb, 0xfa, 0x84, 0x73, 0x13, 0x8d, 0xd9, 0x47, 0x0f, 0x96, 0x2e, 0x1a, 0xc2, 0x57, - 0xf5, 0x48, 0x53, 0xf8, 0x94, 0xb5, 0x1b, 0xe9, 0x40, 0xc3, 0x74, 0xa3, 0xb7, 0xa5, 0xcb, 0x18, - 0x27, 0x8c, 0xf7, 0xb9, 0xdd, 0xeb, 0xb7, 0xf6, 0xc9, 0xc0, 0x90, 0x7a, 0x71, 0x84, 0xd4, 0x55, - 0x36, 0xa8, 0x64, 0xff, 0x10, 0x41, 0x3b, 0xfe, 0xa0, 0x27, 0xbc, 0xd2, 0x66, 0xbf, 0xf5, 0x35, - 0x32, 0x90, 0xae, 0x32, 0x38, 0x9b, 0x0a, 0x06, 0x5d, 0x86, 0xe4, 0xf7, 0x31, 0xed, 0x10, 0x57, - 0x31, 0x32, 0xd5, 0x30, 0x2d, 0xb4, 0x02, 0x49, 0x2e, 0xb0, 0xe8, 0x73, 0x45, 0xc3, 0xdc, 0x72, - 0xf1, 0xb4, 0xd8, 0xa8, 0x78, 0xcc, 0x6d, 0x2a, 0xc9, 0x86, 0xd1, 0x40, 0x6b, 0x90, 0x14, 0xde, - 0x3e, 0x61, 0x86, 0xa0, 0xca, 0xe7, 0x4d, 0x34, 0x5f, 0x1a, 0x8d, 0xe6, 0x3a, 0x13, 0xb1, 0x38, - 0xae, 0x33, 0xd1, 0x30, 0xaa, 0xe8, 0x3b, 0x90, 0x71, 0x49, 0x87, 0xb4, 0x15, 0x73, 0x7c, 0x0f, - 0xfb, 0x84, 0x67, 0x93, 0x0a, 0xee, 0xd6, 0xb9, 0x93, 0xa3, 0x91, 0x0e, 0xa1, 0x9a, 0x0a, 0x09, - 0x6d, 0x42, 0xca, 0x8d, 0xc2, 0x29, 0x3b, 0xa9, 0xc8, 0x7c, 0xe9, 0x34, 0x1b, 0x63, 0x91, 0x17, - 0xaf, 0x3c, 0x71, 0x08, 0x19, 0x41, 0x7d, 0xd6, 0xf2, 0x98, 0x4b, 0x59, 0xdb, 0xde, 0x23, 0xb4, - 0xbd, 0x27, 0xb2, 0x53, 0x05, 0x6b, 0x31, 0xd1, 0x48, 0x87, 0xfd, 0x77, 0x54, 0x37, 0xda, 0x84, - 0xb9, 0x48, 0x54, 0x65, 0xc8, 0xf4, 0x79, 0x33, 0x64, 0x36, 0x04, 0x90, 0x22, 0xe8, 0x2d, 0x80, - 0x28, 0x07, 0xb3, 0xa0, 0xd0, 0x8a, 0x67, 0x67, 0x73, 0xdc, 0x98, 0x18, 0x00, 0xfa, 0x36, 0x5c, - 0xe8, 0x52, 0x66, 0x73, 0xd2, 0xd9, 0xb5, 0x0d, 0x73, 0x12, 0x37, 0x75, 0x7e, 0x6f, 0xce, 0x77, - 0x29, 0x6b, 0x92, 0xce, 0x6e, 0x35, 0x44, 0x41, 0x5f, 0x86, 0x6b, 0x91, 0xf5, 0x1e, 0xb3, 0xf7, - 0xbc, 0x8e, 0x6b, 0xfb, 0x64, 0xd7, 0x76, 0xbc, 0x3e, 0x13, 0xd9, 0x19, 0xc5, 0xd9, 0x95, 0x50, - 0x64, 0x83, 0xdd, 0xf1, 0x3a, 0x6e, 0x83, 0xec, 0xae, 0xc9, 0x61, 0xf4, 0x12, 0x44, 0xa6, 0xdb, - 0xd4, 0xe5, 0xd9, 0xd9, 0x42, 0x62, 0x71, 0xa2, 0x31, 0x13, 0x76, 0xd6, 0x5d, 0xbe, 0x32, 0xf5, - 0xce, 0xfd, 0xfc, 0xd8, 0x47, 0xf7, 0xf3, 0x63, 0xc5, 0xdb, 0x30, 0xb3, 0x83, 0x3b, 0x26, 0x8f, - 0x08, 0x47, 0xaf, 0xc1, 0x34, 0x0e, 0x1a, 0x59, 0xab, 0x90, 0x78, 0x6a, 0x1e, 0x46, 0xa2, 0xc5, - 0xdf, 0x58, 0x90, 0xac, 0xee, 0x6c, 0x62, 0xea, 0xa3, 0x1a, 0xcc, 0x47, 0x81, 0xf9, 0xac, 0x29, - 0x1d, 0xc5, 0x72, 0x90, 0xd3, 0xeb, 0x30, 0x7f, 0x37, 0xa8, 0x12, 0x21, 0x8c, 0xde, 0x57, 0xae, - 0x3f, 0x7a, 0xb0, 0xf4, 0xa2, 0x81, 0x09, 0x2b, 0xc9, 0x31, 0xbc, 0xbb, 0xc7, 0xfa, 0x63, 0x36, - 0xbf, 0x01, 0x93, 0x7a, 0xa9, 0x1c, 0x7d, 0x15, 0x5e, 0xe8, 0xc9, 0x1f, 0x65, 0x6a, 0x6a, 0x79, - 0xe1, 0xd4, 0x00, 0x57, 0xf2, 0xf1, 0x70, 0xd0, 0x7a, 0xc5, 0x1f, 0x8f, 0x03, 0x54, 0x77, 0x76, - 0xb6, 0x7c, 0xda, 0xeb, 0x10, 0xf1, 0x49, 0xd9, 0xbe, 0x0d, 0x97, 0x22, 0xdb, 0xb9, 0xef, 0x9c, - 0xdf, 0xfe, 0x0b, 0xa1, 0x7e, 0xd3, 0x77, 0x4e, 0x84, 0x75, 0xb9, 0x08, 0x61, 0x13, 0xe7, 0x87, - 0xad, 0x72, 0x31, 0xca, 0xec, 0x37, 0x21, 0x15, 0x91, 0xc1, 0x51, 0x1d, 0xa6, 0x84, 0xf9, 0x37, - 0x04, 0x17, 0x4f, 0x27, 0x38, 0x50, 0x8b, 0x93, 0x1c, 0xaa, 0x17, 0xff, 0x6d, 0x01, 0xc4, 0x72, - 0xe4, 0xd3, 0x19, 0x63, 0xa8, 0x0e, 0x49, 0x53, 0x89, 0x13, 0xcf, 0x5b, 0x89, 0x0d, 0x40, 0x8c, - 0xd4, 0x9f, 0x8c, 0xc3, 0x85, 0xed, 0x20, 0x7b, 0x3f, 0xfd, 0x1c, 0x6c, 0xc3, 0x24, 0x61, 0xc2, - 0xa7, 0x8a, 0x04, 0xe9, 0xf3, 0x2f, 0x9c, 0xe6, 0xf3, 0x13, 0x8c, 0xaa, 0x31, 0xe1, 0x0f, 0xe2, - 0x11, 0x10, 0x60, 0xc5, 0xf8, 0xf8, 0x45, 0x02, 0xb2, 0xa7, 0xa9, 0xa2, 0x97, 0x21, 0xed, 0xf8, - 0x44, 0x75, 0x04, 0x9b, 0x8c, 0xa5, 0x0a, 0xe6, 0x5c, 0xd0, 0x6d, 0xf6, 0x98, 0x06, 0xc8, 0x53, - 0x99, 0x0c, 0x2e, 0x29, 0xfa, 0x7c, 0xc7, 0xb0, 0xb9, 0x08, 0x41, 0xed, 0x32, 0x5b, 0x90, 0xa6, - 0x8c, 0x0a, 0x8a, 0x3b, 0x76, 0x0b, 0x77, 0x30, 0x73, 0x82, 0xe3, 0xea, 0xb9, 0xb6, 0x84, 0x39, - 0x83, 0x51, 0xd1, 0x10, 0xa8, 0x06, 0x93, 0x01, 0xda, 0xc4, 0xf9, 0xd1, 0x02, 0x5d, 0x74, 0x1d, - 0x66, 0xe2, 0x1b, 0x83, 0x3a, 0x7a, 0x4c, 0x34, 0x52, 0xb1, 0x7d, 0xe1, 0xac, 0x9d, 0x27, 0xf9, - 0xd4, 0x9d, 0xc7, 0x9c, 0xee, 0x7e, 0x95, 0x80, 0xf9, 0x06, 0x71, 0xff, 0xf7, 0xdd, 0xb2, 0x09, - 0xa0, 0x53, 0x55, 0x56, 0x52, 0xe3, 0x99, 0xe7, 0xc8, 0xf7, 0x69, 0x0d, 0x52, 0xe5, 0xe2, 0xbf, - 0xe5, 0xa1, 0xbf, 0x8c, 0xc3, 0x4c, 0xdc, 0x43, 0xff, 0x97, 0x9b, 0x16, 0x5a, 0x8f, 0xca, 0xd4, - 0x84, 0x2a, 0x53, 0xaf, 0x9c, 0x56, 0xa6, 0x46, 0xa2, 0xf9, 0x8c, 0xfa, 0xf4, 0xcb, 0x04, 0x24, - 0x37, 0xb1, 0x8f, 0xbb, 0x1c, 0x6d, 0x8c, 0x1c, 0x64, 0xf5, 0x45, 0xf2, 0xea, 0x48, 0x30, 0x57, - 0xcd, 0x5b, 0x87, 0x8e, 0xe5, 0x9f, 0x9f, 0x76, 0x8e, 0xfd, 0x2c, 0xcc, 0xc9, 0x0b, 0x71, 0x68, - 0x90, 0x26, 0x77, 0x56, 0xdd, 0x6b, 0x43, 0xeb, 0x39, 0xca, 0x43, 0x4a, 0x8a, 0x45, 0x75, 0x58, - 0xca, 0x40, 0x17, 0x1f, 0xd4, 0x74, 0x0f, 0x5a, 0x02, 0xb4, 0x17, 0x3e, 0x50, 0xd8, 0x11, 0x11, - 0x52, 0x6e, 0x3e, 0x1a, 0x09, 0xc4, 0x5f, 0x04, 0x90, 0xab, 0xb0, 0x5d, 0xc2, 0xbc, 0xae, 0xb9, - 0xd5, 0x4d, 0xcb, 0x9e, 0xaa, 0xec, 0x40, 0x3f, 0xb2, 0xf4, 0x79, 0xf8, 0xd8, 0xb5, 0xd9, 0x5c, - 0x47, 0xb6, 0x9e, 0x21, 0x29, 0xfe, 0x75, 0x94, 0xcf, 0x0d, 0x70, 0xb7, 0xb3, 0x52, 0x3c, 0x01, - 0xa7, 0x78, 0xd2, 0x4d, 0x5e, 0x1e, 0x9c, 0x87, 0xaf, 0xdd, 0x2b, 0x37, 0x64, 0x78, 0x1f, 0x7e, - 0xf8, 0xfe, 0x4d, 0x33, 0xd3, 0x12, 0x77, 0xf7, 0xcb, 0x07, 0xe1, 0xf3, 0x95, 0xf6, 0x89, 0x3c, - 0xa9, 0xa2, 0x68, 0xd7, 0x68, 0x10, 0xde, 0x93, 0x37, 0x3e, 0x79, 0x43, 0x88, 0x9d, 0xe4, 0xad, - 0xa7, 0xdf, 0x10, 0x22, 0xfd, 0xa1, 0x1b, 0x42, 0x2c, 0xa7, 0xbe, 0x12, 0x15, 0xed, 0x71, 0xe3, - 0x72, 0x83, 0xd5, 0xc2, 0x9c, 0xc4, 0xae, 0x1a, 0x74, 0x08, 0x22, 0x50, 0x52, 0xa9, 0x3a, 0x56, - 0xfc, 0xa3, 0x05, 0x57, 0x47, 0xc2, 0x2f, 0x5c, 0xb2, 0x03, 0xc8, 0x8f, 0x0d, 0x2a, 0x37, 0x0e, - 0xcc, 0xd2, 0x9f, 0x2f, 0x9a, 0xe7, 0xfd, 0x91, 0xca, 0xfd, 0xc9, 0xec, 0x3e, 0xa6, 0xf4, 0xfc, - 0xde, 0x82, 0x8b, 0xf1, 0x05, 0x84, 0xa6, 0x34, 0x61, 0x26, 0x3e, 0xb5, 0x31, 0xe2, 0xc6, 0xb3, - 0x18, 0x11, 0x5f, 0xff, 0x10, 0x08, 0xda, 0x89, 0x52, 0x5c, 0xbf, 0x9b, 0xdd, 0x7a, 0x66, 0x52, - 0x82, 0x85, 0x9d, 0x98, 0xea, 0xda, 0x37, 0xff, 0xb0, 0x60, 0x62, 0xd3, 0xf3, 0x3a, 0xe8, 0x07, - 0x30, 0xcf, 0x3c, 0x61, 0xcb, 0x74, 0x20, 0xae, 0x6d, 0x2e, 0xf6, 0xba, 0x7c, 0xd6, 0x9e, 0xca, - 0xd5, 0xdf, 0x8f, 0xf2, 0xa3, 0x9a, 0xc3, 0x04, 0x9a, 0xf7, 0x23, 0xe6, 0x89, 0x8a, 0x12, 0xda, - 0xd2, 0x77, 0xff, 0x5d, 0x98, 0x1d, 0x9e, 0x4e, 0x97, 0xd8, 0xd5, 0xb3, 0xa6, 0x9b, 0x3d, 0x73, - 0xaa, 0x99, 0x56, 0x6c, 0x9e, 0x95, 0x29, 0xe9, 0xb5, 0x7f, 0x4a, 0xcf, 0xbd, 0x0d, 0x99, 0xb0, - 0xbe, 0x6c, 0xab, 0xc7, 0x27, 0x2e, 0x43, 0x43, 0xbf, 0x43, 0x05, 0xa7, 0xfb, 0x42, 0xfc, 0x51, - 0x13, 0xb7, 0x1c, 0x5a, 0x3a, 0xa6, 0x33, 0x44, 0xa7, 0xd1, 0xbd, 0xf9, 0x5b, 0x0b, 0x20, 0x7a, - 0x24, 0x41, 0xaf, 0xc2, 0x95, 0xca, 0xc6, 0x7a, 0xd5, 0x6e, 0x6e, 0xad, 0x6e, 0x6d, 0x37, 0xed, - 0xed, 0xf5, 0xe6, 0x66, 0x6d, 0xad, 0x7e, 0xbb, 0x5e, 0xab, 0x66, 0xc6, 0x72, 0xe9, 0xc3, 0x7b, - 0x85, 0xd4, 0x36, 0xe3, 0x3d, 0xe2, 0xd0, 0x5d, 0x4a, 0x5c, 0xf4, 0x39, 0xb8, 0x38, 0x2c, 0x2d, - 0x5b, 0xb5, 0x6a, 0xc6, 0xca, 0xcd, 0x1c, 0xde, 0x2b, 0x4c, 0xe9, 0x73, 0x22, 0x71, 0xd1, 0x22, - 0x5c, 0x1a, 0x95, 0xab, 0xaf, 0xbf, 0x9e, 0x19, 0xcf, 0xcd, 0x1e, 0xde, 0x2b, 0x4c, 0x87, 0x07, - 0x4a, 0x54, 0x04, 0x14, 0x97, 0x34, 0x78, 0x89, 0x1c, 0x1c, 0xde, 0x2b, 0x24, 0xb5, 0x17, 0x72, - 0x13, 0xef, 0xfc, 0x7a, 0x61, 0xec, 0xe6, 0x77, 0x01, 0xea, 0x6c, 0xd7, 0xc7, 0x8e, 0x8a, 0xb6, - 0x1c, 0x5c, 0xae, 0xaf, 0xdf, 0x6e, 0xac, 0xae, 0x6d, 0xd5, 0x37, 0xd6, 0x87, 0x97, 0x7d, 0x6c, - 0xac, 0xba, 0xb1, 0x5d, 0x79, 0xb3, 0x66, 0x37, 0xeb, 0xaf, 0xaf, 0x67, 0x2c, 0x74, 0x05, 0x2e, - 0x0c, 0x8d, 0x7d, 0x63, 0x7d, 0xab, 0xfe, 0x56, 0x2d, 0x33, 0x5e, 0xb9, 0xfd, 0xc1, 0xe3, 0x05, - 0xeb, 0xe1, 0xe3, 0x05, 0xeb, 0x6f, 0x8f, 0x17, 0xac, 0x77, 0x9f, 0x2c, 0x8c, 0x3d, 0x7c, 0xb2, - 0x30, 0xf6, 0xa7, 0x27, 0x0b, 0x63, 0xdf, 0x7a, 0xb5, 0x4d, 0xc5, 0x5e, 0xbf, 0x55, 0x72, 0xbc, - 0xae, 0x79, 0xe6, 0x2e, 0x9f, 0x58, 0xf1, 0xd4, 0xbb, 0x72, 0x2b, 0xa9, 0x36, 0x99, 0x2f, 0xfe, - 0x27, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x6b, 0x77, 0xd8, 0xcf, 0x17, 0x00, 0x00, + // 1927 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4d, 0x6c, 0x5b, 0x49, + 0x1d, 0xcf, 0x8b, 0xbd, 0x4e, 0xf2, 0x77, 0x12, 0x3b, 0xd3, 0x6e, 0xeb, 0xba, 0x6c, 0xec, 0x7a, + 0x0b, 0x9b, 0x2d, 0x1b, 0x9b, 0x06, 0x69, 0x0f, 0x01, 0x81, 0xe2, 0xd8, 0x6d, 0xbd, 0xec, 0x26, + 0xc1, 0x4e, 0x02, 0xcb, 0xd7, 0xd3, 0xf8, 0xbd, 0x89, 0x3d, 0xc4, 0xef, 0x3d, 0xf3, 0x66, 0x5c, + 0xe2, 0x3b, 0x42, 0xab, 0x20, 0xa4, 0x95, 0x90, 0x10, 0x12, 0xaa, 0xa8, 0xc4, 0x65, 0xb9, 0xed, + 0xa1, 0xe2, 0xce, 0x6d, 0x41, 0x42, 0xaa, 0x7a, 0x42, 0x48, 0x04, 0xd4, 0x1e, 0x76, 0x05, 0x17, + 0xc4, 0x89, 0x23, 0x9a, 0x8f, 0xf7, 0xe1, 0x38, 0x69, 0x9a, 0xee, 0x0a, 0xad, 0xe0, 0xf2, 0xf4, + 0x66, 0xe6, 0xff, 0xff, 0xcd, 0xfc, 0x7f, 0xff, 0x8f, 0xf9, 0x80, 0xeb, 0x96, 0xc7, 0x1c, 0x8f, + 0x55, 0x18, 0xc7, 0xfb, 0xd4, 0xed, 0x54, 0xee, 0xde, 0x6c, 0x13, 0x8e, 0x6f, 0x06, 0xed, 0x72, + 0xdf, 0xf7, 0xb8, 0x87, 0x2e, 0x29, 0xa9, 0x72, 0xd0, 0xab, 0xa5, 0xf2, 0x17, 0x3b, 0x5e, 0xc7, + 0x93, 0x22, 0x15, 0xf1, 0xa7, 0xa4, 0xf3, 0x57, 0x3a, 0x9e, 0xd7, 0xe9, 0x91, 0x8a, 0x6c, 0xb5, + 0x07, 0x7b, 0x15, 0xec, 0x0e, 0xf5, 0xd0, 0xe2, 0xf1, 0x21, 0x7b, 0xe0, 0x63, 0x4e, 0x3d, 0x57, + 0x8f, 0x17, 0x8e, 0x8f, 0x73, 0xea, 0x10, 0xc6, 0xb1, 0xd3, 0x0f, 0xb0, 0xd5, 0x4a, 0x4c, 0x35, + 0xa9, 0x5e, 0x96, 0xc6, 0xd6, 0xa6, 0xb4, 0x31, 0x23, 0xa1, 0x1d, 0x96, 0x47, 0x03, 0xec, 0x05, + 0xec, 0x50, 0xd7, 0xab, 0xc8, 0xaf, 0xee, 0xfa, 0x0c, 0x27, 0xae, 0x4d, 0x7c, 0x87, 0xba, 0xbc, + 0xc2, 0x87, 0x7d, 0xc2, 0xd4, 0x57, 0x8f, 0x5e, 0x8d, 0x8d, 0xe2, 0xb6, 0x45, 0xe3, 0x83, 0xa5, + 0x9f, 0x19, 0x30, 0x7f, 0x87, 0x32, 0xee, 0xf9, 0xd4, 0xc2, 0xbd, 0x86, 0xbb, 0xe7, 0xa1, 0x2f, + 0x41, 0xaa, 0x4b, 0xb0, 0x4d, 0xfc, 0x9c, 0x51, 0x34, 0x96, 0xd2, 0x2b, 0xb9, 0x72, 0x04, 0x50, + 0x56, 0xba, 0x77, 0xe4, 0x78, 0x75, 0xe6, 0x83, 0xa3, 0xc2, 0xc4, 0x7b, 0x1f, 0xbe, 0x7f, 0xc3, + 0x68, 0x6a, 0x15, 0x54, 0x83, 0xd4, 0x5d, 0xdc, 0x63, 0x84, 0xe7, 0x26, 0x8b, 0x89, 0xa5, 0xf4, + 0xca, 0xb5, 0xf2, 0xc9, 0x9c, 0x97, 0x77, 0x71, 0x8f, 0xda, 0x98, 0x7b, 0xa3, 0x28, 0x4a, 0xb7, + 0xf4, 0xf3, 0x49, 0xc8, 0xac, 0x7b, 0x8e, 0x43, 0x19, 0xa3, 0x9e, 0xdb, 0xc4, 0x9c, 0x30, 0xf4, + 0x06, 0x24, 0x7d, 0xcc, 0x89, 0x5c, 0xd4, 0x4c, 0xf5, 0x75, 0xa1, 0xf4, 0xe7, 0xa3, 0xc2, 0x55, + 0x05, 0xcf, 0xec, 0xfd, 0x32, 0xf5, 0x2a, 0x0e, 0xe6, 0xdd, 0xf2, 0x9b, 0xa4, 0x83, 0xad, 0x61, + 0x8d, 0x58, 0x8f, 0x1e, 0x2c, 0x83, 0x9e, 0xbd, 0x46, 0x2c, 0x35, 0x83, 0xc4, 0x40, 0x5f, 0x87, + 0x69, 0x07, 0x1f, 0x98, 0x12, 0x6f, 0xf2, 0x63, 0xe1, 0x4d, 0x39, 0xf8, 0x40, 0xac, 0x0f, 0x7d, + 0x0f, 0x32, 0x02, 0xd2, 0xea, 0x62, 0xb7, 0x43, 0x14, 0x72, 0xe2, 0x63, 0x21, 0xcf, 0x39, 0xf8, + 0x60, 0x5d, 0xa2, 0x09, 0xfc, 0xd5, 0xe4, 0x47, 0xf7, 0x0b, 0x46, 0xe9, 0x77, 0x06, 0x40, 0x44, + 0x0c, 0xc2, 0x90, 0xb5, 0xc2, 0x96, 0x9c, 0x94, 0x69, 0xa7, 0xbd, 0x72, 0x1a, 0xef, 0xc7, 0x68, + 0xad, 0xce, 0x89, 0xe5, 0x3d, 0x3c, 0x2a, 0x18, 0x6a, 0xd6, 0x8c, 0x35, 0x46, 0x7b, 0x7a, 0xd0, + 0xb7, 0x31, 0x27, 0xa6, 0x88, 0x61, 0xc9, 0x56, 0x7a, 0x25, 0x5f, 0x56, 0x01, 0x5e, 0x0e, 0x02, + 0xbc, 0xbc, 0x1d, 0x04, 0xb8, 0x02, 0x7c, 0xf7, 0xaf, 0x01, 0x20, 0x28, 0x6d, 0x31, 0xae, 0x6d, + 0x78, 0xcf, 0x80, 0x74, 0x8d, 0x30, 0xcb, 0xa7, 0x7d, 0x91, 0x32, 0x28, 0x07, 0x53, 0x8e, 0xe7, + 0xd2, 0x7d, 0x1d, 0x70, 0x33, 0xcd, 0xa0, 0x89, 0xf2, 0x30, 0x4d, 0x6d, 0xe2, 0x72, 0xca, 0x87, + 0xca, 0x4d, 0xcd, 0xb0, 0x2d, 0xb4, 0x7e, 0x48, 0xda, 0x8c, 0x06, 0x3c, 0x37, 0x83, 0x26, 0x7a, + 0x15, 0xb2, 0x8c, 0x58, 0x03, 0x9f, 0xf2, 0xa1, 0x69, 0x79, 0x2e, 0xc7, 0x16, 0xcf, 0x25, 0xa5, + 0x48, 0x26, 0xe8, 0x5f, 0x57, 0xdd, 0x02, 0xc4, 0x26, 0x1c, 0xd3, 0x1e, 0xcb, 0xbd, 0xa0, 0x40, + 0x74, 0x53, 0x2f, 0xf5, 0x70, 0x0a, 0x66, 0xc2, 0x40, 0x45, 0xeb, 0x90, 0xf5, 0xfa, 0xc4, 0x17, + 0xff, 0x26, 0xb6, 0x6d, 0x9f, 0x30, 0xa6, 0xa3, 0x31, 0xf7, 0xe8, 0xc1, 0xf2, 0x45, 0x4d, 0xf8, + 0x9a, 0x1a, 0x69, 0x71, 0x9f, 0xba, 0x9d, 0x66, 0x26, 0xd0, 0xd0, 0xdd, 0xe8, 0x6d, 0xe1, 0x32, + 0x97, 0x11, 0x97, 0x0d, 0x98, 0xd9, 0x1f, 0xb4, 0xf7, 0xc9, 0x50, 0x93, 0x7a, 0x71, 0x8c, 0xd4, + 0x35, 0x77, 0x58, 0xcd, 0xfd, 0x21, 0x82, 0xb6, 0xfc, 0x61, 0x9f, 0x7b, 0xe5, 0xad, 0x41, 0xfb, + 0x6b, 0x64, 0x28, 0x5c, 0xa5, 0x71, 0xb6, 0x24, 0x0c, 0xba, 0x04, 0xa9, 0xef, 0x63, 0xda, 0x23, + 0xb6, 0x64, 0x64, 0xba, 0xa9, 0x5b, 0x68, 0x15, 0x52, 0x8c, 0x63, 0x3e, 0x60, 0x92, 0x86, 0xf9, + 0x95, 0xd2, 0x69, 0xb1, 0x51, 0xf5, 0x5c, 0xbb, 0x25, 0x25, 0x9b, 0x5a, 0x03, 0xad, 0x43, 0x8a, + 0x7b, 0xfb, 0xc4, 0xd5, 0x04, 0x55, 0x3f, 0xaf, 0xa3, 0xf9, 0xc5, 0xf1, 0x68, 0x6e, 0xb8, 0x3c, + 0x16, 0xc7, 0x0d, 0x97, 0x37, 0xb5, 0x2a, 0xfa, 0x0e, 0x64, 0x6d, 0xd2, 0x23, 0x1d, 0xc9, 0x1c, + 0xeb, 0x62, 0x9f, 0xb0, 0x5c, 0x4a, 0xc2, 0xdd, 0x3c, 0x77, 0x72, 0x34, 0x33, 0x21, 0x54, 0x4b, + 0x22, 0xa1, 0x2d, 0x48, 0xdb, 0x51, 0x38, 0xe5, 0xa6, 0x24, 0x99, 0x2f, 0x9f, 0x66, 0x63, 0x2c, + 0xf2, 0xe2, 0x95, 0x27, 0x0e, 0x21, 0x22, 0x68, 0xe0, 0xb6, 0x3d, 0xd7, 0xa6, 0x6e, 0xc7, 0xec, + 0x12, 0xda, 0xe9, 0xf2, 0xdc, 0x74, 0xd1, 0x58, 0x4a, 0x34, 0x33, 0x61, 0xff, 0x1d, 0xd9, 0x8d, + 0xb6, 0x60, 0x3e, 0x12, 0x95, 0x19, 0x32, 0x73, 0xde, 0x0c, 0x99, 0x0b, 0x01, 0x84, 0x08, 0x7a, + 0x0b, 0x20, 0xca, 0xc1, 0x1c, 0x48, 0xb4, 0xd2, 0xd9, 0xd9, 0x1c, 0x37, 0x26, 0x06, 0x80, 0xbe, + 0x0d, 0x17, 0x1c, 0xea, 0x9a, 0x8c, 0xf4, 0xf6, 0x4c, 0xcd, 0x9c, 0xc0, 0x4d, 0x9f, 0xdf, 0x9b, + 0x0b, 0x0e, 0x75, 0x5b, 0xa4, 0xb7, 0x57, 0x0b, 0x51, 0xd0, 0x97, 0xe1, 0x6a, 0x64, 0xbd, 0xe7, + 0x9a, 0x5d, 0xaf, 0x67, 0x9b, 0x3e, 0xd9, 0x33, 0x2d, 0x6f, 0xe0, 0xf2, 0xdc, 0xac, 0xe4, 0xec, + 0x72, 0x28, 0xb2, 0xe9, 0xde, 0xf1, 0x7a, 0x76, 0x93, 0xec, 0xad, 0x8b, 0x61, 0xf4, 0x32, 0x44, + 0xa6, 0x9b, 0xd4, 0x66, 0xb9, 0xb9, 0x62, 0x62, 0x29, 0xd9, 0x9c, 0x0d, 0x3b, 0x1b, 0x36, 0x5b, + 0x9d, 0x7e, 0xe7, 0x7e, 0x61, 0xe2, 0xa3, 0xfb, 0x85, 0x89, 0xd2, 0x2d, 0x98, 0xdd, 0xc5, 0x3d, + 0x9d, 0x47, 0x84, 0xa1, 0xd7, 0x61, 0x06, 0x07, 0x8d, 0x9c, 0x51, 0x4c, 0x3c, 0x35, 0x0f, 0x23, + 0xd1, 0xd2, 0x6f, 0x0c, 0x48, 0xd5, 0x76, 0xb7, 0x30, 0xf5, 0x51, 0x1d, 0x16, 0xa2, 0xc0, 0x7c, + 0xd6, 0x94, 0x8e, 0x62, 0x39, 0xc8, 0xe9, 0x0d, 0x58, 0xb8, 0x1b, 0x54, 0x89, 0x10, 0x46, 0xed, + 0x2b, 0xd7, 0x1e, 0x3d, 0x58, 0x7e, 0x49, 0xc3, 0x84, 0x95, 0xe4, 0x18, 0xde, 0xdd, 0x63, 0xfd, + 0x31, 0x9b, 0xdf, 0x80, 0x29, 0xb5, 0x54, 0x86, 0xbe, 0x0a, 0x2f, 0xf4, 0xc5, 0x8f, 0x34, 0x35, + 0xbd, 0xb2, 0x78, 0x6a, 0x80, 0x4b, 0xf9, 0x78, 0x38, 0x28, 0xbd, 0xd2, 0x4f, 0x26, 0x01, 0x6a, + 0xbb, 0xbb, 0xdb, 0x3e, 0xed, 0xf7, 0x08, 0xff, 0xa4, 0x6c, 0xdf, 0x81, 0x17, 0x23, 0xdb, 0x99, + 0x6f, 0x9d, 0xdf, 0xfe, 0x0b, 0xa1, 0x7e, 0xcb, 0xb7, 0x4e, 0x84, 0xb5, 0x19, 0x0f, 0x61, 0x13, + 0xe7, 0x87, 0xad, 0x31, 0x3e, 0xce, 0xec, 0x37, 0x21, 0x1d, 0x91, 0xc1, 0x50, 0x03, 0xa6, 0xb9, + 0xfe, 0xd7, 0x04, 0x97, 0x4e, 0x27, 0x38, 0x50, 0x8b, 0x93, 0x1c, 0xaa, 0x97, 0xfe, 0x6d, 0x00, + 0xc4, 0x72, 0xe4, 0xd3, 0x19, 0x63, 0xa8, 0x01, 0x29, 0x5d, 0x89, 0x13, 0xcf, 0x5b, 0x89, 0x35, + 0x40, 0x8c, 0xd4, 0x9f, 0x4e, 0xc2, 0x85, 0x9d, 0x20, 0x7b, 0x3f, 0xfd, 0x1c, 0xec, 0xc0, 0x14, + 0x71, 0xb9, 0x4f, 0x25, 0x09, 0xc2, 0xe7, 0x5f, 0x38, 0xcd, 0xe7, 0x27, 0x18, 0x55, 0x77, 0xb9, + 0x3f, 0x8c, 0x47, 0x40, 0x80, 0x15, 0xe3, 0xe3, 0x97, 0x09, 0xc8, 0x9d, 0xa6, 0x8a, 0x5e, 0x81, + 0x8c, 0xe5, 0x13, 0xd9, 0x11, 0x6c, 0x32, 0x86, 0x2c, 0x98, 0xf3, 0x41, 0xb7, 0xde, 0x63, 0x9a, + 0x20, 0x4e, 0x65, 0x22, 0xb8, 0x84, 0xe8, 0xf3, 0x1d, 0xc3, 0xe6, 0x23, 0x04, 0xb9, 0xcb, 0x6c, + 0x43, 0x86, 0xba, 0x94, 0x53, 0xdc, 0x33, 0xdb, 0xb8, 0x87, 0x5d, 0x2b, 0x38, 0xae, 0x9e, 0x6b, + 0x4b, 0x98, 0xd7, 0x18, 0x55, 0x05, 0x81, 0xea, 0x30, 0x15, 0xa0, 0x25, 0xcf, 0x8f, 0x16, 0xe8, + 0xa2, 0x6b, 0x30, 0x1b, 0xdf, 0x18, 0xe4, 0xd1, 0x23, 0xd9, 0x4c, 0xc7, 0xf6, 0x85, 0xb3, 0x76, + 0x9e, 0xd4, 0x53, 0x77, 0x1e, 0x7d, 0xba, 0xfb, 0x55, 0x02, 0x16, 0x9a, 0xc4, 0xfe, 0xdf, 0x77, + 0xcb, 0x16, 0x80, 0x4a, 0x55, 0x51, 0x49, 0xb5, 0x67, 0x9e, 0x23, 0xdf, 0x67, 0x14, 0x48, 0x8d, + 0xf1, 0xff, 0x96, 0x87, 0xfe, 0x32, 0x09, 0xb3, 0x71, 0x0f, 0xfd, 0x5f, 0x6e, 0x5a, 0x68, 0x23, + 0x2a, 0x53, 0x49, 0x59, 0xa6, 0x5e, 0x3d, 0xad, 0x4c, 0x8d, 0x45, 0xf3, 0x19, 0xf5, 0xe9, 0xc7, + 0x49, 0x48, 0x6d, 0x61, 0x1f, 0x3b, 0x0c, 0x6d, 0x8e, 0x1d, 0x64, 0xd5, 0x45, 0xf2, 0xca, 0x58, + 0x30, 0xd7, 0xf4, 0x5b, 0x87, 0x8a, 0xe5, 0x5f, 0x9c, 0x76, 0x8e, 0xfd, 0x2c, 0xcc, 0x8b, 0x0b, + 0x71, 0x68, 0x90, 0x22, 0x77, 0x4e, 0xde, 0x6b, 0x43, 0xeb, 0x19, 0x2a, 0x40, 0x5a, 0x88, 0x45, + 0x75, 0x58, 0xc8, 0x80, 0x83, 0x0f, 0xea, 0xaa, 0x07, 0x2d, 0x03, 0xea, 0x86, 0x0f, 0x14, 0x66, + 0x44, 0x84, 0x90, 0x5b, 0x88, 0x46, 0x02, 0xf1, 0x97, 0x00, 0xc4, 0x2a, 0x4c, 0x9b, 0xb8, 0x9e, + 0xa3, 0x6f, 0x75, 0x33, 0xa2, 0xa7, 0x26, 0x3a, 0xd0, 0x8f, 0x0c, 0x75, 0x1e, 0x3e, 0x76, 0x6d, + 0xd6, 0xd7, 0x91, 0xed, 0x67, 0x48, 0x8a, 0x7f, 0x1d, 0x15, 0xf2, 0x43, 0xec, 0xf4, 0x56, 0x4b, + 0x27, 0xe0, 0x94, 0x4e, 0xba, 0xc9, 0x8b, 0x83, 0xf3, 0xe8, 0xb5, 0x1b, 0x75, 0x21, 0x2f, 0xb4, + 0x3b, 0x3d, 0xaf, 0x8d, 0x7b, 0x63, 0x87, 0x73, 0x38, 0x7f, 0xca, 0x5f, 0x76, 0xa8, 0x7b, 0x5b, + 0xa2, 0x8d, 0x1e, 0xd1, 0x57, 0xaf, 0x8b, 0x44, 0x3a, 0xfc, 0xf0, 0xfd, 0x1b, 0xda, 0xa6, 0x65, + 0x66, 0xef, 0x57, 0x0e, 0xc2, 0x87, 0x32, 0xe5, 0x7d, 0x71, 0x26, 0x46, 0x91, 0x52, 0x93, 0xb0, + 0xbe, 0xb8, 0x5b, 0x8a, 0xbb, 0x48, 0x6c, 0x59, 0xc6, 0xd3, 0xef, 0x22, 0x91, 0xfe, 0xc8, 0x5d, + 0x24, 0x96, 0xbd, 0x5f, 0x89, 0xb6, 0x87, 0x49, 0x1d, 0x5c, 0x1a, 0xab, 0x8d, 0x19, 0x89, 0x5d, + 0x6a, 0xe8, 0x08, 0x44, 0xa0, 0x24, 0x8b, 0xc2, 0x44, 0xe9, 0x8f, 0x06, 0x5c, 0x19, 0x0b, 0xf4, + 0x70, 0xc9, 0x16, 0x20, 0x3f, 0x36, 0x28, 0x03, 0x66, 0xa8, 0x97, 0xfe, 0x7c, 0x79, 0xb3, 0xe0, + 0x8f, 0xed, 0x11, 0x9f, 0xcc, 0x3e, 0xa7, 0x8b, 0xdc, 0xef, 0x0d, 0xb8, 0x18, 0x5f, 0x40, 0x68, + 0x4a, 0x0b, 0x66, 0xe3, 0x53, 0x6b, 0x23, 0xae, 0x3f, 0x8b, 0x11, 0xf1, 0xf5, 0x8f, 0x80, 0xa0, + 0xdd, 0xa8, 0x98, 0xa8, 0x17, 0xba, 0x9b, 0xcf, 0x4c, 0x4a, 0xb0, 0xb0, 0x13, 0x8b, 0x8a, 0xf2, + 0xcd, 0x3f, 0x0c, 0x48, 0x6e, 0x79, 0x5e, 0x0f, 0xfd, 0x00, 0x16, 0x5c, 0x8f, 0x9b, 0x22, 0xf1, + 0x88, 0x6d, 0xea, 0x27, 0x04, 0x55, 0xa8, 0xeb, 0x4f, 0xe5, 0xea, 0xef, 0x47, 0x85, 0x71, 0xcd, + 0x51, 0x02, 0xf5, 0x4b, 0x95, 0xeb, 0xf1, 0xaa, 0x14, 0xda, 0x56, 0xaf, 0x0c, 0x7b, 0x30, 0x37, + 0x3a, 0x9d, 0x2a, 0xe6, 0x6b, 0x67, 0x4d, 0x37, 0x77, 0xe6, 0x54, 0xb3, 0xed, 0xd8, 0x3c, 0xab, + 0xd3, 0xc2, 0x6b, 0xff, 0x14, 0x9e, 0x7b, 0x1b, 0xb2, 0x61, 0x25, 0xdb, 0x91, 0xcf, 0x5c, 0x4c, + 0x84, 0x86, 0x7a, 0xf1, 0x0a, 0xee, 0x11, 0xc5, 0xf8, 0xf3, 0x29, 0x6e, 0x5b, 0xb4, 0x7c, 0x4c, + 0x67, 0x84, 0x4e, 0xad, 0x7b, 0xe3, 0xb7, 0x06, 0x40, 0xf4, 0x1c, 0x83, 0x5e, 0x83, 0xcb, 0xd5, + 0xcd, 0x8d, 0x9a, 0xd9, 0xda, 0x5e, 0xdb, 0xde, 0x69, 0x99, 0x3b, 0x1b, 0xad, 0xad, 0xfa, 0x7a, + 0xe3, 0x56, 0xa3, 0x5e, 0xcb, 0x4e, 0xe4, 0x33, 0x87, 0xf7, 0x8a, 0xe9, 0x1d, 0x97, 0xf5, 0x89, + 0x45, 0xf7, 0x28, 0xb1, 0xd1, 0xe7, 0xe0, 0xe2, 0xa8, 0xb4, 0x68, 0xd5, 0x6b, 0x59, 0x23, 0x3f, + 0x7b, 0x78, 0xaf, 0x38, 0xad, 0x4e, 0xa4, 0xc4, 0x46, 0x4b, 0xf0, 0xe2, 0xb8, 0x5c, 0x63, 0xe3, + 0x76, 0x76, 0x32, 0x3f, 0x77, 0x78, 0xaf, 0x38, 0x13, 0x1e, 0x5d, 0x51, 0x09, 0x50, 0x5c, 0x52, + 0xe3, 0x25, 0xf2, 0x70, 0x78, 0xaf, 0x98, 0x52, 0x5e, 0xc8, 0x27, 0xdf, 0xf9, 0xf5, 0xe2, 0xc4, + 0x8d, 0xef, 0x02, 0x34, 0xdc, 0x3d, 0x1f, 0x5b, 0x32, 0xda, 0xf2, 0x70, 0xa9, 0xb1, 0x71, 0xab, + 0xb9, 0xb6, 0xbe, 0xdd, 0xd8, 0xdc, 0x18, 0x5d, 0xf6, 0xb1, 0xb1, 0xda, 0xe6, 0x4e, 0xf5, 0xcd, + 0xba, 0xd9, 0x6a, 0xdc, 0xde, 0xc8, 0x1a, 0xe8, 0x32, 0x5c, 0x18, 0x19, 0xfb, 0xc6, 0xc6, 0x76, + 0xe3, 0xad, 0x7a, 0x76, 0xb2, 0x7a, 0xeb, 0x83, 0xc7, 0x8b, 0xc6, 0xc3, 0xc7, 0x8b, 0xc6, 0xdf, + 0x1e, 0x2f, 0x1a, 0xef, 0x3e, 0x59, 0x9c, 0x78, 0xf8, 0x64, 0x71, 0xe2, 0x4f, 0x4f, 0x16, 0x27, + 0xbe, 0xf5, 0x5a, 0x87, 0xf2, 0xee, 0xa0, 0x5d, 0xb6, 0x3c, 0x47, 0x3f, 0xa8, 0x57, 0x4e, 0xac, + 0x78, 0xf2, 0x05, 0xbb, 0x9d, 0x92, 0xdb, 0xd9, 0x17, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x46, + 0x70, 0x04, 0xbc, 0x39, 0x18, 0x00, 0x00, } func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { @@ -1404,707 +1408,709 @@ func (this *Pool) Description() (desc *github_com_cosmos_gogoproto_protoc_gen_go func StakingDescription() (desc *github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_cosmos_gogoproto_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 11200 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x69, 0x90, 0x1c, 0xd7, - 0x79, 0xd8, 0xce, 0x3d, 0xf3, 0xcd, 0xd5, 0xfb, 0x76, 0x01, 0x2c, 0x06, 0xe4, 0xee, 0xa2, 0x29, + // 11225 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x79, 0x90, 0x1c, 0xd7, + 0x79, 0xdf, 0xce, 0x3d, 0xf3, 0xcd, 0xd5, 0xfb, 0x76, 0x01, 0x2c, 0x06, 0xe4, 0xee, 0xa2, 0x29, 0x12, 0x20, 0x48, 0x2e, 0x48, 0x90, 0x00, 0xc9, 0x85, 0x28, 0x66, 0x66, 0x76, 0xb0, 0x18, 0x70, 0x2f, 0xf6, 0xcc, 0x42, 0x24, 0x6d, 0xab, 0xdd, 0xdb, 0xf3, 0x76, 0xb7, 0x89, 0x99, 0xee, 0x51, - 0x77, 0x0f, 0xb0, 0xcb, 0x4a, 0xa5, 0xe4, 0xc8, 0x4e, 0x64, 0xf8, 0x88, 0x1c, 0xbb, 0x6c, 0xd9, + 0x77, 0x0f, 0xb0, 0xcb, 0x4a, 0xa5, 0xe4, 0xc8, 0x76, 0x64, 0xf8, 0x88, 0x1c, 0xbb, 0x6c, 0xd9, 0x12, 0x6c, 0xc9, 0x8e, 0x6d, 0xd9, 0xb9, 0x7c, 0x28, 0x3e, 0xe2, 0x8a, 0x63, 0xe7, 0xb4, 0x5d, - 0x39, 0x14, 0xff, 0x48, 0x9c, 0x54, 0x99, 0xb1, 0x29, 0x57, 0xac, 0xc8, 0x72, 0xe2, 0x83, 0x4e, - 0x9c, 0x52, 0x25, 0x95, 0x7a, 0x57, 0x1f, 0x73, 0xec, 0xcc, 0x42, 0xa4, 0xac, 0xd8, 0xf9, 0x03, - 0x4c, 0x7f, 0xef, 0xfb, 0xbe, 0xf7, 0xde, 0xf7, 0xbe, 0xf7, 0xbd, 0xef, 0xfb, 0xde, 0xb1, 0xf0, - 0xdb, 0x15, 0x58, 0xdc, 0xb3, 0xac, 0xbd, 0x36, 0xbe, 0xd8, 0xb5, 0x2d, 0xd7, 0xda, 0xe9, 0xed, - 0x5e, 0x6c, 0x61, 0x47, 0xb7, 0x8d, 0xae, 0x6b, 0xd9, 0x4b, 0x14, 0x86, 0x8a, 0x0c, 0x63, 0x49, - 0x60, 0xc8, 0xeb, 0x30, 0x7d, 0xcd, 0x68, 0xe3, 0x15, 0x0f, 0xb1, 0x81, 0x5d, 0xf4, 0x1c, 0xc4, - 0x77, 0x8d, 0x36, 0x9e, 0x8b, 0x2c, 0xc6, 0xce, 0x67, 0x2f, 0xbd, 0x67, 0xa9, 0x8f, 0x68, 0x29, - 0x4c, 0xb1, 0x45, 0xc0, 0x0a, 0xa5, 0x90, 0xff, 0x4f, 0x1c, 0x66, 0x86, 0x94, 0x22, 0x04, 0x71, - 0x53, 0xeb, 0x10, 0x8e, 0x91, 0xf3, 0x19, 0x85, 0xfe, 0x46, 0x73, 0x90, 0xea, 0x6a, 0xfa, 0x2d, - 0x6d, 0x0f, 0xcf, 0x45, 0x29, 0x58, 0x7c, 0xa2, 0x79, 0x80, 0x16, 0xee, 0x62, 0xb3, 0x85, 0x4d, - 0xfd, 0x70, 0x2e, 0xb6, 0x18, 0x3b, 0x9f, 0x51, 0x02, 0x10, 0xf4, 0x18, 0x4c, 0x77, 0x7b, 0x3b, - 0x6d, 0x43, 0x57, 0x03, 0x68, 0xb0, 0x18, 0x3b, 0x9f, 0x50, 0x24, 0x56, 0xb0, 0xe2, 0x23, 0x9f, - 0x83, 0xe2, 0x1d, 0xac, 0xdd, 0x0a, 0xa2, 0x66, 0x29, 0x6a, 0x81, 0x80, 0x03, 0x88, 0x55, 0xc8, - 0x75, 0xb0, 0xe3, 0x68, 0x7b, 0x58, 0x75, 0x0f, 0xbb, 0x78, 0x2e, 0x4e, 0x7b, 0xbf, 0x38, 0xd0, - 0xfb, 0xfe, 0x9e, 0x67, 0x39, 0x55, 0xf3, 0xb0, 0x8b, 0x51, 0x19, 0x32, 0xd8, 0xec, 0x75, 0x18, - 0x87, 0xc4, 0x08, 0xf9, 0xd5, 0xcc, 0x5e, 0xa7, 0x9f, 0x4b, 0x9a, 0x90, 0x71, 0x16, 0x29, 0x07, - 0xdb, 0xb7, 0x0d, 0x1d, 0xcf, 0x25, 0x29, 0x83, 0x73, 0x03, 0x0c, 0x1a, 0xac, 0xbc, 0x9f, 0x87, - 0xa0, 0x43, 0x55, 0xc8, 0xe0, 0x03, 0x17, 0x9b, 0x8e, 0x61, 0x99, 0x73, 0x29, 0xca, 0xe4, 0xe1, - 0x21, 0xa3, 0x88, 0xdb, 0xad, 0x7e, 0x16, 0x3e, 0x1d, 0xba, 0x02, 0x29, 0xab, 0xeb, 0x1a, 0x96, - 0xe9, 0xcc, 0xa5, 0x17, 0x23, 0xe7, 0xb3, 0x97, 0x1e, 0x18, 0xaa, 0x08, 0x9b, 0x0c, 0x47, 0x11, - 0xc8, 0xa8, 0x0e, 0x92, 0x63, 0xf5, 0x6c, 0x1d, 0xab, 0xba, 0xd5, 0xc2, 0xaa, 0x61, 0xee, 0x5a, - 0x73, 0x19, 0xca, 0x60, 0x61, 0xb0, 0x23, 0x14, 0xb1, 0x6a, 0xb5, 0x70, 0xdd, 0xdc, 0xb5, 0x94, + 0x49, 0x4a, 0xf1, 0x1f, 0x89, 0x93, 0x2a, 0x33, 0x36, 0xe5, 0x8a, 0x15, 0x59, 0x4e, 0x7c, 0xd0, + 0x89, 0x53, 0xaa, 0xa4, 0x52, 0xef, 0xea, 0x63, 0x8e, 0x9d, 0x59, 0x88, 0x94, 0x15, 0x3b, 0xff, + 0x00, 0xd3, 0xef, 0x7d, 0xdf, 0xef, 0xbd, 0xf7, 0xbd, 0xef, 0x7d, 0xef, 0x7b, 0xdf, 0x3b, 0x16, + 0x7e, 0xa7, 0x02, 0x8b, 0x7b, 0x96, 0xb5, 0xd7, 0xc6, 0x17, 0xbb, 0xb6, 0xe5, 0x5a, 0x3b, 0xbd, + 0xdd, 0x8b, 0x2d, 0xec, 0xe8, 0xb6, 0xd1, 0x75, 0x2d, 0x7b, 0x89, 0xa6, 0xa1, 0x22, 0xa3, 0x58, + 0x12, 0x14, 0xf2, 0x3a, 0x4c, 0x5f, 0x33, 0xda, 0x78, 0xc5, 0x23, 0x6c, 0x60, 0x17, 0x3d, 0x07, + 0xf1, 0x5d, 0xa3, 0x8d, 0xe7, 0x22, 0x8b, 0xb1, 0xf3, 0xd9, 0x4b, 0xef, 0x59, 0xea, 0x63, 0x5a, + 0x0a, 0x73, 0x6c, 0x91, 0x64, 0x85, 0x72, 0xc8, 0xff, 0x27, 0x0e, 0x33, 0x43, 0x72, 0x11, 0x82, + 0xb8, 0xa9, 0x75, 0x08, 0x62, 0xe4, 0x7c, 0x46, 0xa1, 0xbf, 0xd1, 0x1c, 0xa4, 0xba, 0x9a, 0x7e, + 0x4b, 0xdb, 0xc3, 0x73, 0x51, 0x9a, 0x2c, 0x3e, 0xd1, 0x3c, 0x40, 0x0b, 0x77, 0xb1, 0xd9, 0xc2, + 0xa6, 0x7e, 0x38, 0x17, 0x5b, 0x8c, 0x9d, 0xcf, 0x28, 0x81, 0x14, 0xf4, 0x18, 0x4c, 0x77, 0x7b, + 0x3b, 0x6d, 0x43, 0x57, 0x03, 0x64, 0xb0, 0x18, 0x3b, 0x9f, 0x50, 0x24, 0x96, 0xb1, 0xe2, 0x13, + 0x9f, 0x83, 0xe2, 0x1d, 0xac, 0xdd, 0x0a, 0x92, 0x66, 0x29, 0x69, 0x81, 0x24, 0x07, 0x08, 0xab, + 0x90, 0xeb, 0x60, 0xc7, 0xd1, 0xf6, 0xb0, 0xea, 0x1e, 0x76, 0xf1, 0x5c, 0x9c, 0xb6, 0x7e, 0x71, + 0xa0, 0xf5, 0xfd, 0x2d, 0xcf, 0x72, 0xae, 0xe6, 0x61, 0x17, 0xa3, 0x32, 0x64, 0xb0, 0xd9, 0xeb, + 0x30, 0x84, 0xc4, 0x08, 0xf9, 0xd5, 0xcc, 0x5e, 0xa7, 0x1f, 0x25, 0x4d, 0xd8, 0x38, 0x44, 0xca, + 0xc1, 0xf6, 0x6d, 0x43, 0xc7, 0x73, 0x49, 0x0a, 0x70, 0x6e, 0x00, 0xa0, 0xc1, 0xf2, 0xfb, 0x31, + 0x04, 0x1f, 0xaa, 0x42, 0x06, 0x1f, 0xb8, 0xd8, 0x74, 0x0c, 0xcb, 0x9c, 0x4b, 0x51, 0x90, 0x87, + 0x87, 0xf4, 0x22, 0x6e, 0xb7, 0xfa, 0x21, 0x7c, 0x3e, 0x74, 0x05, 0x52, 0x56, 0xd7, 0x35, 0x2c, + 0xd3, 0x99, 0x4b, 0x2f, 0x46, 0xce, 0x67, 0x2f, 0x3d, 0x30, 0x54, 0x11, 0x36, 0x19, 0x8d, 0x22, + 0x88, 0x51, 0x1d, 0x24, 0xc7, 0xea, 0xd9, 0x3a, 0x56, 0x75, 0xab, 0x85, 0x55, 0xc3, 0xdc, 0xb5, + 0xe6, 0x32, 0x14, 0x60, 0x61, 0xb0, 0x21, 0x94, 0xb0, 0x6a, 0xb5, 0x70, 0xdd, 0xdc, 0xb5, 0x94, 0x82, 0x13, 0xfa, 0x46, 0x27, 0x21, 0xe9, 0x1c, 0x9a, 0xae, 0x76, 0x30, 0x97, 0xa3, 0x1a, 0xc2, - 0xbf, 0x88, 0xea, 0xe0, 0x96, 0x41, 0xaa, 0x9b, 0xcb, 0x33, 0xd5, 0xe1, 0x9f, 0xf2, 0xcf, 0x27, - 0xa1, 0x38, 0x89, 0xf2, 0x5d, 0x85, 0xc4, 0x2e, 0xe9, 0xff, 0x5c, 0xf4, 0x38, 0xd2, 0x61, 0x34, + 0xbf, 0x88, 0xea, 0xe0, 0x96, 0x41, 0x8a, 0x9b, 0xcb, 0x33, 0xd5, 0xe1, 0x9f, 0xf2, 0x2f, 0x24, + 0xa1, 0x38, 0x89, 0xf2, 0x5d, 0x85, 0xc4, 0x2e, 0x69, 0xff, 0x5c, 0xf4, 0x38, 0xd2, 0x61, 0x3c, 0x61, 0xf1, 0x26, 0xef, 0x53, 0xbc, 0x65, 0xc8, 0x9a, 0xd8, 0x71, 0x71, 0x8b, 0xe9, 0x4a, 0x6c, - 0x42, 0x6d, 0x03, 0x46, 0x34, 0xa8, 0x6c, 0xf1, 0xfb, 0x52, 0xb6, 0x57, 0xa0, 0xe8, 0x35, 0x49, - 0xb5, 0x35, 0x73, 0x4f, 0x68, 0xed, 0xc5, 0x71, 0x2d, 0x59, 0xaa, 0x09, 0x3a, 0x85, 0x90, 0x29, + 0x42, 0x6d, 0x03, 0xc6, 0x34, 0xa8, 0x6c, 0xf1, 0xfb, 0x52, 0xb6, 0x57, 0xa0, 0xe8, 0x55, 0x49, + 0xb5, 0x35, 0x73, 0x4f, 0x68, 0xed, 0xc5, 0x71, 0x35, 0x59, 0xaa, 0x09, 0x3e, 0x85, 0xb0, 0x29, 0x05, 0x1c, 0xfa, 0x46, 0x2b, 0x00, 0x96, 0x89, 0xad, 0x5d, 0xb5, 0x85, 0xf5, 0xf6, 0x5c, 0x7a, - 0x84, 0x94, 0x36, 0x09, 0xca, 0x80, 0x94, 0x2c, 0x06, 0xd5, 0xdb, 0xe8, 0x79, 0x5f, 0x09, 0x53, - 0x23, 0x74, 0x68, 0x9d, 0x4d, 0xbf, 0x01, 0x3d, 0xdc, 0x86, 0x82, 0x8d, 0xc9, 0x8c, 0xc0, 0x2d, - 0xde, 0xb3, 0x0c, 0x6d, 0xc4, 0xd2, 0xd8, 0x9e, 0x29, 0x9c, 0x8c, 0x75, 0x2c, 0x6f, 0x07, 0x3f, - 0xd1, 0x43, 0xe0, 0x01, 0x54, 0xaa, 0x56, 0x40, 0xed, 0x53, 0x4e, 0x00, 0x37, 0xb4, 0x0e, 0x2e, - 0xbd, 0x01, 0x85, 0xb0, 0x78, 0xd0, 0x2c, 0x24, 0x1c, 0x57, 0xb3, 0x5d, 0xaa, 0x85, 0x09, 0x85, - 0x7d, 0x20, 0x09, 0x62, 0xd8, 0x6c, 0x51, 0xfb, 0x97, 0x50, 0xc8, 0x4f, 0xf4, 0x97, 0xfc, 0x0e, - 0xc7, 0x68, 0x87, 0x1f, 0x19, 0x1c, 0xd1, 0x10, 0xe7, 0xfe, 0x7e, 0x97, 0x9e, 0x85, 0x7c, 0xa8, - 0x03, 0x93, 0x56, 0x2d, 0xff, 0x65, 0x38, 0x31, 0x94, 0x35, 0x7a, 0x05, 0x66, 0x7b, 0xa6, 0x61, - 0xba, 0xd8, 0xee, 0xda, 0x98, 0x68, 0x2c, 0xab, 0x6a, 0xee, 0x77, 0x53, 0x23, 0x74, 0x6e, 0x3b, - 0x88, 0xcd, 0xb8, 0x28, 0x33, 0xbd, 0x41, 0xe0, 0x85, 0x4c, 0xfa, 0xf3, 0x29, 0xe9, 0x43, 0x1f, - 0xfa, 0xd0, 0x87, 0xa2, 0xf2, 0x2f, 0x27, 0x61, 0x76, 0xd8, 0x9c, 0x19, 0x3a, 0x7d, 0x4f, 0x42, - 0xd2, 0xec, 0x75, 0x76, 0xb0, 0x4d, 0x85, 0x94, 0x50, 0xf8, 0x17, 0x2a, 0x43, 0xa2, 0xad, 0xed, - 0xe0, 0xf6, 0x5c, 0x7c, 0x31, 0x72, 0xbe, 0x70, 0xe9, 0xb1, 0x89, 0x66, 0xe5, 0xd2, 0x1a, 0x21, - 0x51, 0x18, 0x25, 0x7a, 0x1f, 0xc4, 0xb9, 0xf1, 0x26, 0x1c, 0x2e, 0x4c, 0xc6, 0x81, 0xcc, 0x25, - 0x85, 0xd2, 0xa1, 0x33, 0x90, 0x21, 0xff, 0x33, 0xdd, 0x48, 0xd2, 0x36, 0xa7, 0x09, 0x80, 0xe8, - 0x05, 0x2a, 0x41, 0x9a, 0x4e, 0x93, 0x16, 0x16, 0x8b, 0x9e, 0xf7, 0x4d, 0x14, 0xab, 0x85, 0x77, - 0xb5, 0x5e, 0xdb, 0x55, 0x6f, 0x6b, 0xed, 0x1e, 0xa6, 0x0a, 0x9f, 0x51, 0x72, 0x1c, 0x78, 0x93, - 0xc0, 0xd0, 0x02, 0x64, 0xd9, 0xac, 0x32, 0xcc, 0x16, 0x3e, 0xa0, 0x76, 0x35, 0xa1, 0xb0, 0x89, - 0x56, 0x27, 0x10, 0x52, 0xfd, 0xeb, 0x8e, 0x65, 0x0a, 0xd5, 0xa4, 0x55, 0x10, 0x00, 0xad, 0xfe, - 0xd9, 0x7e, 0x93, 0xfe, 0xe0, 0xf0, 0xee, 0x0d, 0xcc, 0xa5, 0x73, 0x50, 0xa4, 0x18, 0x4f, 0xf3, - 0xa1, 0xd7, 0xda, 0x73, 0xd3, 0x8b, 0x91, 0xf3, 0x69, 0xa5, 0xc0, 0xc0, 0x9b, 0x1c, 0x2a, 0xff, - 0x4c, 0x14, 0xe2, 0xd4, 0xb0, 0x14, 0x21, 0xdb, 0x7c, 0x75, 0xab, 0xa6, 0xae, 0x6c, 0x6e, 0x57, - 0xd6, 0x6a, 0x52, 0x04, 0x15, 0x00, 0x28, 0xe0, 0xda, 0xda, 0x66, 0xb9, 0x29, 0x45, 0xbd, 0xef, - 0xfa, 0x46, 0xf3, 0xca, 0x33, 0x52, 0xcc, 0x23, 0xd8, 0x66, 0x80, 0x78, 0x10, 0xe1, 0xe9, 0x4b, - 0x52, 0x02, 0x49, 0x90, 0x63, 0x0c, 0xea, 0xaf, 0xd4, 0x56, 0xae, 0x3c, 0x23, 0x25, 0xc3, 0x90, - 0xa7, 0x2f, 0x49, 0x29, 0x94, 0x87, 0x0c, 0x85, 0x54, 0x36, 0x37, 0xd7, 0xa4, 0xb4, 0xc7, 0xb3, - 0xd1, 0x54, 0xea, 0x1b, 0xab, 0x52, 0xc6, 0xe3, 0xb9, 0xaa, 0x6c, 0x6e, 0x6f, 0x49, 0xe0, 0x71, - 0x58, 0xaf, 0x35, 0x1a, 0xe5, 0xd5, 0x9a, 0x94, 0xf5, 0x30, 0x2a, 0xaf, 0x36, 0x6b, 0x0d, 0x29, - 0x17, 0x6a, 0xd6, 0xd3, 0x97, 0xa4, 0xbc, 0x57, 0x45, 0x6d, 0x63, 0x7b, 0x5d, 0x2a, 0xa0, 0x69, - 0xc8, 0xb3, 0x2a, 0x44, 0x23, 0x8a, 0x7d, 0xa0, 0x2b, 0xcf, 0x48, 0x92, 0xdf, 0x10, 0xc6, 0x65, - 0x3a, 0x04, 0xb8, 0xf2, 0x8c, 0x84, 0xe4, 0x2a, 0x24, 0xa8, 0x1a, 0x22, 0x04, 0x85, 0xb5, 0x72, - 0xa5, 0xb6, 0xa6, 0x6e, 0x6e, 0x35, 0xeb, 0x9b, 0x1b, 0xe5, 0x35, 0x29, 0xe2, 0xc3, 0x94, 0xda, - 0xcb, 0xdb, 0x75, 0xa5, 0xb6, 0x22, 0x45, 0x83, 0xb0, 0xad, 0x5a, 0xb9, 0x59, 0x5b, 0x91, 0x62, - 0xb2, 0x0e, 0xb3, 0xc3, 0x0c, 0xea, 0xd0, 0x29, 0x14, 0xd0, 0x85, 0xe8, 0x08, 0x5d, 0xa0, 0xbc, - 0xfa, 0x75, 0x41, 0xfe, 0x5c, 0x14, 0x66, 0x86, 0x2c, 0x2a, 0x43, 0x2b, 0x79, 0x11, 0x12, 0x4c, - 0x97, 0xd9, 0x32, 0xfb, 0xe8, 0xd0, 0xd5, 0x89, 0x6a, 0xf6, 0xc0, 0x52, 0x4b, 0xe9, 0x82, 0x4e, - 0x48, 0x6c, 0x84, 0x13, 0x42, 0x58, 0x0c, 0x28, 0xec, 0xd7, 0x0d, 0x18, 0x7f, 0xb6, 0x3e, 0x5e, - 0x99, 0x64, 0x7d, 0xa4, 0xb0, 0xe3, 0x2d, 0x02, 0x89, 0x21, 0x8b, 0xc0, 0x55, 0x98, 0x1e, 0x60, - 0x34, 0xb1, 0x31, 0xfe, 0x70, 0x04, 0xe6, 0x46, 0x09, 0x67, 0x8c, 0x49, 0x8c, 0x86, 0x4c, 0xe2, - 0xd5, 0x7e, 0x09, 0x9e, 0x1d, 0x3d, 0x08, 0x03, 0x63, 0xfd, 0xa3, 0x11, 0x38, 0x39, 0xdc, 0xd9, - 0x1c, 0xda, 0x86, 0xf7, 0x41, 0xb2, 0x83, 0xdd, 0x7d, 0x4b, 0xb8, 0x55, 0x8f, 0x0c, 0x59, 0xac, - 0x49, 0x71, 0xff, 0x60, 0x73, 0xaa, 0xe0, 0x6a, 0x1f, 0x1b, 0xe5, 0x31, 0xb2, 0xd6, 0x0c, 0xb4, - 0xf4, 0x9b, 0xa3, 0x70, 0x62, 0x28, 0xf3, 0xa1, 0x0d, 0x7d, 0x10, 0xc0, 0x30, 0xbb, 0x3d, 0x97, - 0xb9, 0x4e, 0xcc, 0x12, 0x67, 0x28, 0x84, 0x1a, 0x2f, 0x62, 0x65, 0x7b, 0xae, 0x57, 0x1e, 0xa3, - 0xe5, 0xc0, 0x40, 0x14, 0xe1, 0x39, 0xbf, 0xa1, 0x71, 0xda, 0xd0, 0xf9, 0x11, 0x3d, 0x1d, 0x50, - 0xcc, 0x27, 0x41, 0xd2, 0xdb, 0x06, 0x36, 0x5d, 0xd5, 0x71, 0x6d, 0xac, 0x75, 0x0c, 0x73, 0x8f, - 0x2e, 0x35, 0xe9, 0xe5, 0xc4, 0xae, 0xd6, 0x76, 0xb0, 0x52, 0x64, 0xc5, 0x0d, 0x51, 0x4a, 0x28, - 0xa8, 0x02, 0xd9, 0x01, 0x8a, 0x64, 0x88, 0x82, 0x15, 0x7b, 0x14, 0xf2, 0x77, 0x64, 0x20, 0x1b, - 0x70, 0xcd, 0xd1, 0x59, 0xc8, 0xbd, 0xae, 0xdd, 0xd6, 0x54, 0x11, 0x6e, 0x31, 0x49, 0x64, 0x09, - 0x6c, 0x8b, 0x87, 0x5c, 0x4f, 0xc2, 0x2c, 0x45, 0xb1, 0x7a, 0x2e, 0xb6, 0x55, 0xbd, 0xad, 0x39, - 0x0e, 0x15, 0x5a, 0x9a, 0xa2, 0x22, 0x52, 0xb6, 0x49, 0x8a, 0xaa, 0xa2, 0x04, 0x5d, 0x86, 0x19, - 0x4a, 0xd1, 0xe9, 0xb5, 0x5d, 0xa3, 0xdb, 0xc6, 0x2a, 0x09, 0x00, 0x1d, 0xba, 0xe4, 0x78, 0x2d, - 0x9b, 0x26, 0x18, 0xeb, 0x1c, 0x81, 0xb4, 0xc8, 0x41, 0x2b, 0xf0, 0x20, 0x25, 0xdb, 0xc3, 0x26, - 0xb6, 0x35, 0x17, 0xab, 0xf8, 0x83, 0x3d, 0xad, 0xed, 0xa8, 0x9a, 0xd9, 0x52, 0xf7, 0x35, 0x67, - 0x7f, 0x6e, 0x96, 0x30, 0xa8, 0x44, 0xe7, 0x22, 0xca, 0x69, 0x82, 0xb8, 0xca, 0xf1, 0x6a, 0x14, - 0xad, 0x6c, 0xb6, 0xae, 0x6b, 0xce, 0x3e, 0x5a, 0x86, 0x93, 0x94, 0x8b, 0xe3, 0xda, 0x86, 0xb9, - 0xa7, 0xea, 0xfb, 0x58, 0xbf, 0xa5, 0xf6, 0xdc, 0xdd, 0xe7, 0xe6, 0xce, 0x04, 0xeb, 0xa7, 0x2d, - 0x6c, 0x50, 0x9c, 0x2a, 0x41, 0xd9, 0x76, 0x77, 0x9f, 0x43, 0x0d, 0xc8, 0x91, 0xc1, 0xe8, 0x18, - 0x6f, 0x60, 0x75, 0xd7, 0xb2, 0xe9, 0x1a, 0x5a, 0x18, 0x62, 0x9a, 0x02, 0x12, 0x5c, 0xda, 0xe4, - 0x04, 0xeb, 0x56, 0x0b, 0x2f, 0x27, 0x1a, 0x5b, 0xb5, 0xda, 0x8a, 0x92, 0x15, 0x5c, 0xae, 0x59, - 0x36, 0x51, 0xa8, 0x3d, 0xcb, 0x13, 0x70, 0x96, 0x29, 0xd4, 0x9e, 0x25, 0xc4, 0x7b, 0x19, 0x66, - 0x74, 0x9d, 0xf5, 0xd9, 0xd0, 0x55, 0x1e, 0xa6, 0x39, 0x73, 0x52, 0x48, 0x58, 0xba, 0xbe, 0xca, - 0x10, 0xb8, 0x8e, 0x3b, 0xe8, 0x79, 0x38, 0xe1, 0x0b, 0x2b, 0x48, 0x38, 0x3d, 0xd0, 0xcb, 0x7e, - 0xd2, 0xcb, 0x30, 0xd3, 0x3d, 0x1c, 0x24, 0x44, 0xa1, 0x1a, 0xbb, 0x87, 0xfd, 0x64, 0xcf, 0xc2, - 0x6c, 0x77, 0xbf, 0x3b, 0x48, 0x77, 0x21, 0x48, 0x87, 0xba, 0xfb, 0xdd, 0x7e, 0xc2, 0x87, 0x69, - 0xcc, 0x6e, 0x63, 0x5d, 0x73, 0x71, 0x6b, 0xee, 0x54, 0x10, 0x3d, 0x50, 0x80, 0x96, 0x40, 0xd2, - 0x75, 0x15, 0x9b, 0xda, 0x4e, 0x1b, 0xab, 0x9a, 0x8d, 0x4d, 0xcd, 0x99, 0x5b, 0xa0, 0xc8, 0x71, - 0xd7, 0xee, 0x61, 0xa5, 0xa0, 0xeb, 0x35, 0x5a, 0x58, 0xa6, 0x65, 0xe8, 0x02, 0x4c, 0x5b, 0x3b, - 0xaf, 0xeb, 0x4c, 0x23, 0xd5, 0xae, 0x8d, 0x77, 0x8d, 0x83, 0xb9, 0xf7, 0x50, 0xf1, 0x16, 0x49, - 0x01, 0xd5, 0xc7, 0x2d, 0x0a, 0x46, 0x8f, 0x82, 0xa4, 0x3b, 0xfb, 0x9a, 0xdd, 0xa5, 0x26, 0xd9, - 0xe9, 0x6a, 0x3a, 0x9e, 0x7b, 0x98, 0xa1, 0x32, 0xf8, 0x86, 0x00, 0x93, 0x19, 0xe1, 0xdc, 0x31, - 0x76, 0x5d, 0xc1, 0xf1, 0x1c, 0x9b, 0x11, 0x14, 0xc6, 0xb9, 0x9d, 0x07, 0x89, 0x48, 0x22, 0x54, - 0xf1, 0x79, 0x8a, 0x56, 0xe8, 0xee, 0x77, 0x83, 0xf5, 0x3e, 0x04, 0x79, 0x82, 0xe9, 0x57, 0xfa, - 0x28, 0x73, 0xdc, 0xba, 0xfb, 0x81, 0x1a, 0x9f, 0x81, 0x93, 0x04, 0xa9, 0x83, 0x5d, 0xad, 0xa5, - 0xb9, 0x5a, 0x00, 0xfb, 0x71, 0x8a, 0x4d, 0xc4, 0xbe, 0xce, 0x0b, 0x43, 0xed, 0xb4, 0x7b, 0x3b, - 0x87, 0x9e, 0x62, 0x3d, 0xc1, 0xda, 0x49, 0x60, 0x42, 0xb5, 0xde, 0x35, 0xe7, 0x5c, 0x5e, 0x86, - 0x5c, 0x50, 0xef, 0x51, 0x06, 0x98, 0xe6, 0x4b, 0x11, 0xe2, 0x04, 0x55, 0x37, 0x57, 0x88, 0xfb, - 0xf2, 0x5a, 0x4d, 0x8a, 0x12, 0x37, 0x6a, 0xad, 0xde, 0xac, 0xa9, 0xca, 0xf6, 0x46, 0xb3, 0xbe, - 0x5e, 0x93, 0x62, 0x01, 0xc7, 0xfe, 0x46, 0x3c, 0xfd, 0x88, 0x74, 0x4e, 0xfe, 0x85, 0x18, 0x14, - 0xc2, 0x91, 0x1a, 0x7a, 0x2f, 0x9c, 0x12, 0x09, 0x17, 0x07, 0xbb, 0xea, 0x1d, 0xc3, 0xa6, 0x13, - 0xb2, 0xa3, 0xb1, 0xc5, 0xd1, 0xd3, 0x9f, 0x59, 0x8e, 0xd5, 0xc0, 0xee, 0xfb, 0x0d, 0x9b, 0x4c, - 0xb7, 0x8e, 0xe6, 0xa2, 0x35, 0x58, 0x30, 0x2d, 0xd5, 0x71, 0x35, 0xb3, 0xa5, 0xd9, 0x2d, 0xd5, - 0x4f, 0x75, 0xa9, 0x9a, 0xae, 0x63, 0xc7, 0xb1, 0xd8, 0x42, 0xe8, 0x71, 0x79, 0xc0, 0xb4, 0x1a, - 0x1c, 0xd9, 0x5f, 0x21, 0xca, 0x1c, 0xb5, 0x4f, 0x7d, 0x63, 0xa3, 0xd4, 0xf7, 0x0c, 0x64, 0x3a, - 0x5a, 0x57, 0xc5, 0xa6, 0x6b, 0x1f, 0x52, 0xff, 0x3c, 0xad, 0xa4, 0x3b, 0x5a, 0xb7, 0x46, 0xbe, - 0xd1, 0x4d, 0x78, 0xc4, 0x47, 0x55, 0xdb, 0x78, 0x4f, 0xd3, 0x0f, 0x55, 0xea, 0x8c, 0xd3, 0xb4, - 0x81, 0xaa, 0x5b, 0xe6, 0x6e, 0xdb, 0xd0, 0x5d, 0x87, 0xda, 0x07, 0x66, 0xe3, 0x64, 0x9f, 0x62, - 0x8d, 0x12, 0xdc, 0x70, 0x2c, 0x93, 0xfa, 0xe0, 0x55, 0x81, 0xfd, 0x15, 0x09, 0xbf, 0x6e, 0xc4, - 0xd3, 0x71, 0x29, 0x71, 0x23, 0x9e, 0x4e, 0x48, 0xc9, 0x1b, 0xf1, 0x74, 0x52, 0x4a, 0xdd, 0x88, - 0xa7, 0xd3, 0x52, 0xe6, 0x46, 0x3c, 0x9d, 0x91, 0x40, 0xfe, 0xd9, 0x34, 0xe4, 0x82, 0x91, 0x01, - 0x09, 0xb4, 0x74, 0xba, 0x36, 0x46, 0xa8, 0xf5, 0x7c, 0xe8, 0xc8, 0x38, 0x62, 0xa9, 0x4a, 0x16, - 0xcd, 0xe5, 0x24, 0x73, 0xc3, 0x15, 0x46, 0x49, 0x1c, 0x16, 0xa2, 0xd6, 0x98, 0xb9, 0x3d, 0x69, - 0x85, 0x7f, 0xa1, 0x55, 0x48, 0xbe, 0xee, 0x50, 0xde, 0x49, 0xca, 0xfb, 0x3d, 0x47, 0xf3, 0xbe, - 0xd1, 0xa0, 0xcc, 0x33, 0x37, 0x1a, 0xea, 0xc6, 0xa6, 0xb2, 0x5e, 0x5e, 0x53, 0x38, 0x39, 0x3a, - 0x0d, 0xf1, 0xb6, 0xf6, 0xc6, 0x61, 0x78, 0x79, 0xa5, 0x20, 0xb4, 0x04, 0xc5, 0x9e, 0x79, 0x1b, - 0xdb, 0xc6, 0xae, 0x41, 0x86, 0x8a, 0x60, 0x15, 0x83, 0x58, 0x05, 0xbf, 0x74, 0x8d, 0xe0, 0x4f, - 0xa8, 0x1e, 0xa7, 0x21, 0x7e, 0x07, 0x6b, 0xb7, 0xc2, 0x8b, 0x20, 0x05, 0xa1, 0xf3, 0x90, 0x6b, - 0xe1, 0x9d, 0xde, 0x9e, 0x6a, 0xe3, 0x96, 0xa6, 0xbb, 0x61, 0xd3, 0x9f, 0xa5, 0x45, 0x0a, 0x2d, - 0x41, 0x2f, 0x41, 0x86, 0x8c, 0x91, 0x49, 0xc7, 0x78, 0x9a, 0x8a, 0xe0, 0x89, 0xa3, 0x45, 0xc0, - 0x87, 0x58, 0x10, 0x29, 0x3e, 0x3d, 0xba, 0x06, 0x49, 0x57, 0xb3, 0xf7, 0xb0, 0x4b, 0x2d, 0x7f, - 0x61, 0x48, 0xf2, 0x63, 0x08, 0xa7, 0x26, 0xa5, 0xa0, 0x31, 0x2d, 0xa7, 0x7e, 0x17, 0xad, 0xcc, - 0x45, 0x48, 0x50, 0xf5, 0x40, 0x00, 0x5c, 0x41, 0xa4, 0x29, 0x94, 0x86, 0x78, 0x75, 0x53, 0x21, - 0x96, 0x46, 0x82, 0x1c, 0x83, 0xaa, 0x5b, 0xf5, 0x5a, 0xb5, 0x26, 0x45, 0xe5, 0xcb, 0x90, 0x64, - 0x63, 0x4e, 0xac, 0x90, 0x37, 0xea, 0xd2, 0x14, 0xff, 0xe4, 0x3c, 0x22, 0xa2, 0x74, 0x7b, 0xbd, - 0x52, 0x53, 0xa4, 0xa8, 0xbc, 0x0d, 0xc5, 0x3e, 0x39, 0xa1, 0x13, 0x30, 0xad, 0xd4, 0x9a, 0xb5, - 0x0d, 0x12, 0x67, 0xa9, 0xdb, 0x1b, 0x2f, 0x6d, 0x6c, 0xbe, 0x7f, 0x43, 0x9a, 0x0a, 0x83, 0x85, - 0x49, 0x8b, 0xa0, 0x59, 0x90, 0x7c, 0x70, 0x63, 0x73, 0x5b, 0xa1, 0xad, 0xf9, 0xd6, 0x28, 0x48, - 0xfd, 0x52, 0x43, 0xa7, 0x60, 0xa6, 0x59, 0x56, 0x56, 0x6b, 0x4d, 0x95, 0xc5, 0x8e, 0x1e, 0xeb, - 0x59, 0x90, 0x82, 0x05, 0xd7, 0xea, 0x34, 0x34, 0x5e, 0x80, 0x33, 0x41, 0x68, 0xed, 0x95, 0x66, - 0x6d, 0xa3, 0x41, 0x2b, 0x2f, 0x6f, 0xac, 0x12, 0xfb, 0xda, 0xc7, 0x4f, 0x44, 0xab, 0x31, 0xd2, - 0xd4, 0x30, 0xbf, 0xda, 0xda, 0x8a, 0x14, 0xef, 0x07, 0x6f, 0x6e, 0xd4, 0x36, 0xaf, 0x49, 0x89, - 0xfe, 0xda, 0x69, 0x04, 0x9b, 0x44, 0x25, 0x38, 0xd9, 0x0f, 0x55, 0x6b, 0x1b, 0x4d, 0xe5, 0x55, - 0x29, 0xd5, 0x5f, 0x71, 0xa3, 0xa6, 0xdc, 0xac, 0x57, 0x6b, 0x52, 0x1a, 0x9d, 0x04, 0x14, 0x6e, - 0x51, 0xf3, 0xfa, 0xe6, 0x8a, 0x94, 0x19, 0xb0, 0x28, 0xb2, 0x03, 0xb9, 0x60, 0x18, 0xf9, 0x95, - 0xc9, 0x25, 0x7d, 0x2c, 0x0a, 0xd9, 0x40, 0x58, 0x48, 0xfc, 0x79, 0xad, 0xdd, 0xb6, 0xee, 0xa8, - 0x5a, 0xdb, 0xd0, 0x1c, 0x6e, 0x6f, 0x80, 0x82, 0xca, 0x04, 0x32, 0xe9, 0xfc, 0x9e, 0xdc, 0xc2, - 0x27, 0xbf, 0x1a, 0x2d, 0x7c, 0x42, 0x4a, 0xca, 0xdf, 0x1f, 0x01, 0xa9, 0x3f, 0xde, 0xeb, 0xeb, - 0x7e, 0x64, 0x54, 0xf7, 0xbf, 0x22, 0x63, 0xf7, 0x89, 0x08, 0x14, 0xc2, 0x41, 0x5e, 0x5f, 0xf3, - 0xce, 0xfe, 0x99, 0x36, 0xef, 0xb7, 0xa2, 0x90, 0x0f, 0x85, 0x76, 0x93, 0xb6, 0xee, 0x83, 0x30, - 0x6d, 0xb4, 0x70, 0xa7, 0x6b, 0xb9, 0xd8, 0xd4, 0x0f, 0xd5, 0x36, 0xbe, 0x8d, 0xdb, 0x73, 0x32, - 0x35, 0xca, 0x17, 0x8f, 0x0e, 0x1e, 0x97, 0xea, 0x3e, 0xdd, 0x1a, 0x21, 0x5b, 0x9e, 0xa9, 0xaf, - 0xd4, 0xd6, 0xb7, 0x36, 0x9b, 0xb5, 0x8d, 0xea, 0xab, 0xc2, 0xba, 0x28, 0x92, 0xd1, 0x87, 0xf6, - 0x2e, 0x1a, 0xed, 0x2d, 0x90, 0xfa, 0x1b, 0x45, 0x6c, 0xc5, 0x90, 0x66, 0x49, 0x53, 0x68, 0x06, - 0x8a, 0x1b, 0x9b, 0x6a, 0xa3, 0xbe, 0x52, 0x53, 0x6b, 0xd7, 0xae, 0xd5, 0xaa, 0xcd, 0x06, 0x4b, - 0x07, 0x7a, 0xd8, 0x4d, 0x29, 0x1a, 0x14, 0xf1, 0xf7, 0xc5, 0x60, 0x66, 0x48, 0x4b, 0x50, 0x99, - 0x07, 0xf2, 0x2c, 0xb7, 0xf0, 0xc4, 0x24, 0xad, 0x5f, 0x22, 0xae, 0xf4, 0x96, 0x66, 0xbb, 0x3c, - 0xee, 0x7f, 0x14, 0x88, 0x94, 0x4c, 0x97, 0xac, 0xec, 0x36, 0x4f, 0xb3, 0xb2, 0xe8, 0xbe, 0xe8, - 0xc3, 0x59, 0xa6, 0xf5, 0x71, 0x40, 0x5d, 0xcb, 0x31, 0x5c, 0xe3, 0x36, 0x56, 0x0d, 0x53, 0xe4, - 0x64, 0x49, 0xb4, 0x1f, 0x57, 0x24, 0x51, 0x52, 0x37, 0x5d, 0x0f, 0xdb, 0xc4, 0x7b, 0x5a, 0x1f, - 0x36, 0xf1, 0x3c, 0x62, 0x8a, 0x24, 0x4a, 0x3c, 0xec, 0xb3, 0x90, 0x6b, 0x59, 0x3d, 0x12, 0x02, - 0x31, 0x3c, 0x62, 0x2d, 0x22, 0x4a, 0x96, 0xc1, 0x3c, 0x14, 0x1e, 0xdc, 0xfa, 0xc9, 0xe0, 0x9c, - 0x92, 0x65, 0x30, 0x86, 0x72, 0x0e, 0x8a, 0xda, 0xde, 0x9e, 0x4d, 0x98, 0x0b, 0x46, 0x2c, 0x5c, - 0x2f, 0x78, 0x60, 0x8a, 0x58, 0xba, 0x01, 0x69, 0x21, 0x07, 0xe2, 0xc1, 0x12, 0x49, 0xa8, 0x5d, - 0x96, 0x83, 0x8a, 0x9e, 0xcf, 0x28, 0x69, 0x53, 0x14, 0x9e, 0x85, 0x9c, 0xe1, 0xa8, 0xfe, 0xde, - 0x56, 0x74, 0x31, 0x7a, 0x3e, 0xad, 0x64, 0x0d, 0xc7, 0xdb, 0x17, 0x90, 0x7f, 0x34, 0x0a, 0x85, - 0xf0, 0xae, 0x1d, 0x5a, 0x81, 0x74, 0xdb, 0xd2, 0x35, 0xaa, 0x5a, 0x6c, 0xcb, 0xf8, 0xfc, 0x98, - 0x8d, 0xbe, 0xa5, 0x35, 0x8e, 0xaf, 0x78, 0x94, 0xa5, 0x7f, 0x13, 0x81, 0xb4, 0x00, 0xa3, 0x93, - 0x10, 0xef, 0x6a, 0xee, 0x3e, 0x65, 0x97, 0xa8, 0x44, 0xa5, 0x88, 0x42, 0xbf, 0x09, 0xdc, 0xe9, - 0x6a, 0x26, 0x55, 0x01, 0x0e, 0x27, 0xdf, 0x64, 0x5c, 0xdb, 0x58, 0x6b, 0xd1, 0x5c, 0x80, 0xd5, - 0xe9, 0x60, 0xd3, 0x75, 0xc4, 0xb8, 0x72, 0x78, 0x95, 0x83, 0xd1, 0x63, 0x30, 0xed, 0xda, 0x9a, - 0xd1, 0x0e, 0xe1, 0xc6, 0x29, 0xae, 0x24, 0x0a, 0x3c, 0xe4, 0x65, 0x38, 0x2d, 0xf8, 0xb6, 0xb0, - 0xab, 0xe9, 0xfb, 0xb8, 0xe5, 0x13, 0x25, 0x69, 0xce, 0xef, 0x14, 0x47, 0x58, 0xe1, 0xe5, 0x82, - 0x56, 0xfe, 0x6c, 0x14, 0xa6, 0x45, 0xf6, 0xa2, 0xe5, 0x09, 0x6b, 0x1d, 0x40, 0x33, 0x4d, 0xcb, - 0x0d, 0x8a, 0x6b, 0x50, 0x95, 0x07, 0xe8, 0x96, 0xca, 0x1e, 0x91, 0x12, 0x60, 0x50, 0xfa, 0xbd, - 0x08, 0x80, 0x5f, 0x34, 0x52, 0x6e, 0x0b, 0x90, 0xe5, 0x7b, 0xb2, 0x74, 0x63, 0x9f, 0x25, 0xbc, - 0x80, 0x81, 0xae, 0x19, 0x6d, 0x9a, 0x96, 0xdc, 0xc1, 0x7b, 0x86, 0xc9, 0xf7, 0x53, 0xd8, 0x87, - 0x48, 0x4b, 0xc6, 0xfd, 0xed, 0x29, 0x05, 0xd2, 0x0e, 0xee, 0x68, 0xa6, 0x6b, 0xe8, 0x7c, 0x87, - 0xe4, 0xca, 0xb1, 0x1a, 0xbf, 0xd4, 0xe0, 0xd4, 0x8a, 0xc7, 0x47, 0x3e, 0x0f, 0x69, 0x01, 0x25, - 0x8e, 0xdf, 0xc6, 0xe6, 0x46, 0x4d, 0x9a, 0x42, 0x29, 0x88, 0x35, 0x6a, 0x4d, 0x29, 0x42, 0xc2, - 0xce, 0xf2, 0x5a, 0xbd, 0xdc, 0x90, 0xa2, 0x95, 0xbf, 0x02, 0x33, 0xba, 0xd5, 0xe9, 0xaf, 0xb0, - 0x22, 0xf5, 0xa5, 0xfc, 0x9c, 0xeb, 0x91, 0xd7, 0x9e, 0xe0, 0x48, 0x7b, 0x56, 0x5b, 0x33, 0xf7, - 0x96, 0x2c, 0x7b, 0xcf, 0x3f, 0x16, 0x41, 0xa2, 0x03, 0x27, 0x70, 0x38, 0xa2, 0xbb, 0xf3, 0xa7, - 0x91, 0xc8, 0x0f, 0x46, 0x63, 0xab, 0x5b, 0x95, 0x1f, 0x8f, 0x96, 0x56, 0x19, 0xe1, 0x96, 0xe8, - 0x8e, 0x82, 0x77, 0xdb, 0x58, 0x27, 0x8d, 0x87, 0xdf, 0x7f, 0x0c, 0x66, 0xf7, 0xac, 0x3d, 0x8b, - 0x72, 0xba, 0x48, 0x7e, 0xf1, 0x73, 0x15, 0x19, 0x0f, 0x5a, 0x1a, 0x7b, 0x08, 0x63, 0x79, 0x03, - 0x66, 0x38, 0xb2, 0x4a, 0xb7, 0x6f, 0x59, 0x72, 0x01, 0x1d, 0x99, 0xd9, 0x9e, 0xfb, 0xc9, 0xdf, - 0xa1, 0x5e, 0x89, 0x32, 0xcd, 0x49, 0x49, 0x19, 0xcb, 0x3f, 0x2c, 0x2b, 0x70, 0x22, 0xc4, 0x8f, - 0xd9, 0x08, 0x6c, 0x8f, 0xe1, 0xf8, 0xcf, 0x39, 0xc7, 0x99, 0x00, 0xc7, 0x06, 0x27, 0x5d, 0xae, - 0x42, 0xfe, 0x38, 0xbc, 0xfe, 0x05, 0xe7, 0x95, 0xc3, 0x41, 0x26, 0xab, 0x50, 0xa4, 0x4c, 0xf4, - 0x9e, 0xe3, 0x5a, 0x1d, 0x6a, 0x80, 0x8f, 0x66, 0xf3, 0x2f, 0x7f, 0x87, 0x4d, 0xda, 0x02, 0x21, - 0xab, 0x7a, 0x54, 0xcb, 0xcb, 0x40, 0x77, 0xac, 0x5b, 0x58, 0x6f, 0x8f, 0xe1, 0xf0, 0x2b, 0xbc, - 0x21, 0x1e, 0xfe, 0xf2, 0x4d, 0x98, 0x25, 0xbf, 0xa9, 0x7d, 0x0c, 0xb6, 0x64, 0x7c, 0x1a, 0x7c, - 0xee, 0xdf, 0x7d, 0x98, 0xd9, 0x85, 0x19, 0x8f, 0x41, 0xa0, 0x4d, 0x81, 0x51, 0xdc, 0xc3, 0xae, - 0x8b, 0x6d, 0x47, 0xd5, 0xda, 0xc3, 0x9a, 0x17, 0xc8, 0x23, 0xce, 0x7d, 0xef, 0x17, 0xc3, 0xa3, - 0xb8, 0xca, 0x28, 0xcb, 0xed, 0xf6, 0xf2, 0x36, 0x9c, 0x1a, 0xa2, 0x15, 0x13, 0xf0, 0xfc, 0x3e, - 0xce, 0x73, 0x76, 0x40, 0x33, 0x08, 0xdb, 0x2d, 0x10, 0x70, 0x6f, 0x2c, 0x27, 0xe0, 0xf9, 0x71, - 0xce, 0x13, 0x71, 0x5a, 0x31, 0xa4, 0x84, 0xe3, 0x0d, 0x98, 0xbe, 0x8d, 0xed, 0x1d, 0xcb, 0xe1, - 0xb9, 0xdb, 0x09, 0xd8, 0x7d, 0x82, 0xb3, 0x2b, 0x72, 0x42, 0x9a, 0xcc, 0x25, 0xbc, 0x9e, 0x87, - 0xf4, 0xae, 0xa6, 0xe3, 0x09, 0x58, 0xdc, 0xe3, 0x2c, 0x52, 0x04, 0x9f, 0x90, 0x96, 0x21, 0xb7, - 0x67, 0xf1, 0x25, 0x72, 0x3c, 0xf9, 0xf7, 0x73, 0xf2, 0xac, 0xa0, 0xe1, 0x2c, 0xba, 0x56, 0xb7, - 0xd7, 0x26, 0xeb, 0xe7, 0x78, 0x16, 0x3f, 0x20, 0x58, 0x08, 0x1a, 0xce, 0xe2, 0x18, 0x62, 0xfd, - 0xa4, 0x60, 0xe1, 0x04, 0xe4, 0xf9, 0x22, 0x64, 0x2d, 0xb3, 0x7d, 0x68, 0x99, 0x93, 0x34, 0xe2, - 0x53, 0x9c, 0x03, 0x70, 0x12, 0xc2, 0xe0, 0x2a, 0x64, 0x26, 0x1d, 0x88, 0x1f, 0xfe, 0xa2, 0x98, - 0x1e, 0x62, 0x04, 0x56, 0xa1, 0x28, 0x0c, 0x94, 0x61, 0x99, 0x13, 0xb0, 0xf8, 0x11, 0xce, 0xa2, - 0x10, 0x20, 0xe3, 0xdd, 0x70, 0xb1, 0xe3, 0xee, 0xe1, 0x49, 0x98, 0xfc, 0xa8, 0xe8, 0x06, 0x27, - 0xe1, 0xa2, 0xdc, 0xc1, 0xa6, 0xbe, 0x3f, 0x19, 0x87, 0x4f, 0x0b, 0x51, 0x0a, 0x1a, 0xc2, 0xa2, - 0x0a, 0xf9, 0x8e, 0x66, 0x3b, 0xfb, 0x5a, 0x7b, 0xa2, 0xe1, 0xf8, 0x31, 0xce, 0x23, 0xe7, 0x11, - 0x71, 0x89, 0xf4, 0xcc, 0xe3, 0xb0, 0xf9, 0x71, 0x21, 0x91, 0x00, 0x19, 0x9f, 0x7a, 0x8e, 0x4b, - 0x13, 0xdd, 0xc7, 0xe1, 0xf6, 0xb7, 0xc5, 0xd4, 0x63, 0xb4, 0xeb, 0x41, 0x8e, 0x57, 0x21, 0xe3, - 0x18, 0x6f, 0x4c, 0xc4, 0xe6, 0xef, 0x88, 0x91, 0xa6, 0x04, 0x84, 0xf8, 0x55, 0x38, 0x3d, 0x74, - 0x99, 0x98, 0x80, 0xd9, 0xdf, 0xe5, 0xcc, 0x4e, 0x0e, 0x59, 0x2a, 0xb8, 0x49, 0x38, 0x2e, 0xcb, - 0xbf, 0x27, 0x4c, 0x02, 0xee, 0xe3, 0xb5, 0x45, 0x82, 0x16, 0x47, 0xdb, 0x3d, 0x9e, 0xd4, 0xfe, - 0xbe, 0x90, 0x1a, 0xa3, 0x0d, 0x49, 0xad, 0x09, 0x27, 0x39, 0xc7, 0xe3, 0x8d, 0xeb, 0x4f, 0x08, - 0xc3, 0xca, 0xa8, 0xb7, 0xc3, 0xa3, 0xfb, 0x35, 0x50, 0xf2, 0xc4, 0x29, 0xbc, 0x63, 0x47, 0xed, - 0x68, 0xdd, 0x09, 0x38, 0xff, 0x24, 0xe7, 0x2c, 0x2c, 0xbe, 0xe7, 0x5e, 0x3b, 0xeb, 0x5a, 0x97, - 0x30, 0x7f, 0x05, 0xe6, 0x04, 0xf3, 0x9e, 0x69, 0x63, 0xdd, 0xda, 0x33, 0x8d, 0x37, 0x70, 0x6b, - 0x02, 0xd6, 0x3f, 0xd5, 0x37, 0x54, 0xdb, 0x01, 0x72, 0xc2, 0xb9, 0x0e, 0x92, 0xe7, 0xab, 0xa8, - 0x46, 0xa7, 0x6b, 0xd9, 0xee, 0x18, 0x8e, 0x3f, 0x2d, 0x46, 0xca, 0xa3, 0xab, 0x53, 0xb2, 0xe5, - 0x1a, 0xb0, 0xd3, 0x1f, 0x93, 0xaa, 0xe4, 0x67, 0x38, 0xa3, 0xbc, 0x4f, 0xc5, 0x0d, 0x87, 0x6e, - 0x75, 0xba, 0x9a, 0x3d, 0x89, 0xfd, 0xfb, 0x07, 0xc2, 0x70, 0x70, 0x12, 0x6e, 0x38, 0x88, 0x47, - 0x47, 0x56, 0xfb, 0x09, 0x38, 0xfc, 0x8c, 0x30, 0x1c, 0x82, 0x86, 0xb3, 0x10, 0x0e, 0xc3, 0x04, - 0x2c, 0x7e, 0x56, 0xb0, 0x10, 0x34, 0x84, 0xc5, 0xcb, 0xfe, 0x42, 0x6b, 0xe3, 0x3d, 0xc3, 0x71, - 0x6d, 0xe6, 0x92, 0x1f, 0xcd, 0xea, 0xe7, 0xbe, 0x18, 0x76, 0xc2, 0x94, 0x00, 0x29, 0xb1, 0x44, - 0x7c, 0xeb, 0x83, 0x86, 0x6c, 0xe3, 0x1b, 0xf6, 0xf3, 0xc2, 0x12, 0x05, 0xc8, 0x48, 0xdb, 0x02, - 0x1e, 0x22, 0x11, 0xbb, 0x4e, 0x02, 0x95, 0x09, 0xd8, 0xfd, 0xc3, 0xbe, 0xc6, 0x35, 0x04, 0x2d, - 0xe1, 0x19, 0xf0, 0x7f, 0x7a, 0xe6, 0x2d, 0x7c, 0x38, 0x91, 0x76, 0xfe, 0x42, 0x9f, 0xff, 0xb3, - 0xcd, 0x28, 0x99, 0x0d, 0x29, 0xf6, 0xf9, 0x53, 0x68, 0xdc, 0x59, 0xbf, 0xb9, 0x6f, 0x78, 0x9b, - 0xf7, 0x37, 0xec, 0x4e, 0x2d, 0xaf, 0x11, 0x25, 0x0f, 0x3b, 0x3d, 0xe3, 0x99, 0x7d, 0xf8, 0x6d, - 0x4f, 0xcf, 0x43, 0x3e, 0xcf, 0xf2, 0x35, 0xc8, 0x87, 0x1c, 0x9e, 0xf1, 0xac, 0xbe, 0x91, 0xb3, - 0xca, 0x05, 0xfd, 0x9d, 0xe5, 0xcb, 0x10, 0x27, 0xce, 0xcb, 0x78, 0xf2, 0x6f, 0xe2, 0xe4, 0x14, - 0x7d, 0xf9, 0x05, 0x48, 0x0b, 0xa7, 0x65, 0x3c, 0xe9, 0x5f, 0xe3, 0xa4, 0x1e, 0x09, 0x21, 0x17, - 0x0e, 0xcb, 0x78, 0xf2, 0xbf, 0x2e, 0xc8, 0x05, 0x09, 0x21, 0x9f, 0x5c, 0x84, 0xbf, 0xf4, 0x2d, - 0x71, 0xbe, 0xe8, 0x08, 0xd9, 0x5d, 0x85, 0x14, 0xf7, 0x54, 0xc6, 0x53, 0x7f, 0x33, 0xaf, 0x5c, - 0x50, 0x2c, 0x3f, 0x0b, 0x89, 0x09, 0x05, 0xfe, 0x6d, 0x9c, 0x94, 0xe1, 0x2f, 0x57, 0x21, 0x1b, - 0xf0, 0x4e, 0xc6, 0x93, 0x7f, 0x3b, 0x27, 0x0f, 0x52, 0x91, 0xa6, 0x73, 0xef, 0x64, 0x3c, 0x83, - 0xbf, 0x21, 0x9a, 0xce, 0x29, 0x88, 0xd8, 0x84, 0x63, 0x32, 0x9e, 0xfa, 0xa3, 0x42, 0xea, 0x82, - 0x64, 0xf9, 0x45, 0xc8, 0x78, 0x8b, 0xcd, 0x78, 0xfa, 0xef, 0xe0, 0xf4, 0x3e, 0x0d, 0x91, 0x40, - 0x60, 0xb1, 0x1b, 0xcf, 0xe2, 0x6f, 0x0a, 0x09, 0x04, 0xa8, 0xc8, 0x34, 0xea, 0x77, 0x60, 0xc6, - 0x73, 0xfa, 0x4e, 0x31, 0x8d, 0xfa, 0xfc, 0x17, 0x32, 0x9a, 0xd4, 0xe6, 0x8f, 0x67, 0xf1, 0x5d, - 0x62, 0x34, 0x29, 0x3e, 0x69, 0x46, 0xbf, 0x47, 0x30, 0x9e, 0xc7, 0xf7, 0x88, 0x66, 0xf4, 0x39, - 0x04, 0xcb, 0x5b, 0x80, 0x06, 0xbd, 0x81, 0xf1, 0xfc, 0x3e, 0xc6, 0xf9, 0x4d, 0x0f, 0x38, 0x03, - 0xcb, 0xef, 0x87, 0x93, 0xc3, 0x3d, 0x81, 0xf1, 0x5c, 0xbf, 0xf7, 0xed, 0xbe, 0xd8, 0x2d, 0xe8, - 0x08, 0x2c, 0x37, 0xfd, 0x25, 0x25, 0xe8, 0x05, 0x8c, 0x67, 0xfb, 0x7d, 0x6f, 0x87, 0x0d, 0x77, - 0xd0, 0x09, 0x58, 0x2e, 0x03, 0xf8, 0x0b, 0xf0, 0x78, 0x5e, 0x9f, 0xe0, 0xbc, 0x02, 0x44, 0x64, - 0x6a, 0xf0, 0xf5, 0x77, 0x3c, 0xfd, 0x3d, 0x31, 0x35, 0x38, 0x05, 0x99, 0x1a, 0x62, 0xe9, 0x1d, - 0x4f, 0xfd, 0xfd, 0x62, 0x6a, 0x08, 0x12, 0xa2, 0xd9, 0x81, 0xd5, 0x6d, 0x3c, 0x87, 0x4f, 0x09, - 0xcd, 0x0e, 0x50, 0x2d, 0x6f, 0xc0, 0xf4, 0xc0, 0x82, 0x38, 0x9e, 0xd5, 0x0f, 0x72, 0x56, 0x52, - 0xff, 0x7a, 0x18, 0x5c, 0xbc, 0xf8, 0x62, 0x38, 0x9e, 0xdb, 0x0f, 0xf5, 0x2d, 0x5e, 0x7c, 0x2d, - 0x5c, 0xbe, 0x0a, 0x69, 0xb3, 0xd7, 0x6e, 0x93, 0xc9, 0x83, 0x8e, 0x3e, 0x9f, 0x3b, 0xf7, 0x5f, - 0xbf, 0xc4, 0xa5, 0x23, 0x08, 0x96, 0x2f, 0x43, 0x02, 0x77, 0x76, 0x70, 0x6b, 0x1c, 0xe5, 0x17, - 0xbe, 0x24, 0x0c, 0x26, 0xc1, 0x5e, 0x7e, 0x11, 0x80, 0xa5, 0x46, 0xe8, 0xc6, 0xf9, 0x18, 0xda, - 0xdf, 0xfb, 0x12, 0x3f, 0x10, 0xe7, 0x93, 0xf8, 0x0c, 0xd8, 0xf1, 0xba, 0xa3, 0x19, 0x7c, 0x31, - 0xcc, 0x80, 0x8e, 0xc8, 0xf3, 0x90, 0x7a, 0xdd, 0xb1, 0x4c, 0x57, 0xdb, 0x1b, 0x47, 0xfd, 0xfb, - 0x9c, 0x5a, 0xe0, 0x13, 0x81, 0x75, 0x2c, 0x1b, 0xbb, 0xda, 0x9e, 0x33, 0x8e, 0xf6, 0xbf, 0x71, - 0x5a, 0x8f, 0x80, 0x10, 0xeb, 0x9a, 0xe3, 0x4e, 0xd2, 0xef, 0xff, 0x2e, 0x88, 0x05, 0x01, 0x69, - 0x34, 0xf9, 0x7d, 0x0b, 0x1f, 0x8e, 0xa3, 0xfd, 0x03, 0xd1, 0x68, 0x8e, 0xbf, 0xfc, 0x02, 0x64, - 0xc8, 0x4f, 0x76, 0xca, 0x75, 0x0c, 0xf1, 0x1f, 0x72, 0x62, 0x9f, 0x82, 0xd4, 0xec, 0xb8, 0x2d, - 0xd7, 0x18, 0x2f, 0xec, 0x3f, 0xe2, 0x23, 0x2d, 0xf0, 0x97, 0xcb, 0x90, 0x75, 0xdc, 0x56, 0xab, - 0xc7, 0xfd, 0xd3, 0x31, 0xe4, 0x7f, 0xfc, 0x25, 0x2f, 0x65, 0xe1, 0xd1, 0x90, 0xd1, 0xbe, 0x73, - 0xcb, 0xed, 0x5a, 0x74, 0xbf, 0x65, 0x1c, 0x87, 0xb7, 0x39, 0x87, 0x00, 0xc9, 0x72, 0x15, 0x72, - 0xa4, 0x2f, 0x36, 0xee, 0x62, 0xba, 0x39, 0x36, 0x86, 0xc5, 0x9f, 0x70, 0x01, 0x84, 0x88, 0x2a, - 0x5f, 0xff, 0x2b, 0x6f, 0xcd, 0x47, 0x3e, 0xfb, 0xd6, 0x7c, 0xe4, 0xb7, 0xde, 0x9a, 0x8f, 0x7c, - 0xf4, 0x73, 0xf3, 0x53, 0x9f, 0xfd, 0xdc, 0xfc, 0xd4, 0x6f, 0x7c, 0x6e, 0x7e, 0x6a, 0x78, 0x96, - 0x18, 0x56, 0xad, 0x55, 0x8b, 0xe5, 0x87, 0x5f, 0x7b, 0x78, 0xcf, 0x70, 0xf7, 0x7b, 0x3b, 0x4b, - 0xba, 0xd5, 0xb9, 0xa8, 0x5b, 0x4e, 0xc7, 0x72, 0x2e, 0x86, 0xf3, 0xba, 0xf4, 0x17, 0xfc, 0xef, - 0x08, 0x89, 0x99, 0xc3, 0xe9, 0x5c, 0xcd, 0x3c, 0x1c, 0x75, 0x99, 0xee, 0x0a, 0xc4, 0xca, 0xe6, - 0x21, 0x3a, 0xcd, 0x0c, 0x9c, 0xda, 0xb3, 0xdb, 0xfc, 0xa8, 0x65, 0x8a, 0x7c, 0x6f, 0xdb, 0x6d, - 0x34, 0xeb, 0x9f, 0x87, 0x8e, 0x9c, 0xcf, 0xf1, 0x43, 0xce, 0x95, 0x6f, 0x8f, 0x1c, 0xaf, 0x27, - 0xe9, 0xb2, 0x79, 0x48, 0x3b, 0xb2, 0x15, 0x79, 0xed, 0xf1, 0xb1, 0x79, 0xee, 0x5b, 0xa6, 0x75, - 0xc7, 0x24, 0xcd, 0xee, 0xee, 0x88, 0x1c, 0xf7, 0x7c, 0x7f, 0x8e, 0xfb, 0xfd, 0xb8, 0xdd, 0x7e, - 0x89, 0xe0, 0x35, 0x09, 0xc9, 0x4e, 0x92, 0x9d, 0xea, 0x87, 0xef, 0x8c, 0xc2, 0xfc, 0x40, 0x3a, - 0x9b, 0x2b, 0xc1, 0x28, 0x21, 0x2c, 0x43, 0x7a, 0x45, 0xe8, 0xd6, 0x1c, 0xa4, 0x1c, 0xac, 0x5b, - 0x66, 0xcb, 0xa1, 0x82, 0x88, 0x29, 0xe2, 0x93, 0x08, 0xc2, 0xd4, 0x4c, 0xcb, 0xe1, 0x87, 0x95, - 0xd9, 0x47, 0xe5, 0xe3, 0xc7, 0x14, 0x44, 0x5e, 0xd4, 0x24, 0xa4, 0xf1, 0xd4, 0x84, 0xd2, 0x10, - 0x9d, 0x08, 0x65, 0xfe, 0x27, 0x95, 0xca, 0xf7, 0x44, 0x61, 0xa1, 0x5f, 0x2a, 0x64, 0x66, 0x39, - 0xae, 0xd6, 0xe9, 0x8e, 0x12, 0xcb, 0x55, 0xc8, 0x34, 0x05, 0xce, 0xb1, 0xe5, 0x72, 0xef, 0x98, - 0x72, 0x29, 0x78, 0x55, 0x09, 0xc1, 0x5c, 0x9a, 0x50, 0x30, 0x5e, 0x3f, 0xee, 0x4b, 0x32, 0xff, - 0x2b, 0x09, 0xa7, 0xd9, 0x74, 0x52, 0xd9, 0x54, 0x62, 0x1f, 0x5c, 0x26, 0xb9, 0x60, 0xd1, 0xf8, - 0x7d, 0x12, 0xf9, 0x25, 0x98, 0xa9, 0x13, 0x6b, 0x41, 0xa2, 0x20, 0x7f, 0x87, 0x67, 0xe8, 0x79, - 0xee, 0xc5, 0x90, 0xc3, 0xcf, 0xf7, 0xb7, 0x82, 0x20, 0xf9, 0x1b, 0x22, 0x20, 0x35, 0x74, 0xad, - 0xad, 0xd9, 0x5f, 0x2e, 0x2b, 0xf4, 0x2c, 0x00, 0x3b, 0xee, 0xe1, 0x5d, 0xdc, 0x2b, 0x5c, 0x9a, - 0x5b, 0x0a, 0x76, 0x6e, 0x89, 0xd5, 0x44, 0x4f, 0x50, 0x65, 0x28, 0x2e, 0xf9, 0x79, 0xe1, 0x15, - 0x00, 0xbf, 0x00, 0x9d, 0x81, 0x53, 0x8d, 0x6a, 0x79, 0xad, 0xac, 0x88, 0x43, 0x42, 0x8d, 0xad, - 0x5a, 0xb5, 0x7e, 0xad, 0x5e, 0x5b, 0x91, 0xa6, 0xd0, 0x49, 0x40, 0xc1, 0x42, 0xef, 0x50, 0xd3, - 0x09, 0x98, 0x0e, 0xc2, 0xd9, 0x2d, 0x95, 0x28, 0xf1, 0x14, 0x8d, 0x4e, 0xb7, 0x8d, 0xe9, 0xce, - 0xa3, 0x6a, 0x08, 0xa9, 0x8d, 0x77, 0x42, 0x7e, 0xf5, 0xdf, 0xb3, 0x9b, 0x0b, 0x33, 0x3e, 0xb9, - 0x27, 0xf3, 0xe5, 0x35, 0x98, 0xd6, 0x74, 0x1d, 0x77, 0x43, 0x2c, 0xc7, 0x98, 0x6a, 0xc2, 0x90, - 0xee, 0xa5, 0x72, 0x4a, 0x9f, 0xdb, 0xb3, 0x90, 0x74, 0x68, 0xef, 0xc7, 0xb1, 0xf8, 0x35, 0xce, - 0x82, 0xa3, 0x2f, 0x9b, 0x30, 0x4d, 0x3c, 0x3f, 0xcd, 0xc6, 0x81, 0x66, 0x1c, 0x9d, 0x67, 0xf8, - 0x47, 0x3f, 0xfd, 0x24, 0xdd, 0x59, 0x3d, 0x1b, 0x1e, 0x96, 0x21, 0xea, 0xa4, 0x48, 0x9c, 0xb7, - 0xdf, 0x50, 0x0c, 0x05, 0x51, 0x1f, 0x6f, 0xf0, 0xd1, 0x95, 0xfd, 0x22, 0xaf, 0x6c, 0x7e, 0x98, - 0x0e, 0x04, 0x6a, 0xca, 0x73, 0xae, 0xac, 0xa0, 0x52, 0x1b, 0x35, 0xa7, 0x5f, 0x7b, 0x6c, 0x70, - 0x75, 0x62, 0xff, 0x3d, 0x41, 0x39, 0x5f, 0x0d, 0x56, 0xe3, 0xcd, 0xbd, 0x8f, 0xc7, 0x61, 0x5a, - 0xeb, 0x18, 0xa6, 0x75, 0x91, 0xfe, 0xcb, 0xe7, 0x5c, 0x82, 0x7e, 0x4c, 0xb0, 0x29, 0x79, 0x85, - 0x4d, 0x85, 0xf1, 0x1a, 0xf3, 0x87, 0xdf, 0xfa, 0x23, 0x09, 0x7f, 0xba, 0x2c, 0xaf, 0x83, 0x24, - 0x0e, 0xf1, 0x62, 0x53, 0xb7, 0x5a, 0x13, 0x65, 0x29, 0xfe, 0x48, 0xf0, 0x10, 0xf9, 0xad, 0x1a, - 0x27, 0x5d, 0x7e, 0x2f, 0xa4, 0x3d, 0x36, 0xe3, 0x3c, 0x13, 0xc1, 0xc4, 0xa3, 0x20, 0x7e, 0x09, - 0x9b, 0x99, 0x93, 0x78, 0xa1, 0x6f, 0x0b, 0x7a, 0x36, 0x43, 0x37, 0x48, 0x6f, 0x56, 0xa1, 0xd0, - 0xb2, 0x4c, 0x57, 0xb5, 0x3a, 0x86, 0x8b, 0x3b, 0x5d, 0x77, 0xac, 0x5f, 0xf7, 0x27, 0x8c, 0x49, - 0x5a, 0xc9, 0x13, 0xba, 0x4d, 0x41, 0x46, 0x5a, 0xc2, 0xee, 0xe9, 0x4d, 0xd2, 0x92, 0xff, 0xe1, - 0xb5, 0x84, 0xd2, 0x90, 0x96, 0xdc, 0x97, 0x76, 0x38, 0xad, 0x5b, 0xdc, 0x98, 0xbb, 0x07, 0x4c, - 0x0b, 0x3c, 0xed, 0xf8, 0xa7, 0x71, 0x98, 0xe7, 0xc8, 0x3b, 0x9a, 0x83, 0x2f, 0xde, 0x7e, 0x6a, - 0x07, 0xbb, 0xda, 0x53, 0x17, 0x75, 0xcb, 0x10, 0x2b, 0xf9, 0x0c, 0x37, 0xd6, 0xa4, 0x7c, 0x89, - 0x97, 0x97, 0x86, 0x6e, 0x77, 0x97, 0x46, 0x1b, 0xf9, 0xd2, 0xa0, 0x0e, 0xca, 0x6d, 0x88, 0x57, - 0x2d, 0xc3, 0x24, 0x6b, 0x5b, 0x0b, 0x9b, 0x56, 0x87, 0x9b, 0x5b, 0xf6, 0x81, 0xae, 0x43, 0x52, - 0xeb, 0x58, 0x3d, 0xd3, 0x65, 0xa6, 0xb6, 0xf2, 0xe4, 0xaf, 0xbc, 0xb9, 0x30, 0xf5, 0x9f, 0xde, - 0x5c, 0x38, 0xc1, 0xd8, 0x3a, 0xad, 0x5b, 0x4b, 0x86, 0x75, 0xb1, 0xa3, 0xb9, 0xfb, 0x64, 0xfa, - 0xfe, 0xfa, 0x67, 0x9e, 0x00, 0x5e, 0x5f, 0xdd, 0x74, 0x3f, 0xfd, 0xbb, 0x3f, 0x71, 0x21, 0xa2, - 0x70, 0xfa, 0xe5, 0xf8, 0xe7, 0x3f, 0xb9, 0x10, 0x91, 0xbb, 0x90, 0x5a, 0xc1, 0xfa, 0x11, 0x15, - 0xd6, 0xfb, 0x2a, 0x7c, 0x8a, 0x57, 0x78, 0x66, 0xb0, 0x42, 0x76, 0x60, 0x6f, 0x05, 0xeb, 0x81, - 0x6a, 0x57, 0xb0, 0xde, 0x57, 0x63, 0x1d, 0xd2, 0x75, 0xd3, 0x65, 0x97, 0x8d, 0x5e, 0x80, 0x98, - 0x61, 0xb2, 0xf3, 0xeb, 0x99, 0xca, 0x63, 0xc7, 0xe8, 0x8a, 0x42, 0xe8, 0xe4, 0x4d, 0x48, 0xaf, - 0x60, 0x9d, 0xb1, 0xaa, 0x42, 0xac, 0x85, 0x75, 0xce, 0xea, 0x3e, 0x1a, 0x49, 0xa8, 0x2b, 0x2b, - 0xbf, 0xf1, 0xdb, 0xf3, 0x53, 0x1f, 0x7a, 0x6b, 0x7e, 0x6a, 0xa4, 0x3a, 0xc9, 0xe3, 0xd5, 0xc9, - 0xd3, 0xa2, 0x1f, 0x89, 0xc3, 0x83, 0xf4, 0xb6, 0xaa, 0xdd, 0x31, 0x4c, 0xf7, 0xa2, 0x6e, 0x1f, - 0x76, 0x5d, 0x8b, 0x18, 0x15, 0x6b, 0x97, 0x2b, 0xd1, 0xb4, 0x5f, 0xbc, 0xc4, 0x8a, 0x87, 0xab, - 0x90, 0xbc, 0x0b, 0x89, 0x2d, 0x42, 0x47, 0x06, 0xc9, 0xb5, 0x5c, 0xad, 0xcd, 0x3d, 0x21, 0xf6, - 0x41, 0xa0, 0xec, 0x86, 0x6b, 0x94, 0x41, 0x0d, 0x71, 0xb9, 0xb5, 0x8d, 0xb5, 0x5d, 0x76, 0x51, - 0x28, 0x46, 0x5d, 0xe8, 0x34, 0x01, 0xd0, 0x3b, 0x41, 0xb3, 0x90, 0xd0, 0x7a, 0xec, 0x30, 0x4f, - 0x8c, 0xf8, 0xd6, 0xf4, 0x43, 0x7e, 0x09, 0x52, 0x7c, 0x4f, 0x1f, 0x49, 0x10, 0xbb, 0x85, 0x0f, - 0x69, 0x3d, 0x39, 0x85, 0xfc, 0x44, 0x4b, 0x90, 0xa0, 0x8d, 0xe7, 0x37, 0x20, 0xe7, 0x96, 0x06, - 0x5a, 0xbf, 0x44, 0x1b, 0xa9, 0x30, 0x34, 0xf9, 0x06, 0xa4, 0x57, 0x2c, 0xa2, 0xd9, 0x61, 0x6e, - 0x19, 0xc6, 0x8d, 0xb6, 0xb9, 0xdb, 0xe3, 0x7a, 0xa5, 0xb0, 0x0f, 0x74, 0x12, 0x92, 0xec, 0xe2, - 0x18, 0x3f, 0x90, 0xc4, 0xbf, 0xe4, 0x2a, 0xa4, 0x28, 0xef, 0xcd, 0x2e, 0x71, 0x43, 0xbc, 0xb3, - 0xf4, 0x19, 0x7e, 0x8d, 0x98, 0xb3, 0x8f, 0xfa, 0x8d, 0x45, 0x10, 0x6f, 0x69, 0xae, 0xc6, 0xfb, - 0x4d, 0x7f, 0xcb, 0xef, 0x83, 0x34, 0x67, 0xe2, 0xa0, 0x4b, 0x10, 0xb3, 0xba, 0x0e, 0x3f, 0x52, - 0x54, 0x1a, 0xd5, 0x95, 0xcd, 0x6e, 0x25, 0x4e, 0x74, 0x49, 0x21, 0xc8, 0x95, 0x8d, 0x91, 0x6a, - 0xf1, 0x4c, 0x48, 0x2d, 0x3a, 0xd8, 0xdd, 0xd9, 0x75, 0xfd, 0x1f, 0x6c, 0x38, 0x07, 0x54, 0xc1, - 0x53, 0x94, 0x7b, 0x51, 0x98, 0x0f, 0x94, 0xde, 0xc6, 0xb6, 0x63, 0x58, 0x26, 0xd3, 0x26, 0xae, - 0x29, 0x28, 0xd0, 0x40, 0x5e, 0x3e, 0x42, 0x55, 0x5e, 0x80, 0x58, 0xb9, 0xdb, 0x45, 0x25, 0x48, - 0xd3, 0x6f, 0xdd, 0x62, 0xba, 0x12, 0x57, 0xbc, 0x6f, 0x52, 0xe6, 0x58, 0xbb, 0xee, 0x1d, 0xcd, - 0xf6, 0xee, 0x55, 0x8b, 0x6f, 0xf9, 0x79, 0xc8, 0x54, 0x2d, 0xd3, 0xc1, 0xa6, 0xd3, 0xa3, 0xfe, - 0xf5, 0x4e, 0xdb, 0xd2, 0x6f, 0x71, 0x0e, 0xec, 0x83, 0x08, 0x5b, 0xeb, 0x76, 0x29, 0x65, 0x5c, - 0x21, 0x3f, 0xd9, 0xcc, 0xae, 0x6c, 0x8e, 0x14, 0xcf, 0xe5, 0xe3, 0x89, 0x87, 0x77, 0xd0, 0x77, - 0x94, 0x23, 0xf0, 0xc0, 0xe0, 0x44, 0xba, 0x85, 0x0f, 0x9d, 0xe3, 0xce, 0xa3, 0x57, 0x20, 0xb3, - 0x45, 0x9f, 0x3c, 0x79, 0x09, 0x1f, 0xa2, 0x12, 0xa4, 0x70, 0xeb, 0xd2, 0xe5, 0xcb, 0x4f, 0x3d, - 0xcf, 0xb4, 0xfc, 0xfa, 0x94, 0x22, 0x00, 0x68, 0x1e, 0x32, 0x0e, 0xd6, 0xbb, 0x97, 0x2e, 0x5f, - 0xb9, 0xf5, 0x14, 0x53, 0xab, 0xeb, 0x53, 0x8a, 0x0f, 0x5a, 0x4e, 0x93, 0x1e, 0x7f, 0xfe, 0x53, - 0x0b, 0x91, 0x4a, 0x02, 0x62, 0x4e, 0xaf, 0xf3, 0xae, 0xe9, 0xc6, 0x1f, 0x24, 0x61, 0x31, 0x50, - 0xca, 0x16, 0xac, 0xdb, 0x5a, 0xdb, 0x68, 0x69, 0xfe, 0x43, 0x35, 0x52, 0xa0, 0xff, 0x14, 0x63, - 0xc4, 0x4a, 0x74, 0xa4, 0x14, 0xe5, 0x9f, 0x8a, 0x40, 0xee, 0xa6, 0xe0, 0xdc, 0xc0, 0x2e, 0xba, - 0x0a, 0xe0, 0xd5, 0x24, 0xa6, 0xca, 0x99, 0xa5, 0xfe, 0xba, 0x96, 0x3c, 0x1a, 0x25, 0x80, 0x8e, - 0x9e, 0xa5, 0x0a, 0xd8, 0xb5, 0x1c, 0x7e, 0xc7, 0x76, 0x0c, 0xa9, 0x87, 0x8c, 0x1e, 0x07, 0x44, - 0xad, 0x9a, 0x7a, 0xdb, 0x72, 0x0d, 0x73, 0x4f, 0xed, 0x5a, 0x77, 0xf8, 0xcb, 0x05, 0x31, 0x45, - 0xa2, 0x25, 0x37, 0x69, 0xc1, 0x16, 0x81, 0x93, 0x46, 0x67, 0x3c, 0x2e, 0x24, 0x54, 0xd4, 0x5a, - 0x2d, 0x1b, 0x3b, 0x0e, 0x37, 0x5c, 0xe2, 0x13, 0x5d, 0x85, 0x54, 0xb7, 0xb7, 0xa3, 0x0a, 0x2b, - 0x91, 0xbd, 0xf4, 0xc0, 0xb0, 0x39, 0x2f, 0x74, 0x83, 0xcf, 0xfa, 0x64, 0xb7, 0xb7, 0x43, 0x34, - 0xe5, 0x2c, 0xe4, 0x86, 0x34, 0x26, 0x7b, 0xdb, 0x6f, 0x07, 0x7d, 0x65, 0x87, 0xf7, 0x40, 0xed, - 0xda, 0x86, 0x65, 0x1b, 0xee, 0x21, 0x3d, 0x0a, 0x18, 0x53, 0x24, 0x51, 0xb0, 0xc5, 0xe1, 0xf2, - 0x2d, 0x28, 0x36, 0x68, 0x08, 0xe1, 0xb7, 0xfc, 0xb2, 0xdf, 0xbe, 0xc8, 0xf8, 0xf6, 0x8d, 0x6c, - 0x59, 0x74, 0xa0, 0x65, 0x17, 0xfe, 0x43, 0x04, 0xb2, 0x15, 0x32, 0x71, 0xeb, 0x2b, 0xd7, 0xda, - 0xda, 0x1e, 0x7a, 0x0a, 0x4e, 0x54, 0xd6, 0x36, 0xab, 0x2f, 0xa9, 0xf5, 0x15, 0xf5, 0xda, 0x5a, - 0x79, 0xd5, 0x3f, 0x7b, 0x5c, 0x3a, 0x79, 0xf7, 0xde, 0x22, 0x0a, 0xe0, 0x6e, 0x9b, 0x34, 0xce, - 0x45, 0x17, 0x61, 0x36, 0x4c, 0x52, 0xae, 0x34, 0x6a, 0x1b, 0x4d, 0x29, 0x52, 0x3a, 0x71, 0xf7, - 0xde, 0xe2, 0x74, 0x80, 0xa2, 0xbc, 0xe3, 0x60, 0xd3, 0x1d, 0x24, 0xa8, 0x6e, 0xae, 0xaf, 0xd7, - 0x9b, 0x52, 0x74, 0x80, 0xa0, 0x6a, 0x75, 0x3a, 0x86, 0x8b, 0x1e, 0x85, 0xe9, 0x30, 0xc1, 0x46, - 0x7d, 0x4d, 0x8a, 0x95, 0xd0, 0xdd, 0x7b, 0x8b, 0x85, 0x00, 0xf6, 0x86, 0xd1, 0x2e, 0xa5, 0x3f, - 0xf2, 0x43, 0xf3, 0x53, 0x9f, 0xfe, 0x5b, 0xf3, 0x91, 0xca, 0xfa, 0xc8, 0x39, 0xf7, 0xf4, 0xf1, - 0xe6, 0x5c, 0x78, 0xdd, 0xfe, 0xd2, 0x03, 0x21, 0x73, 0xc3, 0x7d, 0xc4, 0x80, 0x31, 0x9e, 0x74, - 0xba, 0x8d, 0xcb, 0x7b, 0x94, 0x8e, 0x76, 0x0f, 0x4a, 0x63, 0x16, 0x85, 0xd2, 0x58, 0xc3, 0x20, - 0x3f, 0x0f, 0xf9, 0x2d, 0xcd, 0x76, 0x1b, 0xd8, 0xbd, 0x8e, 0xb5, 0x16, 0xb6, 0xc3, 0xfe, 0x43, - 0x5e, 0xf8, 0x0f, 0x08, 0xe2, 0xd4, 0x49, 0x60, 0xeb, 0x27, 0xfd, 0x2d, 0xef, 0x43, 0x9c, 0x9e, - 0x72, 0xf6, 0x7c, 0x0b, 0x4e, 0xc1, 0x7c, 0x0b, 0xb2, 0x32, 0x1c, 0xba, 0xd8, 0x11, 0xa9, 0x39, - 0xfa, 0x81, 0x9e, 0x11, 0x1e, 0x42, 0xec, 0x68, 0x0f, 0x81, 0x4f, 0x2f, 0xee, 0x27, 0xb4, 0x21, - 0xc5, 0x87, 0xd8, 0x6b, 0x48, 0xc4, 0x6f, 0x08, 0x5a, 0x87, 0x62, 0x57, 0xb3, 0x5d, 0x7a, 0xeb, - 0x71, 0x9f, 0xf6, 0x82, 0xcf, 0xe0, 0x85, 0x41, 0x7b, 0x12, 0xea, 0x2c, 0xaf, 0x25, 0xdf, 0x0d, - 0x02, 0xe5, 0xff, 0x12, 0x87, 0x24, 0x17, 0xc6, 0x0b, 0x90, 0xe2, 0x62, 0xe5, 0x73, 0xee, 0xc1, - 0xa5, 0xc1, 0x65, 0x76, 0xc9, 0x5b, 0x0e, 0x39, 0x3f, 0x41, 0x83, 0x1e, 0x81, 0xb4, 0xbe, 0xaf, - 0x19, 0xa6, 0x6a, 0xb4, 0xb8, 0x73, 0x9c, 0x7d, 0xeb, 0xcd, 0x85, 0x54, 0x95, 0xc0, 0xea, 0x2b, - 0x4a, 0x8a, 0x16, 0xd6, 0x5b, 0xc4, 0xa7, 0xd9, 0xc7, 0xc6, 0xde, 0xbe, 0xcb, 0xed, 0x06, 0xff, - 0x42, 0xcf, 0x41, 0x9c, 0x28, 0x04, 0xbf, 0x13, 0x5f, 0x1a, 0x88, 0x7a, 0xbc, 0xb4, 0x54, 0x25, - 0x4d, 0x2a, 0xfe, 0xe8, 0x7f, 0x5e, 0x88, 0x28, 0x94, 0x02, 0x55, 0x21, 0xdf, 0xd6, 0x1c, 0x57, - 0xa5, 0xeb, 0x31, 0xa9, 0x3e, 0x41, 0x59, 0x9c, 0x1e, 0x14, 0x08, 0x17, 0x2c, 0x6f, 0x7a, 0x96, - 0x50, 0x31, 0x50, 0x0b, 0x9d, 0x07, 0x89, 0x32, 0xd1, 0xe9, 0x0c, 0x64, 0x5e, 0x62, 0x92, 0xca, - 0xbd, 0x40, 0xe0, 0x6c, 0x62, 0x52, 0x5f, 0xf1, 0x0c, 0x64, 0xe8, 0x2d, 0x5c, 0x8a, 0xc2, 0x8e, - 0xd6, 0xa7, 0x09, 0x80, 0x16, 0x9e, 0x83, 0xa2, 0x6f, 0xf5, 0x19, 0x4a, 0x9a, 0x71, 0xf1, 0xc1, - 0x14, 0xf1, 0x49, 0x98, 0x35, 0xf1, 0x01, 0x3d, 0xec, 0x1f, 0xc2, 0xce, 0x50, 0x6c, 0x44, 0xca, - 0x6e, 0x86, 0x29, 0x1e, 0x86, 0x82, 0x2e, 0x84, 0xcf, 0x70, 0x81, 0xe2, 0xe6, 0x3d, 0x28, 0x45, - 0x3b, 0x0d, 0x69, 0xad, 0xdb, 0x65, 0x08, 0x59, 0x6e, 0xf5, 0xbb, 0x5d, 0x5a, 0x74, 0x01, 0xa6, - 0x69, 0x1f, 0x6d, 0xec, 0xf4, 0xda, 0x2e, 0x67, 0x92, 0xa3, 0x38, 0x45, 0x52, 0xa0, 0x30, 0x38, - 0xc5, 0x7d, 0x08, 0xf2, 0xf8, 0xb6, 0xd1, 0xc2, 0xa6, 0x8e, 0x19, 0x5e, 0x9e, 0xe2, 0xe5, 0x04, - 0x90, 0x22, 0x3d, 0x0a, 0x9e, 0x35, 0x57, 0xc5, 0x4a, 0x53, 0x60, 0xfc, 0x04, 0xbc, 0xcc, 0xc0, - 0xf2, 0x1c, 0xc4, 0x57, 0x34, 0x57, 0x23, 0xee, 0x92, 0x7b, 0xc0, 0x96, 0xcf, 0x9c, 0x42, 0x7e, - 0xca, 0x3f, 0x1b, 0x83, 0xf8, 0x4d, 0xcb, 0xc5, 0xe8, 0xe9, 0x80, 0x2b, 0x5b, 0x18, 0xa6, 0xcf, - 0x0d, 0x63, 0xcf, 0xc4, 0xad, 0x75, 0x67, 0x2f, 0xf0, 0x64, 0x8e, 0xaf, 0x4e, 0xd1, 0x90, 0x3a, - 0xcd, 0x42, 0xc2, 0xb6, 0x7a, 0x66, 0x4b, 0x1c, 0x4a, 0xa7, 0x1f, 0xa8, 0x06, 0x69, 0x4f, 0x4b, - 0xe2, 0xe3, 0xb4, 0xa4, 0x48, 0xb4, 0x84, 0xe8, 0x30, 0x07, 0x28, 0xa9, 0x1d, 0xae, 0x2c, 0x15, - 0xc8, 0x78, 0xc6, 0x8b, 0x6b, 0xdb, 0x64, 0x0a, 0xeb, 0x93, 0x91, 0x25, 0xd2, 0x1b, 0x7b, 0x4f, - 0x78, 0x4c, 0xe3, 0x24, 0xaf, 0x80, 0x4b, 0x2f, 0xa4, 0x56, 0xfc, 0xf9, 0x9e, 0x14, 0xed, 0x97, - 0xaf, 0x56, 0xec, 0x09, 0x9f, 0x07, 0x20, 0xe3, 0x18, 0x7b, 0xa6, 0xe6, 0xf6, 0x6c, 0xcc, 0x35, - 0xcf, 0x07, 0x90, 0x52, 0xff, 0x82, 0x06, 0xd3, 0xb4, 0xc0, 0xab, 0x62, 0x17, 0x61, 0xc6, 0x7f, - 0xcf, 0xcb, 0xe7, 0xc2, 0xb4, 0x0c, 0x79, 0x45, 0x0d, 0x51, 0x22, 0xff, 0x52, 0x04, 0x92, 0x7c, - 0xc5, 0xf2, 0x87, 0x21, 0x32, 0x7c, 0x18, 0xa2, 0xa3, 0x86, 0x21, 0x76, 0xff, 0xc3, 0x50, 0x06, - 0xf0, 0x9a, 0xe9, 0xf0, 0x47, 0x5a, 0x86, 0xb8, 0x55, 0xac, 0x89, 0x0d, 0x63, 0x8f, 0xcf, 0xfb, - 0x00, 0x91, 0xfc, 0x9b, 0x11, 0xe2, 0xe1, 0xf3, 0x72, 0x54, 0x86, 0xbc, 0x68, 0x97, 0xba, 0xdb, - 0xd6, 0xf6, 0xb8, 0x2a, 0x3e, 0x38, 0xb2, 0x71, 0x64, 0x15, 0x56, 0xb2, 0xbc, 0x3d, 0xd4, 0x9f, - 0x18, 0x3a, 0xac, 0xd1, 0x11, 0xc3, 0x1a, 0xd2, 0xa3, 0xd8, 0xfd, 0xe9, 0x51, 0x68, 0xc4, 0xe3, - 0x7d, 0x23, 0x2e, 0xff, 0x76, 0x84, 0xbf, 0x26, 0xd6, 0x62, 0xb7, 0x4b, 0xfe, 0xac, 0x86, 0xea, - 0x35, 0xae, 0x5b, 0x2d, 0xdc, 0x52, 0x07, 0xc6, 0xec, 0xa1, 0x41, 0x8e, 0xe1, 0x36, 0xfb, 0x63, - 0x87, 0x04, 0x97, 0x86, 0x3f, 0x86, 0x9f, 0x89, 0xc2, 0xf4, 0x00, 0xfe, 0x9f, 0xbf, 0xb1, 0x0c, - 0xcf, 0xde, 0xc4, 0x84, 0xb3, 0x37, 0x39, 0x72, 0xf6, 0xfe, 0x74, 0x94, 0x26, 0x00, 0xba, 0x96, - 0xa3, 0xb5, 0xbf, 0x12, 0xb6, 0xf7, 0x0c, 0x64, 0xba, 0x56, 0x5b, 0x65, 0x25, 0xec, 0x5a, 0x50, - 0xba, 0x6b, 0xb5, 0x95, 0x01, 0x35, 0x4b, 0xbc, 0x43, 0x86, 0x39, 0xf9, 0x0e, 0x0c, 0x42, 0xaa, - 0x7f, 0x42, 0xd9, 0x90, 0x63, 0xa2, 0xe0, 0x5e, 0xd3, 0x93, 0x44, 0x06, 0xd4, 0x0d, 0x8b, 0x0c, - 0x7a, 0x79, 0xac, 0xd9, 0x0c, 0x53, 0xe1, 0x78, 0x84, 0x82, 0x39, 0x19, 0xc3, 0x32, 0x47, 0x41, - 0x8b, 0xa5, 0x70, 0x3c, 0xf9, 0xbb, 0x23, 0x00, 0x6b, 0x44, 0xb2, 0xb4, 0xbf, 0xc4, 0xdf, 0x71, - 0x68, 0x13, 0xd4, 0x50, 0xcd, 0xf3, 0xa3, 0x06, 0x8d, 0xd7, 0x9f, 0x73, 0x82, 0xed, 0xae, 0x42, - 0xde, 0xd7, 0x6d, 0x07, 0x8b, 0xc6, 0xcc, 0x1f, 0x11, 0x95, 0x36, 0xb0, 0xab, 0xe4, 0x6e, 0x07, - 0xbe, 0xe4, 0x7f, 0x12, 0x81, 0x0c, 0x6d, 0xd3, 0x3a, 0x76, 0xb5, 0xd0, 0x18, 0x46, 0xee, 0x7f, - 0x0c, 0x1f, 0x04, 0x60, 0x6c, 0x1c, 0xe3, 0x0d, 0xcc, 0x35, 0x2b, 0x43, 0x21, 0x0d, 0xe3, 0x0d, - 0x8c, 0xae, 0x78, 0x02, 0x8f, 0x1d, 0x2d, 0x70, 0x11, 0xb5, 0x72, 0xb1, 0x9f, 0x82, 0x14, 0x7d, - 0xef, 0xf2, 0xc0, 0xe1, 0x81, 0x68, 0xd2, 0xec, 0x75, 0x9a, 0x07, 0x8e, 0xfc, 0x3a, 0xa4, 0x9a, - 0x07, 0x2c, 0x9f, 0x78, 0x06, 0x32, 0xb6, 0x65, 0x71, 0xef, 0x8f, 0x79, 0xdd, 0x69, 0x02, 0xa0, - 0xce, 0x8e, 0xc8, 0xa1, 0x45, 0xfd, 0x1c, 0x9a, 0x9f, 0x04, 0x8c, 0x4d, 0x94, 0x04, 0x24, 0xd1, - 0x67, 0x3e, 0x34, 0x93, 0xd0, 0xe3, 0x70, 0xaa, 0x51, 0x5f, 0xdd, 0xa8, 0xad, 0xa8, 0xeb, 0x8d, - 0xd5, 0xbe, 0x2b, 0xff, 0xa5, 0xe2, 0xdd, 0x7b, 0x8b, 0x59, 0x1e, 0x76, 0x8e, 0xc2, 0xde, 0x52, - 0x6a, 0x37, 0x37, 0x9b, 0x35, 0x29, 0xc2, 0xb0, 0xb7, 0x6c, 0x7c, 0xdb, 0x72, 0xd9, 0x83, 0xb2, - 0x4f, 0xc2, 0xe9, 0x21, 0xd8, 0x5e, 0xf0, 0x39, 0x7d, 0xf7, 0xde, 0x62, 0x7e, 0xcb, 0xc6, 0x4c, - 0xcb, 0x28, 0xc5, 0x12, 0xcc, 0x0d, 0x52, 0x6c, 0x6e, 0x6d, 0x36, 0xca, 0x6b, 0xd2, 0x62, 0x49, - 0xba, 0x7b, 0x6f, 0x31, 0x27, 0x4c, 0x06, 0xc1, 0x7f, 0xf7, 0xa3, 0xcf, 0x6f, 0x4e, 0x87, 0xb2, - 0xc6, 0x2c, 0xae, 0xeb, 0x6a, 0xb6, 0xd6, 0x39, 0x6e, 0xf8, 0x39, 0xe6, 0x30, 0x82, 0xfc, 0x53, - 0x51, 0x28, 0x7a, 0xc1, 0xcd, 0x16, 0xad, 0x01, 0x3d, 0x1d, 0xcc, 0xf8, 0x65, 0x47, 0xae, 0x1d, - 0x0c, 0x5b, 0x24, 0x04, 0xdf, 0x0b, 0x69, 0xe1, 0x24, 0xf3, 0x49, 0xb5, 0x38, 0x64, 0x7d, 0xe3, - 0x18, 0x9c, 0xd4, 0xa3, 0x40, 0x2f, 0x42, 0xc6, 0x9b, 0x62, 0xde, 0xa3, 0x6b, 0xa3, 0xe7, 0x24, - 0xa7, 0xf7, 0x69, 0xd0, 0xf3, 0x7e, 0x18, 0x17, 0x1f, 0x15, 0x18, 0xde, 0x64, 0x08, 0x9c, 0xd8, - 0x0b, 0xe1, 0x9e, 0x84, 0xb8, 0xb6, 0xa3, 0x1b, 0xdc, 0x00, 0x3f, 0x30, 0x48, 0x57, 0xae, 0x54, - 0xeb, 0x9c, 0x88, 0x62, 0xca, 0x75, 0x9e, 0x4c, 0xe1, 0xf2, 0xa2, 0x4f, 0xdc, 0x1c, 0xa8, 0x2c, - 0x16, 0x66, 0xde, 0x45, 0xba, 0xa3, 0x1d, 0x54, 0x68, 0x38, 0x7c, 0x0a, 0x52, 0xa4, 0x70, 0x8f, - 0x3f, 0xa2, 0x10, 0x53, 0x92, 0x1d, 0xed, 0x60, 0x55, 0x73, 0x6e, 0xc4, 0xd3, 0x31, 0x29, 0x2e, - 0xff, 0x18, 0xf1, 0x54, 0x42, 0x52, 0x41, 0x8f, 0x01, 0x22, 0x14, 0xda, 0x1e, 0x56, 0xc9, 0xd4, - 0xa5, 0xe2, 0x15, 0x7c, 0x8b, 0x1d, 0xed, 0xa0, 0xbc, 0x87, 0x37, 0x7a, 0x1d, 0xda, 0x00, 0x07, - 0xad, 0x83, 0x24, 0x90, 0xc5, 0xc8, 0x72, 0xf1, 0x9f, 0x1e, 0x7c, 0xb4, 0x95, 0x23, 0xb0, 0x05, - 0xe0, 0x63, 0x64, 0x01, 0x28, 0x30, 0x7e, 0xde, 0xf1, 0x93, 0x50, 0x57, 0x62, 0xe1, 0xae, 0xc8, - 0x2f, 0x42, 0xb1, 0x6f, 0x04, 0x90, 0x0c, 0x79, 0x9e, 0xb1, 0xa2, 0x5b, 0xfb, 0x2c, 0xc2, 0xc9, - 0x28, 0x59, 0x96, 0x99, 0xa2, 0x47, 0x1d, 0x96, 0xd3, 0x3f, 0xf7, 0xc9, 0x85, 0x08, 0xdd, 0xf6, - 0x79, 0x0c, 0xf2, 0xa1, 0x31, 0x10, 0x59, 0xe4, 0x88, 0x9f, 0x45, 0xf6, 0x91, 0x5f, 0x83, 0x1c, - 0x31, 0x40, 0xb8, 0xc5, 0x71, 0x1f, 0x81, 0x22, 0x33, 0x90, 0xfd, 0xb2, 0x66, 0x0e, 0xcf, 0xba, - 0x10, 0xb8, 0x2c, 0x3c, 0xa0, 0xb0, 0xd8, 0xb3, 0x02, 0x6b, 0x55, 0x73, 0xe4, 0x4d, 0x00, 0x7f, - 0x50, 0x51, 0x19, 0x1e, 0x24, 0xc6, 0x23, 0x78, 0x14, 0x95, 0x3f, 0xb7, 0x15, 0xf2, 0x18, 0x4b, - 0x04, 0xc9, 0x3f, 0x6e, 0xca, 0x1e, 0xdd, 0xba, 0x4e, 0x31, 0x2a, 0x2f, 0x7f, 0xfa, 0xad, 0xf9, - 0xc8, 0xbb, 0x63, 0x0b, 0xfe, 0xe3, 0xab, 0x70, 0x26, 0x50, 0x48, 0x14, 0x30, 0x94, 0x88, 0x2a, - 0x06, 0xf4, 0x95, 0x14, 0x8e, 0x4b, 0x28, 0x1d, 0x99, 0xff, 0x2d, 0x1d, 0x6d, 0x76, 0xc6, 0x67, - 0x9b, 0xc6, 0xe7, 0xbb, 0x86, 0x27, 0xe5, 0xff, 0x71, 0x06, 0x52, 0x0a, 0xfe, 0x60, 0x0f, 0x3b, - 0x2e, 0xba, 0x04, 0x71, 0xac, 0xef, 0x5b, 0xc3, 0x72, 0xa0, 0xa4, 0x83, 0x4b, 0x1c, 0xaf, 0xa6, - 0xef, 0x5b, 0xd7, 0xa7, 0x14, 0x8a, 0x8b, 0x2e, 0x43, 0x62, 0xb7, 0xdd, 0xe3, 0xe9, 0xab, 0x3e, - 0x9b, 0x15, 0x24, 0xba, 0x46, 0x90, 0xae, 0x4f, 0x29, 0x0c, 0x9b, 0x54, 0x45, 0x5f, 0xdb, 0x8e, - 0x1d, 0x5d, 0x55, 0xdd, 0xdc, 0xa5, 0x55, 0x11, 0x5c, 0x54, 0x01, 0x30, 0x4c, 0xc3, 0x55, 0x69, - 0x6a, 0x87, 0x5b, 0x8d, 0xb3, 0xa3, 0x29, 0x0d, 0x97, 0x26, 0x83, 0xae, 0x4f, 0x29, 0x19, 0x43, - 0x7c, 0x90, 0xe6, 0x7e, 0xb0, 0x87, 0xed, 0x43, 0xee, 0xad, 0x8d, 0x6c, 0xee, 0xcb, 0x04, 0x89, - 0x34, 0x97, 0x62, 0x13, 0x23, 0xcb, 0x1e, 0xee, 0x73, 0x0f, 0xf8, 0x73, 0xb4, 0x0b, 0xa3, 0x28, - 0xe9, 0xeb, 0x7d, 0xcd, 0x83, 0xeb, 0x53, 0x4a, 0x4a, 0x67, 0x3f, 0xd1, 0x73, 0x9e, 0x0b, 0x96, - 0x1d, 0xf4, 0x7a, 0x42, 0xb4, 0x2c, 0xed, 0x33, 0x25, 0x5c, 0x31, 0xb4, 0x01, 0x85, 0xb6, 0xe1, - 0xb8, 0xaa, 0x63, 0x6a, 0x5d, 0x67, 0xdf, 0x72, 0x1d, 0x9a, 0x3f, 0xc9, 0x5e, 0x7a, 0x78, 0x14, - 0x87, 0x35, 0xc3, 0x71, 0x1b, 0x02, 0xf9, 0xfa, 0x94, 0x92, 0x6f, 0x07, 0x01, 0x84, 0x9f, 0xb5, - 0xbb, 0x8b, 0x6d, 0x8f, 0x21, 0xcd, 0xb3, 0x1c, 0xc1, 0x6f, 0x93, 0x60, 0x0b, 0x7a, 0xc2, 0xcf, - 0x0a, 0x02, 0xd0, 0xd7, 0xc0, 0x4c, 0xdb, 0xd2, 0x5a, 0x1e, 0x3b, 0x55, 0xdf, 0xef, 0x99, 0xb7, - 0x68, 0x52, 0x26, 0x7b, 0xe9, 0xd1, 0x91, 0x8d, 0xb4, 0xb4, 0x96, 0x60, 0x51, 0x25, 0x04, 0xd7, - 0xa7, 0x94, 0xe9, 0x76, 0x3f, 0x10, 0x7d, 0x00, 0x66, 0xb5, 0x6e, 0xb7, 0x7d, 0xd8, 0xcf, 0xbd, - 0x48, 0xb9, 0x5f, 0x18, 0xc5, 0xbd, 0x4c, 0x68, 0xfa, 0xd9, 0x23, 0x6d, 0x00, 0x8a, 0x9a, 0x20, - 0x75, 0x6d, 0x4c, 0x6f, 0x73, 0x75, 0xb9, 0x97, 0x41, 0xdf, 0xba, 0xca, 0x5e, 0x3a, 0x37, 0x8a, - 0xf7, 0x16, 0xc3, 0x17, 0x4e, 0xc9, 0xf5, 0x29, 0xa5, 0xd8, 0x0d, 0x83, 0x18, 0x57, 0x4b, 0xc7, - 0xf4, 0x29, 0x3e, 0xce, 0x75, 0x7a, 0x1c, 0x57, 0x8a, 0x1f, 0xe6, 0x1a, 0x02, 0xa1, 0x1a, 0x64, - 0x59, 0x28, 0xaa, 0x12, 0x63, 0x48, 0x5f, 0xc8, 0xca, 0x5e, 0x92, 0x47, 0xce, 0x50, 0x8a, 0x7a, - 0xd3, 0x72, 0xf1, 0xf5, 0x29, 0x05, 0xb0, 0xf7, 0x85, 0x34, 0x38, 0x41, 0x1f, 0x0b, 0x3b, 0x54, - 0xc3, 0x86, 0x77, 0x6e, 0x86, 0x32, 0x7c, 0x6c, 0x14, 0xc3, 0x9b, 0x94, 0xe8, 0x66, 0xd0, 0x0e, - 0x5f, 0x9f, 0x52, 0x66, 0x6e, 0x0f, 0x82, 0x89, 0x8a, 0xed, 0x1a, 0xa6, 0xd6, 0x36, 0xde, 0xc0, - 0x6c, 0x09, 0xa5, 0xcf, 0x64, 0x1e, 0xa1, 0x62, 0xd7, 0x38, 0x36, 0x5d, 0x58, 0x89, 0x8a, 0xed, - 0x06, 0x01, 0x95, 0x14, 0x3f, 0x87, 0xea, 0x3d, 0xfb, 0x96, 0x92, 0xd2, 0xec, 0xa9, 0xb7, 0x1b, - 0xf1, 0x34, 0x48, 0x59, 0xf9, 0x1c, 0x64, 0x03, 0x86, 0x09, 0xcd, 0x41, 0x8a, 0x9f, 0xd4, 0x11, - 0x27, 0x5a, 0xf9, 0xa7, 0x5c, 0x80, 0x5c, 0xd0, 0x18, 0xc9, 0x1f, 0x8d, 0x78, 0x94, 0xf4, 0xbd, - 0x8b, 0xb9, 0x70, 0x46, 0x3a, 0xe3, 0x7b, 0x2a, 0x0f, 0x89, 0xa5, 0x4d, 0x94, 0xb3, 0xed, 0xd7, - 0x1c, 0x05, 0xf2, 0x95, 0x15, 0x2d, 0x40, 0xb6, 0x7b, 0xa9, 0xeb, 0xa1, 0xc4, 0x28, 0x0a, 0x74, - 0x2f, 0x75, 0x05, 0xc2, 0x59, 0xc8, 0x91, 0x7e, 0xab, 0x41, 0x7f, 0x29, 0xa3, 0x64, 0x09, 0x8c, - 0xa3, 0xc8, 0xff, 0x2a, 0x0a, 0x52, 0xbf, 0x01, 0xf3, 0x52, 0xd5, 0x91, 0x63, 0xa7, 0xaa, 0x4f, - 0xf7, 0x27, 0xc9, 0xfd, 0xbc, 0xf8, 0x1a, 0x48, 0x7e, 0x7a, 0x97, 0x2d, 0x35, 0xa3, 0xfd, 0xbf, - 0x3e, 0x47, 0x55, 0x29, 0xea, 0x7d, 0x9e, 0xeb, 0xb5, 0xd0, 0x66, 0xa5, 0xf8, 0x73, 0x14, 0xfd, - 0x03, 0xee, 0x39, 0x31, 0xdb, 0xdd, 0x96, 0xe6, 0x62, 0x91, 0x1f, 0x0b, 0xec, 0x5b, 0x3e, 0x02, - 0x45, 0xad, 0xdb, 0x55, 0x1d, 0x57, 0x73, 0x31, 0xf7, 0x35, 0x58, 0xe6, 0x21, 0xaf, 0x75, 0xbb, - 0x0d, 0x02, 0x65, 0xbe, 0xc6, 0xc3, 0x50, 0x20, 0x36, 0xdd, 0xd0, 0xda, 0xc2, 0x55, 0x48, 0x32, - 0x97, 0x84, 0x43, 0x99, 0x77, 0x20, 0xb7, 0xbc, 0x11, 0xa7, 0xf6, 0xdc, 0x8b, 0xa9, 0x22, 0x81, - 0x98, 0x0a, 0xf1, 0x77, 0x48, 0x98, 0x7c, 0xc4, 0xdb, 0x2d, 0xc3, 0x37, 0x0d, 0x66, 0x69, 0xfc, - 0x75, 0x9b, 0x25, 0x4b, 0xd2, 0x0a, 0xfb, 0x90, 0x15, 0x28, 0x84, 0x6d, 0x3f, 0x2a, 0x40, 0xd4, - 0x3d, 0xe0, 0xb5, 0x44, 0xdd, 0x03, 0xe2, 0xe9, 0x7a, 0xaf, 0xf7, 0x16, 0x86, 0xac, 0x76, 0x9c, - 0xce, 0xcf, 0x75, 0xc8, 0x45, 0xc8, 0x87, 0xd6, 0x04, 0xf9, 0x24, 0xcc, 0x0e, 0x33, 0xf1, 0xf2, - 0xbe, 0x07, 0x0f, 0x99, 0x6a, 0x74, 0x19, 0xd2, 0x9e, 0x8d, 0x1f, 0x12, 0x1d, 0xd3, 0x6a, 0x05, - 0xb2, 0xe2, 0xa1, 0x86, 0xd2, 0xf9, 0xd1, 0x50, 0x3a, 0x5f, 0xfe, 0x7a, 0x98, 0x1b, 0x65, 0xbf, - 0xfb, 0x92, 0x7c, 0x71, 0x4f, 0x60, 0x27, 0x21, 0xc9, 0x9f, 0xc9, 0x8c, 0xd2, 0x0d, 0x2c, 0xfe, - 0x45, 0x04, 0xc9, 0x6c, 0x79, 0x8c, 0xed, 0x6b, 0xd1, 0x0f, 0x59, 0x85, 0xd3, 0x23, 0x6d, 0xf8, - 0xe8, 0xad, 0x30, 0xc6, 0x88, 0x6f, 0x85, 0xe9, 0xa2, 0x39, 0x0e, 0xed, 0xab, 0x38, 0xc8, 0xc2, - 0xbe, 0xe4, 0x8f, 0xc5, 0xe0, 0xe4, 0x70, 0x4b, 0x8e, 0x16, 0x21, 0x47, 0xfc, 0x56, 0x37, 0xec, - 0xe2, 0x42, 0x47, 0x3b, 0x68, 0x72, 0xff, 0x96, 0x6f, 0x25, 0x44, 0xbd, 0xad, 0x04, 0xb4, 0x0d, - 0xd3, 0x6d, 0x4b, 0xd7, 0xda, 0x6a, 0x60, 0x2b, 0x87, 0x4f, 0xa2, 0x87, 0x06, 0x84, 0x1d, 0x4e, - 0x19, 0x12, 0x83, 0xc3, 0xf5, 0xbf, 0x48, 0x79, 0xac, 0x79, 0xbb, 0x3e, 0x68, 0x05, 0xb2, 0x1d, - 0xc3, 0xd9, 0xc1, 0xfb, 0xda, 0x6d, 0xc3, 0xb2, 0xf9, 0x6c, 0x1a, 0x54, 0x9a, 0x75, 0x1f, 0x47, - 0xec, 0x30, 0x05, 0xc8, 0x02, 0x43, 0x92, 0x18, 0xba, 0xf1, 0x95, 0x3c, 0xb6, 0x35, 0x19, 0xb5, - 0x87, 0x94, 0x1a, 0xb9, 0x87, 0x34, 0x6c, 0xc3, 0x26, 0x3d, 0x7c, 0xc3, 0xe6, 0x23, 0xc1, 0xa1, - 0x09, 0xaf, 0x7d, 0x03, 0x7b, 0x38, 0xa8, 0x01, 0xb3, 0x9c, 0xbe, 0x15, 0x92, 0xfd, 0x90, 0xa3, - 0x0e, 0x6c, 0x7e, 0xf5, 0xcb, 0x1c, 0x09, 0xf2, 0xd1, 0x62, 0x8f, 0xdd, 0x9f, 0xd8, 0xc5, 0x26, - 0x6a, 0x3c, 0xb0, 0x89, 0xfa, 0xff, 0xd8, 0x50, 0x7c, 0x38, 0x06, 0xd3, 0x03, 0x8e, 0xc4, 0xd0, - 0xdd, 0xe1, 0x51, 0x19, 0x59, 0xd1, 0xb1, 0xd8, 0xb1, 0x3b, 0xc6, 0xc7, 0x3a, 0x3e, 0x7e, 0xac, - 0x13, 0xef, 0xe0, 0x58, 0x27, 0xef, 0x6f, 0xac, 0xdf, 0xd5, 0x51, 0xf8, 0x44, 0x04, 0x4a, 0xa3, - 0xbd, 0xaf, 0xa1, 0xc3, 0x71, 0xac, 0x0d, 0x84, 0x51, 0x6b, 0xdc, 0xc3, 0x50, 0xe8, 0xf3, 0x0d, - 0x99, 0x2a, 0xe7, 0x43, 0x51, 0xb8, 0xfc, 0x8d, 0x31, 0x6f, 0xe1, 0x09, 0x39, 0x70, 0x43, 0x66, - 0xeb, 0xcb, 0x30, 0xd3, 0xc2, 0xba, 0xd1, 0xba, 0xdf, 0xc9, 0x3a, 0xcd, 0xa9, 0xff, 0xff, 0x5c, - 0x1d, 0xd4, 0x92, 0xef, 0x02, 0x48, 0x2b, 0xd8, 0xe9, 0x12, 0x7f, 0x0c, 0x55, 0x20, 0x83, 0x0f, - 0x74, 0xdc, 0x75, 0xfd, 0x43, 0x15, 0xc3, 0x42, 0x04, 0x86, 0x5d, 0x13, 0x98, 0x24, 0x40, 0xf6, - 0xc8, 0xd0, 0xd3, 0x3c, 0x07, 0x30, 0x3a, 0x9c, 0xe7, 0xe4, 0xc1, 0x24, 0xc0, 0x15, 0x91, 0x04, - 0x88, 0x8d, 0x8c, 0x6f, 0x19, 0x55, 0x5f, 0x16, 0xe0, 0x69, 0x9e, 0x05, 0x88, 0x8f, 0xa9, 0x2c, - 0x94, 0x06, 0xa8, 0x86, 0xd2, 0x00, 0xc9, 0x31, 0xdd, 0x1c, 0x91, 0x07, 0xb8, 0x22, 0xf2, 0x00, - 0xa9, 0x31, 0x2d, 0xee, 0x4b, 0x04, 0xbc, 0x10, 0x48, 0x04, 0x64, 0x06, 0xb3, 0xad, 0x21, 0xd2, - 0x21, 0x99, 0x80, 0xe7, 0xbd, 0x4c, 0x40, 0x6e, 0x64, 0x16, 0x81, 0x13, 0xf7, 0xa7, 0x02, 0x36, - 0x07, 0x52, 0x01, 0x79, 0xfe, 0x47, 0x97, 0x46, 0xb1, 0x18, 0x93, 0x0b, 0xd8, 0x1c, 0xc8, 0x05, - 0x14, 0xc6, 0x30, 0x1c, 0x93, 0x0c, 0xf8, 0xda, 0xe1, 0xc9, 0x80, 0xd1, 0xe1, 0x3a, 0x6f, 0xe6, - 0x64, 0xd9, 0x00, 0x75, 0x44, 0x36, 0x40, 0x1a, 0x19, 0xb9, 0x32, 0xf6, 0x13, 0xa7, 0x03, 0xb6, - 0x87, 0xa4, 0x03, 0x58, 0xe0, 0x7e, 0x7e, 0x24, 0xf3, 0x09, 0xf2, 0x01, 0xdb, 0x43, 0xf2, 0x01, - 0x68, 0x2c, 0xdb, 0xb1, 0x09, 0x81, 0x6b, 0xe1, 0x84, 0xc0, 0xcc, 0x08, 0xaf, 0xd3, 0x9f, 0xed, - 0x23, 0x32, 0x02, 0x3b, 0xa3, 0x32, 0x02, 0x2c, 0x6a, 0x7f, 0x7c, 0x24, 0xc7, 0x63, 0xa4, 0x04, - 0x36, 0x07, 0x52, 0x02, 0x27, 0xc6, 0x68, 0xda, 0xe4, 0x39, 0x01, 0xf6, 0x08, 0x3c, 0x7b, 0xfe, - 0x1d, 0xa4, 0xec, 0x8d, 0x78, 0x3a, 0x2b, 0xe5, 0xe4, 0x47, 0x89, 0x07, 0xd3, 0x67, 0xe7, 0x48, - 0xac, 0x80, 0x6d, 0xdb, 0xb2, 0xc5, 0x1d, 0x0b, 0xfa, 0x21, 0x9f, 0x27, 0x31, 0xa2, 0x6f, 0xd3, - 0x8e, 0xc8, 0x1f, 0xd0, 0x98, 0x2c, 0x60, 0xc7, 0xe4, 0x9f, 0x8b, 0xf8, 0xb4, 0x34, 0x83, 0x10, - 0x8c, 0x2f, 0x33, 0x3c, 0xbe, 0x0c, 0x64, 0x15, 0xa2, 0xe1, 0xac, 0xc2, 0x02, 0x64, 0x49, 0xac, - 0xd5, 0x97, 0x30, 0xd0, 0xba, 0x5e, 0xc2, 0x40, 0x1c, 0xa0, 0x62, 0xb9, 0x07, 0xbe, 0x2c, 0xb1, - 0xdd, 0xc4, 0xa2, 0x77, 0x98, 0x8c, 0x85, 0xba, 0xe8, 0x09, 0x98, 0x09, 0xe0, 0x7a, 0x31, 0x1c, - 0x8b, 0x9e, 0x25, 0x0f, 0xbb, 0xcc, 0x83, 0xb9, 0x7f, 0x16, 0xf1, 0x25, 0xe4, 0x67, 0x1a, 0x86, - 0x25, 0x05, 0x22, 0xef, 0x50, 0x52, 0x20, 0x7a, 0xdf, 0x49, 0x81, 0x60, 0x4c, 0x1a, 0x0b, 0xc7, - 0xa4, 0xff, 0x33, 0xe2, 0x8f, 0x89, 0x17, 0xe2, 0xeb, 0x56, 0x0b, 0xf3, 0x28, 0x91, 0xfe, 0x26, - 0x2e, 0x49, 0xdb, 0xda, 0xe3, 0xb1, 0x20, 0xf9, 0x49, 0xb0, 0xbc, 0x85, 0x27, 0xc3, 0xd7, 0x15, - 0x2f, 0xc0, 0x4c, 0x04, 0xef, 0x71, 0xf0, 0xcb, 0x0d, 0x49, 0xff, 0x72, 0x83, 0x77, 0x31, 0x3a, - 0x15, 0xb8, 0x18, 0x8d, 0x9e, 0x83, 0x0c, 0x4d, 0xf6, 0xab, 0x56, 0x57, 0xfc, 0xc5, 0xb2, 0x33, - 0xa3, 0x2f, 0x36, 0x38, 0xf4, 0xc8, 0x35, 0xbb, 0x0c, 0xe1, 0x7b, 0x1c, 0x99, 0x90, 0xc7, 0xf1, - 0x00, 0x64, 0x48, 0xeb, 0xd9, 0x5f, 0xde, 0x00, 0x7e, 0xab, 0x5e, 0x00, 0xe4, 0x1f, 0x8f, 0x42, - 0xb1, 0x6f, 0xa1, 0x19, 0xda, 0xf7, 0x61, 0xdb, 0xc8, 0x93, 0xc9, 0x63, 0x1e, 0x60, 0x4f, 0x73, - 0xd4, 0x3b, 0x9a, 0xe9, 0xe2, 0x16, 0x17, 0x4a, 0x00, 0x82, 0x4a, 0x90, 0x26, 0x5f, 0x3d, 0x07, - 0xb7, 0x78, 0xf6, 0xc5, 0xfb, 0x46, 0xd7, 0x21, 0x89, 0x6f, 0xd3, 0x97, 0x67, 0xd9, 0xfb, 0xcd, - 0x27, 0x07, 0xc3, 0x61, 0x52, 0x5c, 0x99, 0x23, 0x83, 0xfd, 0x85, 0x37, 0x17, 0x24, 0x86, 0xfd, - 0xb8, 0x77, 0x99, 0x4d, 0xe1, 0xf4, 0x61, 0x29, 0xa4, 0xfb, 0xa4, 0x40, 0xf3, 0x80, 0x39, 0x11, - 0xde, 0x13, 0x99, 0xb2, 0x33, 0xde, 0x4a, 0xbe, 0x83, 0x3b, 0x5d, 0xcb, 0x6a, 0xab, 0x6c, 0x8e, - 0x97, 0xa1, 0x10, 0x5e, 0x57, 0xd9, 0x5f, 0xc5, 0x72, 0x35, 0xc3, 0x54, 0x43, 0x4e, 0x70, 0x8e, - 0x01, 0xd9, 0x9c, 0xba, 0x11, 0x4f, 0x47, 0xa4, 0xe8, 0x8d, 0x78, 0x3a, 0x2a, 0xc5, 0xe4, 0x2d, - 0x38, 0x31, 0x74, 0x5d, 0x45, 0xcf, 0x42, 0xc6, 0x5f, 0x92, 0xd9, 0x31, 0xfd, 0x23, 0x32, 0x2d, - 0x3e, 0xae, 0xfc, 0x8b, 0x11, 0x9f, 0x65, 0x38, 0x77, 0x53, 0x83, 0x24, 0x3b, 0x33, 0xc9, 0xcf, - 0xc7, 0x3c, 0x31, 0xd9, 0x8a, 0xbc, 0xc4, 0x0e, 0x54, 0x2a, 0x9c, 0x58, 0xfe, 0x00, 0x24, 0x19, - 0x04, 0x65, 0x21, 0xe5, 0xbf, 0x71, 0x0d, 0x90, 0x2c, 0x57, 0xab, 0xb5, 0x2d, 0xf1, 0x60, 0x6d, - 0x65, 0x53, 0x69, 0x4a, 0x51, 0x02, 0x56, 0x6a, 0x37, 0x6a, 0xd5, 0xa6, 0x14, 0x43, 0xd3, 0x90, - 0x67, 0xbf, 0xd5, 0x6b, 0x9b, 0xca, 0x7a, 0xb9, 0x29, 0xc5, 0x03, 0xa0, 0x46, 0x6d, 0x63, 0xa5, - 0xa6, 0x48, 0x09, 0xf9, 0x29, 0x38, 0x3d, 0x72, 0x0d, 0xf7, 0x13, 0x33, 0x91, 0x40, 0x62, 0x46, - 0xfe, 0x58, 0x94, 0x04, 0x35, 0xa3, 0x16, 0x66, 0x74, 0xa3, 0xaf, 0xe3, 0x97, 0x8e, 0xb1, 0xaa, - 0xf7, 0xf5, 0x9e, 0xc4, 0x31, 0x36, 0xde, 0xc5, 0xae, 0xbe, 0xcf, 0x1c, 0x05, 0x66, 0x81, 0xf2, - 0x4a, 0x9e, 0x43, 0x29, 0x91, 0xc3, 0xd0, 0x5e, 0xc7, 0xba, 0xab, 0x32, 0x25, 0x72, 0xf8, 0x1f, - 0xf1, 0xcd, 0x33, 0x68, 0x83, 0x01, 0xe5, 0xaf, 0x3f, 0x96, 0x2c, 0x33, 0x90, 0x50, 0x6a, 0x4d, - 0xe5, 0x55, 0x29, 0x86, 0x10, 0x14, 0xe8, 0x4f, 0xb5, 0xb1, 0x51, 0xde, 0x6a, 0x5c, 0xdf, 0x24, - 0xb2, 0x9c, 0x81, 0xa2, 0x90, 0xa5, 0x00, 0x26, 0xe4, 0xc7, 0xe0, 0xd4, 0x08, 0xaf, 0x62, 0xc8, - 0x21, 0xd6, 0x4f, 0x45, 0x82, 0xd8, 0x61, 0xcf, 0x60, 0x13, 0x92, 0x8e, 0xab, 0xb9, 0x3d, 0x87, - 0x0b, 0xf1, 0xd9, 0x49, 0xdd, 0x8c, 0x25, 0xf1, 0xa3, 0x41, 0xc9, 0x15, 0xce, 0x46, 0xbe, 0x0c, - 0x85, 0x70, 0xc9, 0x68, 0x19, 0xf8, 0x4a, 0x14, 0x95, 0xaf, 0x02, 0x1a, 0xf4, 0x3e, 0x86, 0x84, - 0x97, 0x91, 0x61, 0xe1, 0xe5, 0x0f, 0x47, 0xe0, 0xcc, 0x11, 0x9e, 0x06, 0x7a, 0xb9, 0xaf, 0x93, - 0xcf, 0x1f, 0xc7, 0x4f, 0x59, 0x62, 0xb0, 0xbe, 0x6e, 0x3e, 0x0d, 0xb9, 0x20, 0x7c, 0xb2, 0x4e, - 0x7e, 0x21, 0xea, 0x4f, 0xe2, 0x70, 0x1c, 0xec, 0x9b, 0xc0, 0xc8, 0x97, 0x69, 0x02, 0xdf, 0x0b, - 0xe0, 0x1e, 0x88, 0x53, 0xd4, 0x7c, 0x1d, 0x7d, 0x70, 0x48, 0x7e, 0x11, 0xeb, 0xcd, 0x03, 0x3e, - 0x09, 0x32, 0x2e, 0xff, 0xe5, 0xa0, 0x46, 0x30, 0x29, 0xd0, 0xa3, 0x6b, 0xac, 0xe3, 0xfd, 0x09, - 0xdf, 0xc9, 0x16, 0x63, 0x3f, 0x79, 0xc0, 0xc0, 0x0e, 0x7a, 0x15, 0x4e, 0xf5, 0x39, 0x0a, 0x1e, - 0xeb, 0xf8, 0xa4, 0xfe, 0xc2, 0x89, 0xb0, 0xbf, 0x20, 0x58, 0x07, 0x57, 0xfb, 0x44, 0x78, 0xb5, - 0x7f, 0x15, 0xc0, 0x4f, 0x0e, 0xf8, 0xc7, 0xfe, 0x22, 0xc1, 0x63, 0x7f, 0x97, 0x21, 0x41, 0x34, - 0x49, 0xc8, 0x69, 0xd0, 0x14, 0x13, 0x4d, 0x08, 0x24, 0x17, 0x18, 0xb6, 0x6c, 0x00, 0x1a, 0x4c, - 0xd0, 0x8e, 0xa8, 0xe2, 0x85, 0x70, 0x15, 0x67, 0x47, 0xa6, 0x7a, 0x87, 0x57, 0xf5, 0x06, 0x24, - 0xe8, 0xc8, 0x0f, 0xbd, 0x4b, 0xf9, 0x75, 0x00, 0x9a, 0xeb, 0xda, 0xc6, 0x4e, 0xcf, 0xaf, 0x60, - 0x61, 0xb8, 0xe6, 0x94, 0x05, 0x5e, 0xe5, 0x01, 0xae, 0x42, 0xb3, 0x3e, 0x69, 0x40, 0x8d, 0x02, - 0x0c, 0xe5, 0x0d, 0x28, 0x84, 0x69, 0x87, 0xdf, 0x0d, 0xf5, 0x1f, 0x7e, 0xc9, 0x08, 0xff, 0xc6, - 0xf3, 0x8e, 0xf8, 0x63, 0x4c, 0xf4, 0x43, 0xfe, 0x50, 0x14, 0x72, 0x41, 0xc5, 0xfb, 0x8b, 0xe7, - 0x82, 0xc8, 0xdf, 0x14, 0x81, 0xb4, 0xd7, 0xfd, 0x23, 0x0e, 0x3b, 0xfb, 0x77, 0x84, 0xbd, 0xcd, - 0x0b, 0xb6, 0x4d, 0x14, 0xf3, 0xb6, 0x89, 0xae, 0x7a, 0xcb, 0xdf, 0xa8, 0x84, 0x48, 0x50, 0xd6, - 0xe2, 0xc0, 0x21, 0x5f, 0xed, 0xaf, 0x4e, 0x76, 0x15, 0x6f, 0x16, 0x12, 0xc1, 0x6b, 0x74, 0xec, - 0x43, 0x6e, 0x05, 0x4e, 0x18, 0xb1, 0x89, 0x18, 0xbc, 0xb3, 0x17, 0x39, 0xf6, 0x9d, 0x3d, 0xaf, - 0x96, 0x68, 0xb0, 0x96, 0xef, 0x8c, 0x40, 0x5a, 0xcc, 0x09, 0xf4, 0xbe, 0xe0, 0xc9, 0x33, 0xb1, - 0xb5, 0x39, 0xd2, 0x1e, 0x71, 0xfe, 0x81, 0x83, 0x67, 0x03, 0x07, 0xae, 0x63, 0xc7, 0x3d, 0x70, - 0xcd, 0x3d, 0xbb, 0x3f, 0x8e, 0x80, 0xd4, 0x3f, 0x63, 0xbf, 0xec, 0xd6, 0x0d, 0x2e, 0x73, 0xb1, - 0x21, 0xcb, 0xdc, 0xa8, 0x53, 0xd4, 0xf1, 0x51, 0xa7, 0xa8, 0x07, 0x7b, 0x9d, 0xb8, 0xcf, 0x5e, - 0x7f, 0x38, 0x0a, 0xd9, 0x40, 0x7a, 0x14, 0x3d, 0x13, 0x3a, 0x91, 0xbd, 0x78, 0x54, 0x2a, 0x35, - 0x70, 0x24, 0x3b, 0x24, 0xa6, 0xe8, 0xf1, 0xc5, 0xf4, 0xce, 0xdf, 0xce, 0x1a, 0x7e, 0x81, 0x35, - 0x31, 0xe2, 0x02, 0xeb, 0x5f, 0x8d, 0x40, 0xda, 0x73, 0xbb, 0x8f, 0xbb, 0x89, 0x79, 0x12, 0x92, - 0xdc, 0xb3, 0x64, 0xbb, 0x98, 0xfc, 0x6b, 0x68, 0x5a, 0xb9, 0x04, 0x69, 0xf1, 0xf7, 0x14, 0xf9, - 0xaa, 0xe6, 0x7d, 0x5f, 0x78, 0x1e, 0xb2, 0x81, 0x0d, 0x60, 0x62, 0x1a, 0x37, 0x6a, 0xef, 0x97, - 0xa6, 0x4a, 0xa9, 0xbb, 0xf7, 0x16, 0x63, 0x1b, 0xf8, 0x0e, 0x99, 0xcd, 0x4a, 0xad, 0x7a, 0xbd, - 0x56, 0x7d, 0x49, 0x8a, 0x94, 0xb2, 0x77, 0xef, 0x2d, 0xa6, 0x14, 0x4c, 0x33, 0x8a, 0x17, 0x5e, - 0x82, 0x62, 0xdf, 0xc0, 0x84, 0xdd, 0x16, 0x04, 0x85, 0x95, 0xed, 0xad, 0xb5, 0x7a, 0xb5, 0xdc, - 0xac, 0xa9, 0xec, 0xdc, 0x2e, 0x3a, 0x05, 0x33, 0x6b, 0xf5, 0xd5, 0xeb, 0x4d, 0xb5, 0xba, 0x56, - 0xaf, 0x6d, 0x34, 0xd5, 0x72, 0xb3, 0x59, 0xae, 0xbe, 0x24, 0x45, 0x2f, 0xdd, 0xcb, 0x42, 0xbc, - 0x5c, 0xa9, 0xd6, 0x51, 0x15, 0xe2, 0x34, 0x15, 0x72, 0xe4, 0x09, 0xb0, 0xd2, 0xd1, 0xb9, 0x61, - 0x74, 0x0d, 0x12, 0x34, 0x4b, 0x82, 0x8e, 0x3e, 0x12, 0x56, 0x1a, 0x93, 0x2c, 0x26, 0x8d, 0xa1, - 0x33, 0xf2, 0xc8, 0x33, 0x62, 0xa5, 0xa3, 0x73, 0xc7, 0x68, 0x0d, 0x52, 0x22, 0x48, 0x1e, 0x77, - 0x70, 0xab, 0x34, 0x36, 0xa1, 0x4b, 0xba, 0xc6, 0x92, 0x0d, 0x47, 0x1f, 0x1f, 0x2b, 0x8d, 0xc9, - 0x2a, 0xa3, 0xba, 0x77, 0x9f, 0x69, 0xcc, 0x89, 0xb0, 0xd2, 0xb8, 0x3c, 0x31, 0x52, 0x20, 0xe3, - 0xa7, 0x71, 0xc6, 0x1f, 0x8a, 0x2b, 0x4d, 0x90, 0x30, 0x47, 0x1f, 0x80, 0x7c, 0x38, 0xd4, 0x9d, - 0xec, 0xd4, 0x59, 0x69, 0xc2, 0x8c, 0x34, 0xe1, 0x1f, 0x8e, 0x7b, 0x27, 0x3b, 0x85, 0x56, 0x9a, - 0x30, 0x41, 0x8d, 0x5e, 0x87, 0xe9, 0xc1, 0xb8, 0x74, 0xf2, 0x43, 0x69, 0xa5, 0x63, 0xa4, 0xac, - 0x51, 0x07, 0xd0, 0x90, 0x78, 0xf6, 0x18, 0x67, 0xd4, 0x4a, 0xc7, 0xc9, 0x60, 0xa3, 0x16, 0x14, - 0xfb, 0x83, 0xc4, 0x49, 0xcf, 0xac, 0x95, 0x26, 0xce, 0x66, 0xb3, 0x5a, 0xc2, 0xc1, 0xe5, 0xa4, - 0x67, 0xd8, 0x4a, 0x13, 0x27, 0xb7, 0xd1, 0x36, 0x40, 0x20, 0x3e, 0x9c, 0xe0, 0x4c, 0x5b, 0x69, - 0x92, 0x34, 0x37, 0xea, 0xc2, 0xcc, 0xb0, 0xc0, 0xf1, 0x38, 0x47, 0xdc, 0x4a, 0xc7, 0xca, 0x7e, - 0x13, 0x7d, 0x0e, 0x87, 0x80, 0x93, 0x1d, 0x79, 0x2b, 0x4d, 0x98, 0x06, 0xaf, 0x94, 0x47, 0x9e, - 0x73, 0x3e, 0x77, 0xe4, 0x39, 0x67, 0xff, 0xe4, 0xb2, 0x77, 0xb6, 0xf9, 0xdf, 0x5e, 0x84, 0xf7, - 0xf0, 0x17, 0x74, 0x1c, 0x57, 0xbb, 0x65, 0x98, 0x7b, 0xde, 0x33, 0x4b, 0xfc, 0x9b, 0x1f, 0x72, - 0x3e, 0xc9, 0x5f, 0xe9, 0x11, 0xd0, 0x31, 0x8f, 0x2d, 0x8d, 0x7c, 0x81, 0x72, 0xdc, 0x7d, 0x88, - 0xf1, 0xc7, 0x97, 0x8f, 0x78, 0xc8, 0x69, 0xcc, 0x73, 0x51, 0x43, 0x1e, 0x7a, 0x2a, 0x1d, 0xf9, - 0xc6, 0x40, 0xe9, 0xa8, 0x73, 0xdf, 0xc4, 0x8b, 0x2d, 0x5c, 0x37, 0x1c, 0xd7, 0xb2, 0x0d, 0x5d, - 0x6b, 0xd3, 0xe5, 0xe5, 0xea, 0xa4, 0xb7, 0xb2, 0x2a, 0x19, 0xe2, 0xae, 0xf0, 0xb7, 0xa0, 0xf8, - 0x4d, 0xa1, 0x15, 0x48, 0xde, 0xd6, 0xda, 0xec, 0x4e, 0x54, 0xf0, 0x21, 0xb8, 0x7e, 0x99, 0x07, - 0xfc, 0xa8, 0x20, 0x17, 0x46, 0x2b, 0x7f, 0x37, 0xbd, 0x4f, 0xd2, 0xe9, 0x18, 0x0e, 0xd1, 0x45, - 0x85, 0x86, 0xd2, 0x37, 0x20, 0x6e, 0x6b, 0x2e, 0x0f, 0x30, 0x2b, 0x57, 0x8e, 0xfd, 0x2e, 0x13, - 0xab, 0x81, 0xf2, 0x40, 0x2f, 0x43, 0xba, 0xa3, 0x1d, 0xa8, 0x94, 0x5f, 0xf4, 0xcb, 0xe2, 0x97, - 0xea, 0x68, 0x07, 0xa4, 0x7d, 0xe8, 0x03, 0x50, 0x24, 0x2c, 0xf5, 0x7d, 0xcd, 0xdc, 0xc3, 0x8c, - 0x73, 0xec, 0xcb, 0xe2, 0x9c, 0xef, 0x68, 0x07, 0x55, 0xca, 0x8d, 0xf0, 0xe7, 0x4f, 0x5e, 0xfd, - 0x72, 0x84, 0x67, 0x0d, 0xa8, 0x60, 0x90, 0x06, 0x92, 0xee, 0x7d, 0xd1, 0x4a, 0xc5, 0x16, 0xc7, - 0xb9, 0x51, 0x72, 0xef, 0x13, 0x6b, 0x25, 0x4f, 0x9a, 0xf7, 0xd9, 0x37, 0x17, 0x22, 0xac, 0xd6, - 0xa2, 0x3e, 0x20, 0xf6, 0x2c, 0x4b, 0x86, 0xa8, 0xd4, 0x87, 0x8d, 0x8e, 0xf5, 0x61, 0xf3, 0xc2, - 0x87, 0x65, 0x0c, 0x81, 0x51, 0x93, 0x72, 0xde, 0x87, 0x4f, 0x47, 0x20, 0xbb, 0x12, 0x78, 0xd6, - 0x71, 0x0e, 0x52, 0x1d, 0xcb, 0x34, 0x6e, 0x61, 0xdb, 0xdb, 0xa3, 0x62, 0x9f, 0xc4, 0xcf, 0x64, - 0x7f, 0x1d, 0xd0, 0x3d, 0x14, 0xaf, 0x0b, 0x89, 0x6f, 0x42, 0x75, 0x07, 0xef, 0x38, 0x86, 0x90, - 0xb3, 0x22, 0x3e, 0xd1, 0xa3, 0x20, 0x39, 0x58, 0xef, 0xd9, 0x86, 0x7b, 0xa8, 0xea, 0x96, 0xe9, - 0x6a, 0xba, 0xcb, 0xe3, 0xf0, 0xa2, 0x80, 0x57, 0x19, 0x98, 0x30, 0x69, 0x61, 0x57, 0x33, 0xda, - 0xec, 0x64, 0x66, 0x46, 0x11, 0x9f, 0xbc, 0xa9, 0x77, 0x53, 0xc1, 0x38, 0xb4, 0x0a, 0x92, 0xd5, - 0xc5, 0x76, 0xe8, 0x40, 0x0a, 0xd3, 0xc6, 0xb9, 0x5f, 0xff, 0xcc, 0x13, 0xb3, 0x5c, 0xe0, 0xfc, - 0x30, 0x03, 0xfb, 0x2b, 0x06, 0x4a, 0x51, 0x50, 0x88, 0x93, 0x2a, 0xaf, 0x86, 0x76, 0xa5, 0x7a, - 0x3b, 0xfe, 0x33, 0x32, 0xb3, 0x03, 0x42, 0x2d, 0x9b, 0x87, 0x95, 0xb9, 0x5f, 0xf3, 0x59, 0xfb, - 0x71, 0xea, 0x4b, 0xf8, 0x30, 0xb8, 0x45, 0x45, 0xd9, 0x10, 0x17, 0xfe, 0x75, 0xcd, 0x68, 0x8b, - 0x3f, 0xa4, 0xaa, 0xf0, 0x2f, 0xb4, 0xec, 0xa5, 0x17, 0xe3, 0x34, 0x1e, 0x92, 0x47, 0xe9, 0x46, - 0xc5, 0x32, 0x5b, 0xe1, 0x3c, 0x22, 0xaa, 0x42, 0xd2, 0xb5, 0x6e, 0x61, 0x93, 0x0b, 0xe8, 0x78, - 0x4f, 0xab, 0x71, 0x52, 0xf4, 0xb5, 0x20, 0xb5, 0x70, 0x1b, 0xef, 0xb1, 0xfb, 0x92, 0xfb, 0x9a, - 0x8d, 0xd9, 0x6d, 0xfd, 0xfb, 0x7a, 0x5e, 0xad, 0xe8, 0xb1, 0x6a, 0x50, 0x4e, 0x68, 0x2b, 0xfc, - 0x70, 0x68, 0x8a, 0x6f, 0x1e, 0x8f, 0xe8, 0x63, 0x40, 0xf3, 0x82, 0x96, 0x27, 0xf4, 0xd0, 0xe8, - 0xa3, 0x20, 0xf5, 0xcc, 0x1d, 0xcb, 0xa4, 0x7f, 0x7f, 0x90, 0x47, 0x51, 0x69, 0xb6, 0x53, 0xe9, - 0xc1, 0xf9, 0x4e, 0xe5, 0x16, 0x14, 0x7c, 0x54, 0x3a, 0x43, 0x32, 0xc7, 0x9d, 0x21, 0x79, 0x8f, - 0x01, 0x41, 0x41, 0xeb, 0x00, 0xfe, 0x1c, 0xa4, 0x5b, 0x65, 0xd9, 0xd1, 0x23, 0xe6, 0xcf, 0xe6, - 0x60, 0x67, 0x02, 0x0c, 0xd0, 0xd7, 0xc0, 0x4c, 0xc7, 0x30, 0x55, 0x07, 0xb7, 0x77, 0x55, 0x2e, - 0x39, 0xc2, 0x37, 0x7b, 0xfc, 0xd1, 0x9c, 0xee, 0x18, 0x66, 0x03, 0xb7, 0x77, 0x57, 0x3c, 0x2e, - 0xe8, 0xbd, 0x70, 0xc6, 0xef, 0xbd, 0x65, 0xaa, 0xfb, 0x56, 0xbb, 0xa5, 0xda, 0x78, 0x57, 0xd5, - 0xe9, 0x3b, 0x7f, 0x39, 0x2a, 0xb3, 0x53, 0x1e, 0xca, 0xa6, 0x79, 0xdd, 0x6a, 0xb7, 0x14, 0xbc, - 0x5b, 0x25, 0xc5, 0xe8, 0x21, 0xf0, 0xbb, 0xae, 0x1a, 0x2d, 0x67, 0x2e, 0xbf, 0x18, 0x3b, 0x1f, - 0x57, 0x72, 0x1e, 0xb0, 0xde, 0x72, 0x96, 0xd3, 0x1f, 0xf9, 0xe4, 0xc2, 0xd4, 0xe7, 0x3f, 0xb9, - 0x30, 0x25, 0x5f, 0xa3, 0x6f, 0x4a, 0xf1, 0x79, 0x84, 0x1d, 0x74, 0x05, 0x32, 0x9a, 0xf8, 0x60, - 0x37, 0xc6, 0x8e, 0x98, 0x87, 0x3e, 0xaa, 0xfc, 0x63, 0x11, 0x48, 0xae, 0xdc, 0xdc, 0xd2, 0x0c, - 0x1b, 0xd5, 0x60, 0xda, 0x57, 0xcc, 0x49, 0xa7, 0xb4, 0xaf, 0xcb, 0x62, 0x4e, 0x6f, 0x8c, 0x3a, - 0xaa, 0x96, 0xa9, 0x9c, 0xfd, 0xf5, 0xcf, 0x3c, 0xf1, 0x20, 0x67, 0x73, 0xb3, 0xef, 0xd4, 0x9a, - 0xe0, 0xd7, 0x7f, 0x9a, 0x2d, 0xd0, 0xe7, 0x1b, 0x90, 0x62, 0x4d, 0x75, 0xd0, 0x8b, 0x90, 0xe8, - 0x92, 0x1f, 0x3c, 0x03, 0x3f, 0x3f, 0x52, 0xc1, 0x29, 0x7e, 0x50, 0x1d, 0x18, 0x9d, 0xfc, 0x2d, - 0x51, 0x80, 0x95, 0x9b, 0x37, 0x9b, 0xb6, 0xd1, 0x6d, 0x63, 0xf7, 0x9d, 0xea, 0xfb, 0x36, 0x9c, - 0x08, 0xdc, 0x85, 0xb6, 0xf5, 0xe3, 0xf7, 0x7f, 0xc6, 0xbf, 0x16, 0x6d, 0xeb, 0x43, 0xd9, 0xb6, - 0x1c, 0xd7, 0x63, 0x1b, 0x3b, 0x3e, 0xdb, 0x15, 0xc7, 0x1d, 0x94, 0xec, 0x2b, 0x90, 0xf5, 0x85, - 0xe1, 0xa0, 0x3a, 0xa4, 0x5d, 0xfe, 0x9b, 0x0b, 0x58, 0x1e, 0x2d, 0x60, 0x41, 0x16, 0x14, 0xb2, - 0x47, 0x2e, 0xff, 0x69, 0x04, 0x20, 0x30, 0x47, 0xbe, 0x3a, 0x75, 0x8c, 0x84, 0xeb, 0xdc, 0x12, - 0xc7, 0xee, 0xfb, 0x35, 0x4e, 0xc6, 0x20, 0x20, 0xd4, 0x6f, 0x8b, 0xc2, 0xcc, 0xb6, 0x98, 0xbd, - 0x5f, 0xfd, 0x32, 0xd8, 0x86, 0x14, 0x36, 0x5d, 0xdb, 0xf0, 0xf6, 0x90, 0x9e, 0x1c, 0x35, 0xe6, - 0x43, 0x3a, 0x55, 0x33, 0x5d, 0xfb, 0x30, 0xa8, 0x01, 0x82, 0x57, 0x40, 0x1e, 0x1f, 0x8f, 0xc1, - 0xdc, 0x28, 0x52, 0x74, 0x0e, 0x8a, 0xba, 0x8d, 0x29, 0x20, 0x7c, 0x45, 0xb4, 0x20, 0xc0, 0x7c, - 0x8d, 0x51, 0x80, 0x78, 0x65, 0x44, 0xb9, 0x08, 0xea, 0xfd, 0xb9, 0x61, 0x05, 0x9f, 0x03, 0x5d, - 0x65, 0x9a, 0x50, 0x14, 0x77, 0x4e, 0x76, 0xb4, 0xb6, 0x66, 0xea, 0xc2, 0x5d, 0x3d, 0xd6, 0x92, - 0x20, 0xee, 0xad, 0x54, 0x18, 0x0b, 0x54, 0x83, 0x94, 0xe0, 0x16, 0x3f, 0x3e, 0x37, 0x41, 0x8b, - 0xce, 0x42, 0x2e, 0xb8, 0x30, 0x50, 0xd7, 0x23, 0xae, 0x64, 0x03, 0xeb, 0xc2, 0xb8, 0x95, 0x27, - 0x79, 0xe4, 0xca, 0xc3, 0xbd, 0xbb, 0x1f, 0xa0, 0x47, 0xc3, 0x5b, 0x7f, 0xfe, 0x87, 0x65, 0x0b, - 0x80, 0x4d, 0x55, 0x62, 0x49, 0xf9, 0xc8, 0xdc, 0xc7, 0x7c, 0xcf, 0x30, 0x26, 0x2b, 0x8e, 0xfb, - 0x95, 0x1a, 0xa1, 0xdf, 0x8c, 0x42, 0x2e, 0x38, 0x42, 0x7f, 0x21, 0x17, 0x2d, 0xb4, 0xe1, 0x9b, - 0x29, 0x76, 0x7d, 0xe6, 0xd1, 0x51, 0x66, 0x6a, 0x40, 0x9b, 0xc7, 0xd8, 0xa7, 0x4f, 0xc4, 0x20, + 0x84, 0x94, 0x36, 0x09, 0xc9, 0x80, 0x94, 0x2c, 0x96, 0xaa, 0xb7, 0xd1, 0xf3, 0xbe, 0x12, 0xa6, + 0x46, 0xe8, 0xd0, 0x3a, 0x1b, 0x7e, 0x03, 0x7a, 0xb8, 0x0d, 0x05, 0x1b, 0x93, 0x11, 0x81, 0x5b, + 0xbc, 0x65, 0x19, 0x5a, 0x89, 0xa5, 0xb1, 0x2d, 0x53, 0x38, 0x1b, 0x6b, 0x58, 0xde, 0x0e, 0x7e, + 0xa2, 0x87, 0xc0, 0x4b, 0x50, 0xa9, 0x5a, 0x01, 0xb5, 0x4f, 0x39, 0x91, 0xb8, 0xa1, 0x75, 0x70, + 0xe9, 0x0d, 0x28, 0x84, 0xc5, 0x83, 0x66, 0x21, 0xe1, 0xb8, 0x9a, 0xed, 0x52, 0x2d, 0x4c, 0x28, + 0xec, 0x03, 0x49, 0x10, 0xc3, 0x66, 0x8b, 0xda, 0xbf, 0x84, 0x42, 0x7e, 0xa2, 0xbf, 0xe2, 0x37, + 0x38, 0x46, 0x1b, 0xfc, 0xc8, 0x60, 0x8f, 0x86, 0x90, 0xfb, 0xdb, 0x5d, 0x7a, 0x16, 0xf2, 0xa1, + 0x06, 0x4c, 0x5a, 0xb4, 0xfc, 0x57, 0xe1, 0xc4, 0x50, 0x68, 0xf4, 0x0a, 0xcc, 0xf6, 0x4c, 0xc3, + 0x74, 0xb1, 0xdd, 0xb5, 0x31, 0xd1, 0x58, 0x56, 0xd4, 0xdc, 0xef, 0xa5, 0x46, 0xe8, 0xdc, 0x76, + 0x90, 0x9a, 0xa1, 0x28, 0x33, 0xbd, 0xc1, 0xc4, 0x0b, 0x99, 0xf4, 0xe7, 0x53, 0xd2, 0x87, 0x3e, + 0xf4, 0xa1, 0x0f, 0x45, 0xe5, 0x5f, 0x49, 0xc2, 0xec, 0xb0, 0x31, 0x33, 0x74, 0xf8, 0x9e, 0x84, + 0xa4, 0xd9, 0xeb, 0xec, 0x60, 0x9b, 0x0a, 0x29, 0xa1, 0xf0, 0x2f, 0x54, 0x86, 0x44, 0x5b, 0xdb, + 0xc1, 0xed, 0xb9, 0xf8, 0x62, 0xe4, 0x7c, 0xe1, 0xd2, 0x63, 0x13, 0x8d, 0xca, 0xa5, 0x35, 0xc2, + 0xa2, 0x30, 0x4e, 0xf4, 0x3e, 0x88, 0x73, 0xe3, 0x4d, 0x10, 0x2e, 0x4c, 0x86, 0x40, 0xc6, 0x92, + 0x42, 0xf9, 0xd0, 0x19, 0xc8, 0x90, 0xff, 0x99, 0x6e, 0x24, 0x69, 0x9d, 0xd3, 0x24, 0x81, 0xe8, + 0x05, 0x2a, 0x41, 0x9a, 0x0e, 0x93, 0x16, 0x16, 0x93, 0x9e, 0xf7, 0x4d, 0x14, 0xab, 0x85, 0x77, + 0xb5, 0x5e, 0xdb, 0x55, 0x6f, 0x6b, 0xed, 0x1e, 0xa6, 0x0a, 0x9f, 0x51, 0x72, 0x3c, 0xf1, 0x26, + 0x49, 0x43, 0x0b, 0x90, 0x65, 0xa3, 0xca, 0x30, 0x5b, 0xf8, 0x80, 0xda, 0xd5, 0x84, 0xc2, 0x06, + 0x5a, 0x9d, 0xa4, 0x90, 0xe2, 0x5f, 0x77, 0x2c, 0x53, 0xa8, 0x26, 0x2d, 0x82, 0x24, 0xd0, 0xe2, + 0x9f, 0xed, 0x37, 0xe9, 0x0f, 0x0e, 0x6f, 0xde, 0xc0, 0x58, 0x3a, 0x07, 0x45, 0x4a, 0xf1, 0x34, + 0xef, 0x7a, 0xad, 0x3d, 0x37, 0xbd, 0x18, 0x39, 0x9f, 0x56, 0x0a, 0x2c, 0x79, 0x93, 0xa7, 0xca, + 0x3f, 0x1b, 0x85, 0x38, 0x35, 0x2c, 0x45, 0xc8, 0x36, 0x5f, 0xdd, 0xaa, 0xa9, 0x2b, 0x9b, 0xdb, + 0x95, 0xb5, 0x9a, 0x14, 0x41, 0x05, 0x00, 0x9a, 0x70, 0x6d, 0x6d, 0xb3, 0xdc, 0x94, 0xa2, 0xde, + 0x77, 0x7d, 0xa3, 0x79, 0xe5, 0x19, 0x29, 0xe6, 0x31, 0x6c, 0xb3, 0x84, 0x78, 0x90, 0xe0, 0xe9, + 0x4b, 0x52, 0x02, 0x49, 0x90, 0x63, 0x00, 0xf5, 0x57, 0x6a, 0x2b, 0x57, 0x9e, 0x91, 0x92, 0xe1, + 0x94, 0xa7, 0x2f, 0x49, 0x29, 0x94, 0x87, 0x0c, 0x4d, 0xa9, 0x6c, 0x6e, 0xae, 0x49, 0x69, 0x0f, + 0xb3, 0xd1, 0x54, 0xea, 0x1b, 0xab, 0x52, 0xc6, 0xc3, 0x5c, 0x55, 0x36, 0xb7, 0xb7, 0x24, 0xf0, + 0x10, 0xd6, 0x6b, 0x8d, 0x46, 0x79, 0xb5, 0x26, 0x65, 0x3d, 0x8a, 0xca, 0xab, 0xcd, 0x5a, 0x43, + 0xca, 0x85, 0xaa, 0xf5, 0xf4, 0x25, 0x29, 0xef, 0x15, 0x51, 0xdb, 0xd8, 0x5e, 0x97, 0x0a, 0x68, + 0x1a, 0xf2, 0xac, 0x08, 0x51, 0x89, 0x62, 0x5f, 0xd2, 0x95, 0x67, 0x24, 0xc9, 0xaf, 0x08, 0x43, + 0x99, 0x0e, 0x25, 0x5c, 0x79, 0x46, 0x42, 0x72, 0x15, 0x12, 0x54, 0x0d, 0x11, 0x82, 0xc2, 0x5a, + 0xb9, 0x52, 0x5b, 0x53, 0x37, 0xb7, 0x9a, 0xf5, 0xcd, 0x8d, 0xf2, 0x9a, 0x14, 0xf1, 0xd3, 0x94, + 0xda, 0xcb, 0xdb, 0x75, 0xa5, 0xb6, 0x22, 0x45, 0x83, 0x69, 0x5b, 0xb5, 0x72, 0xb3, 0xb6, 0x22, + 0xc5, 0x64, 0x1d, 0x66, 0x87, 0x19, 0xd4, 0xa1, 0x43, 0x28, 0xa0, 0x0b, 0xd1, 0x11, 0xba, 0x40, + 0xb1, 0xfa, 0x75, 0x41, 0xfe, 0x5c, 0x14, 0x66, 0x86, 0x4c, 0x2a, 0x43, 0x0b, 0x79, 0x11, 0x12, + 0x4c, 0x97, 0xd9, 0x34, 0xfb, 0xe8, 0xd0, 0xd9, 0x89, 0x6a, 0xf6, 0xc0, 0x54, 0x4b, 0xf9, 0x82, + 0x4e, 0x48, 0x6c, 0x84, 0x13, 0x42, 0x20, 0x06, 0x14, 0xf6, 0xeb, 0x06, 0x8c, 0x3f, 0x9b, 0x1f, + 0xaf, 0x4c, 0x32, 0x3f, 0xd2, 0xb4, 0xe3, 0x4d, 0x02, 0x89, 0x21, 0x93, 0xc0, 0x55, 0x98, 0x1e, + 0x00, 0x9a, 0xd8, 0x18, 0x7f, 0x38, 0x02, 0x73, 0xa3, 0x84, 0x33, 0xc6, 0x24, 0x46, 0x43, 0x26, + 0xf1, 0x6a, 0xbf, 0x04, 0xcf, 0x8e, 0xee, 0x84, 0x81, 0xbe, 0xfe, 0xb1, 0x08, 0x9c, 0x1c, 0xee, + 0x6c, 0x0e, 0xad, 0xc3, 0xfb, 0x20, 0xd9, 0xc1, 0xee, 0xbe, 0x25, 0xdc, 0xaa, 0x47, 0x86, 0x4c, + 0xd6, 0x24, 0xbb, 0xbf, 0xb3, 0x39, 0x57, 0x70, 0xb6, 0x8f, 0x8d, 0xf2, 0x18, 0x59, 0x6d, 0x06, + 0x6a, 0xfa, 0x2d, 0x51, 0x38, 0x31, 0x14, 0x7c, 0x68, 0x45, 0x1f, 0x04, 0x30, 0xcc, 0x6e, 0xcf, + 0x65, 0xae, 0x13, 0xb3, 0xc4, 0x19, 0x9a, 0x42, 0x8d, 0x17, 0xb1, 0xb2, 0x3d, 0xd7, 0xcb, 0x8f, + 0xd1, 0x7c, 0x60, 0x49, 0x94, 0xe0, 0x39, 0xbf, 0xa2, 0x71, 0x5a, 0xd1, 0xf9, 0x11, 0x2d, 0x1d, + 0x50, 0xcc, 0x27, 0x41, 0xd2, 0xdb, 0x06, 0x36, 0x5d, 0xd5, 0x71, 0x6d, 0xac, 0x75, 0x0c, 0x73, + 0x8f, 0x4e, 0x35, 0xe9, 0xe5, 0xc4, 0xae, 0xd6, 0x76, 0xb0, 0x52, 0x64, 0xd9, 0x0d, 0x91, 0x4b, + 0x38, 0xa8, 0x02, 0xd9, 0x01, 0x8e, 0x64, 0x88, 0x83, 0x65, 0x7b, 0x1c, 0xf2, 0x77, 0x66, 0x20, + 0x1b, 0x70, 0xcd, 0xd1, 0x59, 0xc8, 0xbd, 0xae, 0xdd, 0xd6, 0x54, 0xb1, 0xdc, 0x62, 0x92, 0xc8, + 0x92, 0xb4, 0x2d, 0xbe, 0xe4, 0x7a, 0x12, 0x66, 0x29, 0x89, 0xd5, 0x73, 0xb1, 0xad, 0xea, 0x6d, + 0xcd, 0x71, 0xa8, 0xd0, 0xd2, 0x94, 0x14, 0x91, 0xbc, 0x4d, 0x92, 0x55, 0x15, 0x39, 0xe8, 0x32, + 0xcc, 0x50, 0x8e, 0x4e, 0xaf, 0xed, 0x1a, 0xdd, 0x36, 0x56, 0xc9, 0x02, 0xd0, 0xa1, 0x53, 0x8e, + 0x57, 0xb3, 0x69, 0x42, 0xb1, 0xce, 0x09, 0x48, 0x8d, 0x1c, 0xb4, 0x02, 0x0f, 0x52, 0xb6, 0x3d, + 0x6c, 0x62, 0x5b, 0x73, 0xb1, 0x8a, 0x3f, 0xd8, 0xd3, 0xda, 0x8e, 0xaa, 0x99, 0x2d, 0x75, 0x5f, + 0x73, 0xf6, 0xe7, 0x66, 0x09, 0x40, 0x25, 0x3a, 0x17, 0x51, 0x4e, 0x13, 0xc2, 0x55, 0x4e, 0x57, + 0xa3, 0x64, 0x65, 0xb3, 0x75, 0x5d, 0x73, 0xf6, 0xd1, 0x32, 0x9c, 0xa4, 0x28, 0x8e, 0x6b, 0x1b, + 0xe6, 0x9e, 0xaa, 0xef, 0x63, 0xfd, 0x96, 0xda, 0x73, 0x77, 0x9f, 0x9b, 0x3b, 0x13, 0x2c, 0x9f, + 0xd6, 0xb0, 0x41, 0x69, 0xaa, 0x84, 0x64, 0xdb, 0xdd, 0x7d, 0x0e, 0x35, 0x20, 0x47, 0x3a, 0xa3, + 0x63, 0xbc, 0x81, 0xd5, 0x5d, 0xcb, 0xa6, 0x73, 0x68, 0x61, 0x88, 0x69, 0x0a, 0x48, 0x70, 0x69, + 0x93, 0x33, 0xac, 0x5b, 0x2d, 0xbc, 0x9c, 0x68, 0x6c, 0xd5, 0x6a, 0x2b, 0x4a, 0x56, 0xa0, 0x5c, + 0xb3, 0x6c, 0xa2, 0x50, 0x7b, 0x96, 0x27, 0xe0, 0x2c, 0x53, 0xa8, 0x3d, 0x4b, 0x88, 0xf7, 0x32, + 0xcc, 0xe8, 0x3a, 0x6b, 0xb3, 0xa1, 0xab, 0x7c, 0x99, 0xe6, 0xcc, 0x49, 0x21, 0x61, 0xe9, 0xfa, + 0x2a, 0x23, 0xe0, 0x3a, 0xee, 0xa0, 0xe7, 0xe1, 0x84, 0x2f, 0xac, 0x20, 0xe3, 0xf4, 0x40, 0x2b, + 0xfb, 0x59, 0x2f, 0xc3, 0x4c, 0xf7, 0x70, 0x90, 0x11, 0x85, 0x4a, 0xec, 0x1e, 0xf6, 0xb3, 0x3d, + 0x0b, 0xb3, 0xdd, 0xfd, 0xee, 0x20, 0xdf, 0x85, 0x20, 0x1f, 0xea, 0xee, 0x77, 0xfb, 0x19, 0x1f, + 0xa6, 0x6b, 0x76, 0x1b, 0xeb, 0x9a, 0x8b, 0x5b, 0x73, 0xa7, 0x82, 0xe4, 0x81, 0x0c, 0xb4, 0x04, + 0x92, 0xae, 0xab, 0xd8, 0xd4, 0x76, 0xda, 0x58, 0xd5, 0x6c, 0x6c, 0x6a, 0xce, 0xdc, 0x02, 0x25, + 0x8e, 0xbb, 0x76, 0x0f, 0x2b, 0x05, 0x5d, 0xaf, 0xd1, 0xcc, 0x32, 0xcd, 0x43, 0x17, 0x60, 0xda, + 0xda, 0x79, 0x5d, 0x67, 0x1a, 0xa9, 0x76, 0x6d, 0xbc, 0x6b, 0x1c, 0xcc, 0xbd, 0x87, 0x8a, 0xb7, + 0x48, 0x32, 0xa8, 0x3e, 0x6e, 0xd1, 0x64, 0xf4, 0x28, 0x48, 0xba, 0xb3, 0xaf, 0xd9, 0x5d, 0x6a, + 0x92, 0x9d, 0xae, 0xa6, 0xe3, 0xb9, 0x87, 0x19, 0x29, 0x4b, 0xdf, 0x10, 0xc9, 0x64, 0x44, 0x38, + 0x77, 0x8c, 0x5d, 0x57, 0x20, 0x9e, 0x63, 0x23, 0x82, 0xa6, 0x71, 0xb4, 0xf3, 0x20, 0x11, 0x49, + 0x84, 0x0a, 0x3e, 0x4f, 0xc9, 0x0a, 0xdd, 0xfd, 0x6e, 0xb0, 0xdc, 0x87, 0x20, 0x4f, 0x28, 0xfd, + 0x42, 0x1f, 0x65, 0x8e, 0x5b, 0x77, 0x3f, 0x50, 0xe2, 0x33, 0x70, 0x92, 0x10, 0x75, 0xb0, 0xab, + 0xb5, 0x34, 0x57, 0x0b, 0x50, 0x3f, 0x4e, 0xa9, 0x89, 0xd8, 0xd7, 0x79, 0x66, 0xa8, 0x9e, 0x76, + 0x6f, 0xe7, 0xd0, 0x53, 0xac, 0x27, 0x58, 0x3d, 0x49, 0x9a, 0x50, 0xad, 0x77, 0xcd, 0x39, 0x97, + 0x97, 0x21, 0x17, 0xd4, 0x7b, 0x94, 0x01, 0xa6, 0xf9, 0x52, 0x84, 0x38, 0x41, 0xd5, 0xcd, 0x15, + 0xe2, 0xbe, 0xbc, 0x56, 0x93, 0xa2, 0xc4, 0x8d, 0x5a, 0xab, 0x37, 0x6b, 0xaa, 0xb2, 0xbd, 0xd1, + 0xac, 0xaf, 0xd7, 0xa4, 0x58, 0xc0, 0xb1, 0xbf, 0x11, 0x4f, 0x3f, 0x22, 0x9d, 0x93, 0x7f, 0x31, + 0x06, 0x85, 0xf0, 0x4a, 0x0d, 0xbd, 0x17, 0x4e, 0x89, 0x80, 0x8b, 0x83, 0x5d, 0xf5, 0x8e, 0x61, + 0xd3, 0x01, 0xd9, 0xd1, 0xd8, 0xe4, 0xe8, 0xe9, 0xcf, 0x2c, 0xa7, 0x6a, 0x60, 0xf7, 0xfd, 0x86, + 0x4d, 0x86, 0x5b, 0x47, 0x73, 0xd1, 0x1a, 0x2c, 0x98, 0x96, 0xea, 0xb8, 0x9a, 0xd9, 0xd2, 0xec, + 0x96, 0xea, 0x87, 0xba, 0x54, 0x4d, 0xd7, 0xb1, 0xe3, 0x58, 0x6c, 0x22, 0xf4, 0x50, 0x1e, 0x30, + 0xad, 0x06, 0x27, 0xf6, 0x67, 0x88, 0x32, 0x27, 0xed, 0x53, 0xdf, 0xd8, 0x28, 0xf5, 0x3d, 0x03, + 0x99, 0x8e, 0xd6, 0x55, 0xb1, 0xe9, 0xda, 0x87, 0xd4, 0x3f, 0x4f, 0x2b, 0xe9, 0x8e, 0xd6, 0xad, + 0x91, 0x6f, 0x74, 0x13, 0x1e, 0xf1, 0x49, 0xd5, 0x36, 0xde, 0xd3, 0xf4, 0x43, 0x95, 0x3a, 0xe3, + 0x34, 0x6c, 0xa0, 0xea, 0x96, 0xb9, 0xdb, 0x36, 0x74, 0xd7, 0xa1, 0xf6, 0x81, 0xd9, 0x38, 0xd9, + 0xe7, 0x58, 0xa3, 0x0c, 0x37, 0x1c, 0xcb, 0xa4, 0x3e, 0x78, 0x55, 0x50, 0x7f, 0x45, 0x96, 0x5f, + 0x37, 0xe2, 0xe9, 0xb8, 0x94, 0xb8, 0x11, 0x4f, 0x27, 0xa4, 0xe4, 0x8d, 0x78, 0x3a, 0x29, 0xa5, + 0x6e, 0xc4, 0xd3, 0x69, 0x29, 0x73, 0x23, 0x9e, 0xce, 0x48, 0x20, 0xff, 0x5c, 0x1a, 0x72, 0xc1, + 0x95, 0x01, 0x59, 0x68, 0xe9, 0x74, 0x6e, 0x8c, 0x50, 0xeb, 0xf9, 0xd0, 0x91, 0xeb, 0x88, 0xa5, + 0x2a, 0x99, 0x34, 0x97, 0x93, 0xcc, 0x0d, 0x57, 0x18, 0x27, 0x71, 0x58, 0x88, 0x5a, 0x63, 0xe6, + 0xf6, 0xa4, 0x15, 0xfe, 0x85, 0x56, 0x21, 0xf9, 0xba, 0x43, 0xb1, 0x93, 0x14, 0xfb, 0x3d, 0x47, + 0x63, 0xdf, 0x68, 0x50, 0xf0, 0xcc, 0x8d, 0x86, 0xba, 0xb1, 0xa9, 0xac, 0x97, 0xd7, 0x14, 0xce, + 0x8e, 0x4e, 0x43, 0xbc, 0xad, 0xbd, 0x71, 0x18, 0x9e, 0x5e, 0x69, 0x12, 0x5a, 0x82, 0x62, 0xcf, + 0xbc, 0x8d, 0x6d, 0x63, 0xd7, 0x20, 0x5d, 0x45, 0xa8, 0x8a, 0x41, 0xaa, 0x82, 0x9f, 0xbb, 0x46, + 0xe8, 0x27, 0x54, 0x8f, 0xd3, 0x10, 0xbf, 0x83, 0xb5, 0x5b, 0xe1, 0x49, 0x90, 0x26, 0xa1, 0xf3, + 0x90, 0x6b, 0xe1, 0x9d, 0xde, 0x9e, 0x6a, 0xe3, 0x96, 0xa6, 0xbb, 0x61, 0xd3, 0x9f, 0xa5, 0x59, + 0x0a, 0xcd, 0x41, 0x2f, 0x41, 0x86, 0xf4, 0x91, 0x49, 0xfb, 0x78, 0x9a, 0x8a, 0xe0, 0x89, 0xa3, + 0x45, 0xc0, 0xbb, 0x58, 0x30, 0x29, 0x3e, 0x3f, 0xba, 0x06, 0x49, 0x57, 0xb3, 0xf7, 0xb0, 0x4b, + 0x2d, 0x7f, 0x61, 0x48, 0xf0, 0x63, 0x08, 0x52, 0x93, 0x72, 0xd0, 0x35, 0x2d, 0xe7, 0x7e, 0x17, + 0xad, 0xcc, 0x45, 0x48, 0x50, 0xf5, 0x40, 0x00, 0x5c, 0x41, 0xa4, 0x29, 0x94, 0x86, 0x78, 0x75, + 0x53, 0x21, 0x96, 0x46, 0x82, 0x1c, 0x4b, 0x55, 0xb7, 0xea, 0xb5, 0x6a, 0x4d, 0x8a, 0xca, 0x97, + 0x21, 0xc9, 0xfa, 0x9c, 0x58, 0x21, 0xaf, 0xd7, 0xa5, 0x29, 0xfe, 0xc9, 0x31, 0x22, 0x22, 0x77, + 0x7b, 0xbd, 0x52, 0x53, 0xa4, 0xa8, 0xbc, 0x0d, 0xc5, 0x3e, 0x39, 0xa1, 0x13, 0x30, 0xad, 0xd4, + 0x9a, 0xb5, 0x0d, 0xb2, 0xce, 0x52, 0xb7, 0x37, 0x5e, 0xda, 0xd8, 0x7c, 0xff, 0x86, 0x34, 0x15, + 0x4e, 0x16, 0x26, 0x2d, 0x82, 0x66, 0x41, 0xf2, 0x93, 0x1b, 0x9b, 0xdb, 0x0a, 0xad, 0xcd, 0xb7, + 0x45, 0x41, 0xea, 0x97, 0x1a, 0x3a, 0x05, 0x33, 0xcd, 0xb2, 0xb2, 0x5a, 0x6b, 0xaa, 0x6c, 0xed, + 0xe8, 0x41, 0xcf, 0x82, 0x14, 0xcc, 0xb8, 0x56, 0xa7, 0x4b, 0xe3, 0x05, 0x38, 0x13, 0x4c, 0xad, + 0xbd, 0xd2, 0xac, 0x6d, 0x34, 0x68, 0xe1, 0xe5, 0x8d, 0x55, 0x62, 0x5f, 0xfb, 0xf0, 0xc4, 0x6a, + 0x35, 0x46, 0xaa, 0x1a, 0xc6, 0xab, 0xad, 0xad, 0x48, 0xf1, 0xfe, 0xe4, 0xcd, 0x8d, 0xda, 0xe6, + 0x35, 0x29, 0xd1, 0x5f, 0x3a, 0x5d, 0xc1, 0x26, 0x51, 0x09, 0x4e, 0xf6, 0xa7, 0xaa, 0xb5, 0x8d, + 0xa6, 0xf2, 0xaa, 0x94, 0xea, 0x2f, 0xb8, 0x51, 0x53, 0x6e, 0xd6, 0xab, 0x35, 0x29, 0x8d, 0x4e, + 0x02, 0x0a, 0xd7, 0xa8, 0x79, 0x7d, 0x73, 0x45, 0xca, 0x0c, 0x58, 0x14, 0xd9, 0x81, 0x5c, 0x70, + 0x19, 0xf9, 0x95, 0x89, 0x25, 0x7d, 0x2c, 0x0a, 0xd9, 0xc0, 0xb2, 0x90, 0xf8, 0xf3, 0x5a, 0xbb, + 0x6d, 0xdd, 0x51, 0xb5, 0xb6, 0xa1, 0x39, 0xdc, 0xde, 0x00, 0x4d, 0x2a, 0x93, 0x94, 0x49, 0xc7, + 0xf7, 0xe4, 0x16, 0x3e, 0xf9, 0xd5, 0x68, 0xe1, 0x13, 0x52, 0x52, 0xfe, 0x81, 0x08, 0x48, 0xfd, + 0xeb, 0xbd, 0xbe, 0xe6, 0x47, 0x46, 0x35, 0xff, 0x2b, 0xd2, 0x77, 0x9f, 0x88, 0x40, 0x21, 0xbc, + 0xc8, 0xeb, 0xab, 0xde, 0xd9, 0x3f, 0xd7, 0xea, 0xfd, 0x76, 0x14, 0xf2, 0xa1, 0xa5, 0xdd, 0xa4, + 0xb5, 0xfb, 0x20, 0x4c, 0x1b, 0x2d, 0xdc, 0xe9, 0x5a, 0x2e, 0x36, 0xf5, 0x43, 0xb5, 0x8d, 0x6f, + 0xe3, 0xf6, 0x9c, 0x4c, 0x8d, 0xf2, 0xc5, 0xa3, 0x17, 0x8f, 0x4b, 0x75, 0x9f, 0x6f, 0x8d, 0xb0, + 0x2d, 0xcf, 0xd4, 0x57, 0x6a, 0xeb, 0x5b, 0x9b, 0xcd, 0xda, 0x46, 0xf5, 0x55, 0x61, 0x5d, 0x14, + 0xc9, 0xe8, 0x23, 0x7b, 0x17, 0x8d, 0xf6, 0x16, 0x48, 0xfd, 0x95, 0x22, 0xb6, 0x62, 0x48, 0xb5, + 0xa4, 0x29, 0x34, 0x03, 0xc5, 0x8d, 0x4d, 0xb5, 0x51, 0x5f, 0xa9, 0xa9, 0xb5, 0x6b, 0xd7, 0x6a, + 0xd5, 0x66, 0x83, 0x85, 0x03, 0x3d, 0xea, 0xa6, 0x14, 0x0d, 0x8a, 0xf8, 0xfb, 0x63, 0x30, 0x33, + 0xa4, 0x26, 0xa8, 0xcc, 0x17, 0xf2, 0x2c, 0xb6, 0xf0, 0xc4, 0x24, 0xb5, 0x5f, 0x22, 0xae, 0xf4, + 0x96, 0x66, 0xbb, 0x7c, 0xdd, 0xff, 0x28, 0x10, 0x29, 0x99, 0x2e, 0x99, 0xd9, 0x6d, 0x1e, 0x66, + 0x65, 0xab, 0xfb, 0xa2, 0x9f, 0xce, 0x22, 0xad, 0x8f, 0x03, 0xea, 0x5a, 0x8e, 0xe1, 0x1a, 0xb7, + 0xb1, 0x6a, 0x98, 0x22, 0x26, 0x4b, 0x56, 0xfb, 0x71, 0x45, 0x12, 0x39, 0x75, 0xd3, 0xf5, 0xa8, + 0x4d, 0xbc, 0xa7, 0xf5, 0x51, 0x13, 0xcf, 0x23, 0xa6, 0x48, 0x22, 0xc7, 0xa3, 0x3e, 0x0b, 0xb9, + 0x96, 0xd5, 0x23, 0x4b, 0x20, 0x46, 0x47, 0xac, 0x45, 0x44, 0xc9, 0xb2, 0x34, 0x8f, 0x84, 0x2f, + 0x6e, 0xfd, 0x60, 0x70, 0x4e, 0xc9, 0xb2, 0x34, 0x46, 0x72, 0x0e, 0x8a, 0xda, 0xde, 0x9e, 0x4d, + 0xc0, 0x05, 0x10, 0x5b, 0xae, 0x17, 0xbc, 0x64, 0x4a, 0x58, 0xba, 0x01, 0x69, 0x21, 0x07, 0xe2, + 0xc1, 0x12, 0x49, 0xa8, 0x5d, 0x16, 0x83, 0x8a, 0x9e, 0xcf, 0x28, 0x69, 0x53, 0x64, 0x9e, 0x85, + 0x9c, 0xe1, 0xa8, 0xfe, 0xde, 0x56, 0x74, 0x31, 0x7a, 0x3e, 0xad, 0x64, 0x0d, 0xc7, 0xdb, 0x17, + 0x90, 0x7f, 0x2c, 0x0a, 0x85, 0xf0, 0xae, 0x1d, 0x5a, 0x81, 0x74, 0xdb, 0xd2, 0x35, 0xaa, 0x5a, + 0x6c, 0xcb, 0xf8, 0xfc, 0x98, 0x8d, 0xbe, 0xa5, 0x35, 0x4e, 0xaf, 0x78, 0x9c, 0xa5, 0x7f, 0x1b, + 0x81, 0xb4, 0x48, 0x46, 0x27, 0x21, 0xde, 0xd5, 0xdc, 0x7d, 0x0a, 0x97, 0xa8, 0x44, 0xa5, 0x88, + 0x42, 0xbf, 0x49, 0xba, 0xd3, 0xd5, 0x4c, 0xaa, 0x02, 0x3c, 0x9d, 0x7c, 0x93, 0x7e, 0x6d, 0x63, + 0xad, 0x45, 0x63, 0x01, 0x56, 0xa7, 0x83, 0x4d, 0xd7, 0x11, 0xfd, 0xca, 0xd3, 0xab, 0x3c, 0x19, + 0x3d, 0x06, 0xd3, 0xae, 0xad, 0x19, 0xed, 0x10, 0x6d, 0x9c, 0xd2, 0x4a, 0x22, 0xc3, 0x23, 0x5e, + 0x86, 0xd3, 0x02, 0xb7, 0x85, 0x5d, 0x4d, 0xdf, 0xc7, 0x2d, 0x9f, 0x29, 0x49, 0x63, 0x7e, 0xa7, + 0x38, 0xc1, 0x0a, 0xcf, 0x17, 0xbc, 0xf2, 0x67, 0xa3, 0x30, 0x2d, 0xa2, 0x17, 0x2d, 0x4f, 0x58, + 0xeb, 0x00, 0x9a, 0x69, 0x5a, 0x6e, 0x50, 0x5c, 0x83, 0xaa, 0x3c, 0xc0, 0xb7, 0x54, 0xf6, 0x98, + 0x94, 0x00, 0x40, 0xe9, 0xf7, 0x23, 0x00, 0x7e, 0xd6, 0x48, 0xb9, 0x2d, 0x40, 0x96, 0xef, 0xc9, + 0xd2, 0x8d, 0x7d, 0x16, 0xf0, 0x02, 0x96, 0x74, 0xcd, 0x68, 0xd3, 0xb0, 0xe4, 0x0e, 0xde, 0x33, + 0x4c, 0xbe, 0x9f, 0xc2, 0x3e, 0x44, 0x58, 0x32, 0xee, 0x6f, 0x4f, 0x29, 0x90, 0x76, 0x70, 0x47, + 0x33, 0x5d, 0x43, 0xe7, 0x3b, 0x24, 0x57, 0x8e, 0x55, 0xf9, 0xa5, 0x06, 0xe7, 0x56, 0x3c, 0x1c, + 0xf9, 0x3c, 0xa4, 0x45, 0x2a, 0x71, 0xfc, 0x36, 0x36, 0x37, 0x6a, 0xd2, 0x14, 0x4a, 0x41, 0xac, + 0x51, 0x6b, 0x4a, 0x11, 0xb2, 0xec, 0x2c, 0xaf, 0xd5, 0xcb, 0x0d, 0x29, 0x5a, 0xf9, 0x6b, 0x30, + 0xa3, 0x5b, 0x9d, 0xfe, 0x02, 0x2b, 0x52, 0x5f, 0xc8, 0xcf, 0xb9, 0x1e, 0x79, 0xed, 0x09, 0x4e, + 0xb4, 0x67, 0xb5, 0x35, 0x73, 0x6f, 0xc9, 0xb2, 0xf7, 0xfc, 0x63, 0x11, 0x64, 0x75, 0xe0, 0x04, + 0x0e, 0x47, 0x74, 0x77, 0xfe, 0x2c, 0x12, 0xf9, 0xa1, 0x68, 0x6c, 0x75, 0xab, 0xf2, 0x13, 0xd1, + 0xd2, 0x2a, 0x63, 0xdc, 0x12, 0xcd, 0x51, 0xf0, 0x6e, 0x1b, 0xeb, 0xa4, 0xf2, 0xf0, 0x07, 0x8f, + 0xc1, 0xec, 0x9e, 0xb5, 0x67, 0x51, 0xa4, 0x8b, 0xe4, 0x17, 0x3f, 0x57, 0x91, 0xf1, 0x52, 0x4b, + 0x63, 0x0f, 0x61, 0x2c, 0x6f, 0xc0, 0x0c, 0x27, 0x56, 0xe9, 0xf6, 0x2d, 0x0b, 0x2e, 0xa0, 0x23, + 0x23, 0xdb, 0x73, 0x3f, 0xf5, 0xbb, 0xd4, 0x2b, 0x51, 0xa6, 0x39, 0x2b, 0xc9, 0x63, 0xf1, 0x87, + 0x65, 0x05, 0x4e, 0x84, 0xf0, 0x98, 0x8d, 0xc0, 0xf6, 0x18, 0xc4, 0x7f, 0xc1, 0x11, 0x67, 0x02, + 0x88, 0x0d, 0xce, 0xba, 0x5c, 0x85, 0xfc, 0x71, 0xb0, 0xfe, 0x25, 0xc7, 0xca, 0xe1, 0x20, 0xc8, + 0x2a, 0x14, 0x29, 0x88, 0xde, 0x73, 0x5c, 0xab, 0x43, 0x0d, 0xf0, 0xd1, 0x30, 0xff, 0xea, 0x77, + 0xd9, 0xa0, 0x2d, 0x10, 0xb6, 0xaa, 0xc7, 0xb5, 0xbc, 0x0c, 0x74, 0xc7, 0xba, 0x85, 0xf5, 0xf6, + 0x18, 0x84, 0x5f, 0xe5, 0x15, 0xf1, 0xe8, 0x97, 0x6f, 0xc2, 0x2c, 0xf9, 0x4d, 0xed, 0x63, 0xb0, + 0x26, 0xe3, 0xc3, 0xe0, 0x73, 0xff, 0xee, 0xc3, 0xcc, 0x2e, 0xcc, 0x78, 0x00, 0x81, 0x3a, 0x05, + 0x7a, 0x71, 0x0f, 0xbb, 0x2e, 0xb6, 0x1d, 0x55, 0x6b, 0x0f, 0xab, 0x5e, 0x20, 0x8e, 0x38, 0xf7, + 0x7d, 0x5f, 0x0c, 0xf7, 0xe2, 0x2a, 0xe3, 0x2c, 0xb7, 0xdb, 0xcb, 0xdb, 0x70, 0x6a, 0x88, 0x56, + 0x4c, 0x80, 0xf9, 0xfd, 0x1c, 0x73, 0x76, 0x40, 0x33, 0x08, 0xec, 0x16, 0x88, 0x74, 0xaf, 0x2f, + 0x27, 0xc0, 0xfc, 0x38, 0xc7, 0x44, 0x9c, 0x57, 0x74, 0x29, 0x41, 0xbc, 0x01, 0xd3, 0xb7, 0xb1, + 0xbd, 0x63, 0x39, 0x3c, 0x76, 0x3b, 0x01, 0xdc, 0x27, 0x38, 0x5c, 0x91, 0x33, 0xd2, 0x60, 0x2e, + 0xc1, 0x7a, 0x1e, 0xd2, 0xbb, 0x9a, 0x8e, 0x27, 0x80, 0xb8, 0xc7, 0x21, 0x52, 0x84, 0x9e, 0xb0, + 0x96, 0x21, 0xb7, 0x67, 0xf1, 0x29, 0x72, 0x3c, 0xfb, 0x0f, 0x70, 0xf6, 0xac, 0xe0, 0xe1, 0x10, + 0x5d, 0xab, 0xdb, 0x6b, 0x93, 0xf9, 0x73, 0x3c, 0xc4, 0x0f, 0x0a, 0x08, 0xc1, 0xc3, 0x21, 0x8e, + 0x21, 0xd6, 0x4f, 0x0a, 0x08, 0x27, 0x20, 0xcf, 0x17, 0x21, 0x6b, 0x99, 0xed, 0x43, 0xcb, 0x9c, + 0xa4, 0x12, 0x9f, 0xe2, 0x08, 0xc0, 0x59, 0x08, 0xc0, 0x55, 0xc8, 0x4c, 0xda, 0x11, 0x3f, 0xf2, + 0x45, 0x31, 0x3c, 0x44, 0x0f, 0xac, 0x42, 0x51, 0x18, 0x28, 0xc3, 0x32, 0x27, 0x80, 0xf8, 0x51, + 0x0e, 0x51, 0x08, 0xb0, 0xf1, 0x66, 0xb8, 0xd8, 0x71, 0xf7, 0xf0, 0x24, 0x20, 0x3f, 0x26, 0x9a, + 0xc1, 0x59, 0xb8, 0x28, 0x77, 0xb0, 0xa9, 0xef, 0x4f, 0x86, 0xf0, 0x69, 0x21, 0x4a, 0xc1, 0x43, + 0x20, 0xaa, 0x90, 0xef, 0x68, 0xb6, 0xb3, 0xaf, 0xb5, 0x27, 0xea, 0x8e, 0x1f, 0xe7, 0x18, 0x39, + 0x8f, 0x89, 0x4b, 0xa4, 0x67, 0x1e, 0x07, 0xe6, 0x27, 0x84, 0x44, 0x02, 0x6c, 0x7c, 0xe8, 0x39, + 0x2e, 0x0d, 0x74, 0x1f, 0x07, 0xed, 0xef, 0x88, 0xa1, 0xc7, 0x78, 0xd7, 0x83, 0x88, 0x57, 0x21, + 0xe3, 0x18, 0x6f, 0x4c, 0x04, 0xf3, 0x77, 0x45, 0x4f, 0x53, 0x06, 0xc2, 0xfc, 0x2a, 0x9c, 0x1e, + 0x3a, 0x4d, 0x4c, 0x00, 0xf6, 0xf7, 0x38, 0xd8, 0xc9, 0x21, 0x53, 0x05, 0x37, 0x09, 0xc7, 0x85, + 0xfc, 0xfb, 0xc2, 0x24, 0xe0, 0x3e, 0xac, 0x2d, 0xb2, 0x68, 0x71, 0xb4, 0xdd, 0xe3, 0x49, 0xed, + 0x1f, 0x08, 0xa9, 0x31, 0xde, 0x90, 0xd4, 0x9a, 0x70, 0x92, 0x23, 0x1e, 0xaf, 0x5f, 0x7f, 0x52, + 0x18, 0x56, 0xc6, 0xbd, 0x1d, 0xee, 0xdd, 0xaf, 0x81, 0x92, 0x27, 0x4e, 0xe1, 0x1d, 0x3b, 0x6a, + 0x47, 0xeb, 0x4e, 0x80, 0xfc, 0x53, 0x1c, 0x59, 0x58, 0x7c, 0xcf, 0xbd, 0x76, 0xd6, 0xb5, 0x2e, + 0x01, 0x7f, 0x05, 0xe6, 0x04, 0x78, 0xcf, 0xb4, 0xb1, 0x6e, 0xed, 0x99, 0xc6, 0x1b, 0xb8, 0x35, + 0x01, 0xf4, 0x4f, 0xf7, 0x75, 0xd5, 0x76, 0x80, 0x9d, 0x20, 0xd7, 0x41, 0xf2, 0x7c, 0x15, 0xd5, + 0xe8, 0x74, 0x2d, 0xdb, 0x1d, 0x83, 0xf8, 0x33, 0xa2, 0xa7, 0x3c, 0xbe, 0x3a, 0x65, 0x5b, 0xae, + 0x01, 0x3b, 0xfd, 0x31, 0xa9, 0x4a, 0x7e, 0x86, 0x03, 0xe5, 0x7d, 0x2e, 0x6e, 0x38, 0x74, 0xab, + 0xd3, 0xd5, 0xec, 0x49, 0xec, 0xdf, 0x3f, 0x14, 0x86, 0x83, 0xb3, 0x70, 0xc3, 0x41, 0x3c, 0x3a, + 0x32, 0xdb, 0x4f, 0x80, 0xf0, 0xb3, 0xc2, 0x70, 0x08, 0x1e, 0x0e, 0x21, 0x1c, 0x86, 0x09, 0x20, + 0x7e, 0x4e, 0x40, 0x08, 0x1e, 0x02, 0xf1, 0xb2, 0x3f, 0xd1, 0xda, 0x78, 0xcf, 0x70, 0x5c, 0x9b, + 0xb9, 0xe4, 0x47, 0x43, 0xfd, 0xfc, 0x17, 0xc3, 0x4e, 0x98, 0x12, 0x60, 0x25, 0x96, 0x88, 0x6f, + 0x7d, 0xd0, 0x25, 0xdb, 0xf8, 0x8a, 0xfd, 0x82, 0xb0, 0x44, 0x01, 0x36, 0x52, 0xb7, 0x80, 0x87, + 0x48, 0xc4, 0xae, 0x93, 0x85, 0xca, 0x04, 0x70, 0xff, 0xa8, 0xaf, 0x72, 0x0d, 0xc1, 0x4b, 0x30, + 0x03, 0xfe, 0x4f, 0xcf, 0xbc, 0x85, 0x0f, 0x27, 0xd2, 0xce, 0x5f, 0xec, 0xf3, 0x7f, 0xb6, 0x19, + 0x27, 0xb3, 0x21, 0xc5, 0x3e, 0x7f, 0x0a, 0x8d, 0x3b, 0xeb, 0x37, 0xf7, 0x0d, 0x6f, 0xf3, 0xf6, + 0x86, 0xdd, 0xa9, 0xe5, 0x35, 0xa2, 0xe4, 0x61, 0xa7, 0x67, 0x3c, 0xd8, 0x87, 0xdf, 0xf6, 0xf4, + 0x3c, 0xe4, 0xf3, 0x2c, 0x5f, 0x83, 0x7c, 0xc8, 0xe1, 0x19, 0x0f, 0xf5, 0x8d, 0x1c, 0x2a, 0x17, + 0xf4, 0x77, 0x96, 0x2f, 0x43, 0x9c, 0x38, 0x2f, 0xe3, 0xd9, 0xbf, 0x89, 0xb3, 0x53, 0xf2, 0xe5, + 0x17, 0x20, 0x2d, 0x9c, 0x96, 0xf1, 0xac, 0xdf, 0xcc, 0x59, 0x3d, 0x16, 0xc2, 0x2e, 0x1c, 0x96, + 0xf1, 0xec, 0x7f, 0x43, 0xb0, 0x0b, 0x16, 0xc2, 0x3e, 0xb9, 0x08, 0x7f, 0xf9, 0x5b, 0xe3, 0x7c, + 0xd2, 0x11, 0xb2, 0xbb, 0x0a, 0x29, 0xee, 0xa9, 0x8c, 0xe7, 0xfe, 0x16, 0x5e, 0xb8, 0xe0, 0x58, + 0x7e, 0x16, 0x12, 0x13, 0x0a, 0xfc, 0xdb, 0x39, 0x2b, 0xa3, 0x5f, 0xae, 0x42, 0x36, 0xe0, 0x9d, + 0x8c, 0x67, 0xff, 0x0e, 0xce, 0x1e, 0xe4, 0x22, 0x55, 0xe7, 0xde, 0xc9, 0x78, 0x80, 0xbf, 0x29, + 0xaa, 0xce, 0x39, 0x88, 0xd8, 0x84, 0x63, 0x32, 0x9e, 0xfb, 0xa3, 0x42, 0xea, 0x82, 0x65, 0xf9, + 0x45, 0xc8, 0x78, 0x93, 0xcd, 0x78, 0xfe, 0xef, 0xe4, 0xfc, 0x3e, 0x0f, 0x91, 0x40, 0x60, 0xb2, + 0x1b, 0x0f, 0xf1, 0xb7, 0x84, 0x04, 0x02, 0x5c, 0x64, 0x18, 0xf5, 0x3b, 0x30, 0xe3, 0x91, 0xbe, + 0x4b, 0x0c, 0xa3, 0x3e, 0xff, 0x85, 0xf4, 0x26, 0xb5, 0xf9, 0xe3, 0x21, 0xbe, 0x5b, 0xf4, 0x26, + 0xa5, 0x27, 0xd5, 0xe8, 0xf7, 0x08, 0xc6, 0x63, 0x7c, 0xaf, 0xa8, 0x46, 0x9f, 0x43, 0xb0, 0xbc, + 0x05, 0x68, 0xd0, 0x1b, 0x18, 0x8f, 0xf7, 0x31, 0x8e, 0x37, 0x3d, 0xe0, 0x0c, 0x2c, 0xbf, 0x1f, + 0x4e, 0x0e, 0xf7, 0x04, 0xc6, 0xa3, 0x7e, 0xdf, 0xdb, 0x7d, 0x6b, 0xb7, 0xa0, 0x23, 0xb0, 0xdc, + 0xf4, 0xa7, 0x94, 0xa0, 0x17, 0x30, 0x1e, 0xf6, 0xfb, 0xdf, 0x0e, 0x1b, 0xee, 0xa0, 0x13, 0xb0, + 0x5c, 0x06, 0xf0, 0x27, 0xe0, 0xf1, 0x58, 0x9f, 0xe0, 0x58, 0x01, 0x26, 0x32, 0x34, 0xf8, 0xfc, + 0x3b, 0x9e, 0xff, 0x9e, 0x18, 0x1a, 0x9c, 0x83, 0x0c, 0x0d, 0x31, 0xf5, 0x8e, 0xe7, 0xfe, 0x01, + 0x31, 0x34, 0x04, 0x0b, 0xd1, 0xec, 0xc0, 0xec, 0x36, 0x1e, 0xe1, 0x53, 0x42, 0xb3, 0x03, 0x5c, + 0xcb, 0x1b, 0x30, 0x3d, 0x30, 0x21, 0x8e, 0x87, 0xfa, 0x21, 0x0e, 0x25, 0xf5, 0xcf, 0x87, 0xc1, + 0xc9, 0x8b, 0x4f, 0x86, 0xe3, 0xd1, 0x7e, 0xb8, 0x6f, 0xf2, 0xe2, 0x73, 0xe1, 0xf2, 0x55, 0x48, + 0x9b, 0xbd, 0x76, 0x9b, 0x0c, 0x1e, 0x74, 0xf4, 0xf9, 0xdc, 0xb9, 0xff, 0xfa, 0x25, 0x2e, 0x1d, + 0xc1, 0xb0, 0x7c, 0x19, 0x12, 0xb8, 0xb3, 0x83, 0x5b, 0xe3, 0x38, 0xbf, 0xf0, 0x25, 0x61, 0x30, + 0x09, 0xf5, 0xf2, 0x8b, 0x00, 0x2c, 0x34, 0x42, 0x37, 0xce, 0xc7, 0xf0, 0xfe, 0xfe, 0x97, 0xf8, + 0x81, 0x38, 0x9f, 0xc5, 0x07, 0x60, 0xc7, 0xeb, 0x8e, 0x06, 0xf8, 0x62, 0x18, 0x80, 0xf6, 0xc8, + 0xf3, 0x90, 0x7a, 0xdd, 0xb1, 0x4c, 0x57, 0xdb, 0x1b, 0xc7, 0xfd, 0x07, 0x9c, 0x5b, 0xd0, 0x13, + 0x81, 0x75, 0x2c, 0x1b, 0xbb, 0xda, 0x9e, 0x33, 0x8e, 0xf7, 0xbf, 0x71, 0x5e, 0x8f, 0x81, 0x30, + 0xeb, 0x9a, 0xe3, 0x4e, 0xd2, 0xee, 0xff, 0x2e, 0x98, 0x05, 0x03, 0xa9, 0x34, 0xf9, 0x7d, 0x0b, + 0x1f, 0x8e, 0xe3, 0xfd, 0x43, 0x51, 0x69, 0x4e, 0xbf, 0xfc, 0x02, 0x64, 0xc8, 0x4f, 0x76, 0xca, + 0x75, 0x0c, 0xf3, 0x1f, 0x71, 0x66, 0x9f, 0x83, 0x94, 0xec, 0xb8, 0x2d, 0xd7, 0x18, 0x2f, 0xec, + 0x3f, 0xe6, 0x3d, 0x2d, 0xe8, 0x97, 0xcb, 0x90, 0x75, 0xdc, 0x56, 0xab, 0xc7, 0xfd, 0xd3, 0x31, + 0xec, 0x7f, 0xf2, 0x25, 0x2f, 0x64, 0xe1, 0xf1, 0x90, 0xde, 0xbe, 0x73, 0xcb, 0xed, 0x5a, 0x74, + 0xbf, 0x65, 0x1c, 0xc2, 0xdb, 0x1c, 0x21, 0xc0, 0xb2, 0x5c, 0x85, 0x1c, 0x69, 0x8b, 0x8d, 0xbb, + 0x98, 0x6e, 0x8e, 0x8d, 0x81, 0xf8, 0x53, 0x2e, 0x80, 0x10, 0x53, 0xe5, 0xeb, 0x7f, 0xf5, 0xad, + 0xf9, 0xc8, 0x67, 0xdf, 0x9a, 0x8f, 0xfc, 0xf6, 0x5b, 0xf3, 0x91, 0x8f, 0x7e, 0x6e, 0x7e, 0xea, + 0xb3, 0x9f, 0x9b, 0x9f, 0xfa, 0xcd, 0xcf, 0xcd, 0x4f, 0x0d, 0x8f, 0x12, 0xc3, 0xaa, 0xb5, 0x6a, + 0xb1, 0xf8, 0xf0, 0x6b, 0x0f, 0xef, 0x19, 0xee, 0x7e, 0x6f, 0x67, 0x49, 0xb7, 0x3a, 0x17, 0x75, + 0xcb, 0xe9, 0x58, 0xce, 0xc5, 0x70, 0x5c, 0x97, 0xfe, 0x82, 0xff, 0x1d, 0x21, 0x6b, 0xe6, 0x70, + 0x38, 0x57, 0x33, 0x0f, 0x47, 0x5d, 0xa6, 0xbb, 0x02, 0xb1, 0xb2, 0x79, 0x88, 0x4e, 0x33, 0x03, + 0xa7, 0xf6, 0xec, 0x36, 0x3f, 0x6a, 0x99, 0x22, 0xdf, 0xdb, 0x76, 0x1b, 0xcd, 0xfa, 0xe7, 0xa1, + 0x23, 0xe7, 0x73, 0xfc, 0x90, 0x73, 0xe5, 0x3b, 0x22, 0xc7, 0x6b, 0x49, 0xba, 0x6c, 0x1e, 0xd2, + 0x86, 0x6c, 0x45, 0x5e, 0x7b, 0x7c, 0x6c, 0x9c, 0xfb, 0x96, 0x69, 0xdd, 0x31, 0x49, 0xb5, 0xbb, + 0x3b, 0x22, 0xc6, 0x3d, 0xdf, 0x1f, 0xe3, 0x7e, 0x3f, 0x6e, 0xb7, 0x5f, 0x22, 0x74, 0x4d, 0xc2, + 0xb2, 0x93, 0x64, 0xa7, 0xfa, 0xe1, 0xbb, 0xa2, 0x30, 0x3f, 0x10, 0xce, 0xe6, 0x4a, 0x30, 0x4a, + 0x08, 0xcb, 0x90, 0x5e, 0x11, 0xba, 0x35, 0x07, 0x29, 0x07, 0xeb, 0x96, 0xd9, 0x72, 0xa8, 0x20, + 0x62, 0x8a, 0xf8, 0x24, 0x82, 0x30, 0x35, 0xd3, 0x72, 0xf8, 0x61, 0x65, 0xf6, 0x51, 0xf9, 0xf8, + 0x31, 0x05, 0x91, 0x17, 0x25, 0x09, 0x69, 0x3c, 0x35, 0xa1, 0x34, 0x44, 0x23, 0x42, 0x91, 0xff, + 0x49, 0xa5, 0xf2, 0xbd, 0x51, 0x58, 0xe8, 0x97, 0x0a, 0x19, 0x59, 0x8e, 0xab, 0x75, 0xba, 0xa3, + 0xc4, 0x72, 0x15, 0x32, 0x4d, 0x41, 0x73, 0x6c, 0xb9, 0xdc, 0x3b, 0xa6, 0x5c, 0x0a, 0x5e, 0x51, + 0x42, 0x30, 0x97, 0x26, 0x14, 0x8c, 0xd7, 0x8e, 0xfb, 0x92, 0xcc, 0xff, 0x4a, 0xc2, 0x69, 0x36, + 0x9c, 0x54, 0x36, 0x94, 0xd8, 0x07, 0x97, 0x49, 0x2e, 0x98, 0x35, 0x7e, 0x9f, 0x44, 0x7e, 0x09, + 0x66, 0xea, 0xc4, 0x5a, 0x90, 0x55, 0x90, 0xbf, 0xc3, 0x33, 0xf4, 0x3c, 0xf7, 0x62, 0xc8, 0xe1, + 0xe7, 0xfb, 0x5b, 0xc1, 0x24, 0xf9, 0x1b, 0x22, 0x20, 0x35, 0x74, 0xad, 0xad, 0xd9, 0x5f, 0x2e, + 0x14, 0x7a, 0x16, 0x80, 0x1d, 0xf7, 0xf0, 0x2e, 0xee, 0x15, 0x2e, 0xcd, 0x2d, 0x05, 0x1b, 0xb7, + 0xc4, 0x4a, 0xa2, 0x27, 0xa8, 0x32, 0x94, 0x96, 0xfc, 0xbc, 0xf0, 0x0a, 0x80, 0x9f, 0x81, 0xce, + 0xc0, 0xa9, 0x46, 0xb5, 0xbc, 0x56, 0x56, 0xc4, 0x21, 0xa1, 0xc6, 0x56, 0xad, 0x5a, 0xbf, 0x56, + 0xaf, 0xad, 0x48, 0x53, 0xe8, 0x24, 0xa0, 0x60, 0xa6, 0x77, 0xa8, 0xe9, 0x04, 0x4c, 0x07, 0xd3, + 0xd9, 0x2d, 0x95, 0x28, 0xf1, 0x14, 0x8d, 0x4e, 0xb7, 0x8d, 0xe9, 0xce, 0xa3, 0x6a, 0x08, 0xa9, + 0x8d, 0x77, 0x42, 0x7e, 0xed, 0xdf, 0xb3, 0x9b, 0x0b, 0x33, 0x3e, 0xbb, 0x27, 0xf3, 0xe5, 0x35, + 0x98, 0xd6, 0x74, 0x1d, 0x77, 0x43, 0x90, 0x63, 0x4c, 0x35, 0x01, 0xa4, 0x7b, 0xa9, 0x9c, 0xd3, + 0x47, 0x7b, 0x16, 0x92, 0x0e, 0x6d, 0xfd, 0x38, 0x88, 0x5f, 0xe7, 0x10, 0x9c, 0x7c, 0xd9, 0x84, + 0x69, 0xe2, 0xf9, 0x69, 0x36, 0x0e, 0x54, 0xe3, 0xe8, 0x38, 0xc3, 0x3f, 0xfe, 0x99, 0x27, 0xe9, + 0xce, 0xea, 0xd9, 0x70, 0xb7, 0x0c, 0x51, 0x27, 0x45, 0xe2, 0xd8, 0x7e, 0x45, 0x31, 0x14, 0x44, + 0x79, 0xbc, 0xc2, 0x47, 0x17, 0xf6, 0x4b, 0xbc, 0xb0, 0xf9, 0x61, 0x3a, 0x10, 0x28, 0x29, 0xcf, + 0x51, 0x59, 0x46, 0xa5, 0x36, 0x6a, 0x4c, 0xbf, 0xf6, 0xd8, 0xe0, 0xec, 0xc4, 0xfe, 0x7b, 0x82, + 0x22, 0x5f, 0x0d, 0x16, 0xe3, 0x8d, 0xbd, 0x8f, 0xc7, 0x61, 0x5a, 0xeb, 0x18, 0xa6, 0x75, 0x91, + 0xfe, 0xcb, 0xc7, 0x5c, 0x82, 0x7e, 0x4c, 0xb0, 0x29, 0x79, 0x85, 0x0d, 0x85, 0xf1, 0x1a, 0xf3, + 0x47, 0xdf, 0xf6, 0xa3, 0x09, 0x7f, 0xb8, 0x2c, 0xaf, 0x83, 0x24, 0x0e, 0xf1, 0x62, 0x53, 0xb7, + 0x5a, 0x13, 0x45, 0x29, 0xfe, 0x58, 0x60, 0x88, 0xf8, 0x56, 0x8d, 0xb3, 0x2e, 0xbf, 0x17, 0xd2, + 0x1e, 0xcc, 0x38, 0xcf, 0x44, 0x80, 0x78, 0x1c, 0xc4, 0x2f, 0x61, 0x23, 0x73, 0x12, 0x2f, 0xf4, + 0x6d, 0xc1, 0xcf, 0x46, 0xe8, 0x06, 0x69, 0xcd, 0x2a, 0x14, 0x5a, 0x96, 0xe9, 0xaa, 0x56, 0xc7, + 0x70, 0x71, 0xa7, 0xeb, 0x8e, 0xf5, 0xeb, 0xfe, 0x94, 0x81, 0xa4, 0x95, 0x3c, 0xe1, 0xdb, 0x14, + 0x6c, 0xa4, 0x26, 0xec, 0x9e, 0xde, 0x24, 0x35, 0xf9, 0x1f, 0x5e, 0x4d, 0x28, 0x0f, 0xa9, 0xc9, + 0x7d, 0x69, 0x87, 0xd3, 0xba, 0xc5, 0x8d, 0xb9, 0x7b, 0xc0, 0xb4, 0xc0, 0xd3, 0x8e, 0x7f, 0x16, + 0x87, 0x79, 0x4e, 0xbc, 0xa3, 0x39, 0xf8, 0xe2, 0xed, 0xa7, 0x76, 0xb0, 0xab, 0x3d, 0x75, 0x51, + 0xb7, 0x0c, 0x31, 0x93, 0xcf, 0x70, 0x63, 0x4d, 0xf2, 0x97, 0x78, 0x7e, 0x69, 0xe8, 0x76, 0x77, + 0x69, 0xb4, 0x91, 0x2f, 0x0d, 0xea, 0xa0, 0xdc, 0x86, 0x78, 0xd5, 0x32, 0x4c, 0x32, 0xb7, 0xb5, + 0xb0, 0x69, 0x75, 0xb8, 0xb9, 0x65, 0x1f, 0xe8, 0x3a, 0x24, 0xb5, 0x8e, 0xd5, 0x33, 0x5d, 0x66, + 0x6a, 0x2b, 0x4f, 0xfe, 0xea, 0x9b, 0x0b, 0x53, 0xff, 0xe9, 0xcd, 0x85, 0x13, 0x0c, 0xd6, 0x69, + 0xdd, 0x5a, 0x32, 0xac, 0x8b, 0x1d, 0xcd, 0xdd, 0x27, 0xc3, 0xf7, 0x37, 0x3e, 0xf3, 0x04, 0xf0, + 0xf2, 0xea, 0xa6, 0xfb, 0xe9, 0xdf, 0xfb, 0xc9, 0x0b, 0x11, 0x85, 0xf3, 0x2f, 0xc7, 0x3f, 0xff, + 0xc9, 0x85, 0x88, 0xdc, 0x85, 0xd4, 0x0a, 0xd6, 0x8f, 0x28, 0xb0, 0xde, 0x57, 0xe0, 0x53, 0xbc, + 0xc0, 0x33, 0x83, 0x05, 0xb2, 0x03, 0x7b, 0x2b, 0x58, 0x0f, 0x14, 0xbb, 0x82, 0xf5, 0xbe, 0x12, + 0xeb, 0x90, 0xae, 0x9b, 0x2e, 0xbb, 0x6c, 0xf4, 0x02, 0xc4, 0x0c, 0x93, 0x9d, 0x5f, 0xcf, 0x54, + 0x1e, 0x3b, 0x46, 0x53, 0x14, 0xc2, 0x27, 0x6f, 0x42, 0x7a, 0x05, 0xeb, 0x0c, 0xaa, 0x0a, 0xb1, + 0x16, 0xd6, 0x39, 0xd4, 0x7d, 0x54, 0x92, 0x70, 0x57, 0x56, 0x7e, 0xf3, 0x77, 0xe6, 0xa7, 0x3e, + 0xf4, 0xd6, 0xfc, 0xd4, 0x48, 0x75, 0x92, 0xc7, 0xab, 0x93, 0xa7, 0x45, 0x3f, 0x1a, 0x87, 0x07, + 0xe9, 0x6d, 0x55, 0xbb, 0x63, 0x98, 0xee, 0x45, 0xdd, 0x3e, 0xec, 0xba, 0x16, 0x31, 0x2a, 0xd6, + 0x2e, 0x57, 0xa2, 0x69, 0x3f, 0x7b, 0x89, 0x65, 0x0f, 0x57, 0x21, 0x79, 0x17, 0x12, 0x5b, 0x84, + 0x8f, 0x74, 0x92, 0x6b, 0xb9, 0x5a, 0x9b, 0x7b, 0x42, 0xec, 0x83, 0xa4, 0xb2, 0x1b, 0xae, 0x51, + 0x96, 0x6a, 0x88, 0xcb, 0xad, 0x6d, 0xac, 0xed, 0xb2, 0x8b, 0x42, 0x31, 0xea, 0x42, 0xa7, 0x49, + 0x02, 0xbd, 0x13, 0x34, 0x0b, 0x09, 0xad, 0xc7, 0x0e, 0xf3, 0xc4, 0x88, 0x6f, 0x4d, 0x3f, 0xe4, + 0x97, 0x20, 0xc5, 0xf7, 0xf4, 0x91, 0x04, 0xb1, 0x5b, 0xf8, 0x90, 0x96, 0x93, 0x53, 0xc8, 0x4f, + 0xb4, 0x04, 0x09, 0x5a, 0x79, 0x7e, 0x03, 0x72, 0x6e, 0x69, 0xa0, 0xf6, 0x4b, 0xb4, 0x92, 0x0a, + 0x23, 0x93, 0x6f, 0x40, 0x7a, 0xc5, 0x22, 0x9a, 0x1d, 0x46, 0xcb, 0x30, 0x34, 0x5a, 0xe7, 0x6e, + 0x8f, 0xeb, 0x95, 0xc2, 0x3e, 0xd0, 0x49, 0x48, 0xb2, 0x8b, 0x63, 0xfc, 0x40, 0x12, 0xff, 0x92, + 0xab, 0x90, 0xa2, 0xd8, 0x9b, 0x5d, 0xe2, 0x86, 0x78, 0x67, 0xe9, 0x33, 0xfc, 0x1a, 0x31, 0x87, + 0x8f, 0xfa, 0x95, 0x45, 0x10, 0x6f, 0x69, 0xae, 0xc6, 0xdb, 0x4d, 0x7f, 0xcb, 0xef, 0x83, 0x34, + 0x07, 0x71, 0xd0, 0x25, 0x88, 0x59, 0x5d, 0x87, 0x1f, 0x29, 0x2a, 0x8d, 0x6a, 0xca, 0x66, 0xb7, + 0x12, 0x27, 0xba, 0xa4, 0x10, 0xe2, 0xca, 0xc6, 0x48, 0xb5, 0x78, 0x26, 0xa4, 0x16, 0x1d, 0xec, + 0xee, 0xec, 0xba, 0xfe, 0x0f, 0xd6, 0x9d, 0x03, 0xaa, 0xe0, 0x29, 0xca, 0xbd, 0x28, 0xcc, 0x07, + 0x72, 0x6f, 0x63, 0xdb, 0x31, 0x2c, 0x93, 0x69, 0x13, 0xd7, 0x14, 0x14, 0xa8, 0x20, 0xcf, 0x1f, + 0xa1, 0x2a, 0x2f, 0x40, 0xac, 0xdc, 0xed, 0xa2, 0x12, 0xa4, 0xe9, 0xb7, 0x6e, 0x31, 0x5d, 0x89, + 0x2b, 0xde, 0x37, 0xc9, 0x73, 0xac, 0x5d, 0xf7, 0x8e, 0x66, 0x7b, 0xf7, 0xaa, 0xc5, 0xb7, 0xfc, + 0x3c, 0x64, 0xaa, 0x96, 0xe9, 0x60, 0xd3, 0xe9, 0x51, 0xff, 0x7a, 0xa7, 0x6d, 0xe9, 0xb7, 0x38, + 0x02, 0xfb, 0x20, 0xc2, 0xd6, 0xba, 0x5d, 0xca, 0x19, 0x57, 0xc8, 0x4f, 0x36, 0xb2, 0x2b, 0x9b, + 0x23, 0xc5, 0x73, 0xf9, 0x78, 0xe2, 0xe1, 0x0d, 0xf4, 0x1d, 0xe5, 0x08, 0x3c, 0x30, 0x38, 0x90, + 0x6e, 0xe1, 0x43, 0xe7, 0xb8, 0xe3, 0xe8, 0x15, 0xc8, 0x6c, 0xd1, 0x27, 0x4f, 0x5e, 0xc2, 0x87, + 0xa8, 0x04, 0x29, 0xdc, 0xba, 0x74, 0xf9, 0xf2, 0x53, 0xcf, 0x33, 0x2d, 0xbf, 0x3e, 0xa5, 0x88, + 0x04, 0x34, 0x0f, 0x19, 0x07, 0xeb, 0xdd, 0x4b, 0x97, 0xaf, 0xdc, 0x7a, 0x8a, 0xa9, 0xd5, 0xf5, + 0x29, 0xc5, 0x4f, 0x5a, 0x4e, 0x93, 0x16, 0x7f, 0xfe, 0x53, 0x0b, 0x91, 0x4a, 0x02, 0x62, 0x4e, + 0xaf, 0xf3, 0xae, 0xe9, 0xc6, 0x1f, 0x26, 0x61, 0x31, 0x90, 0xcb, 0x26, 0xac, 0xdb, 0x5a, 0xdb, + 0x68, 0x69, 0xfe, 0x43, 0x35, 0x52, 0xa0, 0xfd, 0x94, 0x62, 0xc4, 0x4c, 0x74, 0xa4, 0x14, 0xe5, + 0x9f, 0x8e, 0x40, 0xee, 0xa6, 0x40, 0x6e, 0x60, 0x17, 0x5d, 0x05, 0xf0, 0x4a, 0x12, 0x43, 0xe5, + 0xcc, 0x52, 0x7f, 0x59, 0x4b, 0x1e, 0x8f, 0x12, 0x20, 0x47, 0xcf, 0x52, 0x05, 0xec, 0x5a, 0x0e, + 0xbf, 0x63, 0x3b, 0x86, 0xd5, 0x23, 0x46, 0x8f, 0x03, 0xa2, 0x56, 0x4d, 0xbd, 0x6d, 0xb9, 0x86, + 0xb9, 0xa7, 0x76, 0xad, 0x3b, 0xfc, 0xe5, 0x82, 0x98, 0x22, 0xd1, 0x9c, 0x9b, 0x34, 0x63, 0x8b, + 0xa4, 0x93, 0x4a, 0x67, 0x3c, 0x14, 0xb2, 0x54, 0xd4, 0x5a, 0x2d, 0x1b, 0x3b, 0x0e, 0x37, 0x5c, + 0xe2, 0x13, 0x5d, 0x85, 0x54, 0xb7, 0xb7, 0xa3, 0x0a, 0x2b, 0x91, 0xbd, 0xf4, 0xc0, 0xb0, 0x31, + 0x2f, 0x74, 0x83, 0x8f, 0xfa, 0x64, 0xb7, 0xb7, 0x43, 0x34, 0xe5, 0x2c, 0xe4, 0x86, 0x54, 0x26, + 0x7b, 0xdb, 0xaf, 0x07, 0x7d, 0x65, 0x87, 0xb7, 0x40, 0xed, 0xda, 0x86, 0x65, 0x1b, 0xee, 0x21, + 0x3d, 0x0a, 0x18, 0x53, 0x24, 0x91, 0xb1, 0xc5, 0xd3, 0xe5, 0x5b, 0x50, 0x6c, 0xd0, 0x25, 0x84, + 0x5f, 0xf3, 0xcb, 0x7e, 0xfd, 0x22, 0xe3, 0xeb, 0x37, 0xb2, 0x66, 0xd1, 0x81, 0x9a, 0x5d, 0xf8, + 0x0f, 0x11, 0xc8, 0x56, 0xc8, 0xc0, 0xad, 0xaf, 0x5c, 0x6b, 0x6b, 0x7b, 0xe8, 0x29, 0x38, 0x51, + 0x59, 0xdb, 0xac, 0xbe, 0xa4, 0xd6, 0x57, 0xd4, 0x6b, 0x6b, 0xe5, 0x55, 0xff, 0xec, 0x71, 0xe9, + 0xe4, 0xdd, 0x7b, 0x8b, 0x28, 0x40, 0xbb, 0x6d, 0xd2, 0x75, 0x2e, 0xba, 0x08, 0xb3, 0x61, 0x96, + 0x72, 0xa5, 0x51, 0xdb, 0x68, 0x4a, 0x91, 0xd2, 0x89, 0xbb, 0xf7, 0x16, 0xa7, 0x03, 0x1c, 0xe5, + 0x1d, 0x07, 0x9b, 0xee, 0x20, 0x43, 0x75, 0x73, 0x7d, 0xbd, 0xde, 0x94, 0xa2, 0x03, 0x0c, 0x55, + 0xab, 0xd3, 0x31, 0x5c, 0xf4, 0x28, 0x4c, 0x87, 0x19, 0x36, 0xea, 0x6b, 0x52, 0xac, 0x84, 0xee, + 0xde, 0x5b, 0x2c, 0x04, 0xa8, 0x37, 0x8c, 0x76, 0x29, 0xfd, 0x91, 0x1f, 0x9e, 0x9f, 0xfa, 0xf4, + 0xdf, 0x9e, 0x8f, 0x54, 0xd6, 0x47, 0x8e, 0xb9, 0xa7, 0x8f, 0x37, 0xe6, 0xc2, 0xf3, 0xf6, 0x97, + 0x1e, 0x08, 0x99, 0x1b, 0xee, 0x23, 0x06, 0x8c, 0xf1, 0xa4, 0xc3, 0x6d, 0x5c, 0xdc, 0xa3, 0x74, + 0xb4, 0x7b, 0x50, 0x1a, 0x33, 0x29, 0x94, 0xc6, 0x1a, 0x06, 0xf9, 0x79, 0xc8, 0x6f, 0x69, 0xb6, + 0xdb, 0xc0, 0xee, 0x75, 0xac, 0xb5, 0xb0, 0x1d, 0xf6, 0x1f, 0xf2, 0xc2, 0x7f, 0x40, 0x10, 0xa7, + 0x4e, 0x02, 0x9b, 0x3f, 0xe9, 0x6f, 0x79, 0x1f, 0xe2, 0xf4, 0x94, 0xb3, 0xe7, 0x5b, 0x70, 0x0e, + 0xe6, 0x5b, 0x90, 0x99, 0xe1, 0xd0, 0xc5, 0x8e, 0x08, 0xcd, 0xd1, 0x0f, 0xf4, 0x8c, 0xf0, 0x10, + 0x62, 0x47, 0x7b, 0x08, 0x7c, 0x78, 0x71, 0x3f, 0xa1, 0x0d, 0x29, 0xde, 0xc5, 0x5e, 0x45, 0x22, + 0x7e, 0x45, 0xd0, 0x3a, 0x14, 0xbb, 0x9a, 0xed, 0xd2, 0x5b, 0x8f, 0xfb, 0xb4, 0x15, 0x7c, 0x04, + 0x2f, 0x0c, 0xda, 0x93, 0x50, 0x63, 0x79, 0x29, 0xf9, 0x6e, 0x30, 0x51, 0xfe, 0x2f, 0x71, 0x48, + 0x72, 0x61, 0xbc, 0x00, 0x29, 0x2e, 0x56, 0x3e, 0xe6, 0x1e, 0x5c, 0x1a, 0x9c, 0x66, 0x97, 0xbc, + 0xe9, 0x90, 0xe3, 0x09, 0x1e, 0xf4, 0x08, 0xa4, 0xf5, 0x7d, 0xcd, 0x30, 0x55, 0xa3, 0xc5, 0x9d, + 0xe3, 0xec, 0x5b, 0x6f, 0x2e, 0xa4, 0xaa, 0x24, 0xad, 0xbe, 0xa2, 0xa4, 0x68, 0x66, 0xbd, 0x45, + 0x7c, 0x9a, 0x7d, 0x6c, 0xec, 0xed, 0xbb, 0xdc, 0x6e, 0xf0, 0x2f, 0xf4, 0x1c, 0xc4, 0x89, 0x42, + 0xf0, 0x3b, 0xf1, 0xa5, 0x81, 0x55, 0x8f, 0x17, 0x96, 0xaa, 0xa4, 0x49, 0xc1, 0x1f, 0xfd, 0xcf, + 0x0b, 0x11, 0x85, 0x72, 0xa0, 0x2a, 0xe4, 0xdb, 0x9a, 0xe3, 0xaa, 0x74, 0x3e, 0x26, 0xc5, 0x27, + 0x28, 0xc4, 0xe9, 0x41, 0x81, 0x70, 0xc1, 0xf2, 0xaa, 0x67, 0x09, 0x17, 0x4b, 0x6a, 0xa1, 0xf3, + 0x20, 0x51, 0x10, 0x9d, 0x8e, 0x40, 0xe6, 0x25, 0x26, 0xa9, 0xdc, 0x0b, 0x24, 0x9d, 0x0d, 0x4c, + 0xea, 0x2b, 0x9e, 0x81, 0x0c, 0xbd, 0x85, 0x4b, 0x49, 0xd8, 0xd1, 0xfa, 0x34, 0x49, 0xa0, 0x99, + 0xe7, 0xa0, 0xe8, 0x5b, 0x7d, 0x46, 0x92, 0x66, 0x28, 0x7e, 0x32, 0x25, 0x7c, 0x12, 0x66, 0x4d, + 0x7c, 0x40, 0x0f, 0xfb, 0x87, 0xa8, 0x33, 0x94, 0x1a, 0x91, 0xbc, 0x9b, 0x61, 0x8e, 0x87, 0xa1, + 0xa0, 0x0b, 0xe1, 0x33, 0x5a, 0xa0, 0xb4, 0x79, 0x2f, 0x95, 0x92, 0x9d, 0x86, 0xb4, 0xd6, 0xed, + 0x32, 0x82, 0x2c, 0xb7, 0xfa, 0xdd, 0x2e, 0xcd, 0xba, 0x00, 0xd3, 0xb4, 0x8d, 0x36, 0x76, 0x7a, + 0x6d, 0x97, 0x83, 0xe4, 0x28, 0x4d, 0x91, 0x64, 0x28, 0x2c, 0x9d, 0xd2, 0x3e, 0x04, 0x79, 0x7c, + 0xdb, 0x68, 0x61, 0x53, 0xc7, 0x8c, 0x2e, 0x4f, 0xe9, 0x72, 0x22, 0x91, 0x12, 0x3d, 0x0a, 0x9e, + 0x35, 0x57, 0xc5, 0x4c, 0x53, 0x60, 0x78, 0x22, 0xbd, 0xcc, 0x92, 0xe5, 0x39, 0x88, 0xaf, 0x68, + 0xae, 0x46, 0xdc, 0x25, 0xf7, 0x80, 0x4d, 0x9f, 0x39, 0x85, 0xfc, 0x94, 0x7f, 0x2e, 0x06, 0xf1, + 0x9b, 0x96, 0x8b, 0xd1, 0xd3, 0x01, 0x57, 0xb6, 0x30, 0x4c, 0x9f, 0x1b, 0xc6, 0x9e, 0x89, 0x5b, + 0xeb, 0xce, 0x5e, 0xe0, 0xc9, 0x1c, 0x5f, 0x9d, 0xa2, 0x21, 0x75, 0x9a, 0x85, 0x84, 0x6d, 0xf5, + 0xcc, 0x96, 0x38, 0x94, 0x4e, 0x3f, 0x50, 0x0d, 0xd2, 0x9e, 0x96, 0xc4, 0xc7, 0x69, 0x49, 0x91, + 0x68, 0x09, 0xd1, 0x61, 0x9e, 0xa0, 0xa4, 0x76, 0xb8, 0xb2, 0x54, 0x20, 0xe3, 0x19, 0x2f, 0xae, + 0x6d, 0x93, 0x29, 0xac, 0xcf, 0x46, 0xa6, 0x48, 0xaf, 0xef, 0x3d, 0xe1, 0x31, 0x8d, 0x93, 0xbc, + 0x0c, 0x2e, 0xbd, 0x90, 0x5a, 0xf1, 0xe7, 0x7b, 0x52, 0xb4, 0x5d, 0xbe, 0x5a, 0xb1, 0x27, 0x7c, + 0x1e, 0x80, 0x8c, 0x63, 0xec, 0x99, 0x9a, 0xdb, 0xb3, 0x31, 0xd7, 0x3c, 0x3f, 0x81, 0xe4, 0xfa, + 0x17, 0x34, 0x98, 0xa6, 0x05, 0x5e, 0x15, 0xbb, 0x08, 0x33, 0xfe, 0x7b, 0x5e, 0x3e, 0x0a, 0xd3, + 0x32, 0xe4, 0x65, 0x35, 0x44, 0x8e, 0xfc, 0xcb, 0x11, 0x48, 0xf2, 0x19, 0xcb, 0xef, 0x86, 0xc8, + 0xf0, 0x6e, 0x88, 0x8e, 0xea, 0x86, 0xd8, 0xfd, 0x77, 0x43, 0x19, 0xc0, 0xab, 0xa6, 0xc3, 0x1f, + 0x69, 0x19, 0xe2, 0x56, 0xb1, 0x2a, 0x36, 0x8c, 0x3d, 0x3e, 0xee, 0x03, 0x4c, 0xf2, 0x6f, 0x45, + 0x88, 0x87, 0xcf, 0xf3, 0x51, 0x19, 0xf2, 0xa2, 0x5e, 0xea, 0x6e, 0x5b, 0xdb, 0xe3, 0xaa, 0xf8, + 0xe0, 0xc8, 0xca, 0x91, 0x59, 0x58, 0xc9, 0xf2, 0xfa, 0x50, 0x7f, 0x62, 0x68, 0xb7, 0x46, 0x47, + 0x74, 0x6b, 0x48, 0x8f, 0x62, 0xf7, 0xa7, 0x47, 0xa1, 0x1e, 0x8f, 0xf7, 0xf5, 0xb8, 0xfc, 0x3b, + 0x11, 0xfe, 0x9a, 0x58, 0x8b, 0xdd, 0x2e, 0xf9, 0xf3, 0xea, 0xaa, 0xd7, 0xb8, 0x6e, 0xb5, 0x70, + 0x4b, 0x1d, 0xe8, 0xb3, 0x87, 0x06, 0x11, 0xc3, 0x75, 0xf6, 0xfb, 0x0e, 0x09, 0x94, 0x86, 0xdf, + 0x87, 0x9f, 0x89, 0xc2, 0xf4, 0x00, 0xfd, 0x5f, 0xbc, 0xbe, 0x0c, 0x8f, 0xde, 0xc4, 0x84, 0xa3, + 0x37, 0x39, 0x72, 0xf4, 0xfe, 0x4c, 0x94, 0x06, 0x00, 0xba, 0x96, 0xa3, 0xb5, 0xbf, 0x12, 0xb6, + 0xf7, 0x0c, 0x64, 0xba, 0x56, 0x5b, 0x65, 0x39, 0xec, 0x5a, 0x50, 0xba, 0x6b, 0xb5, 0x95, 0x01, + 0x35, 0x4b, 0xbc, 0x43, 0x86, 0x39, 0xf9, 0x0e, 0x74, 0x42, 0xaa, 0x7f, 0x40, 0xd9, 0x90, 0x63, + 0xa2, 0xe0, 0x5e, 0xd3, 0x93, 0x44, 0x06, 0xd4, 0x0d, 0x8b, 0x0c, 0x7a, 0x79, 0xac, 0xda, 0x8c, + 0x52, 0xe1, 0x74, 0x84, 0x83, 0x39, 0x19, 0xc3, 0x22, 0x47, 0x41, 0x8b, 0xa5, 0x70, 0x3a, 0xf9, + 0x7b, 0x22, 0x00, 0x6b, 0x44, 0xb2, 0xb4, 0xbd, 0xc4, 0xdf, 0x71, 0x68, 0x15, 0xd4, 0x50, 0xc9, + 0xf3, 0xa3, 0x3a, 0x8d, 0x97, 0x9f, 0x73, 0x82, 0xf5, 0xae, 0x42, 0xde, 0xd7, 0x6d, 0x07, 0x8b, + 0xca, 0xcc, 0x1f, 0xb1, 0x2a, 0x6d, 0x60, 0x57, 0xc9, 0xdd, 0x0e, 0x7c, 0xc9, 0xff, 0x34, 0x02, + 0x19, 0x5a, 0xa7, 0x75, 0xec, 0x6a, 0xa1, 0x3e, 0x8c, 0xdc, 0x7f, 0x1f, 0x3e, 0x08, 0xc0, 0x60, + 0x1c, 0xe3, 0x0d, 0xcc, 0x35, 0x2b, 0x43, 0x53, 0x1a, 0xc6, 0x1b, 0x18, 0x5d, 0xf1, 0x04, 0x1e, + 0x3b, 0x5a, 0xe0, 0x62, 0xd5, 0xca, 0xc5, 0x7e, 0x0a, 0x52, 0xf4, 0xbd, 0xcb, 0x03, 0x87, 0x2f, + 0x44, 0x93, 0x66, 0xaf, 0xd3, 0x3c, 0x70, 0xe4, 0xd7, 0x21, 0xd5, 0x3c, 0x60, 0xf1, 0xc4, 0x33, + 0x90, 0xb1, 0x2d, 0x8b, 0x7b, 0x7f, 0xcc, 0xeb, 0x4e, 0x93, 0x04, 0xea, 0xec, 0x88, 0x18, 0x5a, + 0xd4, 0x8f, 0xa1, 0xf9, 0x41, 0xc0, 0xd8, 0x44, 0x41, 0x40, 0xb2, 0xfa, 0xcc, 0x87, 0x46, 0x12, + 0x7a, 0x1c, 0x4e, 0x35, 0xea, 0xab, 0x1b, 0xb5, 0x15, 0x75, 0xbd, 0xb1, 0xda, 0x77, 0xe5, 0xbf, + 0x54, 0xbc, 0x7b, 0x6f, 0x31, 0xcb, 0x97, 0x9d, 0xa3, 0xa8, 0xb7, 0x94, 0xda, 0xcd, 0xcd, 0x66, + 0x4d, 0x8a, 0x30, 0xea, 0x2d, 0x1b, 0xdf, 0xb6, 0x5c, 0xf6, 0xa0, 0xec, 0x93, 0x70, 0x7a, 0x08, + 0xb5, 0xb7, 0xf8, 0x9c, 0xbe, 0x7b, 0x6f, 0x31, 0xbf, 0x65, 0x63, 0xa6, 0x65, 0x94, 0x63, 0x09, + 0xe6, 0x06, 0x39, 0x36, 0xb7, 0x36, 0x1b, 0xe5, 0x35, 0x69, 0xb1, 0x24, 0xdd, 0xbd, 0xb7, 0x98, + 0x13, 0x26, 0x83, 0xd0, 0xbf, 0xfb, 0xab, 0xcf, 0x6f, 0x49, 0x87, 0xa2, 0xc6, 0x6c, 0x5d, 0xd7, + 0xd5, 0x6c, 0xad, 0x73, 0xdc, 0xe5, 0xe7, 0x98, 0xc3, 0x08, 0xf2, 0x4f, 0x47, 0xa1, 0xe8, 0x2d, + 0x6e, 0xb6, 0x68, 0x09, 0xe8, 0xe9, 0x60, 0xc4, 0x2f, 0x3b, 0x72, 0xee, 0x60, 0xd4, 0x22, 0x20, + 0xf8, 0x5e, 0x48, 0x0b, 0x27, 0x99, 0x0f, 0xaa, 0xc5, 0x21, 0xf3, 0x1b, 0xa7, 0xe0, 0xac, 0x1e, + 0x07, 0x7a, 0x11, 0x32, 0xde, 0x10, 0xf3, 0x1e, 0x5d, 0x1b, 0x3d, 0x26, 0x39, 0xbf, 0xcf, 0x83, + 0x9e, 0xf7, 0x97, 0x71, 0xf1, 0x51, 0x0b, 0xc3, 0x9b, 0x8c, 0x80, 0x33, 0x7b, 0x4b, 0xb8, 0x27, + 0x21, 0xae, 0xed, 0xe8, 0x06, 0x37, 0xc0, 0x0f, 0x0c, 0xf2, 0x95, 0x2b, 0xd5, 0x3a, 0x67, 0xa2, + 0x94, 0x72, 0x9d, 0x07, 0x53, 0xb8, 0xbc, 0xe8, 0x13, 0x37, 0x07, 0x2a, 0x5b, 0x0b, 0x33, 0xef, + 0x22, 0xdd, 0xd1, 0x0e, 0x2a, 0x74, 0x39, 0x7c, 0x0a, 0x52, 0x24, 0x73, 0x8f, 0x3f, 0xa2, 0x10, + 0x53, 0x92, 0x1d, 0xed, 0x60, 0x55, 0x73, 0x6e, 0xc4, 0xd3, 0x31, 0x29, 0x2e, 0xff, 0x38, 0xf1, + 0x54, 0x42, 0x52, 0x41, 0x8f, 0x01, 0x22, 0x1c, 0xda, 0x1e, 0x56, 0xc9, 0xd0, 0xa5, 0xe2, 0x15, + 0xb8, 0xc5, 0x8e, 0x76, 0x50, 0xde, 0xc3, 0x1b, 0xbd, 0x0e, 0xad, 0x80, 0x83, 0xd6, 0x41, 0x12, + 0xc4, 0xa2, 0x67, 0xb9, 0xf8, 0x4f, 0x0f, 0x3e, 0xda, 0xca, 0x09, 0xd8, 0x04, 0xf0, 0x31, 0x32, + 0x01, 0x14, 0x18, 0x9e, 0x77, 0xfc, 0x24, 0xd4, 0x94, 0x58, 0xb8, 0x29, 0xf2, 0x8b, 0x50, 0xec, + 0xeb, 0x01, 0x24, 0x43, 0x9e, 0x47, 0xac, 0xe8, 0xd6, 0x3e, 0x5b, 0xe1, 0x64, 0x94, 0x2c, 0x8b, + 0x4c, 0xd1, 0xa3, 0x0e, 0xcb, 0xe9, 0x9f, 0xff, 0xe4, 0x42, 0x84, 0x6e, 0xfb, 0x3c, 0x06, 0xf9, + 0x50, 0x1f, 0x88, 0x28, 0x72, 0xc4, 0x8f, 0x22, 0xfb, 0xc4, 0xaf, 0x41, 0x8e, 0x18, 0x20, 0xdc, + 0xe2, 0xb4, 0x8f, 0x40, 0x91, 0x19, 0xc8, 0x7e, 0x59, 0x33, 0x87, 0x67, 0x5d, 0x08, 0x5c, 0x16, + 0x1e, 0x50, 0x58, 0xec, 0x59, 0x41, 0xb5, 0xaa, 0x39, 0xf2, 0x26, 0x80, 0xdf, 0xa9, 0xa8, 0x0c, + 0x0f, 0x12, 0xe3, 0x11, 0x3c, 0x8a, 0xca, 0x9f, 0xdb, 0x0a, 0x79, 0x8c, 0x25, 0x42, 0xe4, 0x1f, + 0x37, 0x65, 0x8f, 0x6e, 0x5d, 0xa7, 0x14, 0x95, 0x97, 0x3f, 0xfd, 0xd6, 0x7c, 0xe4, 0xdd, 0xb1, + 0x05, 0xff, 0xf1, 0x55, 0x38, 0x13, 0xc8, 0x24, 0x0a, 0x18, 0x0a, 0x44, 0x15, 0x03, 0xfa, 0x4a, + 0x32, 0xc7, 0x05, 0x94, 0x8e, 0x8c, 0xff, 0x96, 0x8e, 0x36, 0x3b, 0xe3, 0xa3, 0x4d, 0xe3, 0xe3, + 0x5d, 0xc3, 0x83, 0xf2, 0xff, 0x24, 0x03, 0x29, 0x05, 0x7f, 0xb0, 0x87, 0x1d, 0x17, 0x5d, 0x82, + 0x38, 0xd6, 0xf7, 0xad, 0x61, 0x31, 0x50, 0xd2, 0xc0, 0x25, 0x4e, 0x57, 0xd3, 0xf7, 0xad, 0xeb, + 0x53, 0x0a, 0xa5, 0x45, 0x97, 0x21, 0xb1, 0xdb, 0xee, 0xf1, 0xf0, 0x55, 0x9f, 0xcd, 0x0a, 0x32, + 0x5d, 0x23, 0x44, 0xd7, 0xa7, 0x14, 0x46, 0x4d, 0x8a, 0xa2, 0xaf, 0x6d, 0xc7, 0x8e, 0x2e, 0xaa, + 0x6e, 0xee, 0xd2, 0xa2, 0x08, 0x2d, 0xaa, 0x00, 0x18, 0xa6, 0xe1, 0xaa, 0x34, 0xb4, 0xc3, 0xad, + 0xc6, 0xd9, 0xd1, 0x9c, 0x86, 0x4b, 0x83, 0x41, 0xd7, 0xa7, 0x94, 0x8c, 0x21, 0x3e, 0x48, 0x75, + 0x3f, 0xd8, 0xc3, 0xf6, 0x21, 0xf7, 0xd6, 0x46, 0x56, 0xf7, 0x65, 0x42, 0x44, 0xaa, 0x4b, 0xa9, + 0x89, 0x91, 0x65, 0x0f, 0xf7, 0xb9, 0x07, 0xfc, 0x39, 0xda, 0x85, 0x51, 0x9c, 0xf4, 0xf5, 0xbe, + 0xe6, 0xc1, 0xf5, 0x29, 0x25, 0xa5, 0xb3, 0x9f, 0xe8, 0x39, 0xcf, 0x05, 0xcb, 0x0e, 0x7a, 0x3d, + 0x21, 0x5e, 0x16, 0xf6, 0x99, 0x12, 0xae, 0x18, 0xda, 0x80, 0x42, 0xdb, 0x70, 0x5c, 0xd5, 0x31, + 0xb5, 0xae, 0xb3, 0x6f, 0xb9, 0x0e, 0x8d, 0x9f, 0x64, 0x2f, 0x3d, 0x3c, 0x0a, 0x61, 0xcd, 0x70, + 0xdc, 0x86, 0x20, 0xbe, 0x3e, 0xa5, 0xe4, 0xdb, 0xc1, 0x04, 0x82, 0x67, 0xed, 0xee, 0x62, 0xdb, + 0x03, 0xa4, 0x71, 0x96, 0x23, 0xf0, 0x36, 0x09, 0xb5, 0xe0, 0x27, 0x78, 0x56, 0x30, 0x01, 0x7d, + 0x0d, 0xcc, 0xb4, 0x2d, 0xad, 0xe5, 0xc1, 0xa9, 0xfa, 0x7e, 0xcf, 0xbc, 0x45, 0x83, 0x32, 0xd9, + 0x4b, 0x8f, 0x8e, 0xac, 0xa4, 0xa5, 0xb5, 0x04, 0x44, 0x95, 0x30, 0x5c, 0x9f, 0x52, 0xa6, 0xdb, + 0xfd, 0x89, 0xe8, 0x03, 0x30, 0xab, 0x75, 0xbb, 0xed, 0xc3, 0x7e, 0xf4, 0x22, 0x45, 0xbf, 0x30, + 0x0a, 0xbd, 0x4c, 0x78, 0xfa, 0xe1, 0x91, 0x36, 0x90, 0x8a, 0x9a, 0x20, 0x75, 0x6d, 0x4c, 0x6f, + 0x73, 0x75, 0xb9, 0x97, 0x41, 0xdf, 0xba, 0xca, 0x5e, 0x3a, 0x37, 0x0a, 0x7b, 0x8b, 0xd1, 0x0b, + 0xa7, 0xe4, 0xfa, 0x94, 0x52, 0xec, 0x86, 0x93, 0x18, 0xaa, 0xa5, 0x63, 0xfa, 0x14, 0x1f, 0x47, + 0x9d, 0x1e, 0x87, 0x4a, 0xe9, 0xc3, 0xa8, 0xa1, 0x24, 0x54, 0x83, 0x2c, 0x5b, 0x8a, 0xaa, 0xc4, + 0x18, 0xd2, 0x17, 0xb2, 0xb2, 0x97, 0xe4, 0x91, 0x23, 0x94, 0x92, 0xde, 0xb4, 0x5c, 0x7c, 0x7d, + 0x4a, 0x01, 0xec, 0x7d, 0x21, 0x0d, 0x4e, 0xd0, 0xc7, 0xc2, 0x0e, 0xd5, 0xb0, 0xe1, 0x9d, 0x9b, + 0xa1, 0x80, 0x8f, 0x8d, 0x02, 0xbc, 0x49, 0x99, 0x6e, 0x06, 0xed, 0xf0, 0xf5, 0x29, 0x65, 0xe6, + 0xf6, 0x60, 0x32, 0x51, 0xb1, 0x5d, 0xc3, 0xd4, 0xda, 0xc6, 0x1b, 0x98, 0x4d, 0xa1, 0xf4, 0x99, + 0xcc, 0x23, 0x54, 0xec, 0x1a, 0xa7, 0xa6, 0x13, 0x2b, 0x51, 0xb1, 0xdd, 0x60, 0x42, 0x25, 0xc5, + 0xcf, 0xa1, 0x7a, 0xcf, 0xbe, 0xa5, 0xa4, 0x34, 0x7b, 0xea, 0xed, 0x46, 0x3c, 0x0d, 0x52, 0x56, + 0x3e, 0x07, 0xd9, 0x80, 0x61, 0x42, 0x73, 0x90, 0xe2, 0x27, 0x75, 0xc4, 0x89, 0x56, 0xfe, 0x29, + 0x17, 0x20, 0x17, 0x34, 0x46, 0xf2, 0x47, 0x23, 0x1e, 0x27, 0x7d, 0xef, 0x62, 0x2e, 0x1c, 0x91, + 0xce, 0xf8, 0x9e, 0xca, 0x43, 0x62, 0x6a, 0x13, 0xf9, 0x6c, 0xfb, 0x35, 0x47, 0x13, 0xf9, 0xcc, + 0x8a, 0x16, 0x20, 0xdb, 0xbd, 0xd4, 0xf5, 0x48, 0x62, 0x94, 0x04, 0xba, 0x97, 0xba, 0x82, 0xe0, + 0x2c, 0xe4, 0x48, 0xbb, 0xd5, 0xa0, 0xbf, 0x94, 0x51, 0xb2, 0x24, 0x8d, 0x93, 0xc8, 0xff, 0x3a, + 0x0a, 0x52, 0xbf, 0x01, 0xf3, 0x42, 0xd5, 0x91, 0x63, 0x87, 0xaa, 0x4f, 0xf7, 0x07, 0xc9, 0xfd, + 0xb8, 0xf8, 0x1a, 0x48, 0x7e, 0x78, 0x97, 0x4d, 0x35, 0xa3, 0xfd, 0xbf, 0x3e, 0x47, 0x55, 0x29, + 0xea, 0x7d, 0x9e, 0xeb, 0xb5, 0xd0, 0x66, 0xa5, 0xf8, 0x73, 0x14, 0xfd, 0x1d, 0xee, 0x39, 0x31, + 0xdb, 0xdd, 0x96, 0xe6, 0x62, 0x11, 0x1f, 0x0b, 0xec, 0x5b, 0x3e, 0x02, 0x45, 0xad, 0xdb, 0x55, + 0x1d, 0x57, 0x73, 0x31, 0xf7, 0x35, 0x58, 0xe4, 0x21, 0xaf, 0x75, 0xbb, 0x0d, 0x92, 0xca, 0x7c, + 0x8d, 0x87, 0xa1, 0x40, 0x6c, 0xba, 0xa1, 0xb5, 0x85, 0xab, 0x90, 0x64, 0x2e, 0x09, 0x4f, 0x65, + 0xde, 0x81, 0xdc, 0xf2, 0x7a, 0x9c, 0xda, 0x73, 0x6f, 0x4d, 0x15, 0x09, 0xac, 0xa9, 0x10, 0x7f, + 0x87, 0x84, 0xc9, 0x47, 0xbc, 0xdd, 0x32, 0x7c, 0xd3, 0x60, 0x96, 0xae, 0xbf, 0x6e, 0xb3, 0x60, + 0x49, 0x5a, 0x61, 0x1f, 0xb2, 0x02, 0x85, 0xb0, 0xed, 0x47, 0x05, 0x88, 0xba, 0x07, 0xbc, 0x94, + 0xa8, 0x7b, 0x40, 0x3c, 0x5d, 0xef, 0xf5, 0xde, 0xc2, 0x90, 0xd9, 0x8e, 0xf3, 0xf9, 0xb1, 0x0e, + 0xb9, 0x08, 0xf9, 0xd0, 0x9c, 0x20, 0x9f, 0x84, 0xd9, 0x61, 0x26, 0x5e, 0xde, 0xf7, 0xd2, 0x43, + 0xa6, 0x1a, 0x5d, 0x86, 0xb4, 0x67, 0xe3, 0x87, 0xac, 0x8e, 0x69, 0xb1, 0x82, 0x58, 0xf1, 0x48, + 0x43, 0xe1, 0xfc, 0x68, 0x28, 0x9c, 0x2f, 0x7f, 0x3d, 0xcc, 0x8d, 0xb2, 0xdf, 0x7d, 0x41, 0xbe, + 0xb8, 0x27, 0xb0, 0x93, 0x90, 0xe4, 0xcf, 0x64, 0x46, 0xe9, 0x06, 0x16, 0xff, 0x22, 0x82, 0x64, + 0xb6, 0x3c, 0xc6, 0xf6, 0xb5, 0xe8, 0x87, 0xac, 0xc2, 0xe9, 0x91, 0x36, 0x7c, 0xf4, 0x56, 0x18, + 0x03, 0xe2, 0x5b, 0x61, 0xba, 0xa8, 0x8e, 0x43, 0xdb, 0x2a, 0x0e, 0xb2, 0xb0, 0x2f, 0xf9, 0x63, + 0x31, 0x38, 0x39, 0xdc, 0x92, 0xa3, 0x45, 0xc8, 0x11, 0xbf, 0xd5, 0x0d, 0xbb, 0xb8, 0xd0, 0xd1, + 0x0e, 0x9a, 0xdc, 0xbf, 0xe5, 0x5b, 0x09, 0x51, 0x6f, 0x2b, 0x01, 0x6d, 0xc3, 0x74, 0xdb, 0xd2, + 0xb5, 0xb6, 0x1a, 0xd8, 0xca, 0xe1, 0x83, 0xe8, 0xa1, 0x01, 0x61, 0x87, 0x43, 0x86, 0xc4, 0xe0, + 0x70, 0xfd, 0x2f, 0x52, 0x8c, 0x35, 0x6f, 0xd7, 0x07, 0xad, 0x40, 0xb6, 0x63, 0x38, 0x3b, 0x78, + 0x5f, 0xbb, 0x6d, 0x58, 0x36, 0x1f, 0x4d, 0x83, 0x4a, 0xb3, 0xee, 0xd3, 0x88, 0x1d, 0xa6, 0x00, + 0x5b, 0xa0, 0x4b, 0x12, 0x43, 0x37, 0xbe, 0x92, 0xc7, 0xb6, 0x26, 0xa3, 0xf6, 0x90, 0x52, 0x23, + 0xf7, 0x90, 0x86, 0x6d, 0xd8, 0xa4, 0x87, 0x6f, 0xd8, 0x7c, 0x24, 0xd8, 0x35, 0xe1, 0xb9, 0x6f, + 0x60, 0x0f, 0x07, 0x35, 0x60, 0x96, 0xf3, 0xb7, 0x42, 0xb2, 0x1f, 0x72, 0xd4, 0x81, 0x8d, 0xaf, + 0x7e, 0x99, 0x23, 0xc1, 0x3e, 0x5a, 0xec, 0xb1, 0xfb, 0x13, 0xbb, 0xd8, 0x44, 0x8d, 0x07, 0x36, + 0x51, 0xff, 0x1f, 0xeb, 0x8a, 0x0f, 0xc7, 0x60, 0x7a, 0xc0, 0x91, 0x18, 0xba, 0x3b, 0x3c, 0x2a, + 0x22, 0x2b, 0x1a, 0x16, 0x3b, 0x76, 0xc3, 0x78, 0x5f, 0xc7, 0xc7, 0xf7, 0x75, 0xe2, 0x1d, 0xec, + 0xeb, 0xe4, 0xfd, 0xf5, 0xf5, 0xbb, 0xda, 0x0b, 0x9f, 0x88, 0x40, 0x69, 0xb4, 0xf7, 0x35, 0xb4, + 0x3b, 0x8e, 0xb5, 0x81, 0x30, 0x6a, 0x8e, 0x7b, 0x18, 0x0a, 0x7d, 0xbe, 0x21, 0x53, 0xe5, 0x7c, + 0x68, 0x15, 0x2e, 0x7f, 0x63, 0xcc, 0x9b, 0x78, 0x42, 0x0e, 0xdc, 0x90, 0xd1, 0xfa, 0x32, 0xcc, + 0xb4, 0xb0, 0x6e, 0xb4, 0xee, 0x77, 0xb0, 0x4e, 0x73, 0xee, 0xff, 0x3f, 0x56, 0x07, 0xb5, 0xe4, + 0xbb, 0x01, 0xd2, 0x0a, 0x76, 0xba, 0xc4, 0x1f, 0x43, 0x15, 0xc8, 0xe0, 0x03, 0x1d, 0x77, 0x5d, + 0xff, 0x50, 0xc5, 0xb0, 0x25, 0x02, 0xa3, 0xae, 0x09, 0x4a, 0xb2, 0x40, 0xf6, 0xd8, 0xd0, 0xd3, + 0x3c, 0x06, 0x30, 0x7a, 0x39, 0xcf, 0xd9, 0x83, 0x41, 0x80, 0x2b, 0x22, 0x08, 0x10, 0x1b, 0xb9, + 0xbe, 0x65, 0x5c, 0x7d, 0x51, 0x80, 0xa7, 0x79, 0x14, 0x20, 0x3e, 0xa6, 0xb0, 0x50, 0x18, 0xa0, + 0x1a, 0x0a, 0x03, 0x24, 0xc7, 0x34, 0x73, 0x44, 0x1c, 0xe0, 0x8a, 0x88, 0x03, 0xa4, 0xc6, 0xd4, + 0xb8, 0x2f, 0x10, 0xf0, 0x42, 0x20, 0x10, 0x90, 0x19, 0x8c, 0xb6, 0x86, 0x58, 0x87, 0x44, 0x02, + 0x9e, 0xf7, 0x22, 0x01, 0xb9, 0x91, 0x51, 0x04, 0xce, 0xdc, 0x1f, 0x0a, 0xd8, 0x1c, 0x08, 0x05, + 0xe4, 0xf9, 0x1f, 0x5d, 0x1a, 0x05, 0x31, 0x26, 0x16, 0xb0, 0x39, 0x10, 0x0b, 0x28, 0x8c, 0x01, + 0x1c, 0x13, 0x0c, 0xf8, 0xda, 0xe1, 0xc1, 0x80, 0xd1, 0xcb, 0x75, 0x5e, 0xcd, 0xc9, 0xa2, 0x01, + 0xea, 0x88, 0x68, 0x80, 0x34, 0x72, 0xe5, 0xca, 0xe0, 0x27, 0x0e, 0x07, 0x6c, 0x0f, 0x09, 0x07, + 0xb0, 0x85, 0xfb, 0xf9, 0x91, 0xe0, 0x13, 0xc4, 0x03, 0xb6, 0x87, 0xc4, 0x03, 0xd0, 0x58, 0xd8, + 0xb1, 0x01, 0x81, 0x6b, 0xe1, 0x80, 0xc0, 0xcc, 0x08, 0xaf, 0xd3, 0x1f, 0xed, 0x23, 0x22, 0x02, + 0x3b, 0xa3, 0x22, 0x02, 0x6c, 0xd5, 0xfe, 0xf8, 0x48, 0xc4, 0x63, 0x84, 0x04, 0x36, 0x07, 0x42, + 0x02, 0x27, 0xc6, 0x68, 0xda, 0xe4, 0x31, 0x01, 0xf6, 0x08, 0x3c, 0x7b, 0xfe, 0x1d, 0xa4, 0xec, + 0x8d, 0x78, 0x3a, 0x2b, 0xe5, 0xe4, 0x47, 0x89, 0x07, 0xd3, 0x67, 0xe7, 0xc8, 0x5a, 0x01, 0xdb, + 0xb6, 0x65, 0x8b, 0x3b, 0x16, 0xf4, 0x43, 0x3e, 0x4f, 0xd6, 0x88, 0xbe, 0x4d, 0x3b, 0x22, 0x7e, + 0x40, 0xd7, 0x64, 0x01, 0x3b, 0x26, 0xff, 0x7c, 0xc4, 0xe7, 0xa5, 0x11, 0x84, 0xe0, 0xfa, 0x32, + 0xc3, 0xd7, 0x97, 0x81, 0xa8, 0x42, 0x34, 0x1c, 0x55, 0x58, 0x80, 0x2c, 0x59, 0x6b, 0xf5, 0x05, + 0x0c, 0xb4, 0xae, 0x17, 0x30, 0x10, 0x07, 0xa8, 0x58, 0xec, 0x81, 0x4f, 0x4b, 0x6c, 0x37, 0xb1, + 0xe8, 0x1d, 0x26, 0x63, 0x4b, 0x5d, 0xf4, 0x04, 0xcc, 0x04, 0x68, 0xbd, 0x35, 0x1c, 0x5b, 0x3d, + 0x4b, 0x1e, 0x75, 0x99, 0x2f, 0xe6, 0xfe, 0x79, 0xc4, 0x97, 0x90, 0x1f, 0x69, 0x18, 0x16, 0x14, + 0x88, 0xbc, 0x43, 0x41, 0x81, 0xe8, 0x7d, 0x07, 0x05, 0x82, 0x6b, 0xd2, 0x58, 0x78, 0x4d, 0xfa, + 0x3f, 0x23, 0x7e, 0x9f, 0x78, 0x4b, 0x7c, 0xdd, 0x6a, 0x61, 0xbe, 0x4a, 0xa4, 0xbf, 0x89, 0x4b, + 0xd2, 0xb6, 0xf6, 0xf8, 0x5a, 0x90, 0xfc, 0x24, 0x54, 0xde, 0xc4, 0x93, 0xe1, 0xf3, 0x8a, 0xb7, + 0xc0, 0x4c, 0x04, 0xef, 0x71, 0xf0, 0xcb, 0x0d, 0x49, 0xff, 0x72, 0x83, 0x77, 0x31, 0x3a, 0x15, + 0xb8, 0x18, 0x8d, 0x9e, 0x83, 0x0c, 0x0d, 0xf6, 0xab, 0x56, 0x57, 0xfc, 0xc5, 0xb2, 0x33, 0xa3, + 0x2f, 0x36, 0x38, 0xf4, 0xc8, 0x35, 0xbb, 0x0c, 0xe1, 0x7b, 0x1c, 0x99, 0x90, 0xc7, 0xf1, 0x00, + 0x64, 0x48, 0xed, 0xd9, 0x5f, 0xde, 0x00, 0x7e, 0xab, 0x5e, 0x24, 0xc8, 0x3f, 0x11, 0x85, 0x62, + 0xdf, 0x44, 0x33, 0xb4, 0xed, 0xc3, 0xb6, 0x91, 0x27, 0x93, 0xc7, 0x3c, 0xc0, 0x9e, 0xe6, 0xa8, + 0x77, 0x34, 0xd3, 0xc5, 0x2d, 0x2e, 0x94, 0x40, 0x0a, 0x2a, 0x41, 0x9a, 0x7c, 0xf5, 0x1c, 0xdc, + 0xe2, 0xd1, 0x17, 0xef, 0x1b, 0x5d, 0x87, 0x24, 0xbe, 0x4d, 0x5f, 0x9e, 0x65, 0xef, 0x37, 0x9f, + 0x1c, 0x5c, 0x0e, 0x93, 0xec, 0xca, 0x1c, 0xe9, 0xec, 0x2f, 0xbc, 0xb9, 0x20, 0x31, 0xea, 0xc7, + 0xbd, 0xcb, 0x6c, 0x0a, 0xe7, 0x0f, 0x4b, 0x21, 0xdd, 0x27, 0x05, 0x1a, 0x07, 0xcc, 0x89, 0xe5, + 0x3d, 0x91, 0x29, 0x3b, 0xe3, 0xad, 0xe4, 0x3b, 0xb8, 0xd3, 0xb5, 0xac, 0xb6, 0xca, 0xc6, 0x78, + 0x19, 0x0a, 0xe1, 0x79, 0x95, 0xfd, 0x55, 0x2c, 0x57, 0x33, 0x4c, 0x35, 0xe4, 0x04, 0xe7, 0x58, + 0x22, 0x1b, 0x53, 0x37, 0xe2, 0xe9, 0x88, 0x14, 0xbd, 0x11, 0x4f, 0x47, 0xa5, 0x98, 0xbc, 0x05, + 0x27, 0x86, 0xce, 0xab, 0xe8, 0x59, 0xc8, 0xf8, 0x53, 0x32, 0x3b, 0xa6, 0x7f, 0x44, 0xa4, 0xc5, + 0xa7, 0x95, 0x7f, 0x29, 0xe2, 0x43, 0x86, 0x63, 0x37, 0x35, 0x48, 0xb2, 0x33, 0x93, 0xfc, 0x7c, + 0xcc, 0x13, 0x93, 0xcd, 0xc8, 0x4b, 0xec, 0x40, 0xa5, 0xc2, 0x99, 0xe5, 0x0f, 0x40, 0x92, 0xa5, + 0xa0, 0x2c, 0xa4, 0xfc, 0x37, 0xae, 0x01, 0x92, 0xe5, 0x6a, 0xb5, 0xb6, 0x25, 0x1e, 0xac, 0xad, + 0x6c, 0x2a, 0x4d, 0x29, 0x4a, 0x92, 0x95, 0xda, 0x8d, 0x5a, 0xb5, 0x29, 0xc5, 0xd0, 0x34, 0xe4, + 0xd9, 0x6f, 0xf5, 0xda, 0xa6, 0xb2, 0x5e, 0x6e, 0x4a, 0xf1, 0x40, 0x52, 0xa3, 0xb6, 0xb1, 0x52, + 0x53, 0xa4, 0x84, 0xfc, 0x14, 0x9c, 0x1e, 0x39, 0x87, 0xfb, 0x81, 0x99, 0x48, 0x20, 0x30, 0x23, + 0x7f, 0x2c, 0x4a, 0x16, 0x35, 0xa3, 0x26, 0x66, 0x74, 0xa3, 0xaf, 0xe1, 0x97, 0x8e, 0x31, 0xab, + 0xf7, 0xb5, 0x9e, 0xac, 0x63, 0x6c, 0xbc, 0x8b, 0x5d, 0x7d, 0x9f, 0x39, 0x0a, 0xcc, 0x02, 0xe5, + 0x95, 0x3c, 0x4f, 0xa5, 0x4c, 0x0e, 0x23, 0x7b, 0x1d, 0xeb, 0xae, 0xca, 0x94, 0xc8, 0xe1, 0x7f, + 0xc4, 0x37, 0xcf, 0x52, 0x1b, 0x2c, 0x51, 0xfe, 0xfa, 0x63, 0xc9, 0x32, 0x03, 0x09, 0xa5, 0xd6, + 0x54, 0x5e, 0x95, 0x62, 0x08, 0x41, 0x81, 0xfe, 0x54, 0x1b, 0x1b, 0xe5, 0xad, 0xc6, 0xf5, 0x4d, + 0x22, 0xcb, 0x19, 0x28, 0x0a, 0x59, 0x8a, 0xc4, 0x84, 0xfc, 0x18, 0x9c, 0x1a, 0xe1, 0x55, 0x0c, + 0x39, 0xc4, 0xfa, 0xa9, 0x48, 0x90, 0x3a, 0xec, 0x19, 0x6c, 0x42, 0xd2, 0x71, 0x35, 0xb7, 0xe7, + 0x70, 0x21, 0x3e, 0x3b, 0xa9, 0x9b, 0xb1, 0x24, 0x7e, 0x34, 0x28, 0xbb, 0xc2, 0x61, 0xe4, 0xcb, + 0x50, 0x08, 0xe7, 0x8c, 0x96, 0x81, 0xaf, 0x44, 0x51, 0xf9, 0x2a, 0xa0, 0x41, 0xef, 0x63, 0xc8, + 0xf2, 0x32, 0x32, 0x6c, 0x79, 0xf9, 0x23, 0x11, 0x38, 0x73, 0x84, 0xa7, 0x81, 0x5e, 0xee, 0x6b, + 0xe4, 0xf3, 0xc7, 0xf1, 0x53, 0x96, 0x58, 0x5a, 0x5f, 0x33, 0x9f, 0x86, 0x5c, 0x30, 0x7d, 0xb2, + 0x46, 0x7e, 0x21, 0xea, 0x0f, 0xe2, 0xf0, 0x3a, 0xd8, 0x37, 0x81, 0x91, 0x2f, 0xd3, 0x04, 0xbe, + 0x17, 0xc0, 0x3d, 0x10, 0xa7, 0xa8, 0xf9, 0x3c, 0xfa, 0xe0, 0x90, 0xf8, 0x22, 0xd6, 0x9b, 0x07, + 0x7c, 0x10, 0x64, 0x5c, 0xfe, 0xcb, 0x41, 0x8d, 0x60, 0x50, 0xa0, 0x47, 0xe7, 0x58, 0xc7, 0xfb, + 0x13, 0xbe, 0x93, 0x4d, 0xc6, 0x7e, 0xf0, 0x80, 0x25, 0x3b, 0xe8, 0x55, 0x38, 0xd5, 0xe7, 0x28, + 0x78, 0xd0, 0xf1, 0x49, 0xfd, 0x85, 0x13, 0x61, 0x7f, 0x41, 0x40, 0x07, 0x67, 0xfb, 0x44, 0x78, + 0xb6, 0x7f, 0x15, 0xc0, 0x0f, 0x0e, 0xf8, 0xc7, 0xfe, 0x22, 0xc1, 0x63, 0x7f, 0x97, 0x21, 0x41, + 0x34, 0x49, 0xc8, 0x69, 0xd0, 0x14, 0x13, 0x4d, 0x08, 0x04, 0x17, 0x18, 0xb5, 0x6c, 0x00, 0x1a, + 0x0c, 0xd0, 0x8e, 0x28, 0xe2, 0x85, 0x70, 0x11, 0x67, 0x47, 0x86, 0x7a, 0x87, 0x17, 0xf5, 0x06, + 0x24, 0x68, 0xcf, 0x0f, 0xbd, 0x4b, 0xf9, 0x75, 0x00, 0x9a, 0xeb, 0xda, 0xc6, 0x4e, 0xcf, 0x2f, + 0x60, 0x61, 0xb8, 0xe6, 0x94, 0x05, 0x5d, 0xe5, 0x01, 0xae, 0x42, 0xb3, 0x3e, 0x6b, 0x40, 0x8d, + 0x02, 0x80, 0xf2, 0x06, 0x14, 0xc2, 0xbc, 0xc3, 0xef, 0x86, 0xfa, 0x0f, 0xbf, 0x64, 0x84, 0x7f, + 0xe3, 0x79, 0x47, 0xfc, 0x31, 0x26, 0xfa, 0x21, 0x7f, 0x28, 0x0a, 0xb9, 0xa0, 0xe2, 0xfd, 0xe5, + 0x73, 0x41, 0xe4, 0x6f, 0x8a, 0x40, 0xda, 0x6b, 0xfe, 0x11, 0x87, 0x9d, 0xfd, 0x3b, 0xc2, 0xde, + 0xe6, 0x05, 0xdb, 0x26, 0x8a, 0x79, 0xdb, 0x44, 0x57, 0xbd, 0xe9, 0x6f, 0x54, 0x40, 0x24, 0x28, + 0x6b, 0x71, 0xe0, 0x90, 0xcf, 0xf6, 0x57, 0x27, 0xbb, 0x8a, 0x37, 0x0b, 0x89, 0xe0, 0x35, 0x3a, + 0xf6, 0x21, 0xb7, 0x02, 0x27, 0x8c, 0xd8, 0x40, 0x0c, 0xde, 0xd9, 0x8b, 0x1c, 0xfb, 0xce, 0x9e, + 0x57, 0x4a, 0x34, 0x58, 0xca, 0x77, 0x45, 0x20, 0x2d, 0xc6, 0x04, 0x7a, 0x5f, 0xf0, 0xe4, 0x99, + 0xd8, 0xda, 0x1c, 0x69, 0x8f, 0x38, 0x7e, 0xe0, 0xe0, 0xd9, 0xc0, 0x81, 0xeb, 0xd8, 0x71, 0x0f, + 0x5c, 0x73, 0xcf, 0xee, 0x4f, 0x22, 0x20, 0xf5, 0x8f, 0xd8, 0x2f, 0xbb, 0x76, 0x83, 0xd3, 0x5c, + 0x6c, 0xc8, 0x34, 0x37, 0xea, 0x14, 0x75, 0x7c, 0xd4, 0x29, 0xea, 0xc1, 0x56, 0x27, 0xee, 0xb3, + 0xd5, 0x1f, 0x8e, 0x42, 0x36, 0x10, 0x1e, 0x45, 0xcf, 0x84, 0x4e, 0x64, 0x2f, 0x1e, 0x15, 0x4a, + 0x0d, 0x1c, 0xc9, 0x0e, 0x89, 0x29, 0x7a, 0x7c, 0x31, 0xbd, 0xf3, 0xb7, 0xb3, 0x86, 0x5f, 0x60, + 0x4d, 0x8c, 0xb8, 0xc0, 0xfa, 0xd7, 0x23, 0x90, 0xf6, 0xdc, 0xee, 0xe3, 0x6e, 0x62, 0x9e, 0x84, + 0x24, 0xf7, 0x2c, 0xd9, 0x2e, 0x26, 0xff, 0x1a, 0x1a, 0x56, 0x2e, 0x41, 0x5a, 0xfc, 0x3d, 0x45, + 0x3e, 0xab, 0x79, 0xdf, 0x17, 0x9e, 0x87, 0x6c, 0x60, 0x03, 0x98, 0x98, 0xc6, 0x8d, 0xda, 0xfb, + 0xa5, 0xa9, 0x52, 0xea, 0xee, 0xbd, 0xc5, 0xd8, 0x06, 0xbe, 0x43, 0x46, 0xb3, 0x52, 0xab, 0x5e, + 0xaf, 0x55, 0x5f, 0x92, 0x22, 0xa5, 0xec, 0xdd, 0x7b, 0x8b, 0x29, 0x05, 0xd3, 0x88, 0xe2, 0x85, + 0x97, 0xa0, 0xd8, 0xd7, 0x31, 0x61, 0xb7, 0x05, 0x41, 0x61, 0x65, 0x7b, 0x6b, 0xad, 0x5e, 0x2d, + 0x37, 0x6b, 0x2a, 0x3b, 0xb7, 0x8b, 0x4e, 0xc1, 0xcc, 0x5a, 0x7d, 0xf5, 0x7a, 0x53, 0xad, 0xae, + 0xd5, 0x6b, 0x1b, 0x4d, 0xb5, 0xdc, 0x6c, 0x96, 0xab, 0x2f, 0x49, 0xd1, 0x4b, 0xf7, 0xb2, 0x10, + 0x2f, 0x57, 0xaa, 0x75, 0x54, 0x85, 0x38, 0x0d, 0x85, 0x1c, 0x79, 0x02, 0xac, 0x74, 0x74, 0x6c, + 0x18, 0x5d, 0x83, 0x04, 0x8d, 0x92, 0xa0, 0xa3, 0x8f, 0x84, 0x95, 0xc6, 0x04, 0x8b, 0x49, 0x65, + 0xe8, 0x88, 0x3c, 0xf2, 0x8c, 0x58, 0xe9, 0xe8, 0xd8, 0x31, 0x5a, 0x83, 0x94, 0x58, 0x24, 0x8f, + 0x3b, 0xb8, 0x55, 0x1a, 0x1b, 0xd0, 0x25, 0x4d, 0x63, 0xc1, 0x86, 0xa3, 0x8f, 0x8f, 0x95, 0xc6, + 0x44, 0x95, 0x51, 0xdd, 0xbb, 0xcf, 0x34, 0xe6, 0x44, 0x58, 0x69, 0x5c, 0x9c, 0x18, 0x29, 0x90, + 0xf1, 0xc3, 0x38, 0xe3, 0x0f, 0xc5, 0x95, 0x26, 0x08, 0x98, 0xa3, 0x0f, 0x40, 0x3e, 0xbc, 0xd4, + 0x9d, 0xec, 0xd4, 0x59, 0x69, 0xc2, 0x88, 0x34, 0xc1, 0x0f, 0xaf, 0x7b, 0x27, 0x3b, 0x85, 0x56, + 0x9a, 0x30, 0x40, 0x8d, 0x5e, 0x87, 0xe9, 0xc1, 0x75, 0xe9, 0xe4, 0x87, 0xd2, 0x4a, 0xc7, 0x08, + 0x59, 0xa3, 0x0e, 0xa0, 0x21, 0xeb, 0xd9, 0x63, 0x9c, 0x51, 0x2b, 0x1d, 0x27, 0x82, 0x8d, 0x5a, + 0x50, 0xec, 0x5f, 0x24, 0x4e, 0x7a, 0x66, 0xad, 0x34, 0x71, 0x34, 0x9b, 0x95, 0x12, 0x5e, 0x5c, + 0x4e, 0x7a, 0x86, 0xad, 0x34, 0x71, 0x70, 0x1b, 0x6d, 0x03, 0x04, 0xd6, 0x87, 0x13, 0x9c, 0x69, + 0x2b, 0x4d, 0x12, 0xe6, 0x46, 0x5d, 0x98, 0x19, 0xb6, 0x70, 0x3c, 0xce, 0x11, 0xb7, 0xd2, 0xb1, + 0xa2, 0xdf, 0x44, 0x9f, 0xc3, 0x4b, 0xc0, 0xc9, 0x8e, 0xbc, 0x95, 0x26, 0x0c, 0x83, 0x57, 0xca, + 0x23, 0xcf, 0x39, 0x9f, 0x3b, 0xf2, 0x9c, 0xb3, 0x7f, 0x72, 0xd9, 0x3b, 0xdb, 0xfc, 0x0b, 0x4f, + 0xc2, 0x7b, 0xf8, 0x0b, 0x3a, 0x8e, 0xab, 0xdd, 0x32, 0xcc, 0x3d, 0xef, 0x99, 0x25, 0xfe, 0xcd, + 0x0f, 0x39, 0x9f, 0xe4, 0xaf, 0xf4, 0x88, 0xd4, 0x31, 0x8f, 0x2d, 0x8d, 0x7c, 0x81, 0x72, 0xdc, + 0x7d, 0x88, 0xf1, 0xc7, 0x97, 0x8f, 0x78, 0xc8, 0x69, 0xcc, 0x73, 0x51, 0x43, 0x1e, 0x7a, 0x2a, + 0x1d, 0xf9, 0xc6, 0x40, 0xe9, 0xa8, 0x73, 0xdf, 0xc4, 0x8b, 0x2d, 0x5c, 0x37, 0x1c, 0xd7, 0xb2, + 0x0d, 0x5d, 0x6b, 0xd3, 0xe9, 0xe5, 0xea, 0xa4, 0xb7, 0xb2, 0x2a, 0x19, 0xe2, 0xae, 0xf0, 0xb7, + 0xa0, 0xf8, 0x4d, 0xa1, 0x15, 0x48, 0xde, 0xd6, 0xda, 0xec, 0x4e, 0x54, 0xf0, 0x21, 0xb8, 0x7e, + 0x99, 0x07, 0xfc, 0xa8, 0x20, 0x0a, 0xe3, 0x95, 0xbf, 0x87, 0xde, 0x27, 0xe9, 0x74, 0x0c, 0x87, + 0xe8, 0xa2, 0x42, 0x97, 0xd2, 0x37, 0x20, 0x6e, 0x6b, 0x2e, 0x5f, 0x60, 0x56, 0xae, 0x1c, 0xfb, + 0x5d, 0x26, 0x56, 0x02, 0xc5, 0x40, 0x2f, 0x43, 0xba, 0xa3, 0x1d, 0xa8, 0x14, 0x2f, 0xfa, 0x65, + 0xe1, 0xa5, 0x3a, 0xda, 0x01, 0xa9, 0x1f, 0xfa, 0x00, 0x14, 0x09, 0xa4, 0xbe, 0xaf, 0x99, 0x7b, + 0x98, 0x21, 0xc7, 0xbe, 0x2c, 0xe4, 0x7c, 0x47, 0x3b, 0xa8, 0x52, 0x34, 0x82, 0xcf, 0x9f, 0xbc, + 0xfa, 0x95, 0x08, 0x8f, 0x1a, 0x50, 0xc1, 0x20, 0x0d, 0x24, 0xdd, 0xfb, 0xa2, 0x85, 0x8a, 0x2d, + 0x8e, 0x73, 0xa3, 0xe4, 0xde, 0x27, 0xd6, 0x4a, 0x9e, 0x54, 0xef, 0xb3, 0x6f, 0x2e, 0x44, 0x58, + 0xa9, 0x45, 0x7d, 0x40, 0xec, 0x59, 0x16, 0x0c, 0x51, 0xa9, 0x0f, 0x1b, 0x1d, 0xeb, 0xc3, 0xe6, + 0x85, 0x0f, 0xcb, 0x00, 0x81, 0x71, 0x93, 0x7c, 0xde, 0x86, 0x4f, 0x47, 0x20, 0xbb, 0x12, 0x78, + 0xd6, 0x71, 0x0e, 0x52, 0x1d, 0xcb, 0x34, 0x6e, 0x61, 0xdb, 0xdb, 0xa3, 0x62, 0x9f, 0xc4, 0xcf, + 0x64, 0x7f, 0x1d, 0xd0, 0x3d, 0x14, 0xaf, 0x0b, 0x89, 0x6f, 0xc2, 0x75, 0x07, 0xef, 0x38, 0x86, + 0x90, 0xb3, 0x22, 0x3e, 0xd1, 0xa3, 0x20, 0x39, 0x58, 0xef, 0xd9, 0x86, 0x7b, 0xa8, 0xea, 0x96, + 0xe9, 0x6a, 0xba, 0xcb, 0xd7, 0xe1, 0x45, 0x91, 0x5e, 0x65, 0xc9, 0x04, 0xa4, 0x85, 0x5d, 0xcd, + 0x68, 0xb3, 0x93, 0x99, 0x19, 0x45, 0x7c, 0xf2, 0xaa, 0xde, 0x4d, 0x05, 0xd7, 0xa1, 0x55, 0x90, + 0xac, 0x2e, 0xb6, 0x43, 0x07, 0x52, 0x98, 0x36, 0xce, 0xfd, 0xc6, 0x67, 0x9e, 0x98, 0xe5, 0x02, + 0xe7, 0x87, 0x19, 0xd8, 0x5f, 0x31, 0x50, 0x8a, 0x82, 0x43, 0x9c, 0x54, 0x79, 0x35, 0xb4, 0x2b, + 0xd5, 0xdb, 0xf1, 0x9f, 0x91, 0x99, 0x1d, 0x10, 0x6a, 0xd9, 0x3c, 0xac, 0xcc, 0xfd, 0xba, 0x0f, + 0xed, 0xaf, 0x53, 0x5f, 0xc2, 0x87, 0xc1, 0x2d, 0x2a, 0x0a, 0x43, 0x5c, 0xf8, 0xd7, 0x35, 0xa3, + 0x2d, 0xfe, 0x90, 0xaa, 0xc2, 0xbf, 0xd0, 0xb2, 0x17, 0x5e, 0x8c, 0xd3, 0xf5, 0x90, 0x3c, 0x4a, + 0x37, 0x2a, 0x96, 0xd9, 0x0a, 0xc7, 0x11, 0x51, 0x15, 0x92, 0xae, 0x75, 0x0b, 0x9b, 0x5c, 0x40, + 0xc7, 0x7b, 0x5a, 0x8d, 0xb3, 0xa2, 0xaf, 0x05, 0xa9, 0x85, 0xdb, 0x78, 0x8f, 0xdd, 0x97, 0xdc, + 0xd7, 0x6c, 0xcc, 0x6e, 0xeb, 0xdf, 0xd7, 0xf3, 0x6a, 0x45, 0x0f, 0xaa, 0x41, 0x91, 0xd0, 0x56, + 0xf8, 0xe1, 0xd0, 0x14, 0xdf, 0x3c, 0x1e, 0xd1, 0xc6, 0x80, 0xe6, 0x05, 0x2d, 0x4f, 0xe8, 0xa1, + 0xd1, 0x47, 0x41, 0xea, 0x99, 0x3b, 0x96, 0x49, 0xff, 0xfe, 0x20, 0x5f, 0x45, 0xa5, 0xd9, 0x4e, + 0xa5, 0x97, 0xce, 0x77, 0x2a, 0xb7, 0xa0, 0xe0, 0x93, 0xd2, 0x11, 0x92, 0x39, 0xee, 0x08, 0xc9, + 0x7b, 0x00, 0x84, 0x04, 0xad, 0x03, 0xf8, 0x63, 0x90, 0x6e, 0x95, 0x65, 0x47, 0xf7, 0x98, 0x3f, + 0x9a, 0x83, 0x8d, 0x09, 0x00, 0xa0, 0xaf, 0x81, 0x99, 0x8e, 0x61, 0xaa, 0x0e, 0x6e, 0xef, 0xaa, + 0x5c, 0x72, 0x04, 0x37, 0x7b, 0xfc, 0xde, 0x9c, 0xee, 0x18, 0x66, 0x03, 0xb7, 0x77, 0x57, 0x3c, + 0x14, 0xf4, 0x5e, 0x38, 0xe3, 0xb7, 0xde, 0x32, 0xd5, 0x7d, 0xab, 0xdd, 0x52, 0x6d, 0xbc, 0xab, + 0xea, 0xf4, 0x9d, 0xbf, 0x1c, 0x95, 0xd9, 0x29, 0x8f, 0x64, 0xd3, 0xbc, 0x6e, 0xb5, 0x5b, 0x0a, + 0xde, 0xad, 0x92, 0x6c, 0xf4, 0x10, 0xf8, 0x4d, 0x57, 0x8d, 0x96, 0x33, 0x97, 0x5f, 0x8c, 0x9d, + 0x8f, 0x2b, 0x39, 0x2f, 0xb1, 0xde, 0x72, 0x96, 0xd3, 0x1f, 0xf9, 0xe4, 0xc2, 0xd4, 0xe7, 0x3f, + 0xb9, 0x30, 0x25, 0x5f, 0xa3, 0x6f, 0x4a, 0xf1, 0x71, 0x84, 0x1d, 0x74, 0x05, 0x32, 0x9a, 0xf8, + 0x60, 0x37, 0xc6, 0x8e, 0x18, 0x87, 0x3e, 0xa9, 0xfc, 0xe3, 0x11, 0x48, 0xae, 0xdc, 0xdc, 0xd2, + 0x0c, 0x1b, 0xd5, 0x60, 0xda, 0x57, 0xcc, 0x49, 0x87, 0xb4, 0xaf, 0xcb, 0x62, 0x4c, 0x6f, 0x8c, + 0x3a, 0xaa, 0x96, 0xa9, 0x9c, 0xfd, 0x8d, 0xcf, 0x3c, 0xf1, 0x20, 0x87, 0xb9, 0xd9, 0x77, 0x6a, + 0x4d, 0xe0, 0xf5, 0x9f, 0x66, 0x0b, 0xb4, 0xf9, 0x06, 0xa4, 0x58, 0x55, 0x1d, 0xf4, 0x22, 0x24, + 0xba, 0xe4, 0x07, 0x8f, 0xc0, 0xcf, 0x8f, 0x54, 0x70, 0x4a, 0x1f, 0x54, 0x07, 0xc6, 0x27, 0x7f, + 0x6b, 0x14, 0x60, 0xe5, 0xe6, 0xcd, 0xa6, 0x6d, 0x74, 0xdb, 0xd8, 0x7d, 0xa7, 0xda, 0xbe, 0x0d, + 0x27, 0x02, 0x77, 0xa1, 0x6d, 0xfd, 0xf8, 0xed, 0x9f, 0xf1, 0xaf, 0x45, 0xdb, 0xfa, 0x50, 0xd8, + 0x96, 0xe3, 0x7a, 0xb0, 0xb1, 0xe3, 0xc3, 0xae, 0x38, 0xee, 0xa0, 0x64, 0x5f, 0x81, 0xac, 0x2f, + 0x0c, 0x07, 0xd5, 0x21, 0xed, 0xf2, 0xdf, 0x5c, 0xc0, 0xf2, 0x68, 0x01, 0x0b, 0xb6, 0xa0, 0x90, + 0x3d, 0x76, 0xf9, 0xcf, 0x22, 0x00, 0x81, 0x31, 0xf2, 0xd5, 0xa9, 0x63, 0x64, 0xb9, 0xce, 0x2d, + 0x71, 0xec, 0xbe, 0x5f, 0xe3, 0x64, 0x00, 0x01, 0xa1, 0x7e, 0x7b, 0x14, 0x66, 0xb6, 0xc5, 0xe8, + 0xfd, 0xea, 0x97, 0xc1, 0x36, 0xa4, 0xb0, 0xe9, 0xda, 0x86, 0xb7, 0x87, 0xf4, 0xe4, 0xa8, 0x3e, + 0x1f, 0xd2, 0xa8, 0x9a, 0xe9, 0xda, 0x87, 0x41, 0x0d, 0x10, 0x58, 0x01, 0x79, 0x7c, 0x3c, 0x06, + 0x73, 0xa3, 0x58, 0xd1, 0x39, 0x28, 0xea, 0x36, 0xa6, 0x09, 0xe1, 0x2b, 0xa2, 0x05, 0x91, 0xcc, + 0xe7, 0x18, 0x05, 0x88, 0x57, 0x46, 0x94, 0x8b, 0x90, 0xde, 0x9f, 0x1b, 0x56, 0xf0, 0x11, 0xe8, + 0x2c, 0xd3, 0x84, 0xa2, 0xb8, 0x73, 0xb2, 0xa3, 0xb5, 0x35, 0x53, 0x17, 0xee, 0xea, 0xb1, 0xa6, + 0x04, 0x71, 0x6f, 0xa5, 0xc2, 0x20, 0x50, 0x0d, 0x52, 0x02, 0x2d, 0x7e, 0x7c, 0x34, 0xc1, 0x8b, + 0xce, 0x42, 0x2e, 0x38, 0x31, 0x50, 0xd7, 0x23, 0xae, 0x64, 0x03, 0xf3, 0xc2, 0xb8, 0x99, 0x27, + 0x79, 0xe4, 0xcc, 0xc3, 0xbd, 0xbb, 0x1f, 0xa4, 0x47, 0xc3, 0x5b, 0x7f, 0xf1, 0xbb, 0x65, 0x0b, + 0x80, 0x0d, 0x55, 0x62, 0x49, 0x79, 0xcf, 0xdc, 0xc7, 0x78, 0xcf, 0x30, 0x90, 0x15, 0xc7, 0xfd, + 0x4a, 0xf5, 0xd0, 0x6f, 0x45, 0x21, 0x17, 0xec, 0xa1, 0xbf, 0x94, 0x93, 0x16, 0xda, 0xf0, 0xcd, + 0x14, 0xbb, 0x3e, 0xf3, 0xe8, 0x28, 0x33, 0x35, 0xa0, 0xcd, 0x63, 0xec, 0xd3, 0x37, 0xc7, 0x21, 0xc9, 0xcf, 0xb7, 0x6d, 0x0e, 0x38, 0xb2, 0x91, 0x71, 0x0f, 0x00, 0xe4, 0xc5, 0x03, 0x00, 0x43, - 0xfd, 0xd8, 0x87, 0xa1, 0x40, 0x02, 0xe2, 0xd0, 0xa1, 0xb9, 0xc8, 0xf9, 0x3c, 0x8d, 0x6b, 0xfd, - 0x23, 0xe2, 0x68, 0x01, 0xb2, 0x04, 0xcd, 0xb7, 0xc3, 0x04, 0x07, 0x3a, 0xda, 0x41, 0x8d, 0x41, - 0xd0, 0x13, 0x80, 0xf6, 0xbd, 0x04, 0x85, 0xea, 0x0b, 0x82, 0xe0, 0x4d, 0xfb, 0x25, 0x02, 0xfd, - 0x41, 0x00, 0xd2, 0x0a, 0x95, 0x3d, 0x40, 0xcd, 0x9f, 0xf7, 0x26, 0x90, 0x15, 0xfa, 0x08, 0xf5, - 0x37, 0x46, 0x98, 0x3f, 0xdc, 0x17, 0x36, 0xf3, 0x70, 0xa4, 0x39, 0xc1, 0xa4, 0xf8, 0xa3, 0x37, - 0x17, 0x4a, 0x87, 0x5a, 0xa7, 0xbd, 0x2c, 0x0f, 0xe1, 0x23, 0x0f, 0x8b, 0xe4, 0x89, 0xe3, 0x1c, - 0x0e, 0xbb, 0x97, 0xdf, 0x43, 0xd4, 0xfb, 0xee, 0xef, 0xfe, 0xc4, 0x85, 0x33, 0x81, 0x37, 0x9f, - 0x0f, 0xbc, 0xf4, 0x15, 0x1b, 0x13, 0xe2, 0xa9, 0x22, 0x7f, 0xd5, 0xf0, 0x4e, 0xc6, 0xaf, 0x03, - 0x04, 0x3c, 0xf9, 0xc8, 0xd1, 0x11, 0x82, 0x4f, 0x1f, 0x8a, 0x10, 0x02, 0x73, 0xea, 0x7d, 0xbe, - 0xd1, 0x16, 0x6f, 0x3e, 0x0c, 0x79, 0x91, 0x7c, 0xa9, 0x6a, 0x19, 0x21, 0x16, 0x82, 0x88, 0x4e, - 0xd5, 0x29, 0xf9, 0x5f, 0x47, 0xe0, 0xf4, 0x80, 0xfa, 0x79, 0x4d, 0xd6, 0x01, 0xd9, 0x81, 0x42, - 0x3a, 0x8c, 0x62, 0x2b, 0xf6, 0xfe, 0xb4, 0x79, 0xda, 0x1e, 0xb0, 0xdc, 0xef, 0xcc, 0xea, 0xc3, - 0x4d, 0xcf, 0xaf, 0x46, 0x60, 0x36, 0xd8, 0x00, 0xaf, 0x2b, 0x0d, 0xc8, 0x05, 0xab, 0xe6, 0x9d, - 0x78, 0xcf, 0x24, 0x9d, 0x08, 0xb6, 0x3f, 0xc4, 0x04, 0xdd, 0xf4, 0xa7, 0x38, 0xcb, 0x9b, 0x3d, - 0x35, 0xb1, 0x50, 0x44, 0xc3, 0x86, 0x4e, 0x75, 0x36, 0x36, 0xbf, 0x17, 0x81, 0xf8, 0x96, 0x65, - 0xb5, 0xd1, 0x07, 0x61, 0xda, 0xb4, 0x5c, 0x95, 0x4c, 0x07, 0xdc, 0x52, 0x79, 0x60, 0xcf, 0xcc, - 0x67, 0xed, 0x48, 0x59, 0x7d, 0xe1, 0xcd, 0x85, 0x41, 0xca, 0x61, 0x6f, 0xc2, 0x17, 0x4d, 0xcb, - 0xad, 0x50, 0xa4, 0x26, 0x8b, 0xfd, 0x77, 0x21, 0x1f, 0xae, 0x8e, 0x99, 0xd8, 0xf2, 0xb8, 0xea, - 0xf2, 0x63, 0xab, 0xca, 0xed, 0x04, 0xea, 0x61, 0xcf, 0x28, 0xff, 0x01, 0x19, 0xb9, 0x57, 0x41, - 0xba, 0xd9, 0x7f, 0xc4, 0xa7, 0x06, 0x29, 0x71, 0xa4, 0x27, 0x32, 0xe1, 0x69, 0xa1, 0xa0, 0x38, - 0x39, 0xed, 0x85, 0x9f, 0x89, 0x00, 0xf8, 0x49, 0x12, 0xf4, 0x38, 0x9c, 0xaa, 0x6c, 0x6e, 0xac, - 0xa8, 0x8d, 0x66, 0xb9, 0xb9, 0xdd, 0x08, 0xff, 0x25, 0x11, 0xf1, 0xfe, 0x90, 0xd3, 0xc5, 0xba, - 0xb1, 0x6b, 0xe0, 0x16, 0x7a, 0x04, 0x66, 0xc3, 0xd8, 0xe4, 0xab, 0xb6, 0x22, 0x45, 0x4a, 0xb9, - 0xbb, 0xf7, 0x16, 0xd3, 0xcc, 0x4f, 0xc4, 0x2d, 0x74, 0x1e, 0x4e, 0x0c, 0xe2, 0xd5, 0x37, 0x56, - 0xa5, 0x68, 0x29, 0x7f, 0xf7, 0xde, 0x62, 0xc6, 0x73, 0x28, 0x91, 0x0c, 0x28, 0x88, 0xc9, 0xf9, - 0xc5, 0x4a, 0x70, 0xf7, 0xde, 0x62, 0x92, 0x8d, 0x42, 0x29, 0xfe, 0x91, 0x1f, 0x9a, 0x9f, 0xba, - 0xf0, 0x75, 0x00, 0x75, 0x73, 0xd7, 0xd6, 0xe8, 0x9f, 0xd3, 0x47, 0x25, 0x38, 0x59, 0xdf, 0xb8, - 0xa6, 0x94, 0xab, 0xcd, 0xfa, 0xe6, 0x46, 0xdf, 0x1f, 0x40, 0x09, 0x97, 0xad, 0x6c, 0x6e, 0x57, - 0xd6, 0x6a, 0x6a, 0xa3, 0xbe, 0xba, 0xc1, 0x36, 0x5b, 0x43, 0x65, 0xef, 0xdf, 0x68, 0xd6, 0xd7, - 0x6b, 0x52, 0xb4, 0x72, 0x6d, 0x64, 0x32, 0xff, 0xf1, 0x23, 0x5f, 0xb9, 0xf7, 0x2d, 0x5e, 0x28, - 0xa3, 0xff, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x39, 0x56, 0x48, 0x57, 0x54, 0xa1, 0x00, 0x00, + 0xfd, 0xd8, 0x87, 0xa1, 0x40, 0x16, 0xc4, 0xa1, 0x43, 0x73, 0x91, 0xf3, 0x79, 0xba, 0xae, 0xf5, + 0x8f, 0x88, 0xa3, 0x05, 0xc8, 0x12, 0x32, 0xdf, 0x0e, 0x13, 0x1a, 0xe8, 0x68, 0x07, 0x35, 0x96, + 0x82, 0x9e, 0x00, 0xb4, 0xef, 0x05, 0x28, 0x54, 0x5f, 0x10, 0x84, 0x6e, 0xda, 0xcf, 0x11, 0xe4, + 0x0f, 0x02, 0x90, 0x5a, 0xa8, 0xec, 0x01, 0x6a, 0xfe, 0xbc, 0x37, 0x49, 0x59, 0xa1, 0x8f, 0x50, + 0x7f, 0x63, 0x84, 0xf9, 0xc3, 0x7d, 0xcb, 0x66, 0xbe, 0x1c, 0x69, 0x4e, 0x30, 0x28, 0xfe, 0xf8, + 0xcd, 0x85, 0xd2, 0xa1, 0xd6, 0x69, 0x2f, 0xcb, 0x43, 0x70, 0xe4, 0x61, 0x2b, 0x79, 0xe2, 0x38, + 0x87, 0x97, 0xdd, 0x68, 0x1f, 0x4a, 0x84, 0x7b, 0xaf, 0x6d, 0xed, 0x68, 0xed, 0x01, 0xe7, 0x1c, + 0x8e, 0x3f, 0xe4, 0x4f, 0x75, 0x0c, 0x73, 0x95, 0xa2, 0x85, 0x5d, 0xf4, 0xe5, 0xf7, 0x90, 0x81, + 0x74, 0xf7, 0xf7, 0x7e, 0xf2, 0xc2, 0x99, 0xc0, 0xeb, 0xd2, 0x07, 0x5e, 0xa0, 0x8c, 0xf5, 0x3e, + 0xf1, 0x89, 0x91, 0xcf, 0xe4, 0x9d, 0xc1, 0x5f, 0x07, 0x08, 0x54, 0x2b, 0x72, 0xf4, 0x5a, 0xc4, + 0xe7, 0x0f, 0xad, 0x45, 0x02, 0xa3, 0xf7, 0x7d, 0xfe, 0xf4, 0x20, 0x5e, 0x97, 0x18, 0xf2, 0xf6, + 0xf9, 0x52, 0xd5, 0x32, 0x42, 0x10, 0x82, 0x89, 0x1a, 0x85, 0x29, 0xf9, 0xdf, 0x44, 0xe0, 0xf4, + 0x80, 0xa2, 0x7b, 0x55, 0xd6, 0x01, 0xd9, 0x81, 0x4c, 0xaa, 0x30, 0x62, 0xd3, 0xf7, 0xfe, 0xc6, + 0xcd, 0xb4, 0x3d, 0x30, 0x47, 0xbc, 0x33, 0xf3, 0x1c, 0x37, 0x72, 0xbf, 0x16, 0x81, 0xd9, 0x60, + 0x05, 0xbc, 0xa6, 0x34, 0x20, 0x17, 0x2c, 0x9a, 0x37, 0xe2, 0x3d, 0x93, 0x34, 0x22, 0x58, 0xff, + 0x10, 0x08, 0xba, 0xe9, 0x1b, 0x13, 0x16, 0xa1, 0x7b, 0x6a, 0x62, 0xa1, 0x88, 0x8a, 0x0d, 0x35, + 0x2a, 0xac, 0x6f, 0x7e, 0x3f, 0x02, 0xf1, 0x2d, 0xcb, 0x6a, 0xa3, 0x0f, 0xc2, 0xb4, 0x69, 0xb9, + 0x2a, 0x19, 0x78, 0xb8, 0xa5, 0xf2, 0x10, 0x02, 0x33, 0xd4, 0xb5, 0x23, 0x65, 0xf5, 0x85, 0x37, + 0x17, 0x06, 0x39, 0x87, 0xbd, 0x3e, 0x5f, 0x34, 0x2d, 0xb7, 0x42, 0x89, 0x9a, 0x2c, 0xca, 0xb0, + 0x0b, 0xf9, 0x70, 0x71, 0xcc, 0x98, 0x97, 0xc7, 0x15, 0x97, 0x1f, 0x5b, 0x54, 0x6e, 0x27, 0x50, + 0x0e, 0x7b, 0xb0, 0xf9, 0x0f, 0x49, 0xcf, 0xbd, 0x0a, 0xd2, 0xcd, 0xfe, 0xc3, 0x44, 0x35, 0x48, + 0x89, 0xc3, 0x43, 0x91, 0x09, 0xcf, 0x25, 0x05, 0xc5, 0xc9, 0x79, 0x2f, 0xfc, 0x6c, 0x04, 0xc0, + 0x0f, 0xc7, 0xa0, 0xc7, 0xe1, 0x54, 0x65, 0x73, 0x63, 0x45, 0x6d, 0x34, 0xcb, 0xcd, 0xed, 0x46, + 0xf8, 0x6f, 0x96, 0x88, 0x97, 0x8e, 0x9c, 0x2e, 0xd6, 0x8d, 0x5d, 0x03, 0xb7, 0xd0, 0x23, 0x30, + 0x1b, 0xa6, 0x26, 0x5f, 0xb5, 0x15, 0x29, 0x52, 0xca, 0xdd, 0xbd, 0xb7, 0x98, 0x66, 0x1e, 0x29, + 0x6e, 0xa1, 0xf3, 0x70, 0x62, 0x90, 0xae, 0xbe, 0xb1, 0x2a, 0x45, 0x4b, 0xf9, 0xbb, 0xf7, 0x16, + 0x33, 0x9e, 0xeb, 0x8a, 0x64, 0x40, 0x41, 0x4a, 0x8e, 0x17, 0x2b, 0xc1, 0xdd, 0x7b, 0x8b, 0x49, + 0xd6, 0x0b, 0xa5, 0xf8, 0x47, 0x7e, 0x78, 0x7e, 0xea, 0xc2, 0xd7, 0x01, 0xd4, 0xcd, 0x5d, 0x5b, + 0xa3, 0x7f, 0xb8, 0x1f, 0x95, 0xe0, 0x64, 0x7d, 0xe3, 0x9a, 0x52, 0xae, 0x36, 0xeb, 0x9b, 0x1b, + 0x7d, 0x7f, 0x6a, 0x25, 0x9c, 0xb7, 0xb2, 0xb9, 0x5d, 0x59, 0xab, 0xa9, 0x8d, 0xfa, 0xea, 0x06, + 0xdb, 0xd6, 0x0d, 0xe5, 0xbd, 0x7f, 0xa3, 0x59, 0x5f, 0xaf, 0x49, 0xd1, 0xca, 0xb5, 0x91, 0xdb, + 0x06, 0x8f, 0x1f, 0xf9, 0x9e, 0xbe, 0x6f, 0xf1, 0x42, 0x7b, 0x07, 0xff, 0x37, 0x00, 0x00, 0xff, + 0xff, 0x35, 0xe7, 0xa9, 0x4a, 0xbe, 0xa1, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) @@ -2328,6 +2334,9 @@ func (this *Params) Equal(that interface{}) bool { if !this.MinCommissionRate.Equal(that1.MinCommissionRate) { return false } + if !this.MinGlobalSelfDelegation.Equal(that1.MinGlobalSelfDelegation) { + return false + } return true } func (this *RedelegationEntryResponse) Equal(that interface{}) bool { @@ -3221,6 +3230,16 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size := m.MinGlobalSelfDelegation.Size() + i -= size + if _, err := m.MinGlobalSelfDelegation.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintStaking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 { size := m.MinCommissionRate.Size() i -= size @@ -3833,6 +3852,8 @@ func (m *Params) Size() (n int) { } l = m.MinCommissionRate.Size() n += 1 + l + sovStaking(uint64(l)) + l = m.MinGlobalSelfDelegation.Size() + n += 1 + l + sovStaking(uint64(l)) return n } @@ -6567,6 +6588,40 @@ func (m *Params) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinGlobalSelfDelegation", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStaking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthStaking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStaking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MinGlobalSelfDelegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipStaking(dAtA[iNdEx:])