Merge pull request #1763 from valentinewallace/listinvoices-pagination

channeldb+rpc: add pagination of listinvoices
This commit is contained in:
Olaoluwa Osuntokun 2018-08-21 20:14:18 -07:00 committed by GitHub
commit 9f4685228e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 767 additions and 418 deletions

@ -375,3 +375,128 @@ func TestDuplicateSettleInvoice(t *testing.T) {
spew.Sdump(invoice), spew.Sdump(dbInvoice))
}
}
// TestQueryInvoices ensures that we can properly query the invoice database for
// invoices between specific time intervals.
func TestQueryInvoices(t *testing.T) {
t.Parallel()
db, cleanUp, err := makeTestDB()
defer cleanUp()
if err != nil {
t.Fatalf("unable to make test db: %v", err)
}
// To begin the test, we'll add 100 invoices to the database. We'll
// assume that the index of the invoice within the database is the same
// as the amount of the invoice itself.
const numInvoices = 100
for i := lnwire.MilliSatoshi(0); i < numInvoices; i++ {
invoice, err := randInvoice(i)
if err != nil {
t.Fatalf("unable to create invoice: %v", err)
}
if _, err := db.AddInvoice(invoice); err != nil {
t.Fatalf("unable to add invoice: %v", err)
}
// We'll only settle half of all invoices created.
if i%2 == 0 {
paymentHash := sha256.Sum256(invoice.Terms.PaymentPreimage[:])
if _, err := db.SettleInvoice(paymentHash, i); err != nil {
t.Fatalf("unable to settle invoice: %v", err)
}
}
}
// With the invoices created, we can begin querying the database. We'll
// start with a simple query to retrieve all invoices.
query := InvoiceQuery{
NumMaxInvoices: numInvoices,
}
res, err := db.QueryInvoices(query)
if err != nil {
t.Fatalf("unable to query invoices: %v", err)
}
if len(res.Invoices) != numInvoices {
t.Fatalf("expected %d invoices, got %d", numInvoices,
len(res.Invoices))
}
// Now, we'll limit the query to only return the latest 30 invoices.
query.IndexOffset = 70
res, err = db.QueryInvoices(query)
if err != nil {
t.Fatalf("unable to query invoices: %v", err)
}
if uint32(len(res.Invoices)) != numInvoices-query.IndexOffset {
t.Fatalf("expected %d invoices, got %d",
numInvoices-query.IndexOffset, len(res.Invoices))
}
for _, invoice := range res.Invoices {
if uint32(invoice.Terms.Value) < query.IndexOffset {
t.Fatalf("found invoice with index %v before offset %v",
invoice.Terms.Value, query.IndexOffset)
}
}
// Limit the query from above to return 25 invoices max.
query.NumMaxInvoices = 25
res, err = db.QueryInvoices(query)
if err != nil {
t.Fatalf("unable to query invoices: %v", err)
}
if uint32(len(res.Invoices)) != query.NumMaxInvoices {
t.Fatalf("expected %d invoices, got %d", query.NumMaxInvoices,
len(res.Invoices))
}
// Reset the query to fetch all unsettled invoices within the time
// slice.
query = InvoiceQuery{
PendingOnly: true,
NumMaxInvoices: numInvoices,
}
res, err = db.QueryInvoices(query)
if err != nil {
t.Fatalf("unable to query invoices: %v", err)
}
// Since only invoices with even amounts were settled, we should see
// that there are 50 invoices within the response.
if len(res.Invoices) != numInvoices/2 {
t.Fatalf("expected %d pending invoices, got %d", numInvoices/2,
len(res.Invoices))
}
for _, invoice := range res.Invoices {
if invoice.Terms.Value%2 == 0 {
t.Fatal("retrieved unexpected settled invoice")
}
}
// Finally, we'll skip the first 10 invoices from the set of unsettled
// invoices.
query.IndexOffset = 10
res, err = db.QueryInvoices(query)
if err != nil {
t.Fatalf("unable to query invoices: %v", err)
}
if uint32(len(res.Invoices)) != (numInvoices/2)-query.IndexOffset {
t.Fatalf("expected %d invoices, got %d",
(numInvoices/2)-query.IndexOffset, len(res.Invoices))
}
// To ensure the correct invoices were returned, we'll make sure each
// invoice has an odd value (meaning unsettled). Since the 10 invoices
// skipped should be unsettled, the value of the invoice must be at
// least the index of the 11th unsettled invoice.
for _, invoice := range res.Invoices {
if uint32(invoice.Terms.Value) < query.IndexOffset*2 {
t.Fatalf("found invoice with index %v before offset %v",
invoice.Terms.Value, query.IndexOffset*2)
}
if invoice.Terms.Value%2 == 0 {
t.Fatalf("found unexpected settled invoice with index %v",
invoice.Terms.Value)
}
}
}

