lnrpc+lncli: deprecate sat_per_byte and add sat_per_vbyte

This commit deprecates/replaces the old field `sat_per_byte` with
`sat_per_vbyte`. While the old field suggests sat per byte, it’s
actually using sat per virtual byte. We use the Hidden param to hide all
the deprecated flags. These flags won't show up in help menu onwards,
while stay valid that can be passed from cli. Thus bash scripts
referencing these fields won't be broken.
This commit is contained in:
yyforyongyu 2021-03-11 08:29:50 +08:00
parent 2466758acd
commit 9d0d88ac21
No known key found for this signature in database
GPG Key ID: 9BCD95C4FF296868
20 changed files with 1519 additions and 1110 deletions

View File

@ -84,7 +84,7 @@ var openChannelCommand = cli.Command{
another address. another address.
One can manually set the fee to be used for the funding transaction via either One can manually set the fee to be used for the funding transaction via either
the --conf_target or --sat_per_byte arguments. This is optional.`, the --conf_target or --sat_per_vbyte arguments. This is optional.`,
ArgsUsage: "node-key local-amt push-amt", ArgsUsage: "node-key local-amt push-amt",
Flags: []cli.Flag{ Flags: []cli.Flag{
cli.StringFlag{ cli.StringFlag{
@ -119,7 +119,12 @@ var openChannelCommand = cli.Command{
"used for fee estimation", "used for fee estimation",
}, },
cli.Int64Flag{ cli.Int64Flag{
Name: "sat_per_byte", Name: "sat_per_byte",
Usage: "Deprecated, use sat_per_vbyte instead.",
Hidden: true,
},
cli.Int64Flag{
Name: "sat_per_vbyte",
Usage: "(optional) a manual fee expressed in " + Usage: "(optional) a manual fee expressed in " +
"sat/vbyte that should be used when crafting " + "sat/vbyte that should be used when crafting " +
"the transaction", "the transaction",
@ -214,10 +219,19 @@ func openChannel(ctx *cli.Context) error {
return nil return nil
} }
// Check that only the field sat_per_vbyte or the deprecated field
// sat_per_byte is used.
feeRateFlag, err := checkNotBothSet(
ctx, "sat_per_vbyte", "sat_per_byte",
)
if err != nil {
return err
}
minConfs := int32(ctx.Uint64("min_confs")) minConfs := int32(ctx.Uint64("min_confs"))
req := &lnrpc.OpenChannelRequest{ req := &lnrpc.OpenChannelRequest{
TargetConf: int32(ctx.Int64("conf_target")), TargetConf: int32(ctx.Int64("conf_target")),
SatPerByte: ctx.Int64("sat_per_byte"), SatPerVbyte: ctx.Uint64(feeRateFlag),
MinHtlcMsat: ctx.Int64("min_htlc_msat"), MinHtlcMsat: ctx.Int64("min_htlc_msat"),
RemoteCsvDelay: uint32(ctx.Uint64("remote_csv_delay")), RemoteCsvDelay: uint32(ctx.Uint64("remote_csv_delay")),
MinConfs: minConfs, MinConfs: minConfs,
@ -730,7 +744,7 @@ func checkPsbtFlags(req *lnrpc.OpenChannelRequest) error {
return fmt.Errorf("specifying minimum confirmations for PSBT " + return fmt.Errorf("specifying minimum confirmations for PSBT " +
"funding is not supported") "funding is not supported")
} }
if req.TargetConf != 0 || req.SatPerByte != 0 { if req.TargetConf != 0 || req.SatPerByte != 0 || req.SatPerVbyte != 0 {
return fmt.Errorf("setting fee estimation parameters not " + return fmt.Errorf("setting fee estimation parameters not " +
"supported for PSBT funding") "supported for PSBT funding")
} }

View File

@ -225,7 +225,7 @@ var sendCoinsCommand = cli.Command{
Send amt coins in satoshis to the base58 or bech32 encoded bitcoin address addr. Send amt coins in satoshis to the base58 or bech32 encoded bitcoin address addr.
Fees used when sending the transaction can be specified via the --conf_target, or Fees used when sending the transaction can be specified via the --conf_target, or
--sat_per_byte optional flags. --sat_per_vbyte optional flags.
Positional arguments and flags can be used interchangeably but not at the same time! Positional arguments and flags can be used interchangeably but not at the same time!
`, `,
@ -253,7 +253,12 @@ var sendCoinsCommand = cli.Command{
"used for fee estimation", "used for fee estimation",
}, },
cli.Int64Flag{ cli.Int64Flag{
Name: "sat_per_byte", Name: "sat_per_byte",
Usage: "Deprecated, use sat_per_vbyte instead.",
Hidden: true,
},
cli.Int64Flag{
Name: "sat_per_vbyte",
Usage: "(optional) a manual fee expressed in " + Usage: "(optional) a manual fee expressed in " +
"sat/vbyte that should be used when crafting " + "sat/vbyte that should be used when crafting " +
"the transaction", "the transaction",
@ -284,9 +289,20 @@ func sendCoins(ctx *cli.Context) error {
return nil return nil
} }
if ctx.IsSet("conf_target") && ctx.IsSet("sat_per_byte") { // Check that only the field sat_per_vbyte or the deprecated field
return fmt.Errorf("either conf_target or sat_per_byte should be " + // sat_per_byte is used.
"set, but not both") feeRateFlag, err := checkNotBothSet(
ctx, "sat_per_vbyte", "sat_per_byte",
)
if err != nil {
return err
}
// Only fee rate flag or conf_target should be set, not both.
if _, err := checkNotBothSet(
ctx, feeRateFlag, "conf_target",
); err != nil {
return err
} }
switch { switch {
@ -324,7 +340,7 @@ func sendCoins(ctx *cli.Context) error {
Addr: addr, Addr: addr,
Amount: amt, Amount: amt,
TargetConf: int32(ctx.Int64("conf_target")), TargetConf: int32(ctx.Int64("conf_target")),
SatPerByte: ctx.Int64("sat_per_byte"), SatPerVbyte: ctx.Uint64(feeRateFlag),
SendAll: ctx.Bool("sweepall"), SendAll: ctx.Bool("sweepall"),
Label: ctx.String(txLabelFlag.Name), Label: ctx.String(txLabelFlag.Name),
MinConfs: minConfs, MinConfs: minConfs,
@ -464,7 +480,7 @@ var sendManyCommand = cli.Command{
Name: "sendmany", Name: "sendmany",
Category: "On-chain", Category: "On-chain",
Usage: "Send bitcoin on-chain to multiple addresses.", Usage: "Send bitcoin on-chain to multiple addresses.",
ArgsUsage: "send-json-string [--conf_target=N] [--sat_per_byte=P]", ArgsUsage: "send-json-string [--conf_target=N] [--sat_per_vbyte=P]",
Description: ` Description: `
Create and broadcast a transaction paying the specified amount(s) to the passed address(es). Create and broadcast a transaction paying the specified amount(s) to the passed address(es).
@ -480,9 +496,15 @@ var sendManyCommand = cli.Command{
"confirm in, will be used for fee estimation", "confirm in, will be used for fee estimation",
}, },
cli.Int64Flag{ cli.Int64Flag{
Name: "sat_per_byte", Name: "sat_per_byte",
Usage: "(optional) a manual fee expressed in sat/vbyte that should be " + Usage: "Deprecated, use sat_per_vbyte instead.",
"used when crafting the transaction", Hidden: true,
},
cli.Int64Flag{
Name: "sat_per_vbyte",
Usage: "(optional) a manual fee expressed in " +
"sat/vbyte that should be used when crafting " +
"the transaction",
}, },
cli.Uint64Flag{ cli.Uint64Flag{
Name: "min_confs", Name: "min_confs",
@ -505,9 +527,20 @@ func sendMany(ctx *cli.Context) error {
return err return err
} }
if ctx.IsSet("conf_target") && ctx.IsSet("sat_per_byte") { // Check that only the field sat_per_vbyte or the deprecated field
return fmt.Errorf("either conf_target or sat_per_byte should be " + // sat_per_byte is used.
"set, but not both") feeRateFlag, err := checkNotBothSet(
ctx, "sat_per_vbyte", "sat_per_byte",
)
if err != nil {
return err
}
// Only fee rate flag or conf_target should be set, not both.
if _, err := checkNotBothSet(
ctx, feeRateFlag, "conf_target",
); err != nil {
return err
} }
client, cleanUp := getClient(ctx) client, cleanUp := getClient(ctx)
@ -517,7 +550,7 @@ func sendMany(ctx *cli.Context) error {
txid, err := client.SendMany(ctxc, &lnrpc.SendManyRequest{ txid, err := client.SendMany(ctxc, &lnrpc.SendManyRequest{
AddrToAmount: amountToAddr, AddrToAmount: amountToAddr,
TargetConf: int32(ctx.Int64("conf_target")), TargetConf: int32(ctx.Int64("conf_target")),
SatPerByte: ctx.Int64("sat_per_byte"), SatPerVbyte: ctx.Uint64(feeRateFlag),
Label: ctx.String(txLabelFlag.Name), Label: ctx.String(txLabelFlag.Name),
MinConfs: minConfs, MinConfs: minConfs,
SpendUnconfirmed: minConfs == 0, SpendUnconfirmed: minConfs == 0,
@ -651,7 +684,7 @@ var closeChannelCommand = cli.Command{
In the case of a cooperative closure, one can manually set the fee to In the case of a cooperative closure, one can manually set the fee to
be used for the closing transaction via either the --conf_target or be used for the closing transaction via either the --conf_target or
--sat_per_byte arguments. This will be the starting value used during --sat_per_vbyte arguments. This will be the starting value used during
fee negotiation. This is optional. fee negotiation. This is optional.
In the case of a cooperative closure, one can manually set the address In the case of a cooperative closure, one can manually set the address
@ -690,7 +723,12 @@ var closeChannelCommand = cli.Command{
"lnd config will be used.", "lnd config will be used.",
}, },
cli.Int64Flag{ cli.Int64Flag{
Name: "sat_per_byte", Name: "sat_per_byte",
Usage: "Deprecated, use sat_per_vbyte instead.",
Hidden: true,
},
cli.Int64Flag{
Name: "sat_per_vbyte",
Usage: "(optional) a manual fee expressed in " + Usage: "(optional) a manual fee expressed in " +
"sat/vbyte that should be used when crafting " + "sat/vbyte that should be used when crafting " +
"the transaction", "the transaction",
@ -717,6 +755,15 @@ func closeChannel(ctx *cli.Context) error {
return nil return nil
} }
// Check that only the field sat_per_vbyte or the deprecated field
// sat_per_byte is used.
feeRateFlag, err := checkNotBothSet(
ctx, "sat_per_vbyte", "sat_per_byte",
)
if err != nil {
return err
}
channelPoint, err := parseChannelPoint(ctx) channelPoint, err := parseChannelPoint(ctx)
if err != nil { if err != nil {
return err return err
@ -727,7 +774,7 @@ func closeChannel(ctx *cli.Context) error {
ChannelPoint: channelPoint, ChannelPoint: channelPoint,
Force: ctx.Bool("force"), Force: ctx.Bool("force"),
TargetConf: int32(ctx.Int64("conf_target")), TargetConf: int32(ctx.Int64("conf_target")),
SatPerByte: ctx.Int64("sat_per_byte"), SatPerVbyte: ctx.Uint64(feeRateFlag),
DeliveryAddress: ctx.String("delivery_addr"), DeliveryAddress: ctx.String("delivery_addr"),
} }
@ -824,7 +871,7 @@ var closeAllChannelsCommand = cli.Command{
In the case of cooperative closures, one can manually set the fee to In the case of cooperative closures, one can manually set the fee to
be used for the closing transactions via either the --conf_target or be used for the closing transactions via either the --conf_target or
--sat_per_byte arguments. This will be the starting value used during --sat_per_vbyte arguments. This will be the starting value used during
fee negotiation. This is optional.`, fee negotiation. This is optional.`,
Flags: []cli.Flag{ Flags: []cli.Flag{
cli.BoolFlag{ cli.BoolFlag{
@ -843,7 +890,12 @@ var closeAllChannelsCommand = cli.Command{
"used for fee estimation", "used for fee estimation",
}, },
cli.Int64Flag{ cli.Int64Flag{
Name: "sat_per_byte", Name: "sat_per_byte",
Usage: "Deprecated, use sat_per_vbyte instead.",
Hidden: true,
},
cli.Int64Flag{
Name: "sat_per_vbyte",
Usage: "(optional) a manual fee expressed in " + Usage: "(optional) a manual fee expressed in " +
"sat/vbyte that should be used when crafting " + "sat/vbyte that should be used when crafting " +
"the closing transactions", "the closing transactions",
@ -857,6 +909,15 @@ func closeAllChannels(ctx *cli.Context) error {
client, cleanUp := getClient(ctx) client, cleanUp := getClient(ctx)
defer cleanUp() defer cleanUp()
// Check that only the field sat_per_vbyte or the deprecated field
// sat_per_byte is used.
feeRateFlag, err := checkNotBothSet(
ctx, "sat_per_vbyte", "sat_per_byte",
)
if err != nil {
return err
}
listReq := &lnrpc.ListChannelsRequest{} listReq := &lnrpc.ListChannelsRequest{}
openChannels, err := client.ListChannels(ctxc, listReq) openChannels, err := client.ListChannels(ctxc, listReq)
if err != nil { if err != nil {
@ -983,9 +1044,9 @@ func closeAllChannels(ctx *cli.Context) error {
}, },
OutputIndex: uint32(index), OutputIndex: uint32(index),
}, },
Force: !channel.GetActive(), Force: !channel.GetActive(),
TargetConf: int32(ctx.Int64("conf_target")), TargetConf: int32(ctx.Int64("conf_target")),
SatPerByte: ctx.Int64("sat_per_byte"), SatPerVbyte: ctx.Uint64(feeRateFlag),
} }
txidChan := make(chan string, 1) txidChan := make(chan string, 1)

View File

@ -240,6 +240,23 @@ func extractPathArgs(ctx *cli.Context) (string, string, error) {
return tlsCertPath, macPath, nil return tlsCertPath, macPath, nil
} }
// checkNotBothSet accepts two flag names, a and b, and checks that only flag a
// or flag b can be set, but not both. It returns the name of the flag or an
// error.
func checkNotBothSet(ctx *cli.Context, a, b string) (string, error) {
if ctx.IsSet(a) && ctx.IsSet(b) {
return "", fmt.Errorf(
"either %s or %s should be set, but not both", a, b,
)
}
if ctx.IsSet(a) {
return a, nil
}
return b, nil
}
func main() { func main() {
app := cli.NewApp() app := cli.NewApp()
app.Name = "lncli" app.Name = "lncli"

View File

@ -88,8 +88,8 @@ func pendingSweeps(ctx *cli.Context) error {
// Sort them in ascending fee rate order for display purposes. // Sort them in ascending fee rate order for display purposes.
sort.Slice(resp.PendingSweeps, func(i, j int) bool { sort.Slice(resp.PendingSweeps, func(i, j int) bool {
return resp.PendingSweeps[i].SatPerByte < return resp.PendingSweeps[i].SatPerVbyte <
resp.PendingSweeps[j].SatPerByte resp.PendingSweeps[j].SatPerVbyte
}) })
var pendingSweepsResp = struct { var pendingSweepsResp = struct {
@ -134,7 +134,7 @@ var bumpFeeCommand = cli.Command{
fee transaction that is under the control of the wallet. fee transaction that is under the control of the wallet.
A fee preference must be provided, either through the conf_target or A fee preference must be provided, either through the conf_target or
sat_per_byte parameters. sat_per_vbyte parameters.
Note that this command currently doesn't perform any validation checks Note that this command currently doesn't perform any validation checks
on the fee preference being provided. For now, the responsibility of on the fee preference being provided. For now, the responsibility of
@ -153,7 +153,12 @@ var bumpFeeCommand = cli.Command{
"be swept on-chain within", "be swept on-chain within",
}, },
cli.Uint64Flag{ cli.Uint64Flag{
Name: "sat_per_byte", Name: "sat_per_byte",
Usage: "Deprecated, use sat_per_vbyte instead.",
Hidden: true,
},
cli.Uint64Flag{
Name: "sat_per_vbyte",
Usage: "a manual fee expressed in sat/vbyte that " + Usage: "a manual fee expressed in sat/vbyte that " +
"should be used when sweeping the output", "should be used when sweeping the output",
}, },
@ -174,6 +179,15 @@ func bumpFee(ctx *cli.Context) error {
return cli.ShowCommandHelp(ctx, "bumpfee") return cli.ShowCommandHelp(ctx, "bumpfee")
} }
// Check that only the field sat_per_vbyte or the deprecated field
// sat_per_byte is used.
feeRateFlag, err := checkNotBothSet(
ctx, "sat_per_vbyte", "sat_per_byte",
)
if err != nil {
return err
}
// Validate and parse the relevant arguments/flags. // Validate and parse the relevant arguments/flags.
protoOutPoint, err := NewProtoOutPoint(ctx.Args().Get(0)) protoOutPoint, err := NewProtoOutPoint(ctx.Args().Get(0))
if err != nil { if err != nil {
@ -184,10 +198,10 @@ func bumpFee(ctx *cli.Context) error {
defer cleanUp() defer cleanUp()
resp, err := client.BumpFee(ctxc, &walletrpc.BumpFeeRequest{ resp, err := client.BumpFee(ctxc, &walletrpc.BumpFeeRequest{
Outpoint: protoOutPoint, Outpoint: protoOutPoint,
TargetConf: uint32(ctx.Uint64("conf_target")), TargetConf: uint32(ctx.Uint64("conf_target")),
SatPerByte: uint32(ctx.Uint64("sat_per_byte")), SatPerVbyte: ctx.Uint64(feeRateFlag),
Force: ctx.Bool("force"), Force: ctx.Bool("force"),
}) })
if err != nil { if err != nil {
return err return err
@ -216,7 +230,12 @@ var bumpCloseFeeCommand = cli.Command{
"be swept on-chain within", "be swept on-chain within",
}, },
cli.Uint64Flag{ cli.Uint64Flag{
Name: "sat_per_byte", Name: "sat_per_byte",
Usage: "Deprecated, use sat_per_vbyte instead.",
Hidden: true,
},
cli.Uint64Flag{
Name: "sat_per_vbyte",
Usage: "a manual fee expressed in sat/vbyte that " + Usage: "a manual fee expressed in sat/vbyte that " +
"should be used when sweeping the output", "should be used when sweeping the output",
}, },
@ -233,9 +252,18 @@ func bumpCloseFee(ctx *cli.Context) error {
return cli.ShowCommandHelp(ctx, "bumpclosefee") return cli.ShowCommandHelp(ctx, "bumpclosefee")
} }
// Check that only the field sat_per_vbyte or the deprecated field
// sat_per_byte is used.
feeRateFlag, err := checkNotBothSet(
ctx, "sat_per_vbyte", "sat_per_byte",
)
if err != nil {
return err
}
// Validate the channel point. // Validate the channel point.
channelPoint := ctx.Args().Get(0) channelPoint := ctx.Args().Get(0)
_, err := NewProtoOutPoint(channelPoint) _, err = NewProtoOutPoint(channelPoint)
if err != nil { if err != nil {
return err return err
} }
@ -291,10 +319,10 @@ func bumpCloseFee(ctx *cli.Context) error {
sweepTxID, sweep.Outpoint.OutputIndex) sweepTxID, sweep.Outpoint.OutputIndex)
_, err = walletClient.BumpFee(ctxc, &walletrpc.BumpFeeRequest{ _, err = walletClient.BumpFee(ctxc, &walletrpc.BumpFeeRequest{
Outpoint: sweep.Outpoint, Outpoint: sweep.Outpoint,
TargetConf: uint32(ctx.Uint64("conf_target")), TargetConf: uint32(ctx.Uint64("conf_target")),
SatPerByte: uint32(ctx.Uint64("sat_per_byte")), SatPerVbyte: ctx.Uint64(feeRateFlag),
Force: true, Force: true,
}) })
if err != nil { if err != nil {
return err return err
@ -595,7 +623,7 @@ func fundPsbt(ctx *cli.Context) error {
case ctx.Uint64("sat_per_vbyte") > 0: case ctx.Uint64("sat_per_vbyte") > 0:
req.Fees = &walletrpc.FundPsbtRequest_SatPerVbyte{ req.Fees = &walletrpc.FundPsbtRequest_SatPerVbyte{
SatPerVbyte: uint32(ctx.Uint64("sat_per_vbyte")), SatPerVbyte: ctx.Uint64("sat_per_vbyte"),
} }
} }

View File

@ -5,29 +5,29 @@ import "github.com/lightningnetwork/lnd/lnrpc/walletrpc"
// PendingSweep is a CLI-friendly type of the walletrpc.PendingSweep proto. We // PendingSweep is a CLI-friendly type of the walletrpc.PendingSweep proto. We
// use this to show more useful string versions of byte slices and enums. // use this to show more useful string versions of byte slices and enums.
type PendingSweep struct { type PendingSweep struct {
OutPoint OutPoint `json:"outpoint"` OutPoint OutPoint `json:"outpoint"`
WitnessType string `json:"witness_type"` WitnessType string `json:"witness_type"`
AmountSat uint32 `json:"amount_sat"` AmountSat uint32 `json:"amount_sat"`
SatPerByte uint32 `json:"sat_per_byte"` SatPerVByte uint32 `json:"sat_per_vbyte"`
BroadcastAttempts uint32 `json:"broadcast_attempts"` BroadcastAttempts uint32 `json:"broadcast_attempts"`
NextBroadcastHeight uint32 `json:"next_broadcast_height"` NextBroadcastHeight uint32 `json:"next_broadcast_height"`
RequestedSatPerByte uint32 `json:"requested_sat_per_byte"` RequestedSatPerVByte uint32 `json:"requested_sat_per_vbyte"`
RequestedConfTarget uint32 `json:"requested_conf_target"` RequestedConfTarget uint32 `json:"requested_conf_target"`
Force bool `json:"force"` Force bool `json:"force"`
} }
// NewPendingSweepFromProto converts the walletrpc.PendingSweep proto type into // NewPendingSweepFromProto converts the walletrpc.PendingSweep proto type into
// its corresponding CLI-friendly type. // its corresponding CLI-friendly type.
func NewPendingSweepFromProto(pendingSweep *walletrpc.PendingSweep) *PendingSweep { func NewPendingSweepFromProto(pendingSweep *walletrpc.PendingSweep) *PendingSweep {
return &PendingSweep{ return &PendingSweep{
OutPoint: NewOutPointFromProto(pendingSweep.Outpoint), OutPoint: NewOutPointFromProto(pendingSweep.Outpoint),
WitnessType: pendingSweep.WitnessType.String(), WitnessType: pendingSweep.WitnessType.String(),
AmountSat: pendingSweep.AmountSat, AmountSat: pendingSweep.AmountSat,
SatPerByte: pendingSweep.SatPerByte, SatPerVByte: uint32(pendingSweep.SatPerVbyte),
BroadcastAttempts: pendingSweep.BroadcastAttempts, BroadcastAttempts: pendingSweep.BroadcastAttempts,
NextBroadcastHeight: pendingSweep.NextBroadcastHeight, NextBroadcastHeight: pendingSweep.NextBroadcastHeight,
RequestedSatPerByte: pendingSweep.RequestedSatPerByte, RequestedSatPerVByte: uint32(pendingSweep.RequestedSatPerVbyte),
RequestedConfTarget: pendingSweep.RequestedConfTarget, RequestedConfTarget: pendingSweep.RequestedConfTarget,
Force: pendingSweep.Force, Force: pendingSweep.Force,
} }
} }

View File

@ -209,7 +209,7 @@ To obtain information about the watchtower's sessions, users can use the
"num_backups": 0, "num_backups": 0,
"num_pending_backups": 0, "num_pending_backups": 0,
"max_backups": 1024, "max_backups": 1024,
"sweep_sat_per_byte": 10 "sweep_sat_per_vbyte": 10
} }
] ]
} }

View File

@ -2075,8 +2075,11 @@ func (m *EstimateFeeRequest) GetTargetConf() int32 {
type EstimateFeeResponse struct { type EstimateFeeResponse struct {
// The total fee in satoshis. // The total fee in satoshis.
FeeSat int64 `protobuf:"varint,1,opt,name=fee_sat,json=feeSat,proto3" json:"fee_sat,omitempty"` FeeSat int64 `protobuf:"varint,1,opt,name=fee_sat,json=feeSat,proto3" json:"fee_sat,omitempty"`
// Deprecated, use sat_per_vbyte.
// The fee rate in satoshi/vbyte. // The fee rate in satoshi/vbyte.
FeerateSatPerByte int64 `protobuf:"varint,2,opt,name=feerate_sat_per_byte,json=feerateSatPerByte,proto3" json:"feerate_sat_per_byte,omitempty"` FeerateSatPerByte int64 `protobuf:"varint,2,opt,name=feerate_sat_per_byte,json=feerateSatPerByte,proto3" json:"feerate_sat_per_byte,omitempty"` // Deprecated: Do not use.
// The fee rate in satoshi/vbyte.
SatPerVbyte uint64 `protobuf:"varint,3,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -2114,6 +2117,7 @@ func (m *EstimateFeeResponse) GetFeeSat() int64 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *EstimateFeeResponse) GetFeerateSatPerByte() int64 { func (m *EstimateFeeResponse) GetFeerateSatPerByte() int64 {
if m != nil { if m != nil {
return m.FeerateSatPerByte return m.FeerateSatPerByte
@ -2121,6 +2125,13 @@ func (m *EstimateFeeResponse) GetFeerateSatPerByte() int64 {
return 0 return 0
} }
func (m *EstimateFeeResponse) GetSatPerVbyte() uint64 {
if m != nil {
return m.SatPerVbyte
}
return 0
}
type SendManyRequest struct { type SendManyRequest struct {
// The map from addresses to amounts // The map from addresses to amounts
AddrToAmount map[string]int64 `protobuf:"bytes,1,rep,name=AddrToAmount,proto3" json:"AddrToAmount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` AddrToAmount map[string]int64 `protobuf:"bytes,1,rep,name=AddrToAmount,proto3" json:"AddrToAmount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
@ -2129,7 +2140,11 @@ type SendManyRequest struct {
TargetConf int32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"` TargetConf int32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction. // transaction.
SatPerByte int64 `protobuf:"varint,5,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerVbyte uint64 `protobuf:"varint,4,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction.
SatPerByte int64 `protobuf:"varint,5,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` // Deprecated: Do not use.
// An optional label for the transaction, limited to 500 characters. // An optional label for the transaction, limited to 500 characters.
Label string `protobuf:"bytes,6,opt,name=label,proto3" json:"label,omitempty"` Label string `protobuf:"bytes,6,opt,name=label,proto3" json:"label,omitempty"`
// The minimum number of confirmations each one of your outputs used for // The minimum number of confirmations each one of your outputs used for
@ -2181,6 +2196,14 @@ func (m *SendManyRequest) GetTargetConf() int32 {
return 0 return 0
} }
func (m *SendManyRequest) GetSatPerVbyte() uint64 {
if m != nil {
return m.SatPerVbyte
}
return 0
}
// Deprecated: Do not use.
func (m *SendManyRequest) GetSatPerByte() int64 { func (m *SendManyRequest) GetSatPerByte() int64 {
if m != nil { if m != nil {
return m.SatPerByte return m.SatPerByte
@ -2259,7 +2282,11 @@ type SendCoinsRequest struct {
TargetConf int32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"` TargetConf int32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction. // transaction.
SatPerByte int64 `protobuf:"varint,5,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerVbyte uint64 `protobuf:"varint,4,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction.
SatPerByte int64 `protobuf:"varint,5,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` // Deprecated: Do not use.
// //
//If set, then the amount field will be ignored, and lnd will attempt to //If set, then the amount field will be ignored, and lnd will attempt to
//send all the coins under control of the internal wallet to the specified //send all the coins under control of the internal wallet to the specified
@ -2323,6 +2350,14 @@ func (m *SendCoinsRequest) GetTargetConf() int32 {
return 0 return 0
} }
func (m *SendCoinsRequest) GetSatPerVbyte() uint64 {
if m != nil {
return m.SatPerVbyte
}
return 0
}
// Deprecated: Do not use.
func (m *SendCoinsRequest) GetSatPerByte() int64 { func (m *SendCoinsRequest) GetSatPerByte() int64 {
if m != nil { if m != nil {
return m.SatPerByte return m.SatPerByte
@ -4801,15 +4836,19 @@ type CloseChannelRequest struct {
// The target number of blocks that the closure transaction should be // The target number of blocks that the closure transaction should be
// confirmed by. // confirmed by.
TargetConf int32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"` TargetConf int32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// closure transaction. // closure transaction.
SatPerByte int64 `protobuf:"varint,4,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerByte int64 `protobuf:"varint,4,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` // Deprecated: Do not use.
// //
//An optional address to send funds to in the case of a cooperative close. //An optional address to send funds to in the case of a cooperative close.
//If the channel was opened with an upfront shutdown script and this field //If the channel was opened with an upfront shutdown script and this field
//is set, the request to close will fail because the channel must pay out //is set, the request to close will fail because the channel must pay out
//to the upfront shutdown addresss. //to the upfront shutdown addresss.
DeliveryAddress string `protobuf:"bytes,5,opt,name=delivery_address,json=deliveryAddress,proto3" json:"delivery_address,omitempty"` DeliveryAddress string `protobuf:"bytes,5,opt,name=delivery_address,json=deliveryAddress,proto3" json:"delivery_address,omitempty"`
// A manual fee rate set in sat/vbyte that should be used when crafting the
// closure transaction.
SatPerVbyte uint64 `protobuf:"varint,6,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -4861,6 +4900,7 @@ func (m *CloseChannelRequest) GetTargetConf() int32 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *CloseChannelRequest) GetSatPerByte() int64 { func (m *CloseChannelRequest) GetSatPerByte() int64 {
if m != nil { if m != nil {
return m.SatPerByte return m.SatPerByte
@ -4875,6 +4915,13 @@ func (m *CloseChannelRequest) GetDeliveryAddress() string {
return "" return ""
} }
func (m *CloseChannelRequest) GetSatPerVbyte() uint64 {
if m != nil {
return m.SatPerVbyte
}
return 0
}
type CloseStatusUpdate struct { type CloseStatusUpdate struct {
// Types that are valid to be assigned to Update: // Types that are valid to be assigned to Update:
// *CloseStatusUpdate_ClosePending // *CloseStatusUpdate_ClosePending
@ -5069,6 +5116,9 @@ func (m *ReadyForPsbtFunding) GetPsbt() []byte {
} }
type OpenChannelRequest struct { type OpenChannelRequest struct {
// A manual fee rate set in sat/vbyte that should be used when crafting the
// funding transaction.
SatPerVbyte uint64 `protobuf:"varint,1,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
// //
//The pubkey of the node to open a channel with. When using REST, this field //The pubkey of the node to open a channel with. When using REST, this field
//must be encoded as base64. //must be encoded as base64.
@ -5085,9 +5135,10 @@ type OpenChannelRequest struct {
// The target number of blocks that the funding transaction should be // The target number of blocks that the funding transaction should be
// confirmed by. // confirmed by.
TargetConf int32 `protobuf:"varint,6,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"` TargetConf int32 `protobuf:"varint,6,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// funding transaction. // funding transaction.
SatPerByte int64 `protobuf:"varint,7,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerByte int64 `protobuf:"varint,7,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` // Deprecated: Do not use.
// Whether this channel should be private, not announced to the greater // Whether this channel should be private, not announced to the greater
// network. // network.
Private bool `protobuf:"varint,8,opt,name=private,proto3" json:"private,omitempty"` Private bool `protobuf:"varint,8,opt,name=private,proto3" json:"private,omitempty"`
@ -5162,6 +5213,13 @@ func (m *OpenChannelRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_OpenChannelRequest proto.InternalMessageInfo var xxx_messageInfo_OpenChannelRequest proto.InternalMessageInfo
func (m *OpenChannelRequest) GetSatPerVbyte() uint64 {
if m != nil {
return m.SatPerVbyte
}
return 0
}
func (m *OpenChannelRequest) GetNodePubkey() []byte { func (m *OpenChannelRequest) GetNodePubkey() []byte {
if m != nil { if m != nil {
return m.NodePubkey return m.NodePubkey
@ -5198,6 +5256,7 @@ func (m *OpenChannelRequest) GetTargetConf() int32 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *OpenChannelRequest) GetSatPerByte() int64 { func (m *OpenChannelRequest) GetSatPerByte() int64 {
if m != nil { if m != nil {
return m.SatPerByte return m.SatPerByte
@ -12984,792 +13043,795 @@ func init() {
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{ var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 12560 bytes of a gzipped FileDescriptorProto // 12602 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x6b, 0x6c, 0x23, 0x59, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7d, 0x5b, 0x6c, 0x23, 0x59,
0x76, 0x18, 0xdc, 0x7c, 0x89, 0xe4, 0x21, 0x29, 0x51, 0x57, 0x2f, 0xb6, 0x7a, 0x7a, 0xba, 0xa7, 0x76, 0x58, 0xf3, 0x25, 0x92, 0x87, 0xa4, 0x44, 0x5d, 0xbd, 0xd8, 0xea, 0xe9, 0xe9, 0x9e, 0x9a,
0x66, 0x76, 0xa6, 0xb7, 0x67, 0x46, 0xd3, 0xd3, 0x33, 0x3d, 0x8f, 0xed, 0xcf, 0xeb, 0xa5, 0x24, 0xd9, 0x99, 0xde, 0x9e, 0x19, 0x4d, 0x4f, 0xcf, 0xf4, 0x3c, 0xb6, 0xe3, 0xf5, 0x52, 0x12, 0xd5,
0xaa, 0xc5, 0x6d, 0x89, 0xd4, 0x16, 0xa9, 0x19, 0xcf, 0xc2, 0x76, 0xb9, 0x44, 0x5e, 0x49, 0xf5, 0xe2, 0xb6, 0x44, 0x6a, 0x8b, 0xd4, 0x8c, 0x67, 0x61, 0xbb, 0x5c, 0x22, 0xaf, 0xa4, 0x4a, 0x93,
0x35, 0x59, 0xc5, 0xad, 0x2a, 0xaa, 0xa5, 0x0d, 0x02, 0xf8, 0x87, 0xe3, 0x04, 0x86, 0x11, 0x20, 0x55, 0xdc, 0xaa, 0xa2, 0x5a, 0xda, 0x20, 0x80, 0x3f, 0x1c, 0x3b, 0x30, 0x8c, 0x00, 0x01, 0xe2,
0x40, 0x1c, 0xe4, 0x65, 0x24, 0x41, 0x80, 0xe4, 0x9f, 0x61, 0xc0, 0xf6, 0xaf, 0xe4, 0x5f, 0x80, 0x00, 0x79, 0x18, 0x49, 0x90, 0x20, 0xf9, 0x33, 0x0c, 0xd8, 0xfe, 0x4a, 0x3e, 0xf2, 0x95, 0x20,
0x04, 0x01, 0x12, 0x04, 0x41, 0x62, 0xe4, 0x81, 0x20, 0x41, 0x80, 0xc4, 0x01, 0x12, 0x20, 0x31, 0x40, 0x82, 0x20, 0x40, 0x8c, 0x3c, 0x10, 0x24, 0x08, 0x90, 0x38, 0x40, 0x0c, 0x24, 0x06, 0xfc,
0xe0, 0xbf, 0x0e, 0x12, 0xdc, 0x73, 0x1f, 0x75, 0xeb, 0xa1, 0xee, 0x9e, 0xdd, 0xc9, 0xfe, 0x91, 0x99, 0x04, 0x09, 0xee, 0xb9, 0x8f, 0xba, 0xf5, 0x50, 0x77, 0xcf, 0x7a, 0xb2, 0x3f, 0x12, 0xeb,
0x58, 0xe7, 0x9c, 0xfb, 0xbe, 0xf7, 0xdc, 0x73, 0xcf, 0x39, 0xf7, 0x5c, 0xa8, 0xfa, 0xb3, 0xd1, 0x9c, 0x73, 0xdf, 0xf7, 0x9e, 0x7b, 0xee, 0x39, 0xe7, 0x9e, 0x0b, 0x55, 0x7f, 0x36, 0xda, 0x9a,
0xd6, 0xcc, 0xf7, 0x42, 0x8f, 0x94, 0x26, 0xae, 0x3f, 0x1b, 0x19, 0x7f, 0x94, 0x83, 0xe2, 0x71, 0xf9, 0x5e, 0xe8, 0x91, 0xd2, 0xc4, 0xf5, 0x67, 0x23, 0xe3, 0x0f, 0x73, 0x50, 0x3c, 0x0e, 0x2f,
0x78, 0xe9, 0x91, 0x47, 0x50, 0xb7, 0xc7, 0x63, 0x9f, 0x06, 0x81, 0x15, 0x5e, 0xcd, 0x68, 0x2b, 0x3d, 0xf2, 0x08, 0xea, 0xf6, 0x78, 0xec, 0xd3, 0x20, 0xb0, 0xc2, 0xab, 0x19, 0x6d, 0xe5, 0xee,
0x77, 0x37, 0x77, 0x6f, 0xf1, 0x21, 0xd9, 0x42, 0xb2, 0xad, 0x36, 0x47, 0x0d, 0xaf, 0x66, 0xd4, 0xe6, 0xee, 0x2d, 0x3e, 0x24, 0x5b, 0x48, 0xb6, 0xd5, 0xe6, 0xa8, 0xe1, 0xd5, 0x8c, 0x9a, 0x35,
0xac, 0xd9, 0xd1, 0x07, 0x69, 0x41, 0x59, 0x7c, 0xb6, 0xf2, 0x77, 0x73, 0xf7, 0xaa, 0xa6, 0xfc, 0x3b, 0xfa, 0x20, 0x2d, 0x28, 0x8b, 0xcf, 0x56, 0xfe, 0x6e, 0xee, 0x5e, 0xd5, 0x94, 0x9f, 0xe4,
0x24, 0xb7, 0x01, 0xec, 0xa9, 0x37, 0x77, 0x43, 0x2b, 0xb0, 0xc3, 0x56, 0xe1, 0x6e, 0xee, 0x5e, 0x36, 0x80, 0x3d, 0xf5, 0xe6, 0x6e, 0x68, 0x05, 0x76, 0xd8, 0x2a, 0xdc, 0xcd, 0xdd, 0x2b, 0x98,
0xc1, 0xac, 0x72, 0xc8, 0xc0, 0x0e, 0xc9, 0x2d, 0xa8, 0xce, 0x9e, 0x59, 0xc1, 0xc8, 0x77, 0x66, 0x55, 0x0e, 0x19, 0xd8, 0x21, 0xb9, 0x05, 0xd5, 0xd9, 0x33, 0x2b, 0x18, 0xf9, 0xce, 0x2c, 0x6c,
0x61, 0xab, 0x88, 0x49, 0x2b, 0xb3, 0x67, 0x03, 0xfc, 0x26, 0xef, 0x42, 0xc5, 0x9b, 0x87, 0x33, 0x15, 0x31, 0x69, 0x65, 0xf6, 0x6c, 0x80, 0xdf, 0xe4, 0x5d, 0xa8, 0x78, 0xf3, 0x70, 0xe6, 0x39,
0xcf, 0x71, 0xc3, 0x56, 0xe9, 0x6e, 0xee, 0x5e, 0xed, 0xe1, 0x92, 0xa8, 0x48, 0x7f, 0x1e, 0x1e, 0x6e, 0xd8, 0x2a, 0xdd, 0xcd, 0xdd, 0xab, 0x3d, 0x5c, 0x12, 0x15, 0xe9, 0xcf, 0xc3, 0x23, 0x06,
0x31, 0xb0, 0xa9, 0x08, 0xc8, 0x5b, 0xd0, 0x18, 0x79, 0xee, 0xa9, 0xe3, 0x4f, 0xed, 0xd0, 0xf1, 0x36, 0x15, 0x01, 0x79, 0x0b, 0x1a, 0x23, 0xcf, 0x3d, 0x75, 0xfc, 0xa9, 0x1d, 0x3a, 0x9e, 0x1b,
0xdc, 0xa0, 0xb5, 0x80, 0x65, 0xc5, 0x81, 0xc6, 0x3f, 0xce, 0x43, 0x6d, 0xe8, 0xdb, 0x6e, 0x60, 0xb4, 0x16, 0xb0, 0xac, 0x38, 0xd0, 0xf8, 0x27, 0x79, 0xa8, 0x0d, 0x7d, 0xdb, 0x0d, 0xec, 0x11,
0x8f, 0x18, 0x80, 0x6c, 0x40, 0x39, 0xbc, 0xb4, 0xce, 0xed, 0xe0, 0x1c, 0x9b, 0x5a, 0x35, 0x17, 0x03, 0x90, 0x0d, 0x28, 0x87, 0x97, 0xd6, 0xb9, 0x1d, 0x9c, 0x63, 0x53, 0xab, 0xe6, 0x42, 0x78,
0xc2, 0xcb, 0x7d, 0x3b, 0x38, 0x27, 0xeb, 0xb0, 0xc0, 0x6b, 0x89, 0x0d, 0x2a, 0x98, 0xe2, 0x8b, 0xb9, 0x6f, 0x07, 0xe7, 0x64, 0x1d, 0x16, 0x78, 0x2d, 0xb1, 0x41, 0x05, 0x53, 0x7c, 0x91, 0x77,
0xbc, 0x0b, 0xcb, 0xee, 0x7c, 0x6a, 0xc5, 0x8b, 0x62, 0xcd, 0x2a, 0x99, 0x4d, 0x77, 0x3e, 0xdd, 0x61, 0xd9, 0x9d, 0x4f, 0xad, 0x78, 0x51, 0xac, 0x59, 0x25, 0xb3, 0xe9, 0xce, 0xa7, 0x3b, 0x3a,
0xd1, 0xe1, 0xac, 0xf1, 0x27, 0x13, 0x6f, 0xf4, 0x8c, 0x17, 0xc0, 0x9b, 0x57, 0x45, 0x08, 0x96, 0x9c, 0x35, 0xfe, 0x64, 0xe2, 0x8d, 0x9e, 0xf1, 0x02, 0x78, 0xf3, 0xaa, 0x08, 0xc1, 0x32, 0xde,
0xf1, 0x06, 0xd4, 0x05, 0x9a, 0x3a, 0x67, 0xe7, 0xbc, 0x8d, 0x25, 0xb3, 0xc6, 0x09, 0x10, 0xc4, 0x80, 0xba, 0x40, 0x53, 0xe7, 0xec, 0x9c, 0xb7, 0xb1, 0x64, 0xd6, 0x38, 0x01, 0x82, 0x58, 0x0e,
0x72, 0x08, 0x9d, 0x29, 0xb5, 0x82, 0xd0, 0x9e, 0xce, 0x44, 0x93, 0xaa, 0x0c, 0x32, 0x60, 0x00, 0xa1, 0x33, 0xa5, 0x56, 0x10, 0xda, 0xd3, 0x99, 0x68, 0x52, 0x95, 0x41, 0x06, 0x0c, 0x80, 0x68,
0x44, 0x7b, 0xa1, 0x3d, 0xb1, 0x4e, 0x29, 0x0d, 0x5a, 0x65, 0x81, 0x66, 0x90, 0x3d, 0x4a, 0x03, 0x2f, 0xb4, 0x27, 0xd6, 0x29, 0xa5, 0x41, 0xab, 0x2c, 0xd0, 0x0c, 0xb2, 0x47, 0x69, 0x40, 0xbe,
0xf2, 0x2d, 0x58, 0x1c, 0xd3, 0x20, 0xb4, 0xc4, 0x60, 0xd0, 0xa0, 0x55, 0xb9, 0x5b, 0xb8, 0x57, 0x05, 0x8b, 0x63, 0x1a, 0x84, 0x96, 0x18, 0x0c, 0x1a, 0xb4, 0x2a, 0x77, 0x0b, 0xf7, 0xaa, 0x66,
0x35, 0x1b, 0x0c, 0xda, 0x96, 0x40, 0xf2, 0x1a, 0x80, 0x6f, 0x3f, 0xb7, 0x58, 0x47, 0xd0, 0xcb, 0x83, 0x41, 0xdb, 0x12, 0x48, 0x5e, 0x03, 0xf0, 0xed, 0xe7, 0x16, 0xeb, 0x08, 0x7a, 0xd9, 0xaa,
0x56, 0x95, 0x8f, 0x82, 0x6f, 0x3f, 0x1f, 0x5e, 0xee, 0xd3, 0x4b, 0xb2, 0x0a, 0xa5, 0x89, 0x7d, 0xf2, 0x51, 0xf0, 0xed, 0xe7, 0xc3, 0xcb, 0x7d, 0x7a, 0x49, 0x56, 0xa1, 0x34, 0xb1, 0x4f, 0xe8,
0x42, 0x27, 0x2d, 0x40, 0x04, 0xff, 0x30, 0x7e, 0x08, 0xeb, 0x4f, 0x68, 0xa8, 0x75, 0x65, 0x60, 0xa4, 0x05, 0x88, 0xe0, 0x1f, 0xc6, 0x0f, 0x61, 0xfd, 0x09, 0x0d, 0xb5, 0xae, 0x0c, 0x4c, 0xfa,
0xd2, 0x1f, 0xcd, 0x69, 0x10, 0xb2, 0x56, 0x05, 0xa1, 0xed, 0x87, 0xb2, 0x55, 0x39, 0xde, 0x2a, 0xa3, 0x39, 0x0d, 0x42, 0xd6, 0xaa, 0x20, 0xb4, 0xfd, 0x50, 0xb6, 0x2a, 0xc7, 0x5b, 0x85, 0xb0,
0x84, 0x45, 0xad, 0xa2, 0xee, 0x58, 0x12, 0xe4, 0x91, 0xa0, 0x4a, 0xdd, 0x31, 0x47, 0x1b, 0x07, 0xa8, 0x55, 0xd4, 0x1d, 0x4b, 0x82, 0x3c, 0x12, 0x54, 0xa9, 0x3b, 0xe6, 0x68, 0xe3, 0x00, 0x88,
0x40, 0xb4, 0x8c, 0x77, 0x69, 0x68, 0x3b, 0x93, 0x80, 0x7c, 0x02, 0xf5, 0x50, 0x2b, 0xae, 0x95, 0x96, 0xf1, 0x2e, 0x0d, 0x6d, 0x67, 0x12, 0x90, 0x4f, 0xa0, 0x1e, 0x6a, 0xc5, 0xb5, 0x72, 0x77,
0xbb, 0x5b, 0xb8, 0x57, 0x53, 0x53, 0x53, 0x4b, 0x60, 0xc6, 0xe8, 0x8c, 0x73, 0xa8, 0xec, 0x51, 0x0b, 0xf7, 0x6a, 0x6a, 0x6a, 0x6a, 0x09, 0xcc, 0x18, 0x9d, 0x71, 0x0e, 0x95, 0x3d, 0x4a, 0x0f,
0x7a, 0xe0, 0x4c, 0x9d, 0x90, 0xac, 0x43, 0xe9, 0xd4, 0xb9, 0xa4, 0x63, 0xac, 0x54, 0x61, 0xff, 0x9c, 0xa9, 0x13, 0x92, 0x75, 0x28, 0x9d, 0x3a, 0x97, 0x74, 0x8c, 0x95, 0x2a, 0xec, 0xdf, 0x30,
0x86, 0xc9, 0x3f, 0xc9, 0x1d, 0x00, 0xfc, 0x61, 0x4d, 0xd5, 0x2c, 0xdd, 0xbf, 0x61, 0x56, 0x11, 0xf9, 0x27, 0xb9, 0x03, 0x80, 0x3f, 0xac, 0xa9, 0x9a, 0xa5, 0xfb, 0x37, 0xcc, 0x2a, 0xc2, 0x0e,
0x76, 0x18, 0xd8, 0x21, 0xd9, 0x84, 0xf2, 0x8c, 0xfa, 0x23, 0x2a, 0xe7, 0xc3, 0xfe, 0x0d, 0x53, 0x03, 0x3b, 0x24, 0x9b, 0x50, 0x9e, 0x51, 0x7f, 0x44, 0xe5, 0x7c, 0xd8, 0xbf, 0x61, 0x4a, 0xc0,
0x02, 0xb6, 0xcb, 0x50, 0x9a, 0xb0, 0xdc, 0x8d, 0xff, 0x5e, 0x82, 0xda, 0x80, 0xba, 0x63, 0xd9, 0x76, 0x19, 0x4a, 0x13, 0x96, 0xbb, 0xf1, 0xdf, 0x4b, 0x50, 0x1b, 0x50, 0x77, 0x2c, 0x7b, 0x82,
0x13, 0x04, 0x8a, 0xac, 0xa3, 0xb1, 0xb0, 0xba, 0x89, 0xbf, 0xc9, 0x9b, 0x50, 0xc3, 0x21, 0x09, 0x40, 0x91, 0x75, 0x34, 0x16, 0x56, 0x37, 0xf1, 0x37, 0x79, 0x13, 0x6a, 0x38, 0x24, 0x41, 0xe8,
0x42, 0xdf, 0x71, 0xcf, 0xf8, 0x6a, 0xd9, 0xce, 0xb7, 0x72, 0x26, 0x30, 0xf0, 0x00, 0xa1, 0xa4, 0x3b, 0xee, 0x19, 0x5f, 0x2d, 0xdb, 0xf9, 0x56, 0xce, 0x04, 0x06, 0x1e, 0x20, 0x94, 0x34, 0xa1,
0x09, 0x05, 0x7b, 0x2a, 0x57, 0x0b, 0xfb, 0x49, 0x6e, 0x42, 0xc5, 0x9e, 0x86, 0xbc, 0x7a, 0x75, 0x60, 0x4f, 0xe5, 0x6a, 0x61, 0x3f, 0xc9, 0x4d, 0xa8, 0xd8, 0xd3, 0x90, 0x57, 0xaf, 0x8e, 0xe0,
0x04, 0x97, 0xed, 0x69, 0x88, 0x55, 0x7b, 0x03, 0xea, 0x33, 0xfb, 0x6a, 0x4a, 0xdd, 0x30, 0x9a, 0xb2, 0x3d, 0x0d, 0xb1, 0x6a, 0x6f, 0x40, 0x7d, 0x66, 0x5f, 0x4d, 0xa9, 0x1b, 0x46, 0xd3, 0xac,
0x66, 0x75, 0xb3, 0x26, 0x60, 0x38, 0xd1, 0x1e, 0xc2, 0x8a, 0x4e, 0x22, 0x0b, 0x2f, 0xa9, 0xc2, 0x6e, 0xd6, 0x04, 0x0c, 0x27, 0xda, 0x43, 0x58, 0xd1, 0x49, 0x64, 0xe1, 0x25, 0x55, 0xf8, 0xb2,
0x97, 0x35, 0x6a, 0x51, 0x87, 0x77, 0x60, 0x49, 0xa6, 0xf1, 0x79, 0x7b, 0x70, 0xfa, 0x55, 0xcd, 0x46, 0x2d, 0xea, 0xf0, 0x0e, 0x2c, 0xc9, 0x34, 0x3e, 0x6f, 0x0f, 0x4e, 0xbf, 0xaa, 0xb9, 0x28,
0x45, 0x01, 0x96, 0xad, 0xbc, 0x07, 0xcd, 0x53, 0xc7, 0xb5, 0x27, 0xd6, 0x68, 0x12, 0x5e, 0x58, 0xc0, 0xb2, 0x95, 0xf7, 0xa0, 0x79, 0xea, 0xb8, 0xf6, 0xc4, 0x1a, 0x4d, 0xc2, 0x0b, 0x6b, 0x4c,
0x63, 0x3a, 0x09, 0x6d, 0x9c, 0x89, 0x25, 0x73, 0x11, 0xe1, 0x3b, 0x93, 0xf0, 0x62, 0x97, 0x41, 0x27, 0xa1, 0x8d, 0x33, 0xb1, 0x64, 0x2e, 0x22, 0x7c, 0x67, 0x12, 0x5e, 0xec, 0x32, 0x28, 0x79,
0xc9, 0x7b, 0x50, 0x3d, 0xa5, 0xd4, 0xc2, 0xce, 0x6a, 0x55, 0x62, 0x0b, 0x5a, 0x8e, 0x90, 0x59, 0x0f, 0xaa, 0xa7, 0x94, 0x5a, 0xd8, 0x59, 0xad, 0x4a, 0x6c, 0x41, 0xcb, 0x11, 0x32, 0x2b, 0xa7,
0x39, 0x95, 0x63, 0xf5, 0x1e, 0x34, 0xbd, 0x79, 0x78, 0xe6, 0x39, 0xee, 0x99, 0x35, 0x3a, 0xb7, 0x72, 0xac, 0xde, 0x83, 0xa6, 0x37, 0x0f, 0xcf, 0x3c, 0xc7, 0x3d, 0xb3, 0x46, 0xe7, 0xb6, 0x6b,
0x5d, 0xcb, 0x19, 0xe3, 0xdc, 0x2c, 0x6e, 0xe7, 0x1f, 0xe4, 0xcc, 0x45, 0x89, 0xdb, 0x39, 0xb7, 0x39, 0x63, 0x9c, 0x9b, 0xc5, 0xed, 0xfc, 0x83, 0x9c, 0xb9, 0x28, 0x71, 0x3b, 0xe7, 0xb6, 0xdb,
0xdd, 0xee, 0x98, 0xbc, 0x0d, 0x4b, 0x13, 0x3b, 0x08, 0xad, 0x73, 0x6f, 0x66, 0xcd, 0xe6, 0x27, 0x1d, 0x93, 0xb7, 0x61, 0x69, 0x62, 0x07, 0xa1, 0x75, 0xee, 0xcd, 0xac, 0xd9, 0xfc, 0xe4, 0x19,
0xcf, 0xe8, 0x55, 0xab, 0x81, 0x1d, 0xd1, 0x60, 0xe0, 0x7d, 0x6f, 0x76, 0x84, 0x40, 0x36, 0xf5, 0xbd, 0x6a, 0x35, 0xb0, 0x23, 0x1a, 0x0c, 0xbc, 0xef, 0xcd, 0x8e, 0x10, 0xc8, 0xa6, 0x1e, 0xd6,
0xb0, 0x9e, 0xbc, 0x12, 0x6c, 0x4a, 0x37, 0xcc, 0x2a, 0x83, 0xf0, 0x42, 0xbf, 0x82, 0x15, 0x1c, 0x93, 0x57, 0x82, 0x4d, 0xe9, 0x86, 0x59, 0x65, 0x10, 0x5e, 0xe8, 0x57, 0xb0, 0x82, 0xc3, 0x33,
0x9e, 0xd1, 0x3c, 0x08, 0xbd, 0xa9, 0xe5, 0xd3, 0x91, 0xe7, 0x8f, 0x83, 0x56, 0x0d, 0xe7, 0xda, 0x9a, 0x07, 0xa1, 0x37, 0xb5, 0x7c, 0x3a, 0xf2, 0xfc, 0x71, 0xd0, 0xaa, 0xe1, 0x5c, 0xfb, 0xb6,
0xb7, 0x45, 0x65, 0xb5, 0x31, 0xde, 0xda, 0xa5, 0x41, 0xb8, 0x83, 0xc4, 0x26, 0xa7, 0xed, 0xb8, 0xa8, 0xac, 0x36, 0xc6, 0x5b, 0xbb, 0x34, 0x08, 0x77, 0x90, 0xd8, 0xe4, 0xb4, 0x1d, 0x37, 0xf4,
0xa1, 0x7f, 0x65, 0x2e, 0x8f, 0x93, 0x70, 0xf2, 0x1e, 0x10, 0x7b, 0x32, 0xf1, 0x9e, 0x5b, 0x01, 0xaf, 0xcc, 0xe5, 0x71, 0x12, 0x4e, 0xde, 0x03, 0x62, 0x4f, 0x26, 0xde, 0x73, 0x2b, 0xa0, 0x93,
0x9d, 0x9c, 0x5a, 0xa2, 0x13, 0x5b, 0x8b, 0x77, 0x73, 0xf7, 0x2a, 0x66, 0x13, 0x31, 0x03, 0x3a, 0x53, 0x4b, 0x74, 0x62, 0x6b, 0xf1, 0x6e, 0xee, 0x5e, 0xc5, 0x6c, 0x22, 0x66, 0x40, 0x27, 0xa7,
0x39, 0x3d, 0xe2, 0x70, 0xf2, 0x09, 0xe0, 0x22, 0xb5, 0x4e, 0xa9, 0x1d, 0xce, 0x7d, 0x1a, 0xb4, 0x47, 0x1c, 0x4e, 0x3e, 0x01, 0x5c, 0xa4, 0xd6, 0x29, 0xb5, 0xc3, 0xb9, 0x4f, 0x83, 0xd6, 0xd2,
0x96, 0xee, 0x16, 0xee, 0x2d, 0x3e, 0x5c, 0x56, 0xfd, 0x85, 0xe0, 0x6d, 0x27, 0x34, 0xeb, 0x8c, 0xdd, 0xc2, 0xbd, 0xc5, 0x87, 0xcb, 0xaa, 0xbf, 0x10, 0xbc, 0xed, 0x84, 0x66, 0x9d, 0xd1, 0x89,
0x4e, 0x7c, 0x07, 0xfa, 0x6c, 0x60, 0xab, 0xbe, 0xd5, 0x8c, 0xcd, 0x06, 0xb6, 0xe6, 0x37, 0x77, 0xef, 0x40, 0x9f, 0x0d, 0x6c, 0xd5, 0xb7, 0x9a, 0xb1, 0xd9, 0xc0, 0xd6, 0xfc, 0xe6, 0x2e, 0xac,
0x61, 0x3d, 0xbb, 0xd6, 0x6c, 0xde, 0xb1, 0x8e, 0x63, 0xf3, 0xb5, 0x68, 0xb2, 0x9f, 0x6c, 0xf1, 0x67, 0xd7, 0x9a, 0xcd, 0x3b, 0xd6, 0x71, 0x6c, 0xbe, 0x16, 0x4d, 0xf6, 0x93, 0x2d, 0xfe, 0x0b,
0x5f, 0xd8, 0x93, 0x39, 0xc5, 0x89, 0x5a, 0x37, 0xf9, 0xc7, 0x77, 0xf2, 0x9f, 0xe5, 0x8c, 0xdf, 0x7b, 0x32, 0xa7, 0x38, 0x51, 0xeb, 0x26, 0xff, 0xf8, 0x4e, 0xfe, 0xb3, 0x9c, 0xf1, 0x7b, 0x39,
0xcf, 0x41, 0x9d, 0x77, 0x44, 0x30, 0xf3, 0xdc, 0x80, 0x92, 0x37, 0xa1, 0x21, 0x4b, 0xa6, 0xbe, 0xa8, 0xf3, 0x8e, 0x08, 0x66, 0x9e, 0x1b, 0x50, 0xf2, 0x26, 0x34, 0x64, 0xc9, 0xd4, 0xf7, 0x3d,
0xef, 0xf9, 0x82, 0xa1, 0xca, 0xea, 0x74, 0x18, 0x8c, 0x7c, 0x1b, 0x9a, 0x92, 0x68, 0xe6, 0x53, 0x5f, 0x30, 0x54, 0x59, 0x9d, 0x0e, 0x83, 0x91, 0x6f, 0x43, 0x53, 0x12, 0xcd, 0x7c, 0xea, 0x4c,
0x67, 0x6a, 0x9f, 0xc9, 0xac, 0xe5, 0x6c, 0x3b, 0x12, 0x60, 0xf2, 0x61, 0x94, 0x9f, 0xef, 0xcd, 0xed, 0x33, 0x99, 0xb5, 0x9c, 0x6d, 0x47, 0x02, 0x4c, 0x3e, 0x8c, 0xf2, 0xf3, 0xbd, 0x79, 0x48,
0x43, 0x8a, 0xcb, 0xa1, 0xf6, 0xb0, 0x2e, 0x7a, 0xc0, 0x64, 0x30, 0x95, 0x3b, 0x7e, 0xbd, 0xc2, 0x71, 0x39, 0xd4, 0x1e, 0xd6, 0x45, 0x0f, 0x98, 0x0c, 0xa6, 0x72, 0xc7, 0xaf, 0x57, 0x58, 0x0a,
0x52, 0x30, 0x7e, 0x2b, 0x07, 0x84, 0x55, 0x7b, 0xe8, 0xf1, 0x0c, 0x22, 0xa6, 0x15, 0x4b, 0x99, 0xc6, 0x6f, 0xe6, 0x80, 0xb0, 0x6a, 0x0f, 0x3d, 0x9e, 0x41, 0xc4, 0xb4, 0x62, 0x29, 0x73, 0xaf,
0x7b, 0xe5, 0x45, 0x94, 0x7f, 0xd1, 0x22, 0x32, 0xa0, 0xc4, 0xeb, 0x5e, 0xcc, 0xa8, 0x3b, 0x47, 0xbc, 0x88, 0xf2, 0x2f, 0x5a, 0x44, 0x06, 0x94, 0x78, 0xdd, 0x8b, 0x19, 0x75, 0xe7, 0xa8, 0xef,
0x7d, 0xbf, 0x58, 0x29, 0x34, 0x8b, 0xc6, 0xbf, 0x2f, 0xc0, 0x2a, 0x9b, 0xca, 0x2e, 0x9d, 0xb4, 0x17, 0x2b, 0x85, 0x66, 0xd1, 0xf8, 0xf7, 0x05, 0x58, 0x65, 0x53, 0xd9, 0xa5, 0x93, 0xf6, 0x68,
0x47, 0x23, 0x3a, 0x53, 0xcb, 0xeb, 0x0e, 0xd4, 0x5c, 0x6f, 0x4c, 0xe5, 0xa4, 0xe6, 0x15, 0x03, 0x44, 0x67, 0x6a, 0x79, 0xdd, 0x81, 0x9a, 0xeb, 0x8d, 0xa9, 0x9c, 0xd4, 0xbc, 0x62, 0xc0, 0x40,
0x06, 0xd2, 0x66, 0xf4, 0xb9, 0xed, 0xb8, 0xbc, 0xe2, 0xbc, 0x33, 0xab, 0x08, 0xc1, 0x6a, 0xbf, 0xda, 0x8c, 0x3e, 0xb7, 0x1d, 0x97, 0x57, 0x9c, 0x77, 0x66, 0x15, 0x21, 0x58, 0xed, 0xb7, 0x61,
0x0d, 0x4b, 0x33, 0xea, 0x8e, 0xf5, 0x55, 0x54, 0xe0, 0x0b, 0x43, 0x80, 0xc5, 0x02, 0xba, 0x03, 0x69, 0x46, 0xdd, 0xb1, 0xbe, 0x8a, 0x0a, 0x7c, 0x61, 0x08, 0xb0, 0x58, 0x40, 0x77, 0xa0, 0x76,
0xb5, 0xd3, 0x39, 0xa7, 0x63, 0xbc, 0xa7, 0x88, 0x73, 0x00, 0x04, 0xa8, 0xcd, 0x59, 0xd0, 0x6c, 0x3a, 0xe7, 0x74, 0x8c, 0xf7, 0x14, 0x71, 0x0e, 0x80, 0x00, 0xb5, 0x39, 0x0b, 0x9a, 0xcd, 0x83,
0x1e, 0x9c, 0x23, 0xb6, 0x84, 0xd8, 0x32, 0xfb, 0x66, 0xa8, 0xdb, 0x00, 0xe3, 0x79, 0x10, 0x8a, 0x73, 0xc4, 0x96, 0x10, 0x5b, 0x66, 0xdf, 0x0c, 0x75, 0x1b, 0x60, 0x3c, 0x0f, 0x42, 0xb1, 0xa8,
0x45, 0xb5, 0x80, 0xc8, 0x2a, 0x83, 0xf0, 0x45, 0xf5, 0x3e, 0xac, 0x4c, 0xed, 0x4b, 0x0b, 0xe7, 0x16, 0x10, 0x59, 0x65, 0x10, 0xbe, 0xa8, 0xde, 0x87, 0x95, 0xa9, 0x7d, 0x69, 0xe1, 0xdc, 0xb1,
0x8e, 0xe5, 0xb8, 0xd6, 0xe9, 0x04, 0xf9, 0x7e, 0x19, 0xe9, 0x9a, 0x53, 0xfb, 0xf2, 0x0b, 0x86, 0x1c, 0xd7, 0x3a, 0x9d, 0x20, 0xdf, 0x2f, 0x23, 0x5d, 0x73, 0x6a, 0x5f, 0x7e, 0xc1, 0x30, 0x5d,
0xe9, 0xba, 0x7b, 0x08, 0x67, 0x9c, 0x67, 0xc4, 0x7b, 0xc2, 0xf2, 0x69, 0x40, 0xfd, 0x0b, 0x8a, 0x77, 0x0f, 0xe1, 0x8c, 0xf3, 0x8c, 0x78, 0x4f, 0x58, 0x3e, 0x0d, 0xa8, 0x7f, 0x41, 0x91, 0x59,
0xcc, 0xa2, 0x68, 0x2e, 0x0a, 0xb0, 0xc9, 0xa1, 0xac, 0x46, 0x53, 0xd6, 0xee, 0x70, 0x32, 0xe2, 0x14, 0xcd, 0x45, 0x01, 0x36, 0x39, 0x94, 0xd5, 0x68, 0xca, 0xda, 0x1d, 0x4e, 0x46, 0x9c, 0x33,
0x9c, 0xc1, 0x2c, 0x4f, 0x1d, 0x77, 0x3f, 0x9c, 0x8c, 0xd8, 0x96, 0xc6, 0x58, 0xcd, 0x8c, 0xfa, 0x98, 0xe5, 0xa9, 0xe3, 0xee, 0x87, 0x93, 0x11, 0xdb, 0xd2, 0x18, 0xab, 0x99, 0x51, 0xdf, 0x7a,
0xd6, 0xb3, 0xe7, 0xb8, 0xcc, 0x8b, 0xc8, 0x5a, 0x8e, 0xa8, 0xff, 0xf4, 0x39, 0x93, 0x3a, 0x46, 0xf6, 0x1c, 0x97, 0x79, 0x11, 0x59, 0xcb, 0x11, 0xf5, 0x9f, 0x3e, 0x67, 0x52, 0xc7, 0x28, 0x40,
0x01, 0xf2, 0x2a, 0xfb, 0xaa, 0x55, 0x43, 0x1e, 0x50, 0x19, 0x05, 0x8c, 0x4b, 0xd9, 0x57, 0x6c, 0x5e, 0x65, 0x5f, 0xb5, 0x6a, 0xc8, 0x03, 0x2a, 0xa3, 0x80, 0x71, 0x29, 0xfb, 0x8a, 0xad, 0x53,
0x9d, 0xb2, 0xda, 0xda, 0x38, 0x0a, 0x74, 0x8c, 0xd9, 0x07, 0xc8, 0x74, 0x1b, 0x58, 0xd9, 0xb6, 0x56, 0x5b, 0x1b, 0x47, 0x81, 0x8e, 0x31, 0xfb, 0x00, 0x99, 0x6e, 0x03, 0x2b, 0xdb, 0x16, 0x08,
0x40, 0xb0, 0x72, 0x02, 0x36, 0xeb, 0x65, 0x65, 0x4f, 0x27, 0xf6, 0x59, 0x80, 0x5c, 0xa7, 0x61, 0x56, 0x4e, 0xc0, 0x66, 0xbd, 0xac, 0xec, 0xe9, 0xc4, 0x3e, 0x0b, 0x90, 0xeb, 0x34, 0xcc, 0xba,
0xd6, 0x05, 0x70, 0x8f, 0xc1, 0x8c, 0x3f, 0xc9, 0xc3, 0x5a, 0x62, 0x70, 0xc5, 0xa2, 0x61, 0x62, 0x00, 0xee, 0x31, 0x98, 0xf1, 0x27, 0x79, 0x58, 0x4b, 0x0c, 0xae, 0x58, 0x34, 0x4c, 0xcc, 0x40,
0x06, 0x42, 0x70, 0x60, 0x2b, 0xa6, 0xf8, 0xca, 0x1a, 0xb5, 0x7c, 0xd6, 0xa8, 0xad, 0x42, 0x89, 0x08, 0x0e, 0x6c, 0xc5, 0x14, 0x5f, 0x59, 0xa3, 0x96, 0xcf, 0x1a, 0xb5, 0x55, 0x28, 0xf1, 0xc5,
0x2f, 0xb6, 0x02, 0xdf, 0x9c, 0xa9, 0x5c, 0x65, 0xf3, 0xd9, 0xa9, 0xef, 0x31, 0xa9, 0xeb, 0x7c, 0x56, 0xe0, 0x9b, 0x33, 0x95, 0xab, 0x6c, 0x3e, 0x3b, 0xf5, 0x3d, 0x26, 0x75, 0x9d, 0xcf, 0xc3,
0x1e, 0x8e, 0xbd, 0xe7, 0xae, 0x90, 0x3e, 0x96, 0x04, 0x7c, 0x20, 0xc0, 0xf1, 0xae, 0x28, 0x25, 0xb1, 0xf7, 0xdc, 0x15, 0xd2, 0xc7, 0x92, 0x80, 0x0f, 0x04, 0x38, 0xde, 0x15, 0xa5, 0x44, 0x57,
0xba, 0xe2, 0x0e, 0xd4, 0xc4, 0x08, 0xa0, 0xf4, 0xc6, 0x07, 0x16, 0x04, 0x88, 0x89, 0x6f, 0xef, 0xdc, 0x81, 0x9a, 0x18, 0x01, 0x94, 0xde, 0xf8, 0xc0, 0x82, 0x00, 0x31, 0xf1, 0xed, 0x5d, 0x20,
0x02, 0x51, 0xe3, 0x69, 0xb1, 0x5e, 0xc3, 0x0d, 0x8a, 0x0f, 0xec, 0x92, 0x23, 0x06, 0xf4, 0xd0, 0x6a, 0x3c, 0x2d, 0xd6, 0x6b, 0xb8, 0x41, 0xf1, 0x81, 0x5d, 0x72, 0xc4, 0x80, 0x1e, 0xda, 0x97,
0xbe, 0xc4, 0x8d, 0xea, 0x2d, 0x58, 0x64, 0x24, 0xac, 0x3f, 0xad, 0x11, 0x8a, 0x56, 0x15, 0xde, 0xb8, 0x51, 0xbd, 0x05, 0x8b, 0x8c, 0x84, 0xf5, 0xa7, 0x35, 0x42, 0xd1, 0xaa, 0xc2, 0xfb, 0x6a,
0x57, 0x53, 0xfb, 0x92, 0x75, 0xe6, 0x0e, 0x0a, 0x58, 0xaf, 0x43, 0x4d, 0x0e, 0xaa, 0xe5, 0xb8, 0x6a, 0x5f, 0xb2, 0xce, 0xdc, 0x41, 0x01, 0xeb, 0x75, 0xa8, 0xc9, 0x41, 0xb5, 0x1c, 0x57, 0x8c,
0x62, 0x5c, 0xab, 0x62, 0x5c, 0xbb, 0x2e, 0xdb, 0x6e, 0x18, 0x9e, 0xf7, 0x93, 0x35, 0xa6, 0xb3, 0x6b, 0x55, 0x8c, 0x6b, 0xd7, 0x65, 0xdb, 0x0d, 0xc3, 0xf3, 0x7e, 0xb2, 0xc6, 0x74, 0x16, 0x9e,
0xf0, 0x5c, 0xb0, 0xf1, 0xc5, 0xa9, 0xe3, 0xf2, 0xee, 0xdd, 0x65, 0x50, 0xe3, 0xb7, 0x73, 0x50, 0x0b, 0x36, 0xbe, 0x38, 0x75, 0x5c, 0xde, 0xbd, 0xbb, 0x0c, 0x6a, 0xfc, 0x56, 0x0e, 0xea, 0xa2,
0x17, 0xbd, 0x8e, 0xc2, 0x22, 0xd9, 0x02, 0x22, 0xa7, 0x78, 0x78, 0xe9, 0x8c, 0xad, 0x93, 0xab, 0xd7, 0x51, 0x58, 0x24, 0x5b, 0x40, 0xe4, 0x14, 0x0f, 0x2f, 0x9d, 0xb1, 0x75, 0x72, 0x15, 0xd2,
0x90, 0x06, 0x7c, 0x45, 0xed, 0xdf, 0x30, 0x9b, 0x02, 0x37, 0xbc, 0x74, 0xc6, 0xdb, 0x0c, 0x43, 0x80, 0xaf, 0xa8, 0xfd, 0x1b, 0x66, 0x53, 0xe0, 0x86, 0x97, 0xce, 0x78, 0x9b, 0x61, 0xc8, 0x7d,
0xee, 0x43, 0x33, 0x46, 0x1f, 0x84, 0x3e, 0x5f, 0xee, 0xfb, 0x37, 0xcc, 0x45, 0x8d, 0x7a, 0x10, 0x68, 0xc6, 0xe8, 0x83, 0xd0, 0xe7, 0xcb, 0x7d, 0xff, 0x86, 0xb9, 0xa8, 0x51, 0x0f, 0x42, 0x9f,
0xfa, 0x8c, 0x81, 0x30, 0x51, 0x74, 0x1e, 0x5a, 0x8e, 0x3b, 0xa6, 0x97, 0x38, 0x1e, 0x0d, 0xb3, 0x31, 0x10, 0x26, 0x8a, 0xce, 0x43, 0xcb, 0x71, 0xc7, 0xf4, 0x12, 0xc7, 0xa3, 0x61, 0xd6, 0x38,
0xc6, 0x61, 0x5d, 0x06, 0xda, 0x5e, 0x84, 0xba, 0x9e, 0x9d, 0x71, 0x06, 0x15, 0x29, 0xc7, 0xa2, 0xac, 0xcb, 0x40, 0xdb, 0x8b, 0x50, 0xd7, 0xb3, 0x33, 0xce, 0xa0, 0x22, 0xe5, 0x58, 0x14, 0xe4,
0x20, 0x97, 0xa8, 0x92, 0x59, 0x0d, 0x55, 0x4d, 0x6e, 0x42, 0x25, 0x5e, 0x03, 0xb3, 0x1c, 0xbe, 0x12, 0x55, 0x32, 0xab, 0xa1, 0xaa, 0xc9, 0x4d, 0xa8, 0xc4, 0x6b, 0x60, 0x96, 0xc3, 0x57, 0x2e,
0x72, 0xc1, 0xc6, 0x77, 0xa1, 0x79, 0xc0, 0x06, 0xc2, 0x65, 0x2b, 0x59, 0xc8, 0xe5, 0xeb, 0xb0, 0xd8, 0xf8, 0x2e, 0x34, 0x0f, 0xd8, 0x40, 0xb8, 0x6c, 0x25, 0x0b, 0xb9, 0x7c, 0x1d, 0x16, 0x34,
0xa0, 0x71, 0x94, 0xaa, 0x29, 0xbe, 0x98, 0xcc, 0x72, 0xee, 0x05, 0xa1, 0x28, 0x05, 0x7f, 0x1b, 0x8e, 0x52, 0x35, 0xc5, 0x17, 0x93, 0x59, 0xce, 0xbd, 0x20, 0x14, 0xa5, 0xe0, 0x6f, 0xe3, 0x9f,
0xff, 0x24, 0x07, 0xa4, 0x13, 0x84, 0xce, 0xd4, 0x0e, 0xe9, 0x1e, 0x55, 0x3c, 0xb3, 0x0f, 0x75, 0xe6, 0x80, 0x74, 0x82, 0xd0, 0x99, 0xda, 0x21, 0xdd, 0xa3, 0x8a, 0x67, 0xf6, 0xa1, 0xce, 0x72,
0x96, 0xdb, 0xd0, 0x6b, 0x73, 0x41, 0x99, 0x0b, 0x64, 0xef, 0x0a, 0x1e, 0x97, 0x4e, 0xb0, 0xa5, 0x1b, 0x7a, 0x6d, 0x2e, 0x28, 0x73, 0x81, 0xec, 0x5d, 0xc1, 0xe3, 0xd2, 0x09, 0xb6, 0x74, 0x6a,
0x53, 0xf3, 0x6d, 0x32, 0x96, 0x01, 0x9b, 0x6e, 0xa1, 0xed, 0x9f, 0xd1, 0x10, 0xc5, 0x6b, 0x21, 0xbe, 0x4d, 0xc6, 0x32, 0x60, 0xd3, 0x2d, 0xb4, 0xfd, 0x33, 0x1a, 0xa2, 0x78, 0x2d, 0xe4, 0x42,
0x17, 0x02, 0x07, 0x31, 0xc1, 0x7a, 0xf3, 0xe7, 0x61, 0x39, 0x95, 0x87, 0xbe, 0x69, 0x55, 0x33, 0xe0, 0x20, 0x26, 0x58, 0x6f, 0xfe, 0x2c, 0x2c, 0xa7, 0xf2, 0xd0, 0x37, 0xad, 0x6a, 0xc6, 0xa6,
0x36, 0xad, 0x82, 0xbe, 0x69, 0x59, 0xb0, 0x12, 0xab, 0x97, 0x58, 0x85, 0x1b, 0x50, 0x66, 0xdc, 0x55, 0xd0, 0x37, 0xad, 0x5f, 0xcb, 0xc1, 0x4a, 0xac, 0x62, 0x62, 0x19, 0x6e, 0x40, 0x99, 0xb1,
0x82, 0xcd, 0xdd, 0x1c, 0x97, 0xf6, 0x4f, 0x29, 0xce, 0xef, 0x0f, 0x60, 0xf5, 0x94, 0x52, 0xdf, 0x0b, 0x36, 0x79, 0x73, 0x5c, 0xdc, 0x3f, 0xa5, 0x38, 0xc1, 0x3f, 0x82, 0xd5, 0x53, 0x4a, 0x7d,
0x0e, 0x11, 0x89, 0xec, 0x84, 0x8d, 0x90, 0xc8, 0x78, 0x59, 0xe0, 0x06, 0x76, 0x78, 0x44, 0x7d, 0x3b, 0x44, 0x24, 0xf2, 0x13, 0x36, 0x44, 0x3c, 0x67, 0xce, 0xf5, 0x05, 0x7e, 0x60, 0x87, 0x47,
0x36, 0x52, 0xc6, 0x3f, 0xca, 0xc3, 0x12, 0xdb, 0x5e, 0x0e, 0x6d, 0xf7, 0x4a, 0xf6, 0xd3, 0x41, 0xd4, 0x67, 0xc3, 0x45, 0x0c, 0x68, 0x48, 0xe2, 0x0b, 0xa4, 0x2e, 0xe0, 0x24, 0xae, 0x05, 0x48,
0x66, 0x3f, 0xdd, 0xd3, 0x84, 0x09, 0x8d, 0xfa, 0xeb, 0x76, 0x52, 0x21, 0xd9, 0x49, 0xe4, 0x2e, 0xf2, 0x05, 0x03, 0x19, 0x7f, 0x94, 0x87, 0x25, 0xb6, 0x0f, 0x1d, 0xda, 0xee, 0x95, 0xec, 0xd0,
0xd4, 0x63, 0x75, 0x2d, 0x61, 0x5d, 0x21, 0x50, 0x95, 0x8c, 0x24, 0xfa, 0x05, 0x4d, 0xa2, 0x67, 0x83, 0xcc, 0x0e, 0xbd, 0xa7, 0x49, 0x1d, 0x1a, 0xf5, 0xd7, 0xed, 0xcd, 0x42, 0xb2, 0x37, 0xd3,
0x9c, 0x80, 0x2d, 0x2c, 0x96, 0x6b, 0x20, 0x04, 0x38, 0xc6, 0x5e, 0x59, 0x9e, 0x01, 0x3b, 0xf6, 0xd5, 0x2c, 0xa6, 0xaa, 0x49, 0xde, 0x82, 0x7a, 0xac, 0xdd, 0x25, 0xd5, 0x6e, 0x08, 0xa2, 0x06,
0x04, 0x8c, 0xf3, 0x58, 0x73, 0x57, 0x1c, 0x7d, 0xe8, 0x18, 0x97, 0x6f, 0xc5, 0x6c, 0x22, 0xe2, 0xab, 0x23, 0xc2, 0x82, 0x76, 0x44, 0x60, 0xac, 0x85, 0xad, 0x54, 0x56, 0x7a, 0x20, 0x24, 0x42,
0x38, 0x82, 0xff, 0xf4, 0xc3, 0xf4, 0x36, 0x34, 0xa3, 0x6e, 0x11, 0x63, 0x44, 0xa0, 0xc8, 0xa6, 0xc6, 0xaf, 0x59, 0xd9, 0x01, 0x3b, 0x47, 0x05, 0x8c, 0x95, 0x59, 0x73, 0x57, 0x9c, 0xa5, 0xe8,
0xbc, 0xc8, 0x00, 0x7f, 0x1b, 0x7f, 0x9a, 0xe3, 0x84, 0x3b, 0x9e, 0x13, 0x9d, 0x3f, 0x08, 0x14, 0x18, 0xf9, 0x41, 0xc5, 0x6c, 0x22, 0xe2, 0x38, 0x82, 0xff, 0xe9, 0xc7, 0xfd, 0x6d, 0x68, 0x46,
0x51, 0xf2, 0x11, 0x84, 0xec, 0xf7, 0xb5, 0xa7, 0xb9, 0x6f, 0xa0, 0x33, 0x6f, 0x42, 0x25, 0x60, 0xdd, 0x27, 0xc6, 0x9c, 0x40, 0x91, 0xad, 0x21, 0x91, 0x01, 0xfe, 0x36, 0xfe, 0x5e, 0x9e, 0x13,
0x1d, 0x63, 0x4f, 0x78, 0x7f, 0x56, 0xcc, 0x32, 0xfb, 0x6e, 0x4f, 0x26, 0x51, 0x3f, 0x97, 0xaf, 0xee, 0x78, 0x4e, 0x74, 0xa0, 0x21, 0x50, 0x44, 0x51, 0x4a, 0x10, 0xb2, 0xdf, 0xd7, 0x1e, 0x0f,
0xed, 0xe7, 0xca, 0xab, 0xf4, 0x73, 0x35, 0xbb, 0x9f, 0x8d, 0x77, 0x60, 0x59, 0x6b, 0xfd, 0x0b, 0x7f, 0x8a, 0x9d, 0x7e, 0x13, 0x2a, 0x01, 0xeb, 0x40, 0x7b, 0xc2, 0xfb, 0xbd, 0x62, 0x96, 0xd9,
0xfa, 0xa9, 0x07, 0xe4, 0xc0, 0x09, 0xc2, 0x63, 0x97, 0x65, 0xa1, 0x24, 0x8b, 0x58, 0x45, 0x72, 0x77, 0x7b, 0x32, 0x89, 0xc6, 0xa3, 0x7c, 0xed, 0x78, 0x54, 0x5e, 0x65, 0x3c, 0xaa, 0xd9, 0xe3,
0x89, 0x8a, 0x30, 0xa4, 0x7d, 0x29, 0x90, 0x79, 0x81, 0xb4, 0x2f, 0x11, 0x69, 0x7c, 0x06, 0x2b, 0x61, 0xbc, 0x03, 0xcb, 0x5a, 0x2f, 0xbd, 0xa0, 0x3f, 0x7b, 0x40, 0x0e, 0x9c, 0x20, 0x3c, 0x76,
0xb1, 0xfc, 0x44, 0xd1, 0x6f, 0x40, 0x69, 0x1e, 0x5e, 0x7a, 0xf2, 0x68, 0x56, 0x13, 0x33, 0xfc, 0x59, 0x16, 0x4a, 0xa4, 0x89, 0x55, 0x24, 0x97, 0xa8, 0x08, 0x43, 0xda, 0x97, 0x02, 0x99, 0x17,
0x38, 0xbc, 0xf4, 0x4c, 0x8e, 0x31, 0x1e, 0xc3, 0x72, 0x8f, 0x3e, 0x17, 0x4c, 0x48, 0x56, 0xe4, 0x48, 0xfb, 0x12, 0x91, 0xc6, 0x67, 0xb0, 0x12, 0xcb, 0x4f, 0x14, 0xfd, 0x06, 0x94, 0xe6, 0xe1,
0x6d, 0x28, 0xbe, 0x44, 0xd9, 0x80, 0x78, 0x63, 0x0b, 0x88, 0x9e, 0x58, 0x94, 0xaa, 0xe9, 0x1e, 0xa5, 0x27, 0xcf, 0x84, 0x35, 0xb1, 0x62, 0x8e, 0xc3, 0x4b, 0xcf, 0xe4, 0x18, 0xe3, 0x31, 0x2c,
0x72, 0x31, 0xdd, 0x83, 0xf1, 0x36, 0x90, 0x81, 0x73, 0xe6, 0x1e, 0xd2, 0x20, 0xb0, 0xcf, 0x14, 0xf7, 0xe8, 0x73, 0xc1, 0xfd, 0x64, 0x45, 0xde, 0x86, 0xe2, 0x4b, 0xb4, 0x1c, 0x88, 0x37, 0xb6,
0xdb, 0x6a, 0x42, 0x61, 0x1a, 0x9c, 0x09, 0x1e, 0xcb, 0x7e, 0x1a, 0x1f, 0xc1, 0x4a, 0x8c, 0x4e, 0x80, 0xe8, 0x89, 0x45, 0xa9, 0x9a, 0xd2, 0x23, 0x17, 0x53, 0x7a, 0x18, 0x6f, 0x03, 0x19, 0x38,
0x64, 0xfc, 0x1a, 0x54, 0x03, 0xe7, 0xcc, 0x45, 0xc1, 0x5a, 0x64, 0x1d, 0x01, 0x8c, 0x3d, 0x58, 0x67, 0xee, 0x21, 0x0d, 0x02, 0xfb, 0x4c, 0xf1, 0xcb, 0x26, 0x14, 0xa6, 0xc1, 0x99, 0x60, 0xee,
0xfd, 0x82, 0xfa, 0xce, 0xe9, 0xd5, 0xcb, 0xb2, 0x8f, 0xe7, 0x93, 0x4f, 0xe6, 0xd3, 0x81, 0xb5, 0xec, 0xa7, 0xf1, 0x11, 0xac, 0xc4, 0xe8, 0x44, 0xc6, 0xaf, 0x41, 0x35, 0x70, 0xce, 0x5c, 0x94,
0x44, 0x3e, 0xa2, 0x78, 0xbe, 0x3c, 0xc4, 0x48, 0x56, 0x4c, 0xfe, 0xa1, 0xf1, 0xed, 0xbc, 0xce, 0xe8, 0x45, 0xd6, 0x11, 0xc0, 0xd8, 0x83, 0xd5, 0x2f, 0xa8, 0xef, 0x9c, 0x5e, 0xbd, 0x2c, 0xfb,
0xb7, 0x0d, 0x0f, 0xc8, 0x8e, 0xe7, 0xba, 0x74, 0x14, 0x1e, 0x51, 0xea, 0xcb, 0xca, 0xbc, 0xab, 0x78, 0x3e, 0xf9, 0x64, 0x3e, 0x1d, 0x58, 0x4b, 0xe4, 0x23, 0x8a, 0xe7, 0xcb, 0x48, 0x8c, 0x64,
0xad, 0x85, 0xda, 0xc3, 0x0d, 0xd1, 0xb3, 0xc9, 0xcd, 0x40, 0x2c, 0x12, 0x02, 0xc5, 0x19, 0xf5, 0xc5, 0xe4, 0x1f, 0xda, 0x86, 0x91, 0xd7, 0x37, 0x0c, 0xc3, 0x03, 0xb2, 0xe3, 0xb9, 0x2e, 0x1d,
0xa7, 0x98, 0x71, 0xc5, 0xc4, 0xdf, 0xac, 0x73, 0x43, 0x67, 0x4a, 0xbd, 0x39, 0x3f, 0x8d, 0x16, 0x85, 0x47, 0x94, 0xfa, 0xb2, 0x32, 0xef, 0x6a, 0x6b, 0xa6, 0xf6, 0x70, 0x43, 0xf4, 0x6c, 0x72,
0x4d, 0xf9, 0x69, 0xac, 0xc1, 0x4a, 0xac, 0x40, 0x5e, 0x6b, 0xe3, 0x01, 0xac, 0xed, 0x3a, 0xc1, 0x17, 0x12, 0x8b, 0x89, 0x40, 0x71, 0x46, 0xfd, 0x29, 0x66, 0x5c, 0x31, 0xf1, 0x37, 0xeb, 0xdc,
0x28, 0x5d, 0x95, 0x0d, 0x28, 0xcf, 0xe6, 0x27, 0x56, 0x7c, 0xc7, 0x79, 0x4a, 0xaf, 0x8c, 0x16, 0xd0, 0x99, 0x52, 0x6f, 0x1e, 0x0a, 0xee, 0x29, 0x3f, 0x8d, 0x35, 0x58, 0x89, 0x15, 0xc8, 0x6b,
0xac, 0x27, 0x53, 0x88, 0xbc, 0x7e, 0x3d, 0x0f, 0xc5, 0xfd, 0xe1, 0xc1, 0x0e, 0xd9, 0x84, 0x8a, 0x6d, 0x3c, 0x80, 0xb5, 0x5d, 0x27, 0x18, 0xa5, 0xab, 0xb2, 0x01, 0xe5, 0xd9, 0xfc, 0xc4, 0x8a,
0xe3, 0x8e, 0xbc, 0x29, 0x93, 0xb7, 0x79, 0x6f, 0xa8, 0xef, 0x6b, 0x97, 0xf6, 0x2d, 0xa8, 0xa2, 0x6f, 0x75, 0x4f, 0xe9, 0x95, 0xd1, 0x82, 0xf5, 0x64, 0x0a, 0x91, 0xd7, 0xaf, 0xe6, 0xa1, 0xb8,
0x98, 0x3e, 0xf1, 0x46, 0xcf, 0x84, 0xc4, 0x5b, 0x61, 0x80, 0x03, 0x6f, 0xf4, 0x8c, 0x2d, 0x33, 0x3f, 0x3c, 0xd8, 0x21, 0x9b, 0x50, 0x71, 0xdc, 0x91, 0x37, 0x65, 0x82, 0x3e, 0xef, 0x0d, 0xf5,
0x7a, 0x39, 0x73, 0x7c, 0xd4, 0xd3, 0x48, 0x3d, 0x44, 0x91, 0x8b, 0x78, 0x11, 0x22, 0xd2, 0x56, 0x7d, 0x2d, 0x0b, 0xb8, 0x05, 0x55, 0x3c, 0x1f, 0x4c, 0xbc, 0xd1, 0x33, 0x21, 0x6a, 0x57, 0x18,
0x08, 0x69, 0x84, 0xed, 0xaf, 0x5c, 0xf4, 0xad, 0x9e, 0xa3, 0x34, 0x32, 0xa6, 0x97, 0xe4, 0x7d, 0xe0, 0xc0, 0x1b, 0x3d, 0x63, 0xcb, 0x8c, 0x5e, 0xce, 0x1c, 0x1f, 0x15, 0x44, 0x52, 0x01, 0x52,
0x20, 0xa7, 0x9e, 0xff, 0xdc, 0xf6, 0x95, 0xb4, 0xe6, 0x0a, 0xd6, 0x5a, 0x34, 0x97, 0x23, 0x8c, 0xe4, 0xb2, 0x65, 0x84, 0x88, 0xd4, 0x24, 0x42, 0x0c, 0x62, 0x1b, 0x3b, 0x97, 0xb9, 0xab, 0xe7,
0x90, 0x44, 0xc8, 0x43, 0x58, 0xd3, 0xc8, 0xb5, 0x8c, 0xb9, 0xd4, 0xb4, 0x12, 0x21, 0xf7, 0x65, 0x28, 0x06, 0x8d, 0xe9, 0x25, 0x79, 0x1f, 0xc8, 0xa9, 0xe7, 0x3f, 0xb7, 0x7d, 0x25, 0x26, 0xba,
0x11, 0xc6, 0xaf, 0xe5, 0x81, 0x88, 0xf4, 0x3b, 0x9e, 0x1b, 0x84, 0xbe, 0xed, 0xb8, 0x61, 0x10, 0x82, 0x05, 0x17, 0xcd, 0xe5, 0x08, 0x23, 0x44, 0x20, 0xf2, 0x10, 0xd6, 0x34, 0x72, 0x2d, 0x63,
0x97, 0xdd, 0x72, 0x09, 0xd9, 0xed, 0x1e, 0x34, 0x51, 0x72, 0xd4, 0x05, 0xb8, 0x7c, 0x24, 0x46, 0x2e, 0xae, 0xad, 0x44, 0xc8, 0x7d, 0x59, 0x84, 0xf1, 0x2b, 0x79, 0x20, 0x22, 0xfd, 0x8e, 0xe7,
0x9b, 0x91, 0x10, 0xf7, 0x16, 0x2c, 0x46, 0xd2, 0xbb, 0x52, 0xd3, 0x15, 0xcd, 0xba, 0x92, 0xe0, 0x06, 0xa1, 0x6f, 0x3b, 0x6e, 0x18, 0xc4, 0x85, 0xc6, 0x5c, 0x42, 0x68, 0xbc, 0x07, 0x4d, 0x14,
0xc5, 0x56, 0xc8, 0x18, 0x82, 0x94, 0x4a, 0x95, 0x36, 0x82, 0x1f, 0x14, 0x96, 0xa7, 0xf6, 0xe5, 0x59, 0x75, 0xc9, 0x31, 0x1f, 0xc9, 0xef, 0x66, 0x24, 0x3d, 0xbe, 0x05, 0x8b, 0xd1, 0xb1, 0x41,
0x11, 0x95, 0x67, 0x05, 0x14, 0xf7, 0x0c, 0x68, 0x28, 0x41, 0x0e, 0x29, 0x79, 0xcf, 0xd5, 0x84, 0xe9, 0x07, 0x8b, 0x66, 0x5d, 0x1d, 0x1d, 0x18, 0xd5, 0x07, 0xb0, 0xca, 0x18, 0x82, 0x14, 0x87,
0x28, 0x87, 0x34, 0xd9, 0xb2, 0xf6, 0x42, 0xb6, 0xac, 0x6d, 0xfc, 0x9b, 0x2a, 0x94, 0x65, 0x37, 0x95, 0x1a, 0x84, 0x33, 0xce, 0xe5, 0xa9, 0x7d, 0x79, 0x44, 0xe5, 0x21, 0x05, 0xe5, 0x4c, 0x03,
0xa2, 0xe0, 0x1c, 0x3a, 0x17, 0x34, 0x12, 0x9c, 0xd9, 0x17, 0x93, 0xc7, 0x7d, 0x3a, 0xf5, 0x42, 0x1a, 0x4a, 0x82, 0x44, 0x4a, 0xde, 0x73, 0x35, 0x21, 0x43, 0x22, 0x4d, 0xb6, 0x90, 0xbf, 0x90,
0x75, 0x60, 0xe2, 0xcb, 0xa4, 0xce, 0x81, 0xe2, 0xc8, 0xa4, 0x09, 0xed, 0x5c, 0xbb, 0xc8, 0xa5, 0x2d, 0xe4, 0x1b, 0xff, 0xa6, 0x0a, 0x65, 0xd9, 0x8d, 0x28, 0xb1, 0x87, 0xce, 0x05, 0x8d, 0x24,
0x67, 0x29, 0xb4, 0x73, 0x91, 0xec, 0x16, 0x94, 0xa5, 0xe8, 0x5d, 0x54, 0x6a, 0x87, 0x85, 0x11, 0x76, 0xf6, 0xc5, 0x0e, 0x02, 0x3e, 0x9d, 0x7a, 0xa1, 0x3a, 0xa9, 0xf1, 0x65, 0x52, 0xe7, 0x40,
0x97, 0xbb, 0x37, 0xa1, 0x32, 0xb2, 0x67, 0xf6, 0xc8, 0x09, 0xaf, 0xc4, 0x9e, 0xa0, 0xbe, 0x59, 0x71, 0x56, 0xd3, 0x4e, 0x0b, 0x5c, 0xad, 0xc9, 0xc5, 0x76, 0x79, 0x5a, 0xe0, 0xb2, 0xe0, 0x2d,
0xee, 0x13, 0x6f, 0x64, 0x4f, 0xac, 0x13, 0x7b, 0x62, 0xbb, 0x23, 0x2a, 0xd4, 0x76, 0x75, 0x04, 0x28, 0x4b, 0x99, 0xbf, 0xa8, 0xf4, 0x1d, 0x0b, 0x23, 0x2e, 0xf0, 0x6f, 0x42, 0x65, 0x64, 0xcf,
0x6e, 0x73, 0x18, 0xf9, 0x16, 0x2c, 0x8a, 0x7a, 0x4a, 0x2a, 0xae, 0xbd, 0x13, 0xb5, 0x97, 0x64, 0xec, 0x91, 0x13, 0x72, 0x71, 0xbd, 0x60, 0xaa, 0x6f, 0x96, 0xfb, 0xc4, 0x1b, 0xd9, 0x13, 0xeb,
0xec, 0x70, 0xe7, 0x4d, 0xd9, 0xb8, 0x9c, 0x52, 0x7e, 0x0c, 0x2a, 0x98, 0x55, 0x0e, 0xd9, 0xa3, 0xc4, 0x9e, 0xd8, 0xee, 0x88, 0x0a, 0x7d, 0x61, 0x1d, 0x81, 0xdb, 0x1c, 0x46, 0xbe, 0x05, 0x8b,
0xd8, 0x5a, 0x81, 0x7e, 0xce, 0xe7, 0x70, 0x95, 0x17, 0xc5, 0x81, 0x5f, 0xf2, 0xf9, 0x9b, 0x3e, 0xa2, 0x9e, 0x92, 0x8a, 0xab, 0x0d, 0x45, 0xed, 0x25, 0x19, 0x3b, 0x55, 0x7a, 0x53, 0x36, 0x2e,
0x0b, 0x15, 0xb4, 0xb3, 0xd0, 0xbb, 0xb0, 0x3c, 0x77, 0x03, 0x1a, 0x86, 0x13, 0x3a, 0x56, 0x75, 0xa7, 0x94, 0x9f, 0xbf, 0x0a, 0x66, 0x95, 0x43, 0xf6, 0x28, 0xb6, 0x56, 0xa0, 0x9f, 0xf3, 0x39,
0xa9, 0x21, 0x51, 0x53, 0x21, 0x64, 0x75, 0xb6, 0x60, 0x85, 0xeb, 0x1b, 0x03, 0x3b, 0xf4, 0x82, 0x5c, 0xe5, 0x45, 0x71, 0xe0, 0x97, 0x7c, 0xfe, 0xa6, 0x0f, 0x61, 0x05, 0xed, 0x10, 0xf6, 0x2e,
0x73, 0x27, 0xb0, 0x02, 0xea, 0x4a, 0x8d, 0xd4, 0x32, 0xa2, 0x06, 0x02, 0x33, 0xe0, 0x5a, 0x8c, 0x2c, 0xcf, 0xdd, 0x80, 0x86, 0xe1, 0x84, 0x8e, 0x55, 0x5d, 0x6a, 0x48, 0xd4, 0x54, 0x08, 0x59,
0x8d, 0x04, 0xbd, 0x4f, 0x47, 0xd4, 0xb9, 0xa0, 0x63, 0x3c, 0x27, 0x15, 0xcc, 0xb5, 0x58, 0x1a, 0x9d, 0x2d, 0x58, 0xe1, 0x8a, 0xce, 0xc0, 0x0e, 0xbd, 0xe0, 0xdc, 0x09, 0xac, 0x80, 0xba, 0x52,
0x53, 0x20, 0xf1, 0xd0, 0x3b, 0x9f, 0x5a, 0xf3, 0xd9, 0xd8, 0x66, 0xf2, 0xf0, 0x22, 0x3f, 0x78, 0x15, 0xb6, 0x8c, 0xa8, 0x81, 0xc0, 0x0c, 0xb8, 0xfa, 0x64, 0x23, 0x41, 0xef, 0xd3, 0x11, 0x75,
0xb8, 0xf3, 0xe9, 0x31, 0x87, 0x90, 0x07, 0x20, 0x0f, 0x42, 0x62, 0xce, 0x2c, 0xc5, 0xb6, 0x1c, 0x2e, 0xe8, 0x18, 0x0f, 0x68, 0x05, 0x73, 0x2d, 0x96, 0xc6, 0x14, 0x48, 0x3c, 0x6d, 0xcf, 0xa7,
0xc6, 0x35, 0xcc, 0xba, 0xa0, 0xe0, 0x07, 0xb5, 0x3b, 0xfa, 0x62, 0x69, 0xb2, 0x19, 0x86, 0x87, 0xd6, 0x7c, 0x36, 0xb6, 0x99, 0x20, 0xbe, 0xc8, 0x4f, 0x3c, 0xee, 0x7c, 0x7a, 0xcc, 0x21, 0xe4,
0xf6, 0x68, 0xc1, 0xb4, 0xa0, 0x3c, 0xf3, 0x9d, 0x0b, 0x3b, 0xa4, 0xad, 0x65, 0xbe, 0x8f, 0x8b, 0x01, 0xc8, 0x13, 0x98, 0x98, 0x33, 0x4b, 0xb1, 0x2d, 0x87, 0x71, 0x0d, 0xb3, 0x2e, 0x28, 0xf8,
0x4f, 0xc6, 0xc0, 0x1d, 0xd7, 0x09, 0x1d, 0x3b, 0xf4, 0xfc, 0x16, 0x41, 0x5c, 0x04, 0x20, 0xf7, 0x09, 0xf1, 0x8e, 0xbe, 0x58, 0x9a, 0x6c, 0x86, 0xe1, 0x56, 0x1e, 0x2d, 0x98, 0x16, 0x94, 0x67,
0x61, 0x19, 0xe7, 0x49, 0x10, 0xda, 0xe1, 0x3c, 0x10, 0xa7, 0xc0, 0x15, 0x7e, 0xda, 0x62, 0x88, 0xbe, 0x73, 0x61, 0x87, 0xb4, 0xb5, 0xcc, 0xf7, 0x71, 0xf1, 0xc9, 0x18, 0xb8, 0xe3, 0x3a, 0xa1,
0x01, 0xc2, 0xf1, 0x20, 0x48, 0x3e, 0x85, 0x75, 0x3e, 0x35, 0x52, 0x4b, 0x73, 0x95, 0x75, 0x07, 0x63, 0x87, 0x9e, 0xdf, 0x22, 0x88, 0x8b, 0x00, 0xe4, 0x3e, 0x2c, 0xe3, 0x3c, 0x09, 0x42, 0x3b,
0xd6, 0x68, 0x05, 0x29, 0x76, 0xe2, 0x6b, 0xf4, 0x73, 0xd8, 0x10, 0xd3, 0x25, 0x95, 0x72, 0x4d, 0x9c, 0x07, 0xe2, 0xf8, 0xb9, 0xc2, 0x8f, 0x79, 0x0c, 0x31, 0x40, 0x38, 0x9e, 0x40, 0xc9, 0xa7,
0xa5, 0x5c, 0xe5, 0x24, 0x89, 0xa4, 0x5b, 0xb0, 0xcc, 0xaa, 0xe6, 0x8c, 0x2c, 0x91, 0x03, 0x5b, 0xb0, 0xce, 0xa7, 0x46, 0x6a, 0x69, 0xae, 0x2a, 0xe1, 0x62, 0x05, 0x29, 0x76, 0xe2, 0x6b, 0xf4,
0x15, 0xeb, 0xac, 0x15, 0x98, 0x68, 0x89, 0x23, 0x4d, 0xc4, 0x3d, 0xa5, 0x57, 0xe4, 0xbb, 0xb0, 0x73, 0xd8, 0x10, 0xd3, 0x25, 0x95, 0x72, 0x4d, 0xa5, 0x5c, 0xe5, 0x24, 0x89, 0xa4, 0x5b, 0xb0,
0xc4, 0xa7, 0x0f, 0xaa, 0x3a, 0x70, 0x63, 0xde, 0xc4, 0x8d, 0x79, 0x4d, 0x74, 0xee, 0x8e, 0xc2, 0xcc, 0xaa, 0xe6, 0x8c, 0x2c, 0x91, 0x03, 0x5b, 0x15, 0xeb, 0xac, 0x15, 0x98, 0x68, 0x89, 0x23,
0xe2, 0xde, 0xbc, 0x38, 0x8a, 0x7d, 0xb3, 0xa5, 0x31, 0x71, 0x4e, 0x29, 0xdb, 0x27, 0x5a, 0x1b, 0x4d, 0xc4, 0x3d, 0xa5, 0x57, 0xe4, 0xbb, 0xb0, 0xc4, 0xa7, 0x0f, 0xea, 0x58, 0x70, 0x63, 0xde,
0x7c, 0xb2, 0xc9, 0x6f, 0xb6, 0x6a, 0xe7, 0x33, 0xc4, 0xb4, 0x38, 0xb3, 0xe6, 0x5f, 0x38, 0x8f, 0xc4, 0x8d, 0x79, 0x4d, 0x74, 0xee, 0x8e, 0xc2, 0xe2, 0xde, 0xbc, 0x38, 0x8a, 0x7d, 0xb3, 0xa5,
0x27, 0x5e, 0x40, 0xa5, 0xa6, 0xba, 0x75, 0x53, 0x2c, 0x48, 0x06, 0x94, 0x47, 0x16, 0x76, 0x26, 0x31, 0x71, 0x4e, 0x29, 0xdb, 0x27, 0x5a, 0x1b, 0x7c, 0xb2, 0xc9, 0x6f, 0xb6, 0x6a, 0xe7, 0x33,
0xe6, 0x0a, 0x08, 0x65, 0x4f, 0xb8, 0x85, 0x13, 0xa3, 0xc1, 0xf5, 0x10, 0xd2, 0xa6, 0xc0, 0x84, 0xc4, 0xb4, 0x38, 0xb3, 0xe6, 0x5f, 0x38, 0x8f, 0x27, 0x5e, 0x40, 0xa5, 0x8a, 0xbc, 0x75, 0x53,
0xba, 0x73, 0xfb, 0xb9, 0x64, 0xeb, 0xaf, 0x21, 0x37, 0x01, 0x06, 0x12, 0x0c, 0x7d, 0x0f, 0x96, 0x2c, 0x48, 0x06, 0x94, 0x67, 0x25, 0x76, 0x18, 0xe7, 0x9a, 0x0f, 0x65, 0xc8, 0xb8, 0x85, 0x13,
0xc5, 0x28, 0x44, 0xcc, 0xb4, 0x75, 0x1b, 0xb7, 0xc8, 0x9b, 0xb2, 0x8d, 0x29, 0x6e, 0x6b, 0x36, 0xa3, 0xc1, 0x15, 0x20, 0xd2, 0x98, 0xc1, 0x84, 0xbf, 0x73, 0xfb, 0xb9, 0x64, 0xeb, 0xaf, 0x21,
0xf9, 0xb8, 0x68, 0xfc, 0x77, 0x1f, 0x88, 0x1c, 0x14, 0x2d, 0xa3, 0xd7, 0x5f, 0x96, 0xd1, 0xb2, 0x37, 0x01, 0x06, 0x12, 0x0c, 0x7d, 0x0f, 0x96, 0xc5, 0x28, 0x44, 0xcc, 0xb4, 0x75, 0x1b, 0xb7,
0x18, 0xa6, 0x08, 0x64, 0xfc, 0x5e, 0x8e, 0x4b, 0x54, 0x82, 0x3a, 0xd0, 0x94, 0x3f, 0x9c, 0xaf, 0xc8, 0x9b, 0xb2, 0x8d, 0x29, 0x6e, 0x6b, 0x36, 0xf9, 0xb8, 0x68, 0xfc, 0x77, 0x1f, 0x88, 0x1c,
0x59, 0x9e, 0x3b, 0xb9, 0x12, 0xac, 0x0e, 0x38, 0xa8, 0xef, 0x4e, 0x90, 0xd7, 0x38, 0xae, 0x4e, 0x14, 0x2d, 0xa3, 0xd7, 0x5f, 0x96, 0xd1, 0xb2, 0x18, 0xa6, 0x08, 0x64, 0xfc, 0x6e, 0x8e, 0x4b,
0xc2, 0x37, 0xef, 0xba, 0x04, 0x22, 0xd1, 0x1d, 0xa8, 0xcd, 0xe6, 0x27, 0x13, 0x67, 0xc4, 0x49, 0x54, 0x82, 0x3a, 0xd0, 0xb4, 0x4e, 0x9c, 0xaf, 0x59, 0x9e, 0x3b, 0xb9, 0x12, 0xac, 0x0e, 0x38,
0x0a, 0x3c, 0x17, 0x0e, 0x42, 0x82, 0x37, 0xa0, 0x2e, 0xe6, 0x3a, 0xa7, 0x28, 0x22, 0x45, 0x4d, 0xa8, 0xef, 0x4e, 0x90, 0xd7, 0x38, 0xae, 0x4e, 0xc2, 0x37, 0xef, 0xba, 0x04, 0x22, 0xd1, 0x1d,
0xc0, 0x90, 0x04, 0x85, 0x03, 0xea, 0x23, 0xb3, 0xab, 0x9b, 0xf8, 0xdb, 0xd8, 0x86, 0xd5, 0x78, 0xa8, 0xcd, 0xe6, 0x27, 0x13, 0x67, 0xc4, 0x49, 0x0a, 0x3c, 0x17, 0x0e, 0x42, 0x82, 0x37, 0xa0,
0xa5, 0x85, 0xe4, 0x72, 0x1f, 0x2a, 0x82, 0x93, 0x4a, 0xcd, 0xe9, 0x62, 0xbc, 0x37, 0x4c, 0x85, 0x2e, 0xe6, 0x3a, 0xa7, 0x28, 0x22, 0x45, 0x4d, 0xc0, 0x90, 0x04, 0x85, 0x03, 0xea, 0x23, 0xb3,
0x37, 0xfe, 0x6d, 0x09, 0x56, 0x64, 0x1f, 0xb1, 0xc1, 0x1e, 0xcc, 0xa7, 0x53, 0xdb, 0xcf, 0x60, 0xab, 0x9b, 0xf8, 0xdb, 0xd8, 0x86, 0xd5, 0x78, 0xa5, 0x85, 0xe4, 0x72, 0x1f, 0x2a, 0x82, 0x93,
0xd1, 0xb9, 0x17, 0xb3, 0xe8, 0x7c, 0x8a, 0x45, 0xc7, 0xf5, 0x62, 0x9c, 0xc3, 0xc7, 0xf5, 0x62, 0x4a, 0x95, 0xed, 0x62, 0xbc, 0x37, 0x4c, 0x85, 0x37, 0xfe, 0x6d, 0x09, 0x56, 0x64, 0x1f, 0xb1,
0x6c, 0x76, 0xf1, 0xd3, 0xb8, 0x6e, 0xa0, 0x69, 0x08, 0xf0, 0x90, 0x1b, 0x82, 0x52, 0x1b, 0x4a, 0xc1, 0x1e, 0xcc, 0xa7, 0x53, 0xdb, 0xcf, 0x60, 0xd1, 0xb9, 0x17, 0xb3, 0xe8, 0x7c, 0x8a, 0x45,
0x29, 0x63, 0x43, 0xd1, 0xb7, 0x83, 0x85, 0xc4, 0x76, 0xf0, 0x06, 0xf0, 0x69, 0x2c, 0xe7, 0x63, 0xc7, 0x15, 0x72, 0x9c, 0xc3, 0xc7, 0x15, 0x72, 0x6c, 0x76, 0x71, 0x35, 0x80, 0x6e, 0x19, 0x6a,
0x99, 0x1f, 0xd0, 0x11, 0x26, 0x26, 0xe4, 0x3b, 0xb0, 0x94, 0xe4, 0xc0, 0x9c, 0xd5, 0x2f, 0x66, 0x08, 0xf0, 0x90, 0x5b, 0xa0, 0x52, 0x1b, 0x4a, 0x29, 0x63, 0x43, 0xd1, 0xb7, 0x83, 0x85, 0xc4,
0xf0, 0x5f, 0x67, 0x4a, 0x51, 0xa8, 0xd1, 0x88, 0xab, 0x82, 0xff, 0x3a, 0x53, 0x7a, 0x80, 0x18, 0x76, 0xf0, 0x06, 0xf0, 0x69, 0x2c, 0xe7, 0x63, 0x99, 0x6b, 0x06, 0x10, 0x26, 0x26, 0xe4, 0x3b,
0x49, 0xdf, 0x01, 0xe0, 0x65, 0xe3, 0x32, 0x06, 0x5c, 0xc6, 0x6f, 0x27, 0x66, 0xa6, 0xd6, 0xeb, 0xb0, 0x94, 0xe4, 0xc0, 0x9c, 0xd5, 0x2f, 0x66, 0xf0, 0x5f, 0x67, 0x4a, 0x51, 0xa8, 0xd1, 0x88,
0x5b, 0xec, 0x63, 0xee, 0x53, 0x5c, 0xd7, 0x55, 0x4c, 0x89, 0x4b, 0xfa, 0x53, 0x58, 0xf4, 0x66, 0xab, 0x82, 0xff, 0x3a, 0x53, 0x7a, 0x80, 0x18, 0x49, 0xdf, 0x01, 0xe0, 0x65, 0xe3, 0x32, 0x06,
0xd4, 0xb5, 0x22, 0x2e, 0x58, 0xc3, 0xac, 0x9a, 0x22, 0xab, 0xae, 0x84, 0x9b, 0x0d, 0x46, 0xa7, 0x5c, 0xc6, 0x6f, 0x27, 0x66, 0xa6, 0xd6, 0xeb, 0x5b, 0xec, 0x63, 0xee, 0x53, 0x5c, 0xd7, 0x55,
0x3e, 0xc9, 0xe7, 0xbc, 0x93, 0xa9, 0x96, 0xb2, 0x7e, 0x4d, 0xca, 0x45, 0x24, 0x8c, 0x92, 0x7e, 0x4c, 0x89, 0x4b, 0xfa, 0x53, 0x58, 0xf4, 0x66, 0xd4, 0xb5, 0x22, 0x2e, 0x58, 0xc3, 0xac, 0x9a,
0x84, 0xba, 0x27, 0x6f, 0x32, 0xe7, 0xd6, 0x9e, 0x06, 0xce, 0x23, 0xa9, 0xfe, 0x36, 0x15, 0xc6, 0x22, 0xab, 0xae, 0x84, 0x9b, 0x0d, 0x46, 0xa7, 0x3e, 0xc9, 0xe7, 0xbc, 0x93, 0xa9, 0x96, 0xb2,
0xd4, 0xa9, 0x8c, 0xdf, 0xc8, 0x41, 0x4d, 0x6b, 0x03, 0x59, 0x83, 0xe5, 0x9d, 0x7e, 0xff, 0xa8, 0x7e, 0x4d, 0xca, 0x45, 0x24, 0x8c, 0x92, 0x7e, 0x84, 0x4a, 0x2f, 0x6f, 0x32, 0xe7, 0x66, 0xa6,
0x63, 0xb6, 0x87, 0xdd, 0x2f, 0x3a, 0xd6, 0xce, 0x41, 0x7f, 0xd0, 0x69, 0xde, 0x60, 0xe0, 0x83, 0x06, 0xce, 0x23, 0xa9, 0x77, 0x37, 0x15, 0xc6, 0xd4, 0xa9, 0x8c, 0x5f, 0xcf, 0x41, 0x4d, 0x6b,
0xfe, 0x4e, 0xfb, 0xc0, 0xda, 0xeb, 0x9b, 0x3b, 0x12, 0x9c, 0x23, 0xeb, 0x40, 0xcc, 0xce, 0x61, 0x03, 0x59, 0x83, 0xe5, 0x9d, 0x7e, 0xff, 0xa8, 0x63, 0xb6, 0x87, 0xdd, 0x2f, 0x3a, 0xd6, 0xce,
0x7f, 0xd8, 0x89, 0xc1, 0xf3, 0xa4, 0x09, 0xf5, 0x6d, 0xb3, 0xd3, 0xde, 0xd9, 0x17, 0x90, 0x02, 0x41, 0x7f, 0xd0, 0x69, 0xde, 0x60, 0xe0, 0x83, 0xfe, 0x4e, 0xfb, 0xc0, 0xda, 0xeb, 0x9b, 0x3b,
0x59, 0x85, 0xe6, 0xde, 0x71, 0x6f, 0xb7, 0xdb, 0x7b, 0x62, 0xed, 0xb4, 0x7b, 0x3b, 0x9d, 0x83, 0x12, 0x9c, 0x23, 0xeb, 0x40, 0xcc, 0xce, 0x61, 0x7f, 0xd8, 0x89, 0xc1, 0xf3, 0xa4, 0x09, 0xf5,
0xce, 0x6e, 0xb3, 0x48, 0x1a, 0x50, 0x6d, 0x6f, 0xb7, 0x7b, 0xbb, 0xfd, 0x5e, 0x67, 0xb7, 0x59, 0x6d, 0xb3, 0xd3, 0xde, 0xd9, 0x17, 0x90, 0x02, 0x59, 0x85, 0xe6, 0xde, 0x71, 0x6f, 0xb7, 0xdb,
0x32, 0xfe, 0x47, 0x0e, 0x20, 0xaa, 0x28, 0xe3, 0xab, 0x51, 0x55, 0x75, 0xeb, 0xea, 0x5a, 0xaa, 0x7b, 0x62, 0xed, 0xb4, 0x7b, 0x3b, 0x9d, 0x83, 0xce, 0x6e, 0xb3, 0x48, 0x1a, 0x50, 0x6d, 0x6f,
0x51, 0x9c, 0xaf, 0xfa, 0xb1, 0x6f, 0xf2, 0x10, 0xca, 0xde, 0x3c, 0x1c, 0x79, 0x53, 0x7e, 0x88, 0xb7, 0x7b, 0xbb, 0xfd, 0x5e, 0x67, 0xb7, 0x59, 0x32, 0xfe, 0x28, 0x07, 0x10, 0x55, 0x94, 0xf1,
0x58, 0x7c, 0xd8, 0x4a, 0xa5, 0xeb, 0x73, 0xbc, 0x29, 0x09, 0x63, 0x16, 0xd4, 0xc2, 0xcb, 0x2c, 0xd5, 0xa8, 0xaa, 0xba, 0x59, 0x77, 0x2d, 0xd5, 0x28, 0xce, 0x57, 0xfd, 0xd8, 0x37, 0x79, 0x08,
0xa8, 0x71, 0x53, 0x2d, 0x97, 0xeb, 0x34, 0x53, 0xed, 0x6d, 0x80, 0xe0, 0x39, 0xa5, 0x33, 0x54, 0x65, 0x6f, 0x1e, 0x8e, 0xbc, 0x29, 0x3f, 0x44, 0x2c, 0x3e, 0x6c, 0xa5, 0xd2, 0xf5, 0x39, 0xde,
0x5e, 0x89, 0x55, 0x50, 0x45, 0xc8, 0x90, 0x9d, 0x31, 0xff, 0x63, 0x0e, 0xd6, 0x70, 0x2e, 0x8d, 0x94, 0x84, 0x31, 0xd3, 0x6d, 0xe1, 0x65, 0xa6, 0xdb, 0xb8, 0x8d, 0x98, 0xcb, 0x75, 0x9a, 0x8d,
0x93, 0x4c, 0xec, 0x2e, 0xd4, 0x46, 0x9e, 0x37, 0xa3, 0x4c, 0xa8, 0x56, 0xf2, 0x9a, 0x0e, 0x62, 0xf8, 0x36, 0x40, 0xf0, 0x9c, 0xd2, 0x19, 0x6a, 0xcd, 0xc4, 0x2a, 0xa8, 0x22, 0x64, 0xc8, 0xce,
0x0c, 0x8a, 0x33, 0xe4, 0x53, 0xcf, 0x1f, 0x51, 0xc1, 0xc3, 0x00, 0x41, 0x7b, 0x0c, 0xc2, 0xd6, 0x98, 0xff, 0x31, 0x07, 0x6b, 0x38, 0x97, 0xc6, 0x49, 0x26, 0x76, 0x17, 0x6a, 0x23, 0xcf, 0x9b,
0x90, 0x58, 0x84, 0x9c, 0x82, 0xb3, 0xb0, 0x1a, 0x87, 0x71, 0x92, 0x75, 0x58, 0x38, 0xf1, 0xa9, 0x51, 0x26, 0x54, 0x2b, 0x79, 0x4d, 0x07, 0x31, 0x06, 0xc5, 0x19, 0xf2, 0xa9, 0xe7, 0x8f, 0xa8,
0x3d, 0x3a, 0x17, 0xdc, 0x4b, 0x7c, 0x91, 0x6f, 0x47, 0x4a, 0xbc, 0x11, 0x5b, 0x13, 0x13, 0xca, 0xe0, 0x61, 0x80, 0xa0, 0x3d, 0x06, 0x61, 0x6b, 0x48, 0x2c, 0x42, 0x4e, 0xc1, 0x59, 0x58, 0x8d,
0x2b, 0x5f, 0x31, 0x97, 0x04, 0x7c, 0x47, 0x80, 0xd9, 0x3e, 0x6f, 0x9f, 0xd8, 0xee, 0xd8, 0x73, 0xc3, 0x38, 0xc9, 0x3a, 0x2c, 0x9c, 0xf8, 0xd4, 0x1e, 0x9d, 0x0b, 0xee, 0x25, 0xbe, 0xc8, 0xb7,
0xe9, 0x58, 0x9c, 0xe5, 0x23, 0x80, 0x71, 0x04, 0xeb, 0xc9, 0xf6, 0x09, 0x7e, 0xf7, 0x89, 0xc6, 0x23, 0xed, 0xe1, 0x88, 0xad, 0x89, 0x09, 0xe5, 0x95, 0xaf, 0x98, 0x4b, 0x02, 0xbe, 0x23, 0xc0,
0xef, 0xf8, 0xd1, 0x77, 0xf3, 0xfa, 0x35, 0xa6, 0xf1, 0xbe, 0xff, 0x54, 0x84, 0x22, 0x3b, 0xf0, 0x6c, 0x9f, 0xb7, 0x4f, 0x6c, 0x77, 0xec, 0xb9, 0x74, 0x2c, 0xce, 0xf2, 0x11, 0xc0, 0x38, 0x82,
0x5c, 0x7b, 0x36, 0xd2, 0xcf, 0xb6, 0x85, 0x94, 0x5d, 0x1d, 0x75, 0x85, 0x5c, 0x00, 0x13, 0x83, 0xf5, 0x64, 0xfb, 0x04, 0xbf, 0xfb, 0x44, 0xe3, 0x77, 0xfc, 0xe8, 0xbb, 0x79, 0xfd, 0x1a, 0xd3,
0x85, 0x10, 0x14, 0xbc, 0x14, 0xda, 0xa7, 0xa3, 0x0b, 0x79, 0x66, 0x41, 0x88, 0x49, 0x47, 0x17, 0x78, 0xdf, 0x7f, 0x2a, 0x42, 0x91, 0x1d, 0x78, 0xae, 0x3d, 0x1b, 0xe9, 0x67, 0xdb, 0x42, 0xca,
0xa8, 0xb4, 0xb0, 0x43, 0x9e, 0x96, 0xf3, 0xab, 0x72, 0x60, 0x87, 0x98, 0x52, 0xa0, 0x30, 0x5d, 0xa0, 0x8f, 0x4a, 0x4a, 0x2e, 0x80, 0x89, 0xc1, 0x42, 0x08, 0x0a, 0x5e, 0x0a, 0xed, 0xd3, 0xd1,
0x59, 0xa1, 0x30, 0x55, 0x0b, 0xca, 0x8e, 0x7b, 0xe2, 0xcd, 0x5d, 0xa9, 0xfa, 0x91, 0x9f, 0x68, 0x85, 0x3c, 0xb3, 0x20, 0xc4, 0xa4, 0xa3, 0x0b, 0x54, 0x5a, 0xd8, 0x21, 0x4f, 0xcb, 0xf9, 0x55,
0xc6, 0x47, 0x4e, 0xca, 0xb6, 0x76, 0xce, 0x8d, 0x2a, 0x0c, 0x30, 0x64, 0x9b, 0xfb, 0x87, 0x50, 0x39, 0xb0, 0x43, 0x4c, 0x29, 0x50, 0x98, 0xae, 0xac, 0x50, 0x98, 0xaa, 0x05, 0x65, 0xc7, 0x3d,
0x0d, 0xae, 0xdc, 0x91, 0xce, 0x83, 0x56, 0x45, 0xff, 0xb0, 0xd6, 0x6f, 0x0d, 0xae, 0xdc, 0x11, 0xf1, 0xe6, 0xae, 0x54, 0x11, 0xc9, 0x4f, 0xf4, 0x1f, 0x40, 0x4e, 0xca, 0xb6, 0x76, 0xce, 0x8d,
0xce, 0xf8, 0x4a, 0x20, 0x7e, 0x91, 0x47, 0x50, 0x51, 0x86, 0x2f, 0xbe, 0x83, 0xdc, 0xd4, 0x53, 0x2a, 0x0c, 0x30, 0x64, 0x9b, 0xfb, 0x87, 0x50, 0x0d, 0xae, 0xdc, 0x91, 0xce, 0x83, 0x56, 0x45,
0x48, 0x6b, 0x17, 0xd7, 0x8f, 0x29, 0x52, 0xf2, 0x01, 0x2c, 0xa0, 0x02, 0x3c, 0x68, 0xd5, 0x31, 0xff, 0xb0, 0xd6, 0x6f, 0x0d, 0xae, 0xdc, 0x11, 0xce, 0xf8, 0x4a, 0x20, 0x7e, 0x91, 0x47, 0x50,
0x91, 0x3c, 0xf0, 0xb2, 0x6a, 0xa0, 0x05, 0x9d, 0x8e, 0xd1, 0x0c, 0x65, 0x0a, 0x32, 0xd6, 0x4d, 0x51, 0x16, 0x37, 0xbe, 0x83, 0xdc, 0xd4, 0x53, 0x48, 0x33, 0x1b, 0xd7, 0xb7, 0x29, 0x52, 0xf2,
0xa7, 0x13, 0x7b, 0x26, 0xd4, 0xd1, 0x0d, 0x6e, 0x88, 0x66, 0x10, 0xae, 0x8b, 0xbe, 0x0b, 0x75, 0x01, 0x2c, 0xa0, 0xe6, 0x3d, 0x68, 0xd5, 0x31, 0x91, 0x3c, 0xf0, 0xb2, 0x6a, 0xa0, 0xe9, 0x9e,
0x34, 0x2a, 0x22, 0x8d, 0xcb, 0xe5, 0xd0, 0x82, 0x09, 0x0c, 0xb6, 0x37, 0xb1, 0x67, 0xbd, 0x60, 0x8e, 0xd1, 0xfe, 0x65, 0x0a, 0x32, 0xd6, 0x4d, 0xa7, 0x13, 0x7b, 0x26, 0xf4, 0xe0, 0x0d, 0x6e,
0xf3, 0x29, 0x34, 0x62, 0x95, 0xd1, 0xd5, 0x5c, 0x0d, 0xae, 0xe6, 0x7a, 0x4b, 0x57, 0x73, 0x45, 0x01, 0x67, 0x10, 0xae, 0x04, 0xbf, 0x0b, 0x75, 0xb4, 0x66, 0x22, 0x8d, 0xcb, 0xe5, 0xd0, 0x82,
0x5b, 0xa1, 0x48, 0xa6, 0xab, 0xbd, 0x8e, 0xa0, 0x22, 0xfb, 0x82, 0xf1, 0x9c, 0xe3, 0xde, 0xd3, 0x09, 0x0c, 0xb6, 0x37, 0xb1, 0x67, 0xbd, 0x60, 0xf3, 0x29, 0x34, 0x62, 0x95, 0xd1, 0xd5, 0x61,
0x5e, 0xff, 0xcb, 0x9e, 0x35, 0xf8, 0xaa, 0xb7, 0xd3, 0xbc, 0x41, 0x96, 0xa0, 0xd6, 0xde, 0x41, 0x0d, 0xae, 0x0e, 0x7b, 0x4b, 0x57, 0x87, 0x45, 0x5b, 0xa1, 0x48, 0xa6, 0xab, 0xc7, 0x8e, 0xa0,
0x36, 0x86, 0x80, 0x1c, 0x23, 0x39, 0x6a, 0x0f, 0x06, 0x0a, 0x92, 0x67, 0x24, 0x47, 0xdd, 0x5e, 0x22, 0xfb, 0x82, 0xf1, 0x9c, 0xe3, 0xde, 0xd3, 0x5e, 0xff, 0xcb, 0x9e, 0x35, 0xf8, 0xaa, 0xb7,
0xaf, 0xb3, 0xcb, 0x01, 0x05, 0x63, 0x0f, 0x9a, 0xc9, 0xb6, 0xb3, 0x59, 0x1e, 0x4a, 0x98, 0x30, 0xd3, 0xbc, 0x41, 0x96, 0xa0, 0xd6, 0xde, 0x41, 0x36, 0x86, 0x80, 0x1c, 0x23, 0x39, 0x6a, 0x0f,
0xf5, 0x45, 0x80, 0xc8, 0xa0, 0x90, 0xd7, 0x0c, 0x0a, 0xc6, 0x23, 0x68, 0xb2, 0x9d, 0x9e, 0x75, 0x06, 0x0a, 0x92, 0x67, 0x24, 0x47, 0xdd, 0x5e, 0xaf, 0xb3, 0xcb, 0x01, 0x05, 0x63, 0x0f, 0x9a,
0xbe, 0x6e, 0xe7, 0x9f, 0x30, 0x59, 0x5c, 0x37, 0xf7, 0x55, 0xcc, 0x1a, 0x87, 0x61, 0x51, 0xc6, 0xc9, 0xb6, 0xb3, 0x59, 0x1e, 0x4a, 0x98, 0xb0, 0x31, 0x46, 0x80, 0xc8, 0x92, 0x91, 0xd7, 0x2c,
0x27, 0xb0, 0xac, 0x25, 0x8b, 0xb4, 0x44, 0x4c, 0x7a, 0x48, 0x6a, 0x89, 0xf0, 0xe4, 0xcf, 0x31, 0x19, 0xc6, 0x23, 0x68, 0xb2, 0x9d, 0x9e, 0x75, 0xbe, 0xee, 0x60, 0x30, 0x61, 0xb2, 0xb8, 0x6e,
0xc6, 0x06, 0xac, 0xb1, 0xcf, 0xce, 0x05, 0x75, 0xc3, 0xc1, 0xfc, 0x84, 0xbb, 0x87, 0x38, 0x9e, 0x67, 0xac, 0x98, 0x35, 0x0e, 0xc3, 0xa2, 0x8c, 0x4f, 0x60, 0x59, 0x4b, 0x16, 0x69, 0x89, 0x98,
0x6b, 0xfc, 0x5a, 0x0e, 0xaa, 0x0a, 0x73, 0xfd, 0xb2, 0xd9, 0x12, 0x0a, 0x25, 0xce, 0x27, 0x37, 0xf4, 0x90, 0xd4, 0x12, 0xe1, 0xc9, 0x9f, 0x63, 0x8c, 0x0d, 0x58, 0x63, 0x9f, 0x9d, 0x0b, 0xea,
0xb5, 0x12, 0x30, 0xe1, 0x16, 0xfe, 0x8d, 0x29, 0x96, 0xaa, 0x0a, 0x84, 0x9d, 0xd8, 0xe9, 0x98, 0x86, 0x83, 0xf9, 0x09, 0xf7, 0x4b, 0x71, 0x3c, 0xd7, 0xf8, 0x95, 0x1c, 0x54, 0x15, 0xe6, 0xfa,
0x56, 0xbf, 0x77, 0xd0, 0xed, 0xb1, 0xdd, 0x82, 0xf5, 0x33, 0x02, 0xf6, 0xf6, 0x10, 0x92, 0x33, 0x65, 0xb3, 0x25, 0x14, 0x4a, 0x9c, 0x4f, 0x6e, 0x6a, 0x25, 0x60, 0xc2, 0x2d, 0xfc, 0x1b, 0x53,
0x9a, 0xb0, 0xf8, 0x84, 0x86, 0x5d, 0xf7, 0xd4, 0x13, 0x9d, 0x61, 0xfc, 0xf9, 0x05, 0x58, 0x52, 0x2c, 0x55, 0x15, 0x08, 0x3b, 0xb1, 0xd3, 0x31, 0xad, 0x7e, 0xef, 0xa0, 0xdb, 0x63, 0xbb, 0x05,
0xa0, 0x48, 0x31, 0x75, 0x41, 0xfd, 0xc0, 0xf1, 0x5c, 0x9c, 0x38, 0x55, 0x53, 0x7e, 0x32, 0x7e, 0xeb, 0x67, 0x04, 0xec, 0xed, 0x21, 0x24, 0x67, 0x34, 0x61, 0xf1, 0x09, 0x0d, 0xbb, 0xee, 0xa9,
0x27, 0x8e, 0x6d, 0x28, 0x77, 0xac, 0x22, 0x56, 0x1c, 0xf4, 0x50, 0xe8, 0x78, 0x07, 0x96, 0x9c, 0x27, 0x3a, 0xc3, 0xf8, 0xb5, 0x05, 0x58, 0x52, 0xa0, 0x48, 0x31, 0x75, 0x41, 0xfd, 0xc0, 0xf1,
0x31, 0x75, 0x43, 0x27, 0xbc, 0xb2, 0x62, 0x6a, 0xfa, 0x45, 0x09, 0x16, 0x82, 0xc7, 0x2a, 0x94, 0x5c, 0x9c, 0x38, 0x55, 0x53, 0x7e, 0x32, 0x7e, 0x27, 0x8e, 0x6d, 0x28, 0x77, 0xac, 0x22, 0x56,
0xec, 0x89, 0x63, 0x4b, 0xb7, 0x1b, 0xfe, 0xc1, 0xa0, 0x23, 0x6f, 0xe2, 0xf9, 0x78, 0x90, 0xa9, 0x1c, 0xf4, 0x50, 0xe8, 0x78, 0x07, 0x96, 0x9c, 0x31, 0x75, 0x43, 0x27, 0xbc, 0xb2, 0x62, 0xf6,
0x9a, 0xfc, 0x83, 0x3c, 0x80, 0x55, 0x76, 0xa8, 0xd2, 0xed, 0x4a, 0xc8, 0xb2, 0xb8, 0xc5, 0x80, 0x81, 0x45, 0x09, 0x16, 0x82, 0xc7, 0x2a, 0x94, 0xec, 0x89, 0x63, 0x4b, 0x7f, 0x1f, 0xfe, 0xc1,
0xb8, 0xf3, 0xe9, 0x51, 0x64, 0x5b, 0x62, 0x18, 0x26, 0x6e, 0xb0, 0x14, 0x42, 0xbe, 0x54, 0x09, 0xa0, 0x23, 0x6f, 0xe2, 0xf9, 0x78, 0x90, 0xa9, 0x9a, 0xfc, 0x83, 0x3c, 0x80, 0x55, 0x76, 0xa8,
0xb8, 0xa2, 0x64, 0xd9, 0x9d, 0x4f, 0xdb, 0x88, 0x51, 0xf4, 0x0f, 0x61, 0x8d, 0xd1, 0x2b, 0x89, 0xd2, 0x0d, 0x5a, 0xc8, 0xb2, 0xb8, 0xa9, 0x82, 0xb8, 0xf3, 0xe9, 0x51, 0x64, 0xd4, 0x62, 0x18,
0x54, 0xa5, 0x58, 0xc2, 0x14, 0x2c, 0xb3, 0xae, 0xc0, 0xa9, 0x34, 0xb7, 0xa0, 0xca, 0x6b, 0xc5, 0x26, 0x6e, 0xb0, 0x14, 0x42, 0xbe, 0x54, 0x09, 0xb8, 0xa2, 0x64, 0xd9, 0x9d, 0x4f, 0xdb, 0x88,
0xa6, 0x84, 0x30, 0x40, 0x61, 0x55, 0xa8, 0x1f, 0xa4, 0x3c, 0x64, 0xb8, 0x66, 0x20, 0xe9, 0x21, 0x51, 0xf4, 0x0f, 0x61, 0x8d, 0xd1, 0x2b, 0x89, 0x54, 0xa5, 0x58, 0xc2, 0x14, 0x2c, 0xb3, 0xae,
0xa3, 0xf9, 0xd8, 0x54, 0x92, 0x3e, 0x36, 0x0f, 0x61, 0xed, 0x84, 0xcd, 0xd1, 0x73, 0x6a, 0x8f, 0xc0, 0xa9, 0x34, 0xb7, 0xa0, 0xca, 0x6b, 0xc5, 0xa6, 0x84, 0xb0, 0x7c, 0x61, 0x55, 0xa8, 0x1f,
0xa9, 0x6f, 0x45, 0x33, 0x9f, 0x9f, 0x3f, 0x57, 0x18, 0x72, 0x1f, 0x71, 0x6a, 0xa1, 0x30, 0xd1, 0xa4, 0x5c, 0x73, 0xb8, 0x66, 0x20, 0xe9, 0x9a, 0xa3, 0x39, 0xf7, 0x54, 0x92, 0xce, 0x3d, 0x0f,
0x90, 0x71, 0x22, 0x3a, 0xb6, 0x42, 0xcf, 0x42, 0x89, 0x51, 0xa8, 0x60, 0x1b, 0x1c, 0x3c, 0xf4, 0x61, 0xed, 0x84, 0xcd, 0xd1, 0x73, 0x6a, 0x8f, 0xa9, 0x6f, 0x45, 0x33, 0x9f, 0x9f, 0x3f, 0x57,
0x76, 0x18, 0x30, 0x4e, 0x77, 0xe6, 0xdb, 0xb3, 0x73, 0x71, 0x3a, 0x54, 0x74, 0x4f, 0x18, 0x90, 0x18, 0x72, 0x1f, 0x71, 0x6a, 0xa1, 0x30, 0xd1, 0x90, 0x71, 0x22, 0x3a, 0xb6, 0x42, 0xcf, 0x42,
0xbc, 0x06, 0x65, 0xb6, 0x26, 0x5c, 0xca, 0x1d, 0x0e, 0xf8, 0xb9, 0x4b, 0x82, 0xc8, 0x5b, 0xb0, 0x89, 0x51, 0xa8, 0x60, 0x1b, 0x1c, 0x3c, 0xf4, 0x76, 0x18, 0x30, 0x4e, 0x77, 0xe6, 0xdb, 0xb3,
0x80, 0x65, 0x04, 0xad, 0x26, 0x2e, 0x88, 0x7a, 0xb4, 0x77, 0x38, 0xae, 0x29, 0x70, 0x4c, 0xfe, 0x73, 0x71, 0x3a, 0x54, 0x74, 0x4f, 0x18, 0x90, 0xbc, 0x06, 0x65, 0xb6, 0x26, 0x5c, 0xca, 0x3d,
0x9e, 0xfb, 0x0e, 0x67, 0x6c, 0x55, 0x13, 0x7f, 0x93, 0xef, 0x69, 0x5c, 0x72, 0x05, 0xd3, 0xbe, 0x1d, 0xf8, 0xb9, 0x4b, 0x82, 0xc8, 0x5b, 0xb0, 0x80, 0x65, 0x04, 0xad, 0x26, 0x2e, 0x88, 0x7a,
0x25, 0xd2, 0x26, 0xa6, 0xe2, 0x75, 0x0c, 0xf3, 0x1b, 0x65, 0x5f, 0xdf, 0x2f, 0x56, 0x6a, 0xcd, 0xb4, 0x77, 0x38, 0xae, 0x29, 0x70, 0x4c, 0xfe, 0x9e, 0xfb, 0x0e, 0x67, 0x6c, 0x55, 0x13, 0x7f,
0xba, 0xd1, 0x42, 0xc7, 0x20, 0x93, 0x8e, 0xbc, 0x0b, 0xea, 0x5f, 0xc5, 0xd6, 0x48, 0x0e, 0x36, 0x93, 0xef, 0x69, 0x5c, 0x72, 0x05, 0xd3, 0xbe, 0x25, 0xd2, 0x26, 0xa6, 0xe2, 0x75, 0x0c, 0xf3,
0x52, 0xa8, 0xc8, 0x79, 0xc0, 0x17, 0x70, 0x6b, 0xea, 0x8d, 0xa5, 0x94, 0x50, 0x97, 0xc0, 0x43, 0x1b, 0x65, 0x5f, 0xdf, 0x2f, 0x56, 0x6a, 0xcd, 0xba, 0xd1, 0x42, 0x8f, 0x24, 0x93, 0x8e, 0xbc,
0x6f, 0xcc, 0xa4, 0x99, 0x65, 0x45, 0x74, 0xea, 0xb8, 0x4e, 0x70, 0x4e, 0xc7, 0x42, 0x58, 0x68, 0x0b, 0xea, 0x5f, 0xc5, 0xd6, 0x48, 0x0e, 0x36, 0x52, 0xa8, 0xc8, 0x6b, 0xc1, 0x17, 0x70, 0x6b,
0x4a, 0xc4, 0x9e, 0x80, 0x33, 0x91, 0x7c, 0xe6, 0x7b, 0x67, 0x6a, 0xef, 0xcc, 0x99, 0xea, 0xdb, 0xea, 0x8d, 0xa5, 0x94, 0x50, 0x97, 0xc0, 0x43, 0x6f, 0xcc, 0xa4, 0x99, 0x65, 0x45, 0x74, 0xea,
0xf8, 0x14, 0x4a, 0x7c, 0x04, 0xd9, 0x42, 0xc1, 0xf1, 0xcd, 0x89, 0x85, 0x82, 0xd0, 0x16, 0x94, 0xb8, 0x4e, 0x70, 0x4e, 0xc7, 0x42, 0x58, 0x68, 0x4a, 0xc4, 0x9e, 0x80, 0x33, 0x91, 0x7c, 0xe6,
0x5d, 0x1a, 0x3e, 0xf7, 0xfc, 0x67, 0xd2, 0xd8, 0x26, 0x3e, 0x8d, 0x1f, 0xa3, 0x96, 0x55, 0x79, 0x7b, 0x67, 0x6a, 0xef, 0xcc, 0x99, 0xea, 0xdb, 0xf8, 0x14, 0x4a, 0x7c, 0x04, 0xd9, 0x42, 0xc1,
0x78, 0x71, 0x6d, 0x04, 0x9b, 0xc2, 0x7c, 0x0a, 0x06, 0xe7, 0xb6, 0x50, 0xfc, 0x56, 0x10, 0x30, 0xf1, 0xcd, 0x89, 0x85, 0x82, 0xd0, 0x16, 0x94, 0x5d, 0x1a, 0x3e, 0xf7, 0xfc, 0x67, 0xd2, 0xca,
0x38, 0xb7, 0x53, 0x53, 0x38, 0x9f, 0x76, 0xf2, 0x7a, 0x0b, 0x16, 0xa5, 0x4f, 0x59, 0x60, 0x4d, 0x27, 0x3e, 0x8d, 0x1f, 0xa3, 0x96, 0x55, 0xb9, 0x96, 0x71, 0x6d, 0x04, 0x9b, 0xc2, 0x7c, 0x0a,
0xe8, 0x69, 0x28, 0x96, 0x64, 0x5d, 0x38, 0x94, 0x05, 0x07, 0xf4, 0x34, 0x34, 0x0e, 0x61, 0x59, 0x06, 0xe7, 0xb6, 0x50, 0xfc, 0x56, 0x10, 0x30, 0x38, 0xb7, 0x53, 0x53, 0x38, 0x9f, 0xf6, 0x2e,
0x2c, 0x9a, 0xfe, 0x8c, 0xca, 0xa2, 0x3f, 0xcb, 0x3a, 0x26, 0xd5, 0x1e, 0xae, 0xc4, 0xe5, 0x0f, 0x7b, 0x0b, 0x16, 0xa5, 0x33, 0x5b, 0x60, 0x4d, 0xe8, 0x69, 0x28, 0x96, 0x64, 0x5d, 0x78, 0xb2,
0x2e, 0xe9, 0xc5, 0xce, 0x4e, 0xc6, 0x0f, 0x22, 0x95, 0x22, 0x93, 0x4e, 0x44, 0x7e, 0xe2, 0xb0, 0x05, 0x07, 0xf4, 0x34, 0x34, 0x0e, 0x61, 0x59, 0x2c, 0x9a, 0xfe, 0x8c, 0xca, 0xa2, 0x3f, 0xcb,
0x22, 0x6d, 0x94, 0xd2, 0x0f, 0x42, 0x1d, 0x89, 0x9c, 0x31, 0xeb, 0x9d, 0x60, 0x3e, 0x1a, 0x49, 0x3a, 0x26, 0xd5, 0x1e, 0xae, 0xc4, 0xe5, 0x0f, 0x2e, 0xe9, 0xc5, 0xce, 0x4e, 0xc6, 0x0f, 0x22,
0x5f, 0xbf, 0x8a, 0x29, 0x3f, 0x8d, 0x7f, 0x95, 0x83, 0x15, 0xcc, 0x4c, 0x1e, 0xf3, 0xc4, 0x4e, 0x95, 0x22, 0x93, 0x4e, 0x44, 0x7e, 0xe2, 0xb0, 0x22, 0x8d, 0xa3, 0xd2, 0x01, 0x43, 0x1d, 0x89,
0xf1, 0x13, 0x57, 0x92, 0x8d, 0x8f, 0x2e, 0x12, 0xf2, 0x8f, 0xaf, 0x6f, 0xb5, 0x29, 0xa6, 0xac, 0x9c, 0x31, 0xeb, 0x9d, 0x60, 0x3e, 0x1a, 0x49, 0x27, 0xc3, 0x8a, 0x29, 0x3f, 0x8d, 0xff, 0x95,
0x36, 0xdf, 0x86, 0xe6, 0x98, 0x4e, 0x1c, 0x9c, 0x4a, 0x52, 0xc2, 0xe2, 0x22, 0xed, 0x92, 0x84, 0x83, 0x15, 0xcc, 0x4c, 0x1e, 0xf3, 0xc4, 0x4e, 0xf1, 0x13, 0x57, 0x92, 0x8d, 0x8f, 0x2e, 0x12,
0x0b, 0xb5, 0x83, 0xf1, 0x57, 0x72, 0xb0, 0xcc, 0x05, 0x38, 0x54, 0xe4, 0x88, 0x8e, 0x7a, 0x2c, 0xf2, 0x8f, 0x97, 0x5b, 0x77, 0x92, 0x96, 0x9b, 0x62, 0xa6, 0xe5, 0xe6, 0xdb, 0xd0, 0x1c, 0xd3,
0x35, 0x16, 0x82, 0x9d, 0x8a, 0x36, 0x45, 0x82, 0x0d, 0x42, 0x39, 0xf1, 0xfe, 0x0d, 0xa1, 0xc9, 0x89, 0x83, 0xd3, 0x49, 0x4a, 0x59, 0x5c, 0xac, 0x5d, 0x92, 0x70, 0xa9, 0x7a, 0x48, 0x99, 0x8b,
0x10, 0x50, 0xf2, 0x1d, 0x3c, 0x9a, 0xba, 0x16, 0x02, 0x85, 0x60, 0x7e, 0x33, 0x43, 0x64, 0x54, 0x16, 0xd2, 0xa6, 0xc4, 0xbf, 0x9a, 0x83, 0x65, 0x2e, 0xe8, 0xa1, 0xc2, 0x47, 0x74, 0xe8, 0x63,
0xc9, 0xd9, 0xb9, 0xd5, 0x45, 0xd0, 0x76, 0x05, 0x16, 0xb8, 0x5a, 0xcc, 0xd8, 0x83, 0x46, 0xac, 0xa9, 0xd9, 0x10, 0x6c, 0x57, 0xb4, 0x3d, 0x12, 0x80, 0x10, 0xca, 0x89, 0xf7, 0x6f, 0x08, 0x8d,
0x98, 0x98, 0xe9, 0xa7, 0xce, 0x4d, 0x3f, 0x29, 0xf3, 0x70, 0x3e, 0x6d, 0x1e, 0xbe, 0x82, 0x15, 0x87, 0x80, 0x92, 0xef, 0xe0, 0x11, 0xd6, 0xb5, 0x10, 0x28, 0x04, 0xf8, 0x9b, 0x19, 0xa2, 0xa5,
0x93, 0xda, 0xe3, 0xab, 0x3d, 0xcf, 0x3f, 0x0a, 0x4e, 0xc2, 0x3d, 0x2e, 0x15, 0xb3, 0x3d, 0x48, 0x4a, 0xce, 0xce, 0xb7, 0x2e, 0x82, 0xb6, 0x2b, 0xb0, 0xc0, 0xd5, 0x67, 0xc6, 0x1e, 0x34, 0x62,
0x39, 0x84, 0xc4, 0xec, 0x2b, 0xd2, 0xf4, 0x2d, 0xf5, 0x32, 0xdf, 0x82, 0xc5, 0xc8, 0x73, 0x44, 0xc5, 0xc4, 0x4c, 0x44, 0x75, 0x6e, 0x22, 0x4a, 0xd9, 0xaf, 0xf3, 0x69, 0xfb, 0xf5, 0x15, 0xac,
0xd3, 0xc4, 0x37, 0x94, 0xf3, 0x08, 0x0a, 0x53, 0x04, 0x8a, 0xb3, 0xe0, 0x24, 0x14, 0xba, 0x78, 0x98, 0xd4, 0x1e, 0x5f, 0xed, 0x79, 0xfe, 0x51, 0x70, 0x12, 0xee, 0x71, 0xe9, 0x99, 0xed, 0x55,
0xfc, 0x6d, 0xfc, 0xd5, 0x12, 0x10, 0x36, 0x9b, 0x13, 0x13, 0x26, 0xe1, 0xf3, 0x92, 0x4f, 0xf9, 0xca, 0x63, 0x25, 0x66, 0x87, 0x91, 0xb6, 0x79, 0xd9, 0x89, 0xdf, 0x82, 0xc5, 0xc8, 0xb5, 0x45,
0xbc, 0x3c, 0x00, 0xa2, 0x11, 0x48, 0x57, 0x9c, 0x82, 0x72, 0xc5, 0x69, 0x46, 0xb4, 0xc2, 0x13, 0xd3, 0xd8, 0x37, 0x94, 0x77, 0x0b, 0x0a, 0x5d, 0x04, 0x8a, 0xb3, 0xe0, 0x24, 0x14, 0x3a, 0x7b,
0xe7, 0x01, 0xac, 0x8a, 0x23, 0x46, 0xbc, 0xaa, 0x7c, 0x6a, 0x10, 0x7e, 0xd6, 0x88, 0xd5, 0x57, 0xfc, 0x6d, 0xfc, 0xe3, 0x12, 0x10, 0x36, 0xeb, 0x13, 0x13, 0x2b, 0x35, 0x2c, 0xb9, 0xb4, 0x15,
0xfa, 0xbb, 0x48, 0xd5, 0x75, 0x81, 0xfb, 0xbb, 0x48, 0x0d, 0x93, 0x36, 0x01, 0x17, 0x5e, 0x3a, 0x2f, 0xe1, 0xb8, 0x93, 0x4f, 0x39, 0xee, 0x3c, 0x00, 0xa2, 0x11, 0x48, 0x7f, 0xa2, 0x82, 0xf2,
0x01, 0xcb, 0xa9, 0x09, 0xa8, 0x69, 0x1b, 0x2b, 0x71, 0x6d, 0x63, 0x4a, 0x6f, 0xce, 0xe5, 0xe9, 0x27, 0x6a, 0x46, 0xb4, 0xc2, 0x9d, 0xe8, 0x01, 0xac, 0x8a, 0xe3, 0x4a, 0xbc, 0x39, 0x38, 0xcd,
0x98, 0xde, 0xfc, 0x1e, 0x34, 0xa5, 0xe6, 0x49, 0xe9, 0x34, 0x85, 0x13, 0x84, 0x50, 0x2e, 0x49, 0x4c, 0xc2, 0xcf, 0x2d, 0xb1, 0x36, 0x49, 0xa7, 0x1d, 0xa9, 0x06, 0x2f, 0x70, 0xa7, 0x1d, 0xa9,
0xad, 0x66, 0xcc, 0xc8, 0x57, 0x7b, 0x15, 0x6b, 0x63, 0x3d, 0xdb, 0xda, 0x98, 0xd6, 0xd1, 0x35, 0xad, 0xd2, 0x26, 0xf3, 0xc2, 0x4b, 0x27, 0x73, 0x39, 0x73, 0x32, 0x6b, 0xda, 0xcb, 0x4a, 0x5c,
0x32, 0x74, 0x74, 0x8f, 0x22, 0x1f, 0x87, 0xe0, 0xdc, 0x99, 0xa2, 0xe0, 0x13, 0x39, 0x69, 0x8a, 0x7b, 0x99, 0xd2, 0xc3, 0x73, 0xf9, 0x3c, 0xa6, 0x87, 0xbf, 0x07, 0x4d, 0xa9, 0xc9, 0x52, 0x3a,
0x0e, 0x1e, 0x9c, 0x3b, 0x53, 0x53, 0x7a, 0x1b, 0xb1, 0x0f, 0xb2, 0x03, 0x77, 0x44, 0x7b, 0x32, 0x52, 0xe1, 0xcd, 0x21, 0x94, 0x55, 0x52, 0x4b, 0x1a, 0x33, 0x1a, 0xd6, 0x5e, 0xc5, 0x7a, 0x59,
0x1c, 0x85, 0x78, 0x2f, 0x2c, 0xa1, 0xa4, 0xba, 0xc9, 0xc9, 0x0e, 0x13, 0x3e, 0x43, 0x89, 0x4e, 0xcf, 0xb6, 0x5e, 0xa6, 0x75, 0x7e, 0x8d, 0x0c, 0x9d, 0xdf, 0xa3, 0xc8, 0x59, 0x23, 0x38, 0x77,
0x91, 0x6e, 0x26, 0x01, 0x57, 0xf4, 0xca, 0x4e, 0x39, 0xe4, 0x7e, 0x26, 0x01, 0x76, 0xb1, 0x7d, 0xa6, 0x28, 0x48, 0x45, 0xde, 0xa6, 0xa2, 0x93, 0x07, 0xe7, 0xce, 0xd4, 0x94, 0x6e, 0x53, 0xec,
0x69, 0x09, 0x25, 0x60, 0x70, 0x81, 0x72, 0x52, 0xc3, 0xac, 0x4d, 0xed, 0xcb, 0x03, 0x54, 0xf2, 0x83, 0xec, 0xc0, 0x1d, 0xd1, 0x9e, 0x0c, 0x8f, 0x27, 0xde, 0x0b, 0x4b, 0x38, 0x55, 0x36, 0x39,
0x05, 0x17, 0xc6, 0x9f, 0xe4, 0xa0, 0xc9, 0xa6, 0x66, 0x6c, 0xd5, 0x7f, 0x0e, 0xc8, 0x9f, 0x5e, 0xd9, 0x61, 0xc2, 0xf9, 0x29, 0xd1, 0x29, 0xd2, 0x5f, 0x26, 0xe0, 0x8a, 0x63, 0xd9, 0x29, 0x87,
0x71, 0xd1, 0xd7, 0x18, 0xad, 0x5c, 0xf3, 0x9f, 0x02, 0x2e, 0x62, 0xcb, 0x9b, 0x51, 0x57, 0x2c, 0xdc, 0x61, 0x06, 0xd9, 0x03, 0x23, 0x11, 0x4a, 0xc5, 0xe0, 0x02, 0xe5, 0xae, 0x86, 0x59, 0x9b,
0xf9, 0x56, 0x7c, 0xc9, 0x47, 0x6c, 0x7d, 0xff, 0x06, 0x3f, 0x25, 0x32, 0x08, 0xf9, 0x1c, 0xaa, 0xda, 0x97, 0x07, 0xa8, 0x34, 0x0c, 0x2e, 0x8c, 0x3f, 0xc9, 0x41, 0x93, 0x4d, 0xe1, 0x18, 0x77,
0x6c, 0xad, 0xe0, 0xc4, 0x15, 0x6e, 0xd0, 0x9b, 0xea, 0xe4, 0x9f, 0x5a, 0xb6, 0x2c, 0xe9, 0x4c, 0xf8, 0x1c, 0x90, 0xdf, 0xbd, 0x22, 0x73, 0xa8, 0x31, 0x5a, 0xc9, 0x1b, 0x3e, 0x05, 0x5c, 0xec,
0x7c, 0x66, 0x79, 0x11, 0x15, 0x33, 0xbc, 0x88, 0x34, 0x9e, 0xb2, 0x0f, 0xf0, 0x94, 0x5e, 0xb1, 0x96, 0x37, 0xa3, 0xae, 0x60, 0x0d, 0xad, 0x38, 0x6b, 0x88, 0xb6, 0x89, 0xfd, 0x1b, 0xfc, 0xd4,
0x4e, 0x08, 0x3d, 0x9f, 0xc9, 0x56, 0x6c, 0x79, 0x9d, 0xda, 0x53, 0x47, 0x68, 0x1f, 0x4b, 0x66, 0xc9, 0x20, 0xe4, 0x73, 0xa8, 0xb2, 0x35, 0x85, 0x93, 0x57, 0xf8, 0x73, 0x6f, 0x2a, 0x4d, 0x42,
0xf5, 0x19, 0xbd, 0xda, 0x43, 0x00, 0x9b, 0x5b, 0x0c, 0x1d, 0x31, 0x96, 0x92, 0x59, 0x79, 0x46, 0x6a, 0x79, 0xb3, 0xa4, 0x33, 0xf1, 0x99, 0xe5, 0x0e, 0x55, 0xcc, 0x70, 0x87, 0xd2, 0x78, 0xcf,
0xaf, 0x38, 0x57, 0xb1, 0xa0, 0xf1, 0x94, 0x5e, 0xed, 0x52, 0x2e, 0xbc, 0x7b, 0x3e, 0xeb, 0x74, 0x3e, 0xc0, 0x53, 0x7a, 0xc5, 0x3a, 0x21, 0xf4, 0x7c, 0x26, 0xab, 0xb1, 0x25, 0x76, 0x6a, 0x4f,
0xdf, 0x7e, 0xce, 0xa4, 0xf5, 0x98, 0x97, 0x4b, 0xcd, 0xb7, 0x9f, 0x3f, 0xa5, 0x57, 0xd2, 0xe3, 0x1d, 0xa1, 0xcd, 0x2c, 0x99, 0xd5, 0x67, 0xf4, 0x6a, 0x0f, 0x01, 0x6c, 0x6e, 0x31, 0x74, 0xc4,
0xa6, 0xcc, 0xf0, 0x13, 0x6f, 0x24, 0xc4, 0x0d, 0xa9, 0xf0, 0x89, 0x2a, 0x65, 0x2e, 0x3c, 0xc3, 0x80, 0x4a, 0x66, 0xe5, 0x19, 0xbd, 0xe2, 0xdc, 0xc7, 0x82, 0xc6, 0x53, 0x7a, 0xb5, 0x4b, 0xf9,
0xdf, 0xc6, 0x1f, 0xe7, 0xa0, 0xc1, 0xea, 0x8f, 0x3b, 0x05, 0xce, 0x22, 0xe1, 0x36, 0x9b, 0x8b, 0x61, 0xc0, 0xf3, 0x59, 0xa7, 0xfb, 0xf6, 0x73, 0x26, 0xfd, 0xc7, 0xdc, 0x75, 0x6a, 0xbe, 0xfd,
0xdc, 0x66, 0x1f, 0x0a, 0x46, 0xcb, 0xb7, 0x9d, 0xfc, 0xf5, 0xdb, 0x0e, 0x8e, 0x0d, 0xdf, 0x73, 0xfc, 0x29, 0xbd, 0x92, 0xae, 0x43, 0x65, 0x86, 0x9f, 0x78, 0x23, 0x21, 0xbe, 0x48, 0x05, 0x52,
0x3e, 0x84, 0x2a, 0x9f, 0x18, 0x8c, 0xf5, 0x14, 0x62, 0x03, 0x1c, 0x6b, 0x90, 0x59, 0x41, 0xb2, 0x54, 0x29, 0x73, 0xe1, 0x19, 0xfe, 0x36, 0xfe, 0x38, 0x07, 0x0d, 0x56, 0x7f, 0xdc, 0x79, 0x70,
0xa7, 0xdc, 0x05, 0x4f, 0xd3, 0xad, 0xf3, 0x2e, 0xae, 0xfa, 0x4a, 0xa3, 0x9e, 0x31, 0x0c, 0xa5, 0x16, 0x09, 0xff, 0xdf, 0x5c, 0xe4, 0xff, 0xfb, 0x50, 0x30, 0x64, 0xbe, 0x8d, 0xe5, 0xaf, 0xdf,
0x6b, 0x5c, 0xf0, 0x74, 0xc5, 0xf5, 0x42, 0x52, 0x71, 0x6d, 0xb8, 0x50, 0x61, 0x43, 0x8d, 0x8d, 0xc6, 0x70, 0x6c, 0xf8, 0x1e, 0xf6, 0x21, 0x54, 0xf9, 0xc4, 0x60, 0xec, 0xa7, 0x10, 0x1b, 0xe0,
0xcd, 0xc8, 0x34, 0x97, 0x95, 0x29, 0x13, 0x4e, 0x6c, 0xb6, 0x4f, 0x31, 0xde, 0x9b, 0x17, 0xc2, 0x58, 0x83, 0xcc, 0x0a, 0x92, 0x3d, 0xe5, 0xbe, 0x84, 0x9a, 0xae, 0x9e, 0x77, 0x71, 0xd5, 0x57,
0x89, 0x1d, 0x50, 0x96, 0x11, 0xab, 0xb8, 0xeb, 0x59, 0xa8, 0x09, 0x16, 0x3a, 0xd2, 0x8a, 0x59, 0x1a, 0xfa, 0x8c, 0x61, 0x28, 0x5d, 0xe3, 0x4b, 0xa8, 0x2b, 0xc2, 0x17, 0x92, 0x8a, 0x70, 0xc3,
0x75, 0xbd, 0x23, 0x0e, 0x30, 0xfe, 0x5c, 0x0e, 0x6a, 0xda, 0x9a, 0x45, 0xd3, 0x80, 0xea, 0x4e, 0x85, 0x0a, 0x1b, 0x6a, 0x6c, 0x6c, 0x46, 0xa6, 0xb9, 0xac, 0x4c, 0x99, 0xb0, 0x63, 0xb3, 0xfd,
0xbe, 0xc0, 0xe3, 0x2b, 0x20, 0x36, 0x1e, 0xfb, 0x37, 0xcc, 0xc6, 0x28, 0x36, 0x40, 0x5b, 0x62, 0x8c, 0xf1, 0xe8, 0xbc, 0x10, 0x76, 0xec, 0x80, 0xb2, 0x8c, 0x58, 0xc5, 0x5d, 0xcf, 0x42, 0xcd,
0x2a, 0x63, 0xca, 0x7c, 0x4c, 0x1f, 0x25, 0xdb, 0x25, 0xe7, 0x2f, 0xfb, 0xbd, 0xbd, 0x00, 0x45, 0xb2, 0xd0, 0xb9, 0x56, 0xcc, 0xaa, 0xeb, 0x1d, 0x71, 0x80, 0xf1, 0x17, 0x72, 0x50, 0xd3, 0xd6,
0x46, 0x6a, 0x3c, 0x86, 0x65, 0xad, 0x1a, 0x5c, 0x5f, 0xf3, 0xaa, 0x1d, 0x60, 0xfc, 0xa2, 0x4a, 0x2c, 0x9a, 0x1a, 0x54, 0x77, 0xf2, 0x05, 0x1e, 0x5f, 0x01, 0xb1, 0xf1, 0xd8, 0xbf, 0x61, 0x36,
0xcc, 0xca, 0xe0, 0xb6, 0x76, 0xe9, 0xed, 0x48, 0xc7, 0xbc, 0x5f, 0x84, 0x57, 0x25, 0x07, 0x61, 0x46, 0xb1, 0x01, 0xda, 0x12, 0x53, 0x19, 0x53, 0xe6, 0x63, 0xfa, 0x2d, 0xd9, 0x2e, 0x39, 0x7f,
0xcf, 0xbc, 0xa2, 0x03, 0x9e, 0xf1, 0xab, 0x39, 0x58, 0xd1, 0xb2, 0xdf, 0x73, 0x5c, 0x7b, 0xe2, 0xd9, 0xef, 0xed, 0x05, 0x28, 0x32, 0x52, 0xe3, 0x31, 0x2c, 0x6b, 0xd5, 0xe0, 0xfa, 0x9f, 0x57,
0xfc, 0x18, 0x65, 0x94, 0xc0, 0x39, 0x73, 0x13, 0x05, 0x70, 0xd0, 0xd7, 0x29, 0x80, 0x6d, 0x25, 0xed, 0x00, 0xe3, 0xe7, 0x55, 0x62, 0x56, 0x06, 0xb7, 0xdd, 0x4b, 0xb7, 0x4d, 0x3a, 0xe6, 0xfd,
0xdc, 0xbd, 0x9a, 0xbb, 0xe8, 0x8b, 0xed, 0x13, 0x10, 0x66, 0xda, 0xcf, 0x87, 0x97, 0xc6, 0x5f, 0x22, 0xdc, 0x43, 0x39, 0x08, 0x7b, 0xe6, 0x15, 0x3d, 0x09, 0x8d, 0x5f, 0xce, 0xc1, 0x8a, 0x96,
0xcb, 0xc3, 0xaa, 0xa8, 0x02, 0x7a, 0xc1, 0x3b, 0x4c, 0x34, 0x3d, 0x0c, 0xce, 0xc8, 0xe7, 0xd0, 0xfd, 0x9e, 0xe3, 0xda, 0x13, 0xe7, 0xc7, 0xb8, 0x8d, 0x05, 0xce, 0x99, 0x9b, 0x28, 0x80, 0x83,
0x60, 0xdd, 0x67, 0xf9, 0xf4, 0xcc, 0x09, 0x42, 0x2a, 0xdd, 0x00, 0x32, 0xb8, 0x31, 0x93, 0x50, 0xbe, 0x4e, 0x01, 0xe4, 0x2e, 0xd4, 0xb9, 0x9f, 0x38, 0xbf, 0x6b, 0x20, 0xb6, 0x59, 0x40, 0x98,
0x18, 0xa9, 0x29, 0x28, 0xc9, 0x63, 0xa8, 0x61, 0x52, 0xae, 0x32, 0x13, 0x63, 0xd5, 0x4a, 0x27, 0x69, 0x3f, 0x1f, 0x5e, 0x1a, 0x7f, 0x2d, 0x0f, 0xab, 0xa2, 0x0a, 0xe8, 0xce, 0xef, 0x30, 0x51,
0xe4, 0x63, 0xb1, 0x7f, 0xc3, 0x84, 0x20, 0x1a, 0x99, 0xc7, 0x50, 0xc3, 0x61, 0xbe, 0xc0, 0xbe, 0xf7, 0x30, 0x38, 0x23, 0x9f, 0x43, 0x83, 0x75, 0x9f, 0xe5, 0xd3, 0x33, 0x27, 0x08, 0xa9, 0x74,
0x4e, 0x30, 0xbb, 0xd4, 0x58, 0xb0, 0xc4, 0xb3, 0x68, 0x64, 0xda, 0xd0, 0xe0, 0xec, 0x4e, 0xf4, 0x2b, 0xc8, 0xe0, 0xc6, 0x4c, 0x92, 0x61, 0xa4, 0xa6, 0xa0, 0x24, 0x8f, 0xa1, 0x86, 0x49, 0xb9,
0xa4, 0x70, 0x9d, 0xdd, 0x4c, 0x27, 0x97, 0x7d, 0xcd, 0x2a, 0x3f, 0xd3, 0xbe, 0xb7, 0xab, 0x50, 0x0a, 0x4e, 0x8c, 0x55, 0x2b, 0x9d, 0x90, 0x8f, 0xc5, 0xfe, 0x0d, 0x13, 0x82, 0x68, 0x64, 0x1e,
0x0e, 0x7d, 0xe7, 0xec, 0x8c, 0xfa, 0xc6, 0xba, 0xea, 0x1a, 0xc6, 0xc7, 0xe9, 0x20, 0xa4, 0x33, 0x43, 0x0d, 0x87, 0xf9, 0x02, 0xfb, 0x3a, 0xc1, 0xec, 0x52, 0x63, 0xc1, 0x12, 0xcf, 0xa2, 0x91,
0x76, 0xe6, 0x30, 0xfe, 0x59, 0x0e, 0x6a, 0x82, 0x33, 0xff, 0xc4, 0x1e, 0x06, 0x9b, 0x09, 0xe5, 0x69, 0x43, 0x83, 0xb3, 0x3b, 0xd1, 0x93, 0xc2, 0x07, 0x78, 0x33, 0x9d, 0x5c, 0xf6, 0x35, 0xab,
0x6a, 0x55, 0xd3, 0xa5, 0xbe, 0x03, 0x4b, 0x53, 0x76, 0x40, 0x62, 0x07, 0xf8, 0x98, 0x7b, 0xc1, 0xfc, 0x4c, 0xfb, 0xde, 0xae, 0x42, 0x39, 0xf4, 0x9d, 0xb3, 0x33, 0xea, 0x1b, 0xeb, 0xaa, 0x6b,
0xa2, 0x04, 0x0b, 0xd9, 0x7f, 0x0b, 0x56, 0xf0, 0x28, 0x10, 0x58, 0xa1, 0x33, 0xb1, 0x24, 0x52, 0x18, 0x1f, 0xa7, 0x83, 0x90, 0xce, 0xd8, 0x19, 0xc6, 0xf8, 0xe7, 0x39, 0xa8, 0x09, 0xce, 0xfc,
0x5c, 0x05, 0x59, 0xe6, 0xa8, 0xa1, 0x33, 0x39, 0x14, 0x08, 0x26, 0x11, 0x07, 0xa1, 0x7d, 0x46, 0x13, 0x7b, 0x2c, 0x6c, 0x26, 0x94, 0xb5, 0x55, 0x4d, 0x37, 0xfb, 0x0e, 0x2c, 0x4d, 0xd9, 0x81,
0x05, 0x77, 0xe0, 0x1f, 0xec, 0xd0, 0x95, 0x38, 0xbb, 0xcb, 0x43, 0xd7, 0xff, 0x5e, 0x86, 0x8d, 0xcb, 0x09, 0xaf, 0xe2, 0xee, 0x0a, 0x8b, 0x12, 0x2c, 0xce, 0x12, 0x5b, 0xb0, 0x82, 0x47, 0x8b,
0x14, 0x4a, 0x1c, 0xba, 0x94, 0x35, 0x77, 0xe2, 0x4c, 0x4f, 0x3c, 0x65, 0x4d, 0xc8, 0x69, 0xd6, 0xc0, 0x0a, 0x9d, 0x89, 0x25, 0x91, 0xe2, 0x4e, 0xcb, 0x32, 0x47, 0x0d, 0x9d, 0xc9, 0xa1, 0x40,
0xdc, 0x03, 0x86, 0x91, 0xd6, 0x04, 0x0a, 0x6b, 0x72, 0xca, 0xa2, 0x39, 0x40, 0x1d, 0xef, 0xf3, 0x30, 0x09, 0x3b, 0x08, 0xed, 0x33, 0x2a, 0xb8, 0x03, 0xff, 0x60, 0x87, 0xb8, 0x84, 0x2e, 0x40,
0x78, 0xf8, 0xfc, 0x30, 0xbe, 0x0d, 0x26, 0x8b, 0x93, 0x70, 0x5d, 0xde, 0x5b, 0x99, 0xa5, 0x60, 0x1e, 0xe2, 0xfe, 0xcf, 0x32, 0x6c, 0xa4, 0x50, 0xe2, 0x10, 0xa7, 0xac, 0xc3, 0x13, 0x67, 0x7a,
0x01, 0xf9, 0xff, 0xa1, 0xa5, 0x56, 0x86, 0x38, 0x8b, 0x68, 0xba, 0x0a, 0x56, 0xd2, 0x7b, 0x2f, 0xe2, 0x29, 0xeb, 0x44, 0x4e, 0xb3, 0x0e, 0x1f, 0x30, 0x8c, 0xb4, 0x4e, 0x50, 0x58, 0x93, 0x53,
0x29, 0x29, 0xa6, 0xa7, 0x45, 0x81, 0x70, 0x5d, 0x2e, 0x2a, 0x9e, 0xa1, 0x2a, 0xeb, 0x02, 0x5e, 0x16, 0xcd, 0x0b, 0x4a, 0x5d, 0x90, 0xc7, 0xc3, 0xec, 0x87, 0xf1, 0x6d, 0x30, 0x59, 0x9c, 0x84,
0x97, 0x65, 0xe1, 0xd9, 0x22, 0x5d, 0x62, 0xf1, 0x95, 0xda, 0x86, 0x3a, 0xe8, 0x58, 0xb1, 0xe6, 0xeb, 0x72, 0xe1, 0xca, 0x2c, 0x05, 0x0b, 0xc8, 0x9f, 0x85, 0x96, 0x5a, 0x19, 0xe2, 0x6c, 0xa3,
0x2d, 0x91, 0xb1, 0x42, 0xe9, 0xe5, 0x9e, 0xc3, 0xfa, 0x73, 0xdb, 0x09, 0x65, 0x1b, 0x35, 0x55, 0xe9, 0x3e, 0x58, 0x49, 0xef, 0xbd, 0xa4, 0xa4, 0x98, 0xde, 0x17, 0x45, 0xaf, 0x75, 0xb9, 0xa8,
0x49, 0x09, 0xcb, 0x7b, 0xf8, 0x92, 0xf2, 0xbe, 0xe4, 0x89, 0x63, 0xa7, 0xad, 0xd5, 0xe7, 0x69, 0x78, 0x86, 0xaa, 0xac, 0x0b, 0x78, 0x5d, 0x96, 0x85, 0x67, 0x95, 0x74, 0x89, 0xc5, 0x57, 0x6a,
0x60, 0xb0, 0xf9, 0x77, 0x0a, 0xb0, 0x18, 0xcf, 0x85, 0xb1, 0x1e, 0xb1, 0x5d, 0x49, 0x21, 0x5a, 0x1b, 0xea, 0xb4, 0x63, 0xc5, 0x9a, 0xb7, 0x44, 0xc6, 0x0a, 0xa5, 0x97, 0x7b, 0x0e, 0xeb, 0xcf,
0x48, 0xf6, 0xc2, 0xd2, 0xd5, 0xe3, 0xc2, 0x73, 0xda, 0x06, 0x97, 0xcf, 0xb0, 0xc1, 0xe9, 0xa6, 0x6d, 0x27, 0x94, 0x6d, 0xd4, 0x54, 0x2f, 0x25, 0x2c, 0xef, 0xe1, 0x4b, 0xca, 0xfb, 0x92, 0x27,
0xaf, 0xc2, 0xcb, 0x3c, 0x21, 0x8a, 0xaf, 0xe4, 0x09, 0x51, 0xca, 0xf2, 0x84, 0xf8, 0xe8, 0x5a, 0x8e, 0x9d, 0xde, 0x56, 0x9f, 0xa7, 0x81, 0xc1, 0xe6, 0xdf, 0x29, 0xc0, 0x62, 0x3c, 0x17, 0xc6,
0xd3, 0x39, 0x57, 0x60, 0x67, 0x9a, 0xcd, 0x1f, 0x5d, 0x6f, 0x36, 0xe7, 0x22, 0xf9, 0x75, 0x26, 0x7a, 0xc4, 0x76, 0x25, 0x05, 0x69, 0x71, 0x02, 0x10, 0x96, 0xb3, 0x1e, 0x17, 0xa0, 0xd3, 0x36,
0x73, 0xcd, 0xe0, 0x5f, 0xb9, 0xc6, 0x60, 0xa5, 0xb9, 0x00, 0x64, 0x98, 0xcc, 0xab, 0x5f, 0xc3, 0xbd, 0x7c, 0x86, 0x4d, 0x4f, 0x37, 0xa5, 0x15, 0x5e, 0xe6, 0x59, 0x51, 0x7c, 0x25, 0xcf, 0x8a,
0x64, 0xbe, 0xf9, 0xc7, 0x39, 0x20, 0xe9, 0xd5, 0x41, 0x9e, 0x70, 0xf3, 0xa6, 0x4b, 0x27, 0x82, 0x52, 0x96, 0x67, 0xc5, 0x47, 0xd7, 0x9a, 0xe2, 0xb9, 0x42, 0x3c, 0xd3, 0x0c, 0xff, 0xe8, 0x7a,
0x73, 0xbf, 0xff, 0x6a, 0x2b, 0x4c, 0x4e, 0x08, 0x99, 0x9a, 0x7c, 0x00, 0x2b, 0xfa, 0x85, 0x35, 0x33, 0x3c, 0xd7, 0x95, 0x5f, 0x67, 0x82, 0xd7, 0x1c, 0x08, 0x2a, 0xd7, 0x18, 0xc0, 0x34, 0x97,
0x5d, 0x15, 0xd1, 0x30, 0x89, 0x8e, 0x8a, 0x94, 0x6a, 0x9a, 0xdb, 0x49, 0xf1, 0xa5, 0x6e, 0x27, 0x82, 0x0c, 0x13, 0x7c, 0xf5, 0x6b, 0x98, 0xe0, 0x37, 0xff, 0x38, 0x07, 0x24, 0xbd, 0x3a, 0xc8,
0xa5, 0x97, 0xba, 0x9d, 0x2c, 0xc4, 0xdd, 0x4e, 0x36, 0xff, 0x65, 0x0e, 0x56, 0x32, 0x26, 0xf1, 0x13, 0x6e, 0x2e, 0x75, 0xe9, 0x44, 0x70, 0xee, 0xf7, 0x5f, 0x6d, 0x85, 0xc9, 0x09, 0x21, 0x53,
0x37, 0xd7, 0x66, 0x36, 0xf7, 0x62, 0x6c, 0x2d, 0x2f, 0xe6, 0x9e, 0xce, 0xd1, 0x0e, 0xa4, 0x22, 0x93, 0x0f, 0x60, 0x45, 0xbf, 0x79, 0xa7, 0xab, 0x36, 0x1a, 0x26, 0xd1, 0x51, 0x91, 0x92, 0x4e,
0x96, 0x0d, 0x45, 0x20, 0x76, 0xaa, 0xfb, 0x2f, 0xe3, 0x2e, 0x51, 0x0a, 0x53, 0x4f, 0xbe, 0xf9, 0x73, 0x63, 0x29, 0xbe, 0xd4, 0x8d, 0xa5, 0xf4, 0x52, 0x37, 0x96, 0x85, 0xb8, 0x1b, 0xcb, 0xe6,
0x77, 0xf3, 0x50, 0xd3, 0x90, 0xac, 0x17, 0xf9, 0x94, 0xd5, 0x1c, 0x32, 0xb9, 0x6c, 0x89, 0x8a, 0xbf, 0xca, 0xc1, 0x4a, 0xc6, 0x24, 0xfe, 0xe6, 0xda, 0xcc, 0xe6, 0x5e, 0x8c, 0xad, 0xe5, 0xc5,
0x14, 0xf4, 0xae, 0xc7, 0xc9, 0x89, 0x78, 0xbe, 0xb8, 0x84, 0x20, 0x89, 0x04, 0x5b, 0xb0, 0x22, 0xdc, 0xd3, 0x39, 0xda, 0x81, 0x54, 0xec, 0xb2, 0xa1, 0x08, 0xc4, 0x4e, 0x75, 0xff, 0x65, 0xdc,
0x4d, 0xcf, 0x34, 0xf2, 0x1b, 0x17, 0x7b, 0x8d, 0xf0, 0x22, 0x10, 0x95, 0x44, 0xfa, 0x0f, 0xe4, 0x25, 0x4a, 0x61, 0xea, 0xc9, 0x37, 0xff, 0x6e, 0x1e, 0x6a, 0x1a, 0x92, 0xf5, 0x22, 0x9f, 0xb2,
0x19, 0x37, 0x1a, 0x3b, 0xcd, 0x94, 0xb7, 0x2c, 0xfc, 0x17, 0xc4, 0x20, 0xb2, 0x79, 0xfe, 0x21, 0x9a, 0x83, 0x27, 0x97, 0x2d, 0x51, 0x31, 0x83, 0xd7, 0x04, 0x70, 0x72, 0x22, 0x9e, 0x2f, 0x2e,
0xac, 0x29, 0x07, 0x86, 0x58, 0x0a, 0x6e, 0x30, 0x22, 0xd2, 0x51, 0x41, 0x4b, 0xf2, 0x3d, 0xb8, 0x21, 0x48, 0x22, 0xc1, 0x16, 0xac, 0x48, 0x53, 0x36, 0x8d, 0x1c, 0xe0, 0xc5, 0x5e, 0x23, 0xbc,
0x9d, 0xa8, 0x53, 0x22, 0x29, 0x77, 0x7c, 0xbb, 0x19, 0xab, 0x9d, 0x9e, 0xc3, 0xe6, 0x9f, 0x81, 0x12, 0x44, 0x25, 0x91, 0xfe, 0x03, 0x79, 0xce, 0x8d, 0xc6, 0x4e, 0x33, 0x0d, 0x2e, 0x0b, 0x7f,
0x46, 0x8c, 0x51, 0x7e, 0x73, 0x43, 0x9e, 0x54, 0x5e, 0xf1, 0x1e, 0xd5, 0x95, 0x57, 0x9b, 0xff, 0x08, 0x31, 0x88, 0x6c, 0x9e, 0x7f, 0x08, 0x6b, 0xca, 0x21, 0x22, 0x96, 0x82, 0x1b, 0xa0, 0x88,
0xb3, 0x00, 0x24, 0xcd, 0xab, 0x7f, 0x96, 0x55, 0x48, 0x4f, 0xcc, 0x42, 0xc6, 0xc4, 0xfc, 0x7f, 0x74, 0x7c, 0xd0, 0x92, 0x7c, 0x0f, 0x6e, 0x27, 0xea, 0x94, 0x48, 0xca, 0x35, 0x2d, 0x37, 0x63,
0x26, 0x3f, 0x44, 0x3a, 0x54, 0xcd, 0x7f, 0x80, 0x2f, 0xce, 0xa6, 0x42, 0xc8, 0x5a, 0x7c, 0x9a, 0xb5, 0xd3, 0x73, 0xd8, 0xfc, 0x73, 0xd0, 0x88, 0x31, 0xca, 0x6f, 0x6e, 0xc8, 0x93, 0xca, 0x30,
0xf4, 0xb2, 0xaa, 0xc4, 0xee, 0x5c, 0x6a, 0x02, 0x54, 0xc2, 0xd9, 0xea, 0x18, 0x16, 0x6c, 0x77, 0xde, 0xa3, 0xba, 0x32, 0x6c, 0xf3, 0x7f, 0x14, 0x80, 0xa4, 0x79, 0xf5, 0x4f, 0xb3, 0x0a, 0xe9,
0x74, 0xee, 0xf9, 0x82, 0x0f, 0xfe, 0xdc, 0xd7, 0xde, 0x3e, 0xb7, 0xda, 0x98, 0x1e, 0xa5, 0x36, 0x89, 0x59, 0xc8, 0x98, 0x98, 0xff, 0xdf, 0xe4, 0x87, 0x48, 0x27, 0xab, 0xf9, 0x23, 0xf0, 0xc5,
0x53, 0x64, 0x66, 0x7c, 0x08, 0x35, 0x0d, 0x4c, 0xaa, 0x50, 0x3a, 0xe8, 0x1e, 0x6e, 0xf7, 0x9b, 0xd9, 0x54, 0x08, 0x59, 0x8b, 0x4f, 0x93, 0x5e, 0x5b, 0x95, 0xd8, 0xe5, 0x51, 0x4d, 0x80, 0x4a,
0x37, 0x48, 0x03, 0xaa, 0x66, 0x67, 0xa7, 0xff, 0x45, 0xc7, 0xec, 0xec, 0x36, 0x73, 0xa4, 0x02, 0x38, 0x6f, 0x1d, 0xc3, 0x82, 0xed, 0x8e, 0xce, 0x3d, 0x5f, 0xf0, 0xc1, 0x9f, 0xf9, 0xda, 0xdb,
0xc5, 0x83, 0xfe, 0x60, 0xd8, 0xcc, 0x1b, 0x9b, 0xd0, 0x12, 0x39, 0xa6, 0xad, 0x49, 0xbf, 0x55, 0xe7, 0x56, 0x1b, 0xd3, 0xa3, 0xd4, 0x66, 0x8a, 0xcc, 0x8c, 0x0f, 0xa1, 0xa6, 0x81, 0x49, 0x15,
0x54, 0x3a, 0x50, 0x44, 0x8a, 0x43, 0xfe, 0x47, 0x50, 0xd7, 0xc5, 0x1b, 0x31, 0x23, 0x12, 0x2e, 0x4a, 0x07, 0xdd, 0xc3, 0xed, 0x7e, 0xf3, 0x06, 0x69, 0x40, 0xd5, 0xec, 0xec, 0xf4, 0xbf, 0xe8,
0x2c, 0xec, 0x78, 0xef, 0x69, 0xbc, 0x7a, 0x07, 0xb8, 0x03, 0xc3, 0x58, 0x25, 0xcb, 0xc7, 0xe4, 0x98, 0x9d, 0xdd, 0x66, 0x8e, 0x54, 0xa0, 0x78, 0xd0, 0x1f, 0x0c, 0x9b, 0x79, 0x63, 0x13, 0x5a,
0xd6, 0x0c, 0x4b, 0x30, 0x9e, 0x8f, 0x62, 0xd3, 0xf0, 0xff, 0x83, 0xc5, 0xb8, 0xe5, 0x44, 0x70, 0x22, 0xc7, 0xb4, 0x75, 0xea, 0x37, 0x8b, 0x4a, 0xa7, 0x8a, 0x48, 0x71, 0xc8, 0xff, 0x08, 0xea,
0xa4, 0xac, 0x23, 0x2b, 0x4b, 0x1d, 0x33, 0xa5, 0x90, 0xef, 0x41, 0x33, 0x69, 0x79, 0x11, 0xc2, 0xba, 0x78, 0x23, 0x66, 0x44, 0xc2, 0x25, 0x86, 0x1d, 0xef, 0x3d, 0x8d, 0x57, 0xef, 0x00, 0x77,
0xf3, 0x35, 0xe9, 0x97, 0x9c, 0xb8, 0x31, 0x86, 0xec, 0xc3, 0x6a, 0x96, 0x80, 0x87, 0xf3, 0xe3, 0x88, 0x18, 0xab, 0x64, 0xf9, 0x98, 0xdc, 0x9a, 0x61, 0x59, 0xc6, 0xf3, 0x51, 0x6c, 0x1a, 0xfe,
0x7a, 0x35, 0x07, 0x49, 0x0b, 0x71, 0xe4, 0x33, 0x61, 0x81, 0x2b, 0xe1, 0xf0, 0xbf, 0x15, 0x2f, 0x19, 0x58, 0x8c, 0x5b, 0x62, 0x04, 0x47, 0xca, 0x3a, 0xb2, 0xb2, 0xd4, 0x31, 0xd3, 0x0c, 0xf9,
0x5f, 0xeb, 0xec, 0x2d, 0xfe, 0x4f, 0xb3, 0xc5, 0x5d, 0x00, 0x44, 0x30, 0xd2, 0x84, 0x7a, 0xff, 0x1e, 0x34, 0x93, 0x96, 0x1c, 0x21, 0x3c, 0x5f, 0x93, 0x7e, 0xc9, 0x89, 0x1b, 0x77, 0xc8, 0x3e,
0xa8, 0xd3, 0xb3, 0x76, 0xf6, 0xdb, 0xbd, 0x5e, 0xe7, 0xa0, 0x79, 0x83, 0x10, 0x58, 0x44, 0x2f, 0xac, 0x66, 0x09, 0x78, 0x38, 0x3f, 0xae, 0x57, 0x73, 0x90, 0xb4, 0x10, 0x47, 0x3e, 0x13, 0x16,
0x8c, 0x5d, 0x05, 0xcb, 0x31, 0x98, 0x30, 0x8d, 0x4a, 0x58, 0x9e, 0xac, 0x42, 0xb3, 0xdb, 0x4b, 0xbd, 0x12, 0x0e, 0xff, 0x5b, 0xf1, 0xf2, 0xb5, 0xce, 0xde, 0xe2, 0xff, 0x34, 0xdb, 0xde, 0x05,
0x40, 0x0b, 0xa4, 0x05, 0xab, 0x47, 0x1d, 0xee, 0xb8, 0x11, 0xcb, 0xb7, 0xc8, 0x0e, 0x0d, 0xa2, 0x40, 0x04, 0x23, 0x4d, 0xa8, 0xf7, 0x8f, 0x3a, 0x3d, 0x6b, 0x67, 0xbf, 0xdd, 0xeb, 0x75, 0x0e,
0xb9, 0xec, 0xd0, 0xf0, 0xa5, 0x3d, 0x99, 0xd0, 0x50, 0xac, 0x03, 0x29, 0x4b, 0xff, 0xf5, 0x1c, 0x9a, 0x37, 0x08, 0x81, 0x45, 0xf4, 0xea, 0xd8, 0x55, 0xb0, 0x1c, 0x83, 0x09, 0x53, 0xab, 0x84,
0xac, 0x25, 0x10, 0x91, 0xf9, 0x82, 0x4b, 0xd2, 0x71, 0x19, 0xba, 0x8e, 0x40, 0xb9, 0x9a, 0xde, 0xe5, 0xc9, 0x2a, 0x34, 0xbb, 0xbd, 0x04, 0xb4, 0x40, 0x5a, 0xb0, 0x7a, 0xd4, 0xe1, 0x8e, 0x20,
0x85, 0x65, 0xa5, 0x4d, 0x4b, 0xec, 0x4a, 0x4d, 0x85, 0x90, 0xc4, 0x1f, 0xc0, 0x8a, 0xa6, 0x94, 0xb1, 0x7c, 0x8b, 0xec, 0xd0, 0x20, 0x9a, 0xcb, 0x0e, 0x0d, 0x5f, 0xda, 0x93, 0x09, 0x0d, 0xc5,
0x4b, 0xf0, 0x0a, 0xa2, 0xa1, 0x44, 0x02, 0x63, 0x0b, 0x16, 0x84, 0xe2, 0xb2, 0x09, 0x05, 0x79, 0x3a, 0x90, 0xb2, 0xf4, 0x5f, 0xcf, 0xc1, 0x5a, 0x02, 0x11, 0x99, 0x43, 0xb8, 0x24, 0x1d, 0x97,
0x93, 0xa5, 0x68, 0xb2, 0x9f, 0x84, 0x40, 0x71, 0x1a, 0xf9, 0xff, 0xe2, 0x6f, 0x63, 0x43, 0x5d, 0xa1, 0xeb, 0x08, 0x94, 0xab, 0xe9, 0x5d, 0x58, 0x56, 0xda, 0xb4, 0xc4, 0xae, 0xd4, 0x54, 0x08,
0x49, 0x4b, 0xb4, 0xf2, 0x57, 0x8b, 0xb0, 0x9e, 0xc4, 0x28, 0x8f, 0xf8, 0x72, 0xac, 0x81, 0xdc, 0x49, 0xfc, 0x01, 0xac, 0x68, 0x4a, 0xb9, 0x04, 0xaf, 0x20, 0x1a, 0x4a, 0x24, 0x30, 0xb6, 0x60,
0x90, 0x25, 0x40, 0xe4, 0xe3, 0xc4, 0xec, 0x89, 0x35, 0x11, 0x49, 0xf5, 0x99, 0x22, 0x1b, 0xfa, 0x41, 0x28, 0x2f, 0x9b, 0x50, 0x90, 0x37, 0x72, 0x8a, 0x26, 0xfb, 0x49, 0x08, 0x14, 0xa7, 0x91,
0x30, 0x29, 0x23, 0xf2, 0x29, 0xdf, 0x90, 0xb7, 0x00, 0xb0, 0x4d, 0x09, 0x91, 0xf1, 0xe3, 0x94, 0x3f, 0x31, 0xfe, 0x36, 0x36, 0xd4, 0xdd, 0xba, 0x44, 0x2b, 0x7f, 0xb9, 0x08, 0xeb, 0x49, 0x8c,
0xc8, 0x58, 0xcc, 0x4a, 0x94, 0x90, 0x20, 0x3b, 0xb0, 0x11, 0x79, 0xba, 0xc6, 0xcb, 0x2c, 0x65, 0xf2, 0xb0, 0x2f, 0xc7, 0x1a, 0xc8, 0x0d, 0x63, 0x02, 0x44, 0x3e, 0x4e, 0xcc, 0x9e, 0x58, 0x13,
0x25, 0x5f, 0x53, 0xd4, 0x07, 0x7a, 0xe1, 0x4f, 0xa0, 0x15, 0x65, 0x93, 0xa8, 0xc6, 0x42, 0x56, 0x91, 0x54, 0x9f, 0x29, 0xb2, 0xa1, 0x0f, 0x93, 0x32, 0x22, 0x9f, 0xf2, 0x0d, 0x79, 0xab, 0x00,
0x3e, 0xeb, 0x8a, 0xdc, 0x8c, 0xd5, 0xe7, 0xfb, 0xb0, 0x19, 0xeb, 0xaf, 0x78, 0x95, 0xca, 0x59, 0xdb, 0x94, 0x10, 0x19, 0x3f, 0x4e, 0x89, 0x8c, 0xc5, 0xac, 0x44, 0x09, 0x09, 0xb2, 0x03, 0x1b,
0x59, 0x6d, 0x68, 0x1d, 0x18, 0xab, 0xd4, 0x01, 0xdc, 0x8a, 0xe5, 0x95, 0xa8, 0x57, 0x25, 0x2b, 0x91, 0xe7, 0x6c, 0xbc, 0xcc, 0x52, 0x56, 0xf2, 0x35, 0x45, 0x7d, 0xa0, 0x17, 0xfe, 0x04, 0x5a,
0xb3, 0x96, 0x96, 0x59, 0xac, 0x66, 0xc6, 0xef, 0x2c, 0x00, 0xf9, 0xc1, 0x9c, 0xfa, 0x57, 0x78, 0x51, 0x36, 0x89, 0x6a, 0x2c, 0x64, 0xe5, 0xb3, 0xae, 0xc8, 0xcd, 0x58, 0x7d, 0xbe, 0x0f, 0x9b,
0x51, 0x35, 0x78, 0x99, 0x0b, 0xbf, 0x54, 0xbc, 0xe5, 0x5f, 0xe9, 0xbe, 0x7a, 0xd6, 0x7d, 0xf1, 0xb1, 0xfe, 0x8a, 0x57, 0xa9, 0x9c, 0x95, 0xd5, 0x86, 0xd6, 0x81, 0xb1, 0x4a, 0x1d, 0xc0, 0xad,
0xe2, 0xcb, 0xef, 0x8b, 0x97, 0x5e, 0x76, 0x5f, 0xfc, 0x4d, 0x68, 0x38, 0x67, 0xae, 0xc7, 0xf6, 0x58, 0x5e, 0x89, 0x7a, 0x55, 0xb2, 0x32, 0x6b, 0x69, 0x99, 0xc5, 0x6a, 0x66, 0xfc, 0xf6, 0x02,
0x35, 0x76, 0xac, 0x09, 0x5a, 0x0b, 0x77, 0x0b, 0xf7, 0xea, 0x66, 0x5d, 0x00, 0xd9, 0xa1, 0x26, 0x90, 0x1f, 0xcc, 0xa9, 0x7f, 0x85, 0x37, 0x6e, 0x83, 0x97, 0x5d, 0x09, 0x90, 0x8a, 0xb7, 0xfc,
0x20, 0x8f, 0x23, 0x22, 0x3a, 0x3e, 0xc3, 0x98, 0x09, 0xfa, 0x8e, 0xd6, 0x19, 0x9f, 0x51, 0xa1, 0x2b, 0x5d, 0xbc, 0xcf, 0xba, 0xf8, 0x5e, 0x7c, 0xf9, 0xc5, 0xf7, 0xd2, 0xcb, 0x2e, 0xbe, 0xbf,
0x67, 0xc4, 0x09, 0x2b, 0x13, 0x33, 0x78, 0x40, 0xde, 0x82, 0xc5, 0xc0, 0x9b, 0xb3, 0x53, 0xa2, 0x09, 0x0d, 0xe7, 0xcc, 0xf5, 0xd8, 0xbe, 0xc6, 0x8e, 0x35, 0x41, 0x6b, 0xe1, 0x6e, 0xe1, 0x5e,
0xec, 0x06, 0x6e, 0x6e, 0xae, 0x73, 0xe8, 0x91, 0x74, 0x3e, 0x58, 0x99, 0x07, 0xd4, 0x9a, 0x3a, 0xdd, 0xac, 0x0b, 0x20, 0x3b, 0xd4, 0x04, 0xe4, 0x71, 0x44, 0x44, 0xc7, 0x67, 0x18, 0xfc, 0x41,
0x41, 0xc0, 0x64, 0xed, 0x91, 0xe7, 0x86, 0xbe, 0x37, 0x11, 0x16, 0xe4, 0xe5, 0x79, 0x40, 0x0f, 0xdf, 0xd1, 0x3a, 0xe3, 0x33, 0x2a, 0xf4, 0x8c, 0x38, 0x61, 0x65, 0x62, 0x06, 0x0f, 0xc8, 0x5b,
0x39, 0x66, 0x87, 0x23, 0xc8, 0xc7, 0x51, 0x95, 0x66, 0xb6, 0xe3, 0x07, 0x2d, 0xc0, 0x2a, 0xc9, 0xb0, 0x18, 0x78, 0x73, 0x76, 0x4a, 0x94, 0xdd, 0xc0, 0xcd, 0xd7, 0x75, 0x0e, 0x3d, 0x92, 0xce,
0x96, 0xe2, 0x61, 0xcc, 0x76, 0x7c, 0x55, 0x17, 0xf6, 0x11, 0x24, 0xee, 0xb1, 0xd7, 0x92, 0xf7, 0x0c, 0x2b, 0xf3, 0x80, 0x5a, 0x53, 0x27, 0x08, 0x98, 0xac, 0x3d, 0xf2, 0xdc, 0xd0, 0xf7, 0x26,
0xd8, 0x7f, 0x25, 0xfb, 0x1e, 0x3b, 0xf7, 0xa2, 0x7b, 0x20, 0xb2, 0x4e, 0x0f, 0xf1, 0xd7, 0xba, 0xc2, 0x22, 0xbd, 0x3c, 0x0f, 0xe8, 0x21, 0xc7, 0xec, 0x70, 0x04, 0xf9, 0x38, 0xaa, 0xd2, 0xcc,
0xce, 0x9e, 0xbe, 0x9e, 0xbf, 0xf8, 0x75, 0xae, 0xe7, 0x2f, 0x65, 0x5d, 0xcf, 0xff, 0x10, 0x6a, 0x76, 0xfc, 0xa0, 0x05, 0x58, 0x25, 0xd9, 0x52, 0x3c, 0x8c, 0xd9, 0x8e, 0xaf, 0xea, 0xc2, 0x3e,
0x78, 0x2b, 0xda, 0x3a, 0x47, 0x5f, 0x5a, 0x6e, 0x11, 0x6f, 0xea, 0xd7, 0xa6, 0xf7, 0x1d, 0x37, 0x82, 0xc4, 0x85, 0xfc, 0x5a, 0xf2, 0x42, 0xfe, 0x2f, 0x65, 0x5f, 0xc8, 0xe7, 0x5e, 0x79, 0x0f,
0x34, 0xc1, 0x97, 0x3f, 0x83, 0xf4, 0x4d, 0xf9, 0xe5, 0x57, 0xba, 0x29, 0xff, 0xcd, 0x5c, 0x83, 0x44, 0xd6, 0xe9, 0x21, 0xfe, 0x5a, 0xf7, 0xf2, 0xd3, 0x71, 0x06, 0x16, 0xbf, 0x4e, 0x9c, 0x81,
0x17, 0xb7, 0xb7, 0xb7, 0xa0, 0x22, 0xc7, 0x89, 0x31, 0xdb, 0x53, 0xdf, 0x9b, 0x4a, 0x2b, 0x1c, 0xa5, 0xac, 0x38, 0x03, 0x1f, 0x42, 0x0d, 0xaf, 0x77, 0x5b, 0xe7, 0xe8, 0x9b, 0xcb, 0x2d, 0xec,
0xfb, 0x4d, 0x16, 0x21, 0x1f, 0x7a, 0x22, 0x71, 0x3e, 0xf4, 0x8c, 0x5f, 0x82, 0x9a, 0x36, 0xd5, 0x4d, 0xfd, 0xfe, 0xf7, 0xbe, 0xe3, 0x86, 0x26, 0xf8, 0xf2, 0x67, 0x90, 0xbe, 0xf2, 0xbf, 0xfc,
0xc8, 0x1b, 0x5c, 0x4d, 0xcd, 0x0e, 0xda, 0xe2, 0xa0, 0xc0, 0x7b, 0xb1, 0x2a, 0xa0, 0xdd, 0x31, 0x4a, 0x57, 0xfe, 0xbf, 0x99, 0xfb, 0xfc, 0xe2, 0x1a, 0xfa, 0x16, 0x54, 0xe4, 0x38, 0x31, 0x66,
0xdb, 0x3c, 0xc6, 0x8e, 0x4f, 0x31, 0xa6, 0x85, 0xe5, 0xd3, 0x0b, 0xea, 0x07, 0xd2, 0x2a, 0xda, 0x7b, 0xea, 0x7b, 0x53, 0x69, 0xad, 0x63, 0xbf, 0xc9, 0x22, 0xe4, 0x43, 0x4f, 0x24, 0xce, 0x87,
0x54, 0x08, 0x93, 0xc3, 0x8d, 0x5f, 0x86, 0x95, 0xd8, 0xd8, 0x0a, 0xf6, 0xfd, 0x16, 0x2c, 0x60, 0x9e, 0xf1, 0x0b, 0x50, 0xd3, 0xa6, 0x1a, 0x79, 0x83, 0xab, 0xa9, 0xd9, 0x41, 0x5b, 0x1c, 0x14,
0xbf, 0x49, 0xd7, 0x9b, 0xf8, 0x75, 0x74, 0x81, 0xc3, 0xf8, 0x1d, 0xdc, 0xa0, 0x6b, 0xcd, 0x7c, 0x78, 0x2f, 0x56, 0x05, 0xb4, 0x3b, 0x66, 0x9b, 0xc7, 0xd8, 0xf1, 0x29, 0x06, 0xe7, 0xb0, 0x7c,
0xef, 0x04, 0x0b, 0xc9, 0x99, 0x35, 0x01, 0x3b, 0xf2, 0xbd, 0x13, 0xe3, 0x3f, 0x14, 0xa0, 0xb0, 0x7a, 0x41, 0xfd, 0x40, 0x5a, 0x59, 0x9b, 0x0a, 0x61, 0x72, 0xb8, 0xf1, 0x8b, 0xb0, 0x12, 0x1b,
0xef, 0xcd, 0x74, 0xff, 0xdb, 0x5c, 0xca, 0xff, 0x56, 0x68, 0x0f, 0x2c, 0xa5, 0x1d, 0x10, 0x07, 0x5b, 0xc1, 0xbe, 0xdf, 0x82, 0x05, 0xec, 0x37, 0xe9, 0xca, 0x13, 0xbf, 0x57, 0x2f, 0x70, 0x18,
0x30, 0x34, 0x65, 0x4a, 0x0d, 0xc1, 0x3d, 0x58, 0x64, 0x7c, 0x22, 0xf4, 0x2c, 0x71, 0xef, 0x85, 0x88, 0x84, 0x1b, 0x88, 0xad, 0x99, 0xef, 0x9d, 0x60, 0x21, 0x39, 0xb3, 0x26, 0x60, 0x47, 0xbe,
0xef, 0x70, 0x7c, 0xf1, 0xd9, 0xd3, 0x70, 0xe8, 0xed, 0x71, 0x38, 0x59, 0x85, 0x82, 0x3a, 0x8b, 0x77, 0x62, 0xfc, 0x87, 0x02, 0x14, 0xf6, 0xbd, 0x99, 0xee, 0xcf, 0x9b, 0x4b, 0xf9, 0xf3, 0x0a,
0x22, 0x9a, 0x7d, 0x92, 0x75, 0x58, 0xc0, 0xfb, 0x3a, 0xf2, 0xee, 0xb2, 0xf8, 0x22, 0xef, 0xc3, 0xed, 0x81, 0xa5, 0xb4, 0x03, 0xe2, 0x00, 0x86, 0x26, 0x4f, 0xa9, 0x21, 0xb8, 0x07, 0x8b, 0x8c,
0x4a, 0x3c, 0x5f, 0xce, 0x8a, 0x84, 0xa0, 0xab, 0x67, 0x8c, 0x3c, 0xe9, 0x26, 0x30, 0x3e, 0x12, 0x4f, 0x84, 0x9e, 0x25, 0xee, 0xd1, 0xf0, 0x1d, 0x8e, 0x2f, 0x3e, 0x7b, 0x1a, 0x0e, 0xbd, 0x3d,
0xdd, 0x5e, 0x2e, 0x98, 0xe5, 0x53, 0x4a, 0x11, 0xa5, 0x31, 0xbd, 0x4a, 0x8c, 0xe9, 0xdd, 0x81, 0x0e, 0x27, 0xab, 0x50, 0x50, 0x67, 0x51, 0x44, 0xb3, 0x4f, 0xb2, 0x0e, 0x0b, 0x78, 0xff, 0x47,
0x5a, 0x38, 0xb9, 0xb0, 0x66, 0xf6, 0xd5, 0xc4, 0xb3, 0xe5, 0x25, 0x3d, 0x08, 0x27, 0x17, 0x47, 0x5e, 0xc2, 0x16, 0x5f, 0xe4, 0x7d, 0x58, 0x89, 0xe7, 0xcb, 0x59, 0x91, 0x10, 0x74, 0xf5, 0x8c,
0x1c, 0x42, 0x3e, 0x00, 0x98, 0xce, 0x66, 0x62, 0xed, 0xa1, 0x79, 0x2e, 0x9a, 0xca, 0x87, 0x47, 0x91, 0x27, 0xdd, 0x04, 0xc6, 0x47, 0xa2, 0x6b, 0xd8, 0x05, 0xb3, 0x7c, 0x4a, 0x29, 0xa2, 0x34,
0x47, 0x7c, 0xca, 0x99, 0xd5, 0xe9, 0x6c, 0xc6, 0x7f, 0x92, 0x5d, 0x58, 0xcc, 0x8c, 0x3b, 0x71, 0xa6, 0x57, 0x89, 0x31, 0xbd, 0x3b, 0x50, 0x0b, 0x27, 0x17, 0xd6, 0xcc, 0xbe, 0x9a, 0x78, 0xb6,
0x5b, 0xde, 0x6a, 0xf0, 0x66, 0x5b, 0x19, 0x8b, 0xb3, 0x31, 0xd2, 0x61, 0x9b, 0xdf, 0x03, 0xf2, 0xbc, 0xf4, 0x07, 0xe1, 0xe4, 0xe2, 0x88, 0x43, 0xc8, 0x07, 0x00, 0xd3, 0xd9, 0x4c, 0xac, 0x3d,
0x53, 0x86, 0x76, 0x18, 0x42, 0x55, 0xd5, 0x2f, 0x15, 0x50, 0xa2, 0x96, 0x0a, 0x28, 0xc1, 0xf8, 0x34, 0xcf, 0x45, 0x53, 0xf9, 0xf0, 0xe8, 0x88, 0x4f, 0x39, 0xb3, 0x3a, 0x9d, 0xcd, 0xf8, 0x4f,
0x22, 0x97, 0x7e, 0x14, 0xcb, 0x07, 0x4d, 0xfc, 0x11, 0xf7, 0x81, 0x8c, 0xff, 0x9c, 0x83, 0x12, 0xb2, 0x0b, 0x8b, 0x99, 0x01, 0x34, 0x6e, 0xcb, 0x5b, 0x12, 0xde, 0x6c, 0x2b, 0x63, 0x71, 0x36,
0x0f, 0xd3, 0xf0, 0x36, 0x2c, 0x71, 0x7a, 0xe5, 0xcb, 0x2c, 0x1c, 0x4e, 0xb8, 0x10, 0x35, 0x14, 0x46, 0x3a, 0x6c, 0xf3, 0x7b, 0x40, 0xfe, 0x94, 0x31, 0x2a, 0x86, 0x50, 0x55, 0xf5, 0x4b, 0x45,
0x6e, 0xcc, 0x6c, 0x59, 0x68, 0xd1, 0x6d, 0x22, 0x31, 0x42, 0x8b, 0x70, 0x73, 0x07, 0xaa, 0xaa, 0xc6, 0xa8, 0xa5, 0x22, 0x63, 0x30, 0xbe, 0xc8, 0xa5, 0x1f, 0xc5, 0xf2, 0x41, 0x13, 0x7f, 0xc4,
0x68, 0x6d, 0xea, 0x54, 0x64, 0xc9, 0xe4, 0x75, 0x28, 0x9e, 0x7b, 0x33, 0xa9, 0xc6, 0x83, 0xa8, 0xfd, 0x22, 0xe3, 0x3f, 0xe7, 0xa0, 0xc4, 0xe3, 0x4d, 0xbc, 0x0d, 0x4b, 0x9c, 0x5e, 0xf9, 0x46,
0x27, 0x4d, 0x84, 0x47, 0x75, 0x61, 0x65, 0x44, 0xf7, 0x94, 0x0a, 0xa2, 0x2e, 0xac, 0x10, 0x79, 0x0b, 0x07, 0x16, 0x2e, 0x44, 0x0d, 0x85, 0x5b, 0x34, 0x5b, 0x16, 0x5a, 0x98, 0x9e, 0x48, 0x8c,
0x79, 0x3d, 0xd1, 0xc6, 0x85, 0x8c, 0x36, 0x1e, 0xc3, 0x12, 0xe3, 0x03, 0x9a, 0xd7, 0xcb, 0xf5, 0xd0, 0x42, 0xf5, 0xdc, 0x81, 0xaa, 0x2a, 0x5a, 0x9b, 0x3a, 0x15, 0x59, 0x32, 0x79, 0x1d, 0x8a,
0x9b, 0xe6, 0xb7, 0x99, 0xb8, 0x3e, 0x9a, 0xcc, 0xc7, 0x54, 0x57, 0xa4, 0xa2, 0x63, 0xaa, 0x80, 0xe7, 0xde, 0x4c, 0xaa, 0xf1, 0x20, 0xea, 0x49, 0x13, 0xe1, 0x51, 0x5d, 0x58, 0x19, 0xd1, 0xbd,
0xcb, 0x63, 0x92, 0xf1, 0x3b, 0x39, 0xce, 0x5f, 0x58, 0xbe, 0xe4, 0x1e, 0x14, 0x5d, 0xe9, 0x21, 0xa7, 0x82, 0xa8, 0x0b, 0x2b, 0x44, 0xde, 0xc2, 0x4f, 0xb4, 0x71, 0x21, 0xa3, 0x8d, 0xc7, 0xb0,
0x13, 0x09, 0xe5, 0xea, 0x4e, 0x1f, 0xa3, 0x33, 0x91, 0x82, 0x0d, 0x1d, 0xfa, 0x95, 0xe8, 0xb9, 0xc4, 0xf8, 0x80, 0xe6, 0x45, 0x73, 0xfd, 0xa6, 0xf9, 0x6d, 0x26, 0xae, 0x8f, 0x26, 0xf3, 0x31,
0x37, 0xcc, 0x9a, 0x3b, 0x9f, 0x2a, 0x3d, 0xe4, 0xb7, 0x64, 0xb3, 0x12, 0x3a, 0x3c, 0xde, 0x7a, 0xd5, 0x15, 0xa9, 0xe8, 0xe8, 0x2a, 0xe0, 0xf2, 0x98, 0x64, 0xfc, 0x76, 0x8e, 0xf3, 0x17, 0x96,
0xb5, 0x4c, 0xb7, 0x34, 0x0f, 0xd7, 0x62, 0x6c, 0xc7, 0x94, 0x22, 0xfd, 0xf8, 0x8c, 0x6a, 0x9e, 0x2f, 0xb9, 0x07, 0x45, 0x57, 0x7a, 0xdc, 0x44, 0x42, 0xb9, 0xba, 0x23, 0xc8, 0xe8, 0x4c, 0xa4,
0xad, 0xbf, 0x9f, 0x87, 0x46, 0xac, 0x46, 0xe8, 0xe2, 0xcb, 0x36, 0x00, 0x6e, 0x67, 0x14, 0xe3, 0x60, 0x43, 0x87, 0x7e, 0x2a, 0x7a, 0xee, 0x0d, 0xb3, 0xe6, 0xce, 0xa7, 0x4a, 0x0f, 0xf9, 0x2d,
0x8d, 0x9e, 0x94, 0xe2, 0xd4, 0xa5, 0xf5, 0x53, 0x3e, 0xd6, 0x4f, 0xca, 0xc5, 0xad, 0xa0, 0xbb, 0xd9, 0xac, 0x84, 0x0e, 0x8f, 0xb7, 0x5e, 0x2d, 0xd3, 0x2d, 0xcd, 0x63, 0xb6, 0x18, 0xdb, 0x31,
0xb8, 0x3d, 0x80, 0x6a, 0x14, 0xd5, 0x28, 0x5e, 0x25, 0x56, 0x9e, 0xbc, 0xd9, 0x18, 0x11, 0x45, 0xa5, 0x48, 0x3f, 0x3e, 0xa3, 0x9a, 0xa7, 0xec, 0xef, 0xe5, 0xa1, 0x11, 0xab, 0x11, 0xba, 0x0c,
0x4e, 0x71, 0x25, 0xdd, 0x29, 0xee, 0xbb, 0x9a, 0x0f, 0xd5, 0x02, 0x66, 0x63, 0x64, 0xf5, 0xe8, 0xb3, 0x0d, 0x80, 0xdb, 0x19, 0xc5, 0x78, 0xa3, 0x67, 0xa6, 0x38, 0x75, 0x69, 0xfd, 0x94, 0x8f,
0xcf, 0xc4, 0x83, 0xca, 0x78, 0x0c, 0x35, 0xad, 0xf2, 0xba, 0x1f, 0x52, 0x2e, 0xe6, 0x87, 0xa4, 0xf5, 0x93, 0x72, 0x99, 0x2b, 0xe8, 0x2e, 0x73, 0x0f, 0xa0, 0x1a, 0x85, 0x67, 0x8a, 0x57, 0x89,
0xee, 0x38, 0xe7, 0xa3, 0x3b, 0xce, 0xc6, 0xaf, 0xe7, 0xa1, 0xc1, 0xd6, 0x97, 0xe3, 0x9e, 0x1d, 0x95, 0x27, 0x6f, 0x4a, 0x46, 0x44, 0x91, 0x93, 0x5d, 0x49, 0x77, 0xb2, 0xfb, 0xae, 0xe6, 0x93,
0x79, 0x13, 0x67, 0x84, 0x76, 0x47, 0xb5, 0xc2, 0x84, 0xa0, 0x25, 0xd7, 0x99, 0x58, 0x62, 0x5c, 0xb5, 0x80, 0xd9, 0x18, 0x59, 0x3d, 0xfa, 0x53, 0xf1, 0xc8, 0x32, 0x1e, 0x43, 0x4d, 0xab, 0xbc,
0xce, 0xd2, 0xe3, 0x68, 0x70, 0x26, 0xad, 0xe2, 0x68, 0x18, 0xd0, 0x60, 0x8c, 0x11, 0x2d, 0x88, 0xee, 0xd7, 0x94, 0x8b, 0xf9, 0x35, 0xa9, 0xbb, 0xd5, 0xf9, 0xe8, 0x6e, 0xb5, 0xf1, 0xab, 0x79,
0x51, 0x6c, 0x24, 0xb3, 0x76, 0x4a, 0xe9, 0xb6, 0x1d, 0x70, 0x0e, 0xf9, 0x3e, 0xac, 0x30, 0x1a, 0x68, 0xb0, 0xf5, 0xe5, 0xb8, 0x67, 0x47, 0xde, 0xc4, 0x19, 0xa1, 0xdd, 0x51, 0xad, 0x30, 0x21,
0xbc, 0x25, 0x3f, 0x75, 0x26, 0x13, 0x27, 0xba, 0x18, 0x58, 0x30, 0x9b, 0xa7, 0x94, 0x9a, 0x76, 0x68, 0xc9, 0x75, 0x26, 0x96, 0x18, 0x97, 0xb3, 0xf4, 0x80, 0x20, 0x9c, 0x49, 0xab, 0x80, 0x20,
0x48, 0x0f, 0x19, 0x42, 0x84, 0x52, 0xaa, 0x8c, 0x9d, 0xc0, 0x3e, 0x89, 0x1c, 0xb1, 0xd5, 0xb7, 0x06, 0x34, 0x18, 0x63, 0x44, 0x0b, 0x62, 0x14, 0xe4, 0xc9, 0xac, 0x9d, 0x52, 0xba, 0x6d, 0x07,
0x34, 0xcc, 0x47, 0xbe, 0x0f, 0x0b, 0xe2, 0xce, 0x20, 0xb7, 0xdc, 0x63, 0xfa, 0xc4, 0x4c, 0x2a, 0x9c, 0x43, 0xbe, 0x0f, 0x2b, 0x8c, 0x06, 0x6f, 0xfb, 0x4f, 0x9d, 0xc9, 0xc4, 0x89, 0x2e, 0x1a,
0x27, 0x67, 0x92, 0xf1, 0x0f, 0xf3, 0x50, 0xd3, 0xa6, 0xe5, 0xab, 0xec, 0xae, 0xb7, 0x53, 0x76, 0x16, 0xcc, 0xe6, 0x29, 0xa5, 0xa6, 0x1d, 0xd2, 0x43, 0x86, 0x10, 0x31, 0xa1, 0x2a, 0x63, 0x27,
0xe2, 0xaa, 0x6e, 0x12, 0x7e, 0x33, 0x5e, 0x64, 0x41, 0xdd, 0x1e, 0xd3, 0x27, 0xf0, 0x2d, 0xa8, 0xb0, 0x4f, 0x22, 0xc7, 0x6e, 0xf5, 0x2d, 0x0d, 0xf3, 0x91, 0xef, 0x83, 0xf0, 0xdb, 0x11, 0xa1,
0xb2, 0x55, 0xf7, 0x21, 0xea, 0xd3, 0x45, 0x28, 0x33, 0x04, 0x1c, 0xcd, 0x4f, 0x24, 0xf2, 0x21, 0x2e, 0x30, 0x7d, 0x62, 0x26, 0x95, 0x93, 0x33, 0xc9, 0xf8, 0x47, 0x79, 0xa8, 0x69, 0xd3, 0xf2,
0x22, 0x4b, 0x11, 0xf2, 0x21, 0x43, 0xbe, 0xe8, 0xf6, 0xc8, 0xa7, 0x50, 0x17, 0xb9, 0xe2, 0x98, 0x55, 0x76, 0xd7, 0xdb, 0x29, 0x3b, 0x71, 0x55, 0x37, 0x09, 0xbf, 0x19, 0x2f, 0xb2, 0xa0, 0x6e,
0x8a, 0x63, 0xc1, 0xaa, 0xb6, 0x73, 0xab, 0xf1, 0x36, 0x6b, 0xbc, 0x38, 0x3e, 0xf8, 0x22, 0xe1, 0xa3, 0xe9, 0x13, 0xf8, 0x16, 0x54, 0xd9, 0xaa, 0xfb, 0x10, 0xf5, 0xe9, 0x22, 0x26, 0x1b, 0x02,
0x43, 0x99, 0xb0, 0xf2, 0xb2, 0x84, 0x0f, 0xf9, 0x87, 0xb1, 0xa7, 0x2e, 0xe4, 0xa0, 0xf7, 0xa2, 0x8e, 0xe6, 0x27, 0x12, 0xf9, 0x10, 0x91, 0xa5, 0x08, 0xf9, 0x90, 0x21, 0x5f, 0x74, 0x1b, 0xe5,
0xe4, 0x63, 0x1f, 0xc0, 0x8a, 0x64, 0x57, 0x73, 0xd7, 0x76, 0x5d, 0x6f, 0xee, 0x8e, 0xa8, 0xbc, 0x53, 0xa8, 0x8b, 0x5c, 0x71, 0x4c, 0xc5, 0xb1, 0x60, 0x55, 0xdb, 0xb9, 0xd5, 0x78, 0x9b, 0x35,
0x9c, 0x4c, 0x04, 0xea, 0x38, 0xc2, 0x18, 0x63, 0x15, 0x7d, 0x83, 0x7b, 0x41, 0xde, 0x87, 0x12, 0x5e, 0x1c, 0x1f, 0x7c, 0x91, 0xf0, 0xa1, 0x4c, 0x58, 0x79, 0x59, 0xc2, 0x87, 0xfc, 0xc3, 0xd8,
0x97, 0xcb, 0xb9, 0xf0, 0x91, 0xcd, 0xb8, 0x38, 0x09, 0xb9, 0x07, 0x25, 0x2e, 0x9e, 0xe7, 0xaf, 0x53, 0x17, 0x7c, 0xd0, 0x1b, 0x52, 0xf2, 0xb1, 0x0f, 0x60, 0x45, 0xb2, 0xab, 0xb9, 0x6b, 0xbb,
0x65, 0x36, 0x9c, 0xc0, 0x68, 0x03, 0x61, 0x09, 0x0f, 0x69, 0xe8, 0x3b, 0xa3, 0x20, 0xba, 0xf7, 0xae, 0x37, 0x77, 0x47, 0x54, 0x5e, 0x76, 0x26, 0x02, 0x75, 0x1c, 0x61, 0x8c, 0xb1, 0x0a, 0x23,
0x5c, 0x0a, 0xaf, 0x66, 0xa2, 0xac, 0x48, 0x0d, 0x1f, 0x51, 0xa2, 0xc2, 0x81, 0xd3, 0xb0, 0x8d, 0xc2, 0xbd, 0x2a, 0xef, 0x43, 0x89, 0xcb, 0xe5, 0x5c, 0xf8, 0xc8, 0x66, 0x5c, 0x9c, 0x84, 0xdc,
0x69, 0x25, 0x96, 0x87, 0x10, 0x97, 0x26, 0xb0, 0x7e, 0x42, 0xc3, 0xe7, 0x94, 0xba, 0x2e, 0x13, 0x83, 0x12, 0x17, 0xcf, 0xf3, 0xd7, 0x32, 0x1b, 0x4e, 0x60, 0xb4, 0x81, 0xb0, 0x84, 0x87, 0x34,
0x86, 0x46, 0xd4, 0x0d, 0x7d, 0x7b, 0xc2, 0x06, 0x89, 0xb7, 0xe0, 0x51, 0x2a, 0xd7, 0x48, 0xa1, 0xf4, 0x9d, 0x51, 0x10, 0xdd, 0xa3, 0x2e, 0x85, 0x57, 0x33, 0x51, 0x56, 0xa4, 0x86, 0x8f, 0x28,
0xb5, 0x1d, 0x25, 0xdc, 0x51, 0xe9, 0x38, 0xef, 0x58, 0x3b, 0xc9, 0xc2, 0x6d, 0xfe, 0x22, 0x6c, 0x51, 0xe1, 0xc0, 0x69, 0xd8, 0xc6, 0xb4, 0x12, 0xcb, 0x43, 0x88, 0x4b, 0x13, 0x58, 0x3f, 0xa1,
0x5e, 0x9f, 0x28, 0x23, 0x7a, 0xc2, 0xbd, 0x38, 0x57, 0x51, 0x46, 0xdd, 0x89, 0x67, 0x87, 0xbc, 0xe1, 0x73, 0x4a, 0x5d, 0x97, 0x09, 0x43, 0x23, 0xea, 0x86, 0xbe, 0x3d, 0x61, 0x83, 0xc4, 0x5b,
0x36, 0x3a, 0x67, 0xe9, 0x41, 0x4d, 0xc3, 0x44, 0x7b, 0x7f, 0x0e, 0x85, 0x3b, 0xfe, 0xc1, 0x76, 0xf0, 0x28, 0x95, 0x6b, 0xa4, 0xd0, 0xda, 0x8e, 0x12, 0xee, 0xa8, 0x74, 0x9c, 0x77, 0xac, 0x9d,
0x24, 0xd7, 0xf3, 0xa7, 0x68, 0x44, 0x1d, 0x5b, 0x51, 0xee, 0x39, 0x73, 0x29, 0x82, 0xa3, 0xdf, 0x64, 0xe1, 0x36, 0x7f, 0x1e, 0x36, 0xaf, 0x4f, 0x94, 0x11, 0xb5, 0xe1, 0x5e, 0x9c, 0xab, 0x28,
0x8d, 0xb1, 0x05, 0x4b, 0x28, 0xd9, 0x6b, 0x1b, 0xdd, 0x8b, 0x84, 0x41, 0x63, 0x15, 0x48, 0x8f, 0xa3, 0xee, 0xc4, 0xb3, 0x43, 0x5e, 0x1b, 0x9d, 0xb3, 0xf4, 0xa0, 0xa6, 0x61, 0xa2, 0xbd, 0x3f,
0xf3, 0x2e, 0xdd, 0x23, 0xf4, 0x0f, 0x0b, 0x50, 0xd3, 0xc0, 0x6c, 0x37, 0x42, 0x37, 0x5a, 0x6b, 0x87, 0xc2, 0x1d, 0xff, 0x60, 0x3b, 0x92, 0xeb, 0xf9, 0x53, 0x34, 0xa2, 0x8e, 0xad, 0x28, 0xf7,
0xec, 0xd8, 0x53, 0x2a, 0x2d, 0xd6, 0x0d, 0xb3, 0x81, 0xd0, 0x5d, 0x01, 0x64, 0x7b, 0xb1, 0x7d, 0x9c, 0xb9, 0x14, 0xc1, 0xd1, 0xef, 0xc6, 0xd8, 0x82, 0x25, 0x94, 0xec, 0xb5, 0x8d, 0xee, 0x45,
0x71, 0x66, 0x79, 0xf3, 0xd0, 0x1a, 0xd3, 0x33, 0x9f, 0xca, 0x5a, 0xd6, 0xed, 0x8b, 0xb3, 0xfe, 0xc2, 0xa0, 0xb1, 0x0a, 0xa4, 0xc7, 0x79, 0x97, 0xee, 0x61, 0xfa, 0x07, 0x05, 0xa8, 0x69, 0x60,
0x3c, 0xdc, 0x45, 0x98, 0x0c, 0x37, 0xa3, 0x51, 0x15, 0x54, 0xb8, 0x99, 0x88, 0x4a, 0xb8, 0x1f, 0xb6, 0x1b, 0xa1, 0x5b, 0xae, 0x35, 0x76, 0xec, 0x29, 0x95, 0x16, 0xeb, 0x86, 0xd9, 0x40, 0xe8,
0xf3, 0x99, 0x59, 0x54, 0xee, 0xc7, 0xfc, 0xb4, 0x98, 0xdc, 0x40, 0x4b, 0xe9, 0x0d, 0xf4, 0x63, 0xae, 0x00, 0xb2, 0xbd, 0xd8, 0xbe, 0x38, 0xb3, 0xbc, 0x79, 0x68, 0x8d, 0xe9, 0x99, 0x4f, 0x65,
0x58, 0xe7, 0x1b, 0xa8, 0x60, 0xcd, 0x56, 0x62, 0x25, 0xaf, 0x22, 0x56, 0x34, 0x52, 0x13, 0x7b, 0x2d, 0xeb, 0xf6, 0xc5, 0x59, 0x7f, 0x1e, 0xee, 0x22, 0x4c, 0xc6, 0xcd, 0xd1, 0xa8, 0x0a, 0x2a,
0x9b, 0xac, 0x05, 0x92, 0x2d, 0x05, 0xce, 0x8f, 0x39, 0x23, 0xcb, 0x99, 0xac, 0x65, 0x22, 0xf3, 0x6e, 0x4e, 0x44, 0x25, 0xdc, 0x99, 0xf9, 0xcc, 0x2c, 0x2a, 0x77, 0x66, 0x7e, 0x5a, 0x4c, 0x6e,
0x81, 0xf3, 0x63, 0x2a, 0xc3, 0xdd, 0xc4, 0x28, 0xc5, 0xdd, 0xb0, 0xa9, 0xe3, 0x26, 0x29, 0xed, 0xa0, 0xa5, 0xf4, 0x06, 0xfa, 0x31, 0xac, 0xf3, 0x0d, 0x54, 0xb0, 0x66, 0x2b, 0xb1, 0x92, 0x57,
0xcb, 0x38, 0x65, 0x55, 0x50, 0xda, 0x97, 0x3a, 0xe5, 0x23, 0xd8, 0x98, 0xd2, 0xb1, 0x63, 0xc7, 0x11, 0x2b, 0x1a, 0xa9, 0x89, 0xbd, 0x4d, 0xd6, 0x02, 0xc9, 0x96, 0x02, 0xe7, 0xc7, 0x9c, 0x91,
0xb3, 0xb5, 0x22, 0xc1, 0x6d, 0x95, 0xa3, 0xb5, 0x34, 0x03, 0x7e, 0x70, 0x67, 0xbd, 0xf1, 0x63, 0xe5, 0x4c, 0xd6, 0x32, 0x91, 0xf9, 0xc0, 0xf9, 0x31, 0x95, 0x71, 0x7b, 0x62, 0x94, 0xe2, 0xae,
0x6f, 0x7a, 0xe2, 0x70, 0x99, 0x85, 0x7b, 0x94, 0x15, 0xcd, 0x45, 0x77, 0x3e, 0xfd, 0x21, 0x82, 0xd9, 0xd4, 0x71, 0x93, 0x94, 0xf6, 0x65, 0x9c, 0xb2, 0x2a, 0x28, 0xed, 0x4b, 0x9d, 0xf2, 0x11,
0x59, 0x92, 0xc0, 0x68, 0x40, 0x6d, 0x10, 0x7a, 0x33, 0x39, 0xcc, 0x8b, 0x50, 0xe7, 0x9f, 0xe2, 0x6c, 0x4c, 0xe9, 0xd8, 0xb1, 0xe3, 0xd9, 0x5a, 0x91, 0xe0, 0xb6, 0xca, 0xd1, 0x5a, 0x9a, 0x01,
0x5e, 0xff, 0x2d, 0xb8, 0x89, 0x2c, 0x61, 0xe8, 0xcd, 0xbc, 0x89, 0x77, 0x76, 0x15, 0x53, 0xca, 0x3f, 0xb8, 0xb3, 0xde, 0xf8, 0xb1, 0x37, 0x3d, 0x71, 0xb8, 0xcc, 0xc2, 0x3d, 0xca, 0x8a, 0xe6,
0xfe, 0xf3, 0x1c, 0xac, 0xc4, 0xb0, 0x82, 0xbd, 0x7e, 0xcc, 0xf9, 0x99, 0xba, 0x13, 0x9c, 0x8b, 0xa2, 0x3b, 0x9f, 0xfe, 0x10, 0xc1, 0x2c, 0x49, 0x60, 0x34, 0xa0, 0x36, 0x08, 0xbd, 0x99, 0x1c,
0x5d, 0x08, 0x63, 0xe3, 0xc5, 0x09, 0x39, 0x33, 0x93, 0xf7, 0x84, 0xdb, 0x51, 0x2c, 0x29, 0x99, 0xe6, 0x45, 0xa8, 0xf3, 0x4f, 0x11, 0x27, 0xe0, 0x16, 0xdc, 0x44, 0x96, 0x30, 0xf4, 0x66, 0xde,
0x90, 0xb3, 0x94, 0x56, 0x9a, 0xa5, 0x88, 0xf4, 0x32, 0xca, 0x94, 0xcc, 0xe2, 0xe7, 0xc4, 0xfd, 0xc4, 0x3b, 0xbb, 0x8a, 0x29, 0x65, 0xff, 0x45, 0x0e, 0x56, 0x62, 0x58, 0xc1, 0x5e, 0x3f, 0xe6,
0xbd, 0xb1, 0x68, 0x72, 0x21, 0x7e, 0xc3, 0x47, 0x57, 0xe0, 0xca, 0x1a, 0x44, 0x5a, 0xdd, 0xc0, 0xfc, 0x4c, 0xdd, 0x31, 0xce, 0xc5, 0x2e, 0x98, 0xb1, 0xf1, 0xe2, 0x84, 0x9c, 0x99, 0xc9, 0x7b,
0xf8, 0xdd, 0x3c, 0x40, 0x54, 0x3b, 0xbc, 0x63, 0xa4, 0xe4, 0x96, 0x1c, 0x3a, 0x73, 0x6b, 0x32, 0xc7, 0xed, 0x28, 0x28, 0x96, 0x4c, 0xc8, 0x59, 0x4a, 0x2b, 0xcd, 0x52, 0x44, 0x7a, 0x19, 0x2e,
0xca, 0x1b, 0x50, 0x57, 0x7e, 0xff, 0x91, 0x24, 0x54, 0x93, 0x30, 0x26, 0x0e, 0xbd, 0x0b, 0x4b, 0x4b, 0x66, 0xf1, 0x33, 0xe2, 0x3e, 0xe0, 0x58, 0x34, 0xb9, 0x10, 0xbf, 0x31, 0xa4, 0x2b, 0x70,
0x67, 0x13, 0xef, 0x04, 0x25, 0x56, 0x21, 0xb7, 0xa0, 0x4b, 0x08, 0xee, 0x47, 0x8b, 0x1c, 0xa5, 0x65, 0x0d, 0x22, 0xad, 0x6e, 0x60, 0xfc, 0x4e, 0x1e, 0x20, 0xaa, 0x1d, 0xde, 0x59, 0x52, 0x72,
0xa2, 0xc1, 0x29, 0xd9, 0xa9, 0x98, 0x79, 0x3d, 0x20, 0x26, 0x09, 0x3d, 0x4e, 0x49, 0x42, 0x77, 0x4b, 0x0e, 0x9d, 0xc3, 0x35, 0x19, 0xe5, 0x0d, 0xa8, 0xab, 0x7b, 0x04, 0x91, 0x24, 0x54, 0x93,
0x52, 0x9d, 0xfb, 0xb3, 0x11, 0x83, 0xfe, 0x52, 0x5e, 0xb9, 0x3a, 0x47, 0xe3, 0xf2, 0xe2, 0xc3, 0x30, 0x26, 0x0e, 0xbd, 0x0b, 0x4b, 0x67, 0x13, 0xef, 0x04, 0x25, 0x56, 0x21, 0xb7, 0xa0, 0x4b,
0xe6, 0x4f, 0xe2, 0xe8, 0xf5, 0x22, 0xcb, 0xf5, 0x63, 0x58, 0xf4, 0xf9, 0x16, 0x29, 0xf7, 0xcf, 0x08, 0xee, 0x47, 0x8b, 0x1c, 0xa5, 0xc2, 0xda, 0x29, 0xd9, 0xa9, 0x98, 0x79, 0xdd, 0x20, 0x26,
0xe2, 0x0b, 0xf6, 0xcf, 0x86, 0x1f, 0x93, 0xbb, 0xbe, 0x0d, 0x4d, 0x7b, 0x7c, 0x41, 0xfd, 0xd0, 0x09, 0x3d, 0x4e, 0x49, 0x42, 0x77, 0x52, 0x9d, 0xfb, 0xd3, 0x11, 0x83, 0xfe, 0x72, 0x5e, 0xb9,
0x41, 0x43, 0x10, 0x4a, 0xeb, 0xc2, 0xb9, 0x58, 0x83, 0xa3, 0x58, 0xfc, 0x0e, 0x2c, 0x89, 0xc8, 0x4e, 0x47, 0xe3, 0xf2, 0xe2, 0xc3, 0xe6, 0x4f, 0xe2, 0xe8, 0xf5, 0x22, 0xcb, 0xf5, 0x63, 0x58,
0x17, 0x8a, 0x52, 0x44, 0x59, 0x8c, 0xc0, 0x8c, 0xd0, 0xf8, 0xfb, 0xd2, 0xb7, 0x3a, 0x3e, 0xd7, 0xf4, 0xf9, 0x16, 0x29, 0xf7, 0xcf, 0xe2, 0x0b, 0xf6, 0xcf, 0x86, 0x1f, 0x93, 0xbb, 0xbe, 0x0d,
0x5e, 0xdc, 0x2b, 0x7a, 0x0b, 0xf3, 0x69, 0xdb, 0xbc, 0x98, 0xd6, 0xc2, 0xbe, 0x24, 0xb8, 0x23, 0x4d, 0x7b, 0x7c, 0x41, 0xfd, 0xd0, 0x41, 0x43, 0x10, 0x4a, 0xeb, 0xc2, 0x51, 0x59, 0x83, 0xa3,
0x07, 0x0a, 0xeb, 0x52, 0xbc, 0x5b, 0x8b, 0xaf, 0xd2, 0xad, 0xc6, 0xbf, 0xc8, 0x41, 0x79, 0xdf, 0x58, 0xfc, 0x0e, 0x2c, 0x89, 0x48, 0x1a, 0x8a, 0x52, 0x84, 0x8b, 0x8c, 0xc0, 0x8c, 0xd0, 0xf8,
0x9b, 0xed, 0x3b, 0xfc, 0x86, 0x0e, 0x2e, 0x5a, 0x65, 0xfe, 0x5c, 0x60, 0x9f, 0xe8, 0x95, 0xf6, 0x07, 0xd2, 0x57, 0x3b, 0x3e, 0xd7, 0x5e, 0xdc, 0x2b, 0x7a, 0x0b, 0xf3, 0x69, 0xdb, 0xbc, 0x98,
0x82, 0x9b, 0xbb, 0x99, 0x42, 0x67, 0x23, 0x2e, 0x74, 0x7e, 0x17, 0x6e, 0xa1, 0x75, 0xd9, 0xf7, 0xd6, 0xc2, 0xbe, 0x24, 0xb8, 0x23, 0x07, 0x0a, 0xeb, 0x52, 0xbc, 0x5b, 0x8b, 0xaf, 0xd2, 0xad,
0x66, 0x9e, 0xcf, 0x18, 0x87, 0x3d, 0xe1, 0xc2, 0xa7, 0xe7, 0x86, 0xe7, 0x92, 0x93, 0xdf, 0x3c, 0xc6, 0xbf, 0xcc, 0x41, 0x79, 0xdf, 0x9b, 0xed, 0x3b, 0xfc, 0xc6, 0x0f, 0x2e, 0x5a, 0x65, 0xfe,
0xa5, 0xf4, 0x48, 0xa3, 0x38, 0x54, 0x04, 0x78, 0x6b, 0x7f, 0x12, 0x5e, 0x58, 0x5c, 0x5f, 0x20, 0x5c, 0x60, 0x9f, 0xe8, 0x95, 0xf6, 0x82, 0x9b, 0xc0, 0x99, 0x42, 0x67, 0x23, 0x2e, 0x74, 0x7e,
0xa4, 0x63, 0xce, 0xdf, 0x97, 0x18, 0xa2, 0x83, 0x70, 0x94, 0x8f, 0x8d, 0xcf, 0xa0, 0xaa, 0x54, 0x17, 0x6e, 0xa1, 0x75, 0xd9, 0xf7, 0x66, 0x9e, 0xcf, 0x18, 0x87, 0x3d, 0xe1, 0xc2, 0xa7, 0xe7,
0x4f, 0xe4, 0x5d, 0xa8, 0x9e, 0x7b, 0x33, 0xa1, 0x9f, 0xca, 0xc5, 0x6e, 0x37, 0x8b, 0x56, 0x9b, 0x86, 0xe7, 0x92, 0x93, 0xdf, 0x3c, 0xa5, 0xf4, 0x48, 0xa3, 0x38, 0x54, 0x04, 0x18, 0x05, 0x60,
0x95, 0x73, 0xfe, 0x23, 0x30, 0xfe, 0x4f, 0x19, 0xca, 0x5d, 0xf7, 0xc2, 0x73, 0x46, 0xe8, 0x9d, 0x12, 0x5e, 0x58, 0x5c, 0x5f, 0x20, 0xa4, 0x63, 0xce, 0xdf, 0x97, 0x18, 0xa2, 0x83, 0x70, 0x94,
0x3d, 0xa5, 0x53, 0x4f, 0x06, 0xe6, 0x61, 0xbf, 0xd1, 0x71, 0x30, 0x0a, 0x84, 0x58, 0x10, 0x8e, 0x8f, 0x8d, 0xcf, 0xa0, 0xaa, 0x54, 0x4f, 0xe4, 0x5d, 0xa8, 0x9e, 0x7b, 0x33, 0xa1, 0x9f, 0xca,
0x83, 0x2a, 0x04, 0xe2, 0x1a, 0x2c, 0xf8, 0x7a, 0x24, 0xc3, 0x92, 0x8f, 0x77, 0x5a, 0xd4, 0xee, 0xc5, 0x6e, 0x4b, 0x8b, 0x56, 0x9b, 0x95, 0x73, 0xfe, 0x23, 0x30, 0xfe, 0x6f, 0x19, 0xca, 0x5d,
0x5d, 0xd2, 0x02, 0x27, 0xb1, 0xbc, 0xb8, 0xe3, 0x2c, 0x76, 0x19, 0xbf, 0x79, 0x5f, 0x45, 0x08, 0xf7, 0xc2, 0x73, 0x46, 0xe8, 0xc5, 0x3d, 0xa5, 0x53, 0x4f, 0x06, 0xfa, 0x61, 0xbf, 0xd1, 0x71,
0x76, 0xd8, 0x6b, 0x50, 0x16, 0x5a, 0x68, 0x7e, 0xb5, 0x91, 0xeb, 0xee, 0x05, 0x08, 0x67, 0x83, 0x30, 0x8a, 0xe8, 0x58, 0x10, 0x8e, 0x83, 0x2a, 0x96, 0xe3, 0x1a, 0x2c, 0xf8, 0x7a, 0x48, 0xc6,
0x4f, 0xb9, 0x77, 0x80, 0x12, 0xab, 0x0b, 0x66, 0x5d, 0x02, 0x77, 0xd9, 0x5c, 0xbb, 0x03, 0x35, 0x92, 0x8f, 0x77, 0x64, 0xd4, 0xee, 0x5d, 0xd2, 0x02, 0x36, 0xb1, 0xbc, 0xb8, 0xe3, 0x2c, 0x76,
0x4e, 0xcf, 0x49, 0x2a, 0xc2, 0xa9, 0x19, 0x41, 0x48, 0x90, 0x11, 0x33, 0xb4, 0x9a, 0x19, 0x33, 0x19, 0xbf, 0xc9, 0x5f, 0x45, 0x08, 0x76, 0xd8, 0x6b, 0x50, 0x16, 0x5a, 0x68, 0x7e, 0x55, 0x92,
0x14, 0xdd, 0xef, 0x15, 0xcf, 0xe7, 0x4d, 0x04, 0x1e, 0x06, 0x52, 0x83, 0xcb, 0x40, 0xbc, 0x42, 0xeb, 0xee, 0x05, 0x08, 0x67, 0x83, 0x4f, 0xb9, 0x77, 0x80, 0x12, 0xab, 0x0b, 0x66, 0x5d, 0x02,
0xc3, 0xc3, 0x83, 0x52, 0x48, 0x0d, 0xcf, 0x9b, 0xd0, 0x38, 0xb5, 0x27, 0x93, 0x13, 0x7b, 0xf4, 0x77, 0x6d, 0xee, 0x9a, 0xcd, 0xe9, 0x39, 0x09, 0xdf, 0x86, 0x80, 0x83, 0x90, 0x20, 0x23, 0xf8,
0x8c, 0x2b, 0x26, 0xea, 0x5c, 0x17, 0x2b, 0x81, 0xa8, 0x99, 0xb8, 0x03, 0x35, 0x6d, 0x94, 0xd1, 0x69, 0x35, 0x33, 0xf8, 0x29, 0xba, 0xf2, 0x2b, 0x9e, 0xcf, 0x9b, 0x08, 0x3c, 0x9e, 0xa5, 0x06,
0x63, 0xb9, 0x68, 0x42, 0x34, 0xbe, 0x49, 0x7d, 0xe3, 0xe2, 0x2b, 0xe8, 0x1b, 0x35, 0xcf, 0xed, 0x97, 0x11, 0x85, 0x85, 0x86, 0x87, 0x07, 0xb9, 0x90, 0x1a, 0x9e, 0x37, 0xa1, 0x71, 0x6a, 0x4f,
0xa5, 0xb8, 0xe7, 0xf6, 0x2d, 0xe4, 0xed, 0xc2, 0x1f, 0xb6, 0xc9, 0x63, 0x0e, 0xda, 0xe3, 0x31, 0x26, 0x27, 0xf6, 0xe8, 0x19, 0x57, 0x4c, 0xd4, 0xb9, 0x2e, 0x56, 0x02, 0x51, 0x33, 0x71, 0x07,
0x0f, 0x13, 0xf3, 0x06, 0xd4, 0x45, 0xe7, 0x71, 0xfc, 0x32, 0x3f, 0xd9, 0x70, 0x18, 0x27, 0xb9, 0x6a, 0xda, 0x28, 0xa3, 0xc7, 0x72, 0xd1, 0x84, 0x68, 0x7c, 0x93, 0xfa, 0xc6, 0xc5, 0x57, 0xd0,
0xcd, 0x95, 0xe6, 0x33, 0xdb, 0x19, 0xe3, 0x45, 0x22, 0x61, 0x5f, 0xb1, 0xa7, 0xe1, 0x91, 0xed, 0x37, 0x6a, 0x9e, 0xdb, 0x4b, 0x71, 0xcf, 0xed, 0x5b, 0xc8, 0xdb, 0x85, 0x3f, 0x6c, 0x93, 0x07,
0xa0, 0x27, 0xa0, 0x44, 0xe3, 0x5e, 0xbd, 0xc2, 0xfb, 0x5f, 0xa0, 0x07, 0x3c, 0xe4, 0x8a, 0xa2, 0x4f, 0xb4, 0xc7, 0x63, 0x1e, 0x76, 0xe6, 0x0d, 0xa8, 0x8b, 0xce, 0xe3, 0xf8, 0x65, 0xe1, 0xfa,
0x98, 0xaa, 0xa8, 0x12, 0x66, 0x4d, 0x90, 0xe0, 0x3c, 0xf8, 0x10, 0x1d, 0xc8, 0x42, 0x8a, 0x71, 0x8e, 0x30, 0x4e, 0x72, 0x9b, 0x2b, 0xcd, 0x67, 0xb6, 0x33, 0xc6, 0x8b, 0x49, 0xc2, 0xbe, 0x62,
0x23, 0x16, 0x1f, 0xde, 0x52, 0x7e, 0x2d, 0x38, 0x4b, 0xe5, 0x7f, 0x6e, 0x77, 0xe5, 0x94, 0x4c, 0x4f, 0xc3, 0x23, 0xdb, 0x41, 0x4f, 0x40, 0x89, 0xc6, 0xbd, 0x7a, 0x85, 0xf7, 0xbf, 0x40, 0x0f,
0xd4, 0xe4, 0xe6, 0xdf, 0xf5, 0x98, 0x34, 0x2e, 0x48, 0xd1, 0xfc, 0xcb, 0x09, 0xc8, 0x67, 0xda, 0x78, 0x08, 0x17, 0x45, 0x31, 0x55, 0x51, 0x2a, 0xcc, 0x9a, 0x20, 0xc1, 0x79, 0xf0, 0x21, 0x3a,
0x1e, 0xd2, 0x42, 0xe2, 0xd7, 0x12, 0xf9, 0x5f, 0x77, 0x75, 0xf3, 0x36, 0x80, 0x13, 0xb0, 0x3d, 0x90, 0x85, 0x14, 0xe3, 0x50, 0x2c, 0x3e, 0xbc, 0xa5, 0xfc, 0x5a, 0x70, 0x96, 0xca, 0xff, 0xdc,
0x2f, 0xa0, 0xee, 0x18, 0xc3, 0x3f, 0x54, 0xcc, 0xaa, 0x13, 0x3c, 0xe5, 0x80, 0x94, 0x16, 0x6a, 0xee, 0xca, 0x29, 0x99, 0xa8, 0xc9, 0xcd, 0xbf, 0xeb, 0x31, 0x69, 0x5c, 0x90, 0xa2, 0xf9, 0x97,
0x33, 0x1d, 0xd6, 0xf4, 0x1b, 0xdd, 0x82, 0xda, 0x50, 0xd7, 0x7b, 0x82, 0x54, 0xa0, 0xd8, 0x3f, 0x13, 0x90, 0xcf, 0xb4, 0x3d, 0xa4, 0x85, 0xc4, 0xaf, 0x25, 0xf2, 0xbf, 0xee, 0x2a, 0xe8, 0x6d,
0xea, 0xf4, 0x9a, 0x37, 0x48, 0x0d, 0xca, 0x83, 0xce, 0x70, 0x78, 0x80, 0x76, 0xe6, 0x3a, 0x54, 0x00, 0x27, 0x60, 0x7b, 0x5e, 0x40, 0xdd, 0x31, 0x86, 0x93, 0xa8, 0x98, 0x55, 0x27, 0x78, 0xca,
0xd4, 0xfd, 0xef, 0x3c, 0xfb, 0x6a, 0xef, 0xec, 0x74, 0x8e, 0x86, 0x9d, 0xdd, 0x66, 0xe1, 0xfb, 0x01, 0x29, 0x2d, 0xd4, 0x66, 0x3a, 0x3e, 0xeb, 0x37, 0xba, 0x05, 0xb5, 0xa1, 0xae, 0xf7, 0x04,
0xc5, 0x4a, 0xbe, 0x59, 0x30, 0xfe, 0xb4, 0x00, 0x35, 0xad, 0xa3, 0x5e, 0xcc, 0xaf, 0xe3, 0x91, 0xa9, 0x40, 0xb1, 0x7f, 0xd4, 0xe9, 0x35, 0x6f, 0x90, 0x1a, 0x94, 0x07, 0x9d, 0xe1, 0xf0, 0x00,
0x86, 0xf2, 0xc9, 0x48, 0x43, 0xba, 0x51, 0x45, 0x44, 0x63, 0x92, 0x46, 0x95, 0x37, 0xa1, 0x21, 0xed, 0xcc, 0x75, 0xa8, 0xa8, 0xfb, 0xe4, 0x79, 0xf6, 0xd5, 0xde, 0xd9, 0xe9, 0x1c, 0x0d, 0x3b,
0x22, 0x22, 0x6a, 0xde, 0x02, 0x25, 0xb3, 0xce, 0x81, 0x82, 0x9b, 0x63, 0x34, 0x09, 0x24, 0xc2, 0xbb, 0xcd, 0xc2, 0xf7, 0x8b, 0x95, 0x7c, 0xb3, 0x60, 0xfc, 0xef, 0x02, 0xd4, 0xb4, 0x8e, 0x7a,
0x7b, 0xba, 0x22, 0x96, 0x19, 0x07, 0xe1, 0x4d, 0x5d, 0xbc, 0x66, 0x1d, 0x78, 0x93, 0x0b, 0xca, 0x31, 0xbf, 0x8e, 0x47, 0x2e, 0xca, 0x27, 0x23, 0x17, 0xe9, 0x46, 0x15, 0x11, 0xdd, 0x49, 0x1a,
0x29, 0xb8, 0x08, 0x5b, 0x13, 0xb0, 0xa1, 0x88, 0xd4, 0x21, 0x58, 0xa6, 0x16, 0xce, 0xa0, 0x64, 0x55, 0xde, 0x84, 0x86, 0x08, 0xed, 0xa8, 0x79, 0x0b, 0x94, 0xcc, 0x3a, 0x07, 0x0a, 0x6e, 0x8e,
0xd6, 0x39, 0x50, 0x14, 0xf4, 0xbe, 0x9c, 0x63, 0xdc, 0x77, 0x6a, 0x23, 0x3d, 0x61, 0x62, 0xf3, 0xd1, 0x29, 0x90, 0x08, 0xef, 0xfd, 0x96, 0xc4, 0xfc, 0x41, 0x10, 0xde, 0xfc, 0xc5, 0x6b, 0xdb,
0xeb, 0x20, 0xa5, 0xf7, 0xac, 0xe2, 0xdc, 0xf9, 0x56, 0x3a, 0xdd, 0xcb, 0xf5, 0x9f, 0xe4, 0x5d, 0x81, 0x37, 0xb9, 0xa0, 0x9c, 0x82, 0x8b, 0xb0, 0x35, 0x01, 0x1b, 0x8a, 0xc8, 0x1f, 0x82, 0x65,
0x20, 0xd3, 0xd9, 0xcc, 0xca, 0xd0, 0x48, 0x16, 0xcd, 0xa5, 0xe9, 0x6c, 0x36, 0xd4, 0x14, 0x76, 0x6a, 0xe1, 0x11, 0x4a, 0x66, 0x9d, 0x03, 0x45, 0x41, 0xef, 0xcb, 0x39, 0xc6, 0x7d, 0xa7, 0x36,
0xe4, 0x35, 0x28, 0xd8, 0xd3, 0x19, 0xb2, 0x96, 0x48, 0x3b, 0xd8, 0x3e, 0x3c, 0x32, 0x19, 0xf8, 0xd2, 0x13, 0x26, 0x36, 0xbf, 0x0e, 0x52, 0x7a, 0xcf, 0x2a, 0xce, 0x9d, 0x6f, 0xa5, 0xd3, 0xbd,
0x1b, 0x50, 0xa5, 0xfe, 0x66, 0x0e, 0x0a, 0xed, 0xc3, 0x23, 0x64, 0xf4, 0x9e, 0x17, 0x5a, 0xc1, 0x5c, 0xff, 0x49, 0xde, 0x05, 0x32, 0x9d, 0xcd, 0xac, 0x0c, 0x8d, 0x64, 0xd1, 0x5c, 0x9a, 0xce,
0xb9, 0x2d, 0x82, 0x89, 0x31, 0x46, 0xef, 0x79, 0xe1, 0x80, 0x01, 0x18, 0xa3, 0x0f, 0x68, 0x18, 0x66, 0x43, 0x4d, 0x61, 0x47, 0x5e, 0x83, 0x82, 0x3d, 0x9d, 0x21, 0x6b, 0x89, 0xb4, 0x83, 0xed,
0xf9, 0x00, 0x97, 0x02, 0x1a, 0x72, 0x87, 0xf0, 0xd1, 0xb9, 0x33, 0x19, 0xc7, 0x42, 0x3b, 0x02, 0xc3, 0x23, 0x93, 0x81, 0xbf, 0x01, 0x55, 0xea, 0x6f, 0xe4, 0xa0, 0xd0, 0x3e, 0x3c, 0x42, 0x46,
0x82, 0xf8, 0x8c, 0x20, 0x50, 0xd4, 0xb6, 0x07, 0xfc, 0xcd, 0x2f, 0xbe, 0x89, 0x1d, 0x85, 0xbb, 0xef, 0x79, 0xa1, 0x15, 0x9c, 0xdb, 0x22, 0x38, 0x19, 0x63, 0xf4, 0x9e, 0x17, 0x0e, 0x18, 0x80,
0x99, 0xab, 0x6f, 0xe3, 0x2f, 0xe7, 0x80, 0xb4, 0x19, 0x47, 0xc2, 0x0e, 0x55, 0x27, 0xdd, 0x68, 0x31, 0xfa, 0x80, 0x86, 0x91, 0x0f, 0x70, 0x29, 0xa0, 0x21, 0x77, 0x08, 0x1f, 0x9d, 0x3b, 0x93,
0x9f, 0xc9, 0xe9, 0xfb, 0x4c, 0x06, 0x3b, 0xcf, 0x67, 0xb2, 0xf3, 0x97, 0x31, 0xbe, 0xd8, 0xd2, 0x71, 0x2c, 0x46, 0x25, 0x20, 0x88, 0xcf, 0x08, 0x02, 0x45, 0x6d, 0x7b, 0xc0, 0xdf, 0xfc, 0x22,
0x5d, 0x4e, 0x2d, 0x5d, 0x63, 0x0f, 0x6a, 0x47, 0x5a, 0xa4, 0xdd, 0xbb, 0x6c, 0x57, 0x94, 0x31, 0x9d, 0xd8, 0x51, 0xb8, 0x9b, 0xb9, 0xfa, 0x36, 0xfe, 0x4a, 0x0e, 0x48, 0x9b, 0x71, 0x24, 0xec,
0x76, 0xf9, 0x7e, 0xc9, 0xb5, 0xba, 0xbe, 0x08, 0xad, 0xab, 0x55, 0x38, 0xaf, 0x55, 0xd8, 0xf8, 0x50, 0x75, 0xd2, 0x8d, 0xf6, 0x99, 0x9c, 0xbe, 0xcf, 0x64, 0xb0, 0xf3, 0x7c, 0x26, 0x3b, 0x7f,
0xdb, 0x39, 0x1e, 0xe8, 0x4e, 0xb5, 0x2f, 0x0a, 0xee, 0x2b, 0x8d, 0xa3, 0x51, 0x18, 0x95, 0x9a, 0x19, 0xe3, 0x8b, 0x2d, 0xdd, 0xe5, 0xd4, 0xd2, 0x35, 0xf6, 0xa0, 0x76, 0xa4, 0x85, 0x0c, 0xbe,
0x34, 0x7f, 0x8a, 0x08, 0x28, 0x58, 0x7b, 0xcb, 0x3b, 0x3d, 0x0d, 0xa8, 0x74, 0x99, 0xaa, 0x21, 0xcb, 0x76, 0x45, 0x19, 0x2c, 0x98, 0xef, 0x97, 0x5c, 0xab, 0xeb, 0x8b, 0x18, 0xc1, 0x5a, 0x85,
0xac, 0x8f, 0x20, 0x79, 0xfc, 0x61, 0x67, 0x2c, 0x87, 0xe7, 0x1f, 0x08, 0x3f, 0x29, 0x76, 0xfc, 0xf3, 0x5a, 0x85, 0x8d, 0xbf, 0x9d, 0xe3, 0x81, 0xf3, 0x54, 0xfb, 0xa2, 0x28, 0xc5, 0xd2, 0x38,
0x39, 0xb4, 0x2f, 0x45, 0xa9, 0x01, 0x1b, 0x01, 0x61, 0xa1, 0x91, 0x61, 0x04, 0xd4, 0xb7, 0xf1, 0x1a, 0x85, 0x65, 0xa9, 0x49, 0xf3, 0xa7, 0x88, 0xa8, 0x82, 0xb5, 0xb7, 0xbc, 0xd3, 0xd3, 0x80,
0x37, 0x44, 0xa4, 0x97, 0xe4, 0x10, 0xdc, 0x87, 0x8a, 0xca, 0x35, 0x2e, 0x55, 0x48, 0x4a, 0x85, 0x4a, 0x97, 0xa9, 0x1a, 0xc2, 0xfa, 0x08, 0x92, 0xc7, 0x1f, 0x76, 0xc6, 0x72, 0x78, 0xfe, 0x81,
0x67, 0xb2, 0x0b, 0xaa, 0xa3, 0x62, 0x35, 0xe6, 0xdc, 0x02, 0xad, 0x6c, 0x5d, 0xad, 0xd6, 0xef, 0xf0, 0x93, 0x62, 0xc7, 0x9f, 0x43, 0xfb, 0x52, 0x94, 0x1a, 0xb0, 0x11, 0x10, 0x16, 0x1a, 0x19,
0x01, 0x39, 0x75, 0xfc, 0x24, 0x31, 0xe7, 0x1e, 0x4d, 0xc4, 0x68, 0xd4, 0xc6, 0x31, 0xac, 0x48, 0x96, 0x40, 0x7d, 0x1b, 0x7f, 0x43, 0x44, 0x8e, 0x49, 0x0e, 0xc1, 0x7d, 0xa8, 0xa8, 0x5c, 0xe3,
0xb6, 0xa7, 0x9d, 0xc9, 0xe2, 0xe3, 0x9b, 0x7b, 0xc9, 0xc6, 0x96, 0x4f, 0x6d, 0x6c, 0xc6, 0x6f, 0x52, 0x85, 0xa4, 0x54, 0x78, 0x26, 0xbb, 0xa0, 0x3a, 0x2a, 0x56, 0x63, 0xce, 0x2d, 0xd0, 0xca,
0x94, 0xa0, 0x2c, 0x03, 0x5b, 0x67, 0x45, 0x5a, 0xae, 0xc6, 0x23, 0x2d, 0xb7, 0x62, 0x81, 0x21, 0xd6, 0xd5, 0x6a, 0xfd, 0x1e, 0x90, 0x53, 0xc7, 0x4f, 0x12, 0x73, 0xee, 0xd1, 0x44, 0x8c, 0x46,
0x71, 0xe8, 0x85, 0x8c, 0xf3, 0x4e, 0x52, 0x4c, 0xd1, 0xac, 0x45, 0x31, 0x51, 0x45, 0x58, 0x8b, 0x6d, 0x1c, 0xc3, 0x8a, 0x64, 0x7b, 0xda, 0x99, 0x2c, 0x3e, 0xbe, 0xb9, 0x97, 0x6c, 0x6c, 0xf9,
0x4a, 0x71, 0x6b, 0x51, 0x56, 0xf4, 0x69, 0x2e, 0x6e, 0xa7, 0xa2, 0x4f, 0xdf, 0x02, 0x2e, 0x3b, 0xd4, 0xc6, 0x66, 0xfc, 0x7a, 0x09, 0xca, 0x32, 0x42, 0x77, 0x56, 0xc8, 0xe8, 0x6a, 0x3c, 0x64,
0x69, 0xbe, 0xa2, 0x15, 0x04, 0x88, 0x50, 0x18, 0x9a, 0xa8, 0x55, 0x49, 0x8a, 0x5a, 0xaf, 0x2c, 0x74, 0x2b, 0x16, 0x90, 0x12, 0x87, 0x5e, 0xc8, 0x38, 0xef, 0x24, 0xc5, 0x14, 0xcd, 0x5a, 0x14,
0x06, 0x7d, 0x0c, 0x0b, 0x3c, 0x6a, 0x94, 0x08, 0x8b, 0x20, 0x37, 0x4b, 0xd1, 0x57, 0xf2, 0x3f, 0x13, 0x55, 0x84, 0xb5, 0xa8, 0x14, 0xb7, 0x16, 0x65, 0x85, 0xd1, 0xe6, 0xe2, 0x76, 0x2a, 0x8c,
0xbf, 0x82, 0x64, 0x0a, 0x5a, 0x3d, 0x5a, 0x69, 0x2d, 0x16, 0xad, 0x54, 0xb7, 0x62, 0xd5, 0xe3, 0xf6, 0x2d, 0xe0, 0xb2, 0x93, 0xe6, 0x2b, 0x5a, 0x41, 0x80, 0x08, 0xad, 0xa1, 0x89, 0x5a, 0x95,
0x56, 0xac, 0x7b, 0xd0, 0x54, 0x1d, 0x87, 0x3a, 0x61, 0x37, 0x10, 0x37, 0xa0, 0x17, 0x25, 0x9c, 0xa4, 0xa8, 0xf5, 0xca, 0x62, 0xd0, 0xc7, 0xb0, 0xc0, 0xa3, 0x50, 0x89, 0x30, 0x0b, 0x72, 0xb3,
0xb1, 0xf7, 0x5e, 0x10, 0x6d, 0xf6, 0x8b, 0xb1, 0xcd, 0x9e, 0x31, 0xdf, 0x76, 0x18, 0xd2, 0xe9, 0x14, 0x7d, 0x25, 0xff, 0xf3, 0x2b, 0x48, 0xa6, 0xa0, 0xd5, 0xa3, 0xae, 0xd6, 0x62, 0x51, 0x57,
0x2c, 0x94, 0x9b, 0xbd, 0x16, 0xf0, 0x9b, 0x8f, 0x3c, 0xbf, 0xa2, 0x25, 0x87, 0x97, 0xcf, 0x8e, 0x75, 0x2b, 0x56, 0x3d, 0x6e, 0xc5, 0xba, 0x07, 0x4d, 0xd5, 0x71, 0xa8, 0x13, 0x76, 0x03, 0x71,
0x6d, 0x58, 0x3c, 0xb5, 0x9d, 0xc9, 0xdc, 0xa7, 0x96, 0x4f, 0xed, 0xc0, 0x73, 0x91, 0x3f, 0x44, 0xa3, 0x7a, 0x51, 0xc2, 0x19, 0x7b, 0xef, 0x05, 0xd1, 0x66, 0xbf, 0x18, 0xdb, 0xec, 0x19, 0xf3,
0x72, 0x87, 0x68, 0xe2, 0x1e, 0xa7, 0x31, 0x91, 0xc4, 0x6c, 0x9c, 0xea, 0x9f, 0x78, 0xd1, 0x51, 0x6d, 0x87, 0x21, 0x9d, 0xce, 0x42, 0xb9, 0xd9, 0x6b, 0x91, 0xcb, 0xf9, 0xc8, 0xf3, 0x2b, 0x5a,
0xef, 0x09, 0xb6, 0x07, 0x8b, 0xe0, 0x08, 0xdc, 0xf5, 0xab, 0xdb, 0xb3, 0xf6, 0x0e, 0xba, 0x4f, 0x72, 0x78, 0xf9, 0xec, 0xd8, 0x86, 0xc5, 0x53, 0xdb, 0x99, 0xcc, 0x7d, 0x6a, 0xf9, 0xd4, 0x0e,
0xf6, 0x87, 0xcd, 0x1c, 0xfb, 0x1c, 0x1c, 0xef, 0xec, 0x74, 0x3a, 0xbb, 0xb8, 0x27, 0x03, 0x2c, 0x3c, 0x17, 0xf9, 0x43, 0x24, 0x77, 0x88, 0x26, 0xee, 0x71, 0x1a, 0x13, 0x49, 0xcc, 0xc6, 0xa9,
0xec, 0xb5, 0xbb, 0x07, 0x62, 0x47, 0x2e, 0x36, 0x4b, 0xc6, 0x1f, 0xe6, 0xa1, 0xa6, 0xb5, 0x06, 0xfe, 0x89, 0x17, 0x22, 0xf5, 0x9e, 0x60, 0x7b, 0xb0, 0x08, 0xb6, 0xc0, 0x5d, 0xbf, 0xba, 0x3d,
0xc3, 0x9e, 0xf0, 0x9f, 0x8c, 0xff, 0x96, 0x45, 0xd8, 0x13, 0x0e, 0xe9, 0x8e, 0xc9, 0x23, 0x35, 0x6b, 0xef, 0xa0, 0xfb, 0x64, 0x7f, 0xd8, 0xcc, 0xb1, 0xcf, 0xc1, 0xf1, 0xce, 0x4e, 0xa7, 0xb3,
0x46, 0x3c, 0x5a, 0xcb, 0xed, 0x74, 0x87, 0x6c, 0xc9, 0x1d, 0x4d, 0x1b, 0x24, 0x15, 0xf9, 0x3b, 0x8b, 0x7b, 0x32, 0xc0, 0xc2, 0x5e, 0xbb, 0x7b, 0x20, 0x76, 0xe4, 0x62, 0xb3, 0x64, 0xfc, 0x41,
0x7f, 0x6d, 0xe4, 0x6f, 0xf2, 0x36, 0x2c, 0xc9, 0x92, 0xe5, 0x98, 0x08, 0xeb, 0x8b, 0x00, 0x8b, 0x1e, 0x6a, 0x5a, 0x6b, 0x30, 0x8c, 0x0a, 0xff, 0xc9, 0xf8, 0x6f, 0x59, 0x84, 0x51, 0xe1, 0x90,
0x21, 0x79, 0x5b, 0x44, 0x8e, 0x11, 0xdb, 0x32, 0xa3, 0x2b, 0x4a, 0x17, 0x69, 0xb5, 0x33, 0xe3, 0xee, 0x98, 0x3c, 0x52, 0x63, 0xc4, 0xa3, 0xbf, 0xdc, 0x4e, 0x77, 0xc8, 0x96, 0xdc, 0xd1, 0xb4,
0xd0, 0x95, 0x45, 0xc7, 0x09, 0x6f, 0x09, 0x25, 0xe0, 0x88, 0xee, 0x94, 0xe8, 0xd8, 0x1e, 0xb1, 0x41, 0x52, 0x21, 0xcc, 0xf3, 0xd7, 0x86, 0x30, 0x27, 0x6f, 0xc3, 0x92, 0x2c, 0x59, 0x8e, 0x89,
0x90, 0xd8, 0x23, 0x3e, 0x01, 0x88, 0xda, 0x13, 0xef, 0xdd, 0x1b, 0xf1, 0xde, 0xcd, 0x69, 0xbd, 0xb0, 0xbe, 0x08, 0xb0, 0x18, 0x92, 0xb7, 0x45, 0x24, 0x1a, 0xb1, 0x2d, 0x33, 0xba, 0xa2, 0x74,
0x9b, 0x37, 0xfe, 0x9e, 0xe0, 0x6c, 0x62, 0xa8, 0x94, 0x2e, 0xf6, 0x7d, 0x90, 0xda, 0x61, 0x0b, 0x91, 0x56, 0x3b, 0x33, 0x0e, 0x5d, 0x59, 0x74, 0x9c, 0xf0, 0x96, 0x50, 0x02, 0x8e, 0xe8, 0x4e,
0xaf, 0x54, 0xcc, 0x26, 0x34, 0x94, 0xf7, 0xbb, 0x97, 0x05, 0xa6, 0xab, 0x10, 0x29, 0x4e, 0x9c, 0x89, 0x8e, 0xed, 0x11, 0x0b, 0x89, 0x3d, 0xe2, 0x13, 0x80, 0xa8, 0x3d, 0xf1, 0xde, 0xbd, 0x11,
0x4f, 0x73, 0xe2, 0x37, 0xa0, 0x8e, 0xa1, 0x08, 0x45, 0x41, 0x82, 0x9b, 0xd5, 0xa6, 0xf6, 0xa5, 0xef, 0xdd, 0x9c, 0xd6, 0xbb, 0x79, 0xe3, 0xef, 0x0b, 0xce, 0x26, 0x86, 0x4a, 0xe9, 0x62, 0xdf,
0x2c, 0x3b, 0xc6, 0x82, 0x8b, 0x09, 0x16, 0xfc, 0x37, 0x73, 0x3c, 0x6e, 0x55, 0x54, 0xd1, 0x88, 0x07, 0xa9, 0x1d, 0xb6, 0xf0, 0x4a, 0xc5, 0x6c, 0x42, 0x43, 0x79, 0x5f, 0x7c, 0x59, 0x60, 0xba,
0x07, 0xab, 0x3c, 0xe3, 0x3c, 0x58, 0x90, 0x9a, 0x0a, 0x7f, 0x0d, 0x5f, 0xcd, 0x67, 0xf3, 0xd5, 0x0a, 0x91, 0xe2, 0xc4, 0xf9, 0x34, 0x27, 0x7e, 0x03, 0xea, 0x18, 0xda, 0x50, 0x14, 0x24, 0xe3,
0x6c, 0x8e, 0x5d, 0xc8, 0xe4, 0xd8, 0xc6, 0x25, 0xb4, 0x76, 0x29, 0xeb, 0x8a, 0xf6, 0x64, 0x92, 0x04, 0x4f, 0xed, 0x4b, 0x59, 0x76, 0x8c, 0x05, 0x17, 0x13, 0x2c, 0xf8, 0x6f, 0xe6, 0x78, 0x1c,
0xec, 0xcb, 0x07, 0xb0, 0xca, 0x86, 0x10, 0x5d, 0x45, 0x38, 0x46, 0xdf, 0xd1, 0x08, 0xc7, 0xc9, 0xac, 0xa8, 0xa2, 0x11, 0x0f, 0x56, 0x79, 0xc6, 0x79, 0xb0, 0x20, 0x35, 0x15, 0xfe, 0x1a, 0xbe,
0x44, 0xb8, 0xb1, 0xdd, 0x87, 0x65, 0x91, 0x02, 0x17, 0xad, 0x1e, 0x24, 0x6c, 0x89, 0x23, 0xd0, 0x9a, 0xcf, 0xe6, 0xab, 0xd9, 0x1c, 0xbb, 0x90, 0xc9, 0xb1, 0x8d, 0x4b, 0x68, 0xed, 0x52, 0xd6,
0x63, 0x93, 0xd1, 0x1a, 0xb7, 0xe0, 0x66, 0x46, 0xc9, 0x42, 0x69, 0xf7, 0x9b, 0x39, 0x58, 0x6b, 0x15, 0xed, 0xc9, 0x24, 0xd9, 0x97, 0x0f, 0x60, 0x95, 0x0d, 0x21, 0xba, 0x8a, 0x70, 0x8c, 0xbe,
0xf3, 0x60, 0x38, 0xdf, 0xd8, 0xf5, 0xee, 0xcf, 0xe1, 0xa6, 0xba, 0x7d, 0xa1, 0xdd, 0x1a, 0xd5, 0xa3, 0x11, 0x8e, 0x93, 0x89, 0x70, 0x63, 0xbb, 0x0f, 0xcb, 0x22, 0x05, 0x2e, 0x5a, 0x3d, 0xe8,
0x2b, 0x29, 0x2f, 0x6e, 0x68, 0x77, 0x8e, 0xb0, 0xae, 0x2d, 0x58, 0x4f, 0xd6, 0x46, 0x54, 0x74, 0xd8, 0x12, 0x47, 0xa0, 0xc7, 0x26, 0xa3, 0x35, 0x6e, 0xc1, 0xcd, 0x8c, 0x92, 0x85, 0xd2, 0xee,
0x0f, 0x96, 0x77, 0xe9, 0xc9, 0xfc, 0xec, 0x80, 0x5e, 0x44, 0x75, 0x24, 0x50, 0x0c, 0xce, 0xbd, 0x37, 0x72, 0xb0, 0xd6, 0xe6, 0xc1, 0x75, 0xbe, 0xb1, 0xeb, 0xe2, 0x9f, 0xc3, 0x4d, 0x75, 0xfb,
0xe7, 0xa2, 0xa3, 0xf0, 0x37, 0xba, 0x67, 0x33, 0x1a, 0x2b, 0x98, 0xd1, 0x91, 0x34, 0xfa, 0x20, 0x42, 0xbb, 0x35, 0xaa, 0x57, 0x52, 0x5e, 0xdc, 0xd0, 0xee, 0x1c, 0x61, 0x5d, 0x5b, 0xb0, 0x9e,
0x64, 0x30, 0xa3, 0x23, 0xe3, 0x11, 0x10, 0x3d, 0x1f, 0x31, 0x47, 0xd8, 0x19, 0x78, 0x7e, 0x62, 0xac, 0x8d, 0xa8, 0xe8, 0x1e, 0x2c, 0xef, 0xd2, 0x93, 0xf9, 0xd9, 0x01, 0xbd, 0x88, 0xea, 0x48,
0x05, 0x57, 0x41, 0x48, 0xa7, 0xf2, 0x46, 0x34, 0x04, 0xf3, 0x93, 0x01, 0x87, 0x18, 0xef, 0x40, 0xa0, 0x18, 0x9c, 0x7b, 0xcf, 0x45, 0x47, 0xe1, 0x6f, 0x74, 0xcf, 0x66, 0x34, 0x56, 0x30, 0xa3,
0xfd, 0xc8, 0xbe, 0x32, 0xe9, 0x8f, 0xc4, 0xc5, 0xe3, 0x0d, 0x28, 0xcf, 0xec, 0x2b, 0xb6, 0x11, 0x23, 0x69, 0xf4, 0x41, 0xc8, 0x60, 0x46, 0x47, 0xc6, 0x23, 0x20, 0x7a, 0x3e, 0x62, 0x8e, 0xb0,
0x28, 0xfb, 0x2f, 0xa2, 0x8d, 0xdf, 0x2d, 0xc2, 0x02, 0xa7, 0x24, 0x77, 0xf9, 0xa3, 0x20, 0x8e, 0x33, 0xf0, 0xfc, 0xc4, 0x0a, 0xae, 0x82, 0x90, 0x4e, 0xe5, 0xcd, 0x69, 0x08, 0xe6, 0x27, 0x03,
0x8b, 0x8c, 0x58, 0x6e, 0x89, 0x1a, 0x28, 0xb5, 0x6b, 0xe6, 0xd3, 0xbb, 0xa6, 0x50, 0x56, 0xcb, 0x0e, 0x31, 0xde, 0x81, 0xfa, 0x91, 0x7d, 0x65, 0xd2, 0x1f, 0x89, 0xcb, 0xc7, 0x1b, 0x50, 0x9e,
0x48, 0x8b, 0xd2, 0x52, 0xe7, 0xce, 0xa7, 0x32, 0xbc, 0x62, 0x3c, 0xf4, 0x4b, 0x31, 0x7a, 0x4c, 0xd9, 0x57, 0x6c, 0x23, 0x50, 0xf6, 0x5f, 0x44, 0x1b, 0xbf, 0x53, 0x84, 0x05, 0x4e, 0x49, 0xee,
0x86, 0x87, 0xbd, 0x88, 0xfb, 0x52, 0x44, 0x27, 0x6d, 0x5e, 0x3b, 0x29, 0x0c, 0x88, 0x0d, 0x53, 0xf2, 0xd7, 0x4d, 0x1c, 0x17, 0x19, 0xb1, 0xdc, 0x12, 0x35, 0x50, 0x6a, 0xd7, 0xcc, 0xa7, 0x77,
0x07, 0x65, 0x1e, 0xe7, 0xcb, 0xf2, 0x36, 0x7d, 0xfc, 0x38, 0x9f, 0x3a, 0xb6, 0x57, 0x5e, 0x7e, 0x4d, 0xa1, 0xac, 0x96, 0x91, 0x1b, 0xa5, 0xa5, 0xce, 0x9d, 0x4f, 0x65, 0xb8, 0xc6, 0x78, 0x28,
0x6c, 0xe7, 0x5a, 0xec, 0x17, 0x1c, 0xdb, 0xe1, 0x15, 0x8e, 0xed, 0xaf, 0xe0, 0xc7, 0x70, 0x13, 0x99, 0x62, 0xf4, 0x2a, 0x0e, 0x0f, 0xa3, 0x11, 0xf7, 0xa5, 0x88, 0x4e, 0xda, 0xbc, 0x76, 0x52,
0x2a, 0x28, 0xe1, 0x69, 0xfb, 0x27, 0x93, 0xec, 0xd8, 0xfe, 0xf9, 0xa9, 0x76, 0xb0, 0xe5, 0x4e, 0x18, 0x10, 0x1b, 0xa6, 0x0e, 0xca, 0x3c, 0xce, 0x97, 0xe5, 0xcd, 0xfc, 0xf8, 0x71, 0x3e, 0x75,
0x54, 0xda, 0x06, 0x66, 0xd2, 0x1f, 0xfd, 0x6c, 0x14, 0xa3, 0x5f, 0x41, 0x59, 0x40, 0xd9, 0x84, 0x6c, 0xaf, 0xbc, 0xfc, 0xd8, 0xce, 0xb5, 0xd8, 0x2f, 0x38, 0xb6, 0xc3, 0x2b, 0x1c, 0xdb, 0x5f,
0x76, 0xed, 0xa9, 0x8c, 0x27, 0x8c, 0xbf, 0x59, 0xb7, 0x61, 0x84, 0xcd, 0x1f, 0xcd, 0x1d, 0x9f, 0xc1, 0x8f, 0xe1, 0x26, 0x54, 0x50, 0xc2, 0xd3, 0xf6, 0x4f, 0x26, 0xd9, 0xb1, 0xfd, 0xf3, 0x53,
0x8e, 0x65, 0x9c, 0x3f, 0x07, 0xb9, 0x07, 0x83, 0xb0, 0x06, 0xb2, 0x43, 0xb6, 0x2b, 0xdf, 0x03, 0xed, 0x60, 0xcb, 0x9d, 0xa8, 0xb4, 0x0d, 0xcc, 0xa4, 0x3f, 0xfa, 0xe9, 0x28, 0x46, 0xbf, 0x82,
0xa8, 0x98, 0x65, 0x27, 0x78, 0xca, 0x3e, 0x0d, 0x02, 0x4d, 0x8c, 0x88, 0x3e, 0xf3, 0x7c, 0x29, 0xb2, 0x80, 0xb2, 0x09, 0xed, 0xda, 0x53, 0x19, 0x9f, 0x18, 0x7f, 0xb3, 0x6e, 0xc3, 0x88, 0x9d,
0x9e, 0x18, 0xbf, 0x97, 0x83, 0xa6, 0x58, 0x5d, 0x0a, 0xa7, 0x1f, 0x60, 0x4b, 0xd7, 0xf9, 0xfc, 0x3f, 0x9a, 0x3b, 0x3e, 0x1d, 0xcb, 0xb8, 0x81, 0x0e, 0x72, 0x0f, 0x06, 0x61, 0x0d, 0x64, 0x87,
0xbc, 0x38, 0x6a, 0x9f, 0x01, 0x0d, 0x54, 0xed, 0x29, 0x59, 0x85, 0xab, 0x26, 0x6b, 0x0c, 0xb8, 0x6c, 0x57, 0x3e, 0x6c, 0x50, 0x31, 0xcb, 0x4e, 0xf0, 0x94, 0x7d, 0x1a, 0x04, 0x9a, 0x18, 0xd9,
0x27, 0xe4, 0x95, 0xd7, 0xa1, 0x26, 0x2f, 0x8f, 0x4c, 0x9d, 0x89, 0x7c, 0x37, 0x8a, 0xdf, 0x1e, 0x7d, 0xe6, 0xf9, 0x52, 0x3c, 0x31, 0x7e, 0x37, 0x07, 0x4d, 0xb1, 0xba, 0x14, 0x4e, 0x3f, 0xc0,
0x39, 0x74, 0x26, 0x52, 0xd4, 0xf1, 0x6d, 0x11, 0xdd, 0x21, 0x87, 0xa2, 0x8e, 0x69, 0x87, 0xd4, 0x96, 0xae, 0xf3, 0xf9, 0x79, 0x71, 0x14, 0x40, 0x03, 0x1a, 0xa8, 0xda, 0x53, 0xb2, 0x0a, 0x57,
0xf8, 0x83, 0x1c, 0x2c, 0x6b, 0x4d, 0x11, 0xeb, 0xf6, 0x3b, 0x50, 0x57, 0xef, 0x34, 0x50, 0x25, 0x4d, 0xd6, 0x18, 0x70, 0x4f, 0xc8, 0x2b, 0xaf, 0x43, 0x4d, 0x5e, 0x1e, 0x99, 0x3a, 0x13, 0xf9,
0x63, 0x6f, 0xc4, 0x79, 0x54, 0x94, 0xac, 0x36, 0x52, 0x90, 0x80, 0x55, 0x66, 0x6c, 0x5f, 0xf1, 0x00, 0x16, 0xbf, 0x3d, 0x72, 0xe8, 0x4c, 0xa4, 0xa8, 0xe3, 0xdb, 0x22, 0x5a, 0x44, 0x0e, 0x45,
0x1b, 0x0e, 0xf3, 0xa9, 0x3c, 0x97, 0x8f, 0xed, 0xab, 0x3d, 0x4a, 0x07, 0xf3, 0x29, 0xb9, 0x0b, 0x1d, 0xd3, 0x0e, 0xa9, 0xf1, 0xfb, 0x39, 0x58, 0xd6, 0x9a, 0x22, 0xd6, 0xed, 0x77, 0xa0, 0xae,
0xf5, 0xe7, 0x94, 0x3e, 0x53, 0x04, 0x9c, 0xb1, 0x03, 0x83, 0x09, 0x0a, 0x03, 0x1a, 0x53, 0xcf, 0x1e, 0x9c, 0xa0, 0x4a, 0xc6, 0xde, 0x88, 0xf3, 0xa8, 0x28, 0x59, 0x6d, 0xa4, 0x20, 0x01, 0xab,
0x0d, 0xcf, 0x15, 0x89, 0x38, 0x5f, 0x20, 0x90, 0xd3, 0x18, 0xff, 0x3a, 0x0f, 0x2b, 0x5c, 0x81, 0xcc, 0xd8, 0xbe, 0xe2, 0x37, 0x1c, 0xe6, 0x53, 0x79, 0x2e, 0x1f, 0xdb, 0x57, 0x7b, 0x94, 0x0e,
0x2c, 0xcc, 0x08, 0x82, 0x75, 0xb5, 0x60, 0x81, 0x6b, 0xf5, 0x39, 0xf3, 0xda, 0xbf, 0x61, 0x8a, 0xe6, 0x53, 0x72, 0x17, 0xea, 0xcf, 0x29, 0x7d, 0xa6, 0x08, 0x38, 0x63, 0x07, 0x06, 0x13, 0x14,
0x6f, 0xf2, 0xf1, 0x2b, 0x2a, 0xbd, 0x65, 0x00, 0x89, 0x6b, 0xba, 0xbf, 0x90, 0xee, 0xfe, 0xeb, 0x06, 0x34, 0xa6, 0x9e, 0x1b, 0x9e, 0x2b, 0x12, 0x71, 0xbe, 0x40, 0x20, 0xa7, 0x31, 0xfe, 0x75,
0xbb, 0x37, 0xcb, 0xa9, 0xa0, 0x94, 0xe5, 0x54, 0xf0, 0x2a, 0xa6, 0xfc, 0x54, 0xa8, 0x83, 0x72, 0x1e, 0x56, 0xb8, 0x02, 0x59, 0x98, 0x11, 0x04, 0xeb, 0x6a, 0xc1, 0x02, 0xd7, 0xea, 0x73, 0xe6,
0x3a, 0x44, 0xf0, 0x23, 0xd8, 0x88, 0xd1, 0x20, 0xb7, 0x76, 0x4e, 0x1d, 0x15, 0x7f, 0x7e, 0x55, 0xb5, 0x7f, 0xc3, 0x14, 0xdf, 0xe4, 0xe3, 0x57, 0x54, 0x7a, 0xcb, 0x40, 0x13, 0xd7, 0x74, 0x7f,
0xa3, 0x1e, 0x48, 0xdc, 0x76, 0x19, 0x4a, 0xc1, 0xc8, 0x9b, 0x51, 0x63, 0x1d, 0x56, 0xe3, 0xbd, 0x21, 0xdd, 0xfd, 0xd7, 0x77, 0x6f, 0x96, 0x53, 0x41, 0x29, 0xcb, 0xa9, 0xe0, 0x55, 0x4c, 0xf9,
0x2a, 0xb6, 0x89, 0xdf, 0xce, 0x41, 0x6b, 0x2f, 0x8a, 0xb5, 0xec, 0x04, 0xa1, 0xe7, 0xab, 0x90, 0xa9, 0x50, 0x07, 0xe5, 0x74, 0xc8, 0xe1, 0x47, 0xb0, 0x11, 0xa3, 0x41, 0x6e, 0xed, 0x9c, 0x3a,
0xfd, 0xb7, 0x01, 0xf8, 0x1b, 0x56, 0xa8, 0x06, 0x11, 0x41, 0xb2, 0x10, 0x82, 0x4a, 0x90, 0x9b, 0x2a, 0xee, 0xfd, 0xaa, 0x46, 0x3d, 0x90, 0xb8, 0xed, 0x32, 0x94, 0x82, 0x91, 0x37, 0xa3, 0xc6,
0x50, 0xa1, 0xee, 0x98, 0x23, 0xf9, 0x6c, 0x28, 0x53, 0x77, 0x2c, 0x55, 0x28, 0xa9, 0x4d, 0xbe, 0x3a, 0xac, 0xc6, 0x7b, 0x55, 0x6c, 0x13, 0xbf, 0x95, 0x83, 0xd6, 0x5e, 0x14, 0xbb, 0xd9, 0x09,
0x11, 0x17, 0x5f, 0x44, 0xb8, 0x17, 0xd6, 0x3b, 0xf4, 0x02, 0x85, 0x8d, 0xa2, 0x0a, 0xf7, 0x72, 0x42, 0xcf, 0x57, 0x4f, 0x0a, 0xdc, 0x06, 0xe0, 0x8f, 0x71, 0xa1, 0x1a, 0x44, 0x04, 0xdd, 0x42,
0x68, 0x5f, 0xa2, 0x77, 0x7c, 0x60, 0xfc, 0x83, 0x3c, 0x2c, 0x45, 0xf5, 0xe3, 0x01, 0xaf, 0xee, 0x08, 0x2a, 0x41, 0x6e, 0x42, 0x85, 0xba, 0x63, 0x8e, 0xe4, 0xb3, 0xa1, 0x4c, 0xdd, 0xb1, 0x54,
0xa6, 0x42, 0x77, 0x09, 0x7f, 0x28, 0xc5, 0xc3, 0xef, 0x8a, 0x29, 0xe1, 0xb0, 0xd3, 0x9a, 0xa6, 0xa1, 0xa4, 0x36, 0xf9, 0x46, 0x5c, 0x7c, 0x11, 0xe1, 0x63, 0x58, 0xef, 0xd0, 0x0b, 0x14, 0x36,
0x5a, 0xaf, 0xf0, 0x05, 0xda, 0x75, 0x89, 0x01, 0x35, 0x49, 0xe1, 0xcd, 0x43, 0x2d, 0xb4, 0x71, 0x8a, 0x2a, 0x7c, 0xcc, 0xa1, 0x7d, 0x89, 0xde, 0xf1, 0x81, 0xf1, 0x0f, 0xf3, 0xb0, 0x14, 0xd5,
0x95, 0x93, 0xf4, 0xe7, 0x21, 0x3b, 0x5e, 0xdb, 0x53, 0x26, 0xad, 0x88, 0x03, 0x6e, 0xc9, 0x9e, 0x8f, 0x07, 0xd0, 0xba, 0x9b, 0x0a, 0x05, 0x26, 0xfc, 0xa1, 0x14, 0x0f, 0xbf, 0x2b, 0xa6, 0x84,
0x86, 0x5d, 0x7c, 0x2c, 0x8d, 0x81, 0x59, 0x32, 0x3e, 0x98, 0x8c, 0x8a, 0xd1, 0x37, 0xf9, 0x69, 0xc3, 0x4e, 0x6b, 0x9a, 0x6a, 0xbd, 0xc2, 0x17, 0x68, 0xd7, 0x25, 0x06, 0xd4, 0x24, 0x85, 0x37,
0x8b, 0x8f, 0x1e, 0x9e, 0xb4, 0xf4, 0xa3, 0x08, 0x7f, 0xbc, 0x45, 0x1d, 0x45, 0x5e, 0x87, 0x1a, 0x0f, 0xb5, 0x50, 0xc9, 0x55, 0x4e, 0xd2, 0x9f, 0x87, 0xec, 0x78, 0x6d, 0x4f, 0x99, 0xb4, 0x22,
0xcf, 0x3c, 0x8a, 0x6e, 0x81, 0x71, 0x06, 0xc3, 0xae, 0x8b, 0x78, 0xa1, 0xe6, 0xf4, 0xe6, 0x31, 0x0e, 0xb8, 0x25, 0x7b, 0x1a, 0x76, 0xf1, 0xd5, 0x37, 0x06, 0x66, 0xc9, 0xf8, 0x60, 0x32, 0x2a,
0xcd, 0x0d, 0xf0, 0xa2, 0xe4, 0x8b, 0x57, 0xaa, 0xc5, 0x96, 0x32, 0x42, 0xd6, 0x14, 0xac, 0x17, 0x46, 0xdf, 0xe4, 0xa7, 0x2d, 0x3e, 0x7a, 0x78, 0xd2, 0xd2, 0x8f, 0x22, 0xfc, 0x15, 0x1a, 0x75,
0x30, 0x69, 0xe5, 0x66, 0xc6, 0xe8, 0x0a, 0x66, 0xb0, 0x03, 0x5a, 0x60, 0x6e, 0x39, 0x08, 0x9c, 0x14, 0x79, 0x1d, 0x6a, 0x3c, 0xf3, 0x28, 0xba, 0x05, 0xc6, 0x2d, 0x0c, 0xbb, 0x2e, 0xe2, 0x85,
0x23, 0xac, 0x4b, 0xee, 0x1b, 0xef, 0x7a, 0xb3, 0x79, 0x1a, 0x07, 0x44, 0xa7, 0x70, 0x3e, 0xd0, 0x9a, 0xd3, 0x9b, 0xc7, 0x34, 0x37, 0xc0, 0x8b, 0x92, 0x4f, 0x77, 0xa9, 0x16, 0x5b, 0xca, 0x08,
0xb1, 0xf0, 0x2a, 0x28, 0xd3, 0xf1, 0xd1, 0xe6, 0x07, 0xe0, 0x23, 0xd8, 0xec, 0x5c, 0x32, 0xc6, 0x59, 0x53, 0xb0, 0x5e, 0xc0, 0xa4, 0x95, 0x9b, 0x19, 0xa3, 0x2b, 0x98, 0xc1, 0x0e, 0x68, 0x81,
0xa2, 0x1c, 0xeb, 0x47, 0xcf, 0xe6, 0xd2, 0x3e, 0x9a, 0xb0, 0xb2, 0xe4, 0x5e, 0xc9, 0xca, 0x32, 0xbe, 0xe5, 0x20, 0x70, 0x8e, 0xb0, 0x2e, 0xb9, 0x6f, 0xbc, 0xeb, 0xcd, 0xe6, 0x69, 0x1c, 0x10,
0xe6, 0xc1, 0x0f, 0x54, 0x5e, 0x3f, 0x49, 0x26, 0x5c, 0xbf, 0x64, 0xbb, 0xd6, 0x09, 0x66, 0x21, 0x9d, 0xc2, 0xf9, 0x40, 0xc7, 0xc2, 0xb0, 0xa0, 0x4c, 0xc7, 0x47, 0x9b, 0x1f, 0x80, 0x8f, 0x60,
0xe3, 0xac, 0x30, 0x10, 0xcf, 0xd4, 0x08, 0x60, 0xe9, 0x70, 0x3e, 0x09, 0x9d, 0x1d, 0x05, 0x22, 0xb3, 0x73, 0xc9, 0x18, 0x8b, 0x72, 0xac, 0x1f, 0x3d, 0x9b, 0x4b, 0xfb, 0x68, 0xc2, 0xca, 0x92,
0x1f, 0x8b, 0x34, 0x58, 0x8e, 0xec, 0xb5, 0xcc, 0x82, 0x40, 0x15, 0x84, 0x9d, 0x35, 0x65, 0x19, 0x7b, 0x25, 0x2b, 0xcb, 0x98, 0x07, 0x3f, 0x50, 0x79, 0xfd, 0x24, 0x99, 0x70, 0xfd, 0x92, 0xed,
0x59, 0xe9, 0xf2, 0x96, 0xa6, 0xf1, 0x12, 0x8c, 0x9b, 0xb0, 0x11, 0x7d, 0xf1, 0x6e, 0x93, 0x3b, 0x5a, 0x27, 0x98, 0x85, 0x8c, 0xb5, 0xc2, 0x40, 0x3c, 0x53, 0x23, 0x80, 0xa5, 0xc3, 0xf9, 0x24,
0xd2, 0xdf, 0xca, 0xf1, 0x1b, 0x3b, 0x1c, 0x37, 0x70, 0xed, 0x59, 0x70, 0xee, 0x85, 0xa4, 0x03, 0x74, 0x76, 0x14, 0x88, 0x7c, 0x2c, 0xd2, 0x60, 0x39, 0xb2, 0xd7, 0x32, 0x0b, 0x02, 0x55, 0x10,
0x2b, 0x81, 0xe3, 0x9e, 0x4d, 0xa8, 0x9e, 0x7d, 0x20, 0x3a, 0x61, 0x2d, 0x5e, 0x37, 0x9e, 0x34, 0x76, 0xd6, 0x94, 0x65, 0x64, 0xa5, 0xcb, 0x5b, 0x9a, 0xc6, 0x4b, 0x30, 0x6e, 0xc2, 0x46, 0xf4,
0x30, 0x97, 0x79, 0x8a, 0x28, 0xb7, 0x80, 0x6c, 0x5f, 0x57, 0xc9, 0x68, 0x5a, 0x24, 0x7a, 0x23, 0xc5, 0xbb, 0x4d, 0xee, 0x48, 0x7f, 0x2b, 0xc7, 0x6f, 0xec, 0x70, 0xdc, 0xc0, 0xb5, 0x67, 0xc1,
0x5d, 0xf9, 0x2e, 0x2c, 0xc6, 0x0b, 0x22, 0x9f, 0x8a, 0x98, 0x21, 0x51, 0xad, 0x0a, 0x89, 0x88, 0xb9, 0x17, 0x92, 0x0e, 0xac, 0x04, 0x8e, 0x7b, 0x36, 0xa1, 0x7a, 0xf6, 0x81, 0xe8, 0x84, 0xb5,
0x09, 0xd1, 0x84, 0xa8, 0x45, 0x7d, 0x1f, 0x18, 0x7f, 0x31, 0x07, 0x2d, 0x93, 0xb2, 0x99, 0xab, 0x78, 0xdd, 0x78, 0xd2, 0xc0, 0x5c, 0xe6, 0x29, 0xa2, 0xdc, 0x02, 0xb2, 0x7d, 0x5d, 0x25, 0xa3,
0xd5, 0x52, 0xce, 0x99, 0xef, 0xa4, 0x72, 0xbd, 0xbe, 0xad, 0x32, 0x14, 0x89, 0xac, 0xd1, 0x7b, 0x69, 0x91, 0xe8, 0x8d, 0x74, 0xe5, 0xbb, 0xb0, 0x18, 0x2f, 0x88, 0x7c, 0x2a, 0x62, 0x86, 0x44,
0xd7, 0x0e, 0xc6, 0xfe, 0x8d, 0x54, 0x8b, 0xb6, 0x2b, 0xb0, 0xc0, 0x49, 0x8c, 0x0d, 0x58, 0x13, 0xb5, 0x2a, 0x24, 0x22, 0x26, 0x44, 0x13, 0xa2, 0x16, 0xf5, 0x7d, 0x60, 0xfc, 0xa5, 0x1c, 0xb4,
0xf5, 0x91, 0x75, 0x89, 0x0c, 0xfa, 0xb1, 0x12, 0x63, 0x06, 0xfd, 0x4d, 0x68, 0xf1, 0xab, 0xfd, 0x4c, 0xca, 0x66, 0xae, 0x56, 0x4b, 0x39, 0x67, 0xbe, 0x93, 0xca, 0xf5, 0xfa, 0xb6, 0xca, 0x50,
0x7a, 0x23, 0x44, 0xc2, 0x5d, 0x20, 0x87, 0xf6, 0xc8, 0xf6, 0x3d, 0xcf, 0x3d, 0xa2, 0xbe, 0x70, 0x24, 0xb2, 0x46, 0xef, 0x5d, 0x3b, 0x18, 0xfb, 0x37, 0x52, 0x2d, 0xda, 0xae, 0xc0, 0x02, 0x27,
0x99, 0x47, 0x41, 0x14, 0xed, 0xdd, 0x52, 0x62, 0xe6, 0x5f, 0x32, 0xe6, 0xbb, 0xe7, 0x4a, 0x0f, 0x31, 0x36, 0x60, 0x4d, 0xd4, 0x47, 0xd6, 0x25, 0x32, 0xe8, 0xc7, 0x4a, 0x8c, 0x19, 0xf4, 0x37,
0x41, 0xfe, 0x65, 0xf8, 0xb0, 0xb2, 0x6d, 0x3f, 0xa3, 0x32, 0x27, 0xd9, 0x45, 0x8f, 0xa1, 0x36, 0xa1, 0xc5, 0xaf, 0xf6, 0xeb, 0x8d, 0x10, 0x09, 0x77, 0x81, 0x1c, 0xda, 0x23, 0xdb, 0xf7, 0x3c,
0x53, 0x99, 0xca, 0x7e, 0x97, 0x61, 0x96, 0xd2, 0xc5, 0x9a, 0x3a, 0x35, 0xe3, 0x52, 0xa8, 0xb0, 0xf7, 0x88, 0xfa, 0xc2, 0x65, 0x1e, 0x05, 0x51, 0xb4, 0x77, 0x4b, 0x89, 0x99, 0x7f, 0xc9, 0x18,
0xc5, 0x00, 0x27, 0x63, 0xb9, 0xe7, 0x33, 0xd0, 0x53, 0x7a, 0xd5, 0x1d, 0x1b, 0x0f, 0x61, 0x35, 0xf2, 0x9e, 0x2b, 0x3d, 0x04, 0xf9, 0x97, 0xe1, 0xc3, 0xca, 0xb6, 0xfd, 0x8c, 0xca, 0x9c, 0x64,
0x5e, 0xa6, 0x60, 0x2d, 0x9b, 0x50, 0x99, 0x0a, 0x98, 0xa8, 0xbd, 0xfa, 0x66, 0x67, 0x16, 0x76, 0x17, 0x3d, 0x86, 0xda, 0x4c, 0x65, 0x2a, 0xfb, 0x5d, 0x86, 0x63, 0x4a, 0x17, 0x6b, 0xea, 0xd4,
0xee, 0x94, 0x69, 0xba, 0xbb, 0xea, 0x96, 0xfe, 0x63, 0xd8, 0x48, 0x61, 0x44, 0x86, 0x77, 0xa1, 0x8c, 0x4b, 0xa1, 0xc2, 0x16, 0x03, 0x9c, 0x8c, 0xe5, 0x9e, 0xcf, 0x40, 0x4f, 0xe9, 0x55, 0x77,
0xae, 0x55, 0x84, 0x37, 0xa3, 0x68, 0x82, 0xaa, 0x49, 0x60, 0x7c, 0x0e, 0x1b, 0xfc, 0xd8, 0x16, 0x6c, 0x3c, 0x84, 0xd5, 0x78, 0x99, 0x82, 0xb5, 0x6c, 0x42, 0x65, 0x2a, 0x60, 0xa2, 0xf6, 0xea,
0x25, 0x97, 0x5d, 0x90, 0x68, 0x45, 0x2e, 0xd9, 0x8a, 0x8f, 0xe5, 0x59, 0x53, 0x4f, 0x1a, 0x85, 0x9b, 0x9d, 0x59, 0xd8, 0xb9, 0x53, 0xa6, 0xe9, 0xee, 0xaa, 0x5b, 0xfa, 0x8f, 0x61, 0x23, 0x85,
0x2f, 0x1c, 0x23, 0x4e, 0x3a, 0x79, 0xc9, 0x4f, 0xe3, 0x18, 0xd6, 0xd3, 0xdd, 0xc7, 0xea, 0xff, 0x11, 0x19, 0xde, 0x85, 0xba, 0x56, 0x11, 0xde, 0x8c, 0xa2, 0x09, 0xaa, 0x26, 0x81, 0xf1, 0x39,
0x53, 0x75, 0xb9, 0xec, 0x9e, 0x08, 0xad, 0xba, 0xe7, 0xbf, 0xe4, 0x78, 0xff, 0xc4, 0x50, 0xa2, 0x6c, 0xf0, 0x63, 0x5b, 0x94, 0x5c, 0x76, 0x41, 0xa2, 0x15, 0xb9, 0x64, 0x2b, 0x3e, 0x96, 0x67,
0x9a, 0x63, 0x20, 0x53, 0x1a, 0x9e, 0x7b, 0x63, 0x2b, 0x5d, 0xf2, 0x23, 0xe5, 0x63, 0x96, 0x99, 0x4d, 0x3d, 0x69, 0x14, 0x0e, 0x71, 0x8c, 0x38, 0xe9, 0xe4, 0x25, 0x3f, 0x8d, 0x63, 0x58, 0x4f,
0x76, 0xeb, 0x10, 0x13, 0x6a, 0x18, 0x71, 0xdb, 0x61, 0x9a, 0x84, 0x6f, 0x8e, 0x60, 0x3d, 0x9b, 0x77, 0x1f, 0xab, 0xff, 0x9f, 0xaa, 0xcb, 0x65, 0xf7, 0x44, 0x68, 0xd5, 0x3d, 0xff, 0x25, 0xc7,
0x38, 0xc3, 0x33, 0xeb, 0xa3, 0xb8, 0x3c, 0x7f, 0xfb, 0xda, 0xe6, 0xb3, 0x6a, 0xe9, 0xe2, 0xfd, 0xfb, 0x27, 0x86, 0x12, 0xd5, 0x1c, 0x03, 0x99, 0xd2, 0xf0, 0xdc, 0x1b, 0x5b, 0xe9, 0x92, 0x1f,
0xef, 0x56, 0xa0, 0x2c, 0x54, 0x35, 0x64, 0x0b, 0x8a, 0x23, 0xe9, 0xe5, 0x1b, 0x85, 0xb0, 0x14, 0x29, 0x1f, 0xb3, 0xcc, 0xb4, 0x5b, 0x87, 0x98, 0x50, 0xc3, 0x88, 0xdb, 0x0e, 0xd3, 0x24, 0x7c,
0x58, 0xf9, 0x7f, 0x07, 0x7d, 0x7d, 0x19, 0x1d, 0x79, 0x0c, 0x8b, 0x71, 0x47, 0x97, 0x44, 0xe8, 0x73, 0x04, 0xeb, 0xd9, 0xc4, 0x19, 0x9e, 0x59, 0x1f, 0xc5, 0xe5, 0xf9, 0xdb, 0xd7, 0x36, 0x9f,
0x9a, 0xb8, 0x87, 0x4a, 0x63, 0x94, 0x70, 0x22, 0xa8, 0x46, 0x32, 0x18, 0x17, 0x4d, 0x2b, 0xe7, 0x55, 0x4b, 0x17, 0xef, 0x7f, 0xa7, 0x02, 0x65, 0xa1, 0xaa, 0x21, 0x5b, 0x50, 0x1c, 0x49, 0x2f,
0x9a, 0x90, 0xe6, 0xb9, 0xec, 0x58, 0x17, 0x9c, 0xdb, 0xd6, 0xc3, 0x47, 0x9f, 0x08, 0xa3, 0x42, 0xdf, 0x28, 0x24, 0xa6, 0xc0, 0xca, 0xff, 0x3b, 0xe8, 0xeb, 0xcb, 0xe8, 0xc8, 0x63, 0x58, 0x8c,
0x0d, 0x81, 0x83, 0x73, 0xfb, 0xe1, 0xa3, 0x4f, 0x92, 0x07, 0x36, 0x11, 0xb9, 0x46, 0x3b, 0xb0, 0x3b, 0xba, 0x24, 0x42, 0xd7, 0xc4, 0x3d, 0x54, 0x1a, 0xa3, 0x84, 0x13, 0x41, 0x35, 0x92, 0xc1,
0xad, 0x42, 0x89, 0x07, 0xc6, 0xe7, 0xee, 0x9a, 0xfc, 0x43, 0xaa, 0x33, 0xe6, 0x3e, 0xb5, 0xc4, 0xb8, 0x68, 0x5a, 0x39, 0xd7, 0x84, 0x34, 0xcf, 0x65, 0xc7, 0xba, 0xe0, 0xdc, 0xb6, 0x1e, 0x3e,
0xc5, 0x1a, 0xbe, 0x8b, 0xf2, 0x77, 0xc1, 0x88, 0xc0, 0x0d, 0x10, 0xc5, 0xd5, 0x89, 0xeb, 0xb0, 0xfa, 0x44, 0x18, 0x15, 0x6a, 0x08, 0x1c, 0x9c, 0xdb, 0x0f, 0x1f, 0x7d, 0x92, 0x3c, 0xb0, 0x89,
0x70, 0x1e, 0xbd, 0x74, 0xd0, 0x30, 0xc5, 0x97, 0xf1, 0xbf, 0x4a, 0x50, 0xd3, 0x3a, 0x85, 0xd4, 0xc8, 0x35, 0xda, 0x81, 0x6d, 0x15, 0x4a, 0x3c, 0xd0, 0x3e, 0x77, 0xd7, 0xe4, 0x1f, 0x52, 0x9d,
0xa1, 0x62, 0x76, 0x06, 0x1d, 0xf3, 0x8b, 0xce, 0x6e, 0xf3, 0x06, 0xb9, 0x07, 0x6f, 0x75, 0x7b, 0x31, 0xf7, 0xa9, 0x25, 0x2e, 0xd6, 0xf0, 0x5d, 0x94, 0x3f, 0x70, 0x46, 0x04, 0x6e, 0x80, 0x28,
0x3b, 0x7d, 0xd3, 0xec, 0xec, 0x0c, 0xad, 0xbe, 0x69, 0xc9, 0xc8, 0xaa, 0x47, 0xed, 0xaf, 0x0e, 0xae, 0x4e, 0x5c, 0x87, 0x85, 0xf3, 0xe8, 0xe5, 0x84, 0x86, 0x29, 0xbe, 0x8c, 0xff, 0x59, 0x82,
0x3b, 0xbd, 0xa1, 0xb5, 0xdb, 0x19, 0xb6, 0xbb, 0x07, 0x83, 0x66, 0x8e, 0xbc, 0x06, 0xad, 0x88, 0x9a, 0xd6, 0x29, 0xa4, 0x0e, 0x15, 0xb3, 0x33, 0xe8, 0x98, 0x5f, 0x74, 0x76, 0x9b, 0x37, 0xc8,
0x52, 0xa2, 0xdb, 0x87, 0xfd, 0xe3, 0xde, 0xb0, 0x99, 0x27, 0x77, 0xe0, 0xd6, 0x5e, 0xb7, 0xd7, 0x3d, 0x78, 0xab, 0xdb, 0xdb, 0xe9, 0x9b, 0x66, 0x67, 0x67, 0x68, 0xf5, 0x4d, 0x4b, 0x46, 0x6a,
0x3e, 0xb0, 0x22, 0x9a, 0x9d, 0x83, 0xe1, 0x17, 0x56, 0xe7, 0x17, 0x8e, 0xba, 0xe6, 0x57, 0xcd, 0x3d, 0x6a, 0x7f, 0x75, 0xd8, 0xe9, 0x0d, 0xad, 0xdd, 0xce, 0xb0, 0xdd, 0x3d, 0x18, 0x34, 0x73,
0x42, 0x16, 0xc1, 0xfe, 0xf0, 0x60, 0x47, 0xe6, 0x50, 0x24, 0x37, 0x61, 0x8d, 0x13, 0xf0, 0x24, 0xe4, 0x35, 0x68, 0x45, 0x94, 0x12, 0xdd, 0x3e, 0xec, 0x1f, 0xf7, 0x86, 0xcd, 0x3c, 0xb9, 0x03,
0xd6, 0xb0, 0xdf, 0xb7, 0x06, 0xfd, 0x7e, 0xaf, 0x59, 0x22, 0xcb, 0xd0, 0xe8, 0xf6, 0xbe, 0x68, 0xb7, 0xf6, 0xba, 0xbd, 0xf6, 0x81, 0x15, 0xd1, 0xec, 0x1c, 0x0c, 0xbf, 0xb0, 0x3a, 0x3f, 0x77,
0x1f, 0x74, 0x77, 0x2d, 0xb3, 0xd3, 0x3e, 0x38, 0x6c, 0x2e, 0x90, 0x15, 0x58, 0x4a, 0xd2, 0x95, 0xd4, 0x35, 0xbf, 0x6a, 0x16, 0xb2, 0x08, 0xf6, 0x87, 0x07, 0x3b, 0x32, 0x87, 0x22, 0xb9, 0x09,
0x59, 0x16, 0x92, 0xae, 0xdf, 0xeb, 0xf6, 0x7b, 0xd6, 0x17, 0x1d, 0x73, 0xd0, 0xed, 0xf7, 0x9a, 0x6b, 0x9c, 0x80, 0x27, 0xb1, 0x86, 0xfd, 0xbe, 0x35, 0xe8, 0xf7, 0x7b, 0xcd, 0x12, 0x59, 0x86,
0x15, 0xb2, 0x0e, 0x24, 0x8e, 0xda, 0x3f, 0x6c, 0xef, 0x34, 0xab, 0x64, 0x0d, 0x96, 0xe3, 0xf0, 0x46, 0xb7, 0xf7, 0x45, 0xfb, 0xa0, 0xbb, 0x6b, 0x99, 0x9d, 0xf6, 0xc1, 0x61, 0x73, 0x81, 0xac,
0xa7, 0x9d, 0xaf, 0x9a, 0x40, 0x5a, 0xb0, 0xca, 0x2b, 0x66, 0x6d, 0x77, 0x0e, 0xfa, 0x5f, 0x5a, 0xc0, 0x52, 0x92, 0xae, 0xcc, 0xb2, 0x90, 0x74, 0xfd, 0x5e, 0xb7, 0xdf, 0xb3, 0xbe, 0xe8, 0x98,
0x87, 0xdd, 0x5e, 0xf7, 0xf0, 0xf8, 0xb0, 0x59, 0xc3, 0xf8, 0xd6, 0x9d, 0x8e, 0xd5, 0xed, 0x0d, 0x83, 0x6e, 0xbf, 0xd7, 0xac, 0x90, 0x75, 0x20, 0x71, 0xd4, 0xfe, 0x61, 0x7b, 0xa7, 0x59, 0x25,
0x8e, 0xf7, 0xf6, 0xba, 0x3b, 0xdd, 0x4e, 0x6f, 0xd8, 0xac, 0xf3, 0x92, 0xb3, 0x1a, 0xde, 0x60, 0x6b, 0xb0, 0x1c, 0x87, 0x3f, 0xed, 0x7c, 0xd5, 0x04, 0xd2, 0x82, 0x55, 0x5e, 0x31, 0x6b, 0xbb,
0x09, 0xc4, 0x55, 0x4a, 0x6b, 0xb7, 0x3b, 0x68, 0x6f, 0x1f, 0x74, 0x76, 0x9b, 0x8b, 0xe4, 0x36, 0x73, 0xd0, 0xff, 0xd2, 0x3a, 0xec, 0xf6, 0xba, 0x87, 0xc7, 0x87, 0xcd, 0x1a, 0xc6, 0xcb, 0xee,
0xdc, 0x1c, 0x76, 0x0e, 0x8f, 0xfa, 0x66, 0xdb, 0xfc, 0x4a, 0x5e, 0xb5, 0xb4, 0xf6, 0xda, 0xdd, 0x74, 0xac, 0x6e, 0x6f, 0x70, 0xbc, 0xb7, 0xd7, 0xdd, 0xe9, 0x76, 0x7a, 0xc3, 0x66, 0x9d, 0x97,
0x83, 0x63, 0xb3, 0xd3, 0x5c, 0x22, 0x6f, 0xc0, 0x6d, 0xb3, 0xf3, 0x83, 0xe3, 0xae, 0xd9, 0xd9, 0x9c, 0xd5, 0xf0, 0x06, 0x4b, 0x20, 0xae, 0x52, 0x5a, 0xbb, 0xdd, 0x41, 0x7b, 0xfb, 0xa0, 0xb3,
0xb5, 0x7a, 0xfd, 0xdd, 0x8e, 0xb5, 0xd7, 0x69, 0x0f, 0x8f, 0xcd, 0x8e, 0x75, 0xd8, 0x1d, 0x0c, 0xdb, 0x5c, 0x24, 0xb7, 0xe1, 0xe6, 0xb0, 0x73, 0x78, 0xd4, 0x37, 0xdb, 0xe6, 0x57, 0xf2, 0xaa,
0xba, 0xbd, 0x27, 0xcd, 0x26, 0x79, 0x0b, 0xee, 0x2a, 0x12, 0x95, 0x41, 0x82, 0x6a, 0x99, 0xb5, 0xa5, 0xb5, 0xd7, 0xee, 0x1e, 0x1c, 0x9b, 0x9d, 0xe6, 0x12, 0x79, 0x03, 0x6e, 0x9b, 0x9d, 0x1f,
0x4f, 0x0e, 0x69, 0xaf, 0xf3, 0x0b, 0x43, 0xeb, 0xa8, 0xd3, 0x31, 0x9b, 0x84, 0x6c, 0xc2, 0x7a, 0x1c, 0x77, 0xcd, 0xce, 0xae, 0xd5, 0xeb, 0xef, 0x76, 0xac, 0xbd, 0x4e, 0x7b, 0x78, 0x6c, 0x76,
0x54, 0x3c, 0x2f, 0x40, 0x94, 0xbd, 0xc2, 0x70, 0x47, 0x1d, 0xf3, 0xb0, 0xdd, 0x63, 0x03, 0x1c, 0xac, 0xc3, 0xee, 0x60, 0xd0, 0xed, 0x3d, 0x69, 0x36, 0xc9, 0x5b, 0x70, 0x57, 0x91, 0xa8, 0x0c,
0xc3, 0xad, 0xb2, 0x6a, 0x47, 0xb8, 0x64, 0xb5, 0xd7, 0x08, 0x81, 0x45, 0x6d, 0x54, 0xf6, 0xda, 0x12, 0x54, 0xcb, 0xac, 0x7d, 0x72, 0x48, 0x7b, 0x9d, 0x9f, 0x1b, 0x5a, 0x47, 0x9d, 0x8e, 0xd9,
0x66, 0x73, 0x9d, 0x2c, 0x41, 0xed, 0xf0, 0xe8, 0xc8, 0x1a, 0x76, 0x0f, 0x3b, 0xfd, 0xe3, 0x61, 0x24, 0x64, 0x13, 0xd6, 0xa3, 0xe2, 0x79, 0x01, 0xa2, 0xec, 0x15, 0x86, 0x3b, 0xea, 0x98, 0x87,
0x73, 0x23, 0x3d, 0x4a, 0x47, 0xed, 0xaf, 0x0e, 0xfa, 0xed, 0xdd, 0x66, 0x8b, 0xac, 0x41, 0xb3, 0xed, 0x1e, 0x1b, 0xe0, 0x18, 0x6e, 0x95, 0x55, 0x3b, 0xc2, 0x25, 0xab, 0xbd, 0x46, 0x08, 0x2c,
0xdb, 0x1b, 0x76, 0x4c, 0x36, 0x0d, 0x64, 0xae, 0xff, 0xb5, 0x4c, 0x56, 0x61, 0x49, 0x36, 0x42, 0x6a, 0xa3, 0xb2, 0xd7, 0x36, 0x9b, 0xeb, 0x64, 0x09, 0x6a, 0x87, 0x47, 0x47, 0xd6, 0xb0, 0x7b,
0x42, 0xff, 0xa8, 0x4c, 0x36, 0x80, 0x1c, 0xf7, 0xcc, 0x4e, 0x7b, 0x97, 0xf5, 0xa9, 0x42, 0xfc, 0xd8, 0xe9, 0x1f, 0x0f, 0x9b, 0x1b, 0xe9, 0x51, 0x3a, 0x6a, 0x7f, 0x75, 0xd0, 0x6f, 0xef, 0x36,
0xb7, 0xb2, 0x30, 0x2f, 0xff, 0x5e, 0x41, 0xc9, 0x81, 0x91, 0x83, 0x59, 0xfc, 0xd5, 0xa2, 0xba, 0x5b, 0x64, 0x0d, 0x9a, 0xdd, 0xde, 0xb0, 0x63, 0xb2, 0x69, 0x20, 0x73, 0xfd, 0xaf, 0x65, 0xb2,
0xf6, 0xda, 0xd0, 0xcb, 0x1e, 0x8b, 0xd4, 0x0e, 0xf7, 0x85, 0xd4, 0xe1, 0x3e, 0xa5, 0x3d, 0x6a, 0x0a, 0x4b, 0xb2, 0x11, 0x12, 0xfa, 0x87, 0x65, 0xb2, 0x01, 0xe4, 0xb8, 0x67, 0x76, 0xda, 0xbb,
0xe8, 0x27, 0x8f, 0x37, 0xa1, 0x31, 0xe5, 0x2f, 0x18, 0x89, 0x27, 0x30, 0x40, 0x78, 0x5b, 0x72, 0xac, 0x4f, 0x15, 0xe2, 0xbf, 0x95, 0x85, 0x79, 0xf9, 0x77, 0x0b, 0x4a, 0x0e, 0x8c, 0x1c, 0xcc,
0x20, 0x7f, 0xff, 0x22, 0xf5, 0x5a, 0x62, 0x29, 0xfd, 0x5a, 0x62, 0xd6, 0x09, 0x73, 0x21, 0xeb, 0xe2, 0xaf, 0x20, 0xd5, 0xb5, 0xd7, 0x8b, 0x5e, 0xf6, 0xea, 0xa5, 0x76, 0xb8, 0x2f, 0xa4, 0x0e,
0x84, 0x79, 0x1f, 0x96, 0x39, 0xd7, 0x72, 0x5c, 0x67, 0x2a, 0xf5, 0x36, 0xe2, 0xed, 0x41, 0xe4, 0xf7, 0x29, 0xed, 0x51, 0x43, 0x3f, 0x79, 0xbc, 0x09, 0x8d, 0x29, 0x7f, 0x11, 0x49, 0x3c, 0xa9,
0x5e, 0x1c, 0x2e, 0x0f, 0xb4, 0xf2, 0xd0, 0x2b, 0xb8, 0x4b, 0x59, 0x9c, 0x77, 0x63, 0x67, 0x5d, 0x01, 0xc2, 0xdb, 0x92, 0x03, 0xf9, 0x7b, 0x1a, 0xa9, 0x67, 0x1f, 0x4b, 0xe9, 0x67, 0x1f, 0xb3,
0xce, 0x54, 0xd4, 0x59, 0x57, 0x95, 0x60, 0x5f, 0x46, 0x25, 0xd4, 0xb4, 0x12, 0x38, 0x1c, 0x4b, 0x4e, 0x98, 0x0b, 0x59, 0x27, 0xcc, 0xfb, 0xb0, 0xcc, 0xb9, 0x96, 0xe3, 0x3a, 0x53, 0xa9, 0xb7,
0xb8, 0x0f, 0xcb, 0xf4, 0x32, 0xf4, 0x6d, 0xcb, 0x9b, 0xd9, 0x3f, 0x9a, 0xa3, 0x8b, 0x8c, 0x8d, 0x11, 0x8f, 0x28, 0x22, 0xf7, 0xe2, 0x70, 0x79, 0xa0, 0x95, 0x87, 0x5e, 0xc1, 0x5d, 0xca, 0xe2,
0x5a, 0xa4, 0xba, 0xb9, 0x84, 0x88, 0x3e, 0xc2, 0x77, 0xed, 0xd0, 0x36, 0x7e, 0x09, 0x40, 0x6d, 0xbc, 0x1b, 0x3b, 0xeb, 0x72, 0xa6, 0xa2, 0xce, 0xba, 0xaa, 0x04, 0xfb, 0x32, 0x2a, 0xa1, 0xa6,
0xb8, 0xf8, 0x86, 0xa3, 0xeb, 0xc9, 0x3b, 0xb5, 0x75, 0x93, 0x7f, 0xe0, 0x38, 0x86, 0x9e, 0x6f, 0x95, 0xc0, 0xe1, 0x58, 0xc2, 0x7d, 0x58, 0xa6, 0x97, 0xa1, 0x6f, 0x5b, 0xde, 0xcc, 0xfe, 0xd1,
0x9f, 0xd1, 0xae, 0xb4, 0x0a, 0x47, 0x00, 0x72, 0x0b, 0x0a, 0xde, 0x4c, 0xfa, 0x22, 0x56, 0x65, 0x1c, 0x5d, 0x64, 0x6c, 0xd4, 0x22, 0xd5, 0xcd, 0x25, 0x44, 0xf4, 0x11, 0xbe, 0x6b, 0x87, 0xb6,
0x4c, 0xf7, 0x99, 0xc9, 0xa0, 0xc6, 0x27, 0x90, 0xef, 0xcf, 0xae, 0x95, 0xa2, 0x5a, 0x50, 0x96, 0xf1, 0x0b, 0x00, 0x6a, 0xc3, 0xc5, 0xc7, 0x28, 0x5d, 0x4f, 0xde, 0xa9, 0xad, 0x9b, 0xfc, 0x03,
0x4f, 0x28, 0xe7, 0xd1, 0xff, 0x50, 0x7e, 0xde, 0xff, 0xb3, 0x50, 0xd3, 0x1e, 0xdd, 0x22, 0x1b, 0xc7, 0x31, 0xf4, 0x7c, 0xfb, 0x8c, 0x76, 0xa5, 0x55, 0x38, 0x02, 0x90, 0x5b, 0x50, 0xf0, 0x66,
0xb0, 0xf2, 0x65, 0x77, 0xd8, 0xeb, 0x0c, 0x06, 0xd6, 0xd1, 0xf1, 0xf6, 0xd3, 0xce, 0x57, 0xd6, 0xd2, 0x17, 0xb1, 0x2a, 0x63, 0xc4, 0xcf, 0x4c, 0x06, 0x35, 0x3e, 0x81, 0x7c, 0x7f, 0x76, 0xad,
0x7e, 0x7b, 0xb0, 0xdf, 0xbc, 0xc1, 0xd8, 0x4c, 0xaf, 0x33, 0x18, 0x76, 0x76, 0x63, 0xf0, 0x1c, 0x14, 0xd5, 0x82, 0xb2, 0x7c, 0x0b, 0x3a, 0x8f, 0xfe, 0x87, 0xf2, 0xf3, 0xfe, 0x9f, 0x87, 0x9a,
0x79, 0x1d, 0x36, 0x8f, 0x7b, 0xc7, 0x83, 0xce, 0xae, 0x95, 0x95, 0x2e, 0xcf, 0xd6, 0x95, 0xc0, 0xf6, 0x88, 0x17, 0xd9, 0x80, 0x95, 0x2f, 0xbb, 0xc3, 0x5e, 0x67, 0x30, 0xb0, 0x8e, 0x8e, 0xb7,
0x67, 0x24, 0x2f, 0xdc, 0xff, 0x65, 0x58, 0x8c, 0xc7, 0x49, 0x21, 0x00, 0x0b, 0x07, 0x9d, 0x27, 0x9f, 0x76, 0xbe, 0xb2, 0xf6, 0xdb, 0x83, 0xfd, 0xe6, 0x0d, 0xc6, 0x66, 0x7a, 0x9d, 0xc1, 0xb0,
0xed, 0x9d, 0xaf, 0x78, 0xcc, 0xfe, 0xc1, 0xb0, 0x3d, 0xec, 0xee, 0x58, 0x22, 0x46, 0x3f, 0xe3, 0xb3, 0x1b, 0x83, 0xe7, 0xc8, 0xeb, 0xb0, 0x79, 0xdc, 0x3b, 0x1e, 0x74, 0x76, 0xad, 0xac, 0x74,
0x61, 0x39, 0x52, 0x83, 0x72, 0xbb, 0xb7, 0xb3, 0xdf, 0x37, 0x07, 0xcd, 0x3c, 0x79, 0x0d, 0x36, 0x79, 0xb6, 0xae, 0x04, 0x3e, 0x23, 0x79, 0xe1, 0xfe, 0x2f, 0xc2, 0x62, 0x3c, 0x4e, 0x0a, 0x01,
0xe4, 0x12, 0xda, 0xe9, 0x1f, 0x1e, 0x76, 0x87, 0xc8, 0xbe, 0x87, 0x5f, 0x1d, 0xb1, 0x15, 0x73, 0x58, 0x38, 0xe8, 0x3c, 0x69, 0xef, 0x7c, 0xc5, 0xdf, 0x00, 0x18, 0x0c, 0xdb, 0xc3, 0xee, 0x8e,
0xdf, 0x86, 0x6a, 0xf4, 0xbc, 0x00, 0xb2, 0xc4, 0xee, 0xb0, 0xdb, 0x1e, 0x46, 0xfb, 0x41, 0xf3, 0x25, 0x62, 0xfe, 0x33, 0x1e, 0x96, 0x23, 0x35, 0x28, 0xb7, 0x7b, 0x3b, 0xfb, 0x7d, 0x73, 0xd0,
0x06, 0xe3, 0xb8, 0x11, 0x18, 0xdf, 0x08, 0x68, 0xe6, 0xf8, 0x55, 0x72, 0x09, 0xe4, 0xa5, 0x37, 0xcc, 0x93, 0xd7, 0x60, 0x43, 0x2e, 0xa1, 0x9d, 0xfe, 0xe1, 0x61, 0x77, 0x88, 0xec, 0x7b, 0xf8,
0xf3, 0x8c, 0x0d, 0x44, 0xd0, 0xed, 0xfe, 0x90, 0x35, 0xe1, 0x57, 0x60, 0x31, 0x1e, 0xc5, 0x9f, 0xd5, 0x11, 0x5b, 0x31, 0xf7, 0x6d, 0xa8, 0x46, 0xcf, 0x15, 0x20, 0x4b, 0xec, 0x0e, 0xbb, 0xed,
0x34, 0xa1, 0xce, 0xca, 0xd7, 0x8a, 0x00, 0x58, 0xe0, 0x35, 0x6e, 0xe6, 0x38, 0xcf, 0xdf, 0xe9, 0x61, 0xb4, 0x1f, 0x34, 0x6f, 0x30, 0x8e, 0x1b, 0x81, 0xf1, 0xcd, 0x81, 0x66, 0x8e, 0x5f, 0x25,
0x1f, 0x76, 0x7b, 0x4f, 0x70, 0xa3, 0x68, 0xe6, 0x19, 0xa8, 0x7f, 0x3c, 0x7c, 0xd2, 0x57, 0xa0, 0x97, 0x40, 0x5e, 0x7a, 0x33, 0xcf, 0xd8, 0x40, 0x04, 0xdd, 0xee, 0x0f, 0x59, 0x13, 0x7e, 0x09,
0x02, 0x4b, 0xc1, 0x9b, 0xd3, 0x2c, 0xde, 0xff, 0x11, 0x2c, 0xa7, 0xe2, 0xfd, 0xb3, 0x5a, 0xf7, 0x16, 0xe3, 0xaf, 0x02, 0x90, 0x26, 0xd4, 0x59, 0xf9, 0x5a, 0x11, 0x00, 0x0b, 0xbc, 0xc6, 0xcd,
0x8f, 0x87, 0x3b, 0xfd, 0x43, 0xbd, 0x9c, 0x1a, 0x94, 0x77, 0x0e, 0xda, 0xdd, 0x43, 0x34, 0xd4, 0x1c, 0xe7, 0xf9, 0x3b, 0xfd, 0xc3, 0x6e, 0xef, 0x09, 0x6e, 0x14, 0xcd, 0x3c, 0x03, 0xf5, 0x8f,
0x34, 0xa0, 0x7a, 0xdc, 0x93, 0x9f, 0xf9, 0xf8, 0x4b, 0x05, 0x05, 0xc6, 0xbd, 0xf6, 0xba, 0xe6, 0x87, 0x4f, 0xfa, 0x0a, 0x54, 0x60, 0x29, 0x78, 0x73, 0x9a, 0xc5, 0xfb, 0x3f, 0x82, 0xe5, 0xd4,
0x60, 0x68, 0x0d, 0x86, 0xed, 0x27, 0x9d, 0x66, 0x91, 0xa5, 0x95, 0xac, 0xac, 0x74, 0xff, 0x73, 0xfb, 0x01, 0xac, 0xd6, 0xfd, 0xe3, 0xe1, 0x4e, 0xff, 0x50, 0x2f, 0xa7, 0x06, 0xe5, 0x9d, 0x83,
0x58, 0x8c, 0x3b, 0xce, 0xc7, 0xed, 0x6f, 0x9b, 0xb0, 0xbe, 0xdd, 0x19, 0x7e, 0xd9, 0xe9, 0xf4, 0x76, 0xf7, 0x10, 0x0d, 0x35, 0x0d, 0xa8, 0x1e, 0xf7, 0xe4, 0x67, 0x3e, 0xfe, 0xf2, 0x41, 0x81,
0x70, 0xc8, 0x77, 0x3a, 0xbd, 0xa1, 0xd9, 0x3e, 0xe8, 0x0e, 0xbf, 0x6a, 0xe6, 0xee, 0x3f, 0x86, 0x71, 0xaf, 0xbd, 0xae, 0x39, 0x18, 0x5a, 0x83, 0x61, 0xfb, 0x49, 0xa7, 0x59, 0x64, 0x69, 0x25,
0x66, 0xd2, 0xe9, 0x23, 0xe6, 0x25, 0xf3, 0x22, 0x77, 0x9a, 0xfb, 0xff, 0x2e, 0x07, 0xab, 0x59, 0x2b, 0x2b, 0xdd, 0xff, 0x1c, 0x16, 0xe3, 0x8e, 0xf3, 0x71, 0xfb, 0xdb, 0x26, 0xac, 0x6f, 0x77,
0xe6, 0x41, 0x36, 0x31, 0x05, 0x23, 0x64, 0x3b, 0xe5, 0xa0, 0xdf, 0xb3, 0x7a, 0x7d, 0x8c, 0xd4, 0x86, 0x5f, 0x76, 0x3a, 0x3d, 0x1c, 0xf2, 0x9d, 0x4e, 0x6f, 0x68, 0xb6, 0x0f, 0xba, 0xc3, 0xaf,
0xbd, 0x09, 0xeb, 0x09, 0x84, 0x6c, 0x45, 0x8e, 0xdc, 0x82, 0x8d, 0x54, 0x22, 0xcb, 0xec, 0x1f, 0x9a, 0xb9, 0xfb, 0x8f, 0xa1, 0x99, 0x74, 0xfa, 0x88, 0x79, 0xc9, 0xbc, 0xc8, 0x9d, 0xe6, 0xfe,
0xe3, 0x58, 0xb6, 0x60, 0x35, 0x81, 0xec, 0x98, 0x66, 0xdf, 0x6c, 0x16, 0xc8, 0x7b, 0x70, 0x2f, 0xbf, 0xcb, 0xc1, 0x6a, 0x96, 0x79, 0x90, 0x4d, 0x4c, 0xc1, 0x08, 0xd9, 0x4e, 0x39, 0xe8, 0xf7,
0x81, 0x49, 0xcb, 0x07, 0x52, 0x7c, 0x28, 0x92, 0x77, 0xe0, 0xcd, 0x14, 0x75, 0xb4, 0x85, 0x5a, 0xac, 0x5e, 0x1f, 0x23, 0x7f, 0x6f, 0xc2, 0x7a, 0x02, 0x21, 0x5b, 0x91, 0x23, 0xb7, 0x60, 0x23,
0xdb, 0xed, 0x03, 0xd6, 0xbc, 0x66, 0xe9, 0xfe, 0x1f, 0x14, 0x01, 0xa2, 0x9b, 0xa9, 0xac, 0xfc, 0x95, 0xc8, 0x32, 0xfb, 0xc7, 0x38, 0x96, 0x2d, 0x58, 0x4d, 0x20, 0x3b, 0xa6, 0xd9, 0x37, 0x9b,
0xdd, 0xf6, 0xb0, 0x7d, 0xd0, 0x67, 0x6b, 0xc6, 0xec, 0x0f, 0x59, 0xee, 0x66, 0xe7, 0x07, 0xcd, 0x05, 0xf2, 0x1e, 0xdc, 0x4b, 0x60, 0xd2, 0xf2, 0x81, 0x14, 0x1f, 0x8a, 0xe4, 0x1d, 0x78, 0x33,
0x1b, 0x99, 0x98, 0xfe, 0x11, 0x6b, 0xd0, 0x06, 0xac, 0xf0, 0xf9, 0x77, 0xc0, 0x9a, 0xc1, 0xa6, 0x45, 0x1d, 0x6d, 0xa1, 0xd6, 0x76, 0xfb, 0x80, 0x35, 0xaf, 0x59, 0xba, 0xff, 0xfb, 0x45, 0x80,
0x0b, 0x0f, 0xfa, 0xce, 0x84, 0x90, 0xe3, 0xa3, 0x3d, 0xb3, 0xdf, 0x1b, 0x5a, 0x83, 0xfd, 0xe3, 0xe8, 0x66, 0x2a, 0x2b, 0x7f, 0xb7, 0x3d, 0x6c, 0x1f, 0xf4, 0xd9, 0x9a, 0x31, 0xfb, 0x43, 0x96,
0xe1, 0x2e, 0xc6, 0x90, 0xdf, 0x31, 0xbb, 0x47, 0x3c, 0xcf, 0xe2, 0x8b, 0x08, 0x58, 0xd6, 0x25, 0xbb, 0xd9, 0xf9, 0x41, 0xf3, 0x46, 0x26, 0xa6, 0x7f, 0xc4, 0x1a, 0xb4, 0x01, 0x2b, 0x7c, 0xfe,
0xb6, 0xc0, 0x9f, 0xf4, 0x07, 0x83, 0xee, 0x91, 0xf5, 0x83, 0xe3, 0x8e, 0xd9, 0xed, 0x0c, 0x30, 0x1d, 0xb0, 0x66, 0xb0, 0xe9, 0xc2, 0x83, 0xc8, 0x33, 0x21, 0xe4, 0xf8, 0x68, 0xcf, 0xec, 0xf7,
0xe1, 0x42, 0x06, 0x9c, 0xd1, 0x97, 0xd9, 0x9c, 0x1d, 0x1e, 0x7c, 0x21, 0x36, 0x3a, 0x46, 0x5a, 0x86, 0xd6, 0x60, 0xff, 0x78, 0xb8, 0x8b, 0x31, 0xe9, 0x77, 0xcc, 0xee, 0x11, 0xcf, 0xb3, 0xf8,
0x89, 0x83, 0x18, 0x55, 0x95, 0x8d, 0x0e, 0xdb, 0x9c, 0x33, 0x72, 0x86, 0x6b, 0x70, 0x2c, 0x5d, 0x22, 0x02, 0x96, 0x75, 0x89, 0x2d, 0xf0, 0x27, 0xfd, 0xc1, 0xa0, 0x7b, 0x64, 0xfd, 0xe0, 0xb8,
0x8d, 0x6d, 0xa5, 0xa9, 0x95, 0x8f, 0xc9, 0xea, 0xd9, 0x28, 0x96, 0x0a, 0x25, 0x12, 0x25, 0xbf, 0x63, 0x76, 0x3b, 0x03, 0x4c, 0xb8, 0x90, 0x01, 0x67, 0xf4, 0x65, 0x36, 0x67, 0x87, 0x07, 0x5f,
0xed, 0xee, 0x9a, 0x98, 0x60, 0x31, 0x05, 0x65, 0xb4, 0x4b, 0x6c, 0x12, 0xb2, 0xdd, 0x9b, 0x91, 0x88, 0x8d, 0x8e, 0x91, 0x56, 0xe2, 0x20, 0x46, 0x55, 0x65, 0xa3, 0xc3, 0x36, 0xe7, 0x8c, 0x9c,
0x34, 0xe5, 0x07, 0xc3, 0x2c, 0xb3, 0x16, 0x7f, 0x79, 0x7c, 0xb8, 0xdd, 0x97, 0x62, 0x00, 0xaf, 0xe1, 0x1a, 0x1c, 0x4b, 0x57, 0x63, 0x5b, 0x69, 0x6a, 0xe5, 0x63, 0xb2, 0x7a, 0x36, 0x8a, 0xa5,
0x2f, 0xc9, 0x80, 0x33, 0xfa, 0x15, 0x0c, 0xd2, 0xcf, 0xd9, 0x11, 0x12, 0xae, 0xea, 0x00, 0x46, 0x42, 0x89, 0x44, 0xc9, 0x6f, 0xbb, 0xbb, 0x26, 0x26, 0x58, 0x4c, 0x41, 0x19, 0xed, 0x12, 0x9b,
0xb1, 0xc6, 0x98, 0xa0, 0x04, 0xfc, 0xb0, 0x63, 0xf6, 0x2d, 0x26, 0x67, 0xa1, 0x8c, 0xc8, 0xe8, 0x84, 0x6c, 0xf7, 0x66, 0x24, 0x4d, 0xf9, 0xc1, 0x30, 0xcb, 0xac, 0xc5, 0x5f, 0x1e, 0x1f, 0x6e,
0xd7, 0xaf, 0x47, 0xb3, 0xd4, 0x1b, 0x0f, 0xff, 0xe9, 0x1b, 0x50, 0x55, 0x37, 0x66, 0xc8, 0xf7, 0xf7, 0xa5, 0x18, 0xc0, 0xeb, 0x4b, 0x32, 0xe0, 0x8c, 0x7e, 0x05, 0x83, 0xfe, 0x73, 0x76, 0x84,
0xa1, 0x11, 0x8b, 0x47, 0x41, 0xa4, 0x51, 0x22, 0x2b, 0x7c, 0xc5, 0xe6, 0x6b, 0xd9, 0x48, 0x71, 0x84, 0xab, 0x3a, 0x80, 0x51, 0xac, 0x31, 0x26, 0x28, 0x01, 0x3f, 0xec, 0x98, 0x7d, 0x8b, 0xc9,
0x8e, 0x3a, 0xd4, 0x14, 0x17, 0x3c, 0xb3, 0xd7, 0x92, 0xca, 0x84, 0x58, 0x6e, 0xb7, 0xaf, 0xc1, 0x59, 0x28, 0x23, 0x32, 0xfa, 0xf5, 0xeb, 0xd1, 0x2c, 0xf5, 0xc6, 0xc3, 0x7f, 0xf6, 0x06, 0x54,
0x8a, 0xec, 0x9e, 0x62, 0x3c, 0x7c, 0xed, 0x55, 0xfe, 0x80, 0xdc, 0x8e, 0x82, 0x93, 0xeb, 0x70, 0xd5, 0x8d, 0x19, 0xf2, 0x7d, 0x68, 0xc4, 0xe2, 0x51, 0x10, 0x69, 0x94, 0xc8, 0x0a, 0x5f, 0xb1,
0x99, 0xe1, 0xcd, 0xf4, 0x4b, 0xfe, 0xf2, 0xe9, 0xff, 0x5d, 0xa8, 0x69, 0xcf, 0xb6, 0x92, 0x9b, 0xf9, 0x5a, 0x36, 0x52, 0x9c, 0xa3, 0x0e, 0x35, 0xc5, 0x05, 0xcf, 0xec, 0xb5, 0xa4, 0x32, 0x21,
0xd7, 0x3e, 0x31, 0xbb, 0xb9, 0x99, 0x85, 0x12, 0x55, 0xfa, 0x2e, 0x54, 0xd5, 0x73, 0x99, 0x64, 0x96, 0xdb, 0xed, 0x6b, 0xb0, 0x22, 0xbb, 0xa7, 0x18, 0x5f, 0x1f, 0xe3, 0x11, 0x8a, 0xed, 0x85,
0x43, 0x7b, 0x7e, 0x55, 0x7f, 0x3e, 0x74, 0xb3, 0x95, 0x46, 0x88, 0xf4, 0xbb, 0x50, 0xd3, 0x5e, 0xdc, 0x8e, 0x82, 0x9d, 0xeb, 0x70, 0x99, 0xa1, 0x3c, 0x26, 0x6a, 0xb8, 0x5d, 0x1a, 0xda, 0xce,
0xbd, 0x54, 0xb5, 0x48, 0xbf, 0xac, 0xa9, 0x6a, 0x91, 0xf5, 0x48, 0xe6, 0x01, 0xac, 0x09, 0xf5, 0x24, 0x20, 0xbb, 0x50, 0xd3, 0x9e, 0x9f, 0x25, 0x37, 0xaf, 0x7d, 0x2b, 0x77, 0x73, 0x33, 0x0b,
0xc8, 0x09, 0xfd, 0x3a, 0xdd, 0x43, 0xd2, 0xdd, 0xf3, 0x20, 0x47, 0x1e, 0x43, 0x45, 0xbe, 0x94, 0x25, 0xaa, 0xf4, 0x5d, 0xa8, 0xaa, 0xe7, 0x37, 0xc9, 0x86, 0xf6, 0x3c, 0xac, 0xfe, 0x6c, 0xe9,
0x4a, 0xd6, 0xb3, 0x5f, 0x94, 0xdd, 0xdc, 0x48, 0xc1, 0x45, 0x55, 0xda, 0x00, 0xd1, 0x7b, 0x9a, 0x66, 0x2b, 0x8d, 0x10, 0xe9, 0x77, 0xa1, 0xa6, 0xbd, 0xa2, 0xa9, 0x6a, 0x91, 0x7e, 0xa9, 0x53,
0x44, 0x36, 0x3c, 0xf5, 0x3e, 0xa7, 0x1a, 0x99, 0x8c, 0xc7, 0x37, 0x77, 0xa1, 0xa6, 0x3d, 0x9d, 0xd5, 0x22, 0xeb, 0xd1, 0xcd, 0x03, 0x58, 0x13, 0xea, 0x91, 0x13, 0xfa, 0x75, 0xba, 0x87, 0xa4,
0xa9, 0xfa, 0x24, 0xfd, 0xec, 0xa6, 0xea, 0x93, 0xac, 0x97, 0x36, 0xbf, 0x0f, 0x8d, 0xd8, 0x1b, 0xbb, 0xe7, 0x41, 0x8e, 0x3c, 0x86, 0x8a, 0x7c, 0xa1, 0x95, 0xac, 0x67, 0xbf, 0x78, 0xbb, 0xb9,
0x98, 0x6a, 0x1e, 0x67, 0xbd, 0xb0, 0xa9, 0xe6, 0x71, 0xf6, 0xb3, 0x99, 0xbb, 0x50, 0xd3, 0xde, 0x91, 0x82, 0x8b, 0xaa, 0xb4, 0x01, 0xa2, 0xf7, 0x39, 0x89, 0x6c, 0x78, 0xea, 0xbd, 0x4f, 0x35,
0xa5, 0x54, 0x35, 0x4a, 0x3f, 0x8e, 0xa9, 0x6a, 0x94, 0xf1, 0x8c, 0x25, 0x5b, 0x0d, 0xf1, 0x47, 0x32, 0x19, 0x8f, 0x79, 0xee, 0x42, 0x4d, 0x7b, 0x8a, 0x53, 0xf5, 0x49, 0xfa, 0x19, 0x4f, 0xd5,
0x29, 0xd5, 0x6a, 0xc8, 0x7c, 0xdd, 0x52, 0xad, 0x86, 0xec, 0x97, 0x2c, 0xd9, 0xd4, 0x53, 0x0f, 0x27, 0x59, 0x2f, 0x77, 0x7e, 0x1f, 0x1a, 0xb1, 0x37, 0x35, 0xd5, 0x3c, 0xce, 0x7a, 0xb1, 0x53,
0x61, 0x90, 0x8d, 0x98, 0x56, 0x22, 0x7a, 0x51, 0x43, 0x4d, 0xbd, 0xf4, 0x9b, 0x19, 0x4f, 0x60, 0xcd, 0xe3, 0xec, 0x67, 0x38, 0x77, 0xa1, 0xa6, 0xbd, 0x73, 0xa9, 0x6a, 0x94, 0x7e, 0x6c, 0x53,
0x45, 0x4d, 0x1a, 0xf5, 0x8c, 0x45, 0xa0, 0xea, 0x94, 0xf9, 0x58, 0xc6, 0x66, 0x33, 0x89, 0x7d, 0xd5, 0x28, 0xe3, 0x59, 0x4c, 0xb6, 0x1a, 0xe2, 0x8f, 0x5c, 0xaa, 0xd5, 0x90, 0xf9, 0x5a, 0xa6,
0x90, 0x23, 0x9f, 0x41, 0x59, 0xbc, 0x0d, 0x40, 0xd6, 0x92, 0x6f, 0x05, 0xf0, 0x4a, 0xac, 0x67, 0x5a, 0x0d, 0xd9, 0x2f, 0x63, 0xb2, 0xa9, 0xa7, 0x1e, 0xd6, 0x20, 0x1b, 0x31, 0xad, 0x44, 0xf4,
0x3f, 0x21, 0x40, 0x8e, 0x70, 0x41, 0xeb, 0xc1, 0xfb, 0xf5, 0x19, 0x9b, 0x11, 0xef, 0x7f, 0xf3, 0x42, 0x87, 0x9a, 0x7a, 0xe9, 0x37, 0x38, 0x9e, 0xc0, 0x8a, 0x9a, 0x34, 0xea, 0x59, 0x8c, 0x40,
0xf5, 0xeb, 0xd0, 0x51, 0x8e, 0xc9, 0x07, 0x27, 0x6e, 0x5f, 0x17, 0x27, 0x2a, 0x9e, 0xe3, 0x75, 0xd5, 0x29, 0xf3, 0xf1, 0x8d, 0xcd, 0x66, 0x12, 0xfb, 0x20, 0x47, 0x3e, 0x83, 0xb2, 0x78, 0x6b,
0x01, 0x2d, 0x9f, 0x40, 0x5d, 0x7f, 0x90, 0x8c, 0xe8, 0xeb, 0x30, 0x99, 0xd7, 0xad, 0x4c, 0x9c, 0x80, 0xac, 0x25, 0xdf, 0x1e, 0xe0, 0x95, 0x58, 0xcf, 0x7e, 0x92, 0x80, 0x1c, 0xe1, 0x82, 0xd6,
0xc8, 0xe8, 0x0b, 0x58, 0x57, 0xfd, 0xad, 0x07, 0x2d, 0x0a, 0xc8, 0x9d, 0x8c, 0x50, 0x46, 0xb1, 0x1f, 0x03, 0xd0, 0x67, 0x6c, 0xc6, 0xfb, 0x01, 0x9b, 0xaf, 0x5f, 0x87, 0x8e, 0x72, 0x4c, 0x3e,
0x5e, 0xbf, 0x79, 0x6d, 0xac, 0xa3, 0x07, 0x39, 0x64, 0xb2, 0xb1, 0x37, 0x84, 0x22, 0x26, 0x9b, 0x60, 0x71, 0xfb, 0xba, 0x38, 0x51, 0xf1, 0x1c, 0xaf, 0x0b, 0x68, 0xf9, 0x04, 0xea, 0xfa, 0x03,
0xf5, 0x74, 0x52, 0xc4, 0x64, 0xb3, 0x1f, 0x1e, 0x6a, 0xc3, 0x92, 0x16, 0x74, 0x69, 0x70, 0xe5, 0x67, 0x44, 0x5f, 0x87, 0xc9, 0xbc, 0x6e, 0x65, 0xe2, 0x44, 0x46, 0x5f, 0xc0, 0xba, 0xea, 0x6f,
0x8e, 0xd4, 0x7c, 0x4f, 0x47, 0x55, 0xdf, 0xcc, 0x52, 0xd2, 0x93, 0x1d, 0xa8, 0xe9, 0x71, 0x9b, 0x3d, 0x68, 0x51, 0x40, 0xee, 0x64, 0x84, 0x32, 0x8a, 0xf5, 0xfa, 0xcd, 0x6b, 0x63, 0x1d, 0x3d,
0x5e, 0x90, 0x7c, 0x43, 0x43, 0xe9, 0x41, 0xb1, 0x1f, 0xe4, 0xc8, 0x01, 0x34, 0x93, 0x51, 0x56, 0xc8, 0x21, 0x93, 0x8d, 0xbd, 0x49, 0x14, 0x31, 0xd9, 0xac, 0xa7, 0x98, 0x22, 0x26, 0x9b, 0xfd,
0xd5, 0x12, 0xce, 0x8a, 0x4c, 0xbb, 0x99, 0x40, 0xc6, 0x62, 0xb3, 0xb2, 0x79, 0x11, 0x7b, 0x2c, 0x90, 0x51, 0x1b, 0x96, 0xb4, 0xa0, 0x4b, 0x83, 0x2b, 0x77, 0xa4, 0xe6, 0x7b, 0x3a, 0xfa, 0xfa,
0xdf, 0xf3, 0x93, 0x5b, 0x51, 0xfc, 0x11, 0x7d, 0x95, 0x5b, 0x02, 0x8b, 0xd5, 0xbe, 0x97, 0x7b, 0x66, 0x96, 0x92, 0x9e, 0xec, 0x40, 0x4d, 0x8f, 0xdb, 0xf4, 0x82, 0xe4, 0x1b, 0x1a, 0x4a, 0x0f,
0x90, 0x23, 0x7b, 0x50, 0x8f, 0x05, 0x19, 0x8c, 0x5d, 0xde, 0x4a, 0x34, 0xb3, 0xa5, 0xe3, 0x12, 0x8a, 0xfd, 0x20, 0x47, 0x0e, 0xa0, 0x99, 0x8c, 0xb2, 0xaa, 0x96, 0x70, 0x56, 0x64, 0xda, 0xcd,
0xed, 0x3c, 0x84, 0xc5, 0xb8, 0xd3, 0x89, 0xaa, 0x58, 0xa6, 0x67, 0x8c, 0x1a, 0xbe, 0x6c, 0x4f, 0x04, 0x32, 0x16, 0x9b, 0x95, 0xcd, 0x8b, 0xd8, 0xab, 0xff, 0x9e, 0x9f, 0xdc, 0x8a, 0x38, 0x5c,
0x15, 0xf2, 0xf3, 0x50, 0x63, 0x3c, 0x59, 0x7a, 0x46, 0x12, 0x8d, 0x4f, 0x27, 0xc7, 0x8c, 0xc3, 0x76, 0x83, 0xca, 0x2d, 0x81, 0xc5, 0x6a, 0xdf, 0xcb, 0x3d, 0xc8, 0x91, 0x3d, 0xa8, 0xc7, 0x82,
0x84, 0xd6, 0xbc, 0xf0, 0x17, 0xf2, 0x39, 0x6c, 0xd7, 0x77, 0xf8, 0x63, 0xe3, 0xd2, 0x39, 0x8e, 0x0c, 0xc6, 0x2e, 0x6f, 0x25, 0x9a, 0xd9, 0xd2, 0x71, 0x89, 0x76, 0x1e, 0xc2, 0x62, 0xdc, 0xe9,
0x8d, 0xff, 0xab, 0x66, 0x42, 0xf6, 0x78, 0xe1, 0x43, 0x8f, 0xc7, 0x64, 0xb8, 0xa9, 0xd1, 0x08, 0x44, 0x55, 0x2c, 0xd3, 0x33, 0x46, 0x0d, 0x5f, 0xb6, 0xa7, 0x0a, 0xf9, 0x59, 0xa8, 0x31, 0x9e,
0xd8, 0xab, 0xd5, 0xa1, 0xcd, 0xeb, 0x20, 0xd2, 0xc4, 0xe6, 0xe0, 0x2b, 0xe6, 0x45, 0x3e, 0x05, 0x2c, 0x3d, 0x23, 0x89, 0xc6, 0xa7, 0x93, 0x63, 0xc6, 0x61, 0x42, 0x6b, 0x5e, 0xf8, 0x8b, 0xf9,
0x88, 0x9c, 0x92, 0x49, 0xc2, 0xef, 0x55, 0x2d, 0xa8, 0x0c, 0xbf, 0xe5, 0x0e, 0x5f, 0xef, 0xca, 0x1c, 0xb6, 0xeb, 0x3b, 0xfc, 0x31, 0x74, 0xe9, 0x1c, 0xc7, 0xc6, 0xff, 0x55, 0x33, 0x21, 0x7b,
0xf1, 0x56, 0xdf, 0x92, 0xe3, 0x3e, 0xc0, 0xb1, 0x2d, 0x39, 0x99, 0xcd, 0x47, 0xd0, 0x38, 0xf0, 0xbc, 0xf0, 0xa1, 0xc7, 0x63, 0x32, 0xdc, 0xd4, 0x68, 0x04, 0xec, 0xd5, 0xea, 0xd0, 0xe6, 0x75,
0xbc, 0x67, 0xf3, 0x99, 0xba, 0xaa, 0x13, 0x77, 0xfb, 0xda, 0xb7, 0x83, 0xf3, 0xcd, 0x44, 0xb5, 0x10, 0x69, 0x62, 0x73, 0xf0, 0x15, 0xf3, 0x22, 0x9f, 0x02, 0x44, 0x4e, 0xc9, 0x24, 0xe1, 0xf7,
0x48, 0x1b, 0x96, 0x15, 0x8b, 0x88, 0x3c, 0x7f, 0xe3, 0x44, 0x31, 0xc6, 0x90, 0xc8, 0xe0, 0x41, 0xaa, 0x16, 0x54, 0x86, 0xdf, 0x72, 0x87, 0xaf, 0x77, 0xe5, 0x78, 0xab, 0x6f, 0xc9, 0x71, 0x1f,
0x8e, 0x3c, 0x84, 0xfa, 0x2e, 0x1d, 0x61, 0xdc, 0x18, 0x74, 0x03, 0x5a, 0x89, 0xb9, 0x94, 0x70, 0xe0, 0xd8, 0x96, 0x9c, 0xcc, 0xe6, 0x23, 0x68, 0x1c, 0x78, 0xde, 0xb3, 0xf9, 0x4c, 0x5d, 0xd5,
0xff, 0xa1, 0xcd, 0x46, 0x0c, 0x28, 0x59, 0x5c, 0xe4, 0xe8, 0xa6, 0xef, 0x19, 0x71, 0x6f, 0xb1, 0x89, 0xbb, 0x7d, 0xed, 0xdb, 0xc1, 0xf9, 0x66, 0xa2, 0x5a, 0xa4, 0x0d, 0xcb, 0x8a, 0x45, 0x44,
0x18, 0x8b, 0x4b, 0x39, 0xbb, 0x7d, 0x01, 0xcb, 0x29, 0x67, 0x2f, 0xc5, 0xdd, 0xae, 0x73, 0x40, 0x9e, 0xbf, 0x71, 0xa2, 0x18, 0x63, 0x48, 0x64, 0xf0, 0x20, 0x47, 0x1e, 0x42, 0x7d, 0x97, 0x8e,
0xdb, 0xbc, 0x7b, 0x3d, 0x81, 0xc8, 0xf7, 0x7b, 0xd0, 0xe0, 0x31, 0xd2, 0x4f, 0x28, 0xbf, 0xf7, 0x30, 0x6e, 0x0c, 0xba, 0x01, 0xad, 0xc4, 0x5c, 0x4a, 0xb8, 0xff, 0xd0, 0x66, 0x23, 0x06, 0x94,
0x9d, 0x88, 0x80, 0xa7, 0x5f, 0x2a, 0x4f, 0xb2, 0x24, 0x9e, 0xe0, 0x09, 0xbe, 0xae, 0xa4, 0xdd, 0x2c, 0x2e, 0x72, 0x74, 0xd3, 0xf7, 0x8c, 0xb8, 0xb7, 0x58, 0x8c, 0xc5, 0xa5, 0x9c, 0xdd, 0xbe,
0xaa, 0x56, 0xe3, 0x9a, 0xbe, 0xe9, 0xad, 0xc6, 0x35, 0xeb, 0x02, 0xf7, 0xe7, 0x50, 0x7b, 0x42, 0x80, 0xe5, 0x94, 0xb3, 0x97, 0xe2, 0x6e, 0xd7, 0x39, 0xa0, 0x6d, 0xde, 0xbd, 0x9e, 0x40, 0xe4,
0x43, 0x79, 0x4f, 0x59, 0xc9, 0x47, 0x89, 0x8b, 0xcb, 0x9b, 0x19, 0xb7, 0xcb, 0xc9, 0x27, 0x98, 0xfb, 0x3d, 0x68, 0xf0, 0x18, 0xe9, 0x27, 0x94, 0xdf, 0xfb, 0x4e, 0x44, 0xc0, 0xd3, 0x2f, 0x95,
0x54, 0xc5, 0xdc, 0x58, 0xd7, 0x4a, 0xd1, 0x93, 0x2e, 0x25, 0xe0, 0x4c, 0xfa, 0xd0, 0x22, 0xef, 0x27, 0x59, 0x12, 0x4f, 0xf0, 0x04, 0x5f, 0x6b, 0xd2, 0x6e, 0x55, 0xab, 0x71, 0x4d, 0xdf, 0xf4,
0xa8, 0x8a, 0xa7, 0x23, 0x2d, 0xa9, 0x8a, 0x67, 0x05, 0xea, 0xf9, 0x79, 0xde, 0x03, 0xda, 0xcd, 0x56, 0xe3, 0x9a, 0x75, 0x81, 0xfb, 0x73, 0xa8, 0x3d, 0xa1, 0xa1, 0xbc, 0xa7, 0xac, 0xe4, 0xa3,
0xe8, 0x48, 0x04, 0x4b, 0x5e, 0xa2, 0x56, 0xd5, 0xd7, 0xc9, 0x1f, 0x01, 0x0c, 0x42, 0x6f, 0xb6, 0xc4, 0xc5, 0xe5, 0xcd, 0x8c, 0xdb, 0xe5, 0xe4, 0x13, 0x4c, 0xaa, 0x62, 0x6e, 0xac, 0x6b, 0xa5,
0x6b, 0xd3, 0xa9, 0xe7, 0x46, 0x3c, 0x21, 0xba, 0x93, 0x1b, 0x2d, 0x44, 0xed, 0x62, 0x2e, 0xf9, 0xe8, 0x49, 0x97, 0x12, 0x70, 0x26, 0x7d, 0x68, 0x91, 0x77, 0x54, 0xc5, 0xd3, 0x91, 0x96, 0x54,
0x52, 0x93, 0x4d, 0x63, 0x43, 0x22, 0x87, 0xfd, 0xda, 0x6b, 0xbb, 0xaa, 0x39, 0x19, 0x57, 0x77, 0xc5, 0xb3, 0x02, 0xf5, 0xfc, 0x2c, 0xef, 0x01, 0xed, 0x66, 0x74, 0x24, 0x82, 0x25, 0x2f, 0x51,
0x91, 0x49, 0x40, 0xe4, 0x4b, 0xa7, 0x24, 0xcd, 0x94, 0x9b, 0x9e, 0x5a, 0xeb, 0x19, 0x8e, 0x77, 0xab, 0xea, 0xeb, 0xe4, 0x8f, 0x00, 0x06, 0xa1, 0x37, 0xdb, 0xb5, 0xe9, 0xd4, 0x73, 0x23, 0x9e,
0xdf, 0x85, 0x6a, 0xe4, 0x84, 0xb4, 0x11, 0x85, 0x01, 0x8b, 0xb9, 0x2c, 0x29, 0xee, 0x9d, 0x76, 0x10, 0xdd, 0xc9, 0x8d, 0x16, 0xa2, 0x76, 0x31, 0x97, 0x7c, 0xa9, 0xc9, 0xa6, 0xb1, 0x21, 0x91,
0x00, 0xea, 0xc1, 0x0a, 0xaf, 0x8e, 0xda, 0xfe, 0xf0, 0xae, 0xa6, 0x7a, 0x1c, 0x2c, 0xed, 0x79, 0xc3, 0x7e, 0xed, 0xb5, 0x5d, 0xd5, 0x9c, 0x8c, 0xab, 0xbb, 0xc8, 0x24, 0x20, 0xf2, 0xa5, 0x53,
0xa3, 0xd6, 0x4f, 0x96, 0xff, 0x08, 0x5b, 0x3f, 0x29, 0x07, 0x03, 0xb5, 0x7e, 0xae, 0x73, 0x2c, 0x92, 0x66, 0xca, 0x4d, 0x4f, 0xad, 0xf5, 0x0c, 0xc7, 0xbb, 0xef, 0x42, 0x35, 0x72, 0x42, 0xda,
0x51, 0xeb, 0xe7, 0x7a, 0xdf, 0x84, 0x1e, 0xac, 0x64, 0xb8, 0x0a, 0x90, 0x37, 0xe4, 0xc1, 0xe6, 0x88, 0xc2, 0x80, 0xc5, 0x5c, 0x96, 0x14, 0xf7, 0x4e, 0x3b, 0x00, 0xf5, 0x60, 0x85, 0x57, 0x47,
0x5a, 0x37, 0x82, 0xcd, 0x4c, 0x93, 0x32, 0x19, 0xc2, 0x06, 0x4f, 0xd3, 0x9e, 0x4c, 0x12, 0x96, 0x6d, 0x7f, 0x78, 0x57, 0x53, 0x3d, 0x36, 0x96, 0xf6, 0xbc, 0x51, 0xeb, 0x27, 0xcb, 0x7f, 0x84,
0xe9, 0xd7, 0xb5, 0x04, 0x19, 0xd6, 0xf6, 0x98, 0x28, 0x93, 0xb0, 0xb8, 0xf7, 0xa0, 0x99, 0x34, 0xad, 0x9f, 0x94, 0x83, 0x81, 0x5a, 0x3f, 0xd7, 0x39, 0x96, 0xa8, 0xf5, 0x73, 0xbd, 0x6f, 0x42,
0xea, 0x92, 0xeb, 0xc9, 0x37, 0xef, 0xc4, 0x44, 0xf6, 0xb4, 0x21, 0x98, 0x7c, 0xa1, 0x4c, 0xcb, 0x0f, 0x56, 0x32, 0x5c, 0x05, 0xc8, 0x1b, 0xf2, 0x60, 0x73, 0xad, 0x1b, 0xc1, 0x66, 0xa6, 0x49,
0x89, 0x3a, 0xde, 0x89, 0x1e, 0xb9, 0xcc, 0x34, 0x84, 0xab, 0xd3, 0x40, 0xa6, 0x65, 0x9a, 0xfc, 0x99, 0x0c, 0x61, 0x83, 0xa7, 0x69, 0x4f, 0x26, 0x09, 0xcb, 0xf4, 0xeb, 0x5a, 0x82, 0x0c, 0x6b,
0x02, 0x6c, 0x24, 0x67, 0xb4, 0xcc, 0xf9, 0x6e, 0x56, 0x77, 0x5d, 0x2b, 0xca, 0xc5, 0x1b, 0xf4, 0x7b, 0x4c, 0x94, 0x49, 0x58, 0xdc, 0x7b, 0xd0, 0x4c, 0x1a, 0x75, 0xc9, 0xf5, 0xe4, 0x9b, 0x77,
0x20, 0xc7, 0x18, 0xb1, 0x6e, 0x00, 0x56, 0x13, 0x29, 0xc3, 0x12, 0xad, 0x26, 0x52, 0xa6, 0xc5, 0x62, 0x22, 0x7b, 0xda, 0x10, 0x4c, 0xbe, 0x50, 0xa6, 0xe5, 0x44, 0x1d, 0xef, 0x44, 0x8f, 0x66,
0xf8, 0x08, 0x96, 0x12, 0xb6, 0x5f, 0x25, 0x06, 0x67, 0x5b, 0x8b, 0x95, 0x18, 0x7c, 0x9d, 0xc9, 0x66, 0x1a, 0xc2, 0xd5, 0x69, 0x20, 0xd3, 0x32, 0x4d, 0x7e, 0x0e, 0x36, 0x92, 0x33, 0x5a, 0xe6,
0x78, 0x00, 0xcd, 0xa4, 0x55, 0x57, 0x8d, 0xf5, 0x35, 0x96, 0xe2, 0xcd, 0x3b, 0xd7, 0xe2, 0xe3, 0x7c, 0x37, 0xab, 0xbb, 0xae, 0x15, 0xe5, 0xe2, 0x0d, 0x7a, 0x90, 0x63, 0x8c, 0x58, 0x37, 0x00,
0xd5, 0xd4, 0xec, 0x9f, 0xb1, 0x6a, 0xa6, 0xad, 0xb6, 0xb1, 0x6a, 0x66, 0x58, 0x5f, 0xb7, 0xdf, 0xab, 0x89, 0x94, 0x61, 0x89, 0x56, 0x13, 0x29, 0xd3, 0x62, 0x7c, 0x04, 0x4b, 0x09, 0xdb, 0xaf,
0xf9, 0xe1, 0xb7, 0xce, 0x9c, 0xf0, 0x7c, 0x7e, 0xb2, 0x35, 0xf2, 0xa6, 0x1f, 0x4c, 0xa4, 0x56, 0x12, 0x83, 0xb3, 0xad, 0xc5, 0x4a, 0x0c, 0xbe, 0xce, 0x64, 0x3c, 0x80, 0x66, 0xd2, 0xaa, 0xab,
0x43, 0x04, 0x52, 0xf8, 0x60, 0xe2, 0x8e, 0x3f, 0xc0, 0x0c, 0x4e, 0x16, 0x66, 0xbe, 0x17, 0x7a, 0xc6, 0xfa, 0x1a, 0x4b, 0xf1, 0xe6, 0x9d, 0x6b, 0xf1, 0xf1, 0x6a, 0x6a, 0xf6, 0xcf, 0x58, 0x35,
0x1f, 0xfd, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x22, 0xb1, 0xed, 0xb8, 0x92, 0x00, 0x00, 0xd3, 0x56, 0xdb, 0x58, 0x35, 0x33, 0xac, 0xaf, 0xdb, 0xef, 0xfc, 0xf0, 0x5b, 0x67, 0x4e, 0x78,
0x3e, 0x3f, 0xd9, 0x1a, 0x79, 0xd3, 0x0f, 0x26, 0x52, 0xab, 0x21, 0x02, 0x29, 0x7c, 0x30, 0x71,
0xc7, 0x1f, 0x60, 0x06, 0x27, 0x0b, 0x33, 0xdf, 0x0b, 0xbd, 0x8f, 0xfe, 0x5f, 0x00, 0x00, 0x00,
0xff, 0xff, 0x39, 0x9e, 0x83, 0x60, 0x81, 0x93, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -13810,7 +13872,7 @@ type LightningClient interface {
// lncli: `sendcoins` // lncli: `sendcoins`
//SendCoins executes a request to send coins to a particular address. Unlike //SendCoins executes a request to send coins to a particular address. Unlike
//SendMany, this RPC call only allows creating a single output at a time. If //SendMany, this RPC call only allows creating a single output at a time. If
//neither target_conf, or sat_per_byte are set, then the internal wallet will //neither target_conf, or sat_per_vbyte are set, then the internal wallet will
//consult its fee model to determine a fee for the default confirmation //consult its fee model to determine a fee for the default confirmation
//target. //target.
SendCoins(ctx context.Context, in *SendCoinsRequest, opts ...grpc.CallOption) (*SendCoinsResponse, error) SendCoins(ctx context.Context, in *SendCoinsRequest, opts ...grpc.CallOption) (*SendCoinsResponse, error)
@ -13827,7 +13889,7 @@ type LightningClient interface {
SubscribeTransactions(ctx context.Context, in *GetTransactionsRequest, opts ...grpc.CallOption) (Lightning_SubscribeTransactionsClient, error) SubscribeTransactions(ctx context.Context, in *GetTransactionsRequest, opts ...grpc.CallOption) (Lightning_SubscribeTransactionsClient, error)
// lncli: `sendmany` // lncli: `sendmany`
//SendMany handles a request for a transaction that creates multiple specified //SendMany handles a request for a transaction that creates multiple specified
//outputs in parallel. If neither target_conf, or sat_per_byte are set, then //outputs in parallel. If neither target_conf, or sat_per_vbyte are set, then
//the internal wallet will consult its fee model to determine a fee for the //the internal wallet will consult its fee model to determine a fee for the
//default confirmation target. //default confirmation target.
SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error) SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error)
@ -14956,7 +15018,7 @@ type LightningServer interface {
// lncli: `sendcoins` // lncli: `sendcoins`
//SendCoins executes a request to send coins to a particular address. Unlike //SendCoins executes a request to send coins to a particular address. Unlike
//SendMany, this RPC call only allows creating a single output at a time. If //SendMany, this RPC call only allows creating a single output at a time. If
//neither target_conf, or sat_per_byte are set, then the internal wallet will //neither target_conf, or sat_per_vbyte are set, then the internal wallet will
//consult its fee model to determine a fee for the default confirmation //consult its fee model to determine a fee for the default confirmation
//target. //target.
SendCoins(context.Context, *SendCoinsRequest) (*SendCoinsResponse, error) SendCoins(context.Context, *SendCoinsRequest) (*SendCoinsResponse, error)
@ -14973,7 +15035,7 @@ type LightningServer interface {
SubscribeTransactions(*GetTransactionsRequest, Lightning_SubscribeTransactionsServer) error SubscribeTransactions(*GetTransactionsRequest, Lightning_SubscribeTransactionsServer) error
// lncli: `sendmany` // lncli: `sendmany`
//SendMany handles a request for a transaction that creates multiple specified //SendMany handles a request for a transaction that creates multiple specified
//outputs in parallel. If neither target_conf, or sat_per_byte are set, then //outputs in parallel. If neither target_conf, or sat_per_vbyte are set, then
//the internal wallet will consult its fee model to determine a fee for the //the internal wallet will consult its fee model to determine a fee for the
//default confirmation target. //default confirmation target.
SendMany(context.Context, *SendManyRequest) (*SendManyResponse, error) SendMany(context.Context, *SendManyRequest) (*SendManyResponse, error)

View File

@ -58,7 +58,7 @@ service Lightning {
/* lncli: `sendcoins` /* lncli: `sendcoins`
SendCoins executes a request to send coins to a particular address. Unlike SendCoins executes a request to send coins to a particular address. Unlike
SendMany, this RPC call only allows creating a single output at a time. If SendMany, this RPC call only allows creating a single output at a time. If
neither target_conf, or sat_per_byte are set, then the internal wallet will neither target_conf, or sat_per_vbyte are set, then the internal wallet will
consult its fee model to determine a fee for the default confirmation consult its fee model to determine a fee for the default confirmation
target. target.
*/ */
@ -82,7 +82,7 @@ service Lightning {
/* lncli: `sendmany` /* lncli: `sendmany`
SendMany handles a request for a transaction that creates multiple specified SendMany handles a request for a transaction that creates multiple specified
outputs in parallel. If neither target_conf, or sat_per_byte are set, then outputs in parallel. If neither target_conf, or sat_per_vbyte are set, then
the internal wallet will consult its fee model to determine a fee for the the internal wallet will consult its fee model to determine a fee for the
default confirmation target. default confirmation target.
*/ */
@ -902,8 +902,12 @@ message EstimateFeeResponse {
// The total fee in satoshis. // The total fee in satoshis.
int64 fee_sat = 1; int64 fee_sat = 1;
// Deprecated, use sat_per_vbyte.
// The fee rate in satoshi/vbyte. // The fee rate in satoshi/vbyte.
int64 feerate_sat_per_byte = 2; int64 feerate_sat_per_byte = 2 [deprecated = true];
// The fee rate in satoshi/vbyte.
uint64 sat_per_vbyte = 3;
} }
message SendManyRequest { message SendManyRequest {
@ -916,7 +920,12 @@ message SendManyRequest {
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction. // transaction.
int64 sat_per_byte = 5; uint64 sat_per_vbyte = 4;
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction.
int64 sat_per_byte = 5 [deprecated = true];
// An optional label for the transaction, limited to 500 characters. // An optional label for the transaction, limited to 500 characters.
string label = 6; string label = 6;
@ -946,7 +955,12 @@ message SendCoinsRequest {
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction. // transaction.
int64 sat_per_byte = 5; uint64 sat_per_vbyte = 4;
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the
// transaction.
int64 sat_per_byte = 5 [deprecated = true];
/* /*
If set, then the amount field will be ignored, and lnd will attempt to If set, then the amount field will be ignored, and lnd will attempt to
@ -1685,9 +1699,10 @@ message CloseChannelRequest {
// confirmed by. // confirmed by.
int32 target_conf = 3; int32 target_conf = 3;
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// closure transaction. // closure transaction.
int64 sat_per_byte = 4; int64 sat_per_byte = 4 [deprecated = true];
/* /*
An optional address to send funds to in the case of a cooperative close. An optional address to send funds to in the case of a cooperative close.
@ -1696,6 +1711,10 @@ message CloseChannelRequest {
to the upfront shutdown addresss. to the upfront shutdown addresss.
*/ */
string delivery_address = 5; string delivery_address = 5;
// A manual fee rate set in sat/vbyte that should be used when crafting the
// closure transaction.
uint64 sat_per_vbyte = 6;
} }
message CloseStatusUpdate { message CloseStatusUpdate {
@ -1733,6 +1752,10 @@ message ReadyForPsbtFunding {
} }
message OpenChannelRequest { message OpenChannelRequest {
// A manual fee rate set in sat/vbyte that should be used when crafting the
// funding transaction.
uint64 sat_per_vbyte = 1;
/* /*
The pubkey of the node to open a channel with. When using REST, this field The pubkey of the node to open a channel with. When using REST, this field
must be encoded as base64. must be encoded as base64.
@ -1756,9 +1779,10 @@ message OpenChannelRequest {
// confirmed by. // confirmed by.
int32 target_conf = 6; int32 target_conf = 6;
// Deprecated, use sat_per_vbyte.
// A manual fee rate set in sat/vbyte that should be used when crafting the // A manual fee rate set in sat/vbyte that should be used when crafting the
// funding transaction. // funding transaction.
int64 sat_per_byte = 7; int64 sat_per_byte = 7 [deprecated = true];
// Whether this channel should be private, not announced to the greater // Whether this channel should be private, not announced to the greater
// network. // network.

View File

@ -672,7 +672,7 @@
}, },
{ {
"name": "sat_per_byte", "name": "sat_per_byte",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\nclosure transaction.", "description": "Deprecated, use sat_per_vbyte.\nA manual fee rate set in sat/vbyte that should be used when crafting the\nclosure transaction.",
"in": "query", "in": "query",
"required": false, "required": false,
"type": "string", "type": "string",
@ -684,6 +684,14 @@
"in": "query", "in": "query",
"required": false, "required": false,
"type": "string" "type": "string"
},
{
"name": "sat_per_vbyte",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\nclosure transaction.",
"in": "query",
"required": false,
"type": "string",
"format": "uint64"
} }
], ],
"tags": [ "tags": [
@ -1954,7 +1962,7 @@
] ]
}, },
"post": { "post": {
"summary": "lncli: `sendcoins`\nSendCoins executes a request to send coins to a particular address. Unlike\nSendMany, this RPC call only allows creating a single output at a time. If\nneither target_conf, or sat_per_byte are set, then the internal wallet will\nconsult its fee model to determine a fee for the default confirmation\ntarget.", "summary": "lncli: `sendcoins`\nSendCoins executes a request to send coins to a particular address. Unlike\nSendMany, this RPC call only allows creating a single output at a time. If\nneither target_conf, or sat_per_vbyte are set, then the internal wallet will\nconsult its fee model to determine a fee for the default confirmation\ntarget.",
"operationId": "SendCoins", "operationId": "SendCoins",
"responses": { "responses": {
"200": { "200": {
@ -2021,7 +2029,7 @@
}, },
"/v1/transactions/many": { "/v1/transactions/many": {
"post": { "post": {
"summary": "lncli: `sendmany`\nSendMany handles a request for a transaction that creates multiple specified\noutputs in parallel. If neither target_conf, or sat_per_byte are set, then\nthe internal wallet will consult its fee model to determine a fee for the\ndefault confirmation target.", "summary": "lncli: `sendmany`\nSendMany handles a request for a transaction that creates multiple specified\noutputs in parallel. If neither target_conf, or sat_per_vbyte are set, then\nthe internal wallet will consult its fee model to determine a fee for the\ndefault confirmation target.",
"operationId": "SendMany", "operationId": "SendMany",
"responses": { "responses": {
"200": { "200": {
@ -3397,6 +3405,11 @@
"feerate_sat_per_byte": { "feerate_sat_per_byte": {
"type": "string", "type": "string",
"format": "int64", "format": "int64",
"description": "Deprecated, use sat_per_vbyte.\nThe fee rate in satoshi/vbyte."
},
"sat_per_vbyte": {
"type": "string",
"format": "uint64",
"description": "The fee rate in satoshi/vbyte." "description": "The fee rate in satoshi/vbyte."
} }
} }
@ -4640,6 +4653,11 @@
"lnrpcOpenChannelRequest": { "lnrpcOpenChannelRequest": {
"type": "object", "type": "object",
"properties": { "properties": {
"sat_per_vbyte": {
"type": "string",
"format": "uint64",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\nfunding transaction."
},
"node_pubkey": { "node_pubkey": {
"type": "string", "type": "string",
"format": "byte", "format": "byte",
@ -4667,7 +4685,7 @@
"sat_per_byte": { "sat_per_byte": {
"type": "string", "type": "string",
"format": "int64", "format": "int64",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\nfunding transaction." "description": "Deprecated, use sat_per_vbyte.\nA manual fee rate set in sat/vbyte that should be used when crafting the\nfunding transaction."
}, },
"private": { "private": {
"type": "boolean", "type": "boolean",
@ -5344,10 +5362,15 @@
"format": "int32", "format": "int32",
"description": "The target number of blocks that this transaction should be confirmed\nby." "description": "The target number of blocks that this transaction should be confirmed\nby."
}, },
"sat_per_vbyte": {
"type": "string",
"format": "uint64",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\ntransaction."
},
"sat_per_byte": { "sat_per_byte": {
"type": "string", "type": "string",
"format": "int64", "format": "int64",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\ntransaction." "description": "Deprecated, use sat_per_vbyte.\nA manual fee rate set in sat/vbyte that should be used when crafting the\ntransaction."
}, },
"send_all": { "send_all": {
"type": "boolean", "type": "boolean",
@ -5395,10 +5418,15 @@
"format": "int32", "format": "int32",
"description": "The target number of blocks that this transaction should be confirmed\nby." "description": "The target number of blocks that this transaction should be confirmed\nby."
}, },
"sat_per_vbyte": {
"type": "string",
"format": "uint64",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\ntransaction."
},
"sat_per_byte": { "sat_per_byte": {
"type": "string", "type": "string",
"format": "int64", "format": "int64",
"description": "A manual fee rate set in sat/vbyte that should be used when crafting the\ntransaction." "description": "Deprecated, use sat_per_vbyte.\nA manual fee rate set in sat/vbyte that should be used when crafting the\ntransaction."
}, },
"label": { "label": {
"type": "string", "type": "string",

View File

@ -839,10 +839,11 @@ type PendingSweep struct {
// The value of the output we're attempting to sweep. // The value of the output we're attempting to sweep.
AmountSat uint32 `protobuf:"varint,3,opt,name=amount_sat,json=amountSat,proto3" json:"amount_sat,omitempty"` AmountSat uint32 `protobuf:"varint,3,opt,name=amount_sat,json=amountSat,proto3" json:"amount_sat,omitempty"`
// //
//Deprecated, use sat_per_vbyte.
//The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee //The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee
//rate is only determined once a sweeping transaction for the output is //rate is only determined once a sweeping transaction for the output is
//created, so it's possible for this to be 0 before this. //created, so it's possible for this to be 0 before this.
SatPerByte uint32 `protobuf:"varint,4,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerByte uint32 `protobuf:"varint,4,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` // Deprecated: Do not use.
// The number of broadcast attempts we've made to sweep the output. // The number of broadcast attempts we've made to sweep the output.
BroadcastAttempts uint32 `protobuf:"varint,5,opt,name=broadcast_attempts,json=broadcastAttempts,proto3" json:"broadcast_attempts,omitempty"` BroadcastAttempts uint32 `protobuf:"varint,5,opt,name=broadcast_attempts,json=broadcastAttempts,proto3" json:"broadcast_attempts,omitempty"`
// //
@ -851,8 +852,16 @@ type PendingSweep struct {
NextBroadcastHeight uint32 `protobuf:"varint,6,opt,name=next_broadcast_height,json=nextBroadcastHeight,proto3" json:"next_broadcast_height,omitempty"` NextBroadcastHeight uint32 `protobuf:"varint,6,opt,name=next_broadcast_height,json=nextBroadcastHeight,proto3" json:"next_broadcast_height,omitempty"`
// The requested confirmation target for this output. // The requested confirmation target for this output.
RequestedConfTarget uint32 `protobuf:"varint,8,opt,name=requested_conf_target,json=requestedConfTarget,proto3" json:"requested_conf_target,omitempty"` RequestedConfTarget uint32 `protobuf:"varint,8,opt,name=requested_conf_target,json=requestedConfTarget,proto3" json:"requested_conf_target,omitempty"`
// Deprecated, use requested_sat_per_vbyte.
// The requested fee rate, expressed in sat/vbyte, for this output. // The requested fee rate, expressed in sat/vbyte, for this output.
RequestedSatPerByte uint32 `protobuf:"varint,9,opt,name=requested_sat_per_byte,json=requestedSatPerByte,proto3" json:"requested_sat_per_byte,omitempty"` RequestedSatPerByte uint32 `protobuf:"varint,9,opt,name=requested_sat_per_byte,json=requestedSatPerByte,proto3" json:"requested_sat_per_byte,omitempty"` // Deprecated: Do not use.
//
//The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee
//rate is only determined once a sweeping transaction for the output is
//created, so it's possible for this to be 0 before this.
SatPerVbyte uint64 `protobuf:"varint,10,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
// The requested fee rate, expressed in sat/vbyte, for this output.
RequestedSatPerVbyte uint64 `protobuf:"varint,11,opt,name=requested_sat_per_vbyte,json=requestedSatPerVbyte,proto3" json:"requested_sat_per_vbyte,omitempty"`
// //
//Whether this input must be force-swept. This means that it is swept even //Whether this input must be force-swept. This means that it is swept even
//if it has a negative yield. //if it has a negative yield.
@ -908,6 +917,7 @@ func (m *PendingSweep) GetAmountSat() uint32 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *PendingSweep) GetSatPerByte() uint32 { func (m *PendingSweep) GetSatPerByte() uint32 {
if m != nil { if m != nil {
return m.SatPerByte return m.SatPerByte
@ -936,6 +946,7 @@ func (m *PendingSweep) GetRequestedConfTarget() uint32 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *PendingSweep) GetRequestedSatPerByte() uint32 { func (m *PendingSweep) GetRequestedSatPerByte() uint32 {
if m != nil { if m != nil {
return m.RequestedSatPerByte return m.RequestedSatPerByte
@ -943,6 +954,20 @@ func (m *PendingSweep) GetRequestedSatPerByte() uint32 {
return 0 return 0
} }
func (m *PendingSweep) GetSatPerVbyte() uint64 {
if m != nil {
return m.SatPerVbyte
}
return 0
}
func (m *PendingSweep) GetRequestedSatPerVbyte() uint64 {
if m != nil {
return m.RequestedSatPerVbyte
}
return 0
}
func (m *PendingSweep) GetForce() bool { func (m *PendingSweep) GetForce() bool {
if m != nil { if m != nil {
return m.Force return m.Force
@ -1028,13 +1053,18 @@ type BumpFeeRequest struct {
// The target number of blocks that the input should be spent within. // The target number of blocks that the input should be spent within.
TargetConf uint32 `protobuf:"varint,2,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"` TargetConf uint32 `protobuf:"varint,2,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
// //
//Deprecated, use sat_per_vbyte.
//The fee rate, expressed in sat/vbyte, that should be used to spend the input //The fee rate, expressed in sat/vbyte, that should be used to spend the input
//with. //with.
SatPerByte uint32 `protobuf:"varint,3,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerByte uint32 `protobuf:"varint,3,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` // Deprecated: Do not use.
// //
//Whether this input must be force-swept. This means that it is swept even //Whether this input must be force-swept. This means that it is swept even
//if it has a negative yield. //if it has a negative yield.
Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
//
//The fee rate, expressed in sat/vbyte, that should be used to spend the input
//with.
SatPerVbyte uint64 `protobuf:"varint,5,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -1079,6 +1109,7 @@ func (m *BumpFeeRequest) GetTargetConf() uint32 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *BumpFeeRequest) GetSatPerByte() uint32 { func (m *BumpFeeRequest) GetSatPerByte() uint32 {
if m != nil { if m != nil {
return m.SatPerByte return m.SatPerByte
@ -1093,6 +1124,13 @@ func (m *BumpFeeRequest) GetForce() bool {
return false return false
} }
func (m *BumpFeeRequest) GetSatPerVbyte() uint64 {
if m != nil {
return m.SatPerVbyte
}
return 0
}
type BumpFeeResponse struct { type BumpFeeResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -1464,7 +1502,7 @@ type FundPsbtRequest_TargetConf struct {
} }
type FundPsbtRequest_SatPerVbyte struct { type FundPsbtRequest_SatPerVbyte struct {
SatPerVbyte uint32 `protobuf:"varint,4,opt,name=sat_per_vbyte,json=satPerVbyte,proto3,oneof"` SatPerVbyte uint64 `protobuf:"varint,4,opt,name=sat_per_vbyte,json=satPerVbyte,proto3,oneof"`
} }
func (*FundPsbtRequest_TargetConf) isFundPsbtRequest_Fees() {} func (*FundPsbtRequest_TargetConf) isFundPsbtRequest_Fees() {}
@ -1485,7 +1523,7 @@ func (m *FundPsbtRequest) GetTargetConf() uint32 {
return 0 return 0
} }
func (m *FundPsbtRequest) GetSatPerVbyte() uint32 { func (m *FundPsbtRequest) GetSatPerVbyte() uint64 {
if x, ok := m.GetFees().(*FundPsbtRequest_SatPerVbyte); ok { if x, ok := m.GetFees().(*FundPsbtRequest_SatPerVbyte); ok {
return x.SatPerVbyte return x.SatPerVbyte
} }
@ -1885,123 +1923,125 @@ func init() {
func init() { proto.RegisterFile("walletrpc/walletkit.proto", fileDescriptor_6cc6942ac78249e5) } func init() { proto.RegisterFile("walletrpc/walletkit.proto", fileDescriptor_6cc6942ac78249e5) }
var fileDescriptor_6cc6942ac78249e5 = []byte{ var fileDescriptor_6cc6942ac78249e5 = []byte{
// 1851 bytes of a gzipped FileDescriptorProto // 1887 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5f, 0x73, 0xe2, 0xc8, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5f, 0x73, 0xe2, 0xc8,
0x11, 0x5f, 0x0c, 0xc6, 0xd0, 0x80, 0x8d, 0x07, 0xbc, 0x66, 0x59, 0xef, 0xd9, 0xab, 0x4b, 0x72, 0x11, 0x5f, 0xfe, 0x98, 0x85, 0x16, 0xd8, 0x78, 0xc0, 0x6b, 0x96, 0xf5, 0x9e, 0xbd, 0xba, 0x24,
0x4e, 0xee, 0x0e, 0x57, 0xbc, 0x75, 0x97, 0x3d, 0x27, 0x95, 0x8a, 0x8d, 0xe5, 0xc2, 0x05, 0x06, 0xe7, 0xe4, 0xee, 0x70, 0xc5, 0x57, 0x7b, 0xb7, 0xb7, 0x49, 0xa5, 0x62, 0x63, 0xb9, 0x70, 0x81,
0x67, 0xc0, 0xeb, 0xda, 0xe4, 0x41, 0x25, 0xd0, 0xd8, 0x56, 0x19, 0x24, 0x9d, 0x34, 0x18, 0xc8, 0xc1, 0x11, 0x78, 0x5d, 0x9b, 0x3c, 0xa8, 0x04, 0x1a, 0xdb, 0x2a, 0x83, 0xa4, 0x93, 0x06, 0x03,
0xd3, 0x7d, 0x8a, 0x54, 0x5d, 0x55, 0xbe, 0xc3, 0x3d, 0xe4, 0x35, 0x1f, 0x2e, 0x35, 0x7f, 0x10, 0x79, 0xba, 0xaf, 0x91, 0xaa, 0x7c, 0x87, 0x7b, 0xc8, 0x6b, 0x2a, 0x9f, 0x2c, 0x0f, 0xa9, 0xf9,
0x23, 0x81, 0x6f, 0x93, 0x4a, 0x9e, 0xd0, 0xf4, 0xaf, 0xbb, 0xa7, 0xa7, 0xbb, 0x67, 0xba, 0x1b, 0x83, 0x34, 0x12, 0xf8, 0x2e, 0xa9, 0xdc, 0x93, 0x51, 0xff, 0xba, 0x7b, 0xfa, 0xdf, 0x4c, 0x77,
0x78, 0x35, 0x31, 0x87, 0x43, 0x42, 0x7d, 0x6f, 0x70, 0x24, 0xbe, 0x1e, 0x6d, 0x5a, 0xf3, 0x7c, 0x1b, 0x5e, 0xce, 0xcc, 0xf1, 0x18, 0x13, 0xdf, 0x1b, 0x1d, 0xf1, 0x5f, 0x0f, 0x36, 0x69, 0x78,
0x97, 0xba, 0x28, 0x1b, 0x42, 0xd5, 0xac, 0xef, 0x0d, 0x04, 0xb5, 0x5a, 0x0e, 0xec, 0x7b, 0x87, 0xbe, 0x4b, 0x5c, 0x54, 0x08, 0xa1, 0x7a, 0xc1, 0xf7, 0x46, 0x9c, 0x5a, 0xaf, 0x06, 0xf6, 0x9d,
0xb1, 0xb3, 0x5f, 0xe2, 0x0b, 0xaa, 0xd6, 0x06, 0xd4, 0xb2, 0x03, 0x7a, 0xe3, 0x04, 0x1e, 0x71, 0x43, 0xd9, 0xe9, 0x5f, 0xec, 0x73, 0xaa, 0xda, 0x05, 0xd4, 0xb1, 0x03, 0x72, 0xed, 0x04, 0x1e,
0x28, 0x26, 0xdf, 0x8f, 0x49, 0x40, 0xd1, 0x6b, 0xc8, 0x8e, 0x6c, 0xc7, 0x18, 0xb8, 0xce, 0x5d, 0x76, 0x88, 0x8e, 0xbf, 0x9b, 0xe2, 0x80, 0xa0, 0x57, 0x50, 0x98, 0xd8, 0x8e, 0x31, 0x72, 0x9d,
0x50, 0x49, 0x1c, 0x24, 0x0e, 0xd7, 0x71, 0x66, 0x64, 0x3b, 0x75, 0xb6, 0xe6, 0xa0, 0x39, 0x95, 0xdb, 0xa0, 0x96, 0x3a, 0x48, 0x1d, 0x6e, 0xe8, 0xf9, 0x89, 0xed, 0x34, 0xe9, 0x37, 0x03, 0xcd,
0xe0, 0x9a, 0x04, 0xcd, 0x29, 0x07, 0xb5, 0xf7, 0x50, 0x8a, 0xe8, 0x0b, 0x3c, 0xd7, 0x09, 0x08, 0xb9, 0x00, 0xd3, 0x02, 0x34, 0xe7, 0x0c, 0x54, 0xdf, 0x41, 0x25, 0xa6, 0x2f, 0xf0, 0x5c, 0x27,
0x7a, 0x0b, 0xeb, 0x63, 0x3a, 0x75, 0x99, 0xb2, 0xe4, 0x61, 0xee, 0x38, 0x57, 0x1b, 0x32, 0x53, 0xc0, 0xe8, 0x0d, 0x6c, 0x4c, 0xc9, 0xdc, 0xa5, 0xca, 0x32, 0x87, 0xca, 0xb1, 0xd2, 0x18, 0x53,
0x6a, 0x37, 0x74, 0xea, 0x62, 0x81, 0x68, 0x3f, 0x24, 0x00, 0xb5, 0x88, 0x19, 0x90, 0xce, 0x98, 0x53, 0x1a, 0xd7, 0x64, 0xee, 0xea, 0x1c, 0x51, 0xbf, 0x4f, 0x01, 0xea, 0x60, 0x33, 0xc0, 0xbd,
0x7a, 0xe3, 0xd0, 0x94, 0x4d, 0x58, 0xb3, 0x2d, 0x6e, 0x43, 0x1e, 0xaf, 0xd9, 0x16, 0xfa, 0x12, 0x29, 0xf1, 0xa6, 0xa1, 0x29, 0x9b, 0x90, 0xb6, 0x2d, 0x66, 0x43, 0x51, 0x4f, 0xdb, 0x16, 0xfa,
0x32, 0xee, 0x98, 0x7a, 0xae, 0xed, 0x50, 0xbe, 0x79, 0xee, 0x78, 0x4b, 0x2a, 0xeb, 0x8c, 0xe9, 0x1c, 0xf2, 0xee, 0x94, 0x78, 0xae, 0xed, 0x10, 0x76, 0xb8, 0x72, 0xbc, 0x25, 0x94, 0xf5, 0xa6,
0x35, 0x23, 0xe3, 0x90, 0x01, 0x7d, 0x0d, 0x88, 0x4c, 0x3d, 0xdb, 0x37, 0xa9, 0xed, 0x3a, 0x46, 0xe4, 0x8a, 0x92, 0xf5, 0x90, 0x01, 0x7d, 0x09, 0x08, 0xcf, 0x3d, 0xdb, 0x37, 0x89, 0xed, 0x3a,
0x40, 0x06, 0xae, 0x63, 0x05, 0x95, 0xe4, 0x41, 0xe2, 0x30, 0x85, 0xb7, 0x17, 0x48, 0x57, 0x00, 0x46, 0x80, 0x47, 0xae, 0x63, 0x05, 0xb5, 0xcc, 0x41, 0xea, 0x30, 0xab, 0x6f, 0x47, 0x48, 0x9f,
0xda, 0x37, 0x50, 0x8a, 0x58, 0x20, 0x8d, 0xff, 0x0c, 0x60, 0xc1, 0xcb, 0x4d, 0x49, 0x61, 0x85, 0x03, 0xea, 0x5b, 0xa8, 0xc4, 0x2c, 0x10, 0xc6, 0x7f, 0x02, 0x10, 0xf1, 0x32, 0x53, 0xb2, 0xba,
0xa2, 0x75, 0xa1, 0x8c, 0xc9, 0xf0, 0xff, 0x6b, 0xba, 0xb6, 0x0b, 0x3b, 0x31, 0xa5, 0xc2, 0x1a, 0x44, 0x51, 0xfb, 0x50, 0xd5, 0xf1, 0xf8, 0xe7, 0x35, 0x5d, 0xdd, 0x85, 0x9d, 0x84, 0x52, 0x6e,
0xed, 0xcf, 0x90, 0x6e, 0x92, 0x19, 0x26, 0xdf, 0xa3, 0x43, 0x28, 0x3e, 0x92, 0x99, 0x71, 0x67, 0x8d, 0xfa, 0x27, 0xc8, 0xb5, 0xf1, 0x42, 0xc7, 0xdf, 0xa1, 0x43, 0x28, 0x3f, 0xe0, 0x85, 0x71,
0x3b, 0xf7, 0xc4, 0x37, 0x3c, 0x9f, 0xe9, 0x15, 0xc1, 0xda, 0x7c, 0x24, 0xb3, 0x0b, 0x4e, 0xbe, 0x6b, 0x3b, 0x77, 0xd8, 0x37, 0x3c, 0x9f, 0xea, 0xe5, 0xc9, 0xda, 0x7c, 0xc0, 0x8b, 0x73, 0x46,
0x66, 0x54, 0xf4, 0x06, 0x80, 0x73, 0x9a, 0x23, 0x7b, 0x38, 0x93, 0x31, 0xcb, 0x32, 0x1e, 0x4e, 0xbe, 0xa2, 0x54, 0xf4, 0x1a, 0x80, 0x71, 0x9a, 0x13, 0x7b, 0xbc, 0x10, 0x39, 0x2b, 0x50, 0x1e,
0xd0, 0x0a, 0x90, 0x3b, 0xb5, 0x2c, 0x5f, 0xda, 0xad, 0x69, 0x90, 0x17, 0x4b, 0x79, 0x7e, 0x04, 0x46, 0x50, 0x4b, 0xa0, 0x9c, 0x58, 0x96, 0x2f, 0xec, 0x56, 0x55, 0x28, 0xf2, 0x4f, 0xe1, 0x3f,
0x29, 0xd3, 0xb2, 0x7c, 0xae, 0x3b, 0x8b, 0xf9, 0xb7, 0x76, 0x02, 0xb9, 0x9e, 0x6f, 0x3a, 0x81, 0x82, 0xac, 0x69, 0x59, 0x3e, 0xd3, 0x5d, 0xd0, 0xd9, 0x6f, 0xf5, 0x3d, 0x28, 0x03, 0xdf, 0x74,
0x39, 0x60, 0x2e, 0x40, 0x3b, 0x90, 0xa6, 0x53, 0xe3, 0x81, 0x4c, 0xe5, 0x71, 0xd7, 0xe9, 0xb4, 0x02, 0x73, 0x44, 0x43, 0x80, 0x76, 0x20, 0x47, 0xe6, 0xc6, 0x3d, 0x9e, 0x0b, 0x77, 0x37, 0xc8,
0x41, 0xa6, 0xa8, 0x0c, 0xeb, 0x43, 0xb3, 0x4f, 0x86, 0x7c, 0xcb, 0x2c, 0x16, 0x0b, 0xed, 0x5b, 0xbc, 0x85, 0xe7, 0xa8, 0x0a, 0x1b, 0x63, 0x73, 0x88, 0xc7, 0xec, 0xc8, 0x82, 0xce, 0x3f, 0xd4,
0xd8, 0xba, 0x1e, 0xf7, 0x87, 0x76, 0xf0, 0x10, 0x6e, 0xf1, 0x39, 0x14, 0x3c, 0x41, 0x32, 0x88, 0xaf, 0x61, 0xeb, 0x6a, 0x3a, 0x1c, 0xdb, 0xc1, 0x7d, 0x78, 0xc4, 0xa7, 0x50, 0xf2, 0x38, 0xc9,
0xef, 0xbb, 0xf3, 0xbd, 0xf2, 0x92, 0xa8, 0x33, 0x9a, 0xf6, 0xaf, 0x04, 0xa0, 0x2e, 0x71, 0x2c, 0xc0, 0xbe, 0xef, 0x2e, 0xcf, 0x2a, 0x0a, 0xa2, 0x46, 0x69, 0xea, 0x3f, 0x53, 0x80, 0xfa, 0xd8,
0xe1, 0x90, 0x60, 0xee, 0xe6, 0x3d, 0x80, 0xc0, 0xa4, 0x86, 0x47, 0x7c, 0xe3, 0x71, 0xc2, 0x05, 0xb1, 0x78, 0x40, 0x82, 0x65, 0x98, 0xf7, 0x00, 0x02, 0x93, 0x18, 0x1e, 0xf6, 0x8d, 0x87, 0x19,
0x93, 0x38, 0x13, 0x98, 0xf4, 0x9a, 0xf8, 0xcd, 0x09, 0x3a, 0x84, 0x0d, 0x57, 0xf0, 0x57, 0xd6, 0x13, 0xcc, 0xe8, 0xf9, 0xc0, 0x24, 0x57, 0xd8, 0x6f, 0xcf, 0xd0, 0x21, 0x3c, 0x77, 0x39, 0x7f,
0x78, 0xee, 0x6d, 0xd6, 0xe4, 0x45, 0xa8, 0xf5, 0xa6, 0x9d, 0x31, 0xc5, 0x73, 0x78, 0x61, 0x6c, 0x2d, 0xcd, 0x6a, 0x6f, 0xb3, 0x21, 0x2e, 0x42, 0x63, 0x30, 0xef, 0x4d, 0x89, 0xbe, 0x84, 0x23,
0x52, 0x31, 0x36, 0x7a, 0x15, 0x52, 0xb1, 0xab, 0xf0, 0x25, 0x6c, 0xb3, 0x3c, 0xb7, 0x8c, 0xb1, 0x63, 0x33, 0x92, 0xb1, 0xf1, 0xab, 0x90, 0x4d, 0x5c, 0x85, 0xcf, 0x61, 0x9b, 0xd6, 0xb9, 0x65,
0xc3, 0x18, 0x6c, 0x7f, 0x44, 0xac, 0xca, 0xfa, 0x41, 0xe2, 0x30, 0x83, 0x8b, 0x1c, 0xb8, 0x59, 0x4c, 0x1d, 0xca, 0x60, 0xfb, 0x13, 0x6c, 0xd5, 0x36, 0x0e, 0x52, 0x87, 0x79, 0xbd, 0xcc, 0x80,
0xd0, 0xb5, 0xaf, 0xa0, 0x14, 0xb1, 0x5e, 0x1e, 0x7d, 0x07, 0xd2, 0xbe, 0x39, 0x31, 0x68, 0xe8, 0xeb, 0x88, 0xae, 0x7e, 0x01, 0x95, 0x98, 0xf5, 0xc2, 0xf5, 0x1d, 0xc8, 0xf9, 0xe6, 0xcc, 0x20,
0x3a, 0xdf, 0x9c, 0xf4, 0xa6, 0xda, 0x37, 0x80, 0xf4, 0x80, 0xda, 0x23, 0x93, 0x92, 0x0b, 0x42, 0x61, 0xe8, 0x7c, 0x73, 0x36, 0x98, 0xab, 0x6f, 0x01, 0x69, 0x01, 0xb1, 0x27, 0x26, 0xc1, 0xe7,
0xe6, 0x67, 0xdd, 0x87, 0x1c, 0x53, 0x68, 0x50, 0xd3, 0xbf, 0x27, 0xf3, 0x68, 0x03, 0x23, 0xf5, 0x18, 0x2f, 0x7d, 0xdd, 0x07, 0x85, 0x2a, 0x34, 0x88, 0xe9, 0xdf, 0xe1, 0x65, 0xb6, 0x81, 0x92,
0x38, 0x45, 0x7b, 0x07, 0xa5, 0x88, 0x98, 0xdc, 0xe4, 0x67, 0x7d, 0xa4, 0xfd, 0x98, 0x84, 0xfc, 0x06, 0x8c, 0xa2, 0x7e, 0x05, 0x95, 0x98, 0x98, 0x38, 0xe4, 0x47, 0x63, 0xa4, 0xfe, 0x3b, 0x03,
0x35, 0x71, 0x2c, 0xdb, 0xb9, 0xef, 0x4e, 0x08, 0xf1, 0x22, 0x99, 0x9a, 0xf8, 0xd4, 0x25, 0xfb, 0xc5, 0x2b, 0xec, 0x58, 0xb6, 0x73, 0xd7, 0x9f, 0x61, 0xec, 0xc5, 0x2a, 0x35, 0xf5, 0x53, 0x97,
0x0e, 0xf2, 0x13, 0x9b, 0x3a, 0x24, 0x08, 0x0c, 0x3a, 0xf3, 0x08, 0x8f, 0xf5, 0xe6, 0xf1, 0xcb, 0xec, 0x5b, 0x28, 0xce, 0x6c, 0xe2, 0xe0, 0x20, 0x30, 0xc8, 0xc2, 0xc3, 0x2c, 0xd7, 0x9b, 0xc7,
0x5a, 0xf8, 0x0a, 0xd5, 0x6e, 0x05, 0xdc, 0x9b, 0x79, 0x04, 0xe7, 0x26, 0x8b, 0x05, 0xcb, 0x4b, 0x2f, 0x1a, 0xe1, 0x2b, 0xd4, 0xb8, 0xe1, 0xf0, 0x60, 0xe1, 0x61, 0x5d, 0x99, 0x45, 0x1f, 0xb4,
0x73, 0xe4, 0x8e, 0x1d, 0x6a, 0x04, 0x26, 0xe5, 0x7e, 0x2f, 0xe0, 0xac, 0xa0, 0x74, 0x4d, 0x8a, 0x2e, 0xcd, 0x89, 0x3b, 0x75, 0x88, 0x11, 0x98, 0x84, 0xc5, 0xbd, 0xa4, 0x17, 0x38, 0xa5, 0x6f,
0x0e, 0x20, 0x3f, 0xb7, 0xba, 0x3f, 0xa3, 0x84, 0xbb, 0xbf, 0x80, 0x41, 0xd8, 0x7d, 0x36, 0xa3, 0x12, 0xf4, 0x0b, 0x28, 0x2e, 0xad, 0x1e, 0x2e, 0x08, 0x66, 0xe1, 0x2f, 0x9d, 0xa6, 0x6b, 0x29,
0x84, 0x5d, 0xf0, 0xbe, 0xef, 0x9a, 0xd6, 0xc0, 0x0c, 0xa8, 0x61, 0x52, 0x4a, 0x46, 0x1e, 0x0d, 0x1d, 0xb8, 0xed, 0xa7, 0x0b, 0x82, 0xe9, 0x25, 0x1f, 0xfa, 0xae, 0x69, 0x8d, 0xcc, 0x80, 0x18,
0x78, 0x04, 0x0a, 0x78, 0x3b, 0x44, 0x4e, 0x25, 0x80, 0x8e, 0x61, 0xc7, 0x21, 0x53, 0x6a, 0x2c, 0x26, 0x21, 0x78, 0xe2, 0x91, 0x80, 0x65, 0xa1, 0xa4, 0x6f, 0x87, 0xc8, 0x89, 0x00, 0xd0, 0x31,
0x64, 0x1e, 0x88, 0x7d, 0xff, 0x40, 0x2b, 0x69, 0x2e, 0x51, 0x62, 0xe0, 0xd9, 0x1c, 0x6b, 0x70, 0xec, 0x38, 0x78, 0x4e, 0x8c, 0x48, 0xe6, 0x1e, 0xdb, 0x77, 0xf7, 0xa4, 0x96, 0x63, 0x12, 0x15,
0x88, 0xc9, 0xf8, 0xc2, 0xfb, 0xc4, 0x32, 0x54, 0xe7, 0x67, 0x84, 0x4c, 0x08, 0xd6, 0xc3, 0x28, 0x0a, 0x9e, 0x2e, 0xb1, 0x16, 0x83, 0xa8, 0x8c, 0xcf, 0x33, 0x80, 0x2d, 0x43, 0x4e, 0x40, 0x9e,
0xa0, 0x77, 0xf0, 0x72, 0x21, 0x13, 0x39, 0x42, 0x36, 0x26, 0xd4, 0x5d, 0x9c, 0xa5, 0x0c, 0xeb, 0xcb, 0x84, 0x60, 0x33, 0xcc, 0x04, 0xfa, 0x06, 0x5e, 0x44, 0x32, 0x31, 0x37, 0x0a, 0xa1, 0x1b,
0x77, 0xae, 0x3f, 0x20, 0x95, 0x0d, 0x9e, 0x40, 0x62, 0xa1, 0xbd, 0x84, 0xb2, 0x1a, 0x9a, 0x79, 0x91, 0x60, 0x3f, 0xf2, 0x47, 0x85, 0xd2, 0x92, 0xfd, 0x91, 0xf1, 0x03, 0x7b, 0x71, 0x14, 0xee,
0xd6, 0x6b, 0xb7, 0xb0, 0x13, 0xa3, 0xcb, 0x50, 0xff, 0x11, 0x36, 0x3d, 0x01, 0x18, 0x01, 0x47, 0xf2, 0x07, 0x4a, 0x42, 0x6f, 0x61, 0x77, 0x55, 0x39, 0xe7, 0x56, 0x18, 0x77, 0x35, 0xa1, 0x99,
0xe4, 0x9b, 0xbb, 0xab, 0x04, 0x44, 0x95, 0xc4, 0x05, 0x4f, 0xd5, 0xa3, 0xfd, 0x3d, 0x01, 0x9b, 0x8b, 0x55, 0x61, 0xe3, 0xd6, 0xf5, 0x47, 0xb8, 0xf6, 0x9c, 0xd5, 0x28, 0xff, 0x50, 0x5f, 0x40,
0x67, 0xe3, 0x91, 0xa7, 0x64, 0xdd, 0x7f, 0x95, 0x0e, 0xfb, 0x90, 0x13, 0x0e, 0xe2, 0xce, 0xe2, 0x55, 0xce, 0xfe, 0xf2, 0x62, 0xa9, 0x37, 0xb0, 0x93, 0xa0, 0x8b, 0x6a, 0xfa, 0x03, 0x6c, 0x7a,
0xd9, 0x50, 0xc0, 0x20, 0x48, 0xcc, 0x45, 0x4b, 0x51, 0x4d, 0x2e, 0x45, 0x35, 0xf4, 0x44, 0x4a, 0x1c, 0x30, 0x02, 0x86, 0x88, 0x67, 0x7d, 0x57, 0xca, 0xb9, 0x2c, 0xa9, 0x97, 0x3c, 0x59, 0x8f,
0xf5, 0xc4, 0x36, 0x6c, 0x85, 0x76, 0xc9, 0xb7, 0xf0, 0x6b, 0xd8, 0x66, 0xd5, 0x26, 0xe2, 0x19, 0xfa, 0xaf, 0x14, 0x6c, 0x9e, 0x4e, 0x27, 0x9e, 0x54, 0xd8, 0xff, 0x53, 0xc5, 0xed, 0x83, 0xc2,
0x54, 0x81, 0x8d, 0x27, 0xe2, 0xf7, 0xdd, 0x80, 0x70, 0x63, 0x33, 0x78, 0xbe, 0xd4, 0x7e, 0x58, 0xe3, 0xcf, 0x72, 0xc1, 0x0a, 0xae, 0xa4, 0x03, 0x27, 0xd1, 0x0c, 0xac, 0x14, 0x4e, 0x66, 0x6d,
0x13, 0xd5, 0x2e, 0xe6, 0xb1, 0x16, 0x94, 0xe8, 0xe2, 0x2d, 0x33, 0x2c, 0x42, 0x4d, 0x7b, 0x18, 0xe1, 0x84, 0xd1, 0xc8, 0x4a, 0xd1, 0x58, 0x0d, 0xff, 0xc6, 0x4a, 0xf8, 0xd5, 0x6d, 0xd8, 0x0a,
0xc8, 0x93, 0xbe, 0x92, 0x27, 0x55, 0x5e, 0xbb, 0x73, 0xc1, 0xd0, 0x78, 0x81, 0x11, 0x5d, 0xa2, 0xed, 0x17, 0xcf, 0xf2, 0x97, 0xb0, 0x4d, 0x1b, 0x5f, 0x2c, 0x82, 0xa8, 0x06, 0xcf, 0x1f, 0xb1,
0xa2, 0x5b, 0xd8, 0x52, 0xb5, 0xd9, 0x56, 0x20, 0x1f, 0xfb, 0xaf, 0x94, 0x00, 0x2c, 0x5b, 0xa1, 0x3f, 0x74, 0x03, 0xcc, 0x9c, 0xca, 0xeb, 0xcb, 0x4f, 0xf5, 0xfb, 0x34, 0x6f, 0xbc, 0x89, 0xc8,
0x6e, 0x70, 0x79, 0xce, 0x94, 0x6f, 0x2a, 0x6a, 0x2e, 0xad, 0xa0, 0xfa, 0x1d, 0x6c, 0x46, 0x79, 0x76, 0xa0, 0x42, 0xa2, 0x67, 0xd5, 0xb0, 0x30, 0x31, 0xed, 0x71, 0x20, 0x22, 0xf2, 0x52, 0x44,
0xd0, 0x17, 0xcb, 0x5b, 0xb1, 0x58, 0x67, 0xe3, 0xa2, 0x67, 0x19, 0x48, 0x8b, 0x5c, 0xd0, 0x4c, 0x44, 0x7a, 0x78, 0xcf, 0x38, 0x43, 0xeb, 0x99, 0x8e, 0xc8, 0x0a, 0x15, 0xdd, 0xc0, 0x96, 0xac,
0xd8, 0x6d, 0xb1, 0x77, 0x4d, 0xd1, 0x34, 0xf7, 0x1b, 0x82, 0x14, 0x9d, 0x86, 0x05, 0x8b, 0x7f, 0xcd, 0xb6, 0x02, 0xd1, 0x77, 0xbe, 0x90, 0x12, 0xb5, 0x6a, 0x85, 0x7c, 0xc0, 0xc5, 0x19, 0x55,
0xaf, 0x7e, 0xc0, 0xd1, 0x1e, 0x64, 0xdd, 0x27, 0xe2, 0x4f, 0x7c, 0x5b, 0x86, 0x2f, 0x83, 0x17, 0xbe, 0x29, 0xa9, 0xb9, 0xb0, 0x82, 0xfa, 0xb7, 0xb0, 0x19, 0xe7, 0x41, 0x9f, 0xad, 0x1e, 0x45,
0x04, 0xad, 0x0a, 0x95, 0xe5, 0x2d, 0x64, 0xc0, 0x7e, 0x4a, 0xc0, 0xd6, 0xc5, 0xd8, 0xb1, 0xae, 0x6b, 0xa2, 0x90, 0x14, 0x3d, 0xcd, 0x43, 0x8e, 0xd7, 0x8c, 0x6a, 0xc2, 0x6e, 0x87, 0x3e, 0xb1,
0x83, 0x7e, 0x58, 0x26, 0xcb, 0x90, 0xf2, 0x82, 0xbe, 0xc8, 0xac, 0x7c, 0xe3, 0x05, 0xe6, 0x2b, 0x92, 0xa6, 0x65, 0xdc, 0x10, 0x64, 0xc9, 0x3c, 0xec, 0x9d, 0xec, 0xf7, 0xfa, 0x5e, 0x82, 0xf6,
0xf4, 0x6b, 0x48, 0xfa, 0xe6, 0x44, 0xba, 0x6e, 0x47, 0x71, 0x5d, 0x6f, 0xda, 0x23, 0x23, 0x6f, 0xa0, 0xe0, 0x3e, 0x62, 0x7f, 0xe6, 0xdb, 0x22, 0xcd, 0x79, 0x3d, 0x22, 0xa8, 0x75, 0xa8, 0xad,
0x68, 0x52, 0xd2, 0x78, 0x81, 0x19, 0x0f, 0x7a, 0x1b, 0xcd, 0x38, 0x9e, 0x4f, 0x8d, 0x44, 0x24, 0x1e, 0x21, 0x12, 0xf6, 0x43, 0x0a, 0xb6, 0xce, 0xa7, 0x8e, 0x75, 0x15, 0x0c, 0xc3, 0x8e, 0x5d,
0xe7, 0x7e, 0x01, 0x85, 0x79, 0xce, 0x3d, 0x2d, 0x9e, 0x92, 0x46, 0x02, 0xe7, 0x44, 0xda, 0x7d, 0x85, 0xac, 0x17, 0x0c, 0x79, 0x05, 0x16, 0x5b, 0xcf, 0x74, 0xf6, 0x85, 0x7e, 0x0d, 0x19, 0xdf,
0x60, 0xc4, 0x33, 0x80, 0x0c, 0x95, 0xba, 0xcf, 0xd2, 0x90, 0xba, 0x23, 0x24, 0xd0, 0xfe, 0x91, 0x9c, 0x89, 0xd0, 0xed, 0x48, 0xa1, 0x1b, 0xcc, 0x07, 0x78, 0xe2, 0x8d, 0x4d, 0x82, 0x5b, 0xcf,
0x80, 0xe2, 0xc2, 0x62, 0x99, 0x31, 0xfb, 0x90, 0xbb, 0x1b, 0x3b, 0x16, 0xb1, 0x8c, 0x85, 0xe5, 0x74, 0xca, 0x83, 0xde, 0xc4, 0x2b, 0x93, 0xd5, 0x5d, 0x2b, 0x95, 0xa8, 0xcd, 0x44, 0x7d, 0xd1,
0x18, 0x04, 0x89, 0x31, 0xa2, 0x1a, 0x94, 0x06, 0x0f, 0xa6, 0x73, 0x4f, 0x0c, 0x51, 0x5d, 0x0c, 0xea, 0xcb, 0xb6, 0x52, 0xb1, 0x0a, 0x3b, 0x05, 0xc8, 0x13, 0xa1, 0xfb, 0x34, 0x07, 0xd9, 0x5b,
0xdb, 0xb1, 0xc8, 0x54, 0x56, 0xde, 0x6d, 0x01, 0x89, 0x42, 0x70, 0xc9, 0x00, 0xf4, 0x3b, 0xc8, 0x8c, 0x03, 0xf5, 0xef, 0x29, 0x28, 0x47, 0x16, 0x8b, 0x8a, 0xd9, 0x07, 0xe5, 0x76, 0xea, 0x58,
0x0f, 0xdd, 0xc1, 0x23, 0xb1, 0x0c, 0xd1, 0x26, 0x25, 0xf9, 0x95, 0x2d, 0x2b, 0xc7, 0x66, 0xad, 0xd8, 0x32, 0x22, 0xcb, 0x75, 0xe0, 0x24, 0xca, 0x88, 0x1a, 0x50, 0x19, 0xdd, 0x9b, 0xce, 0x1d,
0x12, 0x6f, 0x4e, 0x70, 0x4e, 0x70, 0xde, 0xf0, 0xae, 0xe9, 0xa7, 0x04, 0xc0, 0xc2, 0x23, 0xe8, 0x36, 0x78, 0xa3, 0x33, 0x6c, 0xc7, 0xc2, 0x73, 0x31, 0x04, 0x6c, 0x73, 0x88, 0xf7, 0xa4, 0x0b,
0x0b, 0x48, 0xdb, 0x0e, 0x2f, 0x76, 0xe2, 0xd2, 0x2f, 0xdd, 0x53, 0x09, 0xa3, 0x3f, 0xc4, 0xcb, 0x0a, 0xa0, 0x6f, 0xa0, 0x38, 0x76, 0x47, 0x0f, 0xd8, 0x32, 0xf8, 0xc4, 0x96, 0x61, 0x57, 0xbb,
0xa2, 0xb6, 0xd2, 0xc5, 0x35, 0x59, 0xad, 0x74, 0x87, 0xfa, 0xb3, 0xb0, 0x54, 0x56, 0x4f, 0x20, 0x2a, 0xb9, 0x4d, 0xa7, 0x36, 0x36, 0x27, 0xe9, 0x0a, 0xe7, 0xbc, 0x66, 0x03, 0xdc, 0x0f, 0x29,
0xaf, 0x02, 0xa8, 0x08, 0xc9, 0x47, 0x32, 0x93, 0x45, 0x9b, 0x7d, 0xb2, 0xc4, 0x79, 0x32, 0x87, 0x80, 0x28, 0x22, 0xe8, 0x33, 0xc8, 0xd9, 0x0e, 0xeb, 0xbb, 0xfc, 0x71, 0x58, 0xb9, 0xcf, 0x02,
0x63, 0x51, 0x0d, 0x52, 0x58, 0x2c, 0x4e, 0xd6, 0xde, 0x27, 0xb4, 0x07, 0xc8, 0x86, 0x67, 0xf9, 0x46, 0xbf, 0x4f, 0x76, 0x68, 0x75, 0x6d, 0x88, 0x1b, 0xa2, 0x71, 0x6a, 0x0e, 0xf1, 0x17, 0x61,
0xdf, 0xba, 0xbb, 0x68, 0x5f, 0x96, 0x5c, 0xea, 0xcb, 0xbe, 0x85, 0xd2, 0x85, 0xed, 0x98, 0x43, 0xd7, 0xae, 0xbf, 0x87, 0xa2, 0x0c, 0xa0, 0x32, 0x64, 0x1e, 0xf0, 0x42, 0xcc, 0x0f, 0xf4, 0x27,
0xfb, 0x6f, 0x44, 0xcd, 0xb7, 0x4f, 0x05, 0x4f, 0xfb, 0x08, 0xe5, 0xa8, 0xdc, 0x22, 0xea, 0xbc, 0x2d, 0x9c, 0x47, 0x73, 0x3c, 0xe5, 0x8d, 0x29, 0xab, 0xf3, 0x8f, 0xf7, 0xe9, 0x77, 0x29, 0xf5,
0x77, 0x8e, 0x0a, 0x0a, 0x12, 0x8f, 0xfa, 0x01, 0xe4, 0x59, 0x29, 0xbf, 0x63, 0xc2, 0xac, 0xa0, 0x1e, 0x0a, 0xa1, 0x2f, 0xff, 0xdf, 0xa0, 0x19, 0x1f, 0x11, 0x33, 0x2b, 0x23, 0xe2, 0xd7, 0x50,
0xaf, 0x09, 0x0e, 0xdf, 0x9c, 0x70, 0x7d, 0xbd, 0xa9, 0x56, 0x12, 0x0f, 0x16, 0x3f, 0x7c, 0xf8, 0x39, 0xb7, 0x1d, 0x73, 0x6c, 0xff, 0x15, 0xcb, 0xf5, 0xf6, 0x53, 0xc9, 0x53, 0x3f, 0x42, 0x35,
0x94, 0x5f, 0x89, 0x57, 0x69, 0x4e, 0x94, 0xbb, 0xc5, 0x53, 0x22, 0xf1, 0x1f, 0xa6, 0xc4, 0x6f, 0x2e, 0x17, 0x65, 0x9d, 0x8d, 0xf1, 0x71, 0x41, 0x4e, 0x62, 0x59, 0x3f, 0x80, 0x22, 0x9d, 0x2a,
0x7e, 0x4c, 0x42, 0x4e, 0xa9, 0xb8, 0xa8, 0x04, 0x5b, 0x37, 0xed, 0x66, 0xbb, 0x73, 0xdb, 0x36, 0x6e, 0xa9, 0x30, 0x9d, 0x2d, 0xd2, 0x9c, 0xc3, 0x37, 0x67, 0x4c, 0xdf, 0x60, 0xae, 0x56, 0xf8,
0x6e, 0x2f, 0x7b, 0x6d, 0xbd, 0xdb, 0x2d, 0xbe, 0x40, 0x15, 0x28, 0xd7, 0x3b, 0x57, 0x57, 0x97, 0x83, 0xc5, 0x9c, 0x0f, 0x9f, 0xfc, 0x4b, 0xfe, 0x2a, 0x2d, 0x89, 0xe2, 0xb4, 0x64, 0x49, 0xa4,
0xbd, 0x2b, 0xbd, 0xdd, 0x33, 0x7a, 0x97, 0x57, 0xba, 0xd1, 0xea, 0xd4, 0x9b, 0xc5, 0x04, 0xda, 0xfe, 0xcb, 0x92, 0xf8, 0xcd, 0xdf, 0x32, 0xa0, 0x48, 0xcd, 0x1f, 0x55, 0x60, 0xeb, 0xba, 0xdb,
0x85, 0x92, 0x82, 0xb4, 0x3b, 0xc6, 0xb9, 0xde, 0x3a, 0xfd, 0x58, 0x5c, 0x43, 0x3b, 0xb0, 0xad, 0xee, 0xf6, 0x6e, 0xba, 0xc6, 0xcd, 0xc5, 0xa0, 0xab, 0xf5, 0xfb, 0xe5, 0x67, 0xa8, 0x06, 0xd5,
0x00, 0x58, 0xff, 0xd0, 0x69, 0xea, 0xc5, 0x24, 0xe3, 0x6f, 0xf4, 0x5a, 0x75, 0xa3, 0x73, 0x71, 0x66, 0xef, 0xf2, 0xf2, 0x62, 0x70, 0xa9, 0x75, 0x07, 0xc6, 0xe0, 0xe2, 0x52, 0x33, 0x3a, 0xbd,
0xa1, 0x63, 0xfd, 0x7c, 0x0e, 0xa4, 0xd8, 0x16, 0x1c, 0x38, 0xad, 0xd7, 0xf5, 0xeb, 0xde, 0x02, 0x66, 0xbb, 0x9c, 0x42, 0xbb, 0x50, 0x91, 0x90, 0x6e, 0xcf, 0x38, 0xd3, 0x3a, 0x27, 0x1f, 0xcb,
0x59, 0x47, 0xbf, 0x84, 0xb7, 0x11, 0x11, 0xb6, 0x7d, 0xe7, 0xa6, 0x67, 0x74, 0xf5, 0x7a, 0xa7, 0x69, 0xb4, 0x03, 0xdb, 0x12, 0xa0, 0x6b, 0x1f, 0x7a, 0x6d, 0xad, 0x9c, 0xa1, 0xfc, 0xad, 0x41,
0x7d, 0x6e, 0xb4, 0xf4, 0x0f, 0x7a, 0xab, 0x98, 0x46, 0xbf, 0x02, 0x2d, 0xaa, 0xa0, 0x7b, 0x53, 0xa7, 0x69, 0xf4, 0xce, 0xcf, 0x35, 0x5d, 0x3b, 0x5b, 0x02, 0x59, 0x7a, 0x04, 0x03, 0x4e, 0x9a,
0xaf, 0xeb, 0xdd, 0x6e, 0x94, 0x6f, 0x03, 0xed, 0xc3, 0xeb, 0x98, 0x05, 0x57, 0x9d, 0x9e, 0x3e, 0x4d, 0xed, 0x6a, 0x10, 0x21, 0x1b, 0xe8, 0x97, 0xf0, 0x26, 0x26, 0x42, 0x8f, 0xef, 0x5d, 0x0f,
0xd7, 0x5a, 0xcc, 0xa0, 0x03, 0xd8, 0x8b, 0x5b, 0xc2, 0x39, 0xa4, 0xbe, 0x62, 0x16, 0xed, 0x41, 0x8c, 0xbe, 0xd6, 0xec, 0x75, 0xcf, 0x8c, 0x8e, 0xf6, 0x41, 0xeb, 0x94, 0x73, 0xe8, 0x57, 0xa0,
0x85, 0x73, 0xa8, 0x9a, 0xe7, 0xf6, 0x02, 0x2a, 0x43, 0x51, 0x7a, 0xce, 0x68, 0xea, 0x1f, 0x8d, 0xc6, 0x15, 0xf4, 0xaf, 0x9b, 0x4d, 0xad, 0xdf, 0x8f, 0xf3, 0x3d, 0x47, 0xfb, 0xf0, 0x2a, 0x61,
0xc6, 0x69, 0xb7, 0x51, 0xcc, 0xa1, 0xd7, 0xb0, 0xdb, 0xd6, 0xbb, 0x4c, 0xdd, 0x12, 0x98, 0x8f, 0xc1, 0x65, 0x6f, 0xa0, 0x2d, 0xb5, 0x96, 0xf3, 0xe8, 0x00, 0xf6, 0x92, 0x96, 0x30, 0x0e, 0xa1,
0x39, 0xeb, 0xb4, 0x5d, 0x6f, 0x74, 0x70, 0xb1, 0x70, 0xfc, 0xcf, 0x2c, 0x64, 0x6f, 0x79, 0x00, 0xaf, 0x5c, 0x40, 0x7b, 0x50, 0x63, 0x1c, 0xb2, 0xe6, 0xa5, 0xbd, 0x80, 0xaa, 0x50, 0x16, 0x91,
0x9b, 0x36, 0x45, 0x2d, 0xc8, 0x29, 0xc3, 0x12, 0x7a, 0x13, 0x2b, 0x10, 0xd1, 0xa1, 0xac, 0xfa, 0x33, 0xda, 0xda, 0x47, 0xa3, 0x75, 0xd2, 0x6f, 0x95, 0x15, 0xf4, 0x0a, 0x76, 0xbb, 0x5a, 0x9f,
0xd9, 0x73, 0x70, 0x58, 0xc6, 0x72, 0xca, 0xf4, 0x12, 0xd5, 0xb6, 0x34, 0x9c, 0x44, 0xb5, 0xad, 0xaa, 0x5b, 0x01, 0x8b, 0x89, 0x60, 0x9d, 0x74, 0x9b, 0xad, 0x9e, 0x5e, 0x2e, 0x1d, 0xff, 0xa3,
0x18, 0x7a, 0x30, 0x14, 0x22, 0xf3, 0x07, 0xda, 0x57, 0x04, 0x56, 0x8d, 0x3b, 0xd5, 0x83, 0xe7, 0x00, 0x85, 0x1b, 0x96, 0xc0, 0xb6, 0x4d, 0x50, 0x07, 0x14, 0x69, 0x6f, 0x43, 0xaf, 0x13, 0x0d,
0x19, 0xa4, 0xce, 0x4b, 0x80, 0x45, 0xa2, 0xa3, 0xbd, 0xd8, 0x79, 0x22, 0x97, 0xa2, 0xfa, 0xe6, 0x22, 0xbe, 0x1f, 0xd6, 0x3f, 0x79, 0x0a, 0x0e, 0xdb, 0x98, 0x22, 0x2d, 0x52, 0x71, 0x6d, 0x2b,
0x19, 0x54, 0xaa, 0x3a, 0x81, 0xc2, 0x39, 0xf1, 0xed, 0x27, 0xd2, 0x26, 0x53, 0xda, 0x24, 0x33, 0x7b, 0x52, 0x5c, 0xdb, 0x9a, 0xfd, 0x4b, 0x87, 0x52, 0x6c, 0x15, 0x42, 0xfb, 0x92, 0xc0, 0xba,
0xb4, 0xad, 0xf0, 0x8b, 0xf9, 0xa8, 0xfa, 0x32, 0xec, 0xf4, 0x9b, 0x64, 0x76, 0x4e, 0x82, 0x81, 0xcd, 0xab, 0x7e, 0xf0, 0x34, 0x83, 0xd0, 0x79, 0x01, 0x10, 0x15, 0x3a, 0xda, 0x4b, 0xf8, 0x13,
0x6f, 0x7b, 0xd4, 0xf5, 0xd1, 0x7b, 0xc8, 0x0a, 0x59, 0x26, 0x57, 0x52, 0x99, 0x5a, 0xee, 0xc0, 0xbb, 0x14, 0xf5, 0xd7, 0x4f, 0xa0, 0x42, 0xd5, 0x7b, 0x28, 0x9d, 0x61, 0xdf, 0x7e, 0xc4, 0x5d,
0xa4, 0xae, 0xff, 0xac, 0xe4, 0xef, 0x21, 0xc3, 0xf6, 0x63, 0xd3, 0x11, 0x52, 0x1b, 0x5c, 0x65, 0x3c, 0x27, 0x6d, 0xbc, 0x40, 0xdb, 0x12, 0x3f, 0x5f, 0xd5, 0xea, 0x2f, 0xc2, 0xa5, 0xa3, 0x8d,
0x7a, 0xaa, 0xee, 0x2e, 0xd1, 0xa5, 0xc9, 0x0d, 0x40, 0x72, 0xec, 0x51, 0x27, 0x27, 0x55, 0x8d, 0x17, 0x67, 0x38, 0x18, 0xf9, 0xb6, 0x47, 0x5c, 0x1f, 0xbd, 0x83, 0x02, 0x97, 0xa5, 0x72, 0x15,
0x42, 0xaf, 0x56, 0xd5, 0x76, 0x2d, 0x36, 0x2d, 0xb5, 0x20, 0xa7, 0x4c, 0x12, 0x91, 0x48, 0x2f, 0x99, 0xa9, 0xe3, 0x8e, 0x4c, 0xe2, 0xfa, 0x4f, 0x4a, 0xfe, 0x0e, 0xf2, 0xf4, 0x3c, 0xba, 0xa8,
0xcf, 0x47, 0x91, 0x48, 0xaf, 0x1a, 0x40, 0x5a, 0x90, 0x53, 0x46, 0x86, 0x88, 0xb6, 0xe5, 0x09, 0x21, 0x79, 0xd6, 0x96, 0x16, 0xb9, 0xfa, 0xee, 0x0a, 0x5d, 0x98, 0xdc, 0x02, 0x24, 0x36, 0x30,
0x24, 0xa2, 0x6d, 0xd5, 0xa4, 0x81, 0xa1, 0x10, 0xe9, 0x4b, 0x23, 0x79, 0xb3, 0xaa, 0x93, 0x8d, 0x79, 0x89, 0x93, 0xd5, 0x48, 0xf4, 0x7a, 0x5d, 0x1e, 0xeb, 0x12, 0x8b, 0x5b, 0x07, 0x14, 0x69,
0xe4, 0xcd, 0xea, 0x96, 0xf6, 0x4f, 0xb0, 0x21, 0x3b, 0x3f, 0xf4, 0x4a, 0x61, 0x8e, 0x76, 0xa9, 0xa9, 0x89, 0x65, 0x7a, 0x75, 0x55, 0x8b, 0x65, 0x7a, 0xdd, 0x2e, 0xd4, 0x01, 0x45, 0xda, 0x5e,
0x11, 0x8f, 0xc5, 0x1a, 0xc5, 0x79, 0xe6, 0x49, 0x93, 0xf6, 0x9e, 0xe9, 0xc4, 0x56, 0x67, 0x5e, 0x62, 0xda, 0x56, 0x97, 0xa1, 0x98, 0xb6, 0x75, 0x4b, 0x8f, 0x0e, 0xa5, 0xd8, 0xfc, 0x1a, 0xab,
0xcc, 0x98, 0xbf, 0x42, 0x31, 0xde, 0xde, 0x20, 0xb5, 0x78, 0x3e, 0xd3, 0x5e, 0x55, 0x3f, 0xff, 0x9b, 0x75, 0x13, 0x6f, 0xac, 0x6e, 0xd6, 0x8f, 0xbe, 0x7f, 0x84, 0xe7, 0x62, 0xf2, 0x43, 0x2f,
0x59, 0x1e, 0xa9, 0xbc, 0x0e, 0x99, 0x79, 0xb3, 0x81, 0xd4, 0xf3, 0xc4, 0x7a, 0xa6, 0xea, 0xeb, 0x25, 0xe6, 0xf8, 0x34, 0x1b, 0x8b, 0x58, 0x62, 0x50, 0x5c, 0x56, 0x9e, 0x30, 0x69, 0xef, 0x89,
0x95, 0x98, 0x54, 0xd2, 0x81, 0xbc, 0x5a, 0xbf, 0x90, 0x1a, 0xb2, 0x15, 0x05, 0xb1, 0xba, 0xff, 0x49, 0x6c, 0x7d, 0xe5, 0x25, 0x8c, 0xf9, 0x0b, 0x94, 0x93, 0xe3, 0x0d, 0x92, 0x9b, 0xe7, 0x13,
0x2c, 0x2e, 0x14, 0x9e, 0xfd, 0xf6, 0x2f, 0x47, 0xf7, 0x36, 0x7d, 0x18, 0xf7, 0x6b, 0x03, 0x77, 0xe3, 0x55, 0xfd, 0xd3, 0x1f, 0xe5, 0x11, 0xca, 0x9b, 0x90, 0x5f, 0x0e, 0x1b, 0x48, 0xf6, 0x27,
0x74, 0x34, 0x64, 0x63, 0x91, 0x63, 0x3b, 0xf7, 0x0e, 0xa1, 0x13, 0xd7, 0x7f, 0x3c, 0x1a, 0x3a, 0x31, 0x33, 0xd5, 0x5f, 0xad, 0xc5, 0x84, 0x92, 0x1e, 0x14, 0xe5, 0xfe, 0x85, 0xe4, 0x94, 0xad,
0xd6, 0x11, 0x2f, 0xd2, 0x47, 0xa1, 0x9e, 0x7e, 0x9a, 0xff, 0xbd, 0xf4, 0xee, 0xdf, 0x01, 0x00, 0x69, 0x88, 0xf5, 0xfd, 0x27, 0x71, 0xae, 0xf0, 0xf4, 0xb7, 0x7f, 0x3e, 0xba, 0xb3, 0xc9, 0xfd,
0x00, 0xff, 0xff, 0xad, 0x1e, 0xe8, 0xf0, 0xa7, 0x12, 0x00, 0x00, 0x74, 0xd8, 0x18, 0xb9, 0x93, 0xa3, 0x31, 0xdd, 0xce, 0x1c, 0xdb, 0xb9, 0x73, 0x30, 0x99, 0xb9,
0xfe, 0xc3, 0xd1, 0xd8, 0xb1, 0x8e, 0x58, 0x93, 0x3e, 0x0a, 0xf5, 0x0c, 0x73, 0xec, 0x3f, 0x5d,
0x5f, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x20, 0xb6, 0x46, 0x32, 0x13, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

View File

@ -409,11 +409,12 @@ message PendingSweep {
uint32 amount_sat = 3; uint32 amount_sat = 3;
/* /*
Deprecated, use sat_per_vbyte.
The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee
rate is only determined once a sweeping transaction for the output is rate is only determined once a sweeping transaction for the output is
created, so it's possible for this to be 0 before this. created, so it's possible for this to be 0 before this.
*/ */
uint32 sat_per_byte = 4; uint32 sat_per_byte = 4 [deprecated = true];
// The number of broadcast attempts we've made to sweep the output. // The number of broadcast attempts we've made to sweep the output.
uint32 broadcast_attempts = 5; uint32 broadcast_attempts = 5;
@ -427,8 +428,19 @@ message PendingSweep {
// The requested confirmation target for this output. // The requested confirmation target for this output.
uint32 requested_conf_target = 8; uint32 requested_conf_target = 8;
// Deprecated, use requested_sat_per_vbyte.
// The requested fee rate, expressed in sat/vbyte, for this output. // The requested fee rate, expressed in sat/vbyte, for this output.
uint32 requested_sat_per_byte = 9; uint32 requested_sat_per_byte = 9 [deprecated = true];
/*
The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee
rate is only determined once a sweeping transaction for the output is
created, so it's possible for this to be 0 before this.
*/
uint64 sat_per_vbyte = 10;
// The requested fee rate, expressed in sat/vbyte, for this output.
uint64 requested_sat_per_vbyte = 11;
/* /*
Whether this input must be force-swept. This means that it is swept even Whether this input must be force-swept. This means that it is swept even
@ -455,16 +467,23 @@ message BumpFeeRequest {
uint32 target_conf = 2; uint32 target_conf = 2;
/* /*
Deprecated, use sat_per_vbyte.
The fee rate, expressed in sat/vbyte, that should be used to spend the input The fee rate, expressed in sat/vbyte, that should be used to spend the input
with. with.
*/ */
uint32 sat_per_byte = 3; uint32 sat_per_byte = 3 [deprecated = true];
/* /*
Whether this input must be force-swept. This means that it is swept even Whether this input must be force-swept. This means that it is swept even
if it has a negative yield. if it has a negative yield.
*/ */
bool force = 4; bool force = 4;
/*
The fee rate, expressed in sat/vbyte, that should be used to spend the input
with.
*/
uint64 sat_per_vbyte = 5;
} }
message BumpFeeResponse { message BumpFeeResponse {
@ -539,7 +558,7 @@ message FundPsbtRequest {
The fee rate, expressed in sat/vbyte, that should be used to spend the The fee rate, expressed in sat/vbyte, that should be used to spend the
input with. input with.
*/ */
uint32 sat_per_vbyte = 4; uint64 sat_per_vbyte = 4;
} }
} }
message FundPsbtResponse { message FundPsbtResponse {

View File

@ -758,12 +758,17 @@
"sat_per_byte": { "sat_per_byte": {
"type": "integer", "type": "integer",
"format": "int64", "format": "int64",
"description": "The fee rate, expressed in sat/vbyte, that should be used to spend the input\nwith." "description": "Deprecated, use sat_per_vbyte.\nThe fee rate, expressed in sat/vbyte, that should be used to spend the input\nwith."
}, },
"force": { "force": {
"type": "boolean", "type": "boolean",
"format": "boolean", "format": "boolean",
"description": "Whether this input must be force-swept. This means that it is swept even\nif it has a negative yield." "description": "Whether this input must be force-swept. This means that it is swept even\nif it has a negative yield."
},
"sat_per_vbyte": {
"type": "string",
"format": "uint64",
"description": "The fee rate, expressed in sat/vbyte, that should be used to spend the input\nwith."
} }
} }
}, },
@ -823,8 +828,8 @@
"description": "The target number of blocks that the transaction should be confirmed in." "description": "The target number of blocks that the transaction should be confirmed in."
}, },
"sat_per_vbyte": { "sat_per_vbyte": {
"type": "integer", "type": "string",
"format": "int64", "format": "uint64",
"description": "The fee rate, expressed in sat/vbyte, that should be used to spend the\ninput with." "description": "The fee rate, expressed in sat/vbyte, that should be used to spend the\ninput with."
} }
} }
@ -971,7 +976,7 @@
"sat_per_byte": { "sat_per_byte": {
"type": "integer", "type": "integer",
"format": "int64", "format": "int64",
"description": "The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee\nrate is only determined once a sweeping transaction for the output is\ncreated, so it's possible for this to be 0 before this." "description": "Deprecated, use sat_per_vbyte.\nThe fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee\nrate is only determined once a sweeping transaction for the output is\ncreated, so it's possible for this to be 0 before this."
}, },
"broadcast_attempts": { "broadcast_attempts": {
"type": "integer", "type": "integer",
@ -991,6 +996,16 @@
"requested_sat_per_byte": { "requested_sat_per_byte": {
"type": "integer", "type": "integer",
"format": "int64", "format": "int64",
"description": "Deprecated, use requested_sat_per_vbyte.\nThe requested fee rate, expressed in sat/vbyte, for this output."
},
"sat_per_vbyte": {
"type": "string",
"format": "uint64",
"description": "The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee\nrate is only determined once a sweeping transaction for the output is\ncreated, so it's possible for this to be 0 before this."
},
"requested_sat_per_vbyte": {
"type": "string",
"format": "uint64",
"description": "The requested fee rate, expressed in sat/vbyte, for this output." "description": "The requested fee rate, expressed in sat/vbyte, for this output."
}, },
"force": { "force": {

View File

@ -668,23 +668,23 @@ func (w *WalletKit) PendingSweeps(ctx context.Context,
OutputIndex: pendingInput.OutPoint.Index, OutputIndex: pendingInput.OutPoint.Index,
} }
amountSat := uint32(pendingInput.Amount) amountSat := uint32(pendingInput.Amount)
satPerByte := uint32(pendingInput.LastFeeRate.FeePerKVByte() / 1000) satPerVbyte := uint64(pendingInput.LastFeeRate.FeePerKVByte() / 1000)
broadcastAttempts := uint32(pendingInput.BroadcastAttempts) broadcastAttempts := uint32(pendingInput.BroadcastAttempts)
nextBroadcastHeight := uint32(pendingInput.NextBroadcastHeight) nextBroadcastHeight := uint32(pendingInput.NextBroadcastHeight)
requestedFee := pendingInput.Params.Fee requestedFee := pendingInput.Params.Fee
requestedFeeRate := uint32(requestedFee.FeeRate.FeePerKVByte() / 1000) requestedFeeRate := uint64(requestedFee.FeeRate.FeePerKVByte() / 1000)
rpcPendingSweeps = append(rpcPendingSweeps, &PendingSweep{ rpcPendingSweeps = append(rpcPendingSweeps, &PendingSweep{
Outpoint: op, Outpoint: op,
WitnessType: witnessType, WitnessType: witnessType,
AmountSat: amountSat, AmountSat: amountSat,
SatPerByte: satPerByte, SatPerVbyte: satPerVbyte,
BroadcastAttempts: broadcastAttempts, BroadcastAttempts: broadcastAttempts,
NextBroadcastHeight: nextBroadcastHeight, NextBroadcastHeight: nextBroadcastHeight,
RequestedSatPerByte: requestedFeeRate, RequestedSatPerVbyte: requestedFeeRate,
RequestedConfTarget: requestedFee.ConfTarget, RequestedConfTarget: requestedFee.ConfTarget,
Force: pendingInput.Params.Force, Force: pendingInput.Params.Force,
}) })
} }
@ -742,8 +742,19 @@ func (w *WalletKit) BumpFee(ctx context.Context,
return nil, err return nil, err
} }
// We only allow using either the deprecated field or the new field.
if in.SatPerByte != 0 && in.SatPerVbyte != 0 {
return nil, fmt.Errorf("either SatPerByte or " +
"SatPerVbyte should be set, but not both")
}
// Construct the request's fee preference. // Construct the request's fee preference.
satPerKw := chainfee.SatPerKVByte(in.SatPerByte * 1000).FeePerKWeight() satPerKw := chainfee.SatPerKVByte(in.SatPerVbyte * 1000).FeePerKWeight()
if in.SatPerByte != 0 {
satPerKw = chainfee.SatPerKVByte(
in.SatPerByte * 1000,
).FeePerKWeight()
}
feePreference := sweep.FeePreference{ feePreference := sweep.FeePreference{
ConfTarget: uint32(in.TargetConf), ConfTarget: uint32(in.TargetConf),
FeeRate: satPerKw, FeeRate: satPerKw,

View File

@ -370,8 +370,15 @@ func (c *WatchtowerClient) Policy(ctx context.Context,
} }
return &PolicyResponse{ return &PolicyResponse{
MaxUpdates: uint32(policy.MaxUpdates), MaxUpdates: uint32(policy.MaxUpdates),
SweepSatPerByte: uint32(policy.SweepFeeRate.FeePerKVByte() / 1000), SweepSatPerVbyte: uint32(
policy.SweepFeeRate.FeePerKVByte() / 1000,
),
// Deprecated field.
SweepSatPerByte: uint32(
policy.SweepFeeRate.FeePerKVByte() / 1000,
),
}, nil }, nil
} }
@ -387,12 +394,15 @@ func marshallTower(tower *wtclient.RegisteredTower, includeSessions bool) *Tower
if includeSessions { if includeSessions {
rpcSessions = make([]*TowerSession, 0, len(tower.Sessions)) rpcSessions = make([]*TowerSession, 0, len(tower.Sessions))
for _, session := range tower.Sessions { for _, session := range tower.Sessions {
satPerByte := session.Policy.SweepFeeRate.FeePerKVByte() / 1000 satPerVByte := session.Policy.SweepFeeRate.FeePerKVByte() / 1000
rpcSessions = append(rpcSessions, &TowerSession{ rpcSessions = append(rpcSessions, &TowerSession{
NumBackups: uint32(len(session.AckedUpdates)), NumBackups: uint32(len(session.AckedUpdates)),
NumPendingBackups: uint32(len(session.CommittedUpdates)), NumPendingBackups: uint32(len(session.CommittedUpdates)),
MaxBackups: uint32(session.Policy.MaxUpdates), MaxBackups: uint32(session.Policy.MaxUpdates),
SweepSatPerByte: uint32(satPerByte), SweepSatPerVbyte: uint32(satPerVByte),
// Deprecated field.
SweepSatPerByte: uint32(satPerVByte),
}) })
} }
} }

View File

@ -275,9 +275,14 @@ type TowerSession struct {
// The maximum number of backups allowed by the watchtower session. // The maximum number of backups allowed by the watchtower session.
MaxBackups uint32 `protobuf:"varint,3,opt,name=max_backups,json=maxBackups,proto3" json:"max_backups,omitempty"` MaxBackups uint32 `protobuf:"varint,3,opt,name=max_backups,json=maxBackups,proto3" json:"max_backups,omitempty"`
// //
//Deprecated, use sweep_sat_per_vbyte.
//The fee rate, in satoshis per vbyte, that will be used by the watchtower for //The fee rate, in satoshis per vbyte, that will be used by the watchtower for
//the justice transaction in the event of a channel breach. //the justice transaction in the event of a channel breach.
SweepSatPerByte uint32 `protobuf:"varint,4,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"` SweepSatPerByte uint32 `protobuf:"varint,4,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"` // Deprecated: Do not use.
//
//The fee rate, in satoshis per vbyte, that will be used by the watchtower for
//the justice transaction in the event of a channel breach.
SweepSatPerVbyte uint32 `protobuf:"varint,5,opt,name=sweep_sat_per_vbyte,json=sweepSatPerVbyte,proto3" json:"sweep_sat_per_vbyte,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -329,6 +334,7 @@ func (m *TowerSession) GetMaxBackups() uint32 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *TowerSession) GetSweepSatPerByte() uint32 { func (m *TowerSession) GetSweepSatPerByte() uint32 {
if m != nil { if m != nil {
return m.SweepSatPerByte return m.SweepSatPerByte
@ -336,6 +342,13 @@ func (m *TowerSession) GetSweepSatPerByte() uint32 {
return 0 return 0
} }
func (m *TowerSession) GetSweepSatPerVbyte() uint32 {
if m != nil {
return m.SweepSatPerVbyte
}
return 0
}
type Tower struct { type Tower struct {
// The identifying public key of the watchtower. // The identifying public key of the watchtower.
Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
@ -652,9 +665,14 @@ type PolicyResponse struct {
//should allow. //should allow.
MaxUpdates uint32 `protobuf:"varint,1,opt,name=max_updates,json=maxUpdates,proto3" json:"max_updates,omitempty"` MaxUpdates uint32 `protobuf:"varint,1,opt,name=max_updates,json=maxUpdates,proto3" json:"max_updates,omitempty"`
// //
//Deprecated, use sweep_sat_per_vbyte.
//The fee rate, in satoshis per vbyte, that will be used by watchtowers for //The fee rate, in satoshis per vbyte, that will be used by watchtowers for
//justice transactions in response to channel breaches. //justice transactions in response to channel breaches.
SweepSatPerByte uint32 `protobuf:"varint,2,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"` SweepSatPerByte uint32 `protobuf:"varint,2,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"` // Deprecated: Do not use.
//
//The fee rate, in satoshis per vbyte, that will be used by watchtowers for
//justice transactions in response to channel breaches.
SweepSatPerVbyte uint32 `protobuf:"varint,3,opt,name=sweep_sat_per_vbyte,json=sweepSatPerVbyte,proto3" json:"sweep_sat_per_vbyte,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -692,6 +710,7 @@ func (m *PolicyResponse) GetMaxUpdates() uint32 {
return 0 return 0
} }
// Deprecated: Do not use.
func (m *PolicyResponse) GetSweepSatPerByte() uint32 { func (m *PolicyResponse) GetSweepSatPerByte() uint32 {
if m != nil { if m != nil {
return m.SweepSatPerByte return m.SweepSatPerByte
@ -699,6 +718,13 @@ func (m *PolicyResponse) GetSweepSatPerByte() uint32 {
return 0 return 0
} }
func (m *PolicyResponse) GetSweepSatPerVbyte() uint32 {
if m != nil {
return m.SweepSatPerVbyte
}
return 0
}
func init() { func init() {
proto.RegisterEnum("wtclientrpc.PolicyType", PolicyType_name, PolicyType_value) proto.RegisterEnum("wtclientrpc.PolicyType", PolicyType_name, PolicyType_value)
proto.RegisterType((*AddTowerRequest)(nil), "wtclientrpc.AddTowerRequest") proto.RegisterType((*AddTowerRequest)(nil), "wtclientrpc.AddTowerRequest")
@ -719,54 +745,55 @@ func init() {
func init() { proto.RegisterFile("wtclientrpc/wtclient.proto", fileDescriptor_b5f4e7d95a641af2) } func init() { proto.RegisterFile("wtclientrpc/wtclient.proto", fileDescriptor_b5f4e7d95a641af2) }
var fileDescriptor_b5f4e7d95a641af2 = []byte{ var fileDescriptor_b5f4e7d95a641af2 = []byte{
// 739 bytes of a gzipped FileDescriptorProto // 765 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcd, 0x6e, 0xd3, 0x4a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xdd, 0x6e, 0xda, 0x48,
0x14, 0xbe, 0x6e, 0x6e, 0x72, 0xd3, 0x93, 0xb4, 0x4d, 0x27, 0xb7, 0xbd, 0xb9, 0xa6, 0x90, 0x60, 0x14, 0x5e, 0xc3, 0xc2, 0x92, 0x03, 0x49, 0xc8, 0xb0, 0xc9, 0xb2, 0xde, 0xec, 0xc2, 0x5a, 0xbd,
0xb1, 0x08, 0x05, 0x25, 0x22, 0x05, 0xa9, 0xab, 0x8a, 0x34, 0xb4, 0xa5, 0x52, 0x81, 0xc8, 0x2d, 0xa0, 0x51, 0x0b, 0x2a, 0x69, 0xa5, 0x5c, 0x45, 0x05, 0x9a, 0xa4, 0x91, 0xd2, 0x16, 0x39, 0xe9,
0xe2, 0x67, 0x81, 0x35, 0xb1, 0xa7, 0x89, 0x55, 0x7b, 0xec, 0xda, 0xe3, 0x26, 0x79, 0x28, 0x1e, 0xef, 0x8d, 0x35, 0xd8, 0x13, 0xb0, 0x82, 0xc7, 0x8e, 0x3d, 0x0e, 0xf0, 0x18, 0x7d, 0xa8, 0x3e,
0x83, 0x07, 0xe0, 0x6d, 0x58, 0x22, 0x8f, 0xc7, 0x8e, 0xdd, 0x3a, 0x62, 0x01, 0x3b, 0xfb, 0x7c, 0x40, 0xdf, 0xa0, 0x8f, 0xd1, 0xcb, 0xca, 0xe3, 0xb1, 0xb1, 0x13, 0xa3, 0xaa, 0x6a, 0xef, 0xec,
0xdf, 0x7c, 0x3e, 0xf3, 0x9d, 0x1f, 0x83, 0x3c, 0x65, 0xba, 0x65, 0x12, 0xca, 0x3c, 0x57, 0xef, 0xf3, 0x7d, 0xf3, 0x79, 0xce, 0x77, 0x7e, 0x0c, 0xf2, 0x8c, 0xe9, 0x53, 0x93, 0x50, 0xe6, 0x3a,
0xc6, 0xcf, 0x1d, 0xd7, 0x73, 0x98, 0x83, 0x2a, 0x29, 0x4c, 0x19, 0xc0, 0x46, 0xdf, 0x30, 0x2e, 0x7a, 0x27, 0x7a, 0x6e, 0x3b, 0xae, 0xcd, 0x6c, 0x54, 0x4e, 0x60, 0xca, 0x00, 0x36, 0x7b, 0x86,
0x9c, 0x29, 0xf1, 0x54, 0x72, 0x1d, 0x10, 0x9f, 0xa1, 0x6d, 0x28, 0xb9, 0xc1, 0xe8, 0x8a, 0xcc, 0x71, 0x61, 0xcf, 0x88, 0xab, 0x92, 0x6b, 0x9f, 0x78, 0x0c, 0xed, 0x40, 0xd1, 0xf1, 0x47, 0x57,
0x1b, 0x52, 0x4b, 0x6a, 0x57, 0x55, 0xf1, 0x86, 0x1a, 0xf0, 0x0f, 0x36, 0x0c, 0x8f, 0xf8, 0x7e, 0x64, 0x51, 0x97, 0x9a, 0x52, 0xab, 0xa2, 0x8a, 0x37, 0x54, 0x87, 0x3f, 0xb0, 0x61, 0xb8, 0xc4,
0x63, 0xa5, 0x25, 0xb5, 0x57, 0xd5, 0xf8, 0x55, 0x41, 0x50, 0x5b, 0x88, 0xf8, 0xae, 0x43, 0x7d, 0xf3, 0xea, 0xb9, 0xa6, 0xd4, 0x5a, 0x53, 0xa3, 0x57, 0x05, 0x41, 0x75, 0x29, 0xe2, 0x39, 0x36,
0xa2, 0x1c, 0x03, 0x52, 0x89, 0xed, 0xdc, 0x90, 0xdf, 0xd4, 0xde, 0x82, 0x7a, 0x46, 0x47, 0xc8, 0xf5, 0x88, 0x72, 0x0c, 0x48, 0x25, 0x96, 0x7d, 0x43, 0x7e, 0x52, 0x7b, 0x1b, 0x6a, 0x29, 0x1d,
0x7f, 0x84, 0xfa, 0x09, 0x61, 0x3c, 0x76, 0x4a, 0x2f, 0x9d, 0x5f, 0xe9, 0x3f, 0x86, 0x9a, 0x49, 0x21, 0xff, 0x0e, 0x6a, 0x27, 0x84, 0xf1, 0xd8, 0x29, 0xbd, 0xb4, 0xbf, 0xa7, 0x7f, 0x1f, 0xaa,
0x75, 0x2b, 0x30, 0x88, 0xe6, 0x13, 0xdf, 0x37, 0x1d, 0x1a, 0x7d, 0xa8, 0xac, 0x6e, 0x88, 0xf8, 0x26, 0xd5, 0xa7, 0xbe, 0x41, 0x34, 0x8f, 0x78, 0x9e, 0x69, 0xd3, 0xf0, 0x43, 0x25, 0x75, 0x53,
0xb9, 0x08, 0x2b, 0x5f, 0x25, 0xa8, 0x72, 0x5d, 0x11, 0x41, 0x4d, 0xa8, 0xd0, 0xc0, 0xd6, 0x46, 0xc4, 0xcf, 0x45, 0x58, 0xf9, 0x22, 0x41, 0x85, 0xeb, 0x8a, 0x08, 0x6a, 0x40, 0x99, 0xfa, 0x96,
0x58, 0xbf, 0x0a, 0x5c, 0x9f, 0x0b, 0xaf, 0xa9, 0x40, 0x03, 0xfb, 0x30, 0x8a, 0xa0, 0x0e, 0xd4, 0x36, 0xc2, 0xfa, 0x95, 0xef, 0x78, 0x5c, 0x78, 0x5d, 0x05, 0xea, 0x5b, 0xfd, 0x30, 0x82, 0xda,
0x43, 0x82, 0x4b, 0xa8, 0x61, 0xd2, 0x71, 0x42, 0x5c, 0xe1, 0xc4, 0x4d, 0x1a, 0xd8, 0xc3, 0x08, 0x50, 0x0b, 0x08, 0x0e, 0xa1, 0x86, 0x49, 0xc7, 0x31, 0x31, 0xc7, 0x89, 0x5b, 0xd4, 0xb7, 0x86,
0x89, 0xf9, 0x4d, 0xa8, 0xd8, 0x78, 0x96, 0xf0, 0x0a, 0x91, 0xa0, 0x8d, 0x67, 0x31, 0xe1, 0x09, 0x21, 0x12, 0xf1, 0x1b, 0x50, 0xb6, 0xf0, 0x3c, 0xe6, 0xe5, 0x43, 0x41, 0x0b, 0xcf, 0x23, 0x42,
0x20, 0x7f, 0x4a, 0x88, 0xab, 0xf9, 0x98, 0x69, 0x2e, 0xf1, 0xb4, 0xd1, 0x9c, 0x91, 0xc6, 0xdf, 0x07, 0x90, 0x37, 0x23, 0xc4, 0xd1, 0x3c, 0xcc, 0x34, 0x87, 0xb8, 0xda, 0x68, 0xc1, 0x48, 0xfd,
0x9c, 0xb7, 0xc1, 0x91, 0x73, 0xcc, 0x86, 0xc4, 0x3b, 0x9c, 0x33, 0xa2, 0x7c, 0x97, 0xa0, 0xc8, 0xf7, 0x80, 0xd7, 0xcf, 0xd5, 0x25, 0x75, 0x93, 0xa3, 0xe7, 0x98, 0x0d, 0x89, 0xdb, 0x5f, 0x30,
0xf3, 0x5d, 0x7a, 0xf9, 0x1d, 0x58, 0x15, 0x6e, 0x92, 0x30, 0xab, 0x42, 0x7b, 0x55, 0x5d, 0x04, 0x82, 0x1e, 0x42, 0x2d, 0x7d, 0xe0, 0x86, 0x9f, 0x28, 0x70, 0xe5, 0x6a, 0x82, 0xfd, 0x26, 0x88,
0xd0, 0x3e, 0x34, 0xb0, 0xce, 0xcc, 0x9b, 0xc4, 0x19, 0x4d, 0xc7, 0xd4, 0x30, 0x0d, 0xcc, 0x08, 0x2b, 0x9f, 0x25, 0x28, 0xf0, 0x14, 0x57, 0xfa, 0xb5, 0x0b, 0x6b, 0xa2, 0x00, 0x24, 0x48, 0x24,
0x4f, 0xad, 0xac, 0x6e, 0x47, 0xb8, 0xf0, 0x63, 0x10, 0xa3, 0xe8, 0x21, 0x54, 0xc3, 0x7b, 0x27, 0xdf, 0x5a, 0x53, 0x97, 0x01, 0x74, 0x00, 0x75, 0xac, 0x33, 0xf3, 0x26, 0x36, 0x53, 0xd3, 0x31,
0x86, 0x46, 0x09, 0x86, 0x66, 0xc5, 0x66, 0xa2, 0x17, 0x50, 0x4e, 0xe0, 0x62, 0xab, 0xd0, 0xae, 0x35, 0x4c, 0x03, 0x33, 0xc2, 0xb3, 0x29, 0xa9, 0x3b, 0x21, 0x2e, 0x2c, 0x1c, 0x44, 0x28, 0xfa,
0xf4, 0xfe, 0xef, 0xa4, 0xda, 0xaf, 0x93, 0x36, 0x5a, 0x4d, 0xa8, 0xca, 0x01, 0x6c, 0x9e, 0x99, 0x1f, 0x2a, 0x81, 0x55, 0x71, 0x0d, 0x78, 0x4e, 0x6a, 0xe0, 0x6f, 0xe4, 0x3f, 0x7a, 0x02, 0xa5,
0x7e, 0x54, 0x5e, 0x3f, 0xae, 0x6d, 0x5e, 0x0d, 0xa5, 0xfc, 0x1a, 0xbe, 0x04, 0x94, 0x3e, 0x1f, 0x18, 0x2e, 0x34, 0xf3, 0xad, 0x72, 0xf7, 0xef, 0x76, 0xa2, 0x63, 0xdb, 0xc9, 0xda, 0xa8, 0x31,
0xf5, 0x0c, 0xda, 0x85, 0x12, 0xe3, 0x91, 0x86, 0xc4, 0x53, 0x41, 0x77, 0x53, 0x51, 0x05, 0x43, 0x55, 0x39, 0x84, 0xad, 0x33, 0xd3, 0x0b, 0x3b, 0xc2, 0x8b, 0xda, 0x21, 0xab, 0xec, 0x52, 0x76,
0x59, 0x87, 0xea, 0x39, 0xc3, 0x2c, 0xfe, 0xb8, 0xf2, 0x43, 0x82, 0x35, 0x11, 0x10, 0x6a, 0x7f, 0xd9, 0x9f, 0x02, 0x4a, 0x9e, 0x0f, 0xdb, 0x0c, 0xed, 0x41, 0x91, 0xf1, 0x48, 0x5d, 0xe2, 0x57,
0xbc, 0x2d, 0x9e, 0x02, 0x0a, 0xf9, 0x97, 0xd8, 0xb4, 0x88, 0x71, 0xab, 0x3b, 0x6a, 0x34, 0xb0, 0x41, 0x77, 0xaf, 0xa2, 0x0a, 0x86, 0xb2, 0x01, 0x95, 0x73, 0x86, 0x59, 0xf4, 0x71, 0xe5, 0xab,
0x8f, 0x39, 0x10, 0xb3, 0x7b, 0xb0, 0x95, 0x36, 0x5f, 0xc3, 0xfa, 0x75, 0x60, 0x7a, 0xc4, 0x10, 0x04, 0xeb, 0x22, 0x20, 0xd4, 0x7e, 0x79, 0x27, 0x3d, 0x00, 0x14, 0xf0, 0x2f, 0xb1, 0x39, 0x25,
0x55, 0xa8, 0xa7, 0xaa, 0xd0, 0x17, 0x10, 0x7a, 0x0e, 0xdb, 0x99, 0x33, 0x64, 0x36, 0xc1, 0x81, 0xc6, 0xad, 0x86, 0xaa, 0x52, 0xdf, 0x3a, 0xe6, 0x40, 0xc4, 0xee, 0xc2, 0x76, 0xd2, 0x7c, 0x0d,
0xcf, 0x88, 0xd1, 0x28, 0xf2, 0x43, 0xff, 0xa6, 0x0e, 0x1d, 0xc5, 0x98, 0x72, 0x0a, 0x6b, 0x43, 0xeb, 0xd7, 0xbe, 0xe9, 0x12, 0x43, 0x54, 0xa1, 0x96, 0xa8, 0x42, 0x4f, 0x40, 0xe8, 0x31, 0xec,
0xc7, 0x32, 0xf5, 0x79, 0x5c, 0x88, 0x7d, 0xa8, 0xb8, 0x3c, 0xa0, 0xb1, 0xb9, 0x4b, 0xf8, 0xcd, 0xa4, 0xce, 0x90, 0xf9, 0x04, 0xfb, 0x1e, 0x23, 0x86, 0x68, 0xae, 0x3f, 0x13, 0x87, 0x8e, 0x22,
0xd7, 0x7b, 0xff, 0x65, 0xcc, 0x8c, 0x0e, 0x5c, 0xcc, 0x5d, 0xa2, 0x82, 0x9b, 0x3c, 0x2b, 0x5f, 0x4c, 0x39, 0x85, 0xf5, 0xa1, 0x3d, 0x35, 0xf5, 0x45, 0x54, 0x88, 0x03, 0x28, 0x3b, 0x3c, 0xa0,
0x60, 0x3d, 0x96, 0x5a, 0xb8, 0x18, 0xce, 0x42, 0xe0, 0x86, 0x1d, 0x95, 0xb8, 0x68, 0xe3, 0xd9, 0xb1, 0x85, 0x43, 0x78, 0xe6, 0x1b, 0xdd, 0xbf, 0x52, 0x66, 0x86, 0x07, 0x2e, 0x16, 0x0e, 0x51,
0xfb, 0x28, 0xb2, 0x64, 0x16, 0x56, 0x72, 0x67, 0x61, 0xf7, 0x11, 0xc0, 0xe2, 0xcb, 0x08, 0xa0, 0xc1, 0x89, 0x9f, 0x95, 0x8f, 0x12, 0x6c, 0x44, 0x5a, 0x4b, 0x1b, 0x83, 0xf9, 0xf1, 0x9d, 0xa0,
0x74, 0x76, 0x74, 0xd2, 0x1f, 0x7c, 0xaa, 0xfd, 0x15, 0x3e, 0xf7, 0xdf, 0x0e, 0x5e, 0xbf, 0x53, 0xa5, 0x62, 0x1b, 0x2d, 0x3c, 0x7f, 0x1d, 0x46, 0x56, 0xcc, 0x4f, 0xee, 0x87, 0xe7, 0x27, 0x9f,
0x6b, 0x52, 0xef, 0x5b, 0x01, 0x6a, 0x1f, 0x30, 0xd3, 0x27, 0xbc, 0xd6, 0x03, 0x9e, 0x34, 0x3a, 0x3d, 0x3f, 0x7b, 0xf7, 0x00, 0x96, 0xb7, 0x45, 0x00, 0xc5, 0xb3, 0xa3, 0x93, 0xde, 0xe0, 0x7d,
0x81, 0x72, 0xbc, 0xc3, 0xd0, 0x4e, 0xe6, 0x2e, 0xb7, 0xf6, 0xa3, 0x7c, 0x7f, 0x09, 0x2a, 0x6e, 0xf5, 0xb7, 0xe0, 0xb9, 0xf7, 0x72, 0xf0, 0xfc, 0x95, 0x5a, 0x95, 0xba, 0x9f, 0xf2, 0x50, 0x7d,
0x34, 0x84, 0x4a, 0x6a, 0x61, 0xa1, 0x66, 0x86, 0x7d, 0x77, 0x25, 0xca, 0xad, 0xe5, 0x04, 0xa1, 0x8b, 0x99, 0x3e, 0xe1, 0xfd, 0x31, 0xe0, 0x89, 0xa2, 0x13, 0x28, 0x45, 0xab, 0x12, 0xed, 0xa6,
0xf8, 0x06, 0x60, 0xd1, 0xcd, 0xe8, 0x41, 0x86, 0x7f, 0x67, 0x4c, 0xe4, 0xe6, 0x52, 0x5c, 0xc8, 0xf2, 0xbf, 0xb5, 0x86, 0xe5, 0x7f, 0x57, 0xa0, 0xc2, 0x84, 0x21, 0x94, 0x13, 0x7b, 0x11, 0x35,
0xbd, 0x82, 0x6a, 0x7a, 0x75, 0xa2, 0x6c, 0x02, 0x39, 0x5b, 0x55, 0xce, 0x19, 0x14, 0x74, 0x00, 0x52, 0xec, 0xbb, 0x9b, 0x57, 0x6e, 0xae, 0x26, 0x08, 0xc5, 0x17, 0x00, 0xcb, 0x09, 0x40, 0xff,
0x45, 0x3e, 0x0f, 0x28, 0x3b, 0xd0, 0xe9, 0xa1, 0x91, 0xe5, 0x3c, 0x48, 0x64, 0xd1, 0x87, 0x52, 0xa5, 0xf8, 0x77, 0x46, 0x4b, 0x6e, 0xac, 0xc4, 0x85, 0xdc, 0x33, 0xa8, 0x24, 0x37, 0x34, 0x4a,
0x54, 0x2a, 0x24, 0xe7, 0x74, 0x4e, 0xac, 0x70, 0x2f, 0x17, 0x8b, 0x24, 0x0e, 0xf7, 0x3e, 0x3f, 0x5f, 0x20, 0x63, 0x79, 0xcb, 0x19, 0xc3, 0x85, 0x0e, 0xa1, 0xc0, 0x67, 0x08, 0xa5, 0x97, 0x40,
0x1b, 0x9b, 0x6c, 0x12, 0x8c, 0x3a, 0xba, 0x63, 0x77, 0x2d, 0x73, 0x3c, 0x61, 0xd4, 0xa4, 0x63, 0x72, 0xd0, 0x64, 0x39, 0x0b, 0x12, 0xb7, 0xe8, 0x41, 0x31, 0x2c, 0x15, 0x92, 0x33, 0xba, 0x2d,
0x4a, 0xd8, 0xd4, 0xf1, 0xae, 0xba, 0x16, 0x35, 0xba, 0x16, 0x4d, 0xff, 0x00, 0x3d, 0x57, 0x1f, 0x52, 0xf8, 0x27, 0x13, 0x0b, 0x25, 0xfa, 0xfb, 0x1f, 0x1e, 0x8d, 0x4d, 0x36, 0xf1, 0x47, 0x6d,
0x95, 0xf8, 0x4f, 0x70, 0xef, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x99, 0x5f, 0xe1, 0x8e, 0x22, 0xdd, 0xb6, 0x3a, 0x53, 0x73, 0x3c, 0x61, 0xd4, 0xa4, 0x63, 0x4a, 0xd8, 0xcc, 0x76, 0xaf, 0x3a,
0x07, 0x00, 0x00, 0x53, 0x6a, 0x74, 0xa6, 0x34, 0xf9, 0x9f, 0x75, 0x1d, 0x7d, 0x54, 0xe4, 0xff, 0xda, 0xfd, 0x6f,
0x01, 0x00, 0x00, 0xff, 0xff, 0x49, 0xcd, 0xe9, 0xf8, 0x89, 0x07, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

View File

@ -87,10 +87,17 @@ message TowerSession {
uint32 max_backups = 3; uint32 max_backups = 3;
/* /*
Deprecated, use sweep_sat_per_vbyte.
The fee rate, in satoshis per vbyte, that will be used by the watchtower for The fee rate, in satoshis per vbyte, that will be used by the watchtower for
the justice transaction in the event of a channel breach. the justice transaction in the event of a channel breach.
*/ */
uint32 sweep_sat_per_byte = 4; uint32 sweep_sat_per_byte = 4 [deprecated = true];
/*
The fee rate, in satoshis per vbyte, that will be used by the watchtower for
the justice transaction in the event of a channel breach.
*/
uint32 sweep_sat_per_vbyte = 5;
} }
message Tower { message Tower {
@ -172,8 +179,15 @@ message PolicyResponse {
uint32 max_updates = 1; uint32 max_updates = 1;
/* /*
Deprecated, use sweep_sat_per_vbyte.
The fee rate, in satoshis per vbyte, that will be used by watchtowers for The fee rate, in satoshis per vbyte, that will be used by watchtowers for
justice transactions in response to channel breaches. justice transactions in response to channel breaches.
*/ */
uint32 sweep_sat_per_byte = 2; uint32 sweep_sat_per_byte = 2 [deprecated = true];
/*
The fee rate, in satoshis per vbyte, that will be used by watchtowers for
justice transactions in response to channel breaches.
*/
uint32 sweep_sat_per_vbyte = 3;
} }

View File

@ -289,6 +289,11 @@
"description": "The maximum number of updates each session we negotiate with watchtowers\nshould allow." "description": "The maximum number of updates each session we negotiate with watchtowers\nshould allow."
}, },
"sweep_sat_per_byte": { "sweep_sat_per_byte": {
"type": "integer",
"format": "int64",
"description": "Deprecated, use sweep_sat_per_vbyte.\nThe fee rate, in satoshis per vbyte, that will be used by watchtowers for\njustice transactions in response to channel breaches."
},
"sweep_sat_per_vbyte": {
"type": "integer", "type": "integer",
"format": "int64", "format": "int64",
"description": "The fee rate, in satoshis per vbyte, that will be used by watchtowers for\njustice transactions in response to channel breaches." "description": "The fee rate, in satoshis per vbyte, that will be used by watchtowers for\njustice transactions in response to channel breaches."
@ -390,6 +395,11 @@
"description": "The maximum number of backups allowed by the watchtower session." "description": "The maximum number of backups allowed by the watchtower session."
}, },
"sweep_sat_per_byte": { "sweep_sat_per_byte": {
"type": "integer",
"format": "int64",
"description": "Deprecated, use sweep_sat_per_vbyte.\nThe fee rate, in satoshis per vbyte, that will be used by the watchtower for\nthe justice transaction in the event of a channel breach."
},
"sweep_sat_per_vbyte": {
"type": "integer", "type": "integer",
"format": "int64", "format": "int64",
"description": "The fee rate, in satoshis per vbyte, that will be used by the watchtower for\nthe justice transaction in the event of a channel breach." "description": "The fee rate, in satoshis per vbyte, that will be used by the watchtower for\nthe justice transaction in the event of a channel breach."

View File

@ -97,8 +97,10 @@ func testCPFP(net *lntest.NetworkHarness, t *harnessTest) {
// We'll attempt to bump the fee of this transaction by performing a // We'll attempt to bump the fee of this transaction by performing a
// CPFP from Alice's point of view. // CPFP from Alice's point of view.
bumpFeeReq := &walletrpc.BumpFeeRequest{ bumpFeeReq := &walletrpc.BumpFeeRequest{
Outpoint: op, Outpoint: op,
SatPerByte: uint32(sweep.DefaultMaxFeeRate.FeePerKVByte() / 2000), SatPerVbyte: uint64(
sweep.DefaultMaxFeeRate.FeePerKVByte() / 2000,
),
} }
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
_, err = net.Bob.WalletKitClient.BumpFee(ctxt, bumpFeeReq) _, err = net.Bob.WalletKitClient.BumpFee(ctxt, bumpFeeReq)
@ -136,9 +138,9 @@ func testCPFP(net *lntest.NetworkHarness, t *harnessTest) {
t.Fatalf("expected output index %v, got %v", op.OutputIndex, t.Fatalf("expected output index %v, got %v", op.OutputIndex,
pendingSweep.Outpoint.OutputIndex) pendingSweep.Outpoint.OutputIndex)
} }
if pendingSweep.SatPerByte != bumpFeeReq.SatPerByte { if pendingSweep.SatPerVbyte != bumpFeeReq.SatPerVbyte {
t.Fatalf("expected sweep sat per byte %v, got %v", t.Fatalf("expected sweep sat per vbyte %v, got %v",
bumpFeeReq.SatPerByte, pendingSweep.SatPerByte) bumpFeeReq.SatPerVbyte, pendingSweep.SatPerVbyte)
} }
// Mine a block to clean up the unconfirmed transactions. // Mine a block to clean up the unconfirmed transactions.

View File

@ -217,6 +217,45 @@ func stringInSlice(a string, slice []string) bool {
return false return false
} }
// calculateFeeRate uses either satPerByte or satPerVByte, but not both, from a
// request to calculate the fee rate. It provides compatibility for the
// deprecated field, satPerByte. Once the field is safe to be removed, the
// check can then be deleted.
func calculateFeeRate(satPerByte, satPerVByte uint64, targetConf uint32,
estimator chainfee.Estimator) (chainfee.SatPerKWeight, error) {
var feeRate chainfee.SatPerKWeight
// We only allow using either the deprecated field or the new field.
if satPerByte != 0 && satPerVByte != 0 {
return feeRate, fmt.Errorf("either SatPerByte or " +
"SatPerVByte should be set, but not both")
}
// Default to satPerVByte, and overwrite it if satPerByte is set.
satPerKw := chainfee.SatPerKVByte(satPerVByte * 1000).FeePerKWeight()
if satPerByte != 0 {
satPerKw = chainfee.SatPerKVByte(
satPerByte * 1000,
).FeePerKWeight()
}
// Based on the passed fee related parameters, we'll determine an
// appropriate fee rate for this transaction.
feeRate, err := sweep.DetermineFeePerKw(
estimator, sweep.FeePreference{
ConfTarget: targetConf,
FeeRate: satPerKw,
},
)
if err != nil {
return feeRate, err
}
return feeRate, nil
}
// MainRPCServerPermissions returns a mapping of the main RPC server calls to // MainRPCServerPermissions returns a mapping of the main RPC server calls to
// the permissions they require. // the permissions they require.
func MainRPCServerPermissions() map[string][]bakery.Op { func MainRPCServerPermissions() map[string][]bakery.Op {
@ -1053,7 +1092,10 @@ func (r *rpcServer) EstimateFee(ctx context.Context,
totalFee := int64(tx.TotalInput) - totalOutput totalFee := int64(tx.TotalInput) - totalOutput
resp := &lnrpc.EstimateFeeResponse{ resp := &lnrpc.EstimateFeeResponse{
FeeSat: totalFee, FeeSat: totalFee,
SatPerVbyte: uint64(feePerKw.FeePerKVByte() / 1000),
// Deprecated field.
FeerateSatPerByte: int64(feePerKw.FeePerKVByte() / 1000), FeerateSatPerByte: int64(feePerKw.FeePerKVByte() / 1000),
} }
@ -1068,14 +1110,10 @@ func (r *rpcServer) EstimateFee(ctx context.Context,
func (r *rpcServer) SendCoins(ctx context.Context, func (r *rpcServer) SendCoins(ctx context.Context,
in *lnrpc.SendCoinsRequest) (*lnrpc.SendCoinsResponse, error) { in *lnrpc.SendCoinsRequest) (*lnrpc.SendCoinsResponse, error) {
// Based on the passed fee related parameters, we'll determine an // Calculate an appropriate fee rate for this transaction.
// appropriate fee rate for this transaction. feePerKw, err := calculateFeeRate(
satPerKw := chainfee.SatPerKVByte(in.SatPerByte * 1000).FeePerKWeight() uint64(in.SatPerByte), in.SatPerVbyte,
feePerKw, err := sweep.DetermineFeePerKw( uint32(in.TargetConf), r.server.cc.FeeEstimator,
r.server.cc.FeeEstimator, sweep.FeePreference{
ConfTarget: uint32(in.TargetConf),
FeeRate: satPerKw,
},
) )
if err != nil { if err != nil {
return nil, err return nil, err
@ -1279,14 +1317,10 @@ func (r *rpcServer) SendCoins(ctx context.Context,
func (r *rpcServer) SendMany(ctx context.Context, func (r *rpcServer) SendMany(ctx context.Context,
in *lnrpc.SendManyRequest) (*lnrpc.SendManyResponse, error) { in *lnrpc.SendManyRequest) (*lnrpc.SendManyResponse, error) {
// Based on the passed fee related parameters, we'll determine an // Calculate an appropriate fee rate for this transaction.
// appropriate fee rate for this transaction. feePerKw, err := calculateFeeRate(
satPerKw := chainfee.SatPerKVByte(in.SatPerByte * 1000).FeePerKWeight() uint64(in.SatPerByte), in.SatPerVbyte,
feePerKw, err := sweep.DetermineFeePerKw( uint32(in.TargetConf), r.server.cc.FeeEstimator,
r.server.cc.FeeEstimator, sweep.FeePreference{
ConfTarget: uint32(in.TargetConf),
FeeRate: satPerKw,
},
) )
if err != nil { if err != nil {
return nil, err return nil, err
@ -1679,7 +1713,7 @@ func newPsbtAssembler(req *lnrpc.OpenChannelRequest, normalizedMinConfs int32,
"minimum confirmation is not supported for PSBT " + "minimum confirmation is not supported for PSBT " +
"funding") "funding")
} }
if req.SatPerByte != 0 || req.TargetConf != 0 { if req.SatPerByte != 0 || req.SatPerVbyte != 0 || req.TargetConf != 0 {
return nil, fmt.Errorf("specifying fee estimation parameters " + return nil, fmt.Errorf("specifying fee estimation parameters " +
"is not supported for PSBT funding") "is not supported for PSBT funding")
} }
@ -1830,14 +1864,10 @@ func (r *rpcServer) parseOpenChannelReq(in *lnrpc.OpenChannelRequest,
return nil, fmt.Errorf("cannot open channel to self") return nil, fmt.Errorf("cannot open channel to self")
} }
// Based on the passed fee related parameters, we'll determine an // Calculate an appropriate fee rate for this transaction.
// appropriate fee rate for the funding transaction. feeRate, err := calculateFeeRate(
satPerKw := chainfee.SatPerKVByte(in.SatPerByte * 1000).FeePerKWeight() uint64(in.SatPerByte), in.SatPerVbyte,
feeRate, err := sweep.DetermineFeePerKw( uint32(in.TargetConf), r.server.cc.FeeEstimator,
r.server.cc.FeeEstimator, sweep.FeePreference{
ConfTarget: uint32(in.TargetConf),
FeeRate: satPerKw,
},
) )
if err != nil { if err != nil {
return nil, err return nil, err
@ -2039,7 +2069,9 @@ func (r *rpcServer) CloseChannel(in *lnrpc.CloseChannelRequest,
// If force closing a channel, the fee set in the commitment transaction // If force closing a channel, the fee set in the commitment transaction
// is used. // is used.
if in.Force && (in.SatPerByte != 0 || in.TargetConf != 0) { if in.Force && (in.SatPerByte != 0 || in.SatPerVbyte != 0 ||
in.TargetConf != 0) {
return fmt.Errorf("force closing a channel uses a pre-defined fee") return fmt.Errorf("force closing a channel uses a pre-defined fee")
} }
@ -2171,14 +2203,9 @@ func (r *rpcServer) CloseChannel(in *lnrpc.CloseChannelRequest,
// Based on the passed fee related parameters, we'll determine // Based on the passed fee related parameters, we'll determine
// an appropriate fee rate for the cooperative closure // an appropriate fee rate for the cooperative closure
// transaction. // transaction.
satPerKw := chainfee.SatPerKVByte( feeRate, err := calculateFeeRate(
in.SatPerByte * 1000, uint64(in.SatPerByte), in.SatPerVbyte,
).FeePerKWeight() uint32(in.TargetConf), r.server.cc.FeeEstimator,
feeRate, err := sweep.DetermineFeePerKw(
r.server.cc.FeeEstimator, sweep.FeePreference{
ConfTarget: uint32(in.TargetConf),
FeeRate: satPerKw,
},
) )
if err != nil { if err != nil {
return err return err

View File

@ -1245,12 +1245,12 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
policy := wtpolicy.DefaultPolicy() policy := wtpolicy.DefaultPolicy()
if cfg.WtClient.SweepFeeRate != 0 { if cfg.WtClient.SweepFeeRate != 0 {
// We expose the sweep fee rate in sat/byte, but the // We expose the sweep fee rate in sat/vbyte, but the
// tower protocol operations on sat/kw. // tower protocol operations on sat/kw.
sweepRateSatPerByte := chainfee.SatPerKVByte( sweepRateSatPerVByte := chainfee.SatPerKVByte(
1000 * cfg.WtClient.SweepFeeRate, 1000 * cfg.WtClient.SweepFeeRate,
) )
policy.SweepFeeRate = sweepRateSatPerByte.FeePerKWeight() policy.SweepFeeRate = sweepRateSatPerVByte.FeePerKWeight()
} }
if err := policy.Validate(); err != nil { if err := policy.Validate(); err != nil {