@ -27,7 +27,7 @@ var (
// for looking up incoming HTLCs to determine if we're able to settle
// them fully.
//
// maps: payHash => invoiceIndex
// maps: payHash => invoiceKey
invoiceIndexBucket = []byte("paymenthashes")
// numInvoicesKey is the name of key which houses the auto-incrementing
@ -44,7 +44,7 @@ var (
//
// In addition to this sequence number, we map:
//
// addIndexNo => invoiceIndex
// addIndexNo => invoiceKey
addIndexBucket = []byte("invoice-add-index")
// settleIndexBucket is an index bucket that we'll use to create a
@ -54,7 +54,7 @@ var (
//
// In addition to this sequence number, we map:
//
// settleIndexNo => invoiceIndex
// settleIndexNo => invoiceKey
settleIndexBucket = []byte("invoice-settle-index")
)
@ -396,6 +396,132 @@ func (d *DB) FetchAllInvoices(pendingOnly bool) ([]Invoice, error) {
return invoices, nil
}
// InvoiceQuery represents a query to the invoice database. The query allows a
// caller to retrieve all invoices starting from a particular add index and
// limit the number of results returned.
type InvoiceQuery struct {
// IndexOffset is the offset within the add indices to start at. This
// can be used to start the response at a particular invoice.
IndexOffset uint32
// NumMaxInvoices is the maximum number of invoices that should be
// starting from the add index.
NumMaxInvoices uint32
// PendingOnly, if set, returns unsettled invoices starting from the
// add index.
PendingOnly bool
}
// InvoiceSlice is the response to a invoice query. It includes the original
// query, the set of invoices that match the query, and an integer which
// represents the offset index of the last item in the set of returned invoices.
// This integer allows callers to resume their query using this offset in the
// event that the query's response exceeds the maximum number of returnable
// invoices.
type InvoiceSlice struct {
InvoiceQuery
// Invoices is the set of invoices that matched the query above.
Invoices []*Invoice
// LastIndexOffset is the index of the last element in the set of
// returned Invoices above. Callers can use this to resume their query
// in the event that the time slice has too many events to fit into a
// single response.
LastIndexOffset uint32
}
// QueryInvoices allows a caller to query the invoice database for invoices
// within the specified add index range.
func (d *DB) QueryInvoices(q InvoiceQuery) (InvoiceSlice, error) {
resp := InvoiceSlice{
InvoiceQuery: q,
}
// If the caller provided an index offset, then we'll not know how many
// records we need to skip. We'll also keep track of the record offset
// as that's part of the final return value.
invoicesToSkip := q.IndexOffset
invoiceOffset := q.IndexOffset
err := d.View(func(tx *bolt.Tx) error {
// If the bucket wasn't found, then there aren't any invoices
// within the database yet, so we can simply exit.
invoices := tx.Bucket(invoiceBucket)
if invoices == nil {
return ErrNoInvoicesCreated
}
invoiceAddedIndex := invoices.Bucket(addIndexBucket)
if invoiceAddedIndex == nil {
return ErrNoInvoicesCreated
}
// We'll be using a cursor to seek into the database, so we'll
// populate byte slices that represent the start of the key
// space we're interested in.
var startIndex [8]byte
switch q.PendingOnly {
case true:
// We have to start from the beginning so we know
// how many pending invoices we're skipping.
byteOrder.PutUint64(startIndex[:], uint64(1))
default:
// We can seek right to the invoice offset we want
// to start with.
invoicesToSkip = 0
byteOrder.PutUint64(startIndex[:], uint64(invoiceOffset+1))
}
// If we know that a set of invoices exists, then we'll begin
// our seek through the bucket in order to satisfy the query.
// We'll continue until either we reach the end of the range,
// or reach our max number of events.
cursor := invoiceAddedIndex.Cursor()
_, invoiceKey := cursor.Seek(startIndex[:])
for ; invoiceKey != nil; _, invoiceKey = cursor.Next() {
// If our current return payload exceeds the max number
// of invoices, then we'll exit now.
if uint32(len(resp.Invoices)) >= q.NumMaxInvoices {
return nil
}
invoice, err := fetchInvoice(invoiceKey, invoices)
if err != nil {
return err
}
// Skip any settled invoices if the caller is only
// interested in unsettled.
if q.PendingOnly && invoice.Terms.Settled {
continue
}
// If we're not yet past the user defined offset, then
// we'll continue to seek forward.
if invoicesToSkip > 0 {
invoicesToSkip--
continue
}
// At this point, we've exhausted the offset, so we'll
// begin collecting invoices found within the range.
resp.Invoices = append(resp.Invoices, &invoice)
invoiceOffset++
}
return nil
})
if err != nil && err != ErrNoInvoicesCreated {
return resp, err
}
// Finally, record the index of the last invoice added so that the
// caller can resume from this point later on.
resp.LastIndexOffset = invoiceOffset
return resp, nil
}
// SettleInvoice attempts to mark an invoice corresponding to the passed
// payment hash as fully settled. If an invoice matching the passed payment
// hash doesn't existing within the database, then the action will fail with a

@ -2312,8 +2312,16 @@ var listInvoicesCommand = cli.Command{
Flags: []cli.Flag{
cli.BoolFlag{
Name: "pending_only",
Usage: "toggles if all invoices should be returned, or only " +
"those that are currently unsettled",
Usage: "toggles if all invoices should be returned, " +
"or only those that are currently unsettled",
},
cli.Uint64Flag{
Name: "index_offset",
Usage: "the number of invoices to skip",
},
cli.Uint64Flag{
Name: "max_invoices",
Usage: "the max number of invoices to return",
},
},
Action: actionDecorator(listInvoices),
@ -2323,13 +2331,10 @@ func listInvoices(ctx *cli.Context) error {
client, cleanUp := getClient(ctx)
defer cleanUp()
pendingOnly := true
if !ctx.Bool("pending_only") {
pendingOnly = false
}
req := &lnrpc.ListInvoiceRequest{
PendingOnly: pendingOnly,
PendingOnly: ctx.Bool("pending_only"),
IndexOffset: uint32(ctx.Uint64("index_offset")),
NumMaxInvoices: uint32(ctx.Uint64("max_invoices")),
}
invoices, err := client.ListInvoices(context.Background(), req)

@ -4074,8 +4074,15 @@ func (m *PaymentHash) GetRHash() []byte {
}
type ListInvoiceRequest struct {
// / Toggles if all invoices should be returned, or only those that are currently unsettled.
PendingOnly bool `protobuf:"varint,1,opt,name=pending_only,json=pendingOnly" json:"pending_only,omitempty"`
// / If set, only unsettled invoices will be returned in the response.
PendingOnly bool `protobuf:"varint,1,opt,name=pending_only" json:"pending_only,omitempty"`
// *
// The offset in the time series to start at. As each response can only contain
// 50k invoices, callers can use this to skip around within a packed time
// series.
IndexOffset uint32 `protobuf:"varint,4,opt,name=index_offset" json:"index_offset,omitempty"`
// / The max number of invoices to return in the response to this query.
NumMaxInvoices uint32 `protobuf:"varint,5,opt,name=num_max_invoices" json:"num_max_invoices,omitempty"`
}
func (m *ListInvoiceRequest) Reset() { *m = ListInvoiceRequest{} }
@ -4090,8 +4097,29 @@ func (m *ListInvoiceRequest) GetPendingOnly() bool {
return false
}
func (m *ListInvoiceRequest) GetIndexOffset() uint32 {
if m != nil {
return m.IndexOffset
}
return 0
}
func (m *ListInvoiceRequest) GetNumMaxInvoices() uint32 {
if m != nil {
return m.NumMaxInvoices
}
return 0
}
type ListInvoiceResponse struct {
// *
// A list of invoices from the time slice of the time series specified in the
// request.
Invoices []*Invoice `protobuf:"bytes,1,rep,name=invoices" json:"invoices,omitempty"`
// *
// The index of the last time in the set of returned invoices. Can be used to
// seek further, pagination style.
LastIndexOffset uint32 `protobuf:"varint,2,opt,name=last_index_offset" json:"last_index_offset,omitempty"`
}
func (m *ListInvoiceResponse) Reset() { *m = ListInvoiceResponse{} }
@ -4106,6 +4134,13 @@ func (m *ListInvoiceResponse) GetInvoices() []*Invoice {
return nil
}
func (m *ListInvoiceResponse) GetLastIndexOffset() uint32 {
if m != nil {
return m.LastIndexOffset
}
return 0
}
type InvoiceSubscription struct {
// *
// If specified (non-zero), then we'll first start by sending out
@ -7102,395 +7137,397 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("rpc.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 6239 bytes of a gzipped FileDescriptorProto
// 6271 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0xdd, 0x8f, 0x1c, 0xd9,
0x55, 0x77, 0x75, 0xf7, 0x7c, 0xf4, 0xe9, 0x9e, 0x99, 0x9e, 0x3b, 0xe3, 0x71, 0xbb, 0x77, 0xd7,
0xeb, 0xad, 0x58, 0x6b, 0x67, 0x58, 0x6c, 0xef, 0x24, 0x59, 0x36, 0xbb, 0x90, 0x60, 0xcf, 0x8c,
0x3d, 0x4e, 0x66, 0xed, 0x49, 0x8d, 0x1d, 0x43, 0x02, 0xea, 0xd4, 0x74, 0xdf, 0xe9, 0xa9, 0xb8,
0xbb, 0xaa, 0x53, 0x55, 0x3d, 0xe3, 0xce, 0x62, 0x29, 0x10, 0xc4, 0x13, 0x11, 0x42, 0xf0, 0x12,
0x24, 0x84, 0x14, 0x24, 0x14, 0xfe, 0x00, 0x78, 0x09, 0x48, 0x3c, 0xf0, 0x12, 0x24, 0xc4, 0x43,
0x9e, 0x22, 0x1e, 0xe1, 0x05, 0x10, 0x2f, 0x48, 0xbc, 0x22, 0x74, 0xce, 0xfd, 0xa8, 0x7b, 0xab,
0xaa, 0x3d, 0xce, 0x07, 0xbc, 0xf5, 0xfd, 0xdd, 0x53, 0xf7, 0xf3, 0x7c, 0xdd, 0x73, 0xcf, 0x6d,
0xa8, 0xc7, 0xe3, 0xde, 0xcd, 0x71, 0x1c, 0xa5, 0x11, 0x9b, 0x1b, 0x86, 0xf1, 0xb8, 0xd7, 0x79,
0x7d, 0x10, 0x45, 0x83, 0x21, 0xbf, 0xe5, 0x8f, 0x83, 0x5b, 0x7e, 0x18, 0x46, 0xa9, 0x9f, 0x06,
0x51, 0x98, 0x08, 0x22, 0xf7, 0x6b, 0xb0, 0x7c, 0x9f, 0x87, 0x87, 0x9c, 0xf7, 0x3d, 0xfe, 0x8d,
0x09, 0x4f, 0x52, 0xf6, 0x0b, 0xb0, 0xea, 0xf3, 0x6f, 0x72, 0xde, 0xef, 0x8e, 0xfd, 0x24, 0x19,
0x9f, 0xc4, 0x7e, 0xc2, 0xdb, 0xce, 0x55, 0xe7, 0x46, 0xd3, 0x6b, 0x89, 0x8a, 0x03, 0x8d, 0xb3,
0xb7, 0xa0, 0x99, 0x20, 0x29, 0x0f, 0xd3, 0x38, 0x1a, 0x4f, 0xdb, 0x15, 0xa2, 0x6b, 0x20, 0xb6,
0x2b, 0x20, 0x77, 0x08, 0x2b, 0xba, 0x87, 0x64, 0x1c, 0x85, 0x09, 0x67, 0xb7, 0x61, 0xbd, 0x17,
0x8c, 0x4f, 0x78, 0xdc, 0xa5, 0x8f, 0x47, 0x21, 0x1f, 0x45, 0x61, 0xd0, 0x6b, 0x3b, 0x57, 0xab,
0x37, 0xea, 0x1e, 0x13, 0x75, 0xf8, 0xc5, 0x47, 0xb2, 0x86, 0x5d, 0x87, 0x15, 0x1e, 0x0a, 0x9c,
0xf7, 0xe9, 0x2b, 0xd9, 0xd5, 0x72, 0x06, 0xe3, 0x07, 0xee, 0xdf, 0x3b, 0xb0, 0xfa, 0x20, 0x0c,
0xd2, 0xa7, 0xfe, 0x70, 0xc8, 0x53, 0x35, 0xa7, 0xeb, 0xb0, 0x72, 0x46, 0x00, 0xcd, 0xe9, 0x2c,
0x8a, 0xfb, 0x72, 0x46, 0xcb, 0x02, 0x3e, 0x90, 0xe8, 0xcc, 0x91, 0x55, 0x66, 0x8e, 0xac, 0x74,
0xb9, 0xaa, 0x33, 0x96, 0xeb, 0x3a, 0xac, 0xc4, 0xbc, 0x17, 0x9d, 0xf2, 0x78, 0xda, 0x3d, 0x0b,
0xc2, 0x7e, 0x74, 0xd6, 0xae, 0x5d, 0x75, 0x6e, 0xcc, 0x79, 0xcb, 0x0a, 0x7e, 0x4a, 0xa8, 0xbb,
0x0e, 0xcc, 0x9c, 0x85, 0x58, 0x37, 0x77, 0x00, 0x6b, 0x4f, 0xc2, 0x61, 0xd4, 0x7b, 0xf6, 0x53,
0xce, 0xae, 0xa4, 0xfb, 0x4a, 0x69, 0xf7, 0x1b, 0xb0, 0x6e, 0x77, 0x24, 0x07, 0xc0, 0xe1, 0xe2,
0xf6, 0x89, 0x1f, 0x0e, 0xb8, 0x6a, 0x52, 0x0d, 0xe1, 0x93, 0xd0, 0xea, 0x4d, 0xe2, 0x98, 0x87,
0x85, 0x31, 0xac, 0x48, 0x5c, 0x0f, 0xe2, 0x2d, 0x68, 0x86, 0xfc, 0x2c, 0x23, 0x93, 0x2c, 0x13,
0xf2, 0x33, 0x45, 0xe2, 0xb6, 0x61, 0x23, 0xdf, 0x8d, 0x1c, 0xc0, 0x77, 0x2b, 0xd0, 0x78, 0x1c,
0xfb, 0x61, 0xe2, 0xf7, 0x90, 0x8b, 0x59, 0x1b, 0x16, 0xd2, 0xe7, 0xdd, 0x13, 0x3f, 0x39, 0xa1,
0xee, 0xea, 0x9e, 0x2a, 0xb2, 0x0d, 0x98, 0xf7, 0x47, 0xd1, 0x24, 0x4c, 0xa9, 0x83, 0xaa, 0x27,
0x4b, 0xec, 0x1d, 0x58, 0x0d, 0x27, 0xa3, 0x6e, 0x2f, 0x0a, 0x8f, 0x83, 0x78, 0x24, 0x64, 0x81,
0xf6, 0x6b, 0xce, 0x2b, 0x56, 0xb0, 0x2b, 0x00, 0x47, 0xb8, 0x0e, 0xa2, 0x8b, 0x1a, 0x75, 0x61,
0x20, 0xcc, 0x85, 0xa6, 0x2c, 0xf1, 0x60, 0x70, 0x92, 0xb6, 0xe7, 0xa8, 0x21, 0x0b, 0xc3, 0x36,
0xd2, 0x60, 0xc4, 0xbb, 0x49, 0xea, 0x8f, 0xc6, 0xed, 0x79, 0x1a, 0x8d, 0x81, 0x50, 0x7d, 0x94,
0xfa, 0xc3, 0xee, 0x31, 0xe7, 0x49, 0x7b, 0x41, 0xd6, 0x6b, 0x84, 0xbd, 0x0d, 0xcb, 0x7d, 0x9e,
0xa4, 0x5d, 0xbf, 0xdf, 0x8f, 0x79, 0x92, 0xf0, 0xa4, 0xbd, 0x48, 0xdc, 0x98, 0x43, 0x71, 0xd5,
0xee, 0xf3, 0xd4, 0x58, 0x9d, 0x44, 0xee, 0x8e, 0xbb, 0x0f, 0xcc, 0x80, 0x77, 0x78, 0xea, 0x07,
0xc3, 0x84, 0xbd, 0x07, 0xcd, 0xd4, 0x20, 0x26, 0xe9, 0x6b, 0x6c, 0xb1, 0x9b, 0xa4, 0x36, 0x6e,
0x1a, 0x1f, 0x78, 0x16, 0x9d, 0x7b, 0x1f, 0x16, 0xef, 0x71, 0xbe, 0x1f, 0x8c, 0x82, 0x94, 0x6d,
0xc0, 0xdc, 0x71, 0xf0, 0x9c, 0x8b, 0xcd, 0xae, 0xee, 0x5d, 0xf0, 0x44, 0x91, 0x75, 0x60, 0x61,
0xcc, 0xe3, 0x1e, 0x57, 0xcb, 0xbf, 0x77, 0xc1, 0x53, 0xc0, 0xdd, 0x05, 0x98, 0x1b, 0xe2, 0xc7,
0xee, 0xf7, 0x2b, 0xd0, 0x38, 0xe4, 0xa1, 0x66, 0x22, 0x06, 0x35, 0x9c, 0x92, 0x64, 0x1c, 0xfa,
0xcd, 0xde, 0x84, 0x06, 0x4d, 0x33, 0x49, 0xe3, 0x20, 0x1c, 0x50, 0x63, 0x75, 0x0f, 0x10, 0x3a,
0x24, 0x84, 0xb5, 0xa0, 0xea, 0x8f, 0x52, 0xda, 0xc1, 0xaa, 0x87, 0x3f, 0x91, 0xc1, 0xc6, 0xfe,
0x74, 0x84, 0xbc, 0xa8, 0x77, 0xad, 0xe9, 0x35, 0x24, 0xb6, 0x87, 0xdb, 0x76, 0x13, 0xd6, 0x4c,
0x12, 0xd5, 0xfa, 0x1c, 0xb5, 0xbe, 0x6a, 0x50, 0xca, 0x4e, 0xae, 0xc3, 0x8a, 0xa2, 0x8f, 0xc5,
0x60, 0x69, 0x1f, 0xeb, 0xde, 0xb2, 0x84, 0xd5, 0x14, 0x6e, 0x40, 0xeb, 0x38, 0x08, 0xfd, 0x61,
0xb7, 0x37, 0x4c, 0x4f, 0xbb, 0x7d, 0x3e, 0x4c, 0x7d, 0xda, 0xd1, 0x39, 0x6f, 0x99, 0xf0, 0xed,
0x61, 0x7a, 0xba, 0x83, 0x28, 0x7b, 0x07, 0xea, 0xc7, 0x9c, 0x77, 0x69, 0x25, 0xda, 0x8b, 0x57,
0x9d, 0x1b, 0x8d, 0xad, 0x15, 0xb9, 0xf4, 0x6a, 0x75, 0xbd, 0xc5, 0x63, 0xf9, 0xcb, 0xfd, 0x63,
0x07, 0x9a, 0x62, 0xa9, 0xa4, 0x0a, 0xbd, 0x06, 0x4b, 0x6a, 0x44, 0x3c, 0x8e, 0xa3, 0x58, 0xb2,
0xbf, 0x0d, 0xb2, 0x4d, 0x68, 0x29, 0x60, 0x1c, 0xf3, 0x60, 0xe4, 0x0f, 0xb8, 0x94, 0xb7, 0x02,
0xce, 0xb6, 0xb2, 0x16, 0xe3, 0x68, 0x92, 0x0a, 0x25, 0xd6, 0xd8, 0x6a, 0xca, 0x41, 0x79, 0x88,
0x79, 0x36, 0x89, 0xfb, 0x1d, 0x07, 0x18, 0x0e, 0xeb, 0x71, 0x24, 0xaa, 0xe5, 0x2a, 0xe4, 0x77,
0xc0, 0x79, 0xe5, 0x1d, 0xa8, 0xcc, 0xda, 0x81, 0x6b, 0x30, 0x4f, 0x5d, 0xa2, 0xac, 0x56, 0x0b,
0xc3, 0x92, 0x75, 0xee, 0xf7, 0x1c, 0x68, 0xa2, 0xe6, 0x08, 0xf9, 0xf0, 0x20, 0x0a, 0xc2, 0x94,
0xdd, 0x06, 0x76, 0x3c, 0x09, 0xfb, 0x41, 0x38, 0xe8, 0xa6, 0xcf, 0x83, 0x7e, 0xf7, 0x68, 0x8a,
0x4d, 0xd0, 0x78, 0xf6, 0x2e, 0x78, 0x25, 0x75, 0xec, 0x1d, 0x68, 0x59, 0x68, 0x92, 0xc6, 0x62,
0x54, 0x7b, 0x17, 0xbc, 0x42, 0x0d, 0xca, 0x7f, 0x34, 0x49, 0xc7, 0x93, 0xb4, 0x1b, 0x84, 0x7d,
0xfe, 0x9c, 0xd6, 0x6c, 0xc9, 0xb3, 0xb0, 0xbb, 0xcb, 0xd0, 0x34, 0xbf, 0x73, 0x3f, 0x07, 0xad,
0x7d, 0x54, 0x0c, 0x61, 0x10, 0x0e, 0xee, 0x08, 0xe9, 0x45, 0x6d, 0x35, 0x9e, 0x1c, 0x3d, 0xe3,
0x53, 0xb9, 0x8f, 0xb2, 0x84, 0x22, 0x71, 0x12, 0x25, 0xa9, 0x5c, 0x17, 0xfa, 0xed, 0xfe, 0x8b,
0x03, 0x2b, 0xb8, 0xe8, 0x1f, 0xf9, 0xe1, 0x54, 0xad, 0xf8, 0x3e, 0x34, 0xb1, 0xa9, 0xc7, 0xd1,
0x1d, 0xa1, 0xf3, 0x84, 0x2c, 0xdf, 0x90, 0x8b, 0x94, 0xa3, 0xbe, 0x69, 0x92, 0xa2, 0x99, 0x9e,
0x7a, 0xd6, 0xd7, 0x28, 0x74, 0xa9, 0x1f, 0x0f, 0x78, 0x4a, 0xda, 0x50, 0x6a, 0x47, 0x10, 0xd0,
0x76, 0x14, 0x1e, 0xb3, 0xab, 0xd0, 0x4c, 0xfc, 0xb4, 0x3b, 0xe6, 0x31, 0xad, 0x1a, 0x09, 0x4e,
0xd5, 0x83, 0xc4, 0x4f, 0x0f, 0x78, 0x7c, 0x77, 0x9a, 0xf2, 0xce, 0xe7, 0x61, 0xb5, 0xd0, 0x0b,
0xca, 0x6a, 0x36, 0x45, 0xfc, 0xc9, 0xd6, 0x61, 0xee, 0xd4, 0x1f, 0x4e, 0xb8, 0x54, 0xd2, 0xa2,
0xf0, 0x41, 0xe5, 0x7d, 0xc7, 0x7d, 0x1b, 0x5a, 0xd9, 0xb0, 0x25, 0xd3, 0x33, 0xa8, 0xe1, 0x0a,
0xca, 0x06, 0xe8, 0xb7, 0xfb, 0xdb, 0x8e, 0x20, 0xdc, 0x8e, 0x02, 0xad, 0xf0, 0x90, 0x10, 0xf5,
0xa2, 0x22, 0xc4, 0xdf, 0x33, 0x0d, 0xc2, 0xcf, 0x3e, 0x59, 0xf7, 0x3a, 0xac, 0x1a, 0x43, 0x78,
0xc9, 0x60, 0xbf, 0xe3, 0xc0, 0xea, 0x43, 0x7e, 0x26, 0x77, 0x5d, 0x8d, 0xf6, 0x7d, 0xa8, 0xa5,
0xd3, 0xb1, 0x70, 0xb2, 0x96, 0xb7, 0xae, 0xc9, 0x4d, 0x2b, 0xd0, 0xdd, 0x94, 0xc5, 0xc7, 0xd3,
0x31, 0xf7, 0xe8, 0x0b, 0xf7, 0x73, 0xd0, 0x30, 0x40, 0x76, 0x09, 0xd6, 0x9e, 0x3e, 0x78, 0xfc,
0x70, 0xf7, 0xf0, 0xb0, 0x7b, 0xf0, 0xe4, 0xee, 0x17, 0x77, 0x7f, 0xbd, 0xbb, 0x77, 0xe7, 0x70,
0xaf, 0x75, 0x81, 0x6d, 0x00, 0x7b, 0xb8, 0x7b, 0xf8, 0x78, 0x77, 0xc7, 0xc2, 0x1d, 0xb7, 0x03,
0xed, 0x87, 0xfc, 0xec, 0x69, 0x90, 0x86, 0x3c, 0x49, 0xec, 0xde, 0xdc, 0x9b, 0xc0, 0xcc, 0x21,
0xc8, 0x59, 0xb5, 0x61, 0x41, 0x5a, 0x1c, 0x65, 0x70, 0x65, 0xd1, 0x7d, 0x1b, 0xd8, 0x61, 0x30,
0x08, 0x3f, 0xe2, 0x49, 0xe2, 0x0f, 0xb4, 0x2a, 0x68, 0x41, 0x75, 0x94, 0x0c, 0xa4, 0x06, 0xc0,
0x9f, 0xee, 0xa7, 0x60, 0xcd, 0xa2, 0x93, 0x0d, 0xbf, 0x0e, 0xf5, 0x24, 0x18, 0x84, 0x7e, 0x3a,
0x89, 0xb9, 0x6c, 0x3a, 0x03, 0xdc, 0x7b, 0xb0, 0xfe, 0x65, 0x1e, 0x07, 0xc7, 0xd3, 0xf3, 0x9a,
0xb7, 0xdb, 0xa9, 0xe4, 0xdb, 0xd9, 0x85, 0x8b, 0xb9, 0x76, 0x64, 0xf7, 0x82, 0x11, 0xe5, 0x76,
0x2d, 0x7a, 0xa2, 0x60, 0x88, 0x65, 0xc5, 0x14, 0x4b, 0xf7, 0x09, 0xb0, 0xed, 0x28, 0x0c, 0x79,
0x2f, 0x3d, 0xe0, 0x3c, 0xce, 0x3c, 0xe7, 0x8c, 0xeb, 0x1a, 0x5b, 0x97, 0xe4, 0x3e, 0xe6, 0x65,
0x5d, 0xb2, 0x23, 0x83, 0xda, 0x98, 0xc7, 0x23, 0x6a, 0x78, 0xd1, 0xa3, 0xdf, 0xee, 0x45, 0x58,
0xb3, 0x9a, 0x95, 0x4e, 0xcf, 0xbb, 0x70, 0x71, 0x27, 0x48, 0x7a, 0xc5, 0x0e, 0xdb, 0xb0, 0x30,
0x9e, 0x1c, 0x75, 0x33, 0x99, 0x52, 0x45, 0xf4, 0x05, 0xf2, 0x9f, 0xc8, 0xc6, 0x7e, 0xcf, 0x81,
0xda, 0xde, 0xe3, 0xfd, 0x6d, 0xd6, 0x81, 0xc5, 0x20, 0xec, 0x45, 0x23, 0x54, 0xbb, 0x62, 0xd2,
0xba, 0x3c, 0x53, 0x56, 0x5e, 0x87, 0x3a, 0x69, 0x6b, 0x74, 0x6f, 0xa4, 0x93, 0x9b, 0x01, 0xe8,
0x5a, 0xf1, 0xe7, 0xe3, 0x20, 0x26, 0xdf, 0x49, 0x79, 0x44, 0x35, 0xd2, 0x88, 0xc5, 0x0a, 0xf7,
0x7f, 0x6a, 0xb0, 0x20, 0x75, 0x35, 0xf5, 0xd7, 0x4b, 0x83, 0x53, 0x2e, 0x47, 0x22, 0x4b, 0x68,
0xe5, 0x62, 0x3e, 0x8a, 0x52, 0xde, 0xb5, 0xb6, 0xc1, 0x06, 0x91, 0xaa, 0x27, 0x1a, 0xea, 0x8e,
0x51, 0xeb, 0xd3, 0xc8, 0xea, 0x9e, 0x0d, 0xe2, 0x62, 0x21, 0xd0, 0x0d, 0xfa, 0x34, 0xa6, 0x9a,
0xa7, 0x8a, 0xb8, 0x12, 0x3d, 0x7f, 0xec, 0xf7, 0x82, 0x74, 0x2a, 0x85, 0x5b, 0x97, 0xb1, 0xed,
0x61, 0xd4, 0xf3, 0x87, 0xdd, 0x23, 0x7f, 0xe8, 0x87, 0x3d, 0x2e, 0xfd, 0x37, 0x1b, 0x44, 0x17,
0x4d, 0x0e, 0x49, 0x91, 0x09, 0x37, 0x2e, 0x87, 0xa2, 0xab, 0xd7, 0x8b, 0x46, 0xa3, 0x20, 0x45,
0xcf, 0x8e, 0xac, 0x7e, 0xd5, 0x33, 0x10, 0x9a, 0x89, 0x28, 0x9d, 0x89, 0xd5, 0xab, 0x8b, 0xde,
0x2c, 0x10, 0x5b, 0x41, 0xd7, 0x01, 0x15, 0xd2, 0xb3, 0xb3, 0x36, 0x88, 0x56, 0x32, 0x04, 0xf7,
0x61, 0x12, 0x26, 0x3c, 0x4d, 0x87, 0xbc, 0xaf, 0x07, 0xd4, 0x20, 0xb2, 0x62, 0x05, 0xbb, 0x0d,
0x6b, 0xc2, 0xd9, 0x4c, 0xfc, 0x34, 0x4a, 0x4e, 0x82, 0xa4, 0x9b, 0xa0, 0xdb, 0xd6, 0x24, 0xfa,
0xb2, 0x2a, 0xf6, 0x3e, 0x5c, 0xca, 0xc1, 0x31, 0xef, 0xf1, 0xe0, 0x94, 0xf7, 0xdb, 0x4b, 0xf4,
0xd5, 0xac, 0x6a, 0x76, 0x15, 0x1a, 0xe8, 0x63, 0x4f, 0xc6, 0x7d, 0x1f, 0xed, 0xf0, 0x32, 0xed,
0x83, 0x09, 0xb1, 0x77, 0x61, 0x69, 0xcc, 0x85, 0xb1, 0x3c, 0x49, 0x87, 0xbd, 0xa4, 0xbd, 0x42,
0x96, 0xac, 0x21, 0x85, 0x09, 0x39, 0xd7, 0xb3, 0x29, 0x90, 0x29, 0x7b, 0x09, 0x39, 0x5b, 0xfe,
0xb4, 0xdd, 0x22, 0x76, 0xcb, 0x00, 0x92, 0x91, 0x38, 0x38, 0xf5, 0x53, 0xde, 0x5e, 0x25, 0xde,
0x52, 0x45, 0xf7, 0xcf, 0x1c, 0x58, 0xdb, 0x0f, 0x92, 0x54, 0x32, 0xa1, 0x56, 0xc7, 0x6f, 0x42,
0x43, 0xb0, 0x5f, 0x37, 0x0a, 0x87, 0x53, 0xc9, 0x91, 0x20, 0xa0, 0x47, 0xe1, 0x70, 0xca, 0x3e,
0x01, 0x4b, 0x41, 0x68, 0x92, 0x08, 0x19, 0x6e, 0x2a, 0x90, 0x88, 0xde, 0x84, 0xc6, 0x78, 0x72,
0x34, 0x0c, 0x7a, 0x82, 0xa4, 0x2a, 0x5a, 0x11, 0x10, 0x11, 0xa0, 0x93, 0x24, 0x46, 0x22, 0x28,
0x6a, 0x44, 0xd1, 0x90, 0x18, 0x92, 0xb8, 0x77, 0x61, 0xdd, 0x1e, 0xa0, 0x54, 0x56, 0x9b, 0xb0,
0x28, 0x79, 0x3b, 0x69, 0x37, 0x68, 0x7d, 0x96, 0xe5, 0xfa, 0x48, 0x52, 0x4f, 0xd7, 0xbb, 0x7f,
0x51, 0x83, 0x35, 0x89, 0x6e, 0x0f, 0xa3, 0x84, 0x1f, 0x4e, 0x46, 0x23, 0x3f, 0x2e, 0x11, 0x1a,
0xe7, 0x1c, 0xa1, 0xa9, 0xd8, 0x42, 0x83, 0xac, 0x7c, 0xe2, 0x07, 0xa1, 0xf0, 0xf0, 0x84, 0xc4,
0x19, 0x08, 0xbb, 0x01, 0x2b, 0xbd, 0x61, 0x94, 0x08, 0xaf, 0xc7, 0x3c, 0x3e, 0xe5, 0xe1, 0xa2,
0x90, 0xcf, 0x95, 0x09, 0xb9, 0x29, 0xa4, 0xf3, 0x39, 0x21, 0x75, 0xa1, 0x89, 0x8d, 0x72, 0xa5,
0x73, 0x16, 0x84, 0x17, 0x66, 0x62, 0x38, 0x9e, 0xbc, 0x48, 0x08, 0xf9, 0x5b, 0x29, 0x13, 0x08,
0x3c, 0x9d, 0xa1, 0x4e, 0x33, 0xa8, 0xeb, 0x52, 0x20, 0x8a, 0x55, 0xec, 0x1e, 0x80, 0xe8, 0x8b,
0xcc, 0x38, 0x90, 0x19, 0x7f, 0xdb, 0xde, 0x11, 0x73, 0xed, 0x6f, 0x62, 0x61, 0x12, 0x73, 0x32,
0xe4, 0xc6, 0x97, 0xee, 0xc7, 0xd0, 0x30, 0xaa, 0xd8, 0x45, 0x58, 0xdd, 0x7e, 0xf4, 0xe8, 0x60,
0xd7, 0xbb, 0xf3, 0xf8, 0xc1, 0x97, 0x77, 0xbb, 0xdb, 0xfb, 0x8f, 0x0e, 0x77, 0x5b, 0x17, 0x10,
0xde, 0x7f, 0xb4, 0x7d, 0x67, 0xbf, 0x7b, 0xef, 0x91, 0xb7, 0xad, 0x60, 0x07, 0x6d, 0xbc, 0xb7,
0xfb, 0xd1, 0xa3, 0xc7, 0xbb, 0x16, 0x5e, 0x61, 0x2d, 0x68, 0xde, 0xf5, 0x76, 0xef, 0x6c, 0xef,
0x49, 0xa4, 0xca, 0xd6, 0xa1, 0x75, 0xef, 0xc9, 0xc3, 0x9d, 0x07, 0x0f, 0xef, 0x77, 0xb7, 0xef,
0x3c, 0xdc, 0xde, 0xdd, 0xdf, 0xdd, 0x69, 0xd5, 0xdc, 0xbf, 0x73, 0xe0, 0x22, 0x8d, 0xb2, 0x9f,
0x17, 0x88, 0xab, 0xd0, 0xe8, 0x45, 0xd1, 0x98, 0xa3, 0xfe, 0xd6, 0x2a, 0xda, 0x84, 0x90, 0xd9,
0x85, 0x42, 0x3c, 0x8e, 0xe2, 0x1e, 0x97, 0xf2, 0x00, 0x04, 0xdd, 0x43, 0x04, 0x99, 0x5d, 0x6e,
0xa7, 0xa0, 0x10, 0xe2, 0xd0, 0x10, 0x98, 0x20, 0xd9, 0x80, 0xf9, 0xa3, 0x98, 0xfb, 0xbd, 0x13,
0x29, 0x09, 0xb2, 0xc4, 0x3e, 0x99, 0x39, 0xe4, 0x3d, 0x5c, 0xed, 0x21, 0xef, 0x13, 0x87, 0x2c,
0x7a, 0x2b, 0x12, 0xdf, 0x96, 0xb0, 0x7b, 0x00, 0x1b, 0xf9, 0x19, 0x48, 0x89, 0x79, 0xcf, 0x90,
0x18, 0xe1, 0x1b, 0x77, 0x66, 0xef, 0x8f, 0x21, 0x3d, 0xff, 0xee, 0x40, 0x0d, 0xcd, 0xe7, 0x6c,
0x53, 0x6b, 0x7a, 0x44, 0x55, 0xcb, 0x23, 0xa2, 0xe0, 0x01, 0x9e, 0x29, 0x84, 0x42, 0x15, 0x46,
0xc7, 0x40, 0xb2, 0xfa, 0x98, 0xf7, 0x4e, 0x69, 0x4e, 0xba, 0x1e, 0x11, 0x64, 0x79, 0x74, 0x3c,
0xe9, 0x6b, 0xc9, 0xf2, 0xaa, 0xac, 0xea, 0xe8, 0xcb, 0x85, 0xac, 0x8e, 0xbe, 0x6b, 0xc3, 0x42,
0x10, 0x1e, 0x45, 0x93, 0xb0, 0x4f, 0x2c, 0xbe, 0xe8, 0xa9, 0x22, 0xaa, 0xca, 0x31, 0x89, 0x5e,
0x30, 0x52, 0x0c, 0x9d, 0x01, 0x2e, 0xc3, 0x83, 0x49, 0x42, 0xee, 0x82, 0xf6, 0x02, 0xdf, 0x83,
0x55, 0x03, 0x93, 0xab, 0xf9, 0x16, 0xcc, 0x8d, 0x11, 0x90, 0x4b, 0xa9, 0x94, 0x33, 0xf9, 0x19,
0xa2, 0xc6, 0x6d, 0xc1, 0xf2, 0x7d, 0x9e, 0x3e, 0x08, 0x8f, 0x23, 0xd5, 0xd2, 0x8f, 0xab, 0xb0,
0xa2, 0x21, 0xd9, 0xd0, 0x0d, 0x58, 0x09, 0xfa, 0x3c, 0x4c, 0x83, 0x74, 0xda, 0xb5, 0xce, 0x3f,
0x79, 0x18, 0xfd, 0x33, 0x7f, 0x18, 0xf8, 0x89, 0xf4, 0x00, 0x44, 0x81, 0x6d, 0xc1, 0x3a, 0x1a,
0x0f, 0x65, 0x0f, 0xf4, 0x16, 0x8b, 0x63, 0x58, 0x69, 0x1d, 0x8a, 0x37, 0xe2, 0x52, 0x7f, 0xeb,
0x4f, 0x84, 0x9f, 0x52, 0x56, 0x85, 0xab, 0x26, 0x5a, 0xc2, 0x29, 0xcf, 0x09, 0x03, 0xa3, 0x81,
0x42, 0x08, 0x68, 0x5e, 0x28, 0x9f, 0x7c, 0x08, 0xc8, 0x08, 0x23, 0x2d, 0x16, 0xc2, 0x48, 0xa8,
0x9c, 0xa6, 0x61, 0x8f, 0xf7, 0xbb, 0x69, 0xd4, 0x25, 0x25, 0x4a, 0xbb, 0xb3, 0xe8, 0xe5, 0x61,
0x0a, 0x78, 0xf1, 0x24, 0x0d, 0x79, 0x4a, 0x7a, 0x66, 0xd1, 0x53, 0x45, 0x94, 0x1f, 0x22, 0x11,
0x26, 0xa1, 0xee, 0xc9, 0x12, 0x3a, 0x9a, 0x93, 0x38, 0x48, 0xda, 0x4d, 0x42, 0xe9, 0x37, 0xfb,
0x34, 0x5c, 0x3c, 0xe2, 0x49, 0xda, 0x3d, 0xe1, 0x7e, 0x9f, 0xc7, 0xb4, 0xfb, 0x22, 0x3a, 0x25,
0xec, 0x77, 0x79, 0x25, 0xf6, 0x7d, 0xca, 0xe3, 0x24, 0x88, 0x42, 0xb2, 0xdc, 0x75, 0x4f, 0x15,
0xdd, 0x6f, 0x92, 0x3f, 0xac, 0xe3, 0x66, 0x4f, 0xc8, 0x98, 0xb3, 0xd7, 0xa0, 0x2e, 0xe6, 0x98,
0x9c, 0xf8, 0xd2, 0x45, 0x5f, 0x24, 0xe0, 0xf0, 0xc4, 0x47, 0x8d, 0x60, 0x2d, 0x9b, 0x08, 0x44,
0x36, 0x08, 0xdb, 0x13, 0xab, 0x76, 0x0d, 0x96, 0x55, 0x44, 0x2e, 0xe9, 0x0e, 0xf9, 0x71, 0xaa,
0x8e, 0xd7, 0xe1, 0x64, 0x84, 0xdd, 0x25, 0xfb, 0xfc, 0x38, 0x75, 0x1f, 0xc2, 0xaa, 0x94, 0xe1,
0x47, 0x63, 0xae, 0xba, 0xfe, 0x6c, 0x99, 0x75, 0x6b, 0x6c, 0xad, 0xd9, 0x42, 0x4f, 0x31, 0x82,
0x9c, 0xc9, 0x73, 0x3d, 0x60, 0xa6, 0x4e, 0x90, 0x0d, 0x4a, 0x13, 0xa3, 0x0e, 0xf1, 0x72, 0x3a,
0x16, 0x86, 0xeb, 0x93, 0x4c, 0x7a, 0x3d, 0xd4, 0x04, 0x42, 0x03, 0xaa, 0xa2, 0xfb, 0x7d, 0x07,
0xd6, 0xa8, 0x35, 0x65, 0x9f, 0xf5, 0xc9, 0xef, 0xd5, 0x87, 0xd9, 0xec, 0x99, 0x81, 0x8d, 0x75,
0x98, 0x33, 0x75, 0xad, 0x28, 0xfc, 0xe4, 0x67, 0xd9, 0x5a, 0xe1, 0x2c, 0xfb, 0x63, 0x07, 0x56,
0x85, 0x32, 0x4c, 0xfd, 0x74, 0x92, 0xc8, 0xe9, 0xff, 0x32, 0x2c, 0x09, 0x3b, 0x25, 0xc5, 0x49,
0x0e, 0x74, 0x5d, 0x4b, 0x3e, 0xa1, 0x82, 0x78, 0xef, 0x82, 0x67, 0x13, 0xb3, 0xcf, 0x43, 0xd3,
0x0c, 0xab, 0xd2, 0x98, 0x1b, 0x5b, 0x97, 0xd5, 0x2c, 0x0b, 0x9c, 0xb3, 0x77, 0xc1, 0xb3, 0x3e,
0x60, 0x1f, 0x92, 0xb3, 0x11, 0x76, 0xa9, 0x59, 0x19, 0x98, 0xba, 0x5c, 0xa2, 0xc0, 0xf5, 0xe7,
0x06, 0xf9, 0xdd, 0x45, 0x98, 0x17, 0xde, 0xa5, 0x7b, 0x1f, 0x96, 0xac, 0x91, 0x5a, 0x67, 0xf4,
0xa6, 0x38, 0xa3, 0x17, 0x42, 0x3a, 0x95, 0x62, 0x48, 0xc7, 0xfd, 0x76, 0x15, 0x18, 0x72, 0x5b,
0x6e, 0x3b, 0xd1, 0xbd, 0x8d, 0xfa, 0xd6, 0x61, 0xa5, 0xe9, 0x99, 0x10, 0xbb, 0x09, 0xcc, 0x28,
0xaa, 0xa8, 0x97, 0xb0, 0x1b, 0x25, 0x35, 0xa8, 0xe0, 0xa4, 0x61, 0x95, 0x26, 0x50, 0x1e, 0xcb,
0xc4, 0xbe, 0x95, 0xd6, 0xa1, 0x69, 0x18, 0x4f, 0x92, 0x13, 0x74, 0xbf, 0xd5, 0x71, 0x46, 0x95,
0xf3, 0x0c, 0x32, 0x7f, 0x2e, 0x83, 0x2c, 0xe4, 0x19, 0xc4, 0x74, 0xa8, 0x17, 0x2d, 0x87, 0x1a,
0x1d, 0xb9, 0x11, 0xba, 0x7f, 0xe9, 0xb0, 0xd7, 0x1d, 0x61, 0xef, 0xf2, 0xf4, 0x62, 0x81, 0x6c,
0x13, 0x5a, 0xd2, 0x15, 0xc8, 0xbc, 0x76, 0xa0, 0x35, 0x2e, 0xe0, 0xa8, 0x79, 0xf1, 0x63, 0xd2,
0x00, 0x74, 0x82, 0x99, 0xf3, 0x32, 0xc0, 0xfd, 0x91, 0x03, 0x2d, 0xdc, 0x05, 0x8b, 0x53, 0x3f,
0x00, 0x12, 0x94, 0x57, 0x64, 0x54, 0x8b, 0xf6, 0x67, 0xe7, 0xd3, 0xf7, 0xa1, 0x4e, 0x0d, 0x46,
0x63, 0x1e, 0x4a, 0x36, 0x6d, 0xdb, 0x6c, 0x9a, 0xe9, 0xa8, 0xbd, 0x0b, 0x5e, 0x46, 0x6c, 0x30,
0xe9, 0x3f, 0x39, 0xd0, 0x90, 0xc3, 0xfc, 0xa9, 0xcf, 0xe9, 0x1d, 0x58, 0x44, 0x7e, 0x35, 0x0e,
0xc3, 0xba, 0x8c, 0xb6, 0x66, 0xe4, 0xa7, 0x93, 0x18, 0x8d, 0xab, 0x75, 0x46, 0xcf, 0xc3, 0x68,
0x29, 0x49, 0x1d, 0x27, 0xdd, 0x34, 0x18, 0x76, 0x55, 0xad, 0xbc, 0xe3, 0x28, 0xab, 0x42, 0xad,
0x94, 0xa4, 0xfe, 0x80, 0x4b, 0x23, 0x28, 0x0a, 0x6e, 0x1b, 0x36, 0xe4, 0x84, 0x72, 0x9e, 0xa5,
0xfb, 0xb7, 0x4d, 0xb8, 0x54, 0xa8, 0xd2, 0x97, 0x84, 0xf2, 0xf0, 0x39, 0x0c, 0x46, 0x47, 0x91,
0x76, 0xc3, 0x1d, 0xf3, 0x5c, 0x6a, 0x55, 0xb1, 0x01, 0x5c, 0x54, 0xd6, 0x1e, 0xd7, 0x34, 0xb3,
0xed, 0x15, 0x72, 0x53, 0xde, 0xb5, 0x79, 0x20, 0xdf, 0xa1, 0xc2, 0x4d, 0xb9, 0x2e, 0x6f, 0x8f,
0x9d, 0x40, 0x5b, 0xbb, 0x15, 0xd2, 0x00, 0x18, 0xae, 0x07, 0xf6, 0xf5, 0xce, 0x39, 0x7d, 0x59,
0x6e, 0xaa, 0x37, 0xb3, 0x35, 0x36, 0x85, 0x2b, 0xaa, 0x8e, 0x34, 0x7c, 0xb1, 0xbf, 0xda, 0x2b,
0xcd, 0x8d, 0x5c, 0x6c, 0xbb, 0xd3, 0x73, 0x1a, 0x66, 0x5f, 0x87, 0x8d, 0x33, 0x3f, 0x48, 0xd5,
0xb0, 0x0c, 0x57, 0x69, 0x8e, 0xba, 0xdc, 0x3a, 0xa7, 0xcb, 0xa7, 0xe2, 0x63, 0xcb, 0xec, 0xcd,
0x68, 0xb1, 0xf3, 0x0f, 0x0e, 0x2c, 0xdb, 0xed, 0x20, 0x9b, 0x4a, 0x75, 0xa0, 0xd4, 0xa2, 0x72,
0x0d, 0x73, 0x70, 0xf1, 0x24, 0x5b, 0x29, 0x3b, 0xc9, 0x9a, 0xe7, 0xc7, 0xea, 0x79, 0x41, 0x9e,
0xda, 0xab, 0x05, 0x79, 0xe6, 0xca, 0x82, 0x3c, 0x9d, 0xff, 0x76, 0x80, 0x15, 0x79, 0x89, 0xdd,
0x17, 0x47, 0xe9, 0x90, 0x0f, 0xa5, 0x4e, 0xfa, 0xc5, 0x57, 0xe3, 0x47, 0xb5, 0x76, 0xea, 0x6b,
0x14, 0x0c, 0x53, 0xe9, 0x98, 0x0e, 0xd4, 0x92, 0x57, 0x56, 0x95, 0x0b, 0x3b, 0xd5, 0xce, 0x0f,
0x3b, 0xcd, 0x9d, 0x1f, 0x76, 0x9a, 0xcf, 0x87, 0x9d, 0x3a, 0xbf, 0xeb, 0xc0, 0x5a, 0xc9, 0xa6,
0xff, 0xfc, 0x26, 0x8e, 0xdb, 0x64, 0xe9, 0x82, 0x8a, 0xdc, 0x26, 0x13, 0xec, 0xfc, 0x16, 0x2c,
0x59, 0x8c, 0xfe, 0xf3, 0xeb, 0x3f, 0xef, 0x03, 0x0a, 0x3e, 0xb3, 0xb0, 0xce, 0x7f, 0x54, 0x80,
0x15, 0x85, 0xed, 0xff, 0x75, 0x0c, 0xc5, 0x75, 0xaa, 0x96, 0xac, 0xd3, 0xff, 0xa9, 0x1d, 0x78,
0x07, 0x56, 0x65, 0x46, 0x81, 0x11, 0x40, 0x11, 0x1c, 0x53, 0xac, 0x40, 0x2f, 0xd8, 0x8e, 0xf9,
0x2d, 0x5a, 0x37, 0xd1, 0x86, 0x31, 0xcc, 0x85, 0xfe, 0xdc, 0x0d, 0x58, 0x17, 0x19, 0x0a, 0x77,
0x45, 0x53, 0xca, 0xae, 0xfc, 0xa9, 0x03, 0x17, 0x73, 0x15, 0xd9, 0xbd, 0xa9, 0x30, 0x1d, 0xb6,
0x3d, 0xb1, 0x41, 0x1c, 0xbf, 0x94, 0x23, 0x63, 0xfc, 0x82, 0xdb, 0x8a, 0x15, 0xb8, 0x3e, 0x93,
0xb0, 0x48, 0x2f, 0x56, 0xbd, 0xac, 0xca, 0xbd, 0x24, 0xf2, 0x28, 0x42, 0x3e, 0xcc, 0x0d, 0xfc,
0x58, 0x64, 0x3e, 0x98, 0x15, 0xd9, 0xc5, 0x8b, 0x3d, 0x64, 0x55, 0x44, 0x1f, 0xd1, 0x32, 0x53,
0xf6, 0x78, 0x4b, 0xeb, 0xdc, 0xbf, 0x76, 0x80, 0x7d, 0x69, 0xc2, 0xe3, 0x29, 0xdd, 0x9f, 0xea,
0x48, 0xcf, 0xa5, 0x7c, 0x94, 0x63, 0x7e, 0x3c, 0x39, 0xfa, 0x22, 0x9f, 0xaa, 0x5b, 0xf6, 0x4a,
0x76, 0xcb, 0xfe, 0x06, 0x00, 0x1e, 0xce, 0xf4, 0xa5, 0x2c, 0xf9, 0x66, 0xe1, 0x64, 0x24, 0x1a,
0x2c, 0xbd, 0x08, 0xaf, 0x9d, 0x7f, 0x11, 0x3e, 0x77, 0xde, 0x45, 0xf8, 0x87, 0xb0, 0x66, 0x8d,
0x5b, 0x6f, 0xab, 0xba, 0x1e, 0x76, 0x5e, 0x72, 0x3d, 0xfc, 0x9f, 0x0e, 0x54, 0xf7, 0xa2, 0xb1,
0x19, 0xd5, 0x74, 0xec, 0xa8, 0xa6, 0xb4, 0x25, 0x5d, 0x6d, 0x2a, 0xa4, 0x8a, 0xb1, 0x40, 0xb6,
0x09, 0xcb, 0xfe, 0x28, 0xc5, 0x43, 0xf9, 0x71, 0x14, 0x9f, 0xf9, 0x71, 0x5f, 0xec, 0xf5, 0xdd,
0x4a, 0xdb, 0xf1, 0x72, 0x35, 0x6c, 0x1d, 0xaa, 0x5a, 0xe9, 0x12, 0x01, 0x16, 0xd1, 0x71, 0xa3,
0x1b, 0x91, 0xa9, 0x8c, 0x27, 0xc8, 0x12, 0xb2, 0x92, 0xfd, 0xbd, 0x70, 0xa4, 0x85, 0xe8, 0x94,
0x55, 0xa1, 0x5d, 0xc3, 0xe5, 0x23, 0x32, 0x19, 0x08, 0x52, 0x65, 0xf7, 0xdf, 0x1c, 0x98, 0xa3,
0x15, 0x40, 0x61, 0x17, 0x1c, 0xae, 0xc3, 0x97, 0x34, 0xf3, 0x25, 0x2f, 0x0f, 0x33, 0xd7, 0xca,
0x46, 0xa9, 0xe8, 0x61, 0x9b, 0x19, 0x29, 0x57, 0xa1, 0x2e, 0x4a, 0x3a, 0xf3, 0x82, 0x48, 0x32,
0x90, 0x5d, 0x81, 0xda, 0x49, 0x34, 0x56, 0xde, 0x09, 0xa8, 0xe8, 0x7d, 0x34, 0xf6, 0x08, 0xcf,
0xc6, 0x83, 0xed, 0x89, 0xc1, 0x0b, 0x9b, 0x93, 0x87, 0xd1, 0xea, 0xea, 0x66, 0xcd, 0xc5, 0xc8,
0xa1, 0xee, 0x26, 0xac, 0x3c, 0x8c, 0xfa, 0xdc, 0x88, 0x38, 0xcd, 0xe4, 0x66, 0xf7, 0x5b, 0x0e,
0x2c, 0x2a, 0x62, 0x76, 0x03, 0x6a, 0xe8, 0x4a, 0xe4, 0x0e, 0x0a, 0xfa, 0xd6, 0x0e, 0xe9, 0x3c,
0xa2, 0x40, 0xdd, 0x4b, 0xf1, 0x88, 0xcc, 0xad, 0x54, 0xd1, 0x88, 0xcc, 0x6b, 0xd2, 0xc3, 0xcd,
0x39, 0x1b, 0x39, 0xd4, 0xfd, 0x4b, 0x07, 0x96, 0xac, 0x3e, 0xf0, 0xf0, 0x38, 0xf4, 0x93, 0x54,
0xde, 0x84, 0xc8, 0xed, 0x31, 0x21, 0x33, 0x06, 0x59, 0xb1, 0x63, 0x90, 0x3a, 0x3a, 0x56, 0x35,
0xa3, 0x63, 0xb7, 0xa1, 0x9e, 0xe5, 0x0c, 0xd5, 0x2c, 0x9d, 0x8a, 0x3d, 0xaa, 0xfb, 0xc8, 0x8c,
0x08, 0xdb, 0xe9, 0x45, 0xc3, 0x28, 0x96, 0x21, 0x78, 0x51, 0x70, 0x3f, 0x84, 0x86, 0x41, 0x8f,
0xc3, 0x08, 0x79, 0x7a, 0x16, 0xc5, 0xcf, 0x54, 0x28, 0x54, 0x16, 0xf5, 0xb5, 0x7b, 0x25, 0xbb,
0x76, 0x77, 0x7f, 0xe8, 0xc0, 0x12, 0xf2, 0x60, 0x10, 0x0e, 0x0e, 0xa2, 0x61, 0xd0, 0x9b, 0xd2,
0xde, 0x2b, 0x76, 0x93, 0x9a, 0x41, 0xf1, 0xa2, 0x0d, 0x23, 0x6f, 0xab, 0xb3, 0xa3, 0x14, 0x44,
0x5d, 0x46, 0x49, 0x45, 0x3e, 0x3f, 0xf2, 0x13, 0xc9, 0xfc, 0xd2, 0xc8, 0x59, 0x20, 0xca, 0x13,
0x02, 0xb1, 0x9f, 0xf2, 0xee, 0x28, 0x18, 0x0e, 0x03, 0x41, 0x2b, 0x5c, 0xa0, 0xb2, 0x2a, 0xec,
0xb3, 0x1f, 0x24, 0xfe, 0x51, 0x16, 0x66, 0xd6, 0x65, 0xf7, 0x07, 0x15, 0x68, 0x48, 0xf5, 0xbc,
0xdb, 0x1f, 0x70, 0x79, 0x07, 0x42, 0x4e, 0xa6, 0x56, 0x25, 0x06, 0xa2, 0xea, 0x2d, 0xb7, 0xd4,
0x40, 0xf2, 0x5b, 0x5e, 0x2d, 0x6e, 0xf9, 0xeb, 0x50, 0x47, 0xd6, 0x7b, 0x97, 0xfc, 0x5f, 0x71,
0x7f, 0x92, 0x01, 0xaa, 0x76, 0x8b, 0x6a, 0xe7, 0xb2, 0x5a, 0x02, 0x5e, 0x7a, 0x63, 0xf2, 0x3e,
0x34, 0x65, 0x33, 0xb4, 0x27, 0xa4, 0x39, 0x32, 0xe6, 0xb7, 0xf6, 0xcb, 0xb3, 0x28, 0xd5, 0x97,
0x5b, 0xea, 0xcb, 0xc5, 0xf3, 0xbe, 0x54, 0x94, 0x74, 0xbb, 0x2d, 0xd6, 0xe6, 0x7e, 0xec, 0x8f,
0x4f, 0x94, 0xc9, 0xeb, 0xeb, 0x94, 0x1d, 0x82, 0xd9, 0x26, 0xcc, 0xe1, 0x67, 0x4a, 0x93, 0x97,
0x0b, 0xa4, 0x20, 0x61, 0x37, 0x60, 0x8e, 0xf7, 0x07, 0x5c, 0x9d, 0xf0, 0x98, 0x7d, 0xd6, 0xc6,
0x3d, 0xf2, 0x04, 0x01, 0xaa, 0x07, 0x44, 0x73, 0xea, 0xc1, 0xb6, 0x02, 0xf3, 0x58, 0x7c, 0xd0,
0x77, 0xd7, 0x81, 0x3d, 0x14, 0x1c, 0x6d, 0xc6, 0xaf, 0xbf, 0x5d, 0x85, 0x86, 0x01, 0xa3, 0xa4,
0x0f, 0x70, 0xc0, 0xdd, 0x7e, 0xe0, 0x8f, 0x78, 0xca, 0x63, 0xc9, 0xc5, 0x39, 0x14, 0xe9, 0xfc,
0xd3, 0x41, 0x37, 0x9a, 0xa4, 0xdd, 0x3e, 0x1f, 0xc4, 0x5c, 0x18, 0x66, 0x34, 0x14, 0x16, 0x8a,
0x74, 0x23, 0xff, 0xb9, 0x49, 0x27, 0xf8, 0x21, 0x87, 0xaa, 0x68, 0xb4, 0x58, 0xa3, 0x5a, 0x16,
0x8d, 0x16, 0x2b, 0x92, 0xd7, 0x51, 0x73, 0x25, 0x3a, 0xea, 0x3d, 0xd8, 0x10, 0xda, 0x48, 0xca,
0x6d, 0x37, 0xc7, 0x26, 0x33, 0x6a, 0xd9, 0x26, 0xb4, 0x70, 0xcc, 0x8a, 0xc1, 0x93, 0xe0, 0x9b,
0x22, 0x3e, 0xe4, 0x78, 0x05, 0x1c, 0x69, 0x29, 0x50, 0x63, 0xd2, 0x8a, 0xfb, 0xb6, 0x02, 0x4e,
0xb4, 0xfe, 0x73, 0x9b, 0xb6, 0x2e, 0x69, 0x73, 0xb8, 0xbb, 0x04, 0x8d, 0xc3, 0x34, 0x1a, 0xab,
0x4d, 0x59, 0x86, 0xa6, 0x28, 0xca, 0xec, 0x86, 0xd7, 0xe0, 0x32, 0x71, 0xd1, 0xe3, 0x68, 0x1c,
0x0d, 0xa3, 0xc1, 0xf4, 0x70, 0x72, 0x94, 0xf4, 0xe2, 0x60, 0x8c, 0xa7, 0x21, 0xf7, 0x1f, 0x1d,
0x58, 0xb3, 0x6a, 0x65, 0xc8, 0xe8, 0xd3, 0x82, 0xa5, 0xf5, 0xb5, 0xb4, 0x60, 0xbc, 0x55, 0x43,
0x55, 0x0a, 0x42, 0x11, 0xca, 0x7b, 0x22, 0x6f, 0xaa, 0xef, 0xc0, 0x8a, 0x1a, 0x99, 0xfa, 0x50,
0x70, 0x61, 0xbb, 0xc8, 0x85, 0xf2, 0xfb, 0x65, 0xf9, 0x81, 0x6a, 0xe2, 0x57, 0xe4, 0xbd, 0x65,
0x9f, 0xe6, 0xa8, 0x62, 0x07, 0xfa, 0x66, 0xca, 0x3c, 0x41, 0xa8, 0x11, 0xf4, 0x34, 0x98, 0xb8,
0xbf, 0xef, 0x00, 0x64, 0xa3, 0x43, 0xc6, 0xc8, 0xd4, 0xbd, 0x48, 0xa5, 0x36, 0x54, 0xfb, 0x5b,
0xd0, 0xd4, 0x77, 0x2a, 0x99, 0x05, 0x69, 0x28, 0x0c, 0x9d, 0xbc, 0xeb, 0xb0, 0x32, 0x18, 0x46,
0x47, 0x64, 0x7e, 0x29, 0x5d, 0x26, 0x91, 0x39, 0x1e, 0xcb, 0x02, 0xbe, 0x27, 0xd1, 0xcc, 0xdc,
0xd4, 0x0c, 0x73, 0xe3, 0x7e, 0xa7, 0xa2, 0x23, 0xf1, 0xd9, 0x9c, 0x67, 0x4a, 0x19, 0xdb, 0x2a,
0x28, 0xc7, 0x19, 0x81, 0x6f, 0x8a, 0x92, 0x1d, 0x9c, 0x7b, 0x88, 0xff, 0x10, 0x96, 0x63, 0xa1,
0x7d, 0x94, 0x6a, 0xaa, 0xbd, 0x44, 0x35, 0x2d, 0xc5, 0x96, 0x4d, 0xfa, 0x24, 0xb4, 0xfc, 0xfe,
0x29, 0x8f, 0xd3, 0x80, 0x8e, 0x51, 0xe4, 0x10, 0x08, 0x85, 0xba, 0x62, 0xe0, 0x64, 0xa7, 0xaf,
0xc3, 0x8a, 0xcc, 0xab, 0xd1, 0x94, 0x32, 0x17, 0x34, 0x83, 0x91, 0xd0, 0xfd, 0x73, 0x15, 0xf4,
0xb7, 0xf7, 0x70, 0xf6, 0x8a, 0x98, 0xb3, 0xab, 0xe4, 0x66, 0xf7, 0x09, 0x19, 0x80, 0xef, 0xab,
0xb3, 0x5a, 0xd5, 0xb8, 0xe3, 0xee, 0xcb, 0x0b, 0x13, 0x7b, 0x49, 0x6b, 0xaf, 0xb2, 0xa4, 0xee,
0x8f, 0x1c, 0x58, 0xd8, 0x8b, 0xc6, 0x7b, 0xf2, 0xb6, 0x9f, 0x04, 0x41, 0x67, 0xad, 0xa9, 0xe2,
0x4b, 0xf2, 0x00, 0x4a, 0xed, 0xf0, 0x52, 0xde, 0x0e, 0xff, 0x2a, 0xbc, 0x46, 0x91, 0x82, 0x38,
0x1a, 0x47, 0x31, 0x0a, 0xa3, 0x3f, 0x14, 0x46, 0x37, 0x0a, 0xd3, 0x13, 0xa5, 0xc6, 0x5e, 0x46,
0x42, 0x47, 0x32, 0x3c, 0x4a, 0x08, 0x47, 0x59, 0xfa, 0x0d, 0x42, 0xbb, 0x15, 0x2b, 0xdc, 0xcf,
0x42, 0x9d, 0x1c, 0x5f, 0x9a, 0xd6, 0x3b, 0x50, 0x3f, 0x89, 0xc6, 0xdd, 0x93, 0x20, 0x4c, 0x95,
0x70, 0x2f, 0x67, 0x1e, 0xe9, 0x1e, 0x2d, 0x88, 0x26, 0x70, 0x7f, 0x58, 0x83, 0x85, 0x07, 0xe1,
0x69, 0x14, 0xf4, 0xe8, 0x7e, 0x60, 0xc4, 0x47, 0x91, 0xca, 0xe1, 0xc3, 0xdf, 0xb8, 0x14, 0x94,
0xcf, 0x32, 0x4e, 0x65, 0x80, 0x5f, 0x15, 0xd1, 0xdc, 0xc7, 0x59, 0x9e, 0xad, 0x10, 0x1d, 0x03,
0x41, 0xa7, 0x3f, 0x36, 0x53, 0x92, 0x65, 0x29, 0x4b, 0x82, 0x9c, 0x33, 0x92, 0x20, 0xe9, 0x36,
0x49, 0x64, 0x26, 0x10, 0x7f, 0x2d, 0x7a, 0xaa, 0x48, 0x87, 0x94, 0x98, 0x8b, 0x08, 0x0f, 0x39,
0x0e, 0x0b, 0xf2, 0x90, 0x62, 0x82, 0xe8, 0x5c, 0x88, 0x0f, 0x04, 0x8d, 0x50, 0xbe, 0x26, 0x84,
0x8e, 0x58, 0x3e, 0xab, 0xb9, 0x2e, 0x78, 0x3e, 0x07, 0xa3, 0x86, 0xee, 0x73, 0xad, 0x48, 0xc5,
0x1c, 0x40, 0xe4, 0x11, 0xe7, 0x71, 0xe3, 0x68, 0x23, 0x52, 0x8e, 0xd4, 0xd1, 0x06, 0x19, 0xc5,
0x1f, 0x0e, 0x8f, 0xfc, 0xde, 0x33, 0x4a, 0x5a, 0xa7, 0x0c, 0xa3, 0xba, 0x67, 0x83, 0x94, 0x6b,
0x90, 0xed, 0x26, 0xdd, 0x47, 0xd6, 0x3c, 0x13, 0x62, 0x5b, 0xd0, 0xa0, 0xe3, 0x9c, 0xdc, 0xcf,
0x65, 0xda, 0xcf, 0x96, 0x79, 0xde, 0xa3, 0x1d, 0x35, 0x89, 0xcc, 0x3b, 0x8b, 0x15, 0xfb, 0xce,
0x42, 0x28, 0x4d, 0x79, 0xd5, 0xd3, 0xa2, 0xde, 0x32, 0x00, 0xad, 0xa9, 0x5c, 0x30, 0x41, 0xb0,
0x4a, 0x04, 0x16, 0x86, 0x52, 0x8b, 0x87, 0x90, 0xb1, 0x1f, 0xf4, 0xdb, 0x4c, 0x48, 0xad, 0x2a,
0xbb, 0x29, 0xb0, 0x3b, 0xfd, 0xbe, 0xe4, 0x26, 0x7d, 0x58, 0xcd, 0xf8, 0xc0, 0xb1, 0xf8, 0xa0,
0x64, 0x3f, 0x2a, 0xe5, 0xfb, 0xf1, 0xd2, 0x51, 0xbb, 0xbb, 0xd0, 0x38, 0x30, 0x52, 0xad, 0x89,
0x2d, 0x55, 0x92, 0xb5, 0x64, 0x65, 0x03, 0x31, 0x86, 0x53, 0x31, 0x87, 0xe3, 0xfe, 0x12, 0xb0,
0xfd, 0x20, 0x49, 0xf5, 0xe8, 0xb3, 0xdc, 0x6e, 0x15, 0x51, 0xc8, 0xd2, 0xa3, 0x1a, 0x12, 0xa3,
0xb4, 0xa5, 0x3b, 0x22, 0xaf, 0x2a, 0x3f, 0xed, 0x4d, 0x58, 0x0c, 0x04, 0x94, 0x97, 0x42, 0x45,
0xa9, 0xeb, 0xdd, 0xa7, 0xb0, 0x26, 0x41, 0xd3, 0x82, 0xdb, 0xf3, 0x76, 0xce, 0xdb, 0xad, 0x4a,
0x71, 0xb7, 0xdc, 0x1f, 0x38, 0xb0, 0x20, 0x17, 0x07, 0xe9, 0x0b, 0x69, 0xea, 0x75, 0xcf, 0xc2,
0xca, 0x13, 0x94, 0x8b, 0x12, 0x58, 0x2d, 0x93, 0x40, 0x06, 0xb5, 0xb1, 0x9f, 0x9e, 0xd0, 0xd1,
0xab, 0xee, 0xd1, 0x6f, 0xd6, 0x12, 0xe1, 0x00, 0x21, 0xe9, 0x14, 0x0a, 0x28, 0xcb, 0xd1, 0x17,
0x06, 0xa5, 0x80, 0xa3, 0x0b, 0x4d, 0xd9, 0x18, 0x02, 0xd7, 0xd7, 0x28, 0x32, 0x4f, 0x2c, 0x83,
0xb3, 0x15, 0x97, 0x4d, 0xe4, 0x57, 0x5c, 0x92, 0x7a, 0xba, 0xde, 0xed, 0x40, 0x7b, 0x87, 0x0f,
0x79, 0xca, 0xef, 0x0c, 0x87, 0xf9, 0xf6, 0x5f, 0x83, 0xcb, 0x25, 0x75, 0xd2, 0xe5, 0xba, 0x07,
0xab, 0x3b, 0xfc, 0x68, 0x32, 0xd8, 0xe7, 0xa7, 0xd9, 0x4d, 0x28, 0x83, 0x5a, 0x72, 0x12, 0x9d,
0x49, 0xee, 0xa0, 0xdf, 0xec, 0x0d, 0x80, 0x21, 0xd2, 0x74, 0x93, 0x31, 0xef, 0xa9, 0xd4, 0x5c,
0x42, 0x0e, 0xc7, 0xbc, 0xe7, 0xbe, 0x07, 0xcc, 0x6c, 0x47, 0x4e, 0x01, 0xb5, 0xd8, 0xe4, 0xa8,
0x9b, 0x4c, 0x93, 0x94, 0x8f, 0x54, 0xce, 0xb1, 0x09, 0xb9, 0xd7, 0xa1, 0x79, 0xe0, 0x4f, 0x3d,
0xfe, 0x0d, 0xf9, 0x52, 0x00, 0x4f, 0xfd, 0xfe, 0x14, 0x45, 0x45, 0x9f, 0xfa, 0xa9, 0xda, 0xfd,
0xaf, 0x0a, 0xcc, 0x0b, 0x4a, 0x6c, 0xb5, 0xcf, 0x93, 0x34, 0x08, 0xc5, 0x3d, 0x9f, 0x6c, 0xd5,
0x80, 0x0a, 0xbc, 0x51, 0x29, 0xe1, 0x0d, 0xe9, 0x6b, 0xab, 0x34, 0x47, 0xc9, 0x04, 0x16, 0x86,
0x1c, 0x9b, 0x65, 0x57, 0x88, 0x63, 0x67, 0x06, 0xe4, 0xc2, 0x40, 0x99, 0xae, 0x14, 0xe3, 0x53,
0x6c, 0x2f, 0xd9, 0xc1, 0x84, 0x4a, 0x35, 0xf2, 0x82, 0xe0, 0x9a, 0x82, 0x46, 0x2e, 0x68, 0xde,
0xc5, 0x57, 0xd0, 0xbc, 0xc2, 0x01, 0x7f, 0x99, 0xe6, 0x85, 0x57, 0xd0, 0xbc, 0x2e, 0x83, 0xd6,
0x3d, 0xce, 0x3d, 0x8e, 0x36, 0x5d, 0xb1, 0xd3, 0x77, 0x1d, 0x68, 0x49, 0x77, 0x44, 0xd7, 0xb1,
0xb7, 0x2c, 0xdf, 0xa5, 0x34, 0x19, 0xf1, 0x1a, 0x2c, 0x91, 0x47, 0xa1, 0xe3, 0x5d, 0x32, 0x38,
0x67, 0x81, 0x38, 0x0f, 0x75, 0x29, 0x31, 0x0a, 0x86, 0x72, 0x53, 0x4c, 0x48, 0x85, 0xcc, 0xf0,
0xe4, 0x4f, 0x5b, 0xe2, 0x78, 0xba, 0xec, 0xfe, 0x8d, 0x03, 0xab, 0xc6, 0x80, 0x25, 0x17, 0x7e,
0x08, 0x2a, 0xfb, 0x42, 0x84, 0xc5, 0x84, 0x30, 0x5d, 0xb2, 0x5d, 0xab, 0xec, 0x33, 0x8b, 0x98,
0x36, 0xd3, 0x9f, 0xd2, 0x00, 0x93, 0xc9, 0x48, 0x6a, 0x25, 0x13, 0x42, 0x46, 0x3a, 0xe3, 0xfc,
0x99, 0x26, 0xa9, 0x0a, 0xc5, 0x65, 0x62, 0x74, 0xb9, 0x8e, 0x9e, 0x90, 0x26, 0x12, 0xf9, 0x64,
0x36, 0xe8, 0xfe, 0xb3, 0x03, 0x6b, 0xc2, 0xa5, 0x95, 0x07, 0x06, 0x9d, 0x29, 0x3e, 0x2f, 0x7c,
0x78, 0x21, 0x91, 0x7b, 0x17, 0x3c, 0x59, 0x66, 0x9f, 0x79, 0x45, 0x37, 0x5c, 0x27, 0x55, 0xcc,
0xd8, 0x8b, 0x6a, 0xd9, 0x5e, 0xbc, 0x64, 0xa5, 0xcb, 0xc2, 0x40, 0x73, 0xa5, 0x61, 0xa0, 0xbb,
0x0b, 0x30, 0x97, 0xf4, 0xa2, 0x31, 0x77, 0x37, 0x60, 0xdd, 0x9e, 0x9c, 0x54, 0x41, 0xdf, 0x73,
0xa0, 0x7d, 0x4f, 0x04, 0x45, 0x83, 0x70, 0xb0, 0x17, 0x24, 0x69, 0x14, 0xeb, 0xa7, 0x31, 0x57,
0x00, 0x92, 0xd4, 0x8f, 0x53, 0x91, 0xf4, 0x26, 0x83, 0x34, 0x19, 0x82, 0x63, 0xe4, 0x61, 0x5f,
0xd4, 0x8a, 0xbd, 0xd1, 0x65, 0xdc, 0x18, 0x32, 0x1b, 0xdd, 0xe8, 0xf8, 0x38, 0xe1, 0xda, 0xe9,
0x36, 0x31, 0x3c, 0xb7, 0xa3, 0xc4, 0xe3, 0x49, 0x95, 0x9f, 0x92, 0xaa, 0x15, 0xde, 0x6c, 0x0e,
0x75, 0xff, 0xca, 0x81, 0x95, 0x6c, 0x90, 0xbb, 0x08, 0xda, 0xda, 0x41, 0xda, 0xb3, 0x4c, 0x3b,
0xa8, 0xf0, 0x51, 0x80, 0x06, 0x4e, 0x8e, 0xcd, 0x40, 0x48, 0x62, 0x65, 0x29, 0x9a, 0xa8, 0x04,
0x43, 0x13, 0x12, 0xf9, 0x01, 0x29, 0x7e, 0x2d, 0xb2, 0x0b, 0x65, 0x89, 0x72, 0x16, 0x47, 0x29,
0x7d, 0x35, 0x2f, 0xdc, 0x79, 0x59, 0x54, 0xf6, 0x69, 0x81, 0x50, 0xfc, 0xe9, 0xfe, 0x81, 0x03,
0x97, 0x4b, 0x16, 0x57, 0x4a, 0xc6, 0x0e, 0xac, 0x1e, 0xeb, 0x4a, 0xb5, 0x00, 0x42, 0x3c, 0x36,
0x54, 0x14, 0xdf, 0x9e, 0xb4, 0x57, 0xfc, 0x00, 0x9d, 0x7b, 0x8a, 0x7a, 0x89, 0x25, 0xb5, 0x12,
0x6f, 0x8a, 0x15, 0x5b, 0x7f, 0x58, 0x85, 0x65, 0x71, 0xbb, 0x23, 0x1e, 0xa9, 0xf2, 0x98, 0x7d,
0x04, 0x0b, 0xf2, 0x91, 0x31, 0xbb, 0x28, 0xbb, 0xb5, 0x9f, 0x35, 0x77, 0x36, 0xf2, 0xb0, 0xe4,
0x9d, 0xb5, 0xdf, 0xf9, 0xd1, 0xbf, 0xfe, 0x51, 0x65, 0x89, 0x35, 0x6e, 0x9d, 0xbe, 0x7b, 0x6b,
0xc0, 0xc3, 0x04, 0xdb, 0xf8, 0x0d, 0x80, 0xec, 0xf9, 0x2d, 0x6b, 0x6b, 0x37, 0x25, 0xf7, 0xae,
0xb8, 0x73, 0xb9, 0xa4, 0x46, 0xb6, 0x7b, 0x99, 0xda, 0x5d, 0x73, 0x97, 0xb1, 0xdd, 0x20, 0x0c,
0x52, 0xf1, 0x16, 0xf7, 0x03, 0x67, 0x93, 0xf5, 0xa1, 0x69, 0xbe, 0xae, 0x65, 0xea, 0xc0, 0x5f,
0xf2, 0xb6, 0xb7, 0xf3, 0x5a, 0x69, 0x9d, 0x8a, 0x76, 0x50, 0x1f, 0x17, 0xdd, 0x16, 0xf6, 0x31,
0x21, 0x8a, 0xac, 0x97, 0x21, 0x2c, 0xdb, 0x8f, 0x68, 0xd9, 0xeb, 0x86, 0x58, 0x17, 0x9e, 0xf0,
0x76, 0xde, 0x98, 0x51, 0x2b, 0xfb, 0x7a, 0x83, 0xfa, 0xba, 0xe4, 0x32, 0xec, 0xab, 0x47, 0x34,
0xea, 0x09, 0xef, 0x07, 0xce, 0xe6, 0xd6, 0xb7, 0xae, 0x40, 0x5d, 0x87, 0xe8, 0xd8, 0xd7, 0x61,
0xc9, 0xba, 0x7e, 0x63, 0x6a, 0x1a, 0x65, 0xb7, 0x75, 0x9d, 0xd7, 0xcb, 0x2b, 0x65, 0xc7, 0x57,
0xa8, 0xe3, 0x36, 0xdb, 0xc0, 0x8e, 0xe5, 0xfd, 0xd5, 0x2d, 0xba, 0x74, 0x14, 0x19, 0x91, 0xcf,
0xc4, 0x3c, 0xb3, 0x2b, 0x33, 0x6b, 0x9e, 0x85, 0x2b, 0x36, 0x6b, 0x9e, 0xc5, 0x7b, 0x36, 0xf7,
0x75, 0xea, 0x6e, 0x83, 0xad, 0x9b, 0xdd, 0xe9, 0xd0, 0x19, 0xa7, 0x1c, 0x56, 0xf3, 0x8d, 0x2d,
0x7b, 0x43, 0x33, 0x56, 0xd9, 0xdb, 0x5b, 0xcd, 0x22, 0xc5, 0x07, 0xb8, 0x6e, 0x9b, 0xba, 0x62,
0x8c, 0xb6, 0xcf, 0x7c, 0x62, 0xcb, 0xbe, 0x0a, 0x75, 0xfd, 0xa0, 0x8c, 0x5d, 0x32, 0x5e, 0xf1,
0x99, 0xaf, 0xdc, 0x3a, 0xed, 0x62, 0x45, 0x19, 0x63, 0x98, 0x2d, 0x23, 0x63, 0xec, 0xc3, 0x45,
0xe9, 0x54, 0x1f, 0xf1, 0x9f, 0x64, 0x26, 0x25, 0x2f, 0x83, 0x6f, 0x3b, 0xec, 0x43, 0x58, 0x54,
0xef, 0xf4, 0xd8, 0x46, 0xf9, 0x7b, 0xc3, 0xce, 0xa5, 0x02, 0x2e, 0xb5, 0xc7, 0x1d, 0x80, 0xec,
0x8d, 0x99, 0x96, 0xb3, 0xc2, 0xcb, 0x37, 0xbd, 0x88, 0x25, 0x0f, 0xd2, 0x06, 0xf4, 0xa2, 0xce,
0x7e, 0xc2, 0xc6, 0xde, 0xcc, 0xe8, 0x4b, 0x1f, 0xb7, 0xbd, 0xa4, 0x41, 0x77, 0x83, 0xd6, 0xae,
0xc5, 0x48, 0x70, 0x43, 0x7e, 0xa6, 0xb2, 0xb9, 0x77, 0xa0, 0x61, 0xbc, 0x5b, 0x63, 0xaa, 0x85,
0xe2, 0x9b, 0xb7, 0x4e, 0xa7, 0xac, 0x4a, 0x0e, 0xf7, 0x0b, 0xb0, 0x64, 0x3d, 0x40, 0xd3, 0x92,
0x51, 0xf6, 0xbc, 0x4d, 0x4b, 0x46, 0xf9, 0x9b, 0xb5, 0xaf, 0x40, 0xc3, 0x78, 0x2e, 0xc6, 0x8c,
0x3c, 0xb5, 0xdc, 0x43, 0x31, 0x3d, 0xa2, 0xb2, 0xd7, 0x65, 0xeb, 0x34, 0xdf, 0x65, 0xb7, 0x8e,
0xf3, 0xa5, 0x94, 0x66, 0x64, 0x92, 0xaf, 0xc3, 0xb2, 0xfd, 0x80, 0x4c, 0x4b, 0x55, 0xe9, 0x53,
0x34, 0x2d, 0x55, 0x33, 0x5e, 0x9d, 0x49, 0x86, 0xdc, 0x5c, 0xd3, 0x9d, 0xdc, 0xfa, 0x58, 0x5e,
0x5e, 0xbd, 0x60, 0x5f, 0x42, 0xd5, 0x21, 0x73, 0xcc, 0x59, 0xf6, 0x6c, 0xce, 0xce, 0x44, 0xd7,
0xdc, 0x5e, 0x48, 0x47, 0x77, 0x57, 0xa9, 0xf1, 0x06, 0xcb, 0x66, 0x20, 0xec, 0x01, 0xe5, 0x9a,
0x1b, 0xf6, 0xc0, 0x4c, 0x47, 0x37, 0xec, 0x81, 0x95, 0x92, 0x9e, 0xb7, 0x07, 0x69, 0x80, 0x6d,
0x84, 0xb0, 0x92, 0x4b, 0xd4, 0xd0, 0xc2, 0x52, 0x9e, 0xd9, 0xd6, 0xb9, 0xf2, 0xf2, 0xfc, 0x0e,
0x5b, 0xcd, 0x28, 0xf5, 0x72, 0x4b, 0x25, 0x22, 0xfe, 0x26, 0x34, 0xcd, 0x87, 0x3f, 0xda, 0x42,
0x94, 0x3c, 0x57, 0xd2, 0x16, 0xa2, 0xec, 0xa5, 0x90, 0xda, 0x5c, 0xd6, 0x34, 0xbb, 0xc1, 0xcd,
0xb5, 0xdf, 0x49, 0x64, 0x2a, 0xb3, 0xec, 0x01, 0x48, 0xa6, 0x32, 0x4b, 0x1f, 0x57, 0xa8, 0xcd,
0x65, 0x6b, 0xd6, 0x5c, 0x44, 0x64, 0x92, 0x7d, 0x05, 0x56, 0x8c, 0x2c, 0xa8, 0xc3, 0x69, 0xd8,
0xd3, 0x8c, 0x5a, 0xcc, 0xa0, 0xed, 0x94, 0x79, 0x9e, 0xee, 0x25, 0x6a, 0x7f, 0xd5, 0xb5, 0x26,
0x81, 0x4c, 0xba, 0x0d, 0x0d, 0x33, 0xc3, 0xea, 0x25, 0xed, 0x5e, 0x32, 0xaa, 0xcc, 0x74, 0xd1,
0xdb, 0x0e, 0xfb, 0x13, 0x07, 0x9a, 0x56, 0xbe, 0x92, 0x15, 0x7f, 0xcf, 0xb5, 0xd3, 0x36, 0xeb,
0xcc, 0x86, 0x5c, 0x8f, 0x06, 0xb9, 0xbf, 0xf9, 0x05, 0x6b, 0x11, 0x3e, 0xb6, 0x4e, 0x30, 0x37,
0xf3, 0xef, 0xc7, 0x5f, 0xe4, 0x09, 0xcc, 0x2c, 0xe3, 0x17, 0xb7, 0x1d, 0xf6, 0x81, 0xf8, 0x87,
0x04, 0x15, 0xb1, 0x60, 0x86, 0x22, 0xcd, 0x2f, 0x99, 0xf9, 0xf7, 0x00, 0x37, 0x9c, 0xdb, 0x0e,
0xfb, 0x9a, 0x78, 0x26, 0x2e, 0xbf, 0xa5, 0x95, 0x7f, 0xd5, 0xef, 0xdd, 0x6b, 0x34, 0x9b, 0x2b,
0xee, 0x65, 0x6b, 0x36, 0x79, 0x4b, 0x72, 0x47, 0x8c, 0x4e, 0xbe, 0xfe, 0xcf, 0x54, 0x62, 0xe1,
0x1f, 0x01, 0x66, 0x0f, 0x72, 0x24, 0x06, 0x29, 0xc9, 0x2d, 0xf6, 0x78, 0xc5, 0x66, 0xdc, 0x4d,
0x1a, 0xeb, 0x35, 0xf7, 0xcd, 0x99, 0x63, 0xbd, 0x45, 0x27, 0x52, 0x1c, 0xf1, 0x01, 0x40, 0x16,
0x90, 0x63, 0xb9, 0xf8, 0x93, 0xb6, 0x0a, 0xc5, 0x98, 0x9d, 0xcd, 0x83, 0x2a, 0x4c, 0x85, 0x2d,
0x7e, 0x55, 0x88, 0xaa, 0xa4, 0x4f, 0xf4, 0xe8, 0x8b, 0xa1, 0xb3, 0x4e, 0xa7, 0xac, 0xaa, 0x4c,
0x50, 0x55, 0xfb, 0xec, 0x09, 0x2c, 0xed, 0x47, 0xd1, 0xb3, 0xc9, 0x58, 0x07, 0xa4, 0xed, 0xf8,
0xcd, 0x9e, 0x9f, 0x9c, 0x74, 0x72, 0xb3, 0x70, 0xaf, 0x52, 0x53, 0x1d, 0xd6, 0x36, 0x9a, 0xba,
0xf5, 0x71, 0x16, 0xf0, 0x7b, 0xc1, 0x7c, 0x58, 0xd5, 0x1e, 0x80, 0x1e, 0x78, 0xc7, 0x6e, 0xc6,
0x8c, 0xbb, 0x15, 0xba, 0xb0, 0x7c, 0x32, 0x35, 0xda, 0x5b, 0x89, 0x6a, 0xf3, 0xb6, 0xc3, 0x0e,
0xa0, 0xb9, 0xc3, 0x7b, 0x51, 0x9f, 0xcb, 0x88, 0xcb, 0x5a, 0x36, 0x70, 0x1d, 0xaa, 0xe9, 0x2c,
0x59, 0xa0, 0xad, 0x13, 0xc7, 0xfe, 0x34, 0xe6, 0xdf, 0xb8, 0xf5, 0xb1, 0x8c, 0xe5, 0xbc, 0x50,
0x3a, 0x51, 0xc5, 0x9f, 0x2c, 0x9d, 0x98, 0x0b, 0x58, 0x59, 0x3a, 0xb1, 0x10, 0xb0, 0xb2, 0x96,
0x5a, 0xc5, 0xbf, 0xd8, 0x10, 0x56, 0x0b, 0x31, 0x2e, 0xed, 0x47, 0xcc, 0x8a, 0x8c, 0x75, 0xae,
0xce, 0x26, 0xb0, 0x7b, 0xdb, 0xb4, 0x7b, 0x3b, 0x84, 0xa5, 0x1d, 0x2e, 0x16, 0x4b, 0xdc, 0x7a,
0xe7, 0x9e, 0xa3, 0x99, 0x37, 0xe4, 0x79, 0xa5, 0x48, 0x75, 0xb6, 0xd1, 0xa3, 0x2b, 0x67, 0xf6,
0x55, 0x68, 0xdc, 0xe7, 0xa9, 0xba, 0xe6, 0xd6, 0xde, 0x58, 0xee, 0xde, 0xbb, 0x53, 0x72, 0x4b,
0x6e, 0xf3, 0x0c, 0xb5, 0x76, 0x8b, 0xf7, 0x07, 0x5c, 0xa8, 0xa7, 0x6e, 0xd0, 0x7f, 0xc1, 0x7e,
0x8d, 0x1a, 0xd7, 0x59, 0x33, 0x1b, 0xc6, 0xed, 0xa8, 0xd9, 0xf8, 0x4a, 0x0e, 0x2f, 0x6b, 0x39,
0x8c, 0xfa, 0xdc, 0x30, 0xff, 0x21, 0x34, 0x8c, 0x94, 0x2e, 0x2d, 0x40, 0xc5, 0xf4, 0x34, 0x2d,
0x40, 0x25, 0x19, 0x60, 0xee, 0x0d, 0xea, 0xc7, 0x65, 0x57, 0xb3, 0x7e, 0x44, 0xd6, 0x57, 0xd6,
0xd3, 0xad, 0x8f, 0xfd, 0x51, 0xfa, 0x82, 0x3d, 0xa5, 0xa7, 0x69, 0xe6, 0x55, 0x7e, 0xe6, 0x0d,
0xe6, 0x6f, 0xfd, 0xf5, 0x62, 0x19, 0x55, 0xb6, 0x87, 0x28, 0xba, 0x22, 0x2f, 0xe1, 0x33, 0x00,
0x87, 0x69, 0x34, 0xde, 0xf1, 0xf9, 0x28, 0x0a, 0x33, 0x5d, 0x9b, 0x5d, 0x57, 0x67, 0xfa, 0xcb,
0xb8, 0xb3, 0x66, 0x4f, 0x0d, 0x7f, 0xdc, 0xca, 0x84, 0x50, 0xcc, 0x35, 0xf3, 0x46, 0x5b, 0x2f,
0x48, 0xc9, 0xad, 0xf6, 0x6d, 0x07, 0xbd, 0xeb, 0x2c, 0xa2, 0xaa, 0xbd, 0xeb, 0x42, 0xb0, 0x56,
0xab, 0xbd, 0x92, 0xf0, 0xeb, 0x01, 0xd4, 0xb3, 0x10, 0xdd, 0xa5, 0x2c, 0x2d, 0xcf, 0x0a, 0xe8,
0x69, 0xab, 0x58, 0x08, 0x9c, 0xb9, 0x2d, 0x5a, 0x2a, 0x60, 0x8b, 0xb8, 0x54, 0x14, 0x0d, 0x0b,
0x60, 0x4d, 0x0c, 0x50, 0x9b, 0x78, 0xba, 0x80, 0x55, 0x33, 0x29, 0x09, 0x5e, 0x69, 0x69, 0x2e,
0x8d, 0xfd, 0x58, 0xe7, 0x6c, 0xe4, 0x56, 0x71, 0xf9, 0x8b, 0xaa, 0x79, 0x04, 0xab, 0x85, 0xc0,
0x85, 0x16, 0xe9, 0x59, 0xf1, 0x22, 0x2d, 0xd2, 0x33, 0x63, 0x1e, 0xee, 0x45, 0xea, 0x72, 0xc5,
0x05, 0xec, 0x32, 0x39, 0x0b, 0xd2, 0xde, 0xc9, 0x07, 0xce, 0xe6, 0xd1, 0x3c, 0xfd, 0xa3, 0xda,
0xa7, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x2f, 0xeb, 0x5e, 0xe3, 0x83, 0x4d, 0x00, 0x00,
0x55, 0x77, 0x75, 0xf7, 0x7c, 0xf4, 0xe9, 0x9e, 0x99, 0x9e, 0x3b, 0xe3, 0x99, 0x76, 0xef, 0xae,
0xd7, 0x5b, 0xb1, 0xd6, 0xce, 0xb0, 0xd8, 0xde, 0x49, 0xb2, 0xda, 0xec, 0x42, 0x82, 0x3d, 0x1e,
0x7b, 0x9c, 0xcc, 0xda, 0x93, 0x1a, 0x3b, 0x86, 0x04, 0xd4, 0xa9, 0xe9, 0xbe, 0xd3, 0x53, 0x71,
0x77, 0x55, 0xa7, 0xaa, 0x7a, 0xc6, 0x9d, 0xc5, 0x52, 0x20, 0x08, 0xf1, 0x40, 0x84, 0x10, 0xbc,
0x04, 0x09, 0x21, 0x05, 0x09, 0x85, 0x3f, 0x00, 0x5e, 0x02, 0x12, 0x0f, 0xbc, 0x04, 0x09, 0xf1,
0x90, 0xa7, 0x88, 0x47, 0x78, 0x01, 0xc4, 0x0b, 0x12, 0xaf, 0x08, 0x9d, 0x73, 0x3f, 0xea, 0xde,
0xaa, 0x6a, 0x8f, 0xf3, 0x01, 0x6f, 0x7d, 0x7f, 0xf7, 0xd4, 0xfd, 0x3c, 0x5f, 0xf7, 0xdc, 0x73,
0x1b, 0xea, 0xf1, 0xb8, 0x77, 0x63, 0x1c, 0x47, 0x69, 0xc4, 0xe6, 0x86, 0x61, 0x3c, 0xee, 0x75,
0x5e, 0x1f, 0x44, 0xd1, 0x60, 0xc8, 0x6f, 0xfa, 0xe3, 0xe0, 0xa6, 0x1f, 0x86, 0x51, 0xea, 0xa7,
0x41, 0x14, 0x26, 0x82, 0xc8, 0xfd, 0x1a, 0x2c, 0xdf, 0xe7, 0xe1, 0x21, 0xe7, 0x7d, 0x8f, 0x7f,
0x63, 0xc2, 0x93, 0x94, 0xfd, 0x02, 0xac, 0xfa, 0xfc, 0x9b, 0x9c, 0xf7, 0xbb, 0x63, 0x3f, 0x49,
0xc6, 0x27, 0xb1, 0x9f, 0xf0, 0xb6, 0x73, 0xc5, 0xb9, 0xde, 0xf4, 0x5a, 0xa2, 0xe2, 0x40, 0xe3,
0xec, 0x2d, 0x68, 0x26, 0x48, 0xca, 0xc3, 0x34, 0x8e, 0xc6, 0xd3, 0x76, 0x85, 0xe8, 0x1a, 0x88,
0xed, 0x0a, 0xc8, 0x1d, 0xc2, 0x8a, 0xee, 0x21, 0x19, 0x47, 0x61, 0xc2, 0xd9, 0x2d, 0x58, 0xef,
0x05, 0xe3, 0x13, 0x1e, 0x77, 0xe9, 0xe3, 0x51, 0xc8, 0x47, 0x51, 0x18, 0xf4, 0xda, 0xce, 0x95,
0xea, 0xf5, 0xba, 0xc7, 0x44, 0x1d, 0x7e, 0xf1, 0x91, 0xac, 0x61, 0xd7, 0x60, 0x85, 0x87, 0x02,
0xe7, 0x7d, 0xfa, 0x4a, 0x76, 0xb5, 0x9c, 0xc1, 0xf8, 0x81, 0xfb, 0xf7, 0x0e, 0xac, 0x3e, 0x08,
0x83, 0xf4, 0xa9, 0x3f, 0x1c, 0xf2, 0x54, 0xcd, 0xe9, 0x1a, 0xac, 0x9c, 0x11, 0x40, 0x73, 0x3a,
0x8b, 0xe2, 0xbe, 0x9c, 0xd1, 0xb2, 0x80, 0x0f, 0x24, 0x3a, 0x73, 0x64, 0x95, 0x99, 0x23, 0x2b,
0x5d, 0xae, 0xea, 0x8c, 0xe5, 0xba, 0x06, 0x2b, 0x31, 0xef, 0x45, 0xa7, 0x3c, 0x9e, 0x76, 0xcf,
0x82, 0xb0, 0x1f, 0x9d, 0xb5, 0x6b, 0x57, 0x9c, 0xeb, 0x73, 0xde, 0xb2, 0x82, 0x9f, 0x12, 0xea,
0xae, 0x03, 0x33, 0x67, 0x21, 0xd6, 0xcd, 0x1d, 0xc0, 0xda, 0x93, 0x70, 0x18, 0xf5, 0x9e, 0xfd,
0x94, 0xb3, 0x2b, 0xe9, 0xbe, 0x52, 0xda, 0xfd, 0x06, 0xac, 0xdb, 0x1d, 0xc9, 0x01, 0x70, 0xb8,
0xb8, 0x73, 0xe2, 0x87, 0x03, 0xae, 0x9a, 0x54, 0x43, 0xf8, 0x24, 0xb4, 0x7a, 0x93, 0x38, 0xe6,
0x61, 0x61, 0x0c, 0x2b, 0x12, 0xd7, 0x83, 0x78, 0x0b, 0x9a, 0x21, 0x3f, 0xcb, 0xc8, 0x24, 0xcb,
0x84, 0xfc, 0x4c, 0x91, 0xb8, 0x6d, 0xd8, 0xc8, 0x77, 0x23, 0x07, 0xf0, 0xdd, 0x0a, 0x34, 0x1e,
0xc7, 0x7e, 0x98, 0xf8, 0x3d, 0xe4, 0x62, 0xd6, 0x86, 0x85, 0xf4, 0x79, 0xf7, 0xc4, 0x4f, 0x4e,
0xa8, 0xbb, 0xba, 0xa7, 0x8a, 0x6c, 0x03, 0xe6, 0xfd, 0x51, 0x34, 0x09, 0x53, 0xea, 0xa0, 0xea,
0xc9, 0x12, 0x7b, 0x07, 0x56, 0xc3, 0xc9, 0xa8, 0xdb, 0x8b, 0xc2, 0xe3, 0x20, 0x1e, 0x09, 0x59,
0xa0, 0xfd, 0x9a, 0xf3, 0x8a, 0x15, 0xec, 0x32, 0xc0, 0x11, 0xae, 0x83, 0xe8, 0xa2, 0x46, 0x5d,
0x18, 0x08, 0x73, 0xa1, 0x29, 0x4b, 0x3c, 0x18, 0x9c, 0xa4, 0xed, 0x39, 0x6a, 0xc8, 0xc2, 0xb0,
0x8d, 0x34, 0x18, 0xf1, 0x6e, 0x92, 0xfa, 0xa3, 0x71, 0x7b, 0x9e, 0x46, 0x63, 0x20, 0x54, 0x1f,
0xa5, 0xfe, 0xb0, 0x7b, 0xcc, 0x79, 0xd2, 0x5e, 0x90, 0xf5, 0x1a, 0x61, 0x6f, 0xc3, 0x72, 0x9f,
0x27, 0x69, 0xd7, 0xef, 0xf7, 0x63, 0x9e, 0x24, 0x3c, 0x69, 0x2f, 0x12, 0x37, 0xe6, 0x50, 0x5c,
0xb5, 0xfb, 0x3c, 0x35, 0x56, 0x27, 0x91, 0xbb, 0xe3, 0xee, 0x03, 0x33, 0xe0, 0xbb, 0x3c, 0xf5,
0x83, 0x61, 0xc2, 0xde, 0x83, 0x66, 0x6a, 0x10, 0x93, 0xf4, 0x35, 0xb6, 0xd9, 0x0d, 0x52, 0x1b,
0x37, 0x8c, 0x0f, 0x3c, 0x8b, 0xce, 0xbd, 0x0f, 0x8b, 0xf7, 0x38, 0xdf, 0x0f, 0x46, 0x41, 0xca,
0x36, 0x60, 0xee, 0x38, 0x78, 0xce, 0xc5, 0x66, 0x57, 0xf7, 0x2e, 0x78, 0xa2, 0xc8, 0x3a, 0xb0,
0x30, 0xe6, 0x71, 0x8f, 0xab, 0xe5, 0xdf, 0xbb, 0xe0, 0x29, 0xe0, 0xce, 0x02, 0xcc, 0x0d, 0xf1,
0x63, 0xf7, 0xfb, 0x15, 0x68, 0x1c, 0xf2, 0x50, 0x33, 0x11, 0x83, 0x1a, 0x4e, 0x49, 0x32, 0x0e,
0xfd, 0x66, 0x6f, 0x42, 0x83, 0xa6, 0x99, 0xa4, 0x71, 0x10, 0x0e, 0xa8, 0xb1, 0xba, 0x07, 0x08,
0x1d, 0x12, 0xc2, 0x5a, 0x50, 0xf5, 0x47, 0x29, 0xed, 0x60, 0xd5, 0xc3, 0x9f, 0xc8, 0x60, 0x63,
0x7f, 0x3a, 0x42, 0x5e, 0xd4, 0xbb, 0xd6, 0xf4, 0x1a, 0x12, 0xdb, 0xc3, 0x6d, 0xbb, 0x01, 0x6b,
0x26, 0x89, 0x6a, 0x7d, 0x8e, 0x5a, 0x5f, 0x35, 0x28, 0x65, 0x27, 0xd7, 0x60, 0x45, 0xd1, 0xc7,
0x62, 0xb0, 0xb4, 0x8f, 0x75, 0x6f, 0x59, 0xc2, 0x6a, 0x0a, 0xd7, 0xa1, 0x75, 0x1c, 0x84, 0xfe,
0xb0, 0xdb, 0x1b, 0xa6, 0xa7, 0xdd, 0x3e, 0x1f, 0xa6, 0x3e, 0xed, 0xe8, 0x9c, 0xb7, 0x4c, 0xf8,
0xce, 0x30, 0x3d, 0xbd, 0x8b, 0x28, 0x7b, 0x07, 0xea, 0xc7, 0x9c, 0x77, 0x69, 0x25, 0xda, 0x8b,
0x57, 0x9c, 0xeb, 0x8d, 0xed, 0x15, 0xb9, 0xf4, 0x6a, 0x75, 0xbd, 0xc5, 0x63, 0xf9, 0xcb, 0xfd,
0x63, 0x07, 0x9a, 0x62, 0xa9, 0xa4, 0x0a, 0xbd, 0x0a, 0x4b, 0x6a, 0x44, 0x3c, 0x8e, 0xa3, 0x58,
0xb2, 0xbf, 0x0d, 0xb2, 0x2d, 0x68, 0x29, 0x60, 0x1c, 0xf3, 0x60, 0xe4, 0x0f, 0xb8, 0x94, 0xb7,
0x02, 0xce, 0xb6, 0xb3, 0x16, 0xe3, 0x68, 0x92, 0x0a, 0x25, 0xd6, 0xd8, 0x6e, 0xca, 0x41, 0x79,
0x88, 0x79, 0x36, 0x89, 0xfb, 0x1d, 0x07, 0x18, 0x0e, 0xeb, 0x71, 0x24, 0xaa, 0xe5, 0x2a, 0xe4,
0x77, 0xc0, 0x79, 0xe5, 0x1d, 0xa8, 0xcc, 0xda, 0x81, 0xab, 0x30, 0x4f, 0x5d, 0xa2, 0xac, 0x56,
0x0b, 0xc3, 0x92, 0x75, 0xee, 0xf7, 0x1c, 0x68, 0xa2, 0xe6, 0x08, 0xf9, 0xf0, 0x20, 0x0a, 0xc2,
0x94, 0xdd, 0x02, 0x76, 0x3c, 0x09, 0xfb, 0x41, 0x38, 0xe8, 0xa6, 0xcf, 0x83, 0x7e, 0xf7, 0x68,
0x8a, 0x4d, 0xd0, 0x78, 0xf6, 0x2e, 0x78, 0x25, 0x75, 0xec, 0x1d, 0x68, 0x59, 0x68, 0x92, 0xc6,
0x62, 0x54, 0x7b, 0x17, 0xbc, 0x42, 0x0d, 0xca, 0x7f, 0x34, 0x49, 0xc7, 0x93, 0xb4, 0x1b, 0x84,
0x7d, 0xfe, 0x9c, 0xd6, 0x6c, 0xc9, 0xb3, 0xb0, 0x3b, 0xcb, 0xd0, 0x34, 0xbf, 0x73, 0x3f, 0x07,
0xad, 0x7d, 0x54, 0x0c, 0x61, 0x10, 0x0e, 0x6e, 0x0b, 0xe9, 0x45, 0x6d, 0x35, 0x9e, 0x1c, 0x3d,
0xe3, 0x53, 0xb9, 0x8f, 0xb2, 0x84, 0x22, 0x71, 0x12, 0x25, 0xa9, 0x5c, 0x17, 0xfa, 0xed, 0xfe,
0x8b, 0x03, 0x2b, 0xb8, 0xe8, 0x1f, 0xf9, 0xe1, 0x54, 0xad, 0xf8, 0x3e, 0x34, 0xb1, 0xa9, 0xc7,
0xd1, 0x6d, 0xa1, 0xf3, 0x84, 0x2c, 0x5f, 0x97, 0x8b, 0x94, 0xa3, 0xbe, 0x61, 0x92, 0xa2, 0x99,
0x9e, 0x7a, 0xd6, 0xd7, 0x28, 0x74, 0xa9, 0x1f, 0x0f, 0x78, 0x4a, 0xda, 0x50, 0x6a, 0x47, 0x10,
0xd0, 0x4e, 0x14, 0x1e, 0xb3, 0x2b, 0xd0, 0x4c, 0xfc, 0xb4, 0x3b, 0xe6, 0x31, 0xad, 0x1a, 0x09,
0x4e, 0xd5, 0x83, 0xc4, 0x4f, 0x0f, 0x78, 0x7c, 0x67, 0x9a, 0xf2, 0xce, 0xe7, 0x61, 0xb5, 0xd0,
0x0b, 0xca, 0x6a, 0x36, 0x45, 0xfc, 0xc9, 0xd6, 0x61, 0xee, 0xd4, 0x1f, 0x4e, 0xb8, 0x54, 0xd2,
0xa2, 0xf0, 0x41, 0xe5, 0x7d, 0xc7, 0x7d, 0x1b, 0x5a, 0xd9, 0xb0, 0x25, 0xd3, 0x33, 0xa8, 0xe1,
0x0a, 0xca, 0x06, 0xe8, 0xb7, 0xfb, 0x5b, 0x8e, 0x20, 0xdc, 0x89, 0x02, 0xad, 0xf0, 0x90, 0x10,
0xf5, 0xa2, 0x22, 0xc4, 0xdf, 0x33, 0x0d, 0xc2, 0xcf, 0x3e, 0x59, 0xf7, 0x1a, 0xac, 0x1a, 0x43,
0x78, 0xc9, 0x60, 0xbf, 0xe3, 0xc0, 0xea, 0x43, 0x7e, 0x26, 0x77, 0x5d, 0x8d, 0xf6, 0x7d, 0xa8,
0xa5, 0xd3, 0xb1, 0x70, 0xb2, 0x96, 0xb7, 0xaf, 0xca, 0x4d, 0x2b, 0xd0, 0xdd, 0x90, 0xc5, 0xc7,
0xd3, 0x31, 0xf7, 0xe8, 0x0b, 0xf7, 0x73, 0xd0, 0x30, 0x40, 0xb6, 0x09, 0x6b, 0x4f, 0x1f, 0x3c,
0x7e, 0xb8, 0x7b, 0x78, 0xd8, 0x3d, 0x78, 0x72, 0xe7, 0x8b, 0xbb, 0xbf, 0xd6, 0xdd, 0xbb, 0x7d,
0xb8, 0xd7, 0xba, 0xc0, 0x36, 0x80, 0x3d, 0xdc, 0x3d, 0x7c, 0xbc, 0x7b, 0xd7, 0xc2, 0x1d, 0xb7,
0x03, 0xed, 0x87, 0xfc, 0xec, 0x69, 0x90, 0x86, 0x3c, 0x49, 0xec, 0xde, 0xdc, 0x1b, 0xc0, 0xcc,
0x21, 0xc8, 0x59, 0xb5, 0x61, 0x41, 0x5a, 0x1c, 0x65, 0x70, 0x65, 0xd1, 0x7d, 0x1b, 0xd8, 0x61,
0x30, 0x08, 0x3f, 0xe2, 0x49, 0xe2, 0x0f, 0xb4, 0x2a, 0x68, 0x41, 0x75, 0x94, 0x0c, 0xa4, 0x06,
0xc0, 0x9f, 0xee, 0xa7, 0x60, 0xcd, 0xa2, 0x93, 0x0d, 0xbf, 0x0e, 0xf5, 0x24, 0x18, 0x84, 0x7e,
0x3a, 0x89, 0xb9, 0x6c, 0x3a, 0x03, 0xdc, 0x7b, 0xb0, 0xfe, 0x65, 0x1e, 0x07, 0xc7, 0xd3, 0xf3,
0x9a, 0xb7, 0xdb, 0xa9, 0xe4, 0xdb, 0xd9, 0x85, 0x8b, 0xb9, 0x76, 0x64, 0xf7, 0x82, 0x11, 0xe5,
0x76, 0x2d, 0x7a, 0xa2, 0x60, 0x88, 0x65, 0xc5, 0x14, 0x4b, 0xf7, 0x09, 0xb0, 0x9d, 0x28, 0x0c,
0x79, 0x2f, 0x3d, 0xe0, 0x3c, 0xce, 0x3c, 0xe7, 0x8c, 0xeb, 0x1a, 0xdb, 0x9b, 0x72, 0x1f, 0xf3,
0xb2, 0x2e, 0xd9, 0x91, 0x41, 0x6d, 0xcc, 0xe3, 0x11, 0x35, 0xbc, 0xe8, 0xd1, 0x6f, 0xf7, 0x22,
0xac, 0x59, 0xcd, 0x4a, 0xa7, 0xe7, 0x5d, 0xb8, 0x78, 0x37, 0x48, 0x7a, 0xc5, 0x0e, 0xdb, 0xb0,
0x30, 0x9e, 0x1c, 0x75, 0x33, 0x99, 0x52, 0x45, 0xf4, 0x05, 0xf2, 0x9f, 0xc8, 0xc6, 0x7e, 0xd7,
0x81, 0xda, 0xde, 0xe3, 0xfd, 0x1d, 0xd6, 0x81, 0xc5, 0x20, 0xec, 0x45, 0x23, 0x54, 0xbb, 0x62,
0xd2, 0xba, 0x3c, 0x53, 0x56, 0x5e, 0x87, 0x3a, 0x69, 0x6b, 0x74, 0x6f, 0xa4, 0x93, 0x9b, 0x01,
0xe8, 0x5a, 0xf1, 0xe7, 0xe3, 0x20, 0x26, 0xdf, 0x49, 0x79, 0x44, 0x35, 0xd2, 0x88, 0xc5, 0x0a,
0xf7, 0x7f, 0x6a, 0xb0, 0x20, 0x75, 0x35, 0xf5, 0xd7, 0x4b, 0x83, 0x53, 0x2e, 0x47, 0x22, 0x4b,
0x68, 0xe5, 0x62, 0x3e, 0x8a, 0x52, 0xde, 0xb5, 0xb6, 0xc1, 0x06, 0x91, 0xaa, 0x27, 0x1a, 0xea,
0x8e, 0x51, 0xeb, 0xd3, 0xc8, 0xea, 0x9e, 0x0d, 0xe2, 0x62, 0x21, 0xd0, 0x0d, 0xfa, 0x34, 0xa6,
0x9a, 0xa7, 0x8a, 0xb8, 0x12, 0x3d, 0x7f, 0xec, 0xf7, 0x82, 0x74, 0x2a, 0x85, 0x5b, 0x97, 0xb1,
0xed, 0x61, 0xd4, 0xf3, 0x87, 0xdd, 0x23, 0x7f, 0xe8, 0x87, 0x3d, 0x2e, 0xfd, 0x37, 0x1b, 0x44,
0x17, 0x4d, 0x0e, 0x49, 0x91, 0x09, 0x37, 0x2e, 0x87, 0xa2, 0xab, 0xd7, 0x8b, 0x46, 0xa3, 0x20,
0x45, 0xcf, 0x8e, 0xac, 0x7e, 0xd5, 0x33, 0x10, 0x9a, 0x89, 0x28, 0x9d, 0x89, 0xd5, 0xab, 0x8b,
0xde, 0x2c, 0x10, 0x5b, 0x41, 0xd7, 0x01, 0x15, 0xd2, 0xb3, 0xb3, 0x36, 0x88, 0x56, 0x32, 0x04,
0xf7, 0x61, 0x12, 0x26, 0x3c, 0x4d, 0x87, 0xbc, 0xaf, 0x07, 0xd4, 0x20, 0xb2, 0x62, 0x05, 0xbb,
0x05, 0x6b, 0xc2, 0xd9, 0x4c, 0xfc, 0x34, 0x4a, 0x4e, 0x82, 0xa4, 0x9b, 0xa0, 0xdb, 0xd6, 0x24,
0xfa, 0xb2, 0x2a, 0xf6, 0x3e, 0x6c, 0xe6, 0xe0, 0x98, 0xf7, 0x78, 0x70, 0xca, 0xfb, 0xed, 0x25,
0xfa, 0x6a, 0x56, 0x35, 0xbb, 0x02, 0x0d, 0xf4, 0xb1, 0x27, 0xe3, 0xbe, 0x8f, 0x76, 0x78, 0x99,
0xf6, 0xc1, 0x84, 0xd8, 0xbb, 0xb0, 0x34, 0xe6, 0xc2, 0x58, 0x9e, 0xa4, 0xc3, 0x5e, 0xd2, 0x5e,
0x21, 0x4b, 0xd6, 0x90, 0xc2, 0x84, 0x9c, 0xeb, 0xd9, 0x14, 0xc8, 0x94, 0xbd, 0x84, 0x9c, 0x2d,
0x7f, 0xda, 0x6e, 0x11, 0xbb, 0x65, 0x00, 0xc9, 0x48, 0x1c, 0x9c, 0xfa, 0x29, 0x6f, 0xaf, 0x12,
0x6f, 0xa9, 0xa2, 0xfb, 0x67, 0x0e, 0xac, 0xed, 0x07, 0x49, 0x2a, 0x99, 0x50, 0xab, 0xe3, 0x37,
0xa1, 0x21, 0xd8, 0xaf, 0x1b, 0x85, 0xc3, 0xa9, 0xe4, 0x48, 0x10, 0xd0, 0xa3, 0x70, 0x38, 0x65,
0x9f, 0x80, 0xa5, 0x20, 0x34, 0x49, 0x84, 0x0c, 0x37, 0x15, 0x48, 0x44, 0x6f, 0x42, 0x63, 0x3c,
0x39, 0x1a, 0x06, 0x3d, 0x41, 0x52, 0x15, 0xad, 0x08, 0x88, 0x08, 0xd0, 0x49, 0x12, 0x23, 0x11,
0x14, 0x35, 0xa2, 0x68, 0x48, 0x0c, 0x49, 0xdc, 0x3b, 0xb0, 0x6e, 0x0f, 0x50, 0x2a, 0xab, 0x2d,
0x58, 0x94, 0xbc, 0x9d, 0xb4, 0x1b, 0xb4, 0x3e, 0xcb, 0x72, 0x7d, 0x24, 0xa9, 0xa7, 0xeb, 0xdd,
0xbf, 0xa8, 0xc1, 0x9a, 0x44, 0x77, 0x86, 0x51, 0xc2, 0x0f, 0x27, 0xa3, 0x91, 0x1f, 0x97, 0x08,
0x8d, 0x73, 0x8e, 0xd0, 0x54, 0x6c, 0xa1, 0x41, 0x56, 0x3e, 0xf1, 0x83, 0x50, 0x78, 0x78, 0x42,
0xe2, 0x0c, 0x84, 0x5d, 0x87, 0x95, 0xde, 0x30, 0x4a, 0x84, 0xd7, 0x63, 0x1e, 0x9f, 0xf2, 0x70,
0x51, 0xc8, 0xe7, 0xca, 0x84, 0xdc, 0x14, 0xd2, 0xf9, 0x9c, 0x90, 0xba, 0xd0, 0xc4, 0x46, 0xb9,
0xd2, 0x39, 0x0b, 0xc2, 0x0b, 0x33, 0x31, 0x1c, 0x4f, 0x5e, 0x24, 0x84, 0xfc, 0xad, 0x94, 0x09,
0x04, 0x9e, 0xce, 0x50, 0xa7, 0x19, 0xd4, 0x75, 0x29, 0x10, 0xc5, 0x2a, 0x76, 0x0f, 0x40, 0xf4,
0x45, 0x66, 0x1c, 0xc8, 0x8c, 0xbf, 0x6d, 0xef, 0x88, 0xb9, 0xf6, 0x37, 0xb0, 0x30, 0x89, 0x39,
0x19, 0x72, 0xe3, 0x4b, 0xf7, 0x63, 0x68, 0x18, 0x55, 0xec, 0x22, 0xac, 0xee, 0x3c, 0x7a, 0x74,
0xb0, 0xeb, 0xdd, 0x7e, 0xfc, 0xe0, 0xcb, 0xbb, 0xdd, 0x9d, 0xfd, 0x47, 0x87, 0xbb, 0xad, 0x0b,
0x08, 0xef, 0x3f, 0xda, 0xb9, 0xbd, 0xdf, 0xbd, 0xf7, 0xc8, 0xdb, 0x51, 0xb0, 0x83, 0x36, 0xde,
0xdb, 0xfd, 0xe8, 0xd1, 0xe3, 0x5d, 0x0b, 0xaf, 0xb0, 0x16, 0x34, 0xef, 0x78, 0xbb, 0xb7, 0x77,
0xf6, 0x24, 0x52, 0x65, 0xeb, 0xd0, 0xba, 0xf7, 0xe4, 0xe1, 0xdd, 0x07, 0x0f, 0xef, 0x77, 0x77,
0x6e, 0x3f, 0xdc, 0xd9, 0xdd, 0xdf, 0xbd, 0xdb, 0xaa, 0xb9, 0x7f, 0xe7, 0xc0, 0x45, 0x1a, 0x65,
0x3f, 0x2f, 0x10, 0x57, 0xa0, 0xd1, 0x8b, 0xa2, 0x31, 0x47, 0xfd, 0xad, 0x55, 0xb4, 0x09, 0x21,
0xb3, 0x0b, 0x85, 0x78, 0x1c, 0xc5, 0x3d, 0x2e, 0xe5, 0x01, 0x08, 0xba, 0x87, 0x08, 0x32, 0xbb,
0xdc, 0x4e, 0x41, 0x21, 0xc4, 0xa1, 0x21, 0x30, 0x41, 0xb2, 0x01, 0xf3, 0x47, 0x31, 0xf7, 0x7b,
0x27, 0x52, 0x12, 0x64, 0x89, 0x7d, 0x32, 0x73, 0xc8, 0x7b, 0xb8, 0xda, 0x43, 0xde, 0x27, 0x0e,
0x59, 0xf4, 0x56, 0x24, 0xbe, 0x23, 0x61, 0xf7, 0x00, 0x36, 0xf2, 0x33, 0x90, 0x12, 0xf3, 0x9e,
0x21, 0x31, 0xc2, 0x37, 0xee, 0xcc, 0xde, 0x1f, 0x43, 0x7a, 0xfe, 0xdd, 0x81, 0x1a, 0x9a, 0xcf,
0xd9, 0xa6, 0xd6, 0xf4, 0x88, 0xaa, 0x96, 0x47, 0x44, 0xc1, 0x03, 0x3c, 0x53, 0x08, 0x85, 0x2a,
0x8c, 0x8e, 0x81, 0x64, 0xf5, 0x31, 0xef, 0x9d, 0xd2, 0x9c, 0x74, 0x3d, 0x22, 0xc8, 0xf2, 0xe8,
0x78, 0xd2, 0xd7, 0x92, 0xe5, 0x55, 0x59, 0xd5, 0xd1, 0x97, 0x0b, 0x59, 0x1d, 0x7d, 0xd7, 0x86,
0x85, 0x20, 0x3c, 0x8a, 0x26, 0x61, 0x9f, 0x58, 0x7c, 0xd1, 0x53, 0x45, 0x54, 0x95, 0x63, 0x12,
0xbd, 0x60, 0xa4, 0x18, 0x3a, 0x03, 0x5c, 0x86, 0x07, 0x93, 0x84, 0xdc, 0x05, 0xed, 0x05, 0xbe,
0x07, 0xab, 0x06, 0x26, 0x57, 0xf3, 0x2d, 0x98, 0x1b, 0x23, 0x20, 0x97, 0x52, 0x29, 0x67, 0xf2,
0x33, 0x44, 0x8d, 0xdb, 0x82, 0xe5, 0xfb, 0x3c, 0x7d, 0x10, 0x1e, 0x47, 0xaa, 0xa5, 0x1f, 0x57,
0x61, 0x45, 0x43, 0xb2, 0xa1, 0xeb, 0xb0, 0x12, 0xf4, 0x79, 0x98, 0x06, 0xe9, 0xb4, 0x6b, 0x9d,
0x7f, 0xf2, 0x30, 0xfa, 0x67, 0xfe, 0x30, 0xf0, 0x13, 0xe9, 0x01, 0x88, 0x02, 0xdb, 0x86, 0x75,
0x34, 0x1e, 0xca, 0x1e, 0xe8, 0x2d, 0x16, 0xc7, 0xb0, 0xd2, 0x3a, 0x14, 0x6f, 0xc4, 0xa5, 0xfe,
0xd6, 0x9f, 0x08, 0x3f, 0xa5, 0xac, 0x0a, 0x57, 0x4d, 0xb4, 0x84, 0x53, 0x9e, 0x13, 0x06, 0x46,
0x03, 0x85, 0x10, 0xd0, 0xbc, 0x50, 0x3e, 0xf9, 0x10, 0x90, 0x11, 0x46, 0x5a, 0x2c, 0x84, 0x91,
0x50, 0x39, 0x4d, 0xc3, 0x1e, 0xef, 0x77, 0xd3, 0xa8, 0x4b, 0x4a, 0x94, 0x76, 0x67, 0xd1, 0xcb,
0xc3, 0x14, 0xf0, 0xe2, 0x49, 0x1a, 0xf2, 0x94, 0xf4, 0xcc, 0xa2, 0xa7, 0x8a, 0x28, 0x3f, 0x44,
0x22, 0x4c, 0x42, 0xdd, 0x93, 0x25, 0x74, 0x34, 0x27, 0x71, 0x90, 0xb4, 0x9b, 0x84, 0xd2, 0x6f,
0xf6, 0x69, 0xb8, 0x78, 0xc4, 0x93, 0xb4, 0x7b, 0xc2, 0xfd, 0x3e, 0x8f, 0x69, 0xf7, 0x45, 0x74,
0x4a, 0xd8, 0xef, 0xf2, 0x4a, 0xec, 0xfb, 0x94, 0xc7, 0x49, 0x10, 0x85, 0x64, 0xb9, 0xeb, 0x9e,
0x2a, 0xba, 0xdf, 0x24, 0x7f, 0x58, 0xc7, 0xcd, 0x9e, 0x90, 0x31, 0x67, 0xaf, 0x41, 0x5d, 0xcc,
0x31, 0x39, 0xf1, 0xa5, 0x8b, 0xbe, 0x48, 0xc0, 0xe1, 0x89, 0x8f, 0x1a, 0xc1, 0x5a, 0x36, 0x11,
0x88, 0x6c, 0x10, 0xb6, 0x27, 0x56, 0xed, 0x2a, 0x2c, 0xab, 0x88, 0x5c, 0xd2, 0x1d, 0xf2, 0xe3,
0x54, 0x1d, 0xaf, 0xc3, 0xc9, 0x08, 0xbb, 0x4b, 0xf6, 0xf9, 0x71, 0xea, 0x3e, 0x84, 0x55, 0x29,
0xc3, 0x8f, 0xc6, 0x5c, 0x75, 0xfd, 0xd9, 0x32, 0xeb, 0xd6, 0xd8, 0x5e, 0xb3, 0x85, 0x9e, 0x62,
0x04, 0x39, 0x93, 0xe7, 0x7a, 0xc0, 0x4c, 0x9d, 0x20, 0x1b, 0x94, 0x26, 0x46, 0x1d, 0xe2, 0xe5,
0x74, 0x2c, 0x0c, 0xd7, 0x27, 0x99, 0xf4, 0x7a, 0xa8, 0x09, 0x84, 0x06, 0x54, 0x45, 0xf7, 0xfb,
0x0e, 0xac, 0x51, 0x6b, 0xca, 0x3e, 0xeb, 0x93, 0xdf, 0xab, 0x0f, 0xb3, 0xd9, 0x33, 0x03, 0x1b,
0xeb, 0x30, 0x67, 0xea, 0x5a, 0x51, 0xf8, 0xc9, 0xcf, 0xb2, 0xb5, 0xc2, 0x59, 0xf6, 0xc7, 0x0e,
0xac, 0x0a, 0x65, 0x98, 0xfa, 0xe9, 0x24, 0x91, 0xd3, 0xff, 0x25, 0x58, 0x12, 0x76, 0x4a, 0x8a,
0x93, 0x1c, 0xe8, 0xba, 0x96, 0x7c, 0x42, 0x05, 0xf1, 0xde, 0x05, 0xcf, 0x26, 0x66, 0x9f, 0x87,
0xa6, 0x19, 0x56, 0xa5, 0x31, 0x37, 0xb6, 0x2f, 0xa9, 0x59, 0x16, 0x38, 0x67, 0xef, 0x82, 0x67,
0x7d, 0xc0, 0x3e, 0x24, 0x67, 0x23, 0xec, 0x52, 0xb3, 0x32, 0x30, 0x75, 0xa9, 0x44, 0x81, 0xeb,
0xcf, 0x0d, 0xf2, 0x3b, 0x8b, 0x30, 0x2f, 0xbc, 0x4b, 0xf7, 0x3e, 0x2c, 0x59, 0x23, 0xb5, 0xce,
0xe8, 0x4d, 0x71, 0x46, 0x2f, 0x84, 0x74, 0x2a, 0xc5, 0x90, 0x8e, 0xfb, 0xed, 0x2a, 0x30, 0xe4,
0xb6, 0xdc, 0x76, 0xa2, 0x7b, 0x1b, 0xf5, 0xad, 0xc3, 0x4a, 0xd3, 0x33, 0x21, 0x76, 0x03, 0x98,
0x51, 0x54, 0x51, 0x2f, 0x61, 0x37, 0x4a, 0x6a, 0x50, 0xc1, 0x49, 0xc3, 0x2a, 0x4d, 0xa0, 0x3c,
0x96, 0x89, 0x7d, 0x2b, 0xad, 0x43, 0xd3, 0x30, 0x9e, 0x24, 0x27, 0xe8, 0x7e, 0xab, 0xe3, 0x8c,
0x2a, 0xe7, 0x19, 0x64, 0xfe, 0x5c, 0x06, 0x59, 0xc8, 0x33, 0x88, 0xe9, 0x50, 0x2f, 0x5a, 0x0e,
0x35, 0x3a, 0x72, 0x23, 0x74, 0xff, 0xd2, 0x61, 0xaf, 0x3b, 0xc2, 0xde, 0xe5, 0xe9, 0xc5, 0x02,
0xd9, 0x16, 0xb4, 0xa4, 0x2b, 0x90, 0x79, 0xed, 0x40, 0x6b, 0x5c, 0xc0, 0x51, 0xf3, 0xe2, 0xc7,
0xa4, 0x01, 0xe8, 0x04, 0x33, 0xe7, 0x65, 0x80, 0xfb, 0x23, 0x07, 0x5a, 0xb8, 0x0b, 0x16, 0xa7,
0x7e, 0x00, 0x24, 0x28, 0xaf, 0xc8, 0xa8, 0x16, 0xed, 0xcf, 0xce, 0xa7, 0xef, 0x43, 0x9d, 0x1a,
0x8c, 0xc6, 0x3c, 0x94, 0x6c, 0xda, 0xb6, 0xd9, 0x34, 0xd3, 0x51, 0x7b, 0x17, 0xbc, 0x8c, 0xd8,
0x60, 0xd2, 0x7f, 0x72, 0xa0, 0x21, 0x87, 0xf9, 0x53, 0x9f, 0xd3, 0x3b, 0xb0, 0x88, 0xfc, 0x6a,
0x1c, 0x86, 0x75, 0x19, 0x6d, 0xcd, 0xc8, 0x4f, 0x27, 0x31, 0x1a, 0x57, 0xeb, 0x8c, 0x9e, 0x87,
0xd1, 0x52, 0x92, 0x3a, 0x4e, 0xba, 0x69, 0x30, 0xec, 0xaa, 0x5a, 0x79, 0xc7, 0x51, 0x56, 0x85,
0x5a, 0x29, 0x49, 0xfd, 0x01, 0x97, 0x46, 0x50, 0x14, 0xdc, 0x36, 0x6c, 0xc8, 0x09, 0xe5, 0x3c,
0x4b, 0xf7, 0x6f, 0x9b, 0xb0, 0x59, 0xa8, 0xd2, 0x97, 0x84, 0xf2, 0xf0, 0x39, 0x0c, 0x46, 0x47,
0x91, 0x76, 0xc3, 0x1d, 0xf3, 0x5c, 0x6a, 0x55, 0xb1, 0x01, 0x5c, 0x54, 0xd6, 0x1e, 0xd7, 0x34,
0xb3, 0xed, 0x15, 0x72, 0x53, 0xde, 0xb5, 0x79, 0x20, 0xdf, 0xa1, 0xc2, 0x4d, 0xb9, 0x2e, 0x6f,
0x8f, 0x9d, 0x40, 0x5b, 0xbb, 0x15, 0xd2, 0x00, 0x18, 0xae, 0x07, 0xf6, 0xf5, 0xce, 0x39, 0x7d,
0x59, 0x6e, 0xaa, 0x37, 0xb3, 0x35, 0x36, 0x85, 0xcb, 0xaa, 0x8e, 0x34, 0x7c, 0xb1, 0xbf, 0xda,
0x2b, 0xcd, 0x8d, 0x5c, 0x6c, 0xbb, 0xd3, 0x73, 0x1a, 0x66, 0x5f, 0x87, 0x8d, 0x33, 0x3f, 0x48,
0xd5, 0xb0, 0x0c, 0x57, 0x69, 0x8e, 0xba, 0xdc, 0x3e, 0xa7, 0xcb, 0xa7, 0xe2, 0x63, 0xcb, 0xec,
0xcd, 0x68, 0xb1, 0xf3, 0x0f, 0x0e, 0x2c, 0xdb, 0xed, 0x20, 0x9b, 0x4a, 0x75, 0xa0, 0xd4, 0xa2,
0x72, 0x0d, 0x73, 0x70, 0xf1, 0x24, 0x5b, 0x29, 0x3b, 0xc9, 0x9a, 0xe7, 0xc7, 0xea, 0x79, 0x41,
0x9e, 0xda, 0xab, 0x05, 0x79, 0xe6, 0xca, 0x82, 0x3c, 0x9d, 0xff, 0x76, 0x80, 0x15, 0x79, 0x89,
0xdd, 0x17, 0x47, 0xe9, 0x90, 0x0f, 0xa5, 0x4e, 0xfa, 0xc5, 0x57, 0xe3, 0x47, 0xb5, 0x76, 0xea,
0x6b, 0x14, 0x0c, 0x53, 0xe9, 0x98, 0x0e, 0xd4, 0x92, 0x57, 0x56, 0x95, 0x0b, 0x3b, 0xd5, 0xce,
0x0f, 0x3b, 0xcd, 0x9d, 0x1f, 0x76, 0x9a, 0xcf, 0x87, 0x9d, 0x3a, 0xbf, 0xe3, 0xc0, 0x5a, 0xc9,
0xa6, 0xff, 0xfc, 0x26, 0x8e, 0xdb, 0x64, 0xe9, 0x82, 0x8a, 0xdc, 0x26, 0x13, 0xec, 0xfc, 0x26,
0x2c, 0x59, 0x8c, 0xfe, 0xf3, 0xeb, 0x3f, 0xef, 0x03, 0x0a, 0x3e, 0xb3, 0xb0, 0xce, 0x7f, 0x54,
0x80, 0x15, 0x85, 0xed, 0xff, 0x75, 0x0c, 0xc5, 0x75, 0xaa, 0x96, 0xac, 0xd3, 0xff, 0xa9, 0x1d,
0x78, 0x07, 0x56, 0x65, 0x46, 0x81, 0x11, 0x40, 0x11, 0x1c, 0x53, 0xac, 0x40, 0x2f, 0xd8, 0x8e,
0xf9, 0x2d, 0x5a, 0x37, 0xd1, 0x86, 0x31, 0xcc, 0x85, 0xfe, 0xdc, 0x0d, 0x58, 0x17, 0x19, 0x0a,
0x77, 0x44, 0x53, 0xca, 0xae, 0xfc, 0xa9, 0x03, 0x17, 0x73, 0x15, 0xd9, 0xbd, 0xa9, 0x30, 0x1d,
0xb6, 0x3d, 0xb1, 0x41, 0x1c, 0xbf, 0x94, 0x23, 0x63, 0xfc, 0x82, 0xdb, 0x8a, 0x15, 0xb8, 0x3e,
0x93, 0xb0, 0x48, 0x2f, 0x56, 0xbd, 0xac, 0xca, 0xdd, 0x14, 0x79, 0x14, 0x21, 0x1f, 0xe6, 0x06,
0x7e, 0x2c, 0x32, 0x1f, 0xcc, 0x8a, 0xec, 0xe2, 0xc5, 0x1e, 0xb2, 0x2a, 0xa2, 0x8f, 0x68, 0x99,
0x29, 0x7b, 0xbc, 0xa5, 0x75, 0xee, 0x5f, 0x3b, 0xc0, 0xbe, 0x34, 0xe1, 0xf1, 0x94, 0xee, 0x4f,
0x75, 0xa4, 0x67, 0x33, 0x1f, 0xe5, 0x98, 0x1f, 0x4f, 0x8e, 0xbe, 0xc8, 0xa7, 0xea, 0x96, 0xbd,
0x92, 0xdd, 0xb2, 0xbf, 0x01, 0x80, 0x87, 0x33, 0x7d, 0x29, 0x4b, 0xbe, 0x59, 0x38, 0x19, 0x89,
0x06, 0x4b, 0x2f, 0xc2, 0x6b, 0xe7, 0x5f, 0x84, 0xcf, 0x9d, 0x77, 0x11, 0xfe, 0x21, 0xac, 0x59,
0xe3, 0xd6, 0xdb, 0xaa, 0xae, 0x87, 0x9d, 0x97, 0x5c, 0x0f, 0xff, 0xa7, 0x03, 0xd5, 0xbd, 0x68,
0x6c, 0x46, 0x35, 0x1d, 0x3b, 0xaa, 0x29, 0x6d, 0x49, 0x57, 0x9b, 0x0a, 0xa9, 0x62, 0x2c, 0x90,
0x6d, 0xc1, 0xb2, 0x3f, 0x4a, 0xf1, 0x50, 0x7e, 0x1c, 0xc5, 0x67, 0x7e, 0xdc, 0x17, 0x7b, 0x7d,
0xa7, 0xd2, 0x76, 0xbc, 0x5c, 0x0d, 0x5b, 0x87, 0xaa, 0x56, 0xba, 0x44, 0x80, 0x45, 0x74, 0xdc,
0xe8, 0x46, 0x64, 0x2a, 0xe3, 0x09, 0xb2, 0x84, 0xac, 0x64, 0x7f, 0x2f, 0x1c, 0x69, 0x21, 0x3a,
0x65, 0x55, 0x68, 0xd7, 0x70, 0xf9, 0x88, 0x4c, 0x06, 0x82, 0x54, 0xd9, 0xfd, 0x37, 0x07, 0xe6,
0x68, 0x05, 0x50, 0xd8, 0x05, 0x87, 0xeb, 0xf0, 0x25, 0xcd, 0x7c, 0xc9, 0xcb, 0xc3, 0xcc, 0xb5,
0xb2, 0x51, 0x2a, 0x7a, 0xd8, 0x66, 0x46, 0xca, 0x15, 0xa8, 0x8b, 0x92, 0xce, 0xbc, 0x20, 0x92,
0x0c, 0x64, 0x97, 0xa1, 0x76, 0x12, 0x8d, 0x95, 0x77, 0x02, 0x2a, 0x7a, 0x1f, 0x8d, 0x3d, 0xc2,
0xb3, 0xf1, 0x60, 0x7b, 0x62, 0xf0, 0xc2, 0xe6, 0xe4, 0x61, 0xb4, 0xba, 0xba, 0x59, 0x73, 0x31,
0x72, 0xa8, 0xbb, 0x05, 0x2b, 0x0f, 0xa3, 0x3e, 0x37, 0x22, 0x4e, 0x33, 0xb9, 0xd9, 0xfd, 0x96,
0x03, 0x8b, 0x8a, 0x98, 0x5d, 0x87, 0x1a, 0xba, 0x12, 0xb9, 0x83, 0x82, 0xbe, 0xb5, 0x43, 0x3a,
0x8f, 0x28, 0x50, 0xf7, 0x52, 0x3c, 0x22, 0x73, 0x2b, 0x55, 0x34, 0x22, 0xf3, 0x9a, 0xf4, 0x70,
0x73, 0xce, 0x46, 0x0e, 0x75, 0xff, 0xd2, 0x81, 0x25, 0xab, 0x0f, 0x3c, 0x3c, 0x0e, 0xfd, 0x24,
0x95, 0x37, 0x21, 0x72, 0x7b, 0x4c, 0xc8, 0x8c, 0x41, 0x56, 0xec, 0x18, 0xa4, 0x8e, 0x8e, 0x55,
0xcd, 0xe8, 0xd8, 0x2d, 0xa8, 0x67, 0x39, 0x43, 0x35, 0x4b, 0xa7, 0x62, 0x8f, 0xea, 0x3e, 0x32,
0x23, 0xc2, 0x76, 0x7a, 0xd1, 0x30, 0x8a, 0x65, 0x08, 0x5e, 0x14, 0xdc, 0x0f, 0xa1, 0x61, 0xd0,
0xe3, 0x30, 0x42, 0x9e, 0x9e, 0x45, 0xf1, 0x33, 0x15, 0x0a, 0x95, 0x45, 0x7d, 0xed, 0x5e, 0xc9,
0xae, 0xdd, 0xdd, 0x1f, 0x3a, 0xb0, 0x84, 0x3c, 0x18, 0x84, 0x83, 0x83, 0x68, 0x18, 0xf4, 0xa6,
0xb4, 0xf7, 0x8a, 0xdd, 0xa4, 0x66, 0x50, 0xbc, 0x68, 0xc3, 0xc8, 0xdb, 0xea, 0xec, 0x28, 0x05,
0x51, 0x97, 0x51, 0x52, 0x91, 0xcf, 0x8f, 0xfc, 0x44, 0x32, 0xbf, 0x34, 0x72, 0x16, 0x88, 0xf2,
0x84, 0x40, 0xec, 0xa7, 0xbc, 0x3b, 0x0a, 0x86, 0xc3, 0x40, 0xd0, 0x0a, 0x17, 0xa8, 0xac, 0x0a,
0xfb, 0xec, 0x07, 0x89, 0x7f, 0x94, 0x85, 0x99, 0x75, 0xd9, 0xfd, 0x41, 0x05, 0x1a, 0x52, 0x3d,
0xef, 0xf6, 0x07, 0x5c, 0xde, 0x81, 0x90, 0x93, 0xa9, 0x55, 0x89, 0x81, 0xa8, 0x7a, 0xcb, 0x2d,
0x35, 0x90, 0xfc, 0x96, 0x57, 0x8b, 0x5b, 0xfe, 0x3a, 0xd4, 0x91, 0xf5, 0xde, 0x25, 0xff, 0x57,
0xdc, 0x9f, 0x64, 0x80, 0xaa, 0xdd, 0xa6, 0xda, 0xb9, 0xac, 0x96, 0x80, 0x97, 0xde, 0x98, 0xbc,
0x0f, 0x4d, 0xd9, 0x0c, 0xed, 0x09, 0x69, 0x8e, 0x8c, 0xf9, 0xad, 0xfd, 0xf2, 0x2c, 0x4a, 0xf5,
0xe5, 0xb6, 0xfa, 0x72, 0xf1, 0xbc, 0x2f, 0x15, 0x25, 0xdd, 0x6e, 0x8b, 0xb5, 0xb9, 0x1f, 0xfb,
0xe3, 0x13, 0x65, 0xf2, 0xfa, 0x3a, 0x65, 0x87, 0x60, 0xb6, 0x05, 0x73, 0xf8, 0x99, 0xd2, 0xe4,
0xe5, 0x02, 0x29, 0x48, 0xd8, 0x75, 0x98, 0xe3, 0xfd, 0x01, 0x57, 0x27, 0x3c, 0x66, 0x9f, 0xb5,
0x71, 0x8f, 0x3c, 0x41, 0x80, 0xea, 0x01, 0xd1, 0x9c, 0x7a, 0xb0, 0xad, 0xc0, 0x3c, 0x16, 0x1f,
0xf4, 0xdd, 0x75, 0x60, 0x0f, 0x05, 0x47, 0x9b, 0xf1, 0xeb, 0x6f, 0x57, 0xa1, 0x61, 0xc0, 0x28,
0xe9, 0x03, 0x1c, 0x70, 0xb7, 0x1f, 0xf8, 0x23, 0x9e, 0xf2, 0x58, 0x72, 0x71, 0x0e, 0x45, 0x3a,
0xff, 0x74, 0xd0, 0x8d, 0x26, 0x69, 0xb7, 0xcf, 0x07, 0x31, 0x17, 0x86, 0x19, 0x0d, 0x85, 0x85,
0x22, 0xdd, 0xc8, 0x7f, 0x6e, 0xd2, 0x09, 0x7e, 0xc8, 0xa1, 0x2a, 0x1a, 0x2d, 0xd6, 0xa8, 0x96,
0x45, 0xa3, 0xc5, 0x8a, 0xe4, 0x75, 0xd4, 0x5c, 0x89, 0x8e, 0x7a, 0x0f, 0x36, 0x84, 0x36, 0x92,
0x72, 0xdb, 0xcd, 0xb1, 0xc9, 0x8c, 0x5a, 0xb6, 0x05, 0x2d, 0x1c, 0xb3, 0x62, 0xf0, 0x24, 0xf8,
0xa6, 0x88, 0x0f, 0x39, 0x5e, 0x01, 0x47, 0x5a, 0x0a, 0xd4, 0x98, 0xb4, 0xe2, 0xbe, 0xad, 0x80,
0x13, 0xad, 0xff, 0xdc, 0xa6, 0xad, 0x4b, 0xda, 0x1c, 0xee, 0x2e, 0x41, 0xe3, 0x30, 0x8d, 0xc6,
0x6a, 0x53, 0x96, 0xa1, 0x29, 0x8a, 0x32, 0xbb, 0xe1, 0x35, 0xb8, 0x44, 0x5c, 0xf4, 0x38, 0x1a,
0x47, 0xc3, 0x68, 0x30, 0x3d, 0x9c, 0x1c, 0x25, 0xbd, 0x38, 0x18, 0xe3, 0x69, 0xc8, 0xfd, 0x47,
0x07, 0xd6, 0xac, 0x5a, 0x19, 0x32, 0xfa, 0xb4, 0x60, 0x69, 0x7d, 0x2d, 0x2d, 0x18, 0x6f, 0xd5,
0x50, 0x95, 0x82, 0x50, 0x84, 0xf2, 0x9e, 0xc8, 0x9b, 0xea, 0xdb, 0xb0, 0xa2, 0x46, 0xa6, 0x3e,
0x14, 0x5c, 0xd8, 0x2e, 0x72, 0xa1, 0xfc, 0x7e, 0x59, 0x7e, 0xa0, 0x9a, 0xf8, 0x65, 0x79, 0x6f,
0xd9, 0xa7, 0x39, 0xaa, 0xd8, 0x81, 0xbe, 0x99, 0x32, 0x4f, 0x10, 0x6a, 0x04, 0x3d, 0x0d, 0x26,
0xee, 0xef, 0x3b, 0x00, 0xd9, 0xe8, 0x90, 0x31, 0x32, 0x75, 0x2f, 0x52, 0xa9, 0x0d, 0xd5, 0xfe,
0x16, 0x34, 0xf5, 0x9d, 0x4a, 0x66, 0x41, 0x1a, 0x0a, 0x43, 0x27, 0xef, 0x1a, 0xac, 0x0c, 0x86,
0xd1, 0x11, 0x99, 0x5f, 0x4a, 0x97, 0x49, 0x64, 0x8e, 0xc7, 0xb2, 0x80, 0xef, 0x49, 0x34, 0x33,
0x37, 0x35, 0xc3, 0xdc, 0xb8, 0xdf, 0xa9, 0xe8, 0x48, 0x7c, 0x36, 0xe7, 0x99, 0x52, 0xc6, 0xb6,
0x0b, 0xca, 0x71, 0x46, 0xe0, 0x9b, 0xa2, 0x64, 0x07, 0xe7, 0x1e, 0xe2, 0x3f, 0x84, 0xe5, 0x58,
0x68, 0x1f, 0xa5, 0x9a, 0x6a, 0x2f, 0x51, 0x4d, 0x4b, 0xb1, 0x65, 0x93, 0x3e, 0x09, 0x2d, 0xbf,
0x7f, 0xca, 0xe3, 0x34, 0xa0, 0x63, 0x14, 0x39, 0x04, 0x42, 0xa1, 0xae, 0x18, 0x38, 0xd9, 0xe9,
0x6b, 0xb0, 0x22, 0xf3, 0x6a, 0x34, 0xa5, 0xcc, 0x05, 0xcd, 0x60, 0x24, 0x74, 0xff, 0x5c, 0x05,
0xfd, 0xed, 0x3d, 0x9c, 0xbd, 0x22, 0xe6, 0xec, 0x2a, 0xb9, 0xd9, 0x7d, 0x42, 0x06, 0xe0, 0xfb,
0xea, 0xac, 0x56, 0x35, 0xee, 0xb8, 0xfb, 0xf2, 0xc2, 0xc4, 0x5e, 0xd2, 0xda, 0xab, 0x2c, 0xa9,
0xfb, 0x23, 0x07, 0x16, 0xf6, 0xa2, 0xf1, 0x9e, 0xbc, 0xed, 0x27, 0x41, 0xd0, 0x59, 0x6b, 0xaa,
0xf8, 0x92, 0x3c, 0x80, 0x52, 0x3b, 0xbc, 0x94, 0xb7, 0xc3, 0xbf, 0x02, 0xaf, 0x51, 0xa4, 0x20,
0x8e, 0xc6, 0x51, 0x8c, 0xc2, 0xe8, 0x0f, 0x85, 0xd1, 0x8d, 0xc2, 0xf4, 0x44, 0xa9, 0xb1, 0x97,
0x91, 0xd0, 0x91, 0x0c, 0x8f, 0x12, 0xc2, 0x51, 0x96, 0x7e, 0x83, 0xd0, 0x6e, 0xc5, 0x0a, 0xf7,
0xb3, 0x50, 0x27, 0xc7, 0x97, 0xa6, 0xf5, 0x0e, 0xd4, 0x4f, 0xa2, 0x71, 0xf7, 0x24, 0x08, 0x53,
0x25, 0xdc, 0xcb, 0x99, 0x47, 0xba, 0x47, 0x0b, 0xa2, 0x09, 0xdc, 0x1f, 0xd6, 0x60, 0xe1, 0x41,
0x78, 0x1a, 0x05, 0x3d, 0xba, 0x1f, 0x18, 0xf1, 0x51, 0xa4, 0x72, 0xf8, 0xf0, 0x37, 0x2e, 0x05,
0xe5, 0xb3, 0x8c, 0x53, 0x19, 0xe0, 0x57, 0x45, 0x34, 0xf7, 0x71, 0x96, 0x67, 0x2b, 0x44, 0xc7,
0x40, 0xd0, 0xe9, 0x8f, 0xcd, 0x94, 0x64, 0x59, 0xca, 0x92, 0x20, 0xe7, 0x8c, 0x24, 0x48, 0xba,
0x4d, 0x12, 0x99, 0x09, 0xc4, 0x5f, 0x8b, 0x9e, 0x2a, 0xd2, 0x21, 0x25, 0xe6, 0x22, 0xc2, 0x43,
0x8e, 0xc3, 0x82, 0x3c, 0xa4, 0x98, 0x20, 0x3a, 0x17, 0xe2, 0x03, 0x41, 0x23, 0x94, 0xaf, 0x09,
0xa1, 0x23, 0x96, 0xcf, 0x6a, 0xae, 0x0b, 0x9e, 0xcf, 0xc1, 0xa8, 0xa1, 0xfb, 0x5c, 0x2b, 0x52,
0x31, 0x07, 0x10, 0x79, 0xc4, 0x79, 0xdc, 0x38, 0xda, 0x88, 0x94, 0x23, 0x75, 0xb4, 0x41, 0x46,
0xf1, 0x87, 0xc3, 0x23, 0xbf, 0xf7, 0x8c, 0x92, 0xd6, 0x29, 0xc3, 0xa8, 0xee, 0xd9, 0x20, 0xe5,
0x1a, 0x64, 0xbb, 0x49, 0xf7, 0x91, 0x35, 0xcf, 0x84, 0xd8, 0x36, 0x34, 0xe8, 0x38, 0x27, 0xf7,
0x73, 0x99, 0xf6, 0xb3, 0x65, 0x9e, 0xf7, 0x68, 0x47, 0x4d, 0x22, 0xf3, 0xce, 0x62, 0xc5, 0xbe,
0xb3, 0x10, 0x4a, 0x53, 0x5e, 0xf5, 0xb4, 0xa8, 0xb7, 0x0c, 0x40, 0x6b, 0x2a, 0x17, 0x4c, 0x10,
0xac, 0x12, 0x81, 0x85, 0xa1, 0xd4, 0xe2, 0x21, 0x64, 0xec, 0x07, 0xfd, 0x36, 0x13, 0x52, 0xab,
0xca, 0x6e, 0x0a, 0xec, 0x76, 0xbf, 0x2f, 0xb9, 0x49, 0x1f, 0x56, 0x33, 0x3e, 0x70, 0x2c, 0x3e,
0x28, 0xd9, 0x8f, 0x4a, 0xf9, 0x7e, 0xbc, 0x74, 0xd4, 0xee, 0x2e, 0x34, 0x0e, 0x8c, 0x54, 0x6b,
0x62, 0x4b, 0x95, 0x64, 0x2d, 0x59, 0xd9, 0x40, 0x8c, 0xe1, 0x54, 0xcc, 0xe1, 0xb8, 0xbf, 0xe7,
0x00, 0xdb, 0x0f, 0x92, 0x54, 0x0f, 0x5f, 0xf4, 0xed, 0x42, 0x53, 0x87, 0x14, 0xb2, 0xfc, 0x28,
0x0b, 0x43, 0x1a, 0x1a, 0x4a, 0x37, 0x3a, 0x3e, 0x4e, 0xb8, 0x0a, 0x2c, 0x59, 0x18, 0xf2, 0x14,
0x7a, 0x25, 0x68, 0xe1, 0x03, 0xd1, 0x83, 0xf2, 0x56, 0x0a, 0xb8, 0x1b, 0x89, 0x4c, 0xad, 0xfc,
0x42, 0x6e, 0xc1, 0xa2, 0xfe, 0xd4, 0x96, 0x6b, 0x45, 0xa9, 0xeb, 0x51, 0x7f, 0x90, 0x63, 0x6d,
0x8d, 0x4b, 0x9c, 0xe0, 0x8a, 0x15, 0xee, 0x53, 0x58, 0x93, 0x4d, 0x98, 0x1e, 0x84, 0xbd, 0xee,
0xce, 0x79, 0xdc, 0x52, 0x29, 0x72, 0x8b, 0xfb, 0x03, 0x07, 0x16, 0xe4, 0xe6, 0xd0, 0x4a, 0xe6,
0xd3, 0xe4, 0xeb, 0x9e, 0x85, 0x95, 0x27, 0x48, 0x17, 0x35, 0x40, 0xb5, 0x4c, 0x03, 0x30, 0xa8,
0x8d, 0xfd, 0xf4, 0x84, 0x8e, 0x7e, 0x75, 0x8f, 0x7e, 0xb3, 0x96, 0x08, 0x47, 0x08, 0x4d, 0x43,
0xa1, 0x88, 0xb2, 0x37, 0x02, 0xc2, 0xa0, 0x15, 0x70, 0x74, 0xe1, 0x29, 0x1b, 0x44, 0xe0, 0xfa,
0x1a, 0x47, 0xe6, 0xa9, 0x65, 0x70, 0xb6, 0x3f, 0xb2, 0x89, 0xfc, 0xfe, 0x48, 0x52, 0x4f, 0xd7,
0xbb, 0x1d, 0x68, 0xdf, 0xe5, 0x43, 0x9e, 0xf2, 0xdb, 0xc3, 0x61, 0xbe, 0xfd, 0xd7, 0xe0, 0x52,
0x49, 0x9d, 0x74, 0xf9, 0xee, 0xc1, 0xea, 0x5d, 0x7e, 0x34, 0x19, 0xec, 0xf3, 0xd3, 0xec, 0x26,
0x96, 0x41, 0x2d, 0x39, 0x89, 0xce, 0x24, 0x73, 0xd2, 0x6f, 0xf6, 0x06, 0xc0, 0x10, 0x69, 0xba,
0xc9, 0x98, 0xf7, 0x54, 0x6a, 0x30, 0x21, 0x87, 0x63, 0xde, 0x73, 0xdf, 0x03, 0x66, 0xb6, 0x23,
0xa7, 0x80, 0x5a, 0x74, 0x72, 0xd4, 0x4d, 0xa6, 0x49, 0xca, 0x47, 0x2a, 0xe7, 0xd9, 0x84, 0xdc,
0x6b, 0xd0, 0x3c, 0xf0, 0xa7, 0x1e, 0xff, 0x86, 0x7c, 0xa9, 0xb0, 0x09, 0x0b, 0x63, 0x7f, 0x8a,
0xa2, 0xaa, 0xa3, 0x0e, 0x54, 0xed, 0xfe, 0x57, 0x05, 0xe6, 0x05, 0x25, 0xb6, 0xda, 0xe7, 0x49,
0x1a, 0x84, 0xe2, 0x9e, 0x51, 0xb6, 0x6a, 0x40, 0x05, 0xde, 0xa8, 0x94, 0xf0, 0x86, 0xf4, 0xf5,
0x55, 0x9a, 0xa5, 0x64, 0x02, 0x0b, 0x43, 0x8e, 0xcd, 0xb2, 0x3b, 0xc4, 0xb1, 0x37, 0x03, 0x72,
0x61, 0xa8, 0x4c, 0x57, 0x8b, 0xf1, 0x29, 0xb6, 0x97, 0xec, 0x60, 0x42, 0xa5, 0x16, 0x61, 0x41,
0x70, 0x4d, 0xc1, 0x22, 0x14, 0x34, 0xff, 0xe2, 0x2b, 0x68, 0x7e, 0x71, 0x00, 0x78, 0x99, 0xe6,
0x87, 0x57, 0xd0, 0xfc, 0x2e, 0x83, 0xd6, 0x3d, 0xce, 0x3d, 0x8e, 0x3e, 0x85, 0x62, 0xa7, 0xef,
0x3a, 0xd0, 0x92, 0xee, 0x90, 0xae, 0x63, 0x6f, 0x59, 0xbe, 0x53, 0x69, 0x32, 0xe4, 0x55, 0x58,
0x22, 0x8f, 0x46, 0xc7, 0xdb, 0x64, 0x70, 0xd0, 0x02, 0x71, 0x1e, 0xea, 0x52, 0x64, 0x14, 0x0c,
0xe5, 0xa6, 0x98, 0x90, 0x0a, 0xd9, 0xc5, 0xbe, 0x4c, 0xc0, 0x70, 0x3c, 0x5d, 0x76, 0xff, 0xc6,
0x81, 0x55, 0x63, 0xc0, 0x92, 0x0b, 0x3f, 0x04, 0x95, 0xfd, 0x21, 0xc2, 0x72, 0x42, 0x98, 0x36,
0x6d, 0xd7, 0x2e, 0xfb, 0xcc, 0x22, 0xa6, 0xcd, 0xf4, 0xa7, 0x34, 0xc0, 0x64, 0x32, 0x92, 0x5a,
0xc9, 0x84, 0x90, 0x91, 0xce, 0x38, 0x7f, 0xa6, 0x49, 0xaa, 0x42, 0x71, 0x99, 0x18, 0x5d, 0xee,
0xa3, 0x27, 0xa6, 0x89, 0x44, 0x3e, 0x9b, 0x0d, 0xba, 0xff, 0xec, 0xc0, 0x9a, 0x70, 0xa9, 0xe5,
0x81, 0x45, 0x67, 0xaa, 0xcf, 0x8b, 0x33, 0x84, 0x90, 0xc8, 0xbd, 0x0b, 0x9e, 0x2c, 0xb3, 0xcf,
0xbc, 0xe2, 0x31, 0x40, 0x27, 0x75, 0xcc, 0xd8, 0x8b, 0x6a, 0xd9, 0x5e, 0xbc, 0x64, 0xa5, 0xcb,
0xc2, 0x50, 0x73, 0xa5, 0x61, 0xa8, 0x3b, 0x0b, 0x30, 0x97, 0xf4, 0xa2, 0x31, 0x77, 0x37, 0x60,
0xdd, 0x9e, 0x9c, 0x54, 0x41, 0xdf, 0x73, 0xa0, 0x7d, 0x4f, 0x04, 0x65, 0x83, 0x70, 0xb0, 0x17,
0x24, 0x69, 0x14, 0xeb, 0xa7, 0x39, 0x97, 0x01, 0x92, 0xd4, 0x8f, 0x53, 0x91, 0x74, 0x27, 0x83,
0x44, 0x19, 0x82, 0x63, 0xe4, 0x61, 0x5f, 0xd4, 0x8a, 0xbd, 0xd1, 0xe5, 0x82, 0x1d, 0xad, 0x96,
0xd8, 0xd1, 0xb7, 0x45, 0x96, 0x14, 0xda, 0x4b, 0x7e, 0x4a, 0xaa, 0x56, 0x58, 0xdb, 0x1c, 0xea,
0xfe, 0x95, 0x03, 0x2b, 0xd9, 0x20, 0x77, 0x11, 0xb4, 0xb5, 0x83, 0xb4, 0x67, 0x99, 0x76, 0x50,
0xe1, 0xab, 0x00, 0x0d, 0x9c, 0x1c, 0x9b, 0x81, 0x90, 0xc4, 0xca, 0x52, 0x34, 0x51, 0x09, 0x8e,
0x26, 0x24, 0xf2, 0x13, 0xd0, 0xb4, 0xca, 0xec, 0x46, 0x59, 0xa2, 0x9c, 0xc9, 0x51, 0x4a, 0x5f,
0xcd, 0x8b, 0xe3, 0x84, 0x2c, 0x2a, 0xfb, 0xb4, 0x40, 0x28, 0xfe, 0x74, 0xff, 0xc0, 0x81, 0x4b,
0x25, 0x8b, 0x2b, 0x25, 0xe3, 0x2e, 0xac, 0x1e, 0xeb, 0x4a, 0xb5, 0x00, 0x42, 0x3c, 0x36, 0xd4,
0x2d, 0x82, 0x3d, 0x69, 0xaf, 0xf8, 0x81, 0x76, 0x0e, 0xc4, 0x92, 0x5a, 0x89, 0x3f, 0xc5, 0x8a,
0xed, 0x3f, 0xac, 0xc2, 0xb2, 0xb8, 0x5d, 0x12, 0x8f, 0x64, 0x79, 0xcc, 0x3e, 0x82, 0x05, 0xf9,
0xc8, 0x99, 0x5d, 0x94, 0xdd, 0xda, 0xcf, 0xaa, 0x3b, 0x1b, 0x79, 0x58, 0xf2, 0xce, 0xda, 0x6f,
0xff, 0xe8, 0x5f, 0xff, 0xa8, 0xb2, 0xc4, 0x1a, 0x37, 0x4f, 0xdf, 0xbd, 0x39, 0xe0, 0x61, 0x82,
0x6d, 0xfc, 0x3a, 0x40, 0xf6, 0xfc, 0x97, 0xb5, 0xb5, 0x53, 0x93, 0x7b, 0xd7, 0xdc, 0xb9, 0x54,
0x52, 0x23, 0xdb, 0xbd, 0x44, 0xed, 0xae, 0xb9, 0xcb, 0xd8, 0x6e, 0x10, 0x06, 0xa9, 0x78, 0x0b,
0xfc, 0x81, 0xb3, 0xc5, 0xfa, 0xd0, 0x34, 0x5f, 0xf7, 0x32, 0x15, 0x70, 0x28, 0x79, 0x5b, 0xdc,
0x79, 0xad, 0xb4, 0x4e, 0x45, 0x5b, 0xa8, 0x8f, 0x8b, 0x6e, 0x0b, 0xfb, 0x98, 0x10, 0x45, 0xd6,
0xcb, 0x10, 0x96, 0xed, 0x47, 0xbc, 0xec, 0x75, 0x43, 0xac, 0x0b, 0x4f, 0x88, 0x3b, 0x6f, 0xcc,
0xa8, 0x95, 0x7d, 0xbd, 0x41, 0x7d, 0x6d, 0xba, 0x0c, 0xfb, 0xea, 0x11, 0x8d, 0x7a, 0x42, 0xfc,
0x81, 0xb3, 0xb5, 0xfd, 0xad, 0xcb, 0x50, 0xd7, 0x21, 0x42, 0xf6, 0x75, 0x58, 0xb2, 0xae, 0xff,
0x98, 0x9a, 0x46, 0xd9, 0x6d, 0x61, 0xe7, 0xf5, 0xf2, 0x4a, 0xd9, 0xf1, 0x65, 0xea, 0xb8, 0xcd,
0x36, 0xb0, 0x63, 0x79, 0x7f, 0x76, 0x93, 0x2e, 0x3d, 0x45, 0x46, 0xe6, 0x33, 0x31, 0xcf, 0xec,
0xca, 0xce, 0x9a, 0x67, 0xe1, 0x8a, 0xcf, 0x9a, 0x67, 0xf1, 0x9e, 0xcf, 0x7d, 0x9d, 0xba, 0xdb,
0x60, 0xeb, 0x66, 0x77, 0x3a, 0x74, 0xc7, 0x29, 0x87, 0xd6, 0x7c, 0xe3, 0xcb, 0xde, 0xd0, 0x8c,
0x55, 0xf6, 0xf6, 0x57, 0xb3, 0x48, 0xf1, 0x01, 0xb0, 0xdb, 0xa6, 0xae, 0x18, 0xa3, 0xed, 0x33,
0x9f, 0xf8, 0xb2, 0xaf, 0x42, 0x5d, 0x3f, 0x68, 0x63, 0x9b, 0xc6, 0x2b, 0x42, 0xf3, 0x95, 0x5d,
0xa7, 0x5d, 0xac, 0x28, 0x63, 0x0c, 0xb3, 0x65, 0x64, 0x8c, 0x7d, 0xb8, 0x28, 0x9d, 0xea, 0x23,
0xfe, 0x93, 0xcc, 0xa4, 0xe4, 0x65, 0xf2, 0x2d, 0x87, 0x7d, 0x08, 0x8b, 0xea, 0x9d, 0x20, 0xdb,
0x28, 0x7f, 0xef, 0xd8, 0xd9, 0x2c, 0xe0, 0x52, 0x7b, 0xdc, 0x06, 0xc8, 0xde, 0xb8, 0x69, 0x39,
0x2b, 0xbc, 0xbc, 0xd3, 0x8b, 0x58, 0xf2, 0x20, 0x6e, 0x40, 0x2f, 0xfa, 0xec, 0x27, 0x74, 0xec,
0xcd, 0x8c, 0xbe, 0xf4, 0x71, 0xdd, 0x4b, 0x1a, 0x74, 0x37, 0x68, 0xed, 0x5a, 0x8c, 0x04, 0x37,
0xe4, 0x67, 0x2a, 0x9b, 0xfc, 0x2e, 0x34, 0x8c, 0x77, 0x73, 0x4c, 0xb5, 0x50, 0x7c, 0x73, 0xd7,
0xe9, 0x94, 0x55, 0xc9, 0xe1, 0x7e, 0x01, 0x96, 0xac, 0x07, 0x70, 0x5a, 0x32, 0xca, 0x9e, 0xd7,
0x69, 0xc9, 0x28, 0x7f, 0x33, 0xf7, 0x15, 0x68, 0x18, 0xcf, 0xd5, 0x98, 0x91, 0x27, 0x97, 0x7b,
0xa8, 0xa6, 0x47, 0x54, 0xf6, 0xba, 0x6d, 0x9d, 0xe6, 0xbb, 0xec, 0xd6, 0x71, 0xbe, 0x94, 0x52,
0x8d, 0x4c, 0xf2, 0x75, 0x58, 0xb6, 0x1f, 0xb0, 0x69, 0xa9, 0x2a, 0x7d, 0x0a, 0xa7, 0xa5, 0x6a,
0xc6, 0xab, 0x37, 0xc9, 0x90, 0x5b, 0x6b, 0xba, 0x93, 0x9b, 0x1f, 0xcb, 0xcb, 0xb3, 0x17, 0xec,
0x4b, 0xa8, 0x3a, 0x64, 0x8e, 0x3b, 0xcb, 0x9e, 0xed, 0xd9, 0x99, 0xf0, 0x9a, 0xdb, 0x0b, 0xe9,
0xf0, 0xee, 0x2a, 0x35, 0xde, 0x60, 0xd9, 0x0c, 0x84, 0x3d, 0xa0, 0x5c, 0x77, 0xc3, 0x1e, 0x98,
0xe9, 0xf0, 0x86, 0x3d, 0xb0, 0x52, 0xe2, 0xf3, 0xf6, 0x20, 0x0d, 0xb0, 0x8d, 0x10, 0x56, 0x72,
0x89, 0x22, 0x5a, 0x58, 0xca, 0x33, 0xeb, 0x3a, 0x97, 0x5f, 0x9e, 0x5f, 0x62, 0xab, 0x19, 0xa5,
0x5e, 0x6e, 0xaa, 0x44, 0xc8, 0xdf, 0x80, 0xa6, 0xf9, 0xf0, 0x48, 0x5b, 0x88, 0x92, 0xe7, 0x52,
0xda, 0x42, 0x94, 0xbd, 0x54, 0x52, 0x9b, 0xcb, 0x9a, 0x66, 0x37, 0xb8, 0xb9, 0xf6, 0x3b, 0x8d,
0x4c, 0x65, 0x96, 0x3d, 0x40, 0xc9, 0x54, 0x66, 0xe9, 0xe3, 0x0e, 0xb5, 0xb9, 0x6c, 0xcd, 0x9a,
0x8b, 0x88, 0x8c, 0xb2, 0xaf, 0xc0, 0x8a, 0x91, 0x85, 0x75, 0x38, 0x0d, 0x7b, 0x9a, 0x51, 0x8b,
0x19, 0xbc, 0x9d, 0x32, 0xcf, 0xd3, 0xdd, 0xa4, 0xf6, 0x57, 0x5d, 0x6b, 0x12, 0xc8, 0xa4, 0x3b,
0xd0, 0x30, 0x33, 0xbc, 0x5e, 0xd2, 0xee, 0xa6, 0x51, 0x65, 0xa6, 0xab, 0xde, 0x72, 0xd8, 0x9f,
0x38, 0xd0, 0xb4, 0xf2, 0xa5, 0xac, 0xf8, 0x7f, 0xae, 0x9d, 0xb6, 0x59, 0x67, 0x36, 0xe4, 0x7a,
0x34, 0xc8, 0xfd, 0xad, 0x2f, 0x58, 0x8b, 0xf0, 0xb1, 0x75, 0x82, 0xb9, 0x91, 0x7f, 0xbf, 0xfe,
0x22, 0x4f, 0x60, 0x66, 0x39, 0xbf, 0xb8, 0xe5, 0xb0, 0x0f, 0xc4, 0x3f, 0x34, 0xa8, 0x88, 0x05,
0x33, 0x14, 0x69, 0x7e, 0xc9, 0xcc, 0xbf, 0x27, 0xb8, 0xee, 0xdc, 0x72, 0xd8, 0xd7, 0xc4, 0x33,
0x75, 0xf9, 0x2d, 0xad, 0xfc, 0xab, 0x7e, 0xef, 0x5e, 0xa5, 0xd9, 0x5c, 0x76, 0x2f, 0x59, 0xb3,
0xc9, 0x5b, 0x92, 0xdb, 0x62, 0x74, 0xf2, 0xdf, 0x07, 0x32, 0x95, 0x58, 0xf8, 0x47, 0x82, 0xd9,
0x83, 0x1c, 0x89, 0x41, 0x4a, 0x72, 0x8b, 0x3d, 0x5e, 0xb1, 0x19, 0x77, 0x8b, 0xc6, 0x7a, 0xd5,
0x7d, 0x73, 0xe6, 0x58, 0x6f, 0xd2, 0x89, 0x14, 0x47, 0x7c, 0x00, 0x90, 0x05, 0x04, 0x59, 0x2e,
0x5a, 0xa5, 0xad, 0x42, 0x31, 0x66, 0x68, 0xf3, 0xa0, 0x0a, 0x6a, 0x61, 0x8b, 0x5f, 0x15, 0xa2,
0xfa, 0x40, 0xc5, 0xb9, 0x2e, 0x19, 0xe2, 0x68, 0x47, 0xee, 0x3a, 0x9d, 0xb2, 0xaa, 0x32, 0x41,
0xd5, 0x41, 0xb3, 0x27, 0xb0, 0xb4, 0x1f, 0x45, 0xcf, 0x26, 0x63, 0x1d, 0x10, 0xb7, 0xe3, 0x37,
0x7b, 0x7e, 0x72, 0xd2, 0xc9, 0xcd, 0xc2, 0xbd, 0x42, 0x4d, 0x75, 0x58, 0xdb, 0x68, 0xea, 0xe6,
0xc7, 0x59, 0xc0, 0xf1, 0x05, 0xf3, 0x61, 0x55, 0x7b, 0x00, 0x7a, 0xe0, 0x1d, 0xbb, 0x19, 0x33,
0xee, 0x56, 0xe8, 0xc2, 0xf2, 0xc9, 0xd4, 0x68, 0x6f, 0x26, 0xaa, 0xcd, 0x5b, 0x0e, 0x3b, 0x80,
0xe6, 0x5d, 0xde, 0x8b, 0xfa, 0x5c, 0x46, 0x5c, 0xd6, 0xb2, 0x81, 0xeb, 0x50, 0x4d, 0x67, 0xc9,
0x02, 0x6d, 0x9d, 0x38, 0xf6, 0xa7, 0x31, 0xff, 0xc6, 0xcd, 0x8f, 0x65, 0x2c, 0xe7, 0x85, 0xd2,
0x89, 0x2a, 0xfe, 0x64, 0xe9, 0xc4, 0x5c, 0xc0, 0xca, 0xd2, 0x89, 0x85, 0x80, 0x95, 0xb5, 0xd4,
0x2a, 0xfe, 0xc5, 0x86, 0xb0, 0x5a, 0x88, 0x71, 0x69, 0x3f, 0x62, 0x56, 0x64, 0xac, 0x73, 0x65,
0x36, 0x81, 0xdd, 0xdb, 0x96, 0xdd, 0xdb, 0x21, 0x2c, 0xdd, 0xe5, 0x62, 0xb1, 0xc4, 0xad, 0x7b,
0xee, 0x39, 0x9c, 0x79, 0x43, 0x9f, 0x57, 0x8a, 0x54, 0x67, 0x1b, 0x3d, 0xba, 0xf2, 0x66, 0x5f,
0x85, 0xc6, 0x7d, 0x9e, 0xaa, 0x6b, 0x76, 0xed, 0x8d, 0xe5, 0xee, 0xdd, 0x3b, 0x25, 0xb7, 0xf4,
0x36, 0xcf, 0x50, 0x6b, 0x37, 0x79, 0x7f, 0xc0, 0x85, 0x7a, 0xea, 0x06, 0xfd, 0x17, 0xec, 0x57,
0xa9, 0x71, 0x9d, 0xb5, 0xb3, 0x61, 0xdc, 0xce, 0x9a, 0x8d, 0xaf, 0xe4, 0xf0, 0xb2, 0x96, 0xc3,
0xa8, 0xcf, 0x0d, 0xf3, 0x1f, 0x42, 0xc3, 0x48, 0x29, 0xd3, 0x02, 0x54, 0x4c, 0x8f, 0xd3, 0x02,
0x54, 0x92, 0x81, 0xe6, 0x5e, 0xa7, 0x7e, 0x5c, 0x76, 0x25, 0xeb, 0x47, 0x64, 0x9d, 0x65, 0x3d,
0xdd, 0xfc, 0xd8, 0x1f, 0xa5, 0x2f, 0xd8, 0x53, 0x7a, 0x1a, 0x67, 0xa6, 0x12, 0x64, 0xde, 0x60,
0x3e, 0xeb, 0x40, 0x2f, 0x96, 0x51, 0x65, 0x7b, 0x88, 0xa2, 0x2b, 0xf2, 0x12, 0x3e, 0x03, 0x70,
0x98, 0x46, 0xe3, 0xbb, 0x3e, 0x1f, 0x45, 0x61, 0xa6, 0x6b, 0xb3, 0xeb, 0xf2, 0x4c, 0x7f, 0x19,
0x77, 0xe6, 0xec, 0xa9, 0xe1, 0x8f, 0x5b, 0x99, 0x18, 0x8a, 0xb9, 0x66, 0xde, 0xa8, 0xeb, 0x05,
0x29, 0xb9, 0x55, 0xbf, 0xe5, 0xa0, 0x77, 0x9d, 0x45, 0x54, 0xb5, 0x77, 0x5d, 0x08, 0xd6, 0x6a,
0xb5, 0x57, 0x12, 0x7e, 0x3d, 0x80, 0x7a, 0x16, 0xa2, 0xdb, 0xcc, 0xd2, 0x02, 0xad, 0x80, 0x9e,
0xb6, 0x8a, 0x85, 0xc0, 0x99, 0xdb, 0xa2, 0xa5, 0x02, 0xb6, 0x88, 0x4b, 0x45, 0xd1, 0xb0, 0x00,
0xd6, 0xc4, 0x00, 0xb5, 0x89, 0xa7, 0x0b, 0x60, 0x35, 0x93, 0x92, 0xe0, 0x95, 0x96, 0xe6, 0xd2,
0xd8, 0x8f, 0x75, 0xce, 0x46, 0x6e, 0x15, 0x97, 0xcf, 0xa8, 0x9a, 0x47, 0xb0, 0x5a, 0x08, 0x5c,
0x68, 0x91, 0x9e, 0x15, 0x2f, 0xd2, 0x22, 0x3d, 0x33, 0xe6, 0xe1, 0x5e, 0xa4, 0x2e, 0x57, 0x5c,
0xc0, 0x2e, 0x93, 0xb3, 0x20, 0xed, 0x9d, 0x7c, 0xe0, 0x6c, 0x1d, 0xcd, 0xd3, 0x3f, 0xba, 0x7d,
0xea, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xa8, 0x73, 0x80, 0x03, 0x03, 0x4e, 0x00, 0x00,
}

@ -1707,12 +1707,33 @@ message PaymentHash {
/// The payment hash of the invoice to be looked up.
bytes r_hash = 2 [json_name = "r_hash"];
}
message ListInvoiceRequest {
/// Toggles if all invoices should be returned, or only those that are currently unsettled.
bool pending_only = 1;
/// If set, only unsettled invoices will be returned in the response.
bool pending_only = 1 [json_name = "pending_only"];
/**
The offset in the time series to start at. As each response can only contain
50k invoices, callers can use this to skip around within a packed time
series.
*/
uint32 index_offset = 4 [json_name = "index_offset"];
/// The max number of invoices to return in the response to this query.
uint32 num_max_invoices = 5 [json_name = "num_max_invoices"];
}
message ListInvoiceResponse {
/**
A list of invoices from the time slice of the time series specified in the
request.
*/
repeated Invoice invoices = 1 [json_name = "invoices"];
/**
The index of the last time in the set of returned invoices. Can be used to
seek further, pagination style.
*/
uint32 last_index_offset = 2 [json_name = "last_index_offset"];
}
message InvoiceSubscription {

@ -627,11 +627,27 @@
"parameters": [
{
"name": "pending_only",
"description": "/ Toggles if all invoices should be returned, or only those that are currently unsettled.",
"description": "/ If set, only unsettled invoices will be returned in the response.",
"in": "query",
"required": false,
"type": "boolean",
"format": "boolean"
},
{
"name": "index_offset",
"description": "*\nThe offset in the time series to start at. As each response can only contain\n50k invoices, callers can use this to skip around within a packed time\nseries.",
"in": "query",
"required": false,
"type": "integer",
"format": "int64"
},
{
"name": "num_max_invoices",
"description": "/ The max number of invoices to return in the response to this query.",
"in": "query",
"required": false,
"type": "integer",
"format": "int64"
}
],
"tags": [
@ -1991,7 +2007,13 @@
"type": "array",
"items": {
"$ref": "#/definitions/lnrpcInvoice"
}
},
"description": "*\nA list of invoices from the time slice of the time series specified in the\nrequest."
},
"last_index_offset": {
"type": "integer",
"format": "int64",
"description": "*\nThe index of the last time in the set of returned invoices. Can be used to\nseek further, pagination style."
}
}
},

@ -2873,25 +2873,38 @@ func (r *rpcServer) LookupInvoice(ctx context.Context,
func (r *rpcServer) ListInvoices(ctx context.Context,
req *lnrpc.ListInvoiceRequest) (*lnrpc.ListInvoiceResponse, error) {
dbInvoices, err := r.server.chanDB.FetchAllInvoices(req.PendingOnly)
if err != nil {
return nil, err
// If the number of invoices was not specified, then we'll default to
// returning the latest 100 invoices.
if req.NumMaxInvoices == 0 {
req.NumMaxInvoices = 100
}
invoices := make([]*lnrpc.Invoice, len(dbInvoices))
for i, dbInvoice := range dbInvoices {
// Next, we'll map the proto request into a format that is understood by
// the database.
q := channeldb.InvoiceQuery{
IndexOffset: req.IndexOffset,
NumMaxInvoices: req.NumMaxInvoices,
PendingOnly: req.PendingOnly,
}
invoiceSlice, err := r.server.chanDB.QueryInvoices(q)
if err != nil {
return nil, fmt.Errorf("unable to query invoices: %v", err)
}
rpcInvoice, err := createRPCInvoice(&dbInvoice)
// Before returning the response, we'll need to convert each invoice
// into it's proto representation.
resp := &lnrpc.ListInvoiceResponse{
Invoices: make([]*lnrpc.Invoice, len(invoiceSlice.Invoices)),
LastIndexOffset: invoiceSlice.LastIndexOffset,
}
for i, invoice := range invoiceSlice.Invoices {
resp.Invoices[i], err = createRPCInvoice(invoice)
if err != nil {
return nil, err
}
invoices[i] = rpcInvoice
}
return &lnrpc.ListInvoiceResponse{
Invoices: invoices,
}, nil
return resp, nil
}
// SubscribeInvoices returns a uni-directional stream (server -> client) for