Merge pull request #4934 from cfromknecht/pinned-active-syncers

discovery: pinned syncers
This commit is contained in:
Conner Fromknecht 2021-02-03 10:54:00 -08:00 committed by GitHub
commit 7f006832fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 1157 additions and 840 deletions

@ -309,6 +309,8 @@ type Config struct {
Routing *lncfg.Routing `group:"routing" namespace:"routing"` Routing *lncfg.Routing `group:"routing" namespace:"routing"`
Gossip *lncfg.Gossip `group:"gossip" namespace:"gossip"`
Workers *lncfg.Workers `group:"workers" namespace:"workers"` Workers *lncfg.Workers `group:"workers" namespace:"workers"`
Caches *lncfg.Caches `group:"caches" namespace:"caches"` Caches *lncfg.Caches `group:"caches" namespace:"caches"`
@ -477,6 +479,7 @@ func DefaultConfig() Config {
Backoff: defaultTLSBackoff, Backoff: defaultTLSBackoff,
}, },
}, },
Gossip: &lncfg.Gossip{},
MaxOutgoingCltvExpiry: htlcswitch.DefaultMaxOutgoingCltvExpiry, MaxOutgoingCltvExpiry: htlcswitch.DefaultMaxOutgoingCltvExpiry,
MaxChannelFeeAllocation: htlcswitch.DefaultMaxLinkFeeAllocation, MaxChannelFeeAllocation: htlcswitch.DefaultMaxLinkFeeAllocation,
MaxCommitFeeRateAnchors: lnwallet.DefaultAnchorsCommitMaxFeeRateSatPerVByte, MaxCommitFeeRateAnchors: lnwallet.DefaultAnchorsCommitMaxFeeRateSatPerVByte,
@ -1289,6 +1292,10 @@ func ValidateConfig(cfg Config, usageMessage string) (*Config, error) {
maxRemoteHtlcs) maxRemoteHtlcs)
} }
if err := cfg.Gossip.Parse(); err != nil {
return nil, err
}
// Validate the subconfigs for workers, caches, and the tower client. // Validate the subconfigs for workers, caches, and the tower client.
err = lncfg.Validate( err = lncfg.Validate(
cfg.Workers, cfg.Workers,

@ -93,6 +93,10 @@ type chanPolicyUpdateRequest struct {
errChan chan error errChan chan error
} }
// PinnedSyncers is a set of node pubkeys for which we will maintain an active
// syncer at all times.
type PinnedSyncers map[route.Vertex]struct{}
// Config defines the configuration for the service. ALL elements within the // Config defines the configuration for the service. ALL elements within the
// configuration MUST be non-nil for the service to carry out its duties. // configuration MUST be non-nil for the service to carry out its duties.
type Config struct { type Config struct {
@ -233,6 +237,11 @@ type Config struct {
// gossip updates to once per RebroadcastInterval for any keep-alive // gossip updates to once per RebroadcastInterval for any keep-alive
// updates, and once per block for other types of updates. // updates, and once per block for other types of updates.
GossipUpdateThrottle bool GossipUpdateThrottle bool
// PinnedSyncers is a set of peers that will always transition to
// ActiveSync upon connection. These peers will never transition to
// PassiveSync.
PinnedSyncers PinnedSyncers
} }
// AuthenticatedGossiper is a subsystem which is responsible for receiving // AuthenticatedGossiper is a subsystem which is responsible for receiving
@ -334,6 +343,7 @@ func New(cfg Config, selfKey *btcec.PublicKey) *AuthenticatedGossiper {
NumActiveSyncers: cfg.NumActiveSyncers, NumActiveSyncers: cfg.NumActiveSyncers,
IgnoreHistoricalFilters: cfg.IgnoreHistoricalFilters, IgnoreHistoricalFilters: cfg.IgnoreHistoricalFilters,
BestHeight: gossiper.latestHeight, BestHeight: gossiper.latestHeight,
PinnedSyncers: cfg.PinnedSyncers,
}) })
gossiper.reliableSender = newReliableSender(&reliableSenderCfg{ gossiper.reliableSender = newReliableSender(&reliableSenderCfg{

@ -12,6 +12,7 @@ import (
"reflect" "reflect"
"strings" "strings"
"sync" "sync"
"sync/atomic"
"testing" "testing"
"time" "time"
@ -3616,6 +3617,12 @@ func TestCalculateCorrectSubBatchSizesDifferentDelay(t *testing.T) {
} }
} }
// markGraphSynced allows us to report that the initial historical sync has
// completed.
func (m *SyncManager) markGraphSyncing() {
atomic.StoreInt32(&m.initialHistoricalSyncCompleted, 0)
}
// TestBroadcastAnnsAfterGraphSynced ensures that we only broadcast // TestBroadcastAnnsAfterGraphSynced ensures that we only broadcast
// announcements after the graph has been considered as synced, i.e., after our // announcements after the graph has been considered as synced, i.e., after our
// initial historical sync has completed. // initial historical sync has completed.

@ -92,6 +92,11 @@ type SyncManagerCfg struct {
// BestHeight returns the latest height known of the chain. // BestHeight returns the latest height known of the chain.
BestHeight func() uint32 BestHeight func() uint32
// PinnedSyncers is a set of peers that will always transition to
// ActiveSync upon connection. These peers will never transition to
// PassiveSync.
PinnedSyncers PinnedSyncers
} }
// SyncManager is a subsystem of the gossiper that manages the gossip syncers // SyncManager is a subsystem of the gossiper that manages the gossip syncers
@ -140,6 +145,12 @@ type SyncManager struct {
// currently receiving new graph updates from. // currently receiving new graph updates from.
inactiveSyncers map[route.Vertex]*GossipSyncer inactiveSyncers map[route.Vertex]*GossipSyncer
// pinnedActiveSyncers is the set of all syncers which are pinned into
// an active sync. Pinned peers performan an initial historical sync on
// each connection and will continue to receive graph updates for the
// duration of the connection.
pinnedActiveSyncers map[route.Vertex]*GossipSyncer
wg sync.WaitGroup wg sync.WaitGroup
quit chan struct{} quit chan struct{}
} }
@ -154,7 +165,10 @@ func newSyncManager(cfg *SyncManagerCfg) *SyncManager {
map[route.Vertex]*GossipSyncer, cfg.NumActiveSyncers, map[route.Vertex]*GossipSyncer, cfg.NumActiveSyncers,
), ),
inactiveSyncers: make(map[route.Vertex]*GossipSyncer), inactiveSyncers: make(map[route.Vertex]*GossipSyncer),
quit: make(chan struct{}), pinnedActiveSyncers: make(
map[route.Vertex]*GossipSyncer, len(cfg.PinnedSyncers),
),
quit: make(chan struct{}),
} }
} }
@ -198,7 +212,6 @@ func (m *SyncManager) syncerHandler() {
m.cfg.RotateTicker.Resume() m.cfg.RotateTicker.Resume()
defer m.cfg.RotateTicker.Stop() defer m.cfg.RotateTicker.Stop()
m.cfg.HistoricalSyncTicker.Resume()
defer m.cfg.HistoricalSyncTicker.Stop() defer m.cfg.HistoricalSyncTicker.Stop()
var ( var (
@ -214,6 +227,19 @@ func (m *SyncManager) syncerHandler() {
initialHistoricalSyncSignal chan struct{} initialHistoricalSyncSignal chan struct{}
) )
setInitialHistoricalSyncer := func(s *GossipSyncer) {
initialHistoricalSyncer = s
initialHistoricalSyncSignal = s.ResetSyncedSignal()
// Restart the timer for our new historical sync peer. This will
// ensure that all initial syncers recevie an equivalent
// duration before attempting the next sync. Without doing so we
// might attempt two historical sync back to back if a peer
// disconnects just before the ticker fires.
m.cfg.HistoricalSyncTicker.Pause()
m.cfg.HistoricalSyncTicker.Resume()
}
for { for {
select { select {
// A new peer has been connected, so we'll create its // A new peer has been connected, so we'll create its
@ -228,6 +254,8 @@ func (m *SyncManager) syncerHandler() {
s := m.createGossipSyncer(newSyncer.peer) s := m.createGossipSyncer(newSyncer.peer)
isPinnedSyncer := m.isPinnedSyncer(s)
// attemptHistoricalSync determines whether we should // attemptHistoricalSync determines whether we should
// attempt an initial historical sync when a new peer // attempt an initial historical sync when a new peer
// connects. // connects.
@ -235,6 +263,14 @@ func (m *SyncManager) syncerHandler() {
m.syncersMu.Lock() m.syncersMu.Lock()
switch { switch {
// For pinned syncers, we will immediately transition
// the peer into an active (pinned) sync state.
case isPinnedSyncer:
attemptHistoricalSync = true
s.setSyncType(PinnedSync)
s.setSyncState(syncerIdle)
m.pinnedActiveSyncers[s.cfg.peerPub] = s
// Regardless of whether the initial historical sync // Regardless of whether the initial historical sync
// has completed, we'll re-trigger a historical sync if // has completed, we'll re-trigger a historical sync if
// we no longer have any syncers. This might be // we no longer have any syncers. This might be
@ -280,7 +316,6 @@ func (m *SyncManager) syncerHandler() {
if !attemptHistoricalSync { if !attemptHistoricalSync {
continue continue
} }
m.markGraphSyncing()
log.Debugf("Attempting initial historical sync with "+ log.Debugf("Attempting initial historical sync with "+
"GossipSyncer(%x)", s.cfg.peerPub) "GossipSyncer(%x)", s.cfg.peerPub)
@ -297,8 +332,9 @@ func (m *SyncManager) syncerHandler() {
// keep track of the corresponding syncer to properly // keep track of the corresponding syncer to properly
// handle disconnects. We'll also use a signal to know // handle disconnects. We'll also use a signal to know
// when the historical sync completed. // when the historical sync completed.
initialHistoricalSyncer = s if !isPinnedSyncer {
initialHistoricalSyncSignal = s.ResetSyncedSignal() setInitialHistoricalSyncer(s)
}
// An existing peer has disconnected, so we'll tear down its // An existing peer has disconnected, so we'll tear down its
// corresponding GossipSyncer. // corresponding GossipSyncer.
@ -337,15 +373,13 @@ func (m *SyncManager) syncerHandler() {
"GossipSyncer(%v) with GossipSyncer(%x)", "GossipSyncer(%v) with GossipSyncer(%x)",
staleSyncer.peer, s.cfg.peerPub) staleSyncer.peer, s.cfg.peerPub)
initialHistoricalSyncer = s setInitialHistoricalSyncer(s)
initialHistoricalSyncSignal = s.ResetSyncedSignal()
// Our initial historical sync signal has completed, so we'll // Our initial historical sync signal has completed, so we'll
// nil all of the relevant fields as they're no longer needed. // nil all of the relevant fields as they're no longer needed.
case <-initialHistoricalSyncSignal: case <-initialHistoricalSyncSignal:
initialHistoricalSyncer = nil initialHistoricalSyncer = nil
initialHistoricalSyncSignal = nil initialHistoricalSyncSignal = nil
m.markGraphSynced()
log.Debug("Initial historical sync completed") log.Debug("Initial historical sync completed")
@ -380,12 +414,16 @@ func (m *SyncManager) syncerHandler() {
// Our HistoricalSyncTicker has ticked, so we'll randomly select // Our HistoricalSyncTicker has ticked, so we'll randomly select
// a peer and force a historical sync with them. // a peer and force a historical sync with them.
case <-m.cfg.HistoricalSyncTicker.Ticks(): case <-m.cfg.HistoricalSyncTicker.Ticks():
// If we don't have a syncer available we have nothing
// to do.
s := m.forceHistoricalSync() s := m.forceHistoricalSync()
if s == nil {
continue
}
// If we don't have a syncer available or we've already // If we've already completed a historical sync, we'll
// performed our initial historical sync, then we have // skip setting the initial historical syncer.
// nothing left to do. if m.IsGraphSynced() {
if s == nil || m.IsGraphSynced() {
continue continue
} }
@ -394,8 +432,7 @@ func (m *SyncManager) syncerHandler() {
// where our previous historical sync peer did not // where our previous historical sync peer did not
// respond to our queries and we haven't ingested as // respond to our queries and we haven't ingested as
// much of the graph as we should. // much of the graph as we should.
initialHistoricalSyncer = s setInitialHistoricalSyncer(s)
initialHistoricalSyncSignal = s.ResetSyncedSignal()
case <-m.quit: case <-m.quit:
return return
@ -403,6 +440,13 @@ func (m *SyncManager) syncerHandler() {
} }
} }
// isPinnedSyncer returns true if the passed GossipSyncer is one of our pinned
// sync peers.
func (m *SyncManager) isPinnedSyncer(s *GossipSyncer) bool {
_, isPinnedSyncer := m.cfg.PinnedSyncers[s.cfg.peerPub]
return isPinnedSyncer
}
// createGossipSyncer creates the GossipSyncer for a newly connected peer. // createGossipSyncer creates the GossipSyncer for a newly connected peer.
func (m *SyncManager) createGossipSyncer(peer lnpeer.Peer) *GossipSyncer { func (m *SyncManager) createGossipSyncer(peer lnpeer.Peer) *GossipSyncer {
nodeID := route.Vertex(peer.PubKey()) nodeID := route.Vertex(peer.PubKey())
@ -426,6 +470,7 @@ func (m *SyncManager) createGossipSyncer(peer lnpeer.Peer) *GossipSyncer {
maxUndelayedQueryReplies: DefaultMaxUndelayedQueryReplies, maxUndelayedQueryReplies: DefaultMaxUndelayedQueryReplies,
delayedQueryReplyInterval: DefaultDelayedQueryReplyInterval, delayedQueryReplyInterval: DefaultDelayedQueryReplyInterval,
bestHeight: m.cfg.BestHeight, bestHeight: m.cfg.BestHeight,
markGraphSynced: m.markGraphSynced,
maxQueryChanRangeReplies: maxQueryChanRangeReplies, maxQueryChanRangeReplies: maxQueryChanRangeReplies,
}) })
@ -461,6 +506,13 @@ func (m *SyncManager) removeGossipSyncer(peer route.Vertex) {
return return
} }
// If it's a pinned syncer, then we can just exit as this doesn't
// affect our active syncer count.
if _, ok := m.pinnedActiveSyncers[peer]; ok {
delete(m.pinnedActiveSyncers, peer)
return
}
// Otherwise, we'll need find a new one to replace it, if any. // Otherwise, we'll need find a new one to replace it, if any.
delete(m.activeSyncers, peer) delete(m.activeSyncers, peer)
newActiveSyncer := chooseRandomSyncer( newActiveSyncer := chooseRandomSyncer(
@ -663,6 +715,10 @@ func (m *SyncManager) gossipSyncer(peer route.Vertex) (*GossipSyncer, bool) {
if ok { if ok {
return syncer, true return syncer, true
} }
syncer, ok = m.pinnedActiveSyncers[peer]
if ok {
return syncer, true
}
return nil, false return nil, false
} }
@ -694,12 +750,6 @@ func (m *SyncManager) markGraphSynced() {
atomic.StoreInt32(&m.initialHistoricalSyncCompleted, 1) atomic.StoreInt32(&m.initialHistoricalSyncCompleted, 1)
} }
// markGraphSyncing allows us to report that the initial historical sync is
// still undergoing.
func (m *SyncManager) markGraphSyncing() {
atomic.StoreInt32(&m.initialHistoricalSyncCompleted, 0)
}
// IsGraphSynced determines whether we've completed our initial historical sync. // IsGraphSynced determines whether we've completed our initial historical sync.
// The initial historical sync is done to ensure we've ingested as much of the // The initial historical sync is done to ensure we've ingested as much of the
// public graph as possible. // public graph as possible.

@ -7,9 +7,11 @@ import (
"testing" "testing"
"time" "time"
"github.com/btcsuite/btcd/btcec"
"github.com/davecgh/go-spew/spew" "github.com/davecgh/go-spew/spew"
"github.com/lightningnetwork/lnd/lntest/wait" "github.com/lightningnetwork/lnd/lntest/wait"
"github.com/lightningnetwork/lnd/lnwire" "github.com/lightningnetwork/lnd/lnwire"
"github.com/lightningnetwork/lnd/routing/route"
"github.com/lightningnetwork/lnd/ticker" "github.com/lightningnetwork/lnd/ticker"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
@ -18,8 +20,13 @@ import (
func randPeer(t *testing.T, quit chan struct{}) *mockPeer { func randPeer(t *testing.T, quit chan struct{}) *mockPeer {
t.Helper() t.Helper()
pk := randPubKey(t)
return peerWithPubkey(pk, quit)
}
func peerWithPubkey(pk *btcec.PublicKey, quit chan struct{}) *mockPeer {
return &mockPeer{ return &mockPeer{
pk: randPubKey(t), pk: pk,
sentMsgs: make(chan lnwire.Message), sentMsgs: make(chan lnwire.Message),
quit: quit, quit: quit,
} }
@ -28,6 +35,14 @@ func randPeer(t *testing.T, quit chan struct{}) *mockPeer {
// newTestSyncManager creates a new test SyncManager using mock implementations // newTestSyncManager creates a new test SyncManager using mock implementations
// of its dependencies. // of its dependencies.
func newTestSyncManager(numActiveSyncers int) *SyncManager { func newTestSyncManager(numActiveSyncers int) *SyncManager {
return newPinnedTestSyncManager(numActiveSyncers, nil)
}
// newTestSyncManager creates a new test SyncManager with a set of pinned
// syncers using mock implementations of its dependencies.
func newPinnedTestSyncManager(numActiveSyncers int,
pinnedSyncers PinnedSyncers) *SyncManager {
hID := lnwire.ShortChannelID{BlockHeight: latestKnownHeight} hID := lnwire.ShortChannelID{BlockHeight: latestKnownHeight}
return newSyncManager(&SyncManagerCfg{ return newSyncManager(&SyncManagerCfg{
ChanSeries: newMockChannelGraphTimeSeries(hID), ChanSeries: newMockChannelGraphTimeSeries(hID),
@ -37,6 +52,7 @@ func newTestSyncManager(numActiveSyncers int) *SyncManager {
BestHeight: func() uint32 { BestHeight: func() uint32 {
return latestKnownHeight return latestKnownHeight
}, },
PinnedSyncers: pinnedSyncers,
}) })
} }
@ -48,17 +64,45 @@ func TestSyncManagerNumActiveSyncers(t *testing.T) {
// We'll start by creating our test sync manager which will hold up to // We'll start by creating our test sync manager which will hold up to
// 3 active syncers. // 3 active syncers.
const numActiveSyncers = 3 const numActiveSyncers = 3
const numSyncers = numActiveSyncers + 1 const numPinnedSyncers = 3
const numInactiveSyncers = 1
syncMgr := newTestSyncManager(numActiveSyncers) pinnedSyncers := make(PinnedSyncers)
pinnedPubkeys := make(map[route.Vertex]*btcec.PublicKey)
for i := 0; i < numPinnedSyncers; i++ {
pubkey := randPubKey(t)
vertex := route.NewVertex(pubkey)
pinnedSyncers[vertex] = struct{}{}
pinnedPubkeys[vertex] = pubkey
}
syncMgr := newPinnedTestSyncManager(numActiveSyncers, pinnedSyncers)
syncMgr.Start() syncMgr.Start()
defer syncMgr.Stop() defer syncMgr.Stop()
// First we'll start by adding the pinned syncers. These should
// immediately be assigned PinnedSync.
for _, pubkey := range pinnedPubkeys {
peer := peerWithPubkey(pubkey, syncMgr.quit)
err := syncMgr.InitSyncState(peer)
require.NoError(t, err)
s := assertSyncerExistence(t, syncMgr, peer)
assertTransitionToChansSynced(t, s, peer)
assertActiveGossipTimestampRange(t, peer)
assertSyncerStatus(t, s, chansSynced, PinnedSync)
}
// We'll go ahead and create our syncers. We'll gather the ones which // We'll go ahead and create our syncers. We'll gather the ones which
// should be active and passive to check them later on. // should be active and passive to check them later on. The pinned peers
// added above should not influence the active syncer count.
for i := 0; i < numActiveSyncers; i++ { for i := 0; i < numActiveSyncers; i++ {
peer := randPeer(t, syncMgr.quit) peer := randPeer(t, syncMgr.quit)
syncMgr.InitSyncState(peer) err := syncMgr.InitSyncState(peer)
require.NoError(t, err)
s := assertSyncerExistence(t, syncMgr, peer) s := assertSyncerExistence(t, syncMgr, peer)
// The first syncer registered always attempts a historical // The first syncer registered always attempts a historical
@ -70,9 +114,11 @@ func TestSyncManagerNumActiveSyncers(t *testing.T) {
assertSyncerStatus(t, s, chansSynced, ActiveSync) assertSyncerStatus(t, s, chansSynced, ActiveSync)
} }
for i := 0; i < numSyncers-numActiveSyncers; i++ { for i := 0; i < numInactiveSyncers; i++ {
peer := randPeer(t, syncMgr.quit) peer := randPeer(t, syncMgr.quit)
syncMgr.InitSyncState(peer) err := syncMgr.InitSyncState(peer)
require.NoError(t, err)
s := assertSyncerExistence(t, syncMgr, peer) s := assertSyncerExistence(t, syncMgr, peer)
assertSyncerStatus(t, s, chansSynced, PassiveSync) assertSyncerStatus(t, s, chansSynced, PassiveSync)
} }

@ -42,6 +42,13 @@ const (
// They are started in a chansSynced state in order to accomplish their // They are started in a chansSynced state in order to accomplish their
// responsibilities above. // responsibilities above.
PassiveSync PassiveSync
// PinnedSync denotes an ActiveSync that doesn't count towards the
// default active syncer limits and is always active throughout the
// duration of the peer's connection. Each pinned syncer will begin by
// performing a historical sync to ensure we are well synchronized with
// their routing table.
PinnedSync
) )
// String returns a human readable string describing the target SyncerType. // String returns a human readable string describing the target SyncerType.
@ -51,11 +58,24 @@ func (t SyncerType) String() string {
return "ActiveSync" return "ActiveSync"
case PassiveSync: case PassiveSync:
return "PassiveSync" return "PassiveSync"
case PinnedSync:
return "PinnedSync"
default: default:
return fmt.Sprintf("unknown sync type %d", t) return fmt.Sprintf("unknown sync type %d", t)
} }
} }
// IsActiveSync returns true if the SyncerType should set a GossipTimestampRange
// allowing new gossip messages to be received from the peer.
func (t SyncerType) IsActiveSync() bool {
switch t {
case ActiveSync, PinnedSync:
return true
default:
return false
}
}
// syncerState is an enum that represents the current state of the GossipSyncer. // syncerState is an enum that represents the current state of the GossipSyncer.
// As the syncer is a state machine, we'll gate our actions based off of the // As the syncer is a state machine, we'll gate our actions based off of the
// current state and the next incoming message. // current state and the next incoming message.
@ -95,6 +115,12 @@ const (
// AuthenticatedGossiper, and decide if we should forward them to our // AuthenticatedGossiper, and decide if we should forward them to our
// target peer based on its update horizon. // target peer based on its update horizon.
chansSynced chansSynced
// syncerIdle is a state in which the gossip syncer can handle external
// requests to transition or perform historical syncs. It is used as the
// initial state for pinned syncers, as well as a fallthrough case for
// chansSynced allowing fully synced peers to facilitate requests.
syncerIdle
) )
// String returns a human readable string describing the target syncerState. // String returns a human readable string describing the target syncerState.
@ -115,6 +141,9 @@ func (s syncerState) String() string {
case chansSynced: case chansSynced:
return "chansSynced" return "chansSynced"
case syncerIdle:
return "syncerIdle"
default: default:
return "UNKNOWN STATE" return "UNKNOWN STATE"
} }
@ -251,6 +280,10 @@ type gossipSyncerCfg struct {
// bestHeight returns the latest height known of the chain. // bestHeight returns the latest height known of the chain.
bestHeight func() uint32 bestHeight func() uint32
// markGraphSynced updates the SyncManager's perception of whether we
// have completed at least one historical sync.
markGraphSynced func()
// maxQueryChanRangeReplies is the maximum number of replies we'll allow // maxQueryChanRangeReplies is the maximum number of replies we'll allow
// for a single QueryChannelRange request. // for a single QueryChannelRange request.
maxQueryChanRangeReplies uint32 maxQueryChanRangeReplies uint32
@ -521,6 +554,11 @@ func (g *GossipSyncer) channelGraphSyncer() {
// to our terminal state. // to our terminal state.
g.setSyncState(chansSynced) g.setSyncState(chansSynced)
// Ensure that the sync manager becomes aware that the
// historical sync completed so synced_to_graph is
// updated over rpc.
g.cfg.markGraphSynced()
// In this state, we've just sent off a new query for channels // In this state, we've just sent off a new query for channels
// that we don't yet know of. We'll remain in this state until // that we don't yet know of. We'll remain in this state until
// the remote party signals they've responded to our query in // the remote party signals they've responded to our query in
@ -560,7 +598,9 @@ func (g *GossipSyncer) channelGraphSyncer() {
// If we haven't yet sent out our update horizon, and // If we haven't yet sent out our update horizon, and
// we want to receive real-time channel updates, we'll // we want to receive real-time channel updates, we'll
// do so now. // do so now.
if g.localUpdateHorizon == nil && syncType == ActiveSync { if g.localUpdateHorizon == nil &&
syncType.IsActiveSync() {
err := g.sendGossipTimestampRange( err := g.sendGossipTimestampRange(
time.Now(), math.MaxUint32, time.Now(), math.MaxUint32,
) )
@ -570,10 +610,16 @@ func (g *GossipSyncer) channelGraphSyncer() {
g.cfg.peerPub, err) g.cfg.peerPub, err)
} }
} }
// With our horizon set, we'll simply reply to any new // With our horizon set, we'll simply reply to any new
// messages or process any state transitions and exit if // messages or process any state transitions and exit if
// needed. // needed.
fallthrough
// Pinned peers will begin in this state, since they will
// immediately receive a request to perform a historical sync.
// Otherwise, we fall through after ending in chansSynced to
// facilitate new requests.
case syncerIdle:
select { select {
case req := <-g.syncTransitionReqs: case req := <-g.syncTransitionReqs:
req.errChan <- g.handleSyncTransition(req) req.errChan <- g.handleSyncTransition(req)
@ -825,6 +871,11 @@ func (g *GossipSyncer) processChanRangeReply(msg *lnwire.ReplyChannelRange) erro
g.cfg.peerPub[:]) g.cfg.peerPub[:])
g.setSyncState(chansSynced) g.setSyncState(chansSynced)
// Ensure that the sync manager becomes aware that the
// historical sync completed so synced_to_graph is updated over
// rpc.
g.cfg.markGraphSynced()
return nil return nil
} }
@ -1418,7 +1469,7 @@ func (g *GossipSyncer) handleSyncTransition(req *syncTransitionReq) error {
switch req.newSyncType { switch req.newSyncType {
// If an active sync has been requested, then we should resume receiving // If an active sync has been requested, then we should resume receiving
// new graph updates from the remote peer. // new graph updates from the remote peer.
case ActiveSync: case ActiveSync, PinnedSync:
firstTimestamp = time.Now() firstTimestamp = time.Now()
timestampRange = math.MaxUint32 timestampRange = math.MaxUint32

@ -189,6 +189,7 @@ func newTestSyncer(hID lnwire.ShortChannelID,
bestHeight: func() uint32 { bestHeight: func() uint32 {
return latestKnownHeight return latestKnownHeight
}, },
markGraphSynced: func() {},
maxQueryChanRangeReplies: maxQueryChanRangeReplies, maxQueryChanRangeReplies: maxQueryChanRangeReplies,
} }
syncer := newGossipSyncer(cfg) syncer := newGossipSyncer(cfg)

28
lncfg/gossip.go Normal file

@ -0,0 +1,28 @@
package lncfg
import (
"github.com/lightningnetwork/lnd/discovery"
"github.com/lightningnetwork/lnd/routing/route"
)
type Gossip struct {
PinnedSyncersRaw []string `long:"pinned-syncers" description:"A set of peers that should always remain in an active sync state, which can be used to closely synchronize the routing tables of two nodes. The value should be comma separated list of hex-encoded pubkeys. Connected peers matching this pubkey will remain active for the duration of the connection and not count towards the NumActiveSyncer count."`
PinnedSyncers discovery.PinnedSyncers
}
// Parse the pubkeys for the pinned syncers.
func (g *Gossip) Parse() error {
pinnedSyncers := make(discovery.PinnedSyncers)
for _, pubkeyStr := range g.PinnedSyncersRaw {
vertex, err := route.NewVertexFromStr(pubkeyStr)
if err != nil {
return err
}
pinnedSyncers[vertex] = struct{}{}
}
g.PinnedSyncers = pinnedSyncers
return nil
}

@ -471,18 +471,23 @@ const (
// //
//Denotes that we are not receiving new graph updates from the peer. //Denotes that we are not receiving new graph updates from the peer.
Peer_PASSIVE_SYNC Peer_SyncType = 2 Peer_PASSIVE_SYNC Peer_SyncType = 2
//
//Denotes that this peer is pinned into an active sync.
Peer_PINNED_SYNC Peer_SyncType = 3
) )
var Peer_SyncType_name = map[int32]string{ var Peer_SyncType_name = map[int32]string{
0: "UNKNOWN_SYNC", 0: "UNKNOWN_SYNC",
1: "ACTIVE_SYNC", 1: "ACTIVE_SYNC",
2: "PASSIVE_SYNC", 2: "PASSIVE_SYNC",
3: "PINNED_SYNC",
} }
var Peer_SyncType_value = map[string]int32{ var Peer_SyncType_value = map[string]int32{
"UNKNOWN_SYNC": 0, "UNKNOWN_SYNC": 0,
"ACTIVE_SYNC": 1, "ACTIVE_SYNC": 1,
"PASSIVE_SYNC": 2, "PASSIVE_SYNC": 2,
"PINNED_SYNC": 3,
} }
func (x Peer_SyncType) String() string { func (x Peer_SyncType) String() string {
@ -12845,783 +12850,783 @@ 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{
// 12407 bytes of a gzipped FileDescriptorProto // 12415 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, 0xbd, 0x6b, 0x6c, 0x23, 0x59,
0x76, 0x18, 0xdc, 0x7c, 0x89, 0xe4, 0x21, 0x29, 0x51, 0x57, 0x2f, 0xb6, 0x7a, 0x7a, 0xba, 0xa7, 0x76, 0x18, 0xdc, 0x7c, 0x89, 0xe4, 0x21, 0x29, 0x51, 0x57, 0x2f, 0xb6, 0x7a, 0x7a, 0xba, 0xa7,
0x66, 0x76, 0xa6, 0xb7, 0x67, 0x46, 0xd3, 0xd3, 0x33, 0x3d, 0x8f, 0xed, 0xcf, 0xbb, 0x4b, 0x49, 0x66, 0x76, 0xa6, 0xb7, 0x67, 0x46, 0xd3, 0xd3, 0x33, 0x3d, 0x8f, 0xed, 0xcf, 0xeb, 0xa5, 0x24,
0x54, 0x8b, 0xdb, 0x12, 0xa9, 0x2d, 0x52, 0x33, 0x9e, 0x85, 0xed, 0x72, 0x89, 0xbc, 0x92, 0xea, 0xaa, 0xc5, 0x6d, 0x89, 0xd4, 0x16, 0xa9, 0x19, 0xcf, 0xc2, 0x76, 0xb9, 0x44, 0x5e, 0x49, 0xf5,
0x6b, 0xb2, 0x8a, 0x5b, 0x55, 0x54, 0x4b, 0x1b, 0x04, 0xf0, 0x0f, 0xc7, 0x09, 0x0c, 0x23, 0x40, 0x35, 0x59, 0xc5, 0xad, 0x2a, 0xaa, 0xa5, 0x0d, 0x02, 0xf8, 0x87, 0xe3, 0x04, 0x86, 0x11, 0x20,
0x00, 0x3b, 0xc8, 0xcb, 0x48, 0x82, 0x00, 0xc9, 0x3f, 0xc3, 0x80, 0xed, 0x7f, 0xf9, 0x17, 0x20, 0x80, 0x1d, 0xe4, 0x65, 0x24, 0x41, 0x80, 0xe4, 0x9f, 0x61, 0xc0, 0xf6, 0xbf, 0xfc, 0x0b, 0x10,
0x46, 0x80, 0x3c, 0x10, 0xc4, 0x46, 0x1e, 0x08, 0x0c, 0x04, 0x48, 0x9c, 0x1f, 0x01, 0x02, 0x03, 0x23, 0x40, 0x82, 0x20, 0x88, 0x8d, 0x3c, 0x10, 0x38, 0x08, 0x90, 0x38, 0x3f, 0x02, 0x04, 0x06,
0xfe, 0x9b, 0x20, 0xc1, 0x3d, 0xf7, 0x51, 0xb7, 0x1e, 0xea, 0xee, 0x59, 0x4f, 0xf6, 0x8f, 0xc4, 0xfc, 0x37, 0x41, 0x82, 0x7b, 0xee, 0xa3, 0x6e, 0x3d, 0xd4, 0xdd, 0xb3, 0x3b, 0xd9, 0x3f, 0x12,
0x3a, 0xe7, 0xdc, 0xf7, 0xbd, 0xe7, 0x9e, 0x7b, 0xce, 0xb9, 0xe7, 0x42, 0xd5, 0x9f, 0x8d, 0xb6, 0xeb, 0x9c, 0x73, 0xdf, 0xf7, 0x9e, 0x7b, 0xee, 0x39, 0xe7, 0x9e, 0x0b, 0x55, 0x7f, 0x36, 0xda,
0x66, 0xbe, 0x17, 0x7a, 0xa4, 0x34, 0x71, 0xfd, 0xd9, 0xc8, 0xf8, 0xd3, 0x1c, 0x14, 0x8f, 0xc3, 0x9a, 0xf9, 0x5e, 0xe8, 0x91, 0xd2, 0xc4, 0xf5, 0x67, 0x23, 0xe3, 0xcf, 0x72, 0x50, 0x3c, 0x0e,
0x4b, 0x8f, 0x3c, 0x82, 0xba, 0x3d, 0x1e, 0xfb, 0x34, 0x08, 0xac, 0xf0, 0x6a, 0x46, 0x5b, 0xb9, 0x2f, 0x3d, 0xf2, 0x08, 0xea, 0xf6, 0x78, 0xec, 0xd3, 0x20, 0xb0, 0xc2, 0xab, 0x19, 0x6d, 0xe5,
0xbb, 0xb9, 0x7b, 0x8b, 0x0f, 0xc9, 0x16, 0x92, 0x6d, 0xb5, 0x39, 0x6a, 0x78, 0x35, 0xa3, 0x66, 0xee, 0xe6, 0xee, 0x2d, 0x3e, 0x24, 0x5b, 0x48, 0xb6, 0xd5, 0xe6, 0xa8, 0xe1, 0xd5, 0x8c, 0x9a,
0xcd, 0x8e, 0x3e, 0x48, 0x0b, 0xca, 0xe2, 0xb3, 0x95, 0xbf, 0x9b, 0xbb, 0x57, 0x35, 0xe5, 0x27, 0x35, 0x3b, 0xfa, 0x20, 0x2d, 0x28, 0x8b, 0xcf, 0x56, 0xfe, 0x6e, 0xee, 0x5e, 0xd5, 0x94, 0x9f,
0xb9, 0x0d, 0x60, 0x4f, 0xbd, 0xb9, 0x1b, 0x5a, 0x81, 0x1d, 0xb6, 0x0a, 0x77, 0x73, 0xf7, 0x0a, 0xe4, 0x36, 0x80, 0x3d, 0xf5, 0xe6, 0x6e, 0x68, 0x05, 0x76, 0xd8, 0x2a, 0xdc, 0xcd, 0xdd, 0x2b,
0x66, 0x95, 0x43, 0x06, 0x76, 0x48, 0x6e, 0x41, 0x75, 0xf6, 0xcc, 0x0a, 0x46, 0xbe, 0x33, 0x0b, 0x98, 0x55, 0x0e, 0x19, 0xd8, 0x21, 0xb9, 0x05, 0xd5, 0xd9, 0x33, 0x2b, 0x18, 0xf9, 0xce, 0x2c,
0x5b, 0x45, 0x4c, 0x5a, 0x99, 0x3d, 0x1b, 0xe0, 0x37, 0x79, 0x17, 0x2a, 0xde, 0x3c, 0x9c, 0x79, 0x6c, 0x15, 0x31, 0x69, 0x65, 0xf6, 0x6c, 0x80, 0xdf, 0xe4, 0x5d, 0xa8, 0x78, 0xf3, 0x70, 0xe6,
0x8e, 0x1b, 0xb6, 0x4a, 0x77, 0x73, 0xf7, 0x6a, 0x0f, 0x97, 0x44, 0x45, 0xfa, 0xf3, 0xf0, 0x88, 0x39, 0x6e, 0xd8, 0x2a, 0xdd, 0xcd, 0xdd, 0xab, 0x3d, 0x5c, 0x12, 0x15, 0xe9, 0xcf, 0xc3, 0x23,
0x81, 0x4d, 0x45, 0x40, 0xde, 0x82, 0xc6, 0xc8, 0x73, 0x4f, 0x1d, 0x7f, 0x6a, 0x87, 0x8e, 0xe7, 0x06, 0x36, 0x15, 0x01, 0x79, 0x0b, 0x1a, 0x23, 0xcf, 0x3d, 0x75, 0xfc, 0xa9, 0x1d, 0x3a, 0x9e,
0x06, 0xad, 0x05, 0x2c, 0x2b, 0x0e, 0x34, 0xfe, 0x79, 0x1e, 0x6a, 0x43, 0xdf, 0x76, 0x03, 0x7b, 0x1b, 0xb4, 0x16, 0xb0, 0xac, 0x38, 0xd0, 0xf8, 0xe7, 0x79, 0xa8, 0x0d, 0x7d, 0xdb, 0x0d, 0xec,
0xc4, 0x00, 0x64, 0x03, 0xca, 0xe1, 0xa5, 0x75, 0x6e, 0x07, 0xe7, 0xd8, 0xd4, 0xaa, 0xb9, 0x10, 0x11, 0x03, 0x90, 0x0d, 0x28, 0x87, 0x97, 0xd6, 0xb9, 0x1d, 0x9c, 0x63, 0x53, 0xab, 0xe6, 0x42,
0x5e, 0xee, 0xdb, 0xc1, 0x39, 0x59, 0x87, 0x05, 0x5e, 0x4b, 0x6c, 0x50, 0xc1, 0x14, 0x5f, 0xe4, 0x78, 0xb9, 0x6f, 0x07, 0xe7, 0x64, 0x1d, 0x16, 0x78, 0x2d, 0xb1, 0x41, 0x05, 0x53, 0x7c, 0x91,
0x5d, 0x58, 0x76, 0xe7, 0x53, 0x2b, 0x5e, 0x14, 0x6b, 0x56, 0xc9, 0x6c, 0xba, 0xf3, 0xe9, 0x8e, 0x77, 0x61, 0xd9, 0x9d, 0x4f, 0xad, 0x78, 0x51, 0xac, 0x59, 0x25, 0xb3, 0xe9, 0xce, 0xa7, 0x3b,
0x0e, 0x67, 0x8d, 0x3f, 0x99, 0x78, 0xa3, 0x67, 0xbc, 0x00, 0xde, 0xbc, 0x2a, 0x42, 0xb0, 0x8c, 0x3a, 0x9c, 0x35, 0xfe, 0x64, 0xe2, 0x8d, 0x9e, 0xf1, 0x02, 0x78, 0xf3, 0xaa, 0x08, 0xc1, 0x32,
0x37, 0xa0, 0x2e, 0xd0, 0xd4, 0x39, 0x3b, 0xe7, 0x6d, 0x2c, 0x99, 0x35, 0x4e, 0x80, 0x20, 0x96, 0xde, 0x80, 0xba, 0x40, 0x53, 0xe7, 0xec, 0x9c, 0xb7, 0xb1, 0x64, 0xd6, 0x38, 0x01, 0x82, 0x58,
0x43, 0xe8, 0x4c, 0xa9, 0x15, 0x84, 0xf6, 0x74, 0x26, 0x9a, 0x54, 0x65, 0x90, 0x01, 0x03, 0x20, 0x0e, 0xa1, 0x33, 0xa5, 0x56, 0x10, 0xda, 0xd3, 0x99, 0x68, 0x52, 0x95, 0x41, 0x06, 0x0c, 0x80,
0xda, 0x0b, 0xed, 0x89, 0x75, 0x4a, 0x69, 0xd0, 0x2a, 0x0b, 0x34, 0x83, 0xec, 0x51, 0x1a, 0x90, 0x68, 0x2f, 0xb4, 0x27, 0xd6, 0x29, 0xa5, 0x41, 0xab, 0x2c, 0xd0, 0x0c, 0xb2, 0x47, 0x69, 0x40,
0x6f, 0xc1, 0xe2, 0x98, 0x06, 0xa1, 0x25, 0x06, 0x83, 0x06, 0xad, 0xca, 0xdd, 0xc2, 0xbd, 0xaa, 0xbe, 0x05, 0x8b, 0x63, 0x1a, 0x84, 0x96, 0x18, 0x0c, 0x1a, 0xb4, 0x2a, 0x77, 0x0b, 0xf7, 0xaa,
0xd9, 0x60, 0xd0, 0xb6, 0x04, 0x92, 0xd7, 0x00, 0x7c, 0xfb, 0xb9, 0xc5, 0x3a, 0x82, 0x5e, 0xb6, 0x66, 0x83, 0x41, 0xdb, 0x12, 0x48, 0x5e, 0x03, 0xf0, 0xed, 0xe7, 0x16, 0xeb, 0x08, 0x7a, 0xd9,
0xaa, 0x7c, 0x14, 0x7c, 0xfb, 0xf9, 0xf0, 0x72, 0x9f, 0x5e, 0x92, 0x55, 0x28, 0x4d, 0xec, 0x13, 0xaa, 0xf2, 0x51, 0xf0, 0xed, 0xe7, 0xc3, 0xcb, 0x7d, 0x7a, 0x49, 0x56, 0xa1, 0x34, 0xb1, 0x4f,
0x3a, 0x69, 0x01, 0x22, 0xf8, 0x87, 0xf1, 0x23, 0x58, 0x7f, 0x42, 0x43, 0xad, 0x2b, 0x03, 0x93, 0xe8, 0xa4, 0x05, 0x88, 0xe0, 0x1f, 0xc6, 0x0f, 0x61, 0xfd, 0x09, 0x0d, 0xb5, 0xae, 0x0c, 0x4c,
0xfe, 0x78, 0x4e, 0x83, 0x90, 0xb5, 0x2a, 0x08, 0x6d, 0x3f, 0x94, 0xad, 0xca, 0xf1, 0x56, 0x21, 0xfa, 0xa3, 0x39, 0x0d, 0x42, 0xd6, 0xaa, 0x20, 0xb4, 0xfd, 0x50, 0xb6, 0x2a, 0xc7, 0x5b, 0x85,
0x2c, 0x6a, 0x15, 0x75, 0xc7, 0x92, 0x20, 0x8f, 0x04, 0x55, 0xea, 0x8e, 0x39, 0xda, 0x38, 0x00, 0xb0, 0xa8, 0x55, 0xd4, 0x1d, 0x4b, 0x82, 0x3c, 0x12, 0x54, 0xa9, 0x3b, 0xe6, 0x68, 0xe3, 0x00,
0xa2, 0x65, 0xbc, 0x4b, 0x43, 0xdb, 0x99, 0x04, 0xe4, 0x13, 0xa8, 0x87, 0x5a, 0x71, 0xad, 0xdc, 0x88, 0x96, 0xf1, 0x2e, 0x0d, 0x6d, 0x67, 0x12, 0x90, 0x4f, 0xa0, 0x1e, 0x6a, 0xc5, 0xb5, 0x72,
0xdd, 0xc2, 0xbd, 0x9a, 0x9a, 0x9a, 0x5a, 0x02, 0x33, 0x46, 0x67, 0x9c, 0x43, 0x65, 0x8f, 0xd2, 0x77, 0x0b, 0xf7, 0x6a, 0x6a, 0x6a, 0x6a, 0x09, 0xcc, 0x18, 0x9d, 0x71, 0x0e, 0x95, 0x3d, 0x4a,
0x03, 0x67, 0xea, 0x84, 0x64, 0x1d, 0x4a, 0xa7, 0xce, 0x25, 0x1d, 0x63, 0xa5, 0x0a, 0xfb, 0x37, 0x0f, 0x9c, 0xa9, 0x13, 0x92, 0x75, 0x28, 0x9d, 0x3a, 0x97, 0x74, 0x8c, 0x95, 0x2a, 0xec, 0xdf,
0x4c, 0xfe, 0x49, 0xee, 0x00, 0xe0, 0x0f, 0x6b, 0xaa, 0x66, 0xe9, 0xfe, 0x0d, 0xb3, 0x8a, 0xb0, 0x30, 0xf9, 0x27, 0xb9, 0x03, 0x80, 0x3f, 0xac, 0xa9, 0x9a, 0xa5, 0xfb, 0x37, 0xcc, 0x2a, 0xc2,
0xc3, 0xc0, 0x0e, 0xc9, 0x26, 0x94, 0x67, 0xd4, 0x1f, 0x51, 0x39, 0x1f, 0xf6, 0x6f, 0x98, 0x12, 0x0e, 0x03, 0x3b, 0x24, 0x9b, 0x50, 0x9e, 0x51, 0x7f, 0x44, 0xe5, 0x7c, 0xd8, 0xbf, 0x61, 0x4a,
0xb0, 0x5d, 0x86, 0xd2, 0x84, 0xe5, 0x6e, 0xfc, 0x61, 0x09, 0x6a, 0x03, 0xea, 0x8e, 0x65, 0x4f, 0xc0, 0x76, 0x19, 0x4a, 0x13, 0x96, 0xbb, 0xf1, 0x47, 0x25, 0xa8, 0x0d, 0xa8, 0x3b, 0x96, 0x3d,
0x10, 0x28, 0xb2, 0x8e, 0xc6, 0xc2, 0xea, 0x26, 0xfe, 0x26, 0x6f, 0x42, 0x0d, 0x87, 0x24, 0x08, 0x41, 0xa0, 0xc8, 0x3a, 0x1a, 0x0b, 0xab, 0x9b, 0xf8, 0x9b, 0xbc, 0x09, 0x35, 0x1c, 0x92, 0x20,
0x7d, 0xc7, 0x3d, 0xe3, 0xab, 0x65, 0x3b, 0xdf, 0xca, 0x99, 0xc0, 0xc0, 0x03, 0x84, 0x92, 0x26, 0xf4, 0x1d, 0xf7, 0x8c, 0xaf, 0x96, 0xed, 0x7c, 0x2b, 0x67, 0x02, 0x03, 0x0f, 0x10, 0x4a, 0x9a,
0x14, 0xec, 0xa9, 0x5c, 0x2d, 0xec, 0x27, 0xb9, 0x09, 0x15, 0x7b, 0x1a, 0xf2, 0xea, 0xd5, 0x11, 0x50, 0xb0, 0xa7, 0x72, 0xb5, 0xb0, 0x9f, 0xe4, 0x26, 0x54, 0xec, 0x69, 0xc8, 0xab, 0x57, 0x47,
0x5c, 0xb6, 0xa7, 0x21, 0x56, 0xed, 0x0d, 0xa8, 0xcf, 0xec, 0xab, 0x29, 0x75, 0xc3, 0x68, 0x9a, 0x70, 0xd9, 0x9e, 0x86, 0x58, 0xb5, 0x37, 0xa0, 0x3e, 0xb3, 0xaf, 0xa6, 0xd4, 0x0d, 0xa3, 0x69,
0xd5, 0xcd, 0x9a, 0x80, 0xe1, 0x44, 0x7b, 0x08, 0x2b, 0x3a, 0x89, 0x2c, 0xbc, 0xa4, 0x0a, 0x5f, 0x56, 0x37, 0x6b, 0x02, 0x86, 0x13, 0xed, 0x21, 0xac, 0xe8, 0x24, 0xb2, 0xf0, 0x92, 0x2a, 0x7c,
0xd6, 0xa8, 0x45, 0x1d, 0xde, 0x81, 0x25, 0x99, 0xc6, 0xe7, 0xed, 0xc1, 0xe9, 0x57, 0x35, 0x17, 0x59, 0xa3, 0x16, 0x75, 0x78, 0x07, 0x96, 0x64, 0x1a, 0x9f, 0xb7, 0x07, 0xa7, 0x5f, 0xd5, 0x5c,
0x05, 0x58, 0xb6, 0xf2, 0x1e, 0x34, 0x4f, 0x1d, 0xd7, 0x9e, 0x58, 0xa3, 0x49, 0x78, 0x61, 0x8d, 0x14, 0x60, 0xd9, 0xca, 0x7b, 0xd0, 0x3c, 0x75, 0x5c, 0x7b, 0x62, 0x8d, 0x26, 0xe1, 0x85, 0x35,
0xe9, 0x24, 0xb4, 0x71, 0x26, 0x96, 0xcc, 0x45, 0x84, 0xef, 0x4c, 0xc2, 0x8b, 0x5d, 0x06, 0x25, 0xa6, 0x93, 0xd0, 0xc6, 0x99, 0x58, 0x32, 0x17, 0x11, 0xbe, 0x33, 0x09, 0x2f, 0x76, 0x19, 0x94,
0xef, 0x41, 0xf5, 0x94, 0x52, 0x0b, 0x3b, 0xab, 0x55, 0x89, 0x2d, 0x68, 0x39, 0x42, 0x66, 0xe5, 0xbc, 0x07, 0xd5, 0x53, 0x4a, 0x2d, 0xec, 0xac, 0x56, 0x25, 0xb6, 0xa0, 0xe5, 0x08, 0x99, 0x95,
0x54, 0x8e, 0xd5, 0x7b, 0xd0, 0xf4, 0xe6, 0xe1, 0x99, 0xe7, 0xb8, 0x67, 0xd6, 0xe8, 0xdc, 0x76, 0x53, 0x39, 0x56, 0xef, 0x41, 0xd3, 0x9b, 0x87, 0x67, 0x9e, 0xe3, 0x9e, 0x59, 0xa3, 0x73, 0xdb,
0x2d, 0x67, 0x8c, 0x73, 0xb3, 0xb8, 0x9d, 0x7f, 0x90, 0x33, 0x17, 0x25, 0x6e, 0xe7, 0xdc, 0x76, 0xb5, 0x9c, 0x31, 0xce, 0xcd, 0xe2, 0x76, 0xfe, 0x41, 0xce, 0x5c, 0x94, 0xb8, 0x9d, 0x73, 0xdb,
0xbb, 0x63, 0xf2, 0x36, 0x2c, 0x4d, 0xec, 0x20, 0xb4, 0xce, 0xbd, 0x99, 0x35, 0x9b, 0x9f, 0x3c, 0xed, 0x8e, 0xc9, 0xdb, 0xb0, 0x34, 0xb1, 0x83, 0xd0, 0x3a, 0xf7, 0x66, 0xd6, 0x6c, 0x7e, 0xf2,
0xa3, 0x57, 0xad, 0x06, 0x76, 0x44, 0x83, 0x81, 0xf7, 0xbd, 0xd9, 0x11, 0x02, 0xd9, 0xd4, 0xc3, 0x8c, 0x5e, 0xb5, 0x1a, 0xd8, 0x11, 0x0d, 0x06, 0xde, 0xf7, 0x66, 0x47, 0x08, 0x64, 0x53, 0x0f,
0x7a, 0xf2, 0x4a, 0xb0, 0x29, 0xdd, 0x30, 0xab, 0x0c, 0xc2, 0x0b, 0xfd, 0x0a, 0x56, 0x70, 0x78, 0xeb, 0xc9, 0x2b, 0xc1, 0xa6, 0x74, 0xc3, 0xac, 0x32, 0x08, 0x2f, 0xf4, 0x2b, 0x58, 0xc1, 0xe1,
0x46, 0xf3, 0x20, 0xf4, 0xa6, 0x96, 0x4f, 0x47, 0x9e, 0x3f, 0x0e, 0x5a, 0x35, 0x9c, 0x6b, 0xdf, 0x19, 0xcd, 0x83, 0xd0, 0x9b, 0x5a, 0x3e, 0x1d, 0x79, 0xfe, 0x38, 0x68, 0xd5, 0x70, 0xae, 0x7d,
0x16, 0x95, 0xd5, 0xc6, 0x78, 0x6b, 0x97, 0x06, 0xe1, 0x0e, 0x12, 0x9b, 0x9c, 0xb6, 0xe3, 0x86, 0x5b, 0x54, 0x56, 0x1b, 0xe3, 0xad, 0x5d, 0x1a, 0x84, 0x3b, 0x48, 0x6c, 0x72, 0xda, 0x8e, 0x1b,
0xfe, 0x95, 0xb9, 0x3c, 0x4e, 0xc2, 0xc9, 0x7b, 0x40, 0xec, 0xc9, 0xc4, 0x7b, 0x6e, 0x05, 0x74, 0xfa, 0x57, 0xe6, 0xf2, 0x38, 0x09, 0x27, 0xef, 0x01, 0xb1, 0x27, 0x13, 0xef, 0xb9, 0x15, 0xd0,
0x72, 0x6a, 0x89, 0x4e, 0x6c, 0x2d, 0xde, 0xcd, 0xdd, 0xab, 0x98, 0x4d, 0xc4, 0x0c, 0xe8, 0xe4, 0xc9, 0xa9, 0x25, 0x3a, 0xb1, 0xb5, 0x78, 0x37, 0x77, 0xaf, 0x62, 0x36, 0x11, 0x33, 0xa0, 0x93,
0xf4, 0x88, 0xc3, 0xc9, 0x27, 0x80, 0x8b, 0xd4, 0x3a, 0xa5, 0x76, 0x38, 0xf7, 0x69, 0xd0, 0x5a, 0xd3, 0x23, 0x0e, 0x27, 0x9f, 0x00, 0x2e, 0x52, 0xeb, 0x94, 0xda, 0xe1, 0xdc, 0xa7, 0x41, 0x6b,
0xba, 0x5b, 0xb8, 0xb7, 0xf8, 0x70, 0x59, 0xf5, 0x17, 0x82, 0xb7, 0x9d, 0xd0, 0xac, 0x33, 0x3a, 0xe9, 0x6e, 0xe1, 0xde, 0xe2, 0xc3, 0x65, 0xd5, 0x5f, 0x08, 0xde, 0x76, 0x42, 0xb3, 0xce, 0xe8,
0xf1, 0x1d, 0x6c, 0xee, 0xc2, 0x7a, 0x76, 0x95, 0xd8, 0xa4, 0x62, 0xbd, 0xc2, 0x26, 0x63, 0xd1, 0xc4, 0x77, 0xb0, 0xb9, 0x0b, 0xeb, 0xd9, 0x55, 0x62, 0x93, 0x8a, 0xf5, 0x0a, 0x9b, 0x8c, 0x45,
0x64, 0x3f, 0xd9, 0xca, 0xbe, 0xb0, 0x27, 0x73, 0x8a, 0xb3, 0xb0, 0x6e, 0xf2, 0x8f, 0xef, 0xe4, 0x93, 0xfd, 0x64, 0x2b, 0xfb, 0xc2, 0x9e, 0xcc, 0x29, 0xce, 0xc2, 0xba, 0xc9, 0x3f, 0xbe, 0x93,
0x3f, 0xcb, 0x19, 0xbf, 0x9f, 0x83, 0x3a, 0x6f, 0x65, 0x30, 0xf3, 0xdc, 0x80, 0x92, 0x37, 0xa1, 0xff, 0x2c, 0x67, 0xfc, 0x41, 0x0e, 0xea, 0xbc, 0x95, 0xc1, 0xcc, 0x73, 0x03, 0x4a, 0xde, 0x84,
0x21, 0x67, 0x03, 0xf5, 0x7d, 0xcf, 0x17, 0xdc, 0x52, 0xce, 0xbc, 0x0e, 0x83, 0x91, 0x6f, 0x43, 0x86, 0x9c, 0x0d, 0xd4, 0xf7, 0x3d, 0x5f, 0x70, 0x4b, 0x39, 0xf3, 0x3a, 0x0c, 0x46, 0xbe, 0x0d,
0x53, 0x12, 0xcd, 0x7c, 0xea, 0x4c, 0xed, 0x33, 0x99, 0xb5, 0x9c, 0x4a, 0x47, 0x02, 0x4c, 0x3e, 0x4d, 0x49, 0x34, 0xf3, 0xa9, 0x33, 0xb5, 0xcf, 0x64, 0xd6, 0x72, 0x2a, 0x1d, 0x09, 0x30, 0xf9,
0x8c, 0xf2, 0xf3, 0xbd, 0x79, 0x48, 0x71, 0xae, 0xd7, 0x1e, 0xd6, 0x45, 0xf3, 0x4c, 0x06, 0x53, 0x30, 0xca, 0xcf, 0xf7, 0xe6, 0x21, 0xc5, 0xb9, 0x5e, 0x7b, 0x58, 0x17, 0xcd, 0x33, 0x19, 0x4c,
0xb9, 0xe3, 0xd7, 0x2b, 0xcc, 0x73, 0xe3, 0xb7, 0x72, 0x40, 0x58, 0xb5, 0x87, 0x1e, 0xcf, 0x20, 0xe5, 0x8e, 0x5f, 0xaf, 0x30, 0xcf, 0x8d, 0xdf, 0xce, 0x01, 0x61, 0xd5, 0x1e, 0x7a, 0x3c, 0x83,
0xe2, 0x48, 0xb1, 0x94, 0xb9, 0x57, 0x5e, 0x21, 0xf9, 0x17, 0xad, 0x10, 0x03, 0x4a, 0xbc, 0xee, 0x88, 0x23, 0xc5, 0x52, 0xe6, 0x5e, 0x79, 0x85, 0xe4, 0x5f, 0xb4, 0x42, 0x0c, 0x28, 0xf1, 0xba,
0xc5, 0x8c, 0xba, 0x73, 0xd4, 0x0f, 0x8a, 0x95, 0x42, 0xb3, 0x68, 0xfc, 0xa7, 0x02, 0xac, 0xb2, 0x17, 0x33, 0xea, 0xce, 0x51, 0xdf, 0x2f, 0x56, 0x0a, 0xcd, 0xa2, 0xf1, 0x1f, 0x0b, 0xb0, 0xca,
0x79, 0xea, 0xd2, 0x49, 0x7b, 0x34, 0xa2, 0x33, 0xb5, 0x76, 0xee, 0x40, 0xcd, 0xf5, 0xc6, 0x54, 0xe6, 0xa9, 0x4b, 0x27, 0xed, 0xd1, 0x88, 0xce, 0xd4, 0xda, 0xb9, 0x03, 0x35, 0xd7, 0x1b, 0x53,
0xce, 0x58, 0x5e, 0x31, 0x60, 0x20, 0x6d, 0xba, 0x9e, 0xdb, 0x8e, 0xcb, 0x2b, 0xce, 0x3b, 0xb3, 0x39, 0x63, 0x79, 0xc5, 0x80, 0x81, 0xb4, 0xe9, 0x7a, 0x6e, 0x3b, 0x2e, 0xaf, 0x38, 0xef, 0xcc,
0x8a, 0x10, 0xac, 0xf6, 0xdb, 0xb0, 0x34, 0xa3, 0xee, 0x58, 0x5f, 0x22, 0x05, 0x3e, 0xeb, 0x05, 0x2a, 0x42, 0xb0, 0xda, 0x6f, 0xc3, 0xd2, 0x8c, 0xba, 0x63, 0x7d, 0x89, 0x14, 0xf8, 0xac, 0x17,
0x58, 0xac, 0x8e, 0x3b, 0x50, 0x3b, 0x9d, 0x73, 0x3a, 0xc6, 0x58, 0x8a, 0x38, 0x07, 0x40, 0x80, 0x60, 0xb1, 0x3a, 0xee, 0x40, 0xed, 0x74, 0xce, 0xe9, 0x18, 0x63, 0x29, 0xe2, 0x1c, 0x00, 0x01,
0xda, 0x9c, 0xbf, 0xcc, 0xe6, 0xc1, 0x39, 0x62, 0x4b, 0x88, 0x2d, 0xb3, 0x6f, 0x86, 0xba, 0x0d, 0x6a, 0x73, 0xfe, 0x32, 0x9b, 0x07, 0xe7, 0x88, 0x2d, 0x21, 0xb6, 0xcc, 0xbe, 0x19, 0xea, 0x36,
0x30, 0x9e, 0x07, 0xa1, 0x58, 0x31, 0x0b, 0x88, 0xac, 0x32, 0x08, 0x5f, 0x31, 0xef, 0xc3, 0xca, 0xc0, 0x78, 0x1e, 0x84, 0x62, 0xc5, 0x2c, 0x20, 0xb2, 0xca, 0x20, 0x7c, 0xc5, 0xbc, 0x0f, 0x2b,
0xd4, 0xbe, 0xb4, 0x70, 0xee, 0x58, 0x8e, 0x6b, 0x9d, 0x4e, 0x90, 0xa9, 0x97, 0x91, 0xae, 0x39, 0x53, 0xfb, 0xd2, 0xc2, 0xb9, 0x63, 0x39, 0xae, 0x75, 0x3a, 0x41, 0xa6, 0x5e, 0x46, 0xba, 0xe6,
0xb5, 0x2f, 0xbf, 0x60, 0x98, 0xae, 0xbb, 0x87, 0x70, 0xc6, 0x56, 0x46, 0xbc, 0x27, 0x2c, 0x9f, 0xd4, 0xbe, 0xfc, 0x82, 0x61, 0xba, 0xee, 0x1e, 0xc2, 0x19, 0x5b, 0x19, 0xf1, 0x9e, 0xb0, 0x7c,
0x06, 0xd4, 0xbf, 0xa0, 0xc8, 0x09, 0x8a, 0xe6, 0xa2, 0x00, 0x9b, 0x1c, 0xca, 0x6a, 0x34, 0x65, 0x1a, 0x50, 0xff, 0x82, 0x22, 0x27, 0x28, 0x9a, 0x8b, 0x02, 0x6c, 0x72, 0x28, 0xab, 0xd1, 0x94,
0xed, 0x0e, 0x27, 0x23, 0xbe, 0xec, 0xcd, 0xf2, 0xd4, 0x71, 0xf7, 0xc3, 0xc9, 0x88, 0xed, 0x57, 0xb5, 0x3b, 0x9c, 0x8c, 0xf8, 0xb2, 0x37, 0xcb, 0x53, 0xc7, 0xdd, 0x0f, 0x27, 0x23, 0xb6, 0x5f,
0x8c, 0x8f, 0xcc, 0xa8, 0x6f, 0x3d, 0x7b, 0x8e, 0x6b, 0xb8, 0x88, 0x7c, 0xe3, 0x88, 0xfa, 0x4f, 0x31, 0x3e, 0x32, 0xa3, 0xbe, 0xf5, 0xec, 0x39, 0xae, 0xe1, 0x22, 0xf2, 0x8d, 0x23, 0xea, 0x3f,
0x9f, 0x33, 0x91, 0x62, 0x14, 0x20, 0x23, 0xb2, 0xaf, 0x5a, 0x35, 0x5c, 0xe0, 0x95, 0x51, 0xc0, 0x7d, 0xce, 0x44, 0x8a, 0x51, 0x80, 0x8c, 0xc8, 0xbe, 0x6a, 0xd5, 0x70, 0x81, 0x57, 0x46, 0x01,
0x58, 0x90, 0x7d, 0xc5, 0x16, 0x21, 0xab, 0xad, 0x8d, 0xa3, 0x40, 0xc7, 0x98, 0x7d, 0x80, 0x1c, 0x63, 0x41, 0xf6, 0x15, 0x5b, 0x84, 0xac, 0xb6, 0x36, 0x8e, 0x02, 0x1d, 0x63, 0xf6, 0x01, 0x72,
0xb5, 0x81, 0x95, 0x6d, 0x0b, 0x04, 0x2b, 0x27, 0x60, 0xb3, 0x5e, 0x56, 0xf6, 0x74, 0x62, 0x9f, 0xd4, 0x06, 0x56, 0xb6, 0x2d, 0x10, 0xac, 0x9c, 0x80, 0xcd, 0x7a, 0x59, 0xd9, 0xd3, 0x89, 0x7d,
0x05, 0xc8, 0x52, 0x1a, 0x66, 0x5d, 0x00, 0xf7, 0x18, 0xcc, 0xf8, 0xf3, 0x3c, 0xac, 0x25, 0x06, 0x16, 0x20, 0x4b, 0x69, 0x98, 0x75, 0x01, 0xdc, 0x63, 0x30, 0xe3, 0x2f, 0xf2, 0xb0, 0x96, 0x18,
0x57, 0x2c, 0x1a, 0x26, 0x43, 0x20, 0x04, 0x07, 0xb6, 0x62, 0x8a, 0xaf, 0xac, 0x51, 0xcb, 0x67, 0x5c, 0xb1, 0x68, 0x98, 0x0c, 0x81, 0x10, 0x1c, 0xd8, 0x8a, 0x29, 0xbe, 0xb2, 0x46, 0x2d, 0x9f,
0x8d, 0xda, 0x2a, 0x94, 0xf8, 0x62, 0x2b, 0xf0, 0x9d, 0x97, 0xca, 0x55, 0x36, 0x9f, 0x9d, 0xfa, 0x35, 0x6a, 0xab, 0x50, 0xe2, 0x8b, 0xad, 0xc0, 0x77, 0x5e, 0x2a, 0x57, 0xd9, 0x7c, 0x76, 0xea,
0x1e, 0x13, 0xa9, 0xce, 0xe7, 0xe1, 0xd8, 0x7b, 0xee, 0x0a, 0xd1, 0x62, 0x49, 0xc0, 0x07, 0x02, 0x7b, 0x4c, 0xa4, 0x3a, 0x9f, 0x87, 0x63, 0xef, 0xb9, 0x2b, 0x44, 0x8b, 0x25, 0x01, 0x1f, 0x08,
0x1c, 0xef, 0x8a, 0x52, 0xa2, 0x2b, 0xee, 0x40, 0x4d, 0x8c, 0x00, 0x8a, 0x66, 0x7c, 0x60, 0x41, 0x70, 0xbc, 0x2b, 0x4a, 0x89, 0xae, 0xb8, 0x03, 0x35, 0x31, 0x02, 0x28, 0x9a, 0xf1, 0x81, 0x05,
0x80, 0x98, 0x6c, 0xf6, 0x2e, 0x10, 0x35, 0x9e, 0x16, 0xeb, 0x35, 0xdc, 0x7d, 0xf8, 0xc0, 0x2e, 0x01, 0x62, 0xb2, 0xd9, 0xbb, 0x40, 0xd4, 0x78, 0x5a, 0xac, 0xd7, 0x70, 0xf7, 0xe1, 0x03, 0xbb,
0x39, 0x62, 0x40, 0x0f, 0xed, 0x4b, 0xdc, 0x85, 0xde, 0x82, 0x45, 0x46, 0xc2, 0xfa, 0xd3, 0x1a, 0xe4, 0x88, 0x01, 0x3d, 0xb4, 0x2f, 0x71, 0x17, 0x7a, 0x0b, 0x16, 0x19, 0x09, 0xeb, 0x4f, 0x6b,
0xa1, 0xdc, 0x54, 0xe1, 0x7d, 0x35, 0xb5, 0x2f, 0x59, 0x67, 0xee, 0xa0, 0xf4, 0xf4, 0x3a, 0xd4, 0x84, 0x72, 0x53, 0x85, 0xf7, 0xd5, 0xd4, 0xbe, 0x64, 0x9d, 0xb9, 0x83, 0xd2, 0xd3, 0xeb, 0x50,
0xe4, 0xa0, 0x5a, 0x8e, 0x2b, 0xc6, 0xb5, 0x2a, 0xc6, 0xb5, 0xeb, 0xb2, 0xbd, 0x84, 0xe1, 0x79, 0x93, 0x83, 0x6a, 0x39, 0xae, 0x18, 0xd7, 0xaa, 0x18, 0xd7, 0xae, 0xcb, 0xf6, 0x12, 0x86, 0xe7,
0x3f, 0x59, 0x63, 0x3a, 0x0b, 0xcf, 0x05, 0x8f, 0x5e, 0x9c, 0x3a, 0x2e, 0xef, 0xde, 0x5d, 0x06, 0xfd, 0x64, 0x8d, 0xe9, 0x2c, 0x3c, 0x17, 0x3c, 0x7a, 0x71, 0xea, 0xb8, 0xbc, 0x7b, 0x77, 0x19,
0x35, 0x7e, 0x3b, 0x07, 0x75, 0xd1, 0xeb, 0x28, 0x09, 0x92, 0x2d, 0x20, 0x72, 0x8a, 0x87, 0x97, 0xd4, 0xf8, 0x9d, 0x1c, 0xd4, 0x45, 0xaf, 0xa3, 0x24, 0x48, 0xb6, 0x80, 0xc8, 0x29, 0x1e, 0x5e,
0xce, 0xd8, 0x3a, 0xb9, 0x0a, 0x69, 0xc0, 0x57, 0xd4, 0xfe, 0x0d, 0xb3, 0x29, 0x70, 0xc3, 0x4b, 0x3a, 0x63, 0xeb, 0xe4, 0x2a, 0xa4, 0x01, 0x5f, 0x51, 0xfb, 0x37, 0xcc, 0xa6, 0xc0, 0x0d, 0x2f,
0x67, 0xbc, 0xcd, 0x30, 0xe4, 0x3e, 0x34, 0x63, 0xf4, 0x41, 0xe8, 0xf3, 0xe5, 0xbe, 0x7f, 0xc3, 0x9d, 0xf1, 0x36, 0xc3, 0x90, 0xfb, 0xd0, 0x8c, 0xd1, 0x07, 0xa1, 0xcf, 0x97, 0xfb, 0xfe, 0x0d,
0x5c, 0xd4, 0xa8, 0x07, 0xa1, 0xcf, 0x18, 0x08, 0x93, 0x33, 0xe7, 0xa1, 0xe5, 0xb8, 0x63, 0x7a, 0x73, 0x51, 0xa3, 0x1e, 0x84, 0x3e, 0x63, 0x20, 0x4c, 0xce, 0x9c, 0x87, 0x96, 0xe3, 0x8e, 0xe9,
0x89, 0xe3, 0xd1, 0x30, 0x6b, 0x1c, 0xd6, 0x65, 0xa0, 0xed, 0x45, 0xa8, 0xeb, 0xd9, 0x19, 0x67, 0x25, 0x8e, 0x47, 0xc3, 0xac, 0x71, 0x58, 0x97, 0x81, 0xb6, 0x17, 0xa1, 0xae, 0x67, 0x67, 0x9c,
0x50, 0x91, 0x42, 0x2a, 0x4a, 0x69, 0x89, 0x2a, 0x99, 0xd5, 0x50, 0xd5, 0xe4, 0x26, 0x54, 0xe2, 0x41, 0x45, 0x0a, 0xa9, 0x28, 0xa5, 0x25, 0xaa, 0x64, 0x56, 0x43, 0x55, 0x93, 0x9b, 0x50, 0x89,
0x35, 0x30, 0xcb, 0xe1, 0x2b, 0x17, 0x6c, 0x7c, 0x17, 0x9a, 0x07, 0x6c, 0x20, 0x5c, 0xb6, 0x92, 0xd7, 0xc0, 0x2c, 0x87, 0xaf, 0x5c, 0xb0, 0xf1, 0x5d, 0x68, 0x1e, 0xb0, 0x81, 0x70, 0xd9, 0x4a,
0x85, 0xd0, 0xbd, 0x0e, 0x0b, 0x1a, 0x47, 0xa9, 0x9a, 0xe2, 0x8b, 0x09, 0x24, 0xe7, 0x5e, 0x10, 0x16, 0x42, 0xf7, 0x3a, 0x2c, 0x68, 0x1c, 0xa5, 0x6a, 0x8a, 0x2f, 0x26, 0x90, 0x9c, 0x7b, 0x41,
0x8a, 0x52, 0xf0, 0xb7, 0xf1, 0x87, 0x39, 0x20, 0x9d, 0x20, 0x74, 0xa6, 0x76, 0x48, 0xf7, 0xa8, 0x28, 0x4a, 0xc1, 0xdf, 0xc6, 0x1f, 0xe5, 0x80, 0x74, 0x82, 0xd0, 0x99, 0xda, 0x21, 0xdd, 0xa3,
0xe2, 0x99, 0x7d, 0xa8, 0xb3, 0xdc, 0x86, 0x5e, 0x9b, 0x4b, 0xc1, 0x5c, 0xda, 0x7a, 0x57, 0xf0, 0x8a, 0x67, 0xf6, 0xa1, 0xce, 0x72, 0x1b, 0x7a, 0x6d, 0x2e, 0x05, 0x73, 0x69, 0xeb, 0x5d, 0xc1,
0xb8, 0x74, 0x82, 0x2d, 0x9d, 0x9a, 0xef, 0x81, 0xb1, 0x0c, 0xd8, 0x74, 0x0b, 0x6d, 0xff, 0x8c, 0xe3, 0xd2, 0x09, 0xb6, 0x74, 0x6a, 0xbe, 0x07, 0xc6, 0x32, 0x60, 0xd3, 0x2d, 0xb4, 0xfd, 0x33,
0x86, 0x28, 0x3b, 0x0b, 0xa1, 0x0f, 0x38, 0x88, 0x49, 0xcd, 0x9b, 0xdf, 0x83, 0xe5, 0x54, 0x1e, 0x1a, 0xa2, 0xec, 0x2c, 0x84, 0x3e, 0xe0, 0x20, 0x26, 0x35, 0x6f, 0xfe, 0x3c, 0x2c, 0xa7, 0xf2,
0xfa, 0xa6, 0x55, 0xcd, 0xd8, 0xb4, 0x0a, 0xfa, 0xa6, 0x65, 0xc1, 0x4a, 0xac, 0x5e, 0x62, 0x15, 0xd0, 0x37, 0xad, 0x6a, 0xc6, 0xa6, 0x55, 0xd0, 0x37, 0x2d, 0x0b, 0x56, 0x62, 0xf5, 0x12, 0xab,
0x6e, 0x40, 0x99, 0x71, 0x0b, 0x36, 0x77, 0x73, 0x5c, 0x94, 0x3f, 0xa5, 0x38, 0xbf, 0x3f, 0x80, 0x70, 0x03, 0xca, 0x8c, 0x5b, 0xb0, 0xb9, 0x9b, 0xe3, 0xa2, 0xfc, 0x29, 0xc5, 0xf9, 0xfd, 0x01,
0xd5, 0x53, 0x4a, 0x7d, 0x3b, 0x44, 0x24, 0xb2, 0x13, 0x36, 0x42, 0x22, 0xe3, 0x65, 0x81, 0x1b, 0xac, 0x9e, 0x52, 0xea, 0xdb, 0x21, 0x22, 0x91, 0x9d, 0xb0, 0x11, 0x12, 0x19, 0x2f, 0x0b, 0xdc,
0xd8, 0xe1, 0x11, 0xf5, 0xd9, 0x48, 0x19, 0xff, 0x2c, 0x0f, 0x4b, 0x6c, 0x7b, 0x39, 0xb4, 0xdd, 0xc0, 0x0e, 0x8f, 0xa8, 0xcf, 0x46, 0xca, 0xf8, 0x67, 0x79, 0x58, 0x62, 0xdb, 0xcb, 0xa1, 0xed,
0x2b, 0xd9, 0x4f, 0x07, 0x99, 0xfd, 0x74, 0x4f, 0x93, 0x14, 0x34, 0xea, 0xaf, 0xdb, 0x49, 0x85, 0x5e, 0xc9, 0x7e, 0x3a, 0xc8, 0xec, 0xa7, 0x7b, 0x9a, 0xa4, 0xa0, 0x51, 0x7f, 0xdd, 0x4e, 0x2a,
0x64, 0x27, 0x91, 0xbb, 0x50, 0x8f, 0xd5, 0xb5, 0x84, 0x75, 0x85, 0x40, 0x55, 0x32, 0x12, 0xd7, 0x24, 0x3b, 0x89, 0xdc, 0x85, 0x7a, 0xac, 0xae, 0x25, 0xac, 0x2b, 0x04, 0xaa, 0x92, 0x91, 0xb8,
0x17, 0x34, 0x71, 0x9d, 0x71, 0x02, 0xb6, 0xb0, 0x58, 0xae, 0x81, 0x90, 0xce, 0x18, 0x7b, 0x65, 0xbe, 0xa0, 0x89, 0xeb, 0x8c, 0x13, 0xb0, 0x85, 0xc5, 0x72, 0x0d, 0x84, 0x74, 0xc6, 0xd8, 0x2b,
0x79, 0x06, 0xec, 0x4c, 0x13, 0x30, 0xce, 0x63, 0xcd, 0x5d, 0x71, 0xae, 0xa1, 0x63, 0x5c, 0xbe, 0xcb, 0x33, 0x60, 0x67, 0x9a, 0x80, 0x71, 0x1e, 0x6b, 0xee, 0x8a, 0x73, 0x0d, 0x1d, 0xe3, 0xf2,
0x15, 0xb3, 0x89, 0x88, 0xe3, 0x08, 0xfe, 0x17, 0x1f, 0xa6, 0xb7, 0xa1, 0x19, 0x75, 0x8b, 0x18, 0xad, 0x98, 0x4d, 0x44, 0x1c, 0x47, 0xf0, 0x9f, 0x7e, 0x98, 0xde, 0x86, 0x66, 0xd4, 0x2d, 0x62,
0x23, 0x02, 0x45, 0x36, 0xe5, 0x45, 0x06, 0xf8, 0xdb, 0xf8, 0x5f, 0x39, 0x4e, 0xb8, 0xe3, 0x39, 0x8c, 0x08, 0x14, 0xd9, 0x94, 0x17, 0x19, 0xe0, 0x6f, 0xe3, 0x7f, 0xe5, 0x38, 0xe1, 0x8e, 0xe7,
0xd1, 0xe1, 0x82, 0x40, 0x91, 0x1d, 0x66, 0x24, 0x21, 0xfb, 0x7d, 0xed, 0x51, 0xed, 0x1b, 0xe8, 0x44, 0x87, 0x0b, 0x02, 0x45, 0x76, 0x98, 0x91, 0x84, 0xec, 0xf7, 0xb5, 0x47, 0xb5, 0x6f, 0xa0,
0xcc, 0x9b, 0x50, 0x09, 0x58, 0xc7, 0xd8, 0x13, 0xde, 0x9f, 0x15, 0xb3, 0xcc, 0xbe, 0xdb, 0x93, 0x33, 0x6f, 0x42, 0x25, 0x60, 0x1d, 0x63, 0x4f, 0x78, 0x7f, 0x56, 0xcc, 0x32, 0xfb, 0x6e, 0x4f,
0x49, 0xd4, 0xcf, 0xe5, 0x6b, 0xfb, 0xb9, 0xf2, 0x2a, 0xfd, 0x5c, 0xcd, 0xee, 0x67, 0xe3, 0x1d, 0x26, 0x51, 0x3f, 0x97, 0xaf, 0xed, 0xe7, 0xca, 0xab, 0xf4, 0x73, 0x35, 0xbb, 0x9f, 0x8d, 0x77,
0x58, 0xd6, 0x5a, 0xff, 0x82, 0x7e, 0xea, 0x01, 0x39, 0x70, 0x82, 0xf0, 0xd8, 0x65, 0x59, 0x28, 0x60, 0x59, 0x6b, 0xfd, 0x0b, 0xfa, 0xa9, 0x07, 0xe4, 0xc0, 0x09, 0xc2, 0x63, 0x97, 0x65, 0xa1,
0xc9, 0x22, 0x56, 0x91, 0x5c, 0xa2, 0x22, 0x0c, 0x69, 0x5f, 0x0a, 0x64, 0x5e, 0x20, 0xed, 0x4b, 0x24, 0x8b, 0x58, 0x45, 0x72, 0x89, 0x8a, 0x30, 0xa4, 0x7d, 0x29, 0x90, 0x79, 0x81, 0xb4, 0x2f,
0x44, 0x1a, 0x9f, 0xc1, 0x4a, 0x2c, 0x3f, 0x51, 0xf4, 0x1b, 0x50, 0x9a, 0x87, 0x97, 0x9e, 0x3c, 0x11, 0x69, 0x7c, 0x06, 0x2b, 0xb1, 0xfc, 0x44, 0xd1, 0x6f, 0x40, 0x69, 0x1e, 0x5e, 0x7a, 0xf2,
0x77, 0xd5, 0xc4, 0x0c, 0x3f, 0x0e, 0x2f, 0x3d, 0x93, 0x63, 0x8c, 0xc7, 0xb0, 0xdc, 0xa3, 0xcf, 0xdc, 0x55, 0x13, 0x33, 0xfc, 0x38, 0xbc, 0xf4, 0x4c, 0x8e, 0x31, 0x1e, 0xc3, 0x72, 0x8f, 0x3e,
0x05, 0x13, 0x92, 0x15, 0x79, 0x1b, 0x8a, 0x2f, 0xd1, 0x24, 0x20, 0xde, 0xd8, 0x02, 0xa2, 0x27, 0x17, 0x4c, 0x48, 0x56, 0xe4, 0x6d, 0x28, 0xbe, 0x44, 0x93, 0x80, 0x78, 0x63, 0x0b, 0x88, 0x9e,
0x16, 0xa5, 0x6a, 0x8a, 0x85, 0x5c, 0x4c, 0xb1, 0x60, 0xbc, 0x0d, 0x64, 0xe0, 0x9c, 0xb9, 0x87, 0x58, 0x94, 0xaa, 0x29, 0x16, 0x72, 0x31, 0xc5, 0x82, 0xf1, 0x36, 0x90, 0x81, 0x73, 0xe6, 0x1e,
0x34, 0x08, 0xec, 0x33, 0xc5, 0xb6, 0x9a, 0x50, 0x98, 0x06, 0x67, 0x82, 0xc7, 0xb2, 0x9f, 0xc6, 0xd2, 0x20, 0xb0, 0xcf, 0x14, 0xdb, 0x6a, 0x42, 0x61, 0x1a, 0x9c, 0x09, 0x1e, 0xcb, 0x7e, 0x1a,
0x47, 0xb0, 0x12, 0xa3, 0x13, 0x19, 0xbf, 0x06, 0xd5, 0xc0, 0x39, 0x73, 0x51, 0x6a, 0x16, 0x59, 0x1f, 0xc1, 0x4a, 0x8c, 0x4e, 0x64, 0xfc, 0x1a, 0x54, 0x03, 0xe7, 0xcc, 0x45, 0xa9, 0x59, 0x64,
0x47, 0x00, 0x63, 0x0f, 0x56, 0xbf, 0xa0, 0xbe, 0x73, 0x7a, 0xf5, 0xb2, 0xec, 0xe3, 0xf9, 0xe4, 0x1d, 0x01, 0x8c, 0x3d, 0x58, 0xfd, 0x82, 0xfa, 0xce, 0xe9, 0xd5, 0xcb, 0xb2, 0x8f, 0xe7, 0x93,
0x93, 0xf9, 0x74, 0x60, 0x2d, 0x91, 0x8f, 0x28, 0x9e, 0x2f, 0x0f, 0x31, 0x92, 0x15, 0x93, 0x7f, 0x4f, 0xe6, 0xd3, 0x81, 0xb5, 0x44, 0x3e, 0xa2, 0x78, 0xbe, 0x3c, 0xc4, 0x48, 0x56, 0x4c, 0xfe,
0x68, 0x7c, 0x3b, 0xaf, 0xf3, 0x6d, 0xc3, 0x03, 0xb2, 0xe3, 0xb9, 0x2e, 0x1d, 0x85, 0x47, 0x94, 0xa1, 0xf1, 0xed, 0xbc, 0xce, 0xb7, 0x0d, 0x0f, 0xc8, 0x8e, 0xe7, 0xba, 0x74, 0x14, 0x1e, 0x51,
0xfa, 0xb2, 0x32, 0xef, 0x6a, 0x6b, 0xa1, 0xf6, 0x70, 0x43, 0xf4, 0x6c, 0x72, 0x33, 0x10, 0x8b, 0xea, 0xcb, 0xca, 0xbc, 0xab, 0xad, 0x85, 0xda, 0xc3, 0x0d, 0xd1, 0xb3, 0xc9, 0xcd, 0x40, 0x2c,
0x84, 0x40, 0x71, 0x46, 0xfd, 0x29, 0x66, 0x5c, 0x31, 0xf1, 0x37, 0xeb, 0xdc, 0xd0, 0x99, 0x52, 0x12, 0x02, 0xc5, 0x19, 0xf5, 0xa7, 0x98, 0x71, 0xc5, 0xc4, 0xdf, 0xac, 0x73, 0x43, 0x67, 0x4a,
0x6f, 0xce, 0x8f, 0x9a, 0x45, 0x53, 0x7e, 0x1a, 0x6b, 0xb0, 0x12, 0x2b, 0x90, 0xd7, 0xda, 0x78, 0xbd, 0x39, 0x3f, 0x6a, 0x16, 0x4d, 0xf9, 0x69, 0xac, 0xc1, 0x4a, 0xac, 0x40, 0x5e, 0x6b, 0xe3,
0x00, 0x6b, 0xbb, 0x4e, 0x30, 0x4a, 0x57, 0x65, 0x03, 0xca, 0xb3, 0xf9, 0x89, 0x15, 0xdf, 0x71, 0x01, 0xac, 0xed, 0x3a, 0xc1, 0x28, 0x5d, 0x95, 0x0d, 0x28, 0xcf, 0xe6, 0x27, 0x56, 0x7c, 0xc7,
0x9e, 0xd2, 0x2b, 0xa3, 0x05, 0xeb, 0xc9, 0x14, 0x22, 0xaf, 0x5f, 0xcb, 0x43, 0x71, 0x7f, 0x78, 0x79, 0x4a, 0xaf, 0x8c, 0x16, 0xac, 0x27, 0x53, 0x88, 0xbc, 0x7e, 0x3d, 0x0f, 0xc5, 0xfd, 0xe1,
0xb0, 0x43, 0x36, 0xa1, 0xe2, 0xb8, 0x23, 0x6f, 0xca, 0xe4, 0x6d, 0xde, 0x1b, 0xea, 0xfb, 0xda, 0xc1, 0x0e, 0xd9, 0x84, 0x8a, 0xe3, 0x8e, 0xbc, 0x29, 0x93, 0xb7, 0x79, 0x6f, 0xa8, 0xef, 0x6b,
0xa5, 0x7d, 0x0b, 0xaa, 0x28, 0xa6, 0x4f, 0xbc, 0xd1, 0x33, 0x21, 0xf1, 0x56, 0x18, 0xe0, 0xc0, 0x97, 0xf6, 0x2d, 0xa8, 0xa2, 0x98, 0x3e, 0xf1, 0x46, 0xcf, 0x84, 0xc4, 0x5b, 0x61, 0x80, 0x03,
0x1b, 0x3d, 0x63, 0xcb, 0x8c, 0x5e, 0xce, 0x1c, 0x1f, 0x95, 0x30, 0x52, 0xc9, 0x50, 0xe4, 0x22, 0x6f, 0xf4, 0x8c, 0x2d, 0x33, 0x7a, 0x39, 0x73, 0x7c, 0x54, 0xc2, 0x48, 0x25, 0x43, 0x91, 0x8b,
0x5e, 0x84, 0x88, 0x54, 0x11, 0x42, 0x1a, 0x61, 0xfb, 0x2b, 0x17, 0x7d, 0xab, 0xe7, 0x28, 0x8d, 0x78, 0x11, 0x22, 0x52, 0x45, 0x08, 0x69, 0x84, 0xed, 0xaf, 0x5c, 0xf4, 0xad, 0x9e, 0xa3, 0x34,
0x8c, 0xe9, 0x25, 0x79, 0x1f, 0xc8, 0xa9, 0xe7, 0x3f, 0xb7, 0x7d, 0x25, 0xad, 0xb9, 0x82, 0xb5, 0x32, 0xa6, 0x97, 0xe4, 0x7d, 0x20, 0xa7, 0x9e, 0xff, 0xdc, 0xf6, 0x95, 0xb4, 0xe6, 0x0a, 0xd6,
0x16, 0xcd, 0xe5, 0x08, 0x23, 0x24, 0x11, 0xf2, 0x10, 0xd6, 0x34, 0x72, 0x2d, 0x63, 0x2e, 0x35, 0x5a, 0x34, 0x97, 0x23, 0x8c, 0x90, 0x44, 0xc8, 0x43, 0x58, 0xd3, 0xc8, 0xb5, 0x8c, 0xb9, 0xd4,
0xad, 0x44, 0xc8, 0x7d, 0x59, 0x84, 0xf1, 0xab, 0x79, 0x20, 0x22, 0xfd, 0x8e, 0xe7, 0x06, 0xa1, 0xb4, 0x12, 0x21, 0xf7, 0x65, 0x11, 0xc6, 0xaf, 0xe5, 0x81, 0x88, 0xf4, 0x3b, 0x9e, 0x1b, 0x84,
0x6f, 0x3b, 0x6e, 0x18, 0xc4, 0x65, 0xb7, 0x5c, 0x42, 0x76, 0xbb, 0x07, 0x4d, 0x94, 0x1c, 0x75, 0xbe, 0xed, 0xb8, 0x61, 0x10, 0x97, 0xdd, 0x72, 0x09, 0xd9, 0xed, 0x1e, 0x34, 0x51, 0x72, 0xd4,
0x01, 0x2e, 0x1f, 0x89, 0xd1, 0x66, 0x24, 0xc4, 0xbd, 0x05, 0x8b, 0x91, 0xf4, 0xae, 0x74, 0x70, 0x05, 0xb8, 0x7c, 0x24, 0x46, 0x9b, 0x91, 0x10, 0xf7, 0x16, 0x2c, 0x46, 0xd2, 0xbb, 0xd2, 0xc1,
0x45, 0xb3, 0xae, 0x24, 0x78, 0xb1, 0x15, 0x32, 0x86, 0x20, 0xa5, 0x52, 0xa5, 0x6a, 0xe0, 0x07, 0x15, 0xcd, 0xba, 0x92, 0xe0, 0xc5, 0x56, 0xc8, 0x18, 0x82, 0x94, 0x4a, 0x95, 0xaa, 0x81, 0x1f,
0x85, 0xe5, 0xa9, 0x7d, 0x79, 0x44, 0xe5, 0x59, 0x01, 0xc5, 0x3d, 0x03, 0x1a, 0x4a, 0x90, 0x43, 0x14, 0x96, 0xa7, 0xf6, 0xe5, 0x11, 0x95, 0x67, 0x05, 0x14, 0xf7, 0x0c, 0x68, 0x28, 0x41, 0x0e,
0x4a, 0xde, 0x73, 0x35, 0x21, 0xca, 0x21, 0x4d, 0xb6, 0xac, 0xbd, 0x90, 0x2d, 0x6b, 0x1b, 0xff, 0x29, 0x79, 0xcf, 0xd5, 0x84, 0x28, 0x87, 0x34, 0xd9, 0xb2, 0xf6, 0x42, 0xb6, 0xac, 0x6d, 0xfc,
0xbe, 0x0a, 0x65, 0xd9, 0x8d, 0x28, 0x38, 0x87, 0xce, 0x05, 0x8d, 0x04, 0x67, 0xf6, 0xc5, 0xe4, 0xbb, 0x2a, 0x94, 0x65, 0x37, 0xa2, 0xe0, 0x1c, 0x3a, 0x17, 0x34, 0x12, 0x9c, 0xd9, 0x17, 0x93,
0x71, 0x9f, 0x4e, 0xbd, 0x50, 0x1d, 0x98, 0xf8, 0x32, 0xa9, 0x73, 0xa0, 0x38, 0x32, 0x69, 0x42, 0xc7, 0x7d, 0x3a, 0xf5, 0x42, 0x75, 0x60, 0xe2, 0xcb, 0xa4, 0xce, 0x81, 0xe2, 0xc8, 0xa4, 0x09,
0x3b, 0x57, 0x1d, 0x72, 0xe9, 0x59, 0x0a, 0xed, 0x5c, 0x24, 0xbb, 0x05, 0x65, 0x29, 0x7a, 0x17, 0xed, 0x5c, 0x75, 0xc8, 0xa5, 0x67, 0x29, 0xb4, 0x73, 0x91, 0xec, 0x16, 0x94, 0xa5, 0xe8, 0x5d,
0x95, 0x4e, 0x61, 0x61, 0xc4, 0xe5, 0xee, 0x4d, 0xa8, 0x8c, 0xec, 0x99, 0x3d, 0x72, 0xc2, 0x2b, 0x54, 0x3a, 0x85, 0x85, 0x11, 0x97, 0xbb, 0x37, 0xa1, 0x32, 0xb2, 0x67, 0xf6, 0xc8, 0x09, 0xaf,
0xb1, 0x27, 0xa8, 0x6f, 0x96, 0xfb, 0xc4, 0x1b, 0xd9, 0x13, 0xeb, 0xc4, 0x9e, 0xd8, 0xee, 0x88, 0xc4, 0x9e, 0xa0, 0xbe, 0x59, 0xee, 0x13, 0x6f, 0x64, 0x4f, 0xac, 0x13, 0x7b, 0x62, 0xbb, 0x23,
0x0a, 0x9d, 0x5c, 0x1d, 0x81, 0xdb, 0x1c, 0x46, 0xbe, 0x05, 0x8b, 0xa2, 0x9e, 0x92, 0x8a, 0xab, 0x2a, 0x74, 0x72, 0x75, 0x04, 0x6e, 0x73, 0x18, 0xf9, 0x16, 0x2c, 0x8a, 0x7a, 0x4a, 0x2a, 0xae,
0xe6, 0x44, 0xed, 0x25, 0x19, 0x3b, 0xdc, 0x79, 0x53, 0x36, 0x2e, 0xa7, 0x94, 0x1f, 0x83, 0x0a, 0x9a, 0x13, 0xb5, 0x97, 0x64, 0xec, 0x70, 0xe7, 0x4d, 0xd9, 0xb8, 0x9c, 0x52, 0x7e, 0x0c, 0x2a,
0x66, 0x95, 0x43, 0xf6, 0x28, 0xb6, 0x56, 0xa0, 0x9f, 0xf3, 0x39, 0x5c, 0xe5, 0x45, 0x71, 0xe0, 0x98, 0x55, 0x0e, 0xd9, 0xa3, 0xd8, 0x5a, 0x81, 0x7e, 0xce, 0xe7, 0x70, 0x95, 0x17, 0xc5, 0x81,
0x97, 0x7c, 0xfe, 0xa6, 0xcf, 0x42, 0x05, 0xed, 0x2c, 0xf4, 0x2e, 0x2c, 0xcf, 0xdd, 0x80, 0x86, 0x5f, 0xf2, 0xf9, 0x9b, 0x3e, 0x0b, 0x15, 0xb4, 0xb3, 0xd0, 0xbb, 0xb0, 0x3c, 0x77, 0x03, 0x1a,
0xe1, 0x84, 0x8e, 0x55, 0x5d, 0x6a, 0x48, 0xd4, 0x54, 0x08, 0x59, 0x9d, 0x2d, 0x58, 0xe1, 0xca, 0x86, 0x13, 0x3a, 0x56, 0x75, 0xa9, 0x21, 0x51, 0x53, 0x21, 0x64, 0x75, 0xb6, 0x60, 0x85, 0x2b,
0xc4, 0xc0, 0x0e, 0xbd, 0xe0, 0xdc, 0x09, 0xac, 0x80, 0xba, 0x52, 0xdd, 0xb4, 0x8c, 0xa8, 0x81, 0x13, 0x03, 0x3b, 0xf4, 0x82, 0x73, 0x27, 0xb0, 0x02, 0xea, 0x4a, 0x75, 0xd3, 0x32, 0xa2, 0x06,
0xc0, 0x0c, 0xb8, 0x8a, 0x62, 0x23, 0x41, 0xef, 0xd3, 0x11, 0x75, 0x2e, 0xe8, 0x18, 0xcf, 0x49, 0x02, 0x33, 0xe0, 0x2a, 0x8a, 0x8d, 0x04, 0xbd, 0x4f, 0x47, 0xd4, 0xb9, 0xa0, 0x63, 0x3c, 0x27,
0x05, 0x73, 0x2d, 0x96, 0xc6, 0x14, 0x48, 0x3c, 0xf4, 0xce, 0xa7, 0xd6, 0x7c, 0x36, 0xb6, 0x99, 0x15, 0xcc, 0xb5, 0x58, 0x1a, 0x53, 0x20, 0xf1, 0xd0, 0x3b, 0x9f, 0x5a, 0xf3, 0xd9, 0xd8, 0x66,
0x3c, 0xbc, 0xc8, 0x0f, 0x1e, 0xee, 0x7c, 0x7a, 0xcc, 0x21, 0xe4, 0x01, 0xc8, 0x83, 0x90, 0x98, 0xf2, 0xf0, 0x22, 0x3f, 0x78, 0xb8, 0xf3, 0xe9, 0x31, 0x87, 0x90, 0x07, 0x20, 0x0f, 0x42, 0x62,
0x33, 0x4b, 0xb1, 0x2d, 0x87, 0x71, 0x0d, 0xb3, 0x2e, 0x28, 0xf8, 0x41, 0xed, 0x8e, 0xbe, 0x58, 0xce, 0x2c, 0xc5, 0xb6, 0x1c, 0xc6, 0x35, 0xcc, 0xba, 0xa0, 0xe0, 0x07, 0xb5, 0x3b, 0xfa, 0x62,
0x9a, 0x6c, 0x86, 0xe1, 0xa1, 0x3d, 0x5a, 0x30, 0x2d, 0x28, 0xcf, 0x7c, 0xe7, 0xc2, 0x0e, 0x69, 0x69, 0xb2, 0x19, 0x86, 0x87, 0xf6, 0x68, 0xc1, 0xb4, 0xa0, 0x3c, 0xf3, 0x9d, 0x0b, 0x3b, 0xa4,
0x6b, 0x99, 0xef, 0xe3, 0xe2, 0x93, 0x31, 0x70, 0xc7, 0x75, 0x42, 0xc7, 0x0e, 0x3d, 0xbf, 0x45, 0xad, 0x65, 0xbe, 0x8f, 0x8b, 0x4f, 0xc6, 0xc0, 0x1d, 0xd7, 0x09, 0x1d, 0x3b, 0xf4, 0xfc, 0x16,
0x10, 0x17, 0x01, 0xc8, 0x7d, 0x58, 0xc6, 0x79, 0x12, 0x84, 0x76, 0x38, 0x0f, 0xc4, 0x29, 0x70, 0x41, 0x5c, 0x04, 0x20, 0xf7, 0x61, 0x19, 0xe7, 0x49, 0x10, 0xda, 0xe1, 0x3c, 0x10, 0xa7, 0xc0,
0x85, 0x9f, 0xb6, 0x18, 0x62, 0x80, 0x70, 0x3c, 0x08, 0x92, 0x4f, 0x61, 0x9d, 0x4f, 0x8d, 0xd4, 0x15, 0x7e, 0xda, 0x62, 0x88, 0x01, 0xc2, 0xf1, 0x20, 0x48, 0x3e, 0x85, 0x75, 0x3e, 0x35, 0x52,
0xd2, 0x5c, 0x65, 0xdd, 0x81, 0x35, 0x5a, 0x41, 0x8a, 0x9d, 0xf8, 0x1a, 0xfd, 0x1c, 0x36, 0xc4, 0x4b, 0x73, 0x95, 0x75, 0x07, 0xd6, 0x68, 0x05, 0x29, 0x76, 0xe2, 0x6b, 0xf4, 0x73, 0xd8, 0x10,
0x74, 0x49, 0xa5, 0x5c, 0x53, 0x29, 0x57, 0x39, 0x49, 0x22, 0xe9, 0x16, 0x2c, 0xb3, 0xaa, 0x39, 0xd3, 0x25, 0x95, 0x72, 0x4d, 0xa5, 0x5c, 0xe5, 0x24, 0x89, 0xa4, 0x5b, 0xb0, 0xcc, 0xaa, 0xe6,
0x23, 0x4b, 0xe4, 0xc0, 0x56, 0xc5, 0x3a, 0x6b, 0x05, 0x26, 0x5a, 0xe2, 0x48, 0x13, 0x71, 0x4f, 0x8c, 0x2c, 0x91, 0x03, 0x5b, 0x15, 0xeb, 0xac, 0x15, 0x98, 0x68, 0x89, 0x23, 0x4d, 0xc4, 0x3d,
0xe9, 0x15, 0xf9, 0x2e, 0x2c, 0xf1, 0xe9, 0x83, 0xaa, 0x0e, 0xdc, 0x98, 0x37, 0x71, 0x63, 0x5e, 0xa5, 0x57, 0xe4, 0xbb, 0xb0, 0xc4, 0xa7, 0x0f, 0xaa, 0x3a, 0x70, 0x63, 0xde, 0xc4, 0x8d, 0x79,
0x13, 0x9d, 0xbb, 0xa3, 0xb0, 0xb8, 0x37, 0x2f, 0x8e, 0x62, 0xdf, 0x6c, 0x69, 0x4c, 0x9c, 0x53, 0x4d, 0x74, 0xee, 0x8e, 0xc2, 0xe2, 0xde, 0xbc, 0x38, 0x8a, 0x7d, 0xb3, 0xa5, 0x31, 0x71, 0x4e,
0xca, 0xf6, 0x89, 0xd6, 0x06, 0x9f, 0x6c, 0xf2, 0x9b, 0xad, 0xda, 0xf9, 0x0c, 0x31, 0x2d, 0xce, 0x29, 0xdb, 0x27, 0x5a, 0x1b, 0x7c, 0xb2, 0xc9, 0x6f, 0xb6, 0x6a, 0xe7, 0x33, 0xc4, 0xb4, 0x38,
0xac, 0xf9, 0x17, 0xce, 0xe3, 0x89, 0x17, 0x50, 0xa9, 0x86, 0x6e, 0xdd, 0x14, 0x0b, 0x92, 0x01, 0xb3, 0xe6, 0x5f, 0x38, 0x8f, 0x27, 0x5e, 0x40, 0xa5, 0x1a, 0xba, 0x75, 0x53, 0x2c, 0x48, 0x06,
0xe5, 0x91, 0x85, 0x9d, 0x89, 0xb9, 0x02, 0x42, 0x19, 0x0b, 0x6e, 0xe1, 0xc4, 0x68, 0x70, 0x3d, 0x94, 0x47, 0x16, 0x76, 0x26, 0xe6, 0x0a, 0x08, 0x65, 0x2c, 0xb8, 0x85, 0x13, 0xa3, 0xc1, 0xf5,
0x84, 0x34, 0x18, 0x30, 0xa1, 0xee, 0xdc, 0x7e, 0x2e, 0xd9, 0xfa, 0x6b, 0xc8, 0x4d, 0x80, 0x81, 0x10, 0xd2, 0x60, 0xc0, 0x84, 0xba, 0x73, 0xfb, 0xb9, 0x64, 0xeb, 0xaf, 0x21, 0x37, 0x01, 0x06,
0x04, 0x43, 0xdf, 0x83, 0x65, 0x31, 0x0a, 0x11, 0x33, 0x6d, 0xdd, 0xc6, 0x2d, 0xf2, 0xa6, 0x6c, 0x12, 0x0c, 0x7d, 0x0f, 0x96, 0xc5, 0x28, 0x44, 0xcc, 0xb4, 0x75, 0x1b, 0xb7, 0xc8, 0x9b, 0xb2,
0x63, 0x8a, 0xdb, 0x9a, 0x4d, 0x3e, 0x2e, 0x1a, 0xff, 0xdd, 0x07, 0x22, 0x07, 0x45, 0xcb, 0xe8, 0x8d, 0x29, 0x6e, 0x6b, 0x36, 0xf9, 0xb8, 0x68, 0xfc, 0x77, 0x1f, 0x88, 0x1c, 0x14, 0x2d, 0xa3,
0xf5, 0x97, 0x65, 0xb4, 0x2c, 0x86, 0x29, 0x02, 0x19, 0xbf, 0x97, 0xe3, 0x12, 0x95, 0xa0, 0x0e, 0xd7, 0x5f, 0x96, 0xd1, 0xb2, 0x18, 0xa6, 0x08, 0x64, 0xfc, 0x7e, 0x8e, 0x4b, 0x54, 0x82, 0x3a,
0x34, 0xe5, 0x0f, 0xe7, 0x6b, 0x96, 0xe7, 0x4e, 0xae, 0x04, 0xab, 0x03, 0x0e, 0xea, 0xbb, 0x13, 0xd0, 0x94, 0x3f, 0x9c, 0xaf, 0x59, 0x9e, 0x3b, 0xb9, 0x12, 0xac, 0x0e, 0x38, 0xa8, 0xef, 0x4e,
0xe4, 0x35, 0x8e, 0xab, 0x93, 0xf0, 0xcd, 0xbb, 0x2e, 0x81, 0x48, 0x74, 0x07, 0x6a, 0xb3, 0xf9, 0x90, 0xd7, 0x38, 0xae, 0x4e, 0xc2, 0x37, 0xef, 0xba, 0x04, 0x22, 0xd1, 0x1d, 0xa8, 0xcd, 0xe6,
0xc9, 0xc4, 0x19, 0x71, 0x92, 0x02, 0xcf, 0x85, 0x83, 0x90, 0xe0, 0x0d, 0xa8, 0x8b, 0xb9, 0xce, 0x27, 0x13, 0x67, 0xc4, 0x49, 0x0a, 0x3c, 0x17, 0x0e, 0x42, 0x82, 0x37, 0xa0, 0x2e, 0xe6, 0x3a,
0x29, 0x8a, 0x48, 0x51, 0x13, 0x30, 0x24, 0x41, 0xe1, 0x80, 0xfa, 0xc8, 0xec, 0xea, 0x26, 0xfe, 0xa7, 0x28, 0x22, 0x45, 0x4d, 0xc0, 0x90, 0x04, 0x85, 0x03, 0xea, 0x23, 0xb3, 0xab, 0x9b, 0xf8,
0x36, 0xb6, 0x61, 0x35, 0x5e, 0x69, 0x21, 0xb9, 0xdc, 0x87, 0x8a, 0xe0, 0xa4, 0x52, 0x2d, 0xba, 0xdb, 0xd8, 0x86, 0xd5, 0x78, 0xa5, 0x85, 0xe4, 0x72, 0x1f, 0x2a, 0x82, 0x93, 0x4a, 0xb5, 0xe8,
0x18, 0xef, 0x0d, 0x53, 0xe1, 0x8d, 0xff, 0x50, 0x82, 0x15, 0xd9, 0x47, 0x6c, 0xb0, 0x07, 0xf3, 0x62, 0xbc, 0x37, 0x4c, 0x85, 0x37, 0xfe, 0x7d, 0x09, 0x56, 0x64, 0x1f, 0xb1, 0xc1, 0x1e, 0xcc,
0xe9, 0xd4, 0xf6, 0x33, 0x58, 0x74, 0xee, 0xc5, 0x2c, 0x3a, 0x9f, 0x62, 0xd1, 0x71, 0xbd, 0x18, 0xa7, 0x53, 0xdb, 0xcf, 0x60, 0xd1, 0xb9, 0x17, 0xb3, 0xe8, 0x7c, 0x8a, 0x45, 0xc7, 0xf5, 0x62,
0xe7, 0xf0, 0x71, 0xbd, 0x18, 0x9b, 0x5d, 0xfc, 0x34, 0xae, 0x5b, 0x5f, 0x1a, 0x02, 0x3c, 0xe4, 0x9c, 0xc3, 0xc7, 0xf5, 0x62, 0x6c, 0x76, 0xf1, 0xd3, 0xb8, 0x6e, 0x7d, 0x69, 0x08, 0xf0, 0x90,
0x56, 0x9e, 0xd4, 0x86, 0x52, 0xca, 0xd8, 0x50, 0xf4, 0xed, 0x60, 0x21, 0xb1, 0x1d, 0xbc, 0x01, 0x5b, 0x79, 0x52, 0x1b, 0x4a, 0x29, 0x63, 0x43, 0xd1, 0xb7, 0x83, 0x85, 0xc4, 0x76, 0xf0, 0x06,
0x7c, 0x1a, 0xcb, 0xf9, 0x58, 0xe6, 0x07, 0x74, 0x84, 0x89, 0x09, 0xf9, 0x0e, 0x2c, 0x25, 0x39, 0xf0, 0x69, 0x2c, 0xe7, 0x63, 0x99, 0x1f, 0xd0, 0x11, 0x26, 0x26, 0xe4, 0x3b, 0xb0, 0x94, 0xe4,
0x30, 0x67, 0xf5, 0x8b, 0x19, 0xfc, 0xd7, 0x99, 0x52, 0x14, 0x6a, 0x34, 0xe2, 0xaa, 0xe0, 0xbf, 0xc0, 0x9c, 0xd5, 0x2f, 0x66, 0xf0, 0x5f, 0x67, 0x4a, 0x51, 0xa8, 0xd1, 0x88, 0xab, 0x82, 0xff,
0xce, 0x94, 0x1e, 0x20, 0x46, 0xd2, 0x77, 0x00, 0x78, 0xd9, 0xb8, 0x8c, 0x01, 0x97, 0xf1, 0xdb, 0x3a, 0x53, 0x7a, 0x80, 0x18, 0x49, 0xdf, 0x01, 0xe0, 0x65, 0xe3, 0x32, 0x06, 0x5c, 0xc6, 0x6f,
0x89, 0x99, 0xa9, 0xf5, 0xfa, 0x16, 0xfb, 0x98, 0xfb, 0x14, 0xd7, 0x75, 0x15, 0x53, 0xe2, 0x92, 0x27, 0x66, 0xa6, 0xd6, 0xeb, 0x5b, 0xec, 0x63, 0xee, 0x53, 0x5c, 0xd7, 0x55, 0x4c, 0x89, 0x4b,
0xfe, 0x14, 0x16, 0xbd, 0x19, 0x75, 0xad, 0x88, 0x0b, 0xd6, 0x30, 0xab, 0xa6, 0xc8, 0xaa, 0x2b, 0xfa, 0x53, 0x58, 0xf4, 0x66, 0xd4, 0xb5, 0x22, 0x2e, 0x58, 0xc3, 0xac, 0x9a, 0x22, 0xab, 0xae,
0xe1, 0x66, 0x83, 0xd1, 0xa9, 0x4f, 0xf2, 0x39, 0xef, 0x64, 0xaa, 0xa5, 0xac, 0x5f, 0x93, 0x72, 0x84, 0x9b, 0x0d, 0x46, 0xa7, 0x3e, 0xc9, 0xe7, 0xbc, 0x93, 0xa9, 0x96, 0xb2, 0x7e, 0x4d, 0xca,
0x11, 0x09, 0xa3, 0xa4, 0x1f, 0xa1, 0xee, 0xc9, 0x9b, 0xcc, 0xb9, 0x29, 0xa7, 0x81, 0xf3, 0x48, 0x45, 0x24, 0x8c, 0x92, 0x7e, 0x84, 0xba, 0x27, 0x6f, 0x32, 0xe7, 0xa6, 0x9c, 0x06, 0xce, 0x23,
0xea, 0xb6, 0x4d, 0x85, 0x31, 0x75, 0x2a, 0xe3, 0xd7, 0x73, 0x50, 0xd3, 0xda, 0x40, 0xd6, 0x60, 0xa9, 0xdb, 0x36, 0x15, 0xc6, 0xd4, 0xa9, 0x8c, 0xdf, 0xc8, 0x41, 0x4d, 0x6b, 0x03, 0x59, 0x83,
0x79, 0xa7, 0xdf, 0x3f, 0xea, 0x98, 0xed, 0x61, 0xf7, 0x8b, 0x8e, 0xb5, 0x73, 0xd0, 0x1f, 0x74, 0xe5, 0x9d, 0x7e, 0xff, 0xa8, 0x63, 0xb6, 0x87, 0xdd, 0x2f, 0x3a, 0xd6, 0xce, 0x41, 0x7f, 0xd0,
0x9a, 0x37, 0x18, 0xf8, 0xa0, 0xbf, 0xd3, 0x3e, 0xb0, 0xf6, 0xfa, 0xe6, 0x8e, 0x04, 0xe7, 0xc8, 0x69, 0xde, 0x60, 0xe0, 0x83, 0xfe, 0x4e, 0xfb, 0xc0, 0xda, 0xeb, 0x9b, 0x3b, 0x12, 0x9c, 0x23,
0x3a, 0x10, 0xb3, 0x73, 0xd8, 0x1f, 0x76, 0x62, 0xf0, 0x3c, 0x69, 0x42, 0x7d, 0xdb, 0xec, 0xb4, 0xeb, 0x40, 0xcc, 0xce, 0x61, 0x7f, 0xd8, 0x89, 0xc1, 0xf3, 0xa4, 0x09, 0xf5, 0x6d, 0xb3, 0xd3,
0x77, 0xf6, 0x05, 0xa4, 0x40, 0x56, 0xa1, 0xb9, 0x77, 0xdc, 0xdb, 0xed, 0xf6, 0x9e, 0x58, 0x3b, 0xde, 0xd9, 0x17, 0x90, 0x02, 0x59, 0x85, 0xe6, 0xde, 0x71, 0x6f, 0xb7, 0xdb, 0x7b, 0x62, 0xed,
0xed, 0xde, 0x4e, 0xe7, 0xa0, 0xb3, 0xdb, 0x2c, 0x92, 0x06, 0x54, 0xdb, 0xdb, 0xed, 0xde, 0x6e, 0xb4, 0x7b, 0x3b, 0x9d, 0x83, 0xce, 0x6e, 0xb3, 0x48, 0x1a, 0x50, 0x6d, 0x6f, 0xb7, 0x7b, 0xbb,
0xbf, 0xd7, 0xd9, 0x6d, 0x96, 0x8c, 0xff, 0x91, 0x03, 0x88, 0x2a, 0xca, 0xf8, 0x6a, 0x54, 0x55, 0xfd, 0x5e, 0x67, 0xb7, 0x59, 0x32, 0xfe, 0x47, 0x0e, 0x20, 0xaa, 0x28, 0xe3, 0xab, 0x51, 0x55,
0xdd, 0x74, 0xba, 0x96, 0x6a, 0x14, 0xe7, 0xab, 0x7e, 0xec, 0x9b, 0x3c, 0x84, 0xb2, 0x37, 0x0f, 0x75, 0xd3, 0xe9, 0x5a, 0xaa, 0x51, 0x9c, 0xaf, 0xfa, 0xb1, 0x6f, 0xf2, 0x10, 0xca, 0xde, 0x3c,
0x47, 0xde, 0x94, 0x1f, 0x22, 0x16, 0x1f, 0xb6, 0x52, 0xe9, 0xfa, 0x1c, 0x6f, 0x4a, 0xc2, 0x98, 0x1c, 0x79, 0x53, 0x7e, 0x88, 0x58, 0x7c, 0xd8, 0x4a, 0xa5, 0xeb, 0x73, 0xbc, 0x29, 0x09, 0x63,
0x79, 0xb4, 0xf0, 0x32, 0xf3, 0x68, 0xdc, 0x0e, 0xcb, 0xe5, 0x3a, 0xcd, 0x0e, 0x7b, 0x1b, 0x20, 0xe6, 0xd1, 0xc2, 0xcb, 0xcc, 0xa3, 0x71, 0x3b, 0x2c, 0x97, 0xeb, 0x34, 0x3b, 0xec, 0x6d, 0x80,
0x78, 0x4e, 0xe9, 0x0c, 0x95, 0x57, 0x62, 0x15, 0x54, 0x11, 0x32, 0x64, 0x67, 0xcc, 0x3f, 0xc9, 0xe0, 0x39, 0xa5, 0x33, 0x54, 0x5e, 0x89, 0x55, 0x50, 0x45, 0xc8, 0x90, 0x9d, 0x31, 0xff, 0x34,
0xc1, 0x1a, 0xce, 0xa5, 0x71, 0x92, 0x89, 0xdd, 0x85, 0xda, 0xc8, 0xf3, 0x66, 0x94, 0x09, 0xd5, 0x07, 0x6b, 0x38, 0x97, 0xc6, 0x49, 0x26, 0x76, 0x17, 0x6a, 0x23, 0xcf, 0x9b, 0x51, 0x26, 0x54,
0x4a, 0x5e, 0xd3, 0x41, 0x8c, 0x41, 0x71, 0x86, 0x7c, 0xea, 0xf9, 0x23, 0x2a, 0x78, 0x18, 0x20, 0x2b, 0x79, 0x4d, 0x07, 0x31, 0x06, 0xc5, 0x19, 0xf2, 0xa9, 0xe7, 0x8f, 0xa8, 0xe0, 0x61, 0x80,
0x68, 0x8f, 0x41, 0xd8, 0x1a, 0x12, 0x8b, 0x90, 0x53, 0x70, 0x16, 0x56, 0xe3, 0x30, 0x4e, 0xb2, 0xa0, 0x3d, 0x06, 0x61, 0x6b, 0x48, 0x2c, 0x42, 0x4e, 0xc1, 0x59, 0x58, 0x8d, 0xc3, 0x38, 0xc9,
0x0e, 0x0b, 0x27, 0x3e, 0xb5, 0x47, 0xe7, 0x82, 0x7b, 0x89, 0x2f, 0xf2, 0xed, 0x48, 0x89, 0x37, 0x3a, 0x2c, 0x9c, 0xf8, 0xd4, 0x1e, 0x9d, 0x0b, 0xee, 0x25, 0xbe, 0xc8, 0xb7, 0x23, 0x25, 0xde,
0x62, 0x6b, 0x62, 0x42, 0x79, 0xe5, 0x2b, 0xe6, 0x92, 0x80, 0xef, 0x08, 0x30, 0xdb, 0xe7, 0xed, 0x88, 0xad, 0x89, 0x09, 0xe5, 0x95, 0xaf, 0x98, 0x4b, 0x02, 0xbe, 0x23, 0xc0, 0x6c, 0x9f, 0xb7,
0x13, 0xdb, 0x1d, 0x7b, 0x2e, 0x1d, 0x8b, 0xb3, 0x7c, 0x04, 0x30, 0x8e, 0x60, 0x3d, 0xd9, 0x3e, 0x4f, 0x6c, 0x77, 0xec, 0xb9, 0x74, 0x2c, 0xce, 0xf2, 0x11, 0xc0, 0x38, 0x82, 0xf5, 0x64, 0xfb,
0xc1, 0xef, 0x3e, 0xd1, 0xf8, 0x1d, 0x3f, 0xfa, 0x6e, 0x5e, 0xbf, 0xc6, 0x34, 0xde, 0xf7, 0xaf, 0x04, 0xbf, 0xfb, 0x44, 0xe3, 0x77, 0xfc, 0xe8, 0xbb, 0x79, 0xfd, 0x1a, 0xd3, 0x78, 0xdf, 0x7f,
0x8b, 0x50, 0x64, 0x07, 0x9e, 0x6b, 0xcf, 0x46, 0xfa, 0xd9, 0xb6, 0x90, 0x32, 0x9a, 0xa3, 0xae, 0x2e, 0x42, 0x91, 0x1d, 0x78, 0xae, 0x3d, 0x1b, 0xe9, 0x67, 0xdb, 0x42, 0xca, 0x68, 0x8e, 0xba,
0x90, 0x0b, 0x60, 0x62, 0xb0, 0x10, 0x82, 0x82, 0x97, 0x42, 0xfb, 0x74, 0x74, 0x21, 0xcf, 0x2c, 0x42, 0x2e, 0x80, 0x89, 0xc1, 0x42, 0x08, 0x0a, 0x5e, 0x0a, 0xed, 0xd3, 0xd1, 0x85, 0x3c, 0xb3,
0x08, 0x31, 0xe9, 0xe8, 0x02, 0x95, 0x16, 0x76, 0xc8, 0xd3, 0x72, 0x7e, 0x55, 0x0e, 0xec, 0x10, 0x20, 0xc4, 0xa4, 0xa3, 0x0b, 0x54, 0x5a, 0xd8, 0x21, 0x4f, 0xcb, 0xf9, 0x55, 0x39, 0xb0, 0x43,
0x53, 0x0a, 0x14, 0xa6, 0x2b, 0x2b, 0x14, 0xa6, 0x6a, 0x41, 0xd9, 0x71, 0x4f, 0xbc, 0xb9, 0x2b, 0x4c, 0x29, 0x50, 0x98, 0xae, 0xac, 0x50, 0x98, 0xaa, 0x05, 0x65, 0xc7, 0x3d, 0xf1, 0xe6, 0xae,
0x55, 0x3f, 0xf2, 0x13, 0x6d, 0xf4, 0xc8, 0x49, 0xd9, 0xd6, 0xce, 0xb9, 0x51, 0x85, 0x01, 0x86, 0x54, 0xfd, 0xc8, 0x4f, 0xb4, 0xd1, 0x23, 0x27, 0x65, 0x5b, 0x3b, 0xe7, 0x46, 0x15, 0x06, 0x18,
0x6c, 0x73, 0xff, 0x10, 0xaa, 0xc1, 0x95, 0x3b, 0xd2, 0x79, 0xd0, 0xaa, 0xe8, 0x1f, 0xd6, 0xfa, 0xb2, 0xcd, 0xfd, 0x43, 0xa8, 0x06, 0x57, 0xee, 0x48, 0xe7, 0x41, 0xab, 0xa2, 0x7f, 0x58, 0xeb,
0xad, 0xc1, 0x95, 0x3b, 0xc2, 0x19, 0x5f, 0x09, 0xc4, 0x2f, 0xf2, 0x08, 0x2a, 0xca, 0xaa, 0xc5, 0xb7, 0x06, 0x57, 0xee, 0x08, 0x67, 0x7c, 0x25, 0x10, 0xbf, 0xc8, 0x23, 0xa8, 0x28, 0xab, 0x16,
0x77, 0x90, 0x9b, 0x7a, 0x0a, 0x69, 0xca, 0xe2, 0xfa, 0x31, 0x45, 0x4a, 0x3e, 0x80, 0x05, 0x54, 0xdf, 0x41, 0x6e, 0xea, 0x29, 0xa4, 0x29, 0x8b, 0xeb, 0xc7, 0x14, 0x29, 0xf9, 0x00, 0x16, 0x50,
0x80, 0x07, 0xad, 0x3a, 0x26, 0x92, 0x07, 0x5e, 0x56, 0x0d, 0x34, 0x8f, 0xd3, 0x31, 0x9a, 0xa1, 0x01, 0x1e, 0xb4, 0xea, 0x98, 0x48, 0x1e, 0x78, 0x59, 0x35, 0xd0, 0x3c, 0x4e, 0xc7, 0x68, 0x86,
0x4c, 0x41, 0xc6, 0xba, 0xe9, 0x74, 0x62, 0xcf, 0x84, 0x3a, 0xba, 0xc1, 0xad, 0xcc, 0x0c, 0xc2, 0x32, 0x05, 0x19, 0xeb, 0xa6, 0xd3, 0x89, 0x3d, 0x13, 0xea, 0xe8, 0x06, 0xb7, 0x32, 0x33, 0x08,
0x75, 0xd1, 0x77, 0xa1, 0x8e, 0x16, 0x43, 0xa4, 0x71, 0xb9, 0x1c, 0x5a, 0x30, 0x81, 0xc1, 0xf6, 0xd7, 0x45, 0xdf, 0x85, 0x3a, 0x5a, 0x0c, 0x91, 0xc6, 0xe5, 0x72, 0x68, 0xc1, 0x04, 0x06, 0xdb,
0x26, 0xf6, 0xac, 0x17, 0x6c, 0x3e, 0x85, 0x46, 0xac, 0x32, 0xba, 0x9a, 0xab, 0xc1, 0xd5, 0x5c, 0x9b, 0xd8, 0xb3, 0x5e, 0xb0, 0xf9, 0x14, 0x1a, 0xb1, 0xca, 0xe8, 0x6a, 0xae, 0x06, 0x57, 0x73,
0x6f, 0xe9, 0x6a, 0xae, 0x68, 0x2b, 0x14, 0xc9, 0x74, 0xb5, 0xd7, 0xf7, 0xa0, 0x22, 0xfb, 0x82, 0xbd, 0xa5, 0xab, 0xb9, 0xa2, 0xad, 0x50, 0x24, 0xd3, 0xd5, 0x5e, 0x47, 0x50, 0x91, 0x7d, 0xc1,
0xf1, 0x9c, 0xe3, 0xde, 0xd3, 0x5e, 0xff, 0xcb, 0x9e, 0x35, 0xf8, 0xaa, 0xb7, 0xd3, 0xbc, 0x41, 0x78, 0xce, 0x71, 0xef, 0x69, 0xaf, 0xff, 0x65, 0xcf, 0x1a, 0x7c, 0xd5, 0xdb, 0x69, 0xde, 0x20,
0x96, 0xa0, 0xd6, 0xde, 0x41, 0x36, 0x86, 0x80, 0x1c, 0x23, 0x39, 0x6a, 0x0f, 0x06, 0x0a, 0x92, 0x4b, 0x50, 0x6b, 0xef, 0x20, 0x1b, 0x43, 0x40, 0x8e, 0x91, 0x1c, 0xb5, 0x07, 0x03, 0x05, 0xc9,
0x37, 0xf6, 0xa0, 0x99, 0x6c, 0x2a, 0x9b, 0xd4, 0xa1, 0x84, 0x09, 0xcb, 0x5e, 0x04, 0x88, 0xec, 0x33, 0x92, 0xa3, 0x6e, 0xaf, 0xd7, 0xd9, 0xe5, 0x80, 0x82, 0xb1, 0x07, 0xcd, 0x64, 0xdb, 0xd9,
0x07, 0x79, 0xcd, 0x7e, 0x60, 0x3c, 0x82, 0x26, 0xdb, 0xd8, 0x59, 0x5f, 0xeb, 0x36, 0xfb, 0x09, 0x2c, 0x0f, 0x25, 0x4c, 0x98, 0xfa, 0x22, 0x40, 0x64, 0x50, 0xc8, 0x6b, 0x06, 0x05, 0xe3, 0x11,
0x13, 0xbd, 0x75, 0xeb, 0x5e, 0xc5, 0xac, 0x71, 0x18, 0x16, 0x65, 0x7c, 0x02, 0xcb, 0x5a, 0xb2, 0x34, 0xd9, 0x4e, 0xcf, 0x3a, 0x5f, 0x37, 0xe2, 0x4f, 0x98, 0x2c, 0xae, 0x9b, 0xfb, 0x2a, 0x66,
0x48, 0x29, 0xc4, 0x84, 0x85, 0xa4, 0x52, 0x08, 0x0f, 0xfa, 0x1c, 0x63, 0x6c, 0xc0, 0x1a, 0xfb, 0x8d, 0xc3, 0xb0, 0x28, 0xe3, 0x13, 0x58, 0xd6, 0x92, 0x45, 0x5a, 0x22, 0x26, 0x3d, 0x24, 0xb5,
0xec, 0x5c, 0x50, 0x37, 0x1c, 0xcc, 0x4f, 0xb8, 0xab, 0x87, 0xe3, 0xb9, 0xc6, 0xaf, 0xe6, 0xa0, 0x44, 0x78, 0xf2, 0xe7, 0x18, 0x63, 0x03, 0xd6, 0xd8, 0x67, 0xe7, 0x82, 0xba, 0xe1, 0x60, 0x7e,
0xaa, 0x30, 0xd7, 0xaf, 0x92, 0x2d, 0xa1, 0x3f, 0xe2, 0x6c, 0x71, 0x53, 0x2b, 0x01, 0x13, 0x6e, 0xc2, 0x7d, 0x3f, 0x1c, 0xcf, 0x35, 0x7e, 0x2d, 0x07, 0x55, 0x85, 0xb9, 0x7e, 0xd9, 0x6c, 0x09,
0xe1, 0xdf, 0x98, 0x1e, 0xa9, 0xaa, 0x40, 0xac, 0x5b, 0x8f, 0x3a, 0x1d, 0xd3, 0xea, 0xf7, 0x0e, 0x85, 0x12, 0xe7, 0x93, 0x9b, 0x5a, 0x09, 0x98, 0x70, 0x0b, 0xff, 0xc6, 0x14, 0x4b, 0x55, 0x05,
0xba, 0x3d, 0xb6, 0x39, 0xb0, 0x6e, 0x45, 0xc0, 0xde, 0x1e, 0x42, 0x72, 0x46, 0x13, 0x16, 0x9f, 0xc2, 0x4e, 0xec, 0x74, 0x4c, 0xab, 0xdf, 0x3b, 0xe8, 0xf6, 0xd8, 0x6e, 0xc1, 0xfa, 0x19, 0x01,
0xd0, 0xb0, 0xeb, 0x9e, 0x7a, 0xa2, 0x33, 0x8c, 0xbf, 0xba, 0x00, 0x4b, 0x0a, 0x14, 0xe9, 0xa1, 0x7b, 0x7b, 0x08, 0xc9, 0x19, 0x4d, 0x58, 0x7c, 0x42, 0xc3, 0xae, 0x7b, 0xea, 0x89, 0xce, 0x30,
0x2e, 0xa8, 0x1f, 0x38, 0x9e, 0x8b, 0xf3, 0xa4, 0x6a, 0xca, 0x4f, 0xc6, 0xde, 0xc4, 0x29, 0x0d, 0xfe, 0xea, 0x02, 0x2c, 0x29, 0x50, 0xa4, 0x98, 0xba, 0xa0, 0x7e, 0xe0, 0x78, 0x2e, 0x4e, 0x9c,
0xc5, 0x8c, 0x55, 0xc4, 0x8a, 0x73, 0x1d, 0xca, 0x18, 0xef, 0xc0, 0x92, 0x33, 0xa6, 0x6e, 0xe8, 0xaa, 0x29, 0x3f, 0x19, 0xbf, 0x13, 0xc7, 0x36, 0x94, 0x3b, 0x56, 0x11, 0x2b, 0x0e, 0x7a, 0x28,
0x84, 0x57, 0x56, 0x4c, 0x2b, 0xbf, 0x28, 0xc1, 0x42, 0xce, 0x58, 0x85, 0x92, 0x3d, 0x71, 0x6c, 0x74, 0xbc, 0x03, 0x4b, 0xce, 0x98, 0xba, 0xa1, 0x13, 0x5e, 0x59, 0x31, 0x35, 0xfd, 0xa2, 0x04,
0xe9, 0x42, 0xc3, 0x3f, 0x18, 0x74, 0xe4, 0x4d, 0x3c, 0x1f, 0xcf, 0x2d, 0x55, 0x93, 0x7f, 0x90, 0x0b, 0xc1, 0x63, 0x15, 0x4a, 0xf6, 0xc4, 0xb1, 0xa5, 0x4f, 0x0d, 0xff, 0x60, 0xd0, 0x91, 0x37,
0x07, 0xb0, 0xca, 0xce, 0x50, 0xba, 0x19, 0x09, 0x39, 0x14, 0x37, 0x10, 0x10, 0x77, 0x3e, 0x3d, 0xf1, 0x7c, 0x3c, 0xc8, 0x54, 0x4d, 0xfe, 0x41, 0x1e, 0xc0, 0x2a, 0x3b, 0x54, 0xe9, 0x76, 0x25,
0x8a, 0x4c, 0x49, 0x0c, 0xc3, 0xa4, 0x0b, 0x96, 0x42, 0x88, 0x93, 0x2a, 0x01, 0xd7, 0x8b, 0x2c, 0x64, 0x59, 0xdc, 0x62, 0x40, 0xdc, 0xf9, 0xf4, 0x28, 0xb2, 0x2d, 0x31, 0x0c, 0x13, 0x37, 0x58,
0xbb, 0xf3, 0x69, 0x1b, 0x31, 0x8a, 0xfe, 0x21, 0xac, 0x31, 0x7a, 0x25, 0x80, 0xaa, 0x14, 0x4b, 0x0a, 0x21, 0x5f, 0xaa, 0x04, 0x5c, 0x51, 0xb2, 0xec, 0xce, 0xa7, 0x6d, 0xc4, 0x28, 0xfa, 0x87,
0x98, 0x82, 0x65, 0xd6, 0x15, 0x38, 0x95, 0xe6, 0x16, 0x54, 0x79, 0xad, 0xd8, 0x94, 0x10, 0xf6, 0xb0, 0xc6, 0xe8, 0x95, 0x44, 0xaa, 0x52, 0x2c, 0x61, 0x0a, 0x96, 0x59, 0x57, 0xe0, 0x54, 0x9a,
0x26, 0xac, 0x0a, 0xf5, 0x83, 0x94, 0xb7, 0x0b, 0x57, 0x04, 0x24, 0xbd, 0x5d, 0x34, 0x7f, 0x99, 0x5b, 0x50, 0xe5, 0xb5, 0x62, 0x53, 0x42, 0x18, 0xa0, 0xb0, 0x2a, 0xd4, 0x0f, 0x52, 0xee, 0x2f,
0x4a, 0xd2, 0x5f, 0xe6, 0x21, 0xac, 0x9d, 0xb0, 0x39, 0x7a, 0x4e, 0xed, 0x31, 0xf5, 0xad, 0x68, 0x5c, 0x33, 0x90, 0x74, 0x7f, 0xd1, 0x1c, 0x68, 0x2a, 0x49, 0x07, 0x9a, 0x87, 0xb0, 0x76, 0xc2,
0xe6, 0xf3, 0xe3, 0xe6, 0x0a, 0x43, 0xee, 0x23, 0x4e, 0x2d, 0x14, 0x26, 0x09, 0x32, 0xc6, 0x43, 0xe6, 0xe8, 0x39, 0xb5, 0xc7, 0xd4, 0xb7, 0xa2, 0x99, 0xcf, 0xcf, 0x9f, 0x2b, 0x0c, 0xb9, 0x8f,
0xc7, 0x56, 0xe8, 0x59, 0x28, 0x20, 0x0a, 0x8d, 0x6b, 0x83, 0x83, 0x87, 0xde, 0x0e, 0x03, 0xc6, 0x38, 0xb5, 0x50, 0x98, 0x68, 0xc8, 0x38, 0x11, 0x1d, 0x5b, 0xa1, 0x67, 0xa1, 0xc4, 0x28, 0x54,
0xe9, 0xce, 0x7c, 0x7b, 0x76, 0x2e, 0x0e, 0x83, 0x8a, 0xee, 0x09, 0x03, 0x92, 0xd7, 0xa0, 0xcc, 0xb0, 0x0d, 0x0e, 0x1e, 0x7a, 0x3b, 0x0c, 0x18, 0xa7, 0x3b, 0xf3, 0xed, 0xd9, 0xb9, 0x38, 0x1d,
0xd6, 0x84, 0x4b, 0xb9, 0xf3, 0x00, 0x3f, 0x66, 0x49, 0x10, 0x79, 0x0b, 0x16, 0xb0, 0x8c, 0xa0, 0x2a, 0xba, 0x27, 0x0c, 0x48, 0x5e, 0x83, 0x32, 0x5b, 0x13, 0x2e, 0xe5, 0xde, 0x04, 0xfc, 0xdc,
0xd5, 0xc4, 0x05, 0x51, 0x8f, 0xb6, 0x0a, 0xc7, 0x35, 0x05, 0x8e, 0x89, 0xdb, 0x73, 0xdf, 0xe1, 0x25, 0x41, 0xe4, 0x2d, 0x58, 0xc0, 0x32, 0x82, 0x56, 0x13, 0x17, 0x44, 0x3d, 0xda, 0x3b, 0x1c,
0x7c, 0xac, 0x6a, 0xe2, 0x6f, 0xf2, 0x7d, 0x8d, 0x29, 0xae, 0x60, 0xda, 0xb7, 0x44, 0xda, 0xc4, 0xd7, 0x14, 0x38, 0x26, 0x7f, 0xcf, 0x7d, 0x87, 0x33, 0xb6, 0xaa, 0x89, 0xbf, 0xc9, 0xf7, 0x34,
0x54, 0xbc, 0x8e, 0x3f, 0x7e, 0xa3, 0xdc, 0xea, 0x07, 0xc5, 0x4a, 0xad, 0x59, 0x37, 0x5a, 0xe8, 0x2e, 0xb9, 0x82, 0x69, 0xdf, 0x12, 0x69, 0x13, 0x53, 0xf1, 0x3a, 0x86, 0xf9, 0x8d, 0xb2, 0xaf,
0xe4, 0x63, 0xd2, 0x91, 0x77, 0x41, 0xfd, 0xab, 0xd8, 0x1a, 0xc9, 0xc1, 0x46, 0x0a, 0x15, 0xf9, 0xef, 0x17, 0x2b, 0xb5, 0x66, 0xdd, 0x68, 0xa1, 0xd7, 0x8f, 0x49, 0x47, 0xde, 0x05, 0xf5, 0xaf,
0x0a, 0xf8, 0x02, 0x6e, 0x4d, 0xbd, 0xb1, 0x14, 0x0a, 0xea, 0x12, 0x78, 0xe8, 0x8d, 0x99, 0xf0, 0x62, 0x6b, 0x24, 0x07, 0x1b, 0x29, 0x54, 0xe4, 0x3c, 0xe0, 0x0b, 0xb8, 0x35, 0xf5, 0xc6, 0x52,
0xb2, 0xac, 0x88, 0x4e, 0x1d, 0xd7, 0x09, 0xce, 0xe9, 0x58, 0xc8, 0x06, 0x4d, 0x89, 0xd8, 0x13, 0x4a, 0xa8, 0x4b, 0xe0, 0xa1, 0x37, 0x66, 0xd2, 0xcc, 0xb2, 0x22, 0x3a, 0x75, 0x5c, 0x27, 0x38,
0x70, 0x26, 0x81, 0xcf, 0x7c, 0xef, 0x4c, 0x6d, 0x95, 0x39, 0x53, 0x7d, 0x1b, 0x9f, 0x42, 0x89, 0xa7, 0x63, 0x21, 0x2c, 0x34, 0x25, 0x62, 0x4f, 0xc0, 0x99, 0x48, 0x3e, 0xf3, 0xbd, 0x33, 0xb5,
0x8f, 0x20, 0x5b, 0x28, 0x38, 0xbe, 0x39, 0xb1, 0x50, 0x10, 0xda, 0x82, 0xb2, 0x4b, 0xc3, 0xe7, 0x77, 0xe6, 0x4c, 0xf5, 0x6d, 0x7c, 0x0a, 0x25, 0x3e, 0x82, 0x6c, 0xa1, 0xe0, 0xf8, 0xe6, 0xc4,
0x9e, 0xff, 0x4c, 0xda, 0xd6, 0xc4, 0xa7, 0xf1, 0x13, 0x54, 0xaa, 0x2a, 0x6f, 0x2d, 0xae, 0x7c, 0x42, 0x41, 0x68, 0x0b, 0xca, 0x2e, 0x0d, 0x9f, 0x7b, 0xfe, 0x33, 0x69, 0x6c, 0x13, 0x9f, 0xc6,
0x60, 0x53, 0x98, 0x4f, 0xc1, 0xe0, 0xdc, 0x16, 0x7a, 0xde, 0x0a, 0x02, 0x06, 0xe7, 0x76, 0x6a, 0x8f, 0x51, 0xcb, 0xaa, 0xdc, 0xb7, 0xb8, 0x36, 0x82, 0x4d, 0x61, 0x3e, 0x05, 0x83, 0x73, 0x5b,
0x0a, 0xe7, 0xd3, 0x0e, 0x5b, 0x6f, 0xc1, 0xa2, 0xf4, 0x0f, 0x0b, 0xac, 0x09, 0x3d, 0x0d, 0xc5, 0x28, 0x7e, 0x2b, 0x08, 0x18, 0x9c, 0xdb, 0xa9, 0x29, 0x9c, 0x4f, 0x7b, 0x70, 0xbd, 0x05, 0x8b,
0x92, 0xac, 0x0b, 0xe7, 0xb0, 0xe0, 0x80, 0x9e, 0x86, 0xc6, 0x21, 0x2c, 0x8b, 0x45, 0xd3, 0x9f, 0xd2, 0x61, 0x2c, 0xb0, 0x26, 0xf4, 0x34, 0x14, 0x4b, 0xb2, 0x2e, 0xbc, 0xc5, 0x82, 0x03, 0x7a,
0x51, 0x59, 0xf4, 0x67, 0x59, 0xa7, 0xa2, 0xda, 0xc3, 0x95, 0xb8, 0xb8, 0xc1, 0x05, 0xbb, 0xd8, 0x1a, 0x1a, 0x87, 0xb0, 0x2c, 0x16, 0x4d, 0x7f, 0x46, 0x65, 0xd1, 0x9f, 0x65, 0x1d, 0x93, 0x6a,
0x51, 0xc9, 0xf8, 0x61, 0xa4, 0x41, 0x64, 0xc2, 0x88, 0xc8, 0x4f, 0x9c, 0x4d, 0xa4, 0x49, 0x52, 0x0f, 0x57, 0xe2, 0xf2, 0x07, 0x97, 0xf4, 0x62, 0x67, 0x27, 0xe3, 0x07, 0x91, 0x4a, 0x91, 0x49,
0xba, 0x3d, 0xa8, 0x13, 0x90, 0x33, 0x66, 0xbd, 0x13, 0xcc, 0x47, 0x23, 0xe9, 0xb7, 0x57, 0x31, 0x27, 0x22, 0x3f, 0x71, 0x58, 0x91, 0x36, 0x4a, 0xe9, 0x07, 0xa1, 0x8e, 0x44, 0xce, 0x98, 0xf5,
0xe5, 0xa7, 0xf1, 0xef, 0x72, 0xb0, 0x82, 0x99, 0xc9, 0x53, 0x9d, 0xd8, 0x29, 0x7e, 0xea, 0x4a, 0x4e, 0x30, 0x1f, 0x8d, 0xa4, 0x23, 0x5f, 0xc5, 0x94, 0x9f, 0xc6, 0xbf, 0xcd, 0xc1, 0x0a, 0x66,
0xb2, 0xf1, 0xd1, 0x25, 0x40, 0xfe, 0xf1, 0xf5, 0x8d, 0x34, 0xc5, 0x94, 0x91, 0xe6, 0xdb, 0xd0, 0x26, 0x8f, 0x79, 0x62, 0xa7, 0xf8, 0x89, 0x2b, 0xc9, 0xc6, 0x47, 0x17, 0x09, 0xf9, 0xc7, 0xd7,
0x1c, 0xd3, 0x89, 0x83, 0x53, 0x49, 0x0a, 0x54, 0x5c, 0x82, 0x5d, 0x92, 0x70, 0xa1, 0x65, 0x30, 0xb7, 0xda, 0x14, 0x53, 0x56, 0x9b, 0x6f, 0x43, 0x73, 0x4c, 0x27, 0x0e, 0x4e, 0x25, 0x29, 0x61,
0xfe, 0x66, 0x0e, 0x96, 0xb9, 0xbc, 0x86, 0x7a, 0x1b, 0xd1, 0x51, 0x8f, 0xa5, 0x82, 0x42, 0xb0, 0x71, 0x91, 0x76, 0x49, 0xc2, 0x85, 0xda, 0xc1, 0xf8, 0x9b, 0x39, 0x58, 0xe6, 0x02, 0x1c, 0x2a,
0x53, 0xd1, 0xa6, 0x48, 0x8e, 0x41, 0x28, 0x27, 0xde, 0xbf, 0x21, 0x14, 0x17, 0x02, 0x4a, 0xbe, 0x72, 0x44, 0x47, 0x3d, 0x96, 0x1a, 0x0b, 0xc1, 0x4e, 0x45, 0x9b, 0x22, 0xc1, 0x06, 0xa1, 0x9c,
0x83, 0x27, 0x51, 0xd7, 0x42, 0xa0, 0x90, 0xc3, 0x6f, 0x66, 0x48, 0x88, 0x2a, 0x39, 0x3b, 0xa6, 0x78, 0xff, 0x86, 0xd0, 0x64, 0x08, 0x28, 0xf9, 0x0e, 0x1e, 0x4d, 0x5d, 0x0b, 0x81, 0x42, 0x30,
0xba, 0x08, 0xda, 0xae, 0xc0, 0x02, 0xd7, 0x82, 0x19, 0x7b, 0xd0, 0x88, 0x15, 0x13, 0xb3, 0xf4, 0xbf, 0x99, 0x21, 0x32, 0xaa, 0xe4, 0xec, 0xdc, 0xea, 0x22, 0x68, 0xbb, 0x02, 0x0b, 0x5c, 0x2d,
0xd4, 0xb9, 0xa5, 0x27, 0x65, 0x0d, 0xce, 0xa7, 0xad, 0xc1, 0x57, 0xb0, 0x62, 0x52, 0x7b, 0x7c, 0x66, 0xec, 0x41, 0x23, 0x56, 0x4c, 0xcc, 0xf4, 0x53, 0xe7, 0xa6, 0x9f, 0x94, 0x79, 0x38, 0x9f,
0xb5, 0xe7, 0xf9, 0x47, 0xc1, 0x49, 0xb8, 0xc7, 0x85, 0x60, 0xb6, 0x07, 0x29, 0xff, 0x8f, 0x98, 0x36, 0x0f, 0x5f, 0xc1, 0x8a, 0x49, 0xed, 0xf1, 0xd5, 0x9e, 0xe7, 0x1f, 0x05, 0x27, 0xe1, 0x1e,
0x39, 0x45, 0x5a, 0xba, 0xa5, 0x1a, 0xe6, 0x5b, 0xb0, 0x18, 0x39, 0x8a, 0x68, 0x8a, 0xf7, 0x86, 0x97, 0x8a, 0xd9, 0x1e, 0xa4, 0x1c, 0x42, 0x62, 0xf6, 0x15, 0x69, 0xfa, 0x96, 0x7a, 0x99, 0x6f,
0xf2, 0x15, 0x41, 0xd9, 0x89, 0x40, 0x71, 0x16, 0x9c, 0x84, 0x42, 0xf5, 0x8e, 0xbf, 0x8d, 0xbf, 0xc1, 0x62, 0xe4, 0x39, 0xa2, 0x69, 0xe2, 0x1b, 0xca, 0x79, 0x04, 0x85, 0x29, 0x02, 0xc5, 0x59,
0x55, 0x02, 0xc2, 0x66, 0x73, 0x62, 0xc2, 0x24, 0x5c, 0x5c, 0xf2, 0x29, 0x17, 0x97, 0x07, 0x40, 0x70, 0x12, 0x0a, 0x5d, 0x3c, 0xfe, 0x36, 0xfe, 0x56, 0x09, 0x08, 0x9b, 0xcd, 0x89, 0x09, 0x93,
0x34, 0x02, 0xe9, 0x79, 0x53, 0x50, 0x9e, 0x37, 0xcd, 0x88, 0x56, 0x38, 0xde, 0x3c, 0x80, 0x55, 0xf0, 0x79, 0xc9, 0xa7, 0x7c, 0x5e, 0x1e, 0x00, 0xd1, 0x08, 0xa4, 0x2b, 0x4e, 0x41, 0xb9, 0xe2,
0x71, 0xa2, 0x88, 0x57, 0x95, 0x4f, 0x0d, 0xc2, 0x8f, 0x16, 0xb1, 0xfa, 0x4a, 0xf7, 0x16, 0xa9, 0x34, 0x23, 0x5a, 0xe1, 0x89, 0xf3, 0x00, 0x56, 0xc5, 0x11, 0x23, 0x5e, 0x55, 0x3e, 0x35, 0x08,
0xa9, 0x2e, 0x70, 0xf7, 0x16, 0xa9, 0x50, 0xd2, 0x26, 0xe0, 0xc2, 0x4b, 0x27, 0x60, 0x39, 0x35, 0x3f, 0x6b, 0xc4, 0xea, 0x2b, 0xfd, 0x5d, 0xa4, 0xea, 0xba, 0xc0, 0xfd, 0x5d, 0xa4, 0x86, 0x49,
0x01, 0x35, 0xe5, 0x62, 0x25, 0xae, 0x5c, 0x4c, 0xa9, 0xc9, 0xb9, 0xf8, 0x1c, 0x53, 0x93, 0xdf, 0x9b, 0x80, 0x0b, 0x2f, 0x9d, 0x80, 0xe5, 0xd4, 0x04, 0xd4, 0xb4, 0x8d, 0x95, 0xb8, 0xb6, 0x31,
0x83, 0xa6, 0x54, 0x34, 0x29, 0x15, 0xa6, 0xf0, 0x79, 0x10, 0xba, 0x24, 0xa9, 0xc4, 0x8c, 0xd9, 0xa5, 0x37, 0xe7, 0xf2, 0x74, 0x4c, 0x6f, 0x7e, 0x0f, 0x9a, 0x52, 0xf3, 0xa4, 0x74, 0x9a, 0xc2,
0xf4, 0x6a, 0xaf, 0x62, 0x5c, 0xac, 0x67, 0x1b, 0x17, 0xd3, 0x2a, 0xb9, 0x46, 0x86, 0x4a, 0xee, 0x09, 0x42, 0x28, 0x97, 0xa4, 0x56, 0x33, 0x66, 0xe4, 0xab, 0xbd, 0x8a, 0xb5, 0xb1, 0x9e, 0x6d,
0x51, 0xe4, 0xd2, 0x10, 0x9c, 0x3b, 0x53, 0x14, 0x7c, 0x22, 0x87, 0x4b, 0xd1, 0xc1, 0x83, 0x73, 0x6d, 0x4c, 0xeb, 0xe8, 0x1a, 0x19, 0x3a, 0xba, 0x47, 0x91, 0x8f, 0x43, 0x70, 0xee, 0x4c, 0x51,
0x67, 0x6a, 0x4a, 0xe7, 0x22, 0xf6, 0x41, 0x76, 0xe0, 0x8e, 0x68, 0x4f, 0x86, 0x5f, 0x10, 0xef, 0xf0, 0x89, 0x3c, 0x30, 0x45, 0x07, 0x0f, 0xce, 0x9d, 0xa9, 0x29, 0xbd, 0x8d, 0xd8, 0x07, 0xd9,
0x85, 0x25, 0x94, 0x54, 0x37, 0x39, 0xd9, 0x61, 0xc2, 0x45, 0x28, 0xd1, 0x29, 0xd2, 0xab, 0x24, 0x81, 0x3b, 0xa2, 0x3d, 0x19, 0x8e, 0x42, 0xbc, 0x17, 0x96, 0x50, 0x52, 0xdd, 0xe4, 0x64, 0x87,
0xe0, 0x7a, 0x5d, 0xd9, 0x29, 0x87, 0xdc, 0xad, 0x24, 0xc0, 0x2e, 0xb6, 0x2f, 0x2d, 0xa1, 0xf3, 0x09, 0x9f, 0xa1, 0x44, 0xa7, 0x48, 0x37, 0x93, 0x80, 0x2b, 0x7a, 0x65, 0xa7, 0x1c, 0x72, 0x3f,
0x0b, 0x2e, 0x50, 0x4e, 0x6a, 0x98, 0xb5, 0xa9, 0x7d, 0x79, 0x80, 0x3a, 0xbd, 0xe0, 0xc2, 0xf8, 0x93, 0x00, 0xbb, 0xd8, 0xbe, 0xb4, 0x84, 0x12, 0x30, 0xb8, 0x40, 0x39, 0xa9, 0x61, 0xd6, 0xa6,
0xf3, 0x1c, 0x34, 0xd9, 0xd4, 0x8c, 0xad, 0xfa, 0xcf, 0x01, 0xf9, 0xd3, 0x2b, 0x2e, 0xfa, 0x1a, 0xf6, 0xe5, 0x01, 0x2a, 0xf9, 0x82, 0x0b, 0xe3, 0x2f, 0x72, 0xd0, 0x64, 0x53, 0x33, 0xb6, 0xea,
0xa3, 0x95, 0x6b, 0xfe, 0x53, 0xc0, 0x45, 0x6c, 0x79, 0x33, 0xea, 0x8a, 0x25, 0xdf, 0x8a, 0x2f, 0x3f, 0x07, 0xe4, 0x4f, 0xaf, 0xb8, 0xe8, 0x6b, 0x8c, 0x56, 0xae, 0xf9, 0x4f, 0x01, 0x17, 0xb1,
0xf9, 0x88, 0xad, 0xef, 0xdf, 0xe0, 0x87, 0x42, 0x06, 0x21, 0x9f, 0x43, 0x95, 0xad, 0x15, 0x9c, 0xe5, 0xcd, 0xa8, 0x2b, 0x96, 0x7c, 0x2b, 0xbe, 0xe4, 0x23, 0xb6, 0xbe, 0x7f, 0x83, 0x9f, 0x12,
0xb8, 0xc2, 0xa5, 0x79, 0x53, 0x1d, 0xf4, 0x53, 0xcb, 0x96, 0x25, 0x9d, 0x89, 0xcf, 0x2c, 0xa7, 0x19, 0x84, 0x7c, 0x0e, 0x55, 0xb6, 0x56, 0x70, 0xe2, 0x0a, 0x1f, 0xe7, 0x4d, 0x75, 0xf2, 0x4f,
0xa1, 0x62, 0x86, 0xd3, 0x90, 0xc6, 0x53, 0xf6, 0x01, 0x9e, 0xd2, 0x2b, 0xd6, 0x09, 0xa1, 0xe7, 0x2d, 0x5b, 0x96, 0x74, 0x26, 0x3e, 0xb3, 0xbc, 0x88, 0x8a, 0x19, 0x5e, 0x44, 0x1a, 0x4f, 0xd9,
0x33, 0xd9, 0x8a, 0x2d, 0xaf, 0x53, 0x7b, 0xea, 0x08, 0x65, 0x63, 0xc9, 0xac, 0x3e, 0xa3, 0x57, 0x07, 0x78, 0x4a, 0xaf, 0x58, 0x27, 0x84, 0x9e, 0xcf, 0x64, 0x2b, 0xb6, 0xbc, 0x4e, 0xed, 0xa9,
0x7b, 0x08, 0x60, 0x73, 0x8b, 0xa1, 0x23, 0xc6, 0x52, 0x32, 0x2b, 0xcf, 0xe8, 0x15, 0xe7, 0x2a, 0x23, 0xb4, 0x8f, 0x25, 0xb3, 0xfa, 0x8c, 0x5e, 0xed, 0x21, 0x80, 0xcd, 0x2d, 0x86, 0x8e, 0x18,
0x16, 0x34, 0x9e, 0xd2, 0xab, 0x5d, 0xca, 0x85, 0x77, 0xcf, 0x67, 0x9d, 0xee, 0xdb, 0xcf, 0x99, 0x4b, 0xc9, 0xac, 0x3c, 0xa3, 0x57, 0x9c, 0xab, 0x58, 0xd0, 0x78, 0x4a, 0xaf, 0x76, 0x29, 0x17,
0xb4, 0x1e, 0x73, 0x6a, 0xa9, 0xf9, 0xf6, 0xf3, 0xa7, 0xf4, 0x4a, 0x3a, 0xd8, 0x94, 0x19, 0x7e, 0xde, 0x3d, 0x9f, 0x75, 0xba, 0x6f, 0x3f, 0x67, 0xd2, 0x7a, 0xcc, 0xcb, 0xa5, 0xe6, 0xdb, 0xcf,
0xe2, 0x8d, 0x84, 0xb8, 0x21, 0xf5, 0x3b, 0x51, 0xa5, 0xcc, 0x85, 0x67, 0xf8, 0xdb, 0xf8, 0xb3, 0x9f, 0xd2, 0x2b, 0xe9, 0x71, 0x53, 0x66, 0xf8, 0x89, 0x37, 0x12, 0xe2, 0x86, 0x54, 0xf8, 0x44,
0x1c, 0x34, 0x58, 0xfd, 0x71, 0xa7, 0xc0, 0x59, 0x24, 0x5c, 0x60, 0x73, 0x91, 0x0b, 0xec, 0x43, 0x95, 0x32, 0x17, 0x9e, 0xe1, 0x6f, 0xe3, 0xcf, 0x73, 0xd0, 0x60, 0xf5, 0xc7, 0x9d, 0x02, 0x67,
0xc1, 0x68, 0xf9, 0xb6, 0x93, 0xbf, 0x7e, 0xdb, 0xc1, 0xb1, 0xe1, 0x7b, 0xce, 0x87, 0x50, 0xe5, 0x91, 0xf0, 0x89, 0xcd, 0x45, 0x3e, 0xb1, 0x0f, 0x05, 0xa3, 0xe5, 0xdb, 0x4e, 0xfe, 0xfa, 0x6d,
0x13, 0x83, 0xb1, 0x9e, 0x42, 0x6c, 0x80, 0x63, 0x0d, 0x32, 0x2b, 0x48, 0xf6, 0x94, 0x7b, 0xdc, 0x07, 0xc7, 0x86, 0xef, 0x39, 0x1f, 0x42, 0x95, 0x4f, 0x0c, 0xc6, 0x7a, 0x0a, 0xb1, 0x01, 0x8e,
0x69, 0xaa, 0x74, 0xde, 0xc5, 0x55, 0x5f, 0x29, 0xd0, 0x33, 0x86, 0xa1, 0x74, 0x8d, 0xc7, 0x9d, 0x35, 0xc8, 0xac, 0x20, 0xd9, 0x53, 0xee, 0x82, 0xa7, 0xe9, 0xd6, 0x79, 0x17, 0x57, 0x7d, 0xa5,
0xae, 0xa7, 0x5e, 0x48, 0xea, 0xa9, 0x0d, 0x17, 0x2a, 0x6c, 0xa8, 0xb1, 0xb1, 0x19, 0x99, 0xe6, 0x51, 0xcf, 0x18, 0x86, 0xd2, 0x35, 0x2e, 0x78, 0xba, 0xe2, 0x7a, 0x21, 0xa9, 0xb8, 0x36, 0x5c,
0xb2, 0x32, 0x65, 0xc2, 0x89, 0xcd, 0xf6, 0x29, 0xc6, 0x7b, 0xf3, 0x42, 0x38, 0xb1, 0x03, 0xca, 0xa8, 0xb0, 0xa1, 0xc6, 0xc6, 0x66, 0x64, 0x9a, 0xcb, 0xca, 0x94, 0x09, 0x27, 0x36, 0xdb, 0xa7,
0x32, 0x62, 0x15, 0x77, 0x3d, 0x0b, 0x15, 0xbf, 0x42, 0x25, 0x5a, 0x31, 0xab, 0xae, 0x77, 0xc4, 0x18, 0xef, 0xcd, 0x0b, 0xe1, 0xc4, 0x0e, 0x28, 0xcb, 0x88, 0x55, 0xdc, 0xf5, 0x2c, 0xd4, 0x04,
0x01, 0xc6, 0x5f, 0xc9, 0x41, 0x4d, 0x5b, 0xb3, 0x68, 0x09, 0x50, 0xdd, 0xc9, 0x17, 0x78, 0x7c, 0x0b, 0x1d, 0x69, 0xc5, 0xac, 0xba, 0xde, 0x11, 0x07, 0x18, 0x7f, 0x25, 0x07, 0x35, 0x6d, 0xcd,
0x05, 0xc4, 0xc6, 0x63, 0xff, 0x86, 0xd9, 0x18, 0xc5, 0x06, 0x68, 0x4b, 0x4c, 0x65, 0x4c, 0x99, 0xa2, 0x69, 0x40, 0x75, 0x27, 0x5f, 0xe0, 0xf1, 0x15, 0x10, 0x1b, 0x8f, 0xfd, 0x1b, 0x66, 0x63,
0x8f, 0xa9, 0x9f, 0x64, 0xbb, 0xe4, 0xfc, 0x65, 0xbf, 0xb7, 0x17, 0xa0, 0xc8, 0x48, 0x8d, 0xc7, 0x14, 0x1b, 0xa0, 0x2d, 0x31, 0x95, 0x31, 0x65, 0x3e, 0xa6, 0x8f, 0x92, 0xed, 0x92, 0xf3, 0x97,
0xb0, 0xac, 0x55, 0x83, 0xab, 0x67, 0x5e, 0xb5, 0x03, 0x8c, 0x5f, 0x50, 0x89, 0x59, 0x19, 0xdc, 0xfd, 0xde, 0x5e, 0x80, 0x22, 0x23, 0x35, 0x1e, 0xc3, 0xb2, 0x56, 0x0d, 0xae, 0xaf, 0x79, 0xd5,
0xb4, 0x2e, 0x9d, 0x1b, 0xe9, 0x98, 0xf7, 0x8b, 0x70, 0xa2, 0xe4, 0x20, 0xec, 0x99, 0x57, 0xf4, 0x0e, 0x30, 0x7e, 0x51, 0x25, 0x66, 0x65, 0x70, 0x5b, 0xbb, 0xf4, 0x76, 0xa4, 0x63, 0xde, 0x2f,
0xb7, 0x33, 0x7e, 0x25, 0x07, 0x2b, 0x5a, 0xf6, 0x7b, 0x8e, 0x6b, 0x4f, 0x9c, 0x9f, 0xa0, 0x8c, 0xc2, 0xab, 0x92, 0x83, 0xb0, 0x67, 0x5e, 0xd1, 0x01, 0xcf, 0xf8, 0xd5, 0x1c, 0xac, 0x68, 0xd9,
0x12, 0x38, 0x67, 0x6e, 0xa2, 0x00, 0x0e, 0xfa, 0x3a, 0x05, 0xb0, 0xad, 0x84, 0xbb, 0x4a, 0x73, 0xef, 0x39, 0xae, 0x3d, 0x71, 0x7e, 0x8c, 0x32, 0x4a, 0xe0, 0x9c, 0xb9, 0x89, 0x02, 0x38, 0xe8,
0x77, 0x7b, 0xb1, 0x7d, 0x02, 0xc2, 0x4c, 0xfb, 0xf9, 0xf0, 0xd2, 0xf8, 0xdb, 0x79, 0x58, 0x15, 0xeb, 0x14, 0xc0, 0xb6, 0x12, 0xee, 0x3b, 0xcd, 0xfd, 0xef, 0xc5, 0xf6, 0x09, 0x08, 0x33, 0xed,
0x55, 0x40, 0x8f, 0x76, 0x87, 0x89, 0xa6, 0x87, 0xc1, 0x19, 0xf9, 0x1c, 0x1a, 0xac, 0xfb, 0x2c, 0xe7, 0xc3, 0x4b, 0xe3, 0x6f, 0xe7, 0x61, 0x55, 0x54, 0x01, 0x5d, 0xdc, 0x1d, 0x26, 0x9a, 0x1e,
0x9f, 0x9e, 0x39, 0x41, 0x48, 0xa5, 0xd5, 0x3f, 0x83, 0x1b, 0x33, 0x09, 0x85, 0x91, 0x9a, 0x82, 0x06, 0x67, 0xe4, 0x73, 0x68, 0xb0, 0xee, 0xb3, 0x7c, 0x7a, 0xe6, 0x04, 0x21, 0x95, 0x6e, 0x00,
0x92, 0x3c, 0x86, 0x1a, 0x26, 0xe5, 0x1a, 0x32, 0x31, 0x56, 0xad, 0x74, 0x42, 0x3e, 0x16, 0xfb, 0x19, 0xdc, 0x98, 0x49, 0x28, 0x8c, 0xd4, 0x14, 0x94, 0xe4, 0x31, 0xd4, 0x30, 0x29, 0x57, 0x99,
0x37, 0x4c, 0x08, 0xa2, 0x91, 0x79, 0x0c, 0x35, 0x1c, 0xe6, 0x0b, 0xec, 0xeb, 0x04, 0xb3, 0x4b, 0x89, 0xb1, 0x6a, 0xa5, 0x13, 0xf2, 0xb1, 0xd8, 0xbf, 0x61, 0x42, 0x10, 0x8d, 0xcc, 0x63, 0xa8,
0x8d, 0x05, 0x4b, 0x3c, 0x8b, 0x46, 0xa6, 0x0d, 0x0d, 0xce, 0xee, 0x44, 0x4f, 0x0a, 0x4f, 0xd9, 0xe1, 0x30, 0x5f, 0x60, 0x5f, 0x27, 0x98, 0x5d, 0x6a, 0x2c, 0x58, 0xe2, 0x59, 0x34, 0x32, 0x6d,
0xcd, 0x74, 0x72, 0xd9, 0xd7, 0xac, 0xf2, 0x33, 0xed, 0x7b, 0xbb, 0x0a, 0xe5, 0xd0, 0x77, 0xce, 0x68, 0x70, 0x76, 0x27, 0x7a, 0x52, 0xb8, 0xce, 0x6e, 0xa6, 0x93, 0xcb, 0xbe, 0x66, 0x95, 0x9f,
0xce, 0xa8, 0x6f, 0xac, 0xab, 0xae, 0x61, 0x7c, 0x9c, 0x0e, 0x42, 0x3a, 0x63, 0x67, 0x0e, 0xe3, 0x69, 0xdf, 0xdb, 0x55, 0x28, 0x87, 0xbe, 0x73, 0x76, 0x46, 0x7d, 0x63, 0x5d, 0x75, 0x0d, 0xe3,
0x5f, 0xe6, 0xa0, 0x26, 0x38, 0xf3, 0x4f, 0xed, 0x50, 0xb0, 0x99, 0xd0, 0xa5, 0x56, 0x35, 0xd5, 0xe3, 0x74, 0x10, 0xd2, 0x19, 0x3b, 0x73, 0x18, 0xff, 0x32, 0x07, 0x35, 0xc1, 0x99, 0x7f, 0x62,
0xe9, 0x3b, 0xb0, 0x34, 0x65, 0x07, 0x24, 0x76, 0x80, 0x8f, 0x79, 0x13, 0x2c, 0x4a, 0xb0, 0x90, 0x0f, 0x83, 0xcd, 0x84, 0x72, 0xb5, 0xaa, 0xe9, 0x52, 0xdf, 0x81, 0xa5, 0x29, 0x3b, 0x20, 0xb1,
0xfd, 0xb7, 0x60, 0x05, 0x8f, 0x02, 0x81, 0x15, 0x3a, 0x13, 0x4b, 0x22, 0xc5, 0xb5, 0x8e, 0x65, 0x03, 0x7c, 0xcc, 0xbd, 0x60, 0x51, 0x82, 0x85, 0xec, 0xbf, 0x05, 0x2b, 0x78, 0x14, 0x08, 0xac,
0x8e, 0x1a, 0x3a, 0x93, 0x43, 0x81, 0x60, 0x12, 0x71, 0x10, 0xda, 0x67, 0x54, 0x70, 0x07, 0xfe, 0xd0, 0x99, 0x58, 0x12, 0x29, 0xee, 0x79, 0x2c, 0x73, 0xd4, 0xd0, 0x99, 0x1c, 0x0a, 0x04, 0x93,
0xc1, 0x0e, 0x5d, 0x89, 0xb3, 0xbb, 0x3c, 0x74, 0xfd, 0xef, 0x65, 0xd8, 0x48, 0xa1, 0xc4, 0xa1, 0x88, 0x83, 0xd0, 0x3e, 0xa3, 0x82, 0x3b, 0xf0, 0x0f, 0x76, 0xe8, 0x4a, 0x9c, 0xdd, 0xe5, 0xa1,
0x4b, 0x19, 0x6f, 0x27, 0xce, 0xf4, 0xc4, 0x53, 0xc6, 0x83, 0x9c, 0x66, 0xbc, 0x3d, 0x60, 0x18, 0xeb, 0x7f, 0x2f, 0xc3, 0x46, 0x0a, 0x25, 0x0e, 0x5d, 0xca, 0x9a, 0x3b, 0x71, 0xa6, 0x27, 0x9e,
0x69, 0x3c, 0xa0, 0xb0, 0x26, 0xa7, 0x2c, 0x6a, 0xff, 0xd5, 0xf1, 0x3e, 0x8f, 0x87, 0xcf, 0x0f, 0xb2, 0x26, 0xe4, 0x34, 0x6b, 0xee, 0x01, 0xc3, 0x48, 0x6b, 0x02, 0x85, 0x35, 0x39, 0x65, 0xd1,
0xe3, 0xdb, 0x60, 0xb2, 0x38, 0x09, 0xd7, 0xe5, 0xbd, 0x95, 0x59, 0x0a, 0x16, 0x90, 0xff, 0x1f, 0x1c, 0xa0, 0x8e, 0xf7, 0x79, 0x3c, 0x7c, 0x7e, 0x18, 0xdf, 0x06, 0x93, 0xc5, 0x49, 0xb8, 0x2e,
0x5a, 0x6a, 0x65, 0x88, 0xb3, 0x88, 0xa6, 0xab, 0x60, 0x25, 0xbd, 0xf7, 0x92, 0x92, 0x62, 0x6a, 0xef, 0xad, 0xcc, 0x52, 0xb0, 0x80, 0xfc, 0xff, 0xd0, 0x52, 0x2b, 0x43, 0x9c, 0x45, 0x34, 0x5d,
0x59, 0x14, 0x08, 0xd7, 0xe5, 0xa2, 0xe2, 0x19, 0xaa, 0xb2, 0x2e, 0xe0, 0x75, 0x59, 0x16, 0x9e, 0x05, 0x2b, 0xe9, 0xbd, 0x97, 0x94, 0x14, 0xd3, 0xd3, 0xa2, 0x40, 0xb8, 0x2e, 0x17, 0x15, 0xcf,
0x2d, 0xd2, 0x25, 0x16, 0x5f, 0xa9, 0x6d, 0xa8, 0x72, 0x8e, 0x15, 0x6b, 0xde, 0x12, 0x19, 0x2b, 0x50, 0x95, 0x75, 0x01, 0xaf, 0xcb, 0xb2, 0xf0, 0x6c, 0x91, 0x2e, 0xb1, 0xf8, 0x4a, 0x6d, 0x43,
0x94, 0x5e, 0xee, 0x39, 0xac, 0x3f, 0xb7, 0x9d, 0x50, 0xb6, 0x51, 0x53, 0x95, 0x94, 0xb0, 0xbc, 0x1d, 0x74, 0xac, 0x58, 0xf3, 0x96, 0xc8, 0x58, 0xa1, 0xf4, 0x72, 0xcf, 0x61, 0xfd, 0xb9, 0xed,
0x87, 0x2f, 0x29, 0xef, 0x4b, 0x9e, 0x38, 0x76, 0xda, 0x5a, 0x7d, 0x9e, 0x06, 0x06, 0x9b, 0xff, 0x84, 0xb2, 0x8d, 0x9a, 0xaa, 0xa4, 0x84, 0xe5, 0x3d, 0x7c, 0x49, 0x79, 0x5f, 0xf2, 0xc4, 0xb1,
0xb0, 0x00, 0x8b, 0xf1, 0x5c, 0x18, 0xeb, 0x11, 0xdb, 0x95, 0x14, 0xa2, 0x85, 0x64, 0x2f, 0x0c, 0xd3, 0xd6, 0xea, 0xf3, 0x34, 0x30, 0xd8, 0xfc, 0x87, 0x05, 0x58, 0x8c, 0xe7, 0xc2, 0x58, 0x8f,
0x5b, 0x3d, 0x2e, 0x3c, 0xa7, 0x4d, 0x6e, 0xf9, 0x0c, 0x93, 0x9b, 0x6e, 0xe9, 0x2a, 0xbc, 0xcc, 0xd8, 0xae, 0xa4, 0x10, 0x2d, 0x24, 0x7b, 0x61, 0xe9, 0xea, 0x71, 0xe1, 0x39, 0x6d, 0x83, 0xcb,
0xf1, 0xa1, 0xf8, 0x4a, 0x8e, 0x0f, 0xa5, 0x2c, 0xc7, 0x87, 0x8f, 0xae, 0xb5, 0x94, 0x73, 0x7d, 0x67, 0xd8, 0xe0, 0x74, 0xd3, 0x57, 0xe1, 0x65, 0x9e, 0x10, 0xc5, 0x57, 0xf2, 0x84, 0x28, 0x65,
0x75, 0xa6, 0x95, 0xfc, 0xd1, 0xf5, 0x56, 0x72, 0x2e, 0x92, 0x5f, 0x67, 0x21, 0xd7, 0xec, 0xfb, 0x79, 0x42, 0x7c, 0x74, 0xad, 0xe9, 0x9c, 0x2b, 0xb0, 0x33, 0xcd, 0xe6, 0x8f, 0xae, 0x37, 0x9b,
0x95, 0x6b, 0xec, 0x53, 0x9a, 0xc5, 0x3f, 0xc3, 0x42, 0x5e, 0xfd, 0x1a, 0x16, 0xf2, 0xcd, 0x3f, 0x73, 0x91, 0xfc, 0x3a, 0x93, 0xb9, 0x66, 0xf0, 0xaf, 0x5c, 0x63, 0xb0, 0xd2, 0x5c, 0x00, 0x32,
0xcb, 0x01, 0x49, 0xaf, 0x0e, 0xf2, 0x84, 0x5b, 0x33, 0x5d, 0x3a, 0x11, 0x9c, 0xfb, 0xfd, 0x57, 0x4c, 0xe6, 0xd5, 0xaf, 0x61, 0x32, 0xdf, 0xfc, 0xf3, 0x1c, 0x90, 0xf4, 0xea, 0x20, 0x4f, 0xb8,
0x5b, 0x61, 0x72, 0x42, 0xc8, 0xd4, 0xe4, 0x03, 0x58, 0xd1, 0x2f, 0x9f, 0xe9, 0xaa, 0x88, 0x86, 0x79, 0xd3, 0xa5, 0x13, 0xc1, 0xb9, 0xdf, 0x7f, 0xb5, 0x15, 0x26, 0x27, 0x84, 0x4c, 0x4d, 0x3e,
0x49, 0x74, 0x54, 0xa4, 0x54, 0xd3, 0xbc, 0x4c, 0x8a, 0x2f, 0xf5, 0x32, 0x29, 0xbd, 0xd4, 0xcb, 0x80, 0x15, 0xfd, 0x36, 0x9a, 0xae, 0x8a, 0x68, 0x98, 0x44, 0x47, 0x45, 0x4a, 0x35, 0xcd, 0xed,
0x64, 0x21, 0xee, 0x65, 0xb2, 0xf9, 0x6f, 0x73, 0xb0, 0x92, 0x31, 0x89, 0xbf, 0xb9, 0x36, 0xb3, 0xa4, 0xf8, 0x52, 0xb7, 0x93, 0xd2, 0x4b, 0xdd, 0x4e, 0x16, 0xe2, 0x6e, 0x27, 0x9b, 0xff, 0x26,
0xb9, 0x17, 0x63, 0x6b, 0x79, 0x31, 0xf7, 0x74, 0x8e, 0x76, 0x20, 0x15, 0xb1, 0x6c, 0x28, 0x02, 0x07, 0x2b, 0x19, 0x93, 0xf8, 0x9b, 0x6b, 0x33, 0x9b, 0x7b, 0x31, 0xb6, 0x96, 0x17, 0x73, 0x4f,
0xb1, 0x53, 0xdd, 0x7f, 0x19, 0x77, 0x89, 0x52, 0x98, 0x7a, 0xf2, 0xcd, 0x7f, 0x94, 0x87, 0x9a, 0xe7, 0x68, 0x07, 0x52, 0x11, 0xcb, 0x86, 0x22, 0x10, 0x3b, 0xd5, 0xfd, 0x97, 0x71, 0x97, 0x28,
0x86, 0x64, 0xbd, 0xc8, 0xa7, 0xac, 0xe6, 0x7f, 0xc9, 0x65, 0x4b, 0x54, 0xa4, 0xa0, 0x33, 0x3d, 0x85, 0xa9, 0x27, 0xdf, 0xfc, 0x47, 0x79, 0xa8, 0x69, 0x48, 0xd6, 0x8b, 0x7c, 0xca, 0x6a, 0x0e,
0x4e, 0x4e, 0xc4, 0xf3, 0xc5, 0x25, 0x04, 0x49, 0x24, 0xd8, 0x82, 0x15, 0x69, 0x69, 0xa6, 0x91, 0x99, 0x5c, 0xb6, 0x44, 0x45, 0x0a, 0x7a, 0xd7, 0xe3, 0xe4, 0x44, 0x3c, 0x5f, 0x5c, 0x42, 0x90,
0x9b, 0xb8, 0xd8, 0x6b, 0x84, 0xd3, 0x80, 0xa8, 0x24, 0xd2, 0x7f, 0x20, 0xcf, 0xb8, 0xd1, 0xd8, 0x44, 0x82, 0x2d, 0x58, 0x91, 0xa6, 0x67, 0x1a, 0xf9, 0x8d, 0x8b, 0xbd, 0x46, 0x78, 0x11, 0x88,
0x69, 0x96, 0xbb, 0x65, 0xe1, 0xae, 0x20, 0x06, 0x91, 0xcd, 0xf3, 0x0f, 0x61, 0x4d, 0xf9, 0x2b, 0x4a, 0x22, 0xfd, 0x07, 0xf2, 0x8c, 0x1b, 0x8d, 0x9d, 0x66, 0xca, 0x5b, 0x16, 0xfe, 0x0b, 0x62,
0xc4, 0x52, 0x70, 0xfb, 0x10, 0x91, 0x7e, 0x09, 0x5a, 0x92, 0xef, 0xc3, 0xed, 0x44, 0x9d, 0x12, 0x10, 0xd9, 0x3c, 0xff, 0x10, 0xd6, 0x94, 0x03, 0x43, 0x2c, 0x05, 0x37, 0x18, 0x11, 0xe9, 0xa8,
0x49, 0xb9, 0x9f, 0xdb, 0xcd, 0x58, 0xed, 0xf4, 0x1c, 0x36, 0xff, 0x12, 0x34, 0x62, 0x8c, 0xf2, 0xa0, 0x25, 0xf9, 0x1e, 0xdc, 0x4e, 0xd4, 0x29, 0x91, 0x94, 0x3b, 0xbe, 0xdd, 0x8c, 0xd5, 0x4e,
0x9b, 0x1b, 0xf2, 0xa4, 0xf2, 0x8a, 0xf7, 0xa8, 0xae, 0xbc, 0xda, 0xfc, 0x9f, 0x05, 0x20, 0x69, 0xcf, 0x61, 0xf3, 0x2f, 0x41, 0x23, 0xc6, 0x28, 0xbf, 0xb9, 0x21, 0x4f, 0x2a, 0xaf, 0x78, 0x8f,
0x5e, 0xfd, 0xb3, 0xac, 0x42, 0x7a, 0x62, 0x16, 0x32, 0x26, 0xe6, 0xff, 0x33, 0xf9, 0x21, 0xd2, 0xea, 0xca, 0xab, 0xcd, 0xff, 0x59, 0x00, 0x92, 0xe6, 0xd5, 0x3f, 0xcb, 0x2a, 0xa4, 0x27, 0x66,
0xa1, 0x6a, 0xee, 0x02, 0x7c, 0x71, 0x36, 0x15, 0x42, 0xd6, 0xe2, 0xd3, 0xa4, 0x53, 0x55, 0x25, 0x21, 0x63, 0x62, 0xfe, 0x3f, 0x93, 0x1f, 0x22, 0x1d, 0xaa, 0xe6, 0x3f, 0xc0, 0x17, 0x67, 0x53,
0x76, 0x7f, 0x52, 0x13, 0xa0, 0x12, 0xbe, 0x55, 0xc7, 0xb0, 0x60, 0xbb, 0xa3, 0x73, 0xcf, 0x17, 0x21, 0x64, 0x2d, 0x3e, 0x4d, 0x7a, 0x59, 0x55, 0x62, 0x17, 0x2a, 0x35, 0x01, 0x2a, 0xe1, 0x6c,
0x7c, 0xf0, 0xe7, 0xbe, 0xf6, 0xf6, 0xb9, 0xd5, 0xc6, 0xf4, 0x28, 0xb5, 0x99, 0x22, 0x33, 0xe3, 0x75, 0x0c, 0x0b, 0xb6, 0x3b, 0x3a, 0xf7, 0x7c, 0xc1, 0x07, 0x7f, 0xee, 0x6b, 0x6f, 0x9f, 0x5b,
0x43, 0xa8, 0x69, 0x60, 0x52, 0x85, 0xd2, 0x41, 0xf7, 0x70, 0xbb, 0xdf, 0xbc, 0x41, 0x1a, 0x50, 0x6d, 0x4c, 0x8f, 0x52, 0x9b, 0x29, 0x32, 0x33, 0x3e, 0x84, 0x9a, 0x06, 0x26, 0x55, 0x28, 0x1d,
0x35, 0x3b, 0x3b, 0xfd, 0x2f, 0x3a, 0x66, 0x67, 0xb7, 0x99, 0x23, 0x15, 0x28, 0x1e, 0xf4, 0x07, 0x74, 0x0f, 0xb7, 0xfb, 0xcd, 0x1b, 0xa4, 0x01, 0x55, 0xb3, 0xb3, 0xd3, 0xff, 0xa2, 0x63, 0x76,
0xc3, 0x66, 0xde, 0xd8, 0x84, 0x96, 0xc8, 0x31, 0x6d, 0x4d, 0xfa, 0xad, 0xa2, 0xd2, 0x81, 0x22, 0x76, 0x9b, 0x39, 0x52, 0x81, 0xe2, 0x41, 0x7f, 0x30, 0x6c, 0xe6, 0x8d, 0x4d, 0x68, 0x89, 0x1c,
0x52, 0x1c, 0xf2, 0x3f, 0x82, 0xba, 0x2e, 0xde, 0x88, 0x19, 0x91, 0xf0, 0x58, 0x61, 0xc7, 0x7b, 0xd3, 0xd6, 0xa4, 0xdf, 0x2e, 0x2a, 0x1d, 0x28, 0x22, 0xc5, 0x21, 0xff, 0x23, 0xa8, 0xeb, 0xe2,
0x4f, 0xe3, 0xd5, 0x3b, 0xc0, 0xfd, 0x15, 0xc6, 0x2a, 0x59, 0x3e, 0x26, 0xb7, 0x66, 0x18, 0x7e, 0x8d, 0x98, 0x11, 0x09, 0x17, 0x16, 0x76, 0xbc, 0xf7, 0x34, 0x5e, 0xbd, 0x03, 0xdc, 0x81, 0x61,
0xf1, 0x7c, 0x14, 0x9b, 0x86, 0xff, 0x1f, 0x2c, 0xc6, 0x2d, 0x27, 0x82, 0x23, 0x65, 0x1d, 0x59, 0xac, 0x92, 0xe5, 0x63, 0x72, 0x6b, 0x86, 0x25, 0x18, 0xcf, 0x47, 0xb1, 0x69, 0xf8, 0xff, 0xc1,
0x59, 0xea, 0x98, 0x29, 0x85, 0x7c, 0x1f, 0x9a, 0x49, 0xcb, 0x8b, 0x10, 0x9e, 0xaf, 0x49, 0xbf, 0x62, 0xdc, 0x72, 0x22, 0x38, 0x52, 0xd6, 0x91, 0x95, 0xa5, 0x8e, 0x99, 0x52, 0xc8, 0xf7, 0xa0,
0xe4, 0xc4, 0x8d, 0x31, 0x64, 0x1f, 0x56, 0xb3, 0x04, 0x3c, 0x9c, 0x1f, 0xd7, 0xab, 0x39, 0x48, 0x99, 0xb4, 0xbc, 0x08, 0xe1, 0xf9, 0x9a, 0xf4, 0x4b, 0x4e, 0xdc, 0x18, 0x43, 0xf6, 0x61, 0x35,
0x5a, 0x88, 0x23, 0x9f, 0x09, 0x0b, 0x5c, 0x09, 0x87, 0xff, 0xad, 0x78, 0xf9, 0x5a, 0x67, 0x6f, 0x4b, 0xc0, 0xc3, 0xf9, 0x71, 0xbd, 0x9a, 0x83, 0xa4, 0x85, 0x38, 0xf2, 0x99, 0xb0, 0xc0, 0x95,
0xf1, 0x7f, 0x9a, 0x2d, 0xee, 0x02, 0x20, 0x82, 0x91, 0x26, 0xd4, 0xfb, 0x47, 0x9d, 0x9e, 0xb5, 0x70, 0xf8, 0xdf, 0x8a, 0x97, 0xaf, 0x75, 0xf6, 0x16, 0xff, 0xa7, 0xd9, 0xe2, 0x2e, 0x00, 0x22,
0xb3, 0xdf, 0xee, 0xf5, 0x3a, 0x07, 0xcd, 0x1b, 0x84, 0xc0, 0x22, 0x3a, 0x5d, 0xec, 0x2a, 0x58, 0x18, 0x69, 0x42, 0xbd, 0x7f, 0xd4, 0xe9, 0x59, 0x3b, 0xfb, 0xed, 0x5e, 0xaf, 0x73, 0xd0, 0xbc,
0x8e, 0xc1, 0x84, 0x25, 0x54, 0xc2, 0xf2, 0x64, 0x15, 0x9a, 0xdd, 0x5e, 0x02, 0x5a, 0x20, 0x2d, 0x41, 0x08, 0x2c, 0xa2, 0x17, 0xc6, 0xae, 0x82, 0xe5, 0x18, 0x4c, 0x98, 0x46, 0x25, 0x2c, 0x4f,
0x58, 0x3d, 0xea, 0x70, 0x3f, 0x8d, 0x58, 0xbe, 0x45, 0x76, 0x68, 0x10, 0xcd, 0x65, 0x87, 0x86, 0x56, 0xa1, 0xd9, 0xed, 0x25, 0xa0, 0x05, 0xd2, 0x82, 0xd5, 0xa3, 0x0e, 0x77, 0xdc, 0x88, 0xe5,
0x2f, 0xed, 0xc9, 0x84, 0x86, 0x62, 0x1d, 0x48, 0x59, 0xfa, 0xef, 0xe4, 0x60, 0x2d, 0x81, 0x88, 0x5b, 0x64, 0x87, 0x06, 0xd1, 0x5c, 0x76, 0x68, 0xf8, 0xd2, 0x9e, 0x4c, 0x68, 0x28, 0xd6, 0x81,
0xcc, 0x17, 0x5c, 0x92, 0x8e, 0xcb, 0xd0, 0x75, 0x04, 0xca, 0xd5, 0xf4, 0x2e, 0x2c, 0x2b, 0x6d, 0x94, 0xa5, 0xff, 0x4e, 0x0e, 0xd6, 0x12, 0x88, 0xc8, 0x7c, 0xc1, 0x25, 0xe9, 0xb8, 0x0c, 0x5d,
0x5a, 0x62, 0x57, 0x6a, 0x2a, 0x84, 0x24, 0xfe, 0x00, 0x56, 0x34, 0xa5, 0x5c, 0x82, 0x57, 0x10, 0x47, 0xa0, 0x5c, 0x4d, 0xef, 0xc2, 0xb2, 0xd2, 0xa6, 0x25, 0x76, 0xa5, 0xa6, 0x42, 0x48, 0xe2,
0x0d, 0x25, 0x12, 0x18, 0x5b, 0xb0, 0x20, 0x14, 0x97, 0x4d, 0x28, 0xc8, 0x8b, 0x2b, 0x45, 0x93, 0x0f, 0x60, 0x45, 0x53, 0xca, 0x25, 0x78, 0x05, 0xd1, 0x50, 0x22, 0x81, 0xb1, 0x05, 0x0b, 0x42,
0xfd, 0x24, 0x04, 0x8a, 0xd3, 0xc8, 0xdd, 0x17, 0x7f, 0x1b, 0x1b, 0xea, 0x06, 0x5a, 0xa2, 0x95, 0x71, 0xd9, 0x84, 0x82, 0xbc, 0xc9, 0x52, 0x34, 0xd9, 0x4f, 0x42, 0xa0, 0x38, 0x8d, 0xfc, 0x7f,
0xbf, 0x52, 0x84, 0xf5, 0x24, 0x46, 0x39, 0xc0, 0x97, 0x63, 0x0d, 0xe4, 0x86, 0x2c, 0x01, 0x22, 0xf1, 0xb7, 0xb1, 0xa1, 0xae, 0xa4, 0x25, 0x5a, 0xf9, 0xab, 0x45, 0x58, 0x4f, 0x62, 0x94, 0x47,
0x1f, 0x27, 0x66, 0x4f, 0xac, 0x89, 0x48, 0xaa, 0xcf, 0x14, 0xd9, 0xd0, 0x87, 0x49, 0x19, 0x91, 0x7c, 0x39, 0xd6, 0x40, 0x6e, 0xc8, 0x12, 0x20, 0xf2, 0x71, 0x62, 0xf6, 0xc4, 0x9a, 0x88, 0xa4,
0x4f, 0xf9, 0x86, 0x74, 0xfa, 0xc7, 0x36, 0x25, 0x44, 0xc6, 0x8f, 0x53, 0x22, 0x63, 0x31, 0x2b, 0xfa, 0x4c, 0x91, 0x0d, 0x7d, 0x98, 0x94, 0x11, 0xf9, 0x94, 0x6f, 0xc8, 0x5b, 0x00, 0xd8, 0xa6,
0x51, 0x42, 0x82, 0xec, 0xc0, 0x46, 0xe4, 0xd8, 0x1a, 0x2f, 0xb3, 0x94, 0x95, 0x7c, 0x4d, 0x51, 0x84, 0xc8, 0xf8, 0x71, 0x4a, 0x64, 0x2c, 0x66, 0x25, 0x4a, 0x48, 0x90, 0x1d, 0xd8, 0x88, 0x3c,
0x1f, 0xe8, 0x85, 0x3f, 0x81, 0x56, 0x94, 0x4d, 0xa2, 0x1a, 0x0b, 0x59, 0xf9, 0xac, 0x2b, 0x72, 0x5d, 0xe3, 0x65, 0x96, 0xb2, 0x92, 0xaf, 0x29, 0xea, 0x03, 0xbd, 0xf0, 0x27, 0xd0, 0x8a, 0xb2,
0x33, 0x56, 0x9f, 0x1f, 0xc0, 0x66, 0xac, 0xbf, 0xe2, 0x55, 0x2a, 0x67, 0x65, 0xb5, 0xa1, 0x75, 0x49, 0x54, 0x63, 0x21, 0x2b, 0x9f, 0x75, 0x45, 0x6e, 0xc6, 0xea, 0xf3, 0x7d, 0xd8, 0x8c, 0xf5,
0x60, 0xac, 0x52, 0x07, 0x70, 0x2b, 0x96, 0x57, 0xa2, 0x5e, 0x95, 0xac, 0xcc, 0x5a, 0x5a, 0x66, 0x57, 0xbc, 0x4a, 0xe5, 0xac, 0xac, 0x36, 0xb4, 0x0e, 0x8c, 0x55, 0xea, 0x00, 0x6e, 0xc5, 0xf2,
0xb1, 0x9a, 0x19, 0xbf, 0xb3, 0x00, 0xe4, 0x87, 0x73, 0xea, 0x5f, 0xe1, 0xbd, 0xd4, 0xe0, 0x65, 0x4a, 0xd4, 0xab, 0x92, 0x95, 0x59, 0x4b, 0xcb, 0x2c, 0x56, 0x33, 0xe3, 0x77, 0x17, 0x80, 0xfc,
0x1e, 0xfb, 0x52, 0xf1, 0x96, 0x7f, 0xa5, 0xbb, 0xe7, 0x59, 0x77, 0xbf, 0x8b, 0x2f, 0xbf, 0xfb, 0x60, 0x4e, 0xfd, 0x2b, 0xbc, 0xa8, 0x1a, 0xbc, 0xcc, 0x85, 0x5f, 0x2a, 0xde, 0xf2, 0xaf, 0x74,
0x5d, 0x7a, 0xd9, 0xdd, 0xef, 0x37, 0xa1, 0xe1, 0x9c, 0xb9, 0x1e, 0xdb, 0xd7, 0xd8, 0xb1, 0x26, 0x19, 0x3d, 0xeb, 0x32, 0x78, 0xf1, 0xe5, 0x97, 0xc1, 0x4b, 0x2f, 0xbb, 0x0c, 0xfe, 0x26, 0x34,
0x68, 0x2d, 0xdc, 0x2d, 0xdc, 0xab, 0x9b, 0x75, 0x01, 0x64, 0x87, 0x9a, 0x80, 0x3c, 0x8e, 0x88, 0x9c, 0x33, 0xd7, 0x63, 0xfb, 0x1a, 0x3b, 0xd6, 0x04, 0xad, 0x85, 0xbb, 0x85, 0x7b, 0x75, 0xb3,
0xe8, 0xf8, 0x0c, 0xe3, 0x1f, 0xe8, 0x3b, 0x5a, 0x67, 0x7c, 0x46, 0x85, 0x9e, 0x11, 0x27, 0xac, 0x2e, 0x80, 0xec, 0x50, 0x13, 0x90, 0xc7, 0x11, 0x11, 0x1d, 0x9f, 0x61, 0x40, 0x04, 0x7d, 0x47,
0x4c, 0xcc, 0xe0, 0x01, 0x79, 0x0b, 0x16, 0x03, 0x6f, 0xce, 0x4e, 0x89, 0xb2, 0x1b, 0xb8, 0xb9, 0xeb, 0x8c, 0xcf, 0xa8, 0xd0, 0x33, 0xe2, 0x84, 0x95, 0x89, 0x19, 0x3c, 0x20, 0x6f, 0xc1, 0x62,
0xb9, 0xce, 0xa1, 0x47, 0xd2, 0xf9, 0x60, 0x65, 0x1e, 0x50, 0x6b, 0xea, 0x04, 0x01, 0x93, 0xb5, 0xe0, 0xcd, 0xd9, 0x29, 0x51, 0x76, 0x03, 0x37, 0x37, 0xd7, 0x39, 0xf4, 0x48, 0x3a, 0x1f, 0xac,
0x47, 0x9e, 0x1b, 0xfa, 0xde, 0x44, 0x58, 0x90, 0x97, 0xe7, 0x01, 0x3d, 0xe4, 0x98, 0x1d, 0x8e, 0xcc, 0x03, 0x6a, 0x4d, 0x9d, 0x20, 0x60, 0xb2, 0xf6, 0xc8, 0x73, 0x43, 0xdf, 0x9b, 0x08, 0x0b,
0x20, 0x1f, 0x47, 0x55, 0x9a, 0xd9, 0x8e, 0x1f, 0xb4, 0x00, 0xab, 0x24, 0x5b, 0x8a, 0x87, 0x31, 0xf2, 0xf2, 0x3c, 0xa0, 0x87, 0x1c, 0xb3, 0xc3, 0x11, 0xe4, 0xe3, 0xa8, 0x4a, 0x33, 0xdb, 0xf1,
0xdb, 0xf1, 0x55, 0x5d, 0xd8, 0x47, 0x90, 0xb8, 0x93, 0x5e, 0x4b, 0xde, 0x49, 0xff, 0xe5, 0xec, 0x83, 0x16, 0x60, 0x95, 0x64, 0x4b, 0xf1, 0x30, 0x66, 0x3b, 0xbe, 0xaa, 0x0b, 0xfb, 0x08, 0x12,
0x3b, 0xe9, 0xdc, 0x69, 0xee, 0x81, 0xc8, 0x3a, 0x3d, 0xc4, 0x5f, 0xeb, 0x6a, 0x7a, 0xfa, 0xaa, 0x97, 0xd4, 0x6b, 0xc9, 0x4b, 0xea, 0xbf, 0x92, 0x7d, 0x49, 0x9d, 0x7b, 0xd1, 0x3d, 0x10, 0x59,
0xfd, 0xe2, 0xd7, 0xb9, 0x6a, 0xbf, 0x94, 0x75, 0xd5, 0xfe, 0x43, 0xa8, 0xe1, 0x25, 0x68, 0xeb, 0xa7, 0x87, 0xf8, 0x6b, 0xdd, 0x55, 0x4f, 0xdf, 0xbd, 0x5f, 0xfc, 0x3a, 0x77, 0xef, 0x97, 0xb2,
0x1c, 0x5d, 0x67, 0xb9, 0x45, 0xbc, 0xa9, 0xdf, 0x92, 0xde, 0x77, 0xdc, 0xd0, 0x04, 0x5f, 0xfe, 0xee, 0xde, 0x7f, 0x08, 0x35, 0xbc, 0x15, 0x6d, 0x9d, 0xa3, 0x2f, 0x2d, 0xb7, 0x88, 0x37, 0xf5,
0x0c, 0xd2, 0xb7, 0xde, 0x97, 0x7f, 0x86, 0xb7, 0xde, 0xc5, 0x65, 0xed, 0x2d, 0xa8, 0xc8, 0x71, 0x6b, 0xd3, 0xfb, 0x8e, 0x1b, 0x9a, 0xe0, 0xcb, 0x9f, 0x41, 0xfa, 0x1a, 0xfc, 0xf2, 0xcf, 0xf0,
0x62, 0xcc, 0xf6, 0xd4, 0xf7, 0xa6, 0xd2, 0x0a, 0xc7, 0x7e, 0x93, 0x45, 0xc8, 0x87, 0x9e, 0x48, 0x1a, 0xbc, 0xb8, 0xbd, 0xbd, 0x05, 0x15, 0x39, 0x4e, 0x8c, 0xd9, 0x9e, 0xfa, 0xde, 0x54, 0x5a,
0x9c, 0x0f, 0x3d, 0xe3, 0x17, 0xa1, 0xa6, 0x4d, 0x35, 0xf2, 0x06, 0x57, 0x53, 0xb3, 0x83, 0xb6, 0xe1, 0xd8, 0x6f, 0xb2, 0x08, 0xf9, 0xd0, 0x13, 0x89, 0xf3, 0xa1, 0x67, 0xfc, 0x12, 0xd4, 0xb4,
0x38, 0x28, 0xf0, 0x5e, 0xac, 0x0a, 0x68, 0x77, 0xcc, 0x36, 0x8f, 0xb1, 0xe3, 0x53, 0x8c, 0x4f, 0xa9, 0x46, 0xde, 0xe0, 0x6a, 0x6a, 0x76, 0xd0, 0x16, 0x07, 0x05, 0xde, 0x8b, 0x55, 0x01, 0xed,
0x61, 0xf9, 0xf4, 0x82, 0xfa, 0x81, 0xb4, 0x8a, 0x36, 0x15, 0xc2, 0xe4, 0x70, 0xe3, 0x97, 0x60, 0x8e, 0xd9, 0xe6, 0x31, 0x76, 0x7c, 0x8a, 0x01, 0x2b, 0x2c, 0x9f, 0x5e, 0x50, 0x3f, 0x90, 0x56,
0x25, 0x36, 0xb6, 0x82, 0x7d, 0xbf, 0x05, 0x0b, 0xd8, 0x6f, 0xd2, 0xf5, 0x26, 0x7e, 0xfb, 0x5c, 0xd1, 0xa6, 0x42, 0x98, 0x1c, 0x6e, 0xfc, 0x32, 0xac, 0xc4, 0xc6, 0x56, 0xb0, 0xef, 0xb7, 0x60,
0xe0, 0x30, 0x16, 0x07, 0x37, 0xe8, 0x5a, 0x33, 0xdf, 0x3b, 0xc1, 0x42, 0x72, 0x66, 0x4d, 0xc0, 0x01, 0xfb, 0x4d, 0xba, 0xde, 0xc4, 0xaf, 0xa3, 0x0b, 0x1c, 0x06, 0xe7, 0xe0, 0x06, 0x5d, 0x6b,
0x8e, 0x7c, 0xef, 0xc4, 0xf8, 0xcf, 0x05, 0x28, 0xec, 0x7b, 0x33, 0xdd, 0xdd, 0x36, 0x97, 0x72, 0xe6, 0x7b, 0x27, 0x58, 0x48, 0xce, 0xac, 0x09, 0xd8, 0x91, 0xef, 0x9d, 0x18, 0xff, 0xa9, 0x00,
0xb7, 0x15, 0xda, 0x03, 0x4b, 0x69, 0x07, 0xc4, 0x01, 0x0c, 0x4d, 0x99, 0x52, 0x43, 0x70, 0x0f, 0x85, 0x7d, 0x6f, 0xa6, 0xfb, 0xdf, 0xe6, 0x52, 0xfe, 0xb7, 0x42, 0x7b, 0x60, 0x29, 0xed, 0x80,
0x16, 0x19, 0x9f, 0x08, 0x3d, 0x4b, 0x5c, 0x73, 0xe1, 0x3b, 0x1c, 0x5f, 0x7c, 0xf6, 0x34, 0x1c, 0x38, 0x80, 0xa1, 0x29, 0x53, 0x6a, 0x08, 0xee, 0xc1, 0x22, 0xe3, 0x13, 0xa1, 0x67, 0x89, 0x7b,
0x7a, 0x7b, 0x1c, 0x4e, 0x56, 0xa1, 0xa0, 0xce, 0xa2, 0x88, 0x66, 0x9f, 0x64, 0x1d, 0x16, 0xf0, 0x2f, 0x7c, 0x87, 0xe3, 0x8b, 0xcf, 0x9e, 0x86, 0x43, 0x6f, 0x8f, 0xc3, 0xc9, 0x2a, 0x14, 0xd4,
0x7a, 0x8e, 0xbc, 0xaa, 0x2c, 0xbe, 0xc8, 0xfb, 0xb0, 0x12, 0xcf, 0x97, 0xb3, 0x22, 0x21, 0xe8, 0x59, 0x14, 0xd1, 0xec, 0x93, 0xac, 0xc3, 0x02, 0xde, 0xd7, 0x91, 0x77, 0x97, 0xc5, 0x17, 0x79,
0xea, 0x19, 0x23, 0x4f, 0xba, 0x09, 0x8c, 0x8f, 0x44, 0x97, 0x95, 0x0b, 0x66, 0xf9, 0x94, 0x52, 0x1f, 0x56, 0xe2, 0xf9, 0x72, 0x56, 0x24, 0x04, 0x5d, 0x3d, 0x63, 0xe4, 0x49, 0x37, 0x81, 0xf1,
0x44, 0x69, 0x4c, 0xaf, 0x12, 0x63, 0x7a, 0x77, 0xa0, 0x16, 0x4e, 0x2e, 0xac, 0x99, 0x7d, 0x35, 0x91, 0xe8, 0xf6, 0x72, 0xc1, 0x2c, 0x9f, 0x52, 0x8a, 0x28, 0x8d, 0xe9, 0x55, 0x62, 0x4c, 0xef,
0xf1, 0x6c, 0x79, 0x27, 0x0f, 0xc2, 0xc9, 0xc5, 0x11, 0x87, 0x90, 0x0f, 0x00, 0xa6, 0xb3, 0x99, 0x0e, 0xd4, 0xc2, 0xc9, 0x85, 0x35, 0xb3, 0xaf, 0x26, 0x9e, 0x2d, 0x2f, 0xe9, 0x41, 0x38, 0xb9,
0x58, 0x7b, 0x68, 0x9e, 0x8b, 0xa6, 0xf2, 0xe1, 0xd1, 0x11, 0x9f, 0x72, 0x66, 0x75, 0x3a, 0x9b, 0x38, 0xe2, 0x10, 0xf2, 0x01, 0xc0, 0x74, 0x36, 0x13, 0x6b, 0x0f, 0xcd, 0x73, 0xd1, 0x54, 0x3e,
0xf1, 0x9f, 0x64, 0x17, 0x16, 0x33, 0x63, 0x48, 0xdc, 0x96, 0x97, 0x18, 0xbc, 0xd9, 0x56, 0xc6, 0x3c, 0x3a, 0xe2, 0x53, 0xce, 0xac, 0x4e, 0x67, 0x33, 0xfe, 0x93, 0xec, 0xc2, 0x62, 0x66, 0x50,
0xe2, 0x6c, 0x8c, 0x74, 0xd8, 0xe6, 0xf7, 0x81, 0xfc, 0x05, 0x23, 0x39, 0x0c, 0xa1, 0xaa, 0xea, 0x89, 0xdb, 0xf2, 0x56, 0x83, 0x37, 0xdb, 0xca, 0x58, 0x9c, 0x8d, 0x91, 0x0e, 0xdb, 0xfc, 0x1e,
0xa7, 0x07, 0x42, 0xc0, 0x9b, 0x63, 0xb5, 0x58, 0x20, 0x84, 0xf6, 0x78, 0xec, 0x33, 0xbe, 0xc8, 0x90, 0x9f, 0x32, 0xb4, 0xc3, 0x10, 0xaa, 0xaa, 0x7e, 0x7a, 0x64, 0x04, 0xbc, 0x4a, 0x56, 0x8b,
0xa5, 0x1f, 0xc5, 0xf2, 0x41, 0x13, 0x7f, 0xc4, 0xf5, 0x1f, 0xe3, 0xbf, 0xe4, 0xa0, 0xc4, 0xa3, 0x45, 0x46, 0x68, 0x8f, 0xc7, 0x3e, 0xe3, 0x8b, 0x5c, 0xfa, 0x51, 0x2c, 0x1f, 0x34, 0xf1, 0x47,
0x32, 0xbc, 0x0d, 0x4b, 0x9c, 0x5e, 0xb9, 0x2e, 0x0b, 0x87, 0x13, 0x2e, 0x44, 0x0d, 0x85, 0xd7, 0xdc, 0x07, 0x32, 0xfe, 0x4b, 0x0e, 0x4a, 0x3c, 0x4c, 0xc3, 0xdb, 0xb0, 0xc4, 0xe9, 0x95, 0x2f,
0x32, 0x5b, 0x16, 0x5a, 0xa4, 0x9a, 0x48, 0x8c, 0xd0, 0xa2, 0xd5, 0xdc, 0x81, 0xaa, 0x2a, 0x5a, 0xb3, 0x70, 0x38, 0xe1, 0x42, 0xd4, 0x50, 0xb8, 0x31, 0xb3, 0x65, 0xa1, 0x85, 0xae, 0x89, 0xc4,
0x9b, 0x3a, 0x15, 0x59, 0x32, 0x79, 0x1d, 0x8a, 0xe7, 0xde, 0x4c, 0xaa, 0xf1, 0x20, 0xea, 0x49, 0x08, 0x2d, 0x7c, 0xcd, 0x1d, 0xa8, 0xaa, 0xa2, 0xb5, 0xa9, 0x53, 0x91, 0x25, 0x93, 0xd7, 0xa1,
0x13, 0xe1, 0x51, 0x5d, 0x58, 0x19, 0xd1, 0xb5, 0xa4, 0x82, 0xa8, 0x0b, 0x2b, 0x44, 0xde, 0x55, 0x78, 0xee, 0xcd, 0xa4, 0x1a, 0x0f, 0xa2, 0x9e, 0x34, 0x11, 0x1e, 0xd5, 0x85, 0x95, 0x11, 0xdd,
0x4f, 0xb4, 0x71, 0x21, 0xa3, 0x8d, 0xc7, 0xb0, 0xc4, 0xf8, 0x80, 0xe6, 0xf5, 0x72, 0xfd, 0xa6, 0x53, 0x2a, 0x88, 0xba, 0xb0, 0x42, 0xe4, 0xe5, 0xf5, 0x44, 0x1b, 0x17, 0x32, 0xda, 0x78, 0x0c,
0xf9, 0x6d, 0x26, 0xae, 0x8f, 0x26, 0xf3, 0x31, 0xd5, 0x15, 0xa9, 0xe8, 0x87, 0x2a, 0xe0, 0xf2, 0x4b, 0x8c, 0x0f, 0x68, 0x5e, 0x2f, 0xd7, 0x6f, 0x9a, 0xdf, 0x66, 0xe2, 0xfa, 0x68, 0x32, 0x1f,
0x98, 0x64, 0xfc, 0x4e, 0x8e, 0xf3, 0x17, 0x96, 0x2f, 0xb9, 0x07, 0x45, 0x57, 0x7a, 0xc8, 0x44, 0x53, 0x5d, 0x91, 0x8a, 0x8e, 0xa9, 0x02, 0x2e, 0x8f, 0x49, 0xc6, 0xef, 0xe6, 0x38, 0x7f, 0x61,
0x42, 0xb9, 0xba, 0xc2, 0xc7, 0xe8, 0x4c, 0xa4, 0x60, 0x43, 0x87, 0x7e, 0x25, 0x7a, 0xee, 0x0d, 0xf9, 0x92, 0x7b, 0x50, 0x74, 0xa5, 0x87, 0x4c, 0x24, 0x94, 0xab, 0x3b, 0x7d, 0x8c, 0xce, 0x44,
0xb3, 0xe6, 0xce, 0xa7, 0x4a, 0x0f, 0xf9, 0x2d, 0xd9, 0xac, 0x84, 0x0e, 0x8f, 0xb7, 0x5e, 0x2d, 0x0a, 0x36, 0x74, 0xe8, 0x57, 0xa2, 0xe7, 0xde, 0x30, 0x6b, 0xee, 0x7c, 0xaa, 0xf4, 0x90, 0xdf,
0xd3, 0x2d, 0xcd, 0xa1, 0xb5, 0x18, 0xdb, 0x31, 0xa5, 0x48, 0x3f, 0x3e, 0xa3, 0x9a, 0x23, 0xeb, 0x92, 0xcd, 0x4a, 0xe8, 0xf0, 0x78, 0xeb, 0xd5, 0x32, 0xdd, 0xd2, 0x3c, 0x5c, 0x8b, 0xb1, 0x1d,
0xef, 0xe7, 0xa1, 0x11, 0xab, 0x11, 0x7a, 0xf4, 0xb2, 0x0d, 0x80, 0xdb, 0x19, 0xc5, 0x78, 0xa3, 0x53, 0x8a, 0xf4, 0xe3, 0x33, 0xaa, 0x79, 0xb6, 0xfe, 0x41, 0x1e, 0x1a, 0xb1, 0x1a, 0xa1, 0x8b,
0xe3, 0xa4, 0x38, 0x75, 0x69, 0xfd, 0x94, 0x8f, 0xf5, 0x93, 0x72, 0x71, 0x2b, 0xe8, 0x2e, 0x6e, 0x2f, 0xdb, 0x00, 0xb8, 0x9d, 0x51, 0x8c, 0x37, 0x7a, 0x52, 0x8a, 0x53, 0x97, 0xd6, 0x4f, 0xf9,
0x0f, 0xa0, 0x1a, 0x45, 0x28, 0x8a, 0x57, 0x89, 0x95, 0x27, 0x2f, 0x32, 0x46, 0x44, 0x91, 0x53, 0x58, 0x3f, 0x29, 0x17, 0xb7, 0x82, 0xee, 0xe2, 0xf6, 0x00, 0xaa, 0x51, 0xc8, 0xa2, 0x78, 0x95,
0x5c, 0x49, 0x77, 0x8a, 0xfb, 0xae, 0xe6, 0x43, 0xb5, 0x80, 0xd9, 0x18, 0x59, 0x3d, 0xfa, 0x33, 0x58, 0x79, 0xf2, 0x66, 0x63, 0x44, 0x14, 0x39, 0xc5, 0x95, 0x74, 0xa7, 0xb8, 0xef, 0x6a, 0x3e,
0xf1, 0xa0, 0x32, 0x1e, 0x43, 0x4d, 0xab, 0xbc, 0xee, 0x87, 0x94, 0x8b, 0xf9, 0x21, 0xa9, 0x2b, 0x54, 0x0b, 0x98, 0x8d, 0x91, 0xd5, 0xa3, 0x3f, 0x13, 0x0f, 0x2a, 0xe3, 0x31, 0xd4, 0xb4, 0xca,
0xcd, 0xf9, 0xe8, 0x4a, 0xb3, 0xf1, 0x6b, 0x79, 0x68, 0xb0, 0xf5, 0xe5, 0xb8, 0x67, 0x47, 0xde, 0xeb, 0x7e, 0x48, 0xb9, 0x98, 0x1f, 0x92, 0xba, 0xe3, 0x9c, 0x8f, 0xee, 0x38, 0x1b, 0xbf, 0x9e,
0xc4, 0x19, 0xa1, 0xdd, 0x51, 0xad, 0x30, 0x21, 0x68, 0xc9, 0x75, 0x26, 0x96, 0x18, 0x97, 0xb3, 0x87, 0x06, 0x5b, 0x5f, 0x8e, 0x7b, 0x76, 0xe4, 0x4d, 0x9c, 0x11, 0xda, 0x1d, 0xd5, 0x0a, 0x13,
0xf4, 0xb0, 0x19, 0x9c, 0x49, 0xab, 0xb0, 0x19, 0x06, 0x34, 0x18, 0x63, 0x44, 0x0b, 0x62, 0x14, 0x82, 0x96, 0x5c, 0x67, 0x62, 0x89, 0x71, 0x39, 0x4b, 0x8f, 0xa3, 0xc1, 0x99, 0xb4, 0x8a, 0xa3,
0xe7, 0xc8, 0xac, 0x9d, 0x52, 0xba, 0x6d, 0x07, 0x9c, 0x43, 0xbe, 0x0f, 0x2b, 0x8c, 0x06, 0x2f, 0x61, 0x40, 0x83, 0x31, 0x46, 0xb4, 0x20, 0x46, 0x81, 0x8f, 0xcc, 0xda, 0x29, 0xa5, 0xdb, 0x76,
0xc5, 0x4f, 0x9d, 0xc9, 0xc4, 0x89, 0xee, 0x01, 0x16, 0xcc, 0xe6, 0x29, 0xa5, 0xa6, 0x1d, 0xd2, 0xc0, 0x39, 0xe4, 0xfb, 0xb0, 0xc2, 0x68, 0xf0, 0x96, 0xfc, 0xd4, 0x99, 0x4c, 0x9c, 0xe8, 0x62,
0x43, 0x86, 0x10, 0x61, 0x91, 0x2a, 0x63, 0x27, 0xb0, 0x4f, 0x22, 0xbf, 0x6b, 0xf5, 0x2d, 0x0d, 0x60, 0xc1, 0x6c, 0x9e, 0x52, 0x6a, 0xda, 0x21, 0x3d, 0x64, 0x08, 0x11, 0x27, 0xa9, 0x32, 0x76,
0xf3, 0x91, 0xef, 0xc3, 0x82, 0xb8, 0x22, 0xc8, 0x2d, 0xf7, 0x98, 0x3e, 0x31, 0x93, 0xca, 0xc9, 0x02, 0xfb, 0x24, 0x72, 0xc4, 0x56, 0xdf, 0xd2, 0x30, 0x1f, 0xf9, 0x3e, 0x2c, 0x88, 0x3b, 0x83,
0x99, 0x64, 0xfc, 0xd3, 0x3c, 0xd4, 0xb4, 0x69, 0xf9, 0x2a, 0xbb, 0xeb, 0xed, 0x94, 0x9d, 0xb8, 0xdc, 0x72, 0x8f, 0xe9, 0x13, 0x33, 0xa9, 0x9c, 0x9c, 0x49, 0xc6, 0x3f, 0xcd, 0x43, 0x4d, 0x9b,
0xaa, 0x9b, 0x84, 0xdf, 0x8c, 0x17, 0x59, 0x50, 0x97, 0xc5, 0xf4, 0x09, 0x7c, 0x0b, 0xaa, 0x6c, 0x96, 0xaf, 0xb2, 0xbb, 0xde, 0x4e, 0xd9, 0x89, 0xab, 0xba, 0x49, 0xf8, 0xcd, 0x78, 0x91, 0x05,
0xd5, 0x7d, 0x88, 0xfa, 0x74, 0x11, 0x96, 0x0c, 0x01, 0x47, 0xf3, 0x13, 0x89, 0x7c, 0x88, 0xc8, 0x75, 0x7b, 0x4c, 0x9f, 0xc0, 0xb7, 0xa0, 0xca, 0x56, 0xdd, 0x87, 0xa8, 0x4f, 0x17, 0x71, 0xca,
0x52, 0x84, 0x7c, 0xc8, 0x90, 0x2f, 0xba, 0x2c, 0xf2, 0x29, 0xd4, 0x45, 0xae, 0x38, 0xa6, 0xe2, 0x10, 0x70, 0x34, 0x3f, 0x91, 0xc8, 0x87, 0x88, 0x2c, 0x45, 0xc8, 0x87, 0x0c, 0xf9, 0xa2, 0xdb,
0x58, 0xb0, 0xaa, 0xed, 0xdc, 0x6a, 0xbc, 0xcd, 0x1a, 0x2f, 0x8e, 0x0f, 0xbe, 0x48, 0xf8, 0x50, 0x23, 0x9f, 0x42, 0x5d, 0xe4, 0x8a, 0x63, 0x2a, 0x8e, 0x05, 0xab, 0xda, 0xce, 0xad, 0xc6, 0xdb,
0x26, 0xac, 0xbc, 0x2c, 0xe1, 0x43, 0xfe, 0x61, 0xec, 0xa9, 0xfb, 0x37, 0xe8, 0xbd, 0x28, 0xf9, 0xac, 0xf1, 0xe2, 0xf8, 0xe0, 0x8b, 0x84, 0x0f, 0x65, 0xc2, 0xca, 0xcb, 0x12, 0x3e, 0xe4, 0x1f,
0xd8, 0x07, 0xb0, 0x22, 0xd9, 0xd5, 0xdc, 0xb5, 0x5d, 0xd7, 0x9b, 0xbb, 0x23, 0x2a, 0xef, 0x22, 0xc6, 0x9e, 0xba, 0x90, 0x83, 0xde, 0x8b, 0x92, 0x8f, 0x7d, 0x00, 0x2b, 0x92, 0x5d, 0xcd, 0x5d,
0x13, 0x81, 0x3a, 0x8e, 0x30, 0xc6, 0x58, 0x05, 0xdb, 0xe0, 0x5e, 0x90, 0xf7, 0xa1, 0xc4, 0xe5, 0xdb, 0x75, 0xbd, 0xb9, 0x3b, 0xa2, 0xf2, 0x72, 0x32, 0x11, 0xa8, 0xe3, 0x08, 0x63, 0x8c, 0x55,
0x72, 0x2e, 0x7c, 0x64, 0x33, 0x2e, 0x4e, 0x42, 0xee, 0x41, 0x89, 0x8b, 0xe7, 0xf9, 0x6b, 0x99, 0xf4, 0x0d, 0xee, 0x05, 0x79, 0x1f, 0x4a, 0x5c, 0x2e, 0xe7, 0xc2, 0x47, 0x36, 0xe3, 0xe2, 0x24,
0x0d, 0x27, 0x30, 0xda, 0x40, 0x58, 0xc2, 0x43, 0x1a, 0xfa, 0xce, 0x28, 0x88, 0xae, 0x39, 0x97, 0xe4, 0x1e, 0x94, 0xb8, 0x78, 0x9e, 0xbf, 0x96, 0xd9, 0x70, 0x02, 0xa3, 0x0d, 0x84, 0x25, 0x3c,
0xc2, 0xab, 0x99, 0x28, 0x2b, 0x52, 0xc3, 0x47, 0x94, 0xa8, 0x70, 0xe0, 0x34, 0x6c, 0x63, 0x5a, 0xa4, 0xa1, 0xef, 0x8c, 0x82, 0xe8, 0xde, 0x73, 0x29, 0xbc, 0x9a, 0x89, 0xb2, 0x22, 0x35, 0x7c,
0x89, 0xe5, 0x21, 0xc4, 0xa5, 0x09, 0xac, 0x9f, 0xd0, 0xf0, 0x39, 0xa5, 0xae, 0xcb, 0x84, 0xa1, 0x44, 0x89, 0x0a, 0x07, 0x4e, 0xc3, 0x36, 0xa6, 0x95, 0x58, 0x1e, 0x42, 0x5c, 0x9a, 0xc0, 0xfa,
0x11, 0x75, 0x43, 0xdf, 0x9e, 0xb0, 0x41, 0xe2, 0x2d, 0x78, 0x94, 0xca, 0x35, 0x52, 0x68, 0x6d, 0x09, 0x0d, 0x9f, 0x53, 0xea, 0xba, 0x4c, 0x18, 0x1a, 0x51, 0x37, 0xf4, 0xed, 0x09, 0x1b, 0x24,
0x47, 0x09, 0x77, 0x54, 0x3a, 0xce, 0x3b, 0xd6, 0x4e, 0xb2, 0x70, 0x9b, 0xbf, 0x00, 0x9b, 0xd7, 0xde, 0x82, 0x47, 0xa9, 0x5c, 0x23, 0x85, 0xd6, 0x76, 0x94, 0x70, 0x47, 0xa5, 0xe3, 0xbc, 0x63,
0x27, 0xca, 0x08, 0x96, 0x70, 0x2f, 0xce, 0x55, 0x94, 0x51, 0x77, 0xe2, 0xd9, 0x21, 0xaf, 0x8d, 0xed, 0x24, 0x0b, 0xb7, 0xf9, 0x8b, 0xb0, 0x79, 0x7d, 0xa2, 0x8c, 0xe8, 0x09, 0xf7, 0xe2, 0x5c,
0xce, 0x59, 0x7a, 0x50, 0xd3, 0x30, 0xd1, 0xde, 0x9f, 0x43, 0xe1, 0x8e, 0x7f, 0xb0, 0x1d, 0xc9, 0x45, 0x19, 0x75, 0x27, 0x9e, 0x1d, 0xf2, 0xda, 0xe8, 0x9c, 0xa5, 0x07, 0x35, 0x0d, 0x13, 0xed,
0xf5, 0xfc, 0x29, 0x1a, 0x51, 0xc7, 0x56, 0x94, 0x7b, 0xce, 0x5c, 0x8a, 0xe0, 0xe8, 0x77, 0x63, 0xfd, 0x39, 0x14, 0xee, 0xf8, 0x07, 0xdb, 0x91, 0x5c, 0xcf, 0x9f, 0xa2, 0x11, 0x75, 0x6c, 0x45,
0x6c, 0xc1, 0x12, 0x4a, 0xf6, 0xda, 0x46, 0xf7, 0x22, 0x61, 0xd0, 0x58, 0x05, 0xd2, 0xe3, 0xbc, 0xb9, 0xe7, 0xcc, 0xa5, 0x08, 0x8e, 0x7e, 0x37, 0xc6, 0x16, 0x2c, 0xa1, 0x64, 0xaf, 0x6d, 0x74,
0x4b, 0xf7, 0x08, 0xfd, 0xe3, 0x02, 0xd4, 0x34, 0x30, 0xdb, 0x8d, 0xd0, 0x8d, 0xd6, 0x1a, 0x3b, 0x2f, 0x12, 0x06, 0x8d, 0x55, 0x20, 0x3d, 0xce, 0xbb, 0x74, 0x8f, 0xd0, 0x3f, 0x29, 0x40, 0x4d,
0xf6, 0x94, 0x4a, 0x8b, 0x75, 0xc3, 0x6c, 0x20, 0x74, 0x57, 0x00, 0xd9, 0x5e, 0x6c, 0x5f, 0x9c, 0x03, 0xb3, 0xdd, 0x08, 0xdd, 0x68, 0xad, 0xb1, 0x63, 0x4f, 0xa9, 0xb4, 0x58, 0x37, 0xcc, 0x06,
0x59, 0xde, 0x3c, 0xb4, 0xc6, 0xf4, 0xcc, 0xa7, 0xb2, 0x96, 0x75, 0xfb, 0xe2, 0xac, 0x3f, 0x0f, 0x42, 0x77, 0x05, 0x90, 0xed, 0xc5, 0xf6, 0xc5, 0x99, 0xe5, 0xcd, 0x43, 0x6b, 0x4c, 0xcf, 0x7c,
0x77, 0x11, 0x26, 0xa3, 0xcb, 0x68, 0x54, 0x05, 0x15, 0x5d, 0x26, 0xa2, 0x12, 0xee, 0xc7, 0x7c, 0x2a, 0x6b, 0x59, 0xb7, 0x2f, 0xce, 0xfa, 0xf3, 0x70, 0x17, 0x61, 0x32, 0xdc, 0x8c, 0x46, 0x55,
0x66, 0x16, 0x95, 0xfb, 0x31, 0x3f, 0x2d, 0x26, 0x37, 0xd0, 0x52, 0x7a, 0x03, 0xfd, 0x18, 0xd6, 0x50, 0xe1, 0x66, 0x22, 0x2a, 0xe1, 0x7e, 0xcc, 0x67, 0x66, 0x51, 0xb9, 0x1f, 0xf3, 0xd3, 0x62,
0xf9, 0x06, 0x2a, 0x58, 0xb3, 0x95, 0x58, 0xc9, 0xab, 0x88, 0x15, 0x8d, 0xd4, 0xc4, 0xde, 0x26, 0x72, 0x03, 0x2d, 0xa5, 0x37, 0xd0, 0x8f, 0x61, 0x9d, 0x6f, 0xa0, 0x82, 0x35, 0x5b, 0x89, 0x95,
0x6b, 0x81, 0x64, 0x4b, 0x81, 0xf3, 0x13, 0xce, 0xc8, 0x72, 0x26, 0x6b, 0x99, 0xc8, 0x7c, 0xe0, 0xbc, 0x8a, 0x58, 0xd1, 0x48, 0x4d, 0xec, 0x6d, 0xb2, 0x16, 0x48, 0xb6, 0x14, 0x38, 0x3f, 0xe6,
0xfc, 0x84, 0xca, 0xe8, 0x36, 0x31, 0x4a, 0x71, 0x15, 0x6c, 0xea, 0xb8, 0x49, 0x4a, 0xfb, 0x32, 0x8c, 0x2c, 0x67, 0xb2, 0x96, 0x89, 0xcc, 0x07, 0xce, 0x8f, 0xa9, 0x0c, 0x77, 0x13, 0xa3, 0x14,
0x4e, 0x59, 0x15, 0x94, 0xf6, 0xa5, 0x4e, 0xf9, 0x08, 0x36, 0xa6, 0x74, 0xec, 0xd8, 0xf1, 0x6c, 0x77, 0xc3, 0xa6, 0x8e, 0x9b, 0xa4, 0xb4, 0x2f, 0xe3, 0x94, 0x55, 0x41, 0x69, 0x5f, 0xea, 0x94,
0xad, 0x48, 0x70, 0x5b, 0xe5, 0x68, 0x2d, 0xcd, 0x80, 0x1f, 0xdc, 0x59, 0x6f, 0xfc, 0xc4, 0x9b, 0x8f, 0x60, 0x63, 0x4a, 0xc7, 0x8e, 0x1d, 0xcf, 0xd6, 0x8a, 0x04, 0xb7, 0x55, 0x8e, 0xd6, 0xd2,
0x9e, 0x38, 0x5c, 0x66, 0xe1, 0x1e, 0x65, 0x45, 0x73, 0xd1, 0x9d, 0x4f, 0x7f, 0x84, 0x60, 0x96, 0x0c, 0xf8, 0xc1, 0x9d, 0xf5, 0xc6, 0x8f, 0xbd, 0xe9, 0x89, 0xc3, 0x65, 0x16, 0xee, 0x51, 0x56,
0x24, 0x30, 0x1a, 0x50, 0x1b, 0x84, 0xde, 0x4c, 0x0e, 0xf3, 0x22, 0xd4, 0xf9, 0xa7, 0xb8, 0xc6, 0x34, 0x17, 0xdd, 0xf9, 0xf4, 0x87, 0x08, 0x66, 0x49, 0x02, 0xa3, 0x01, 0xb5, 0x41, 0xe8, 0xcd,
0x7f, 0x0b, 0x6e, 0x22, 0x4b, 0x18, 0x7a, 0x33, 0x6f, 0xe2, 0x9d, 0x5d, 0xc5, 0x94, 0xb2, 0xff, 0xe4, 0x30, 0x2f, 0x42, 0x9d, 0x7f, 0x8a, 0x7b, 0xfd, 0xb7, 0xe0, 0x26, 0xb2, 0x84, 0xa1, 0x37,
0x2a, 0x07, 0x2b, 0x31, 0xac, 0x60, 0xaf, 0x1f, 0x73, 0x7e, 0xa6, 0xae, 0x00, 0xe7, 0x62, 0xf7, 0xf3, 0x26, 0xde, 0xd9, 0x55, 0x4c, 0x29, 0xfb, 0xaf, 0x72, 0xb0, 0x12, 0xc3, 0x0a, 0xf6, 0xfa,
0xbf, 0xd8, 0x78, 0x71, 0x42, 0xce, 0xcc, 0xe4, 0xb5, 0xe0, 0x76, 0x14, 0x3a, 0x4a, 0x26, 0xe4, 0x31, 0xe7, 0x67, 0xea, 0x4e, 0x70, 0x2e, 0x76, 0x21, 0x8c, 0x8d, 0x17, 0x27, 0xe4, 0xcc, 0x4c,
0x2c, 0xa5, 0x95, 0x66, 0x29, 0x22, 0xbd, 0x0c, 0x2a, 0x25, 0xb3, 0xf8, 0x39, 0x71, 0x5d, 0x6f, 0xde, 0x13, 0x6e, 0x47, 0xb1, 0xa4, 0x64, 0x42, 0xce, 0x52, 0x5a, 0x69, 0x96, 0x22, 0xd2, 0xcb,
0x2c, 0x9a, 0x5c, 0x88, 0x5f, 0xe8, 0xd1, 0x15, 0xb8, 0xb2, 0x06, 0x91, 0x56, 0x37, 0x30, 0x7e, 0x28, 0x53, 0x32, 0x8b, 0x9f, 0x13, 0xf7, 0xf7, 0xc6, 0xa2, 0xc9, 0x85, 0xf8, 0x0d, 0x1f, 0x5d,
0x37, 0x0f, 0x10, 0xd5, 0x0e, 0xaf, 0x14, 0x29, 0xb9, 0x25, 0x87, 0xce, 0xdc, 0x9a, 0x8c, 0xf2, 0x81, 0x2b, 0x6b, 0x10, 0x69, 0x75, 0x03, 0xe3, 0xf7, 0xf2, 0x00, 0x51, 0xed, 0xf0, 0x8e, 0x91,
0x06, 0xd4, 0x95, 0xdf, 0x7f, 0x24, 0x09, 0xd5, 0x24, 0x8c, 0x89, 0x43, 0xef, 0xc2, 0xd2, 0xd9, 0x92, 0x5b, 0x72, 0xe8, 0xcc, 0xad, 0xc9, 0x28, 0x6f, 0x40, 0x5d, 0xf9, 0xfd, 0x47, 0x92, 0x50,
0xc4, 0x3b, 0x41, 0x89, 0x55, 0xc8, 0x2d, 0xe8, 0x12, 0x82, 0xfb, 0xd1, 0x22, 0x47, 0x49, 0x89, 0x4d, 0xc2, 0x98, 0x38, 0xf4, 0x2e, 0x2c, 0x9d, 0x4d, 0xbc, 0x13, 0x94, 0x58, 0x85, 0xdc, 0x82,
0x24, 0x92, 0x9d, 0x8a, 0x99, 0xd7, 0x03, 0x62, 0x92, 0xd0, 0xe3, 0x94, 0x24, 0x74, 0x27, 0xd5, 0x2e, 0x21, 0xb8, 0x1f, 0x2d, 0x72, 0x94, 0x94, 0x48, 0x22, 0xd9, 0xa9, 0x98, 0x79, 0x3d, 0x20,
0xb9, 0x3f, 0x1b, 0x31, 0xe8, 0x6f, 0xe4, 0x95, 0xab, 0x73, 0x34, 0x2e, 0x2f, 0x3e, 0x6c, 0xfe, 0x26, 0x09, 0x3d, 0x4e, 0x49, 0x42, 0x77, 0x52, 0x9d, 0xfb, 0xb3, 0x11, 0x83, 0xfe, 0x46, 0x5e,
0x34, 0x8e, 0x5e, 0x2f, 0xb2, 0x5c, 0x3f, 0x86, 0x45, 0x9f, 0x6f, 0x91, 0x72, 0xff, 0x2c, 0xbe, 0xb9, 0x3a, 0x47, 0xe3, 0xf2, 0xe2, 0xc3, 0xe6, 0x4f, 0xe2, 0xe8, 0xf5, 0x22, 0xcb, 0xf5, 0x63,
0x60, 0xff, 0x6c, 0xf8, 0x31, 0xb9, 0xeb, 0xdb, 0xd0, 0xb4, 0xc7, 0x17, 0xd4, 0x0f, 0x1d, 0x34, 0x58, 0xf4, 0xf9, 0x16, 0x29, 0xf7, 0xcf, 0xe2, 0x0b, 0xf6, 0xcf, 0x86, 0x1f, 0x93, 0xbb, 0xbe,
0x04, 0xa1, 0xb4, 0x2e, 0x9c, 0x8b, 0x35, 0x38, 0x8a, 0xc5, 0xef, 0xc0, 0x92, 0x08, 0x74, 0xa1, 0x0d, 0x4d, 0x7b, 0x7c, 0x41, 0xfd, 0xd0, 0x41, 0x43, 0x10, 0x4a, 0xeb, 0xc2, 0xb9, 0x58, 0x83,
0x28, 0x45, 0xc4, 0xc4, 0x08, 0xcc, 0x08, 0x8d, 0x7f, 0x22, 0x7d, 0xab, 0xe3, 0x73, 0xed, 0xc5, 0xa3, 0x58, 0xfc, 0x0e, 0x2c, 0x89, 0xc8, 0x17, 0x8a, 0x52, 0x84, 0x50, 0x8c, 0xc0, 0x8c, 0xd0,
0xbd, 0xa2, 0xb7, 0x30, 0x9f, 0xb6, 0xcd, 0x8b, 0x69, 0x2d, 0xec, 0x4b, 0x82, 0x3b, 0x72, 0xa0, 0xf8, 0x27, 0xd2, 0xb7, 0x3a, 0x3e, 0xd7, 0x5e, 0xdc, 0x2b, 0x7a, 0x0b, 0xf3, 0x69, 0xdb, 0xbc,
0xb0, 0x2e, 0xc5, 0xbb, 0xb5, 0xf8, 0x2a, 0xdd, 0x6a, 0xfc, 0x9b, 0x1c, 0x94, 0xf7, 0xbd, 0xd9, 0x98, 0xd6, 0xc2, 0xbe, 0x24, 0xb8, 0x23, 0x07, 0x0a, 0xeb, 0x52, 0xbc, 0x5b, 0x8b, 0xaf, 0xd2,
0xbe, 0xc3, 0x6f, 0xe8, 0xe0, 0xa2, 0x55, 0xe6, 0xcf, 0x05, 0xf6, 0x89, 0x5e, 0x69, 0x2f, 0xb8, 0xad, 0xc6, 0xbf, 0xce, 0x41, 0x79, 0xdf, 0x9b, 0xed, 0x3b, 0xfc, 0x86, 0x0e, 0x2e, 0x5a, 0x65,
0xa8, 0x9b, 0x29, 0x74, 0x36, 0xe2, 0x42, 0xe7, 0x77, 0xe1, 0x16, 0x5a, 0x97, 0x7d, 0x6f, 0xe6, 0xfe, 0x5c, 0x60, 0x9f, 0xe8, 0x95, 0xf6, 0x82, 0x9b, 0xbb, 0x99, 0x42, 0x67, 0x23, 0x2e, 0x74,
0xf9, 0x8c, 0x71, 0xd8, 0x13, 0x2e, 0x7c, 0x7a, 0x6e, 0x78, 0x2e, 0x39, 0xf9, 0xcd, 0x53, 0x4a, 0x7e, 0x17, 0x6e, 0xa1, 0x75, 0xd9, 0xf7, 0x66, 0x9e, 0xcf, 0x18, 0x87, 0x3d, 0xe1, 0xc2, 0xa7,
0x8f, 0x34, 0x8a, 0x43, 0x45, 0x80, 0x97, 0xf4, 0x27, 0xe1, 0x85, 0xc5, 0xf5, 0x05, 0x42, 0x3a, 0xe7, 0x86, 0xe7, 0x92, 0x93, 0xdf, 0x3c, 0xa5, 0xf4, 0x48, 0xa3, 0x38, 0x54, 0x04, 0x78, 0x6b,
0xe6, 0xfc, 0x7d, 0x89, 0x21, 0x3a, 0x08, 0x47, 0xf9, 0xd8, 0xf8, 0x0c, 0xaa, 0x4a, 0xf5, 0x44, 0x7f, 0x12, 0x5e, 0x58, 0x5c, 0x5f, 0x20, 0xa4, 0x63, 0xce, 0xdf, 0x97, 0x18, 0xa2, 0x83, 0x70,
0xde, 0x85, 0xea, 0xb9, 0x37, 0x13, 0xfa, 0xa9, 0x5c, 0xec, 0x32, 0xb3, 0x68, 0xb5, 0x59, 0x39, 0x94, 0x8f, 0x8d, 0xcf, 0xa0, 0xaa, 0x54, 0x4f, 0xe4, 0x5d, 0xa8, 0x9e, 0x7b, 0x33, 0xa1, 0x9f,
0xe7, 0x3f, 0x02, 0xe3, 0xff, 0x94, 0xa1, 0xdc, 0x75, 0x2f, 0x3c, 0x67, 0x84, 0xde, 0xd9, 0x53, 0xca, 0xc5, 0x6e, 0x37, 0x8b, 0x56, 0x9b, 0x95, 0x73, 0xfe, 0x23, 0x30, 0xfe, 0x4f, 0x19, 0xca,
0x3a, 0xf5, 0x64, 0x1c, 0x1e, 0xf6, 0x1b, 0x1d, 0x07, 0xa3, 0xb8, 0x87, 0x05, 0xe1, 0x38, 0xa8, 0x5d, 0xf7, 0xc2, 0x73, 0x46, 0xe8, 0x9d, 0x3d, 0xa5, 0x53, 0x4f, 0x06, 0xe6, 0x61, 0xbf, 0xd1,
0x22, 0x1e, 0xae, 0xc1, 0x82, 0xaf, 0x07, 0x2e, 0x2c, 0xf9, 0x78, 0xa7, 0x45, 0xed, 0xde, 0x25, 0x71, 0x30, 0x0a, 0x84, 0x58, 0x10, 0x8e, 0x83, 0x2a, 0x04, 0xe2, 0x1a, 0x2c, 0xf8, 0x7a, 0x24,
0x2d, 0x4e, 0x12, 0xcb, 0x8b, 0x3b, 0xce, 0x62, 0x97, 0xf1, 0x8b, 0xf6, 0x55, 0x84, 0x60, 0x87, 0xc3, 0x92, 0x8f, 0x77, 0x5a, 0xd4, 0xee, 0x5d, 0xd2, 0x02, 0x27, 0xb1, 0xbc, 0xb8, 0xe3, 0x2c,
0xbd, 0x06, 0x65, 0xa1, 0x85, 0xe6, 0x37, 0x19, 0xb9, 0xee, 0x5e, 0x80, 0x70, 0x36, 0xf8, 0x94, 0x76, 0x19, 0xbf, 0x79, 0x5f, 0x45, 0x08, 0x76, 0xd8, 0x6b, 0x50, 0x16, 0x5a, 0x68, 0x7e, 0xb5,
0x7b, 0x07, 0x28, 0xb1, 0xba, 0x60, 0xd6, 0x25, 0x70, 0x97, 0xcd, 0xb5, 0x3b, 0x50, 0xe3, 0xf4, 0x91, 0xeb, 0xee, 0x05, 0x08, 0x67, 0x83, 0x4f, 0xb9, 0x77, 0x80, 0x12, 0xab, 0x0b, 0x66, 0x5d,
0x9c, 0xa4, 0x22, 0x9c, 0x9a, 0x11, 0x84, 0x04, 0x19, 0xf1, 0x3f, 0xab, 0x99, 0xf1, 0x3f, 0xd1, 0x02, 0x77, 0xd9, 0x5c, 0xbb, 0x03, 0x35, 0x4e, 0xcf, 0x49, 0x2a, 0xc2, 0xa9, 0x19, 0x41, 0x48,
0xfd, 0x5e, 0xf1, 0x7c, 0xde, 0x44, 0xe0, 0x51, 0x1f, 0x35, 0xb8, 0x0c, 0xaa, 0x2b, 0x34, 0x3c, 0x90, 0x11, 0x10, 0xb4, 0x9a, 0x19, 0x10, 0x14, 0xdd, 0xef, 0x15, 0xcf, 0xe7, 0x4d, 0x04, 0x1e,
0x3c, 0x06, 0x85, 0xd4, 0xf0, 0xbc, 0x09, 0x8d, 0x53, 0x7b, 0x32, 0x39, 0xb1, 0x47, 0xcf, 0xb8, 0x06, 0x52, 0x83, 0xcb, 0x28, 0xbb, 0x42, 0xc3, 0xc3, 0x83, 0x52, 0x48, 0x0d, 0xcf, 0x9b, 0xd0,
0x62, 0xa2, 0xce, 0x75, 0xb1, 0x12, 0x88, 0x9a, 0x89, 0x3b, 0x50, 0xd3, 0x46, 0x19, 0x3d, 0x96, 0x38, 0xb5, 0x27, 0x93, 0x13, 0x7b, 0xf4, 0x8c, 0x2b, 0x26, 0xea, 0x5c, 0x17, 0x2b, 0x81, 0xa8,
0x8b, 0x26, 0x44, 0xe3, 0x9b, 0xd4, 0x37, 0x2e, 0xbe, 0x82, 0xbe, 0x51, 0xf3, 0xdc, 0x5e, 0x8a, 0x99, 0xb8, 0x03, 0x35, 0x6d, 0x94, 0xd1, 0x63, 0xb9, 0x68, 0x42, 0x34, 0xbe, 0x49, 0x7d, 0xe3,
0x7b, 0x6e, 0xdf, 0x42, 0xde, 0x2e, 0xfc, 0x61, 0x9b, 0x3c, 0xc4, 0xa0, 0x3d, 0x1e, 0xf3, 0xa8, 0xe2, 0x2b, 0xe8, 0x1b, 0x35, 0xcf, 0xed, 0xa5, 0xb8, 0xe7, 0xf6, 0x2d, 0xe4, 0xed, 0xc2, 0x1f,
0x30, 0x6f, 0x40, 0x5d, 0x74, 0x1e, 0xc7, 0x2f, 0xf3, 0x93, 0x0d, 0x87, 0x71, 0x92, 0xdb, 0x5c, 0xb6, 0xc9, 0x63, 0x0e, 0xda, 0xe3, 0x31, 0x0f, 0x13, 0xf3, 0x06, 0xd4, 0x45, 0xe7, 0x71, 0xfc,
0x69, 0x3e, 0xb3, 0x9d, 0x31, 0x5e, 0x24, 0x12, 0xf6, 0x15, 0x7b, 0x1a, 0x1e, 0xd9, 0x0e, 0x7a, 0x32, 0x3f, 0xd9, 0x70, 0x18, 0x27, 0xb9, 0xcd, 0x95, 0xe6, 0x33, 0xdb, 0x19, 0xe3, 0x45, 0x22,
0x02, 0x4a, 0x34, 0xee, 0xd5, 0x2b, 0xbc, 0xff, 0x05, 0x7a, 0xc0, 0x23, 0xac, 0x28, 0x8a, 0xa9, 0x61, 0x5f, 0xb1, 0xa7, 0xe1, 0x91, 0xed, 0xa0, 0x27, 0xa0, 0x44, 0xe3, 0x5e, 0xbd, 0xc2, 0xfb,
0x0a, 0x22, 0x61, 0xd6, 0x04, 0x09, 0xce, 0x83, 0x0f, 0xd1, 0x81, 0x2c, 0xa4, 0x18, 0x26, 0x62, 0x5f, 0xa0, 0x07, 0x3c, 0xe4, 0x8a, 0xa2, 0x98, 0xaa, 0xa8, 0x12, 0x66, 0x4d, 0x90, 0xe0, 0x3c,
0xf1, 0xe1, 0x2d, 0xe5, 0xd7, 0x82, 0xb3, 0x54, 0xfe, 0xe7, 0x76, 0x57, 0x4e, 0xc9, 0x44, 0x4d, 0xf8, 0x10, 0x1d, 0xc8, 0x42, 0x8a, 0x71, 0x23, 0x16, 0x1f, 0xde, 0x52, 0x7e, 0x2d, 0x38, 0x4b,
0x6e, 0xfe, 0x5d, 0x8f, 0x49, 0xe3, 0x82, 0x14, 0xcd, 0xbf, 0x9c, 0x80, 0x7c, 0xa6, 0xed, 0x21, 0xe5, 0x7f, 0x6e, 0x77, 0xe5, 0x94, 0x4c, 0xd4, 0xe4, 0xe6, 0xdf, 0xf5, 0x98, 0x34, 0x2e, 0x48,
0x2d, 0x24, 0x7e, 0x2d, 0x91, 0xff, 0x75, 0x37, 0x35, 0x6f, 0x03, 0x38, 0x01, 0xdb, 0xf3, 0x02, 0xd1, 0xfc, 0xcb, 0x09, 0xc8, 0x67, 0xda, 0x1e, 0xd2, 0x42, 0xe2, 0xd7, 0x12, 0xf9, 0x5f, 0x77,
0xea, 0x8e, 0x31, 0xda, 0x43, 0xc5, 0xac, 0x3a, 0xc1, 0x53, 0x0e, 0x48, 0x69, 0xa1, 0x36, 0x53, 0x75, 0xf3, 0x36, 0x80, 0x13, 0xb0, 0x3d, 0x2f, 0xa0, 0xee, 0x18, 0xc3, 0x3f, 0x54, 0xcc, 0xaa,
0x5a, 0xa8, 0x6f, 0x76, 0x0b, 0x6a, 0x43, 0x5d, 0xef, 0x09, 0x52, 0x81, 0x62, 0xff, 0xa8, 0xd3, 0x13, 0x3c, 0xe5, 0x80, 0x94, 0x16, 0x6a, 0x33, 0xa5, 0x85, 0xfa, 0x66, 0xb7, 0xa0, 0x36, 0xd4,
0x6b, 0xde, 0x20, 0x35, 0x28, 0x0f, 0x3a, 0xc3, 0xe1, 0x01, 0xda, 0x99, 0xeb, 0x50, 0x51, 0xd7, 0xf5, 0x9e, 0x20, 0x15, 0x28, 0xf6, 0x8f, 0x3a, 0xbd, 0xe6, 0x0d, 0x52, 0x83, 0xf2, 0xa0, 0x33,
0xbd, 0xf3, 0xec, 0xab, 0xbd, 0xb3, 0xd3, 0x39, 0x1a, 0x76, 0x76, 0x9b, 0x85, 0x1f, 0x14, 0x2b, 0x1c, 0x1e, 0xa0, 0x9d, 0xb9, 0x0e, 0x15, 0x75, 0xff, 0x3b, 0xcf, 0xbe, 0xda, 0x3b, 0x3b, 0x9d,
0xf9, 0x66, 0xc1, 0xf8, 0x93, 0x02, 0xd4, 0xb4, 0x8e, 0x7a, 0x31, 0xbf, 0x8e, 0x07, 0x16, 0xca, 0xa3, 0x61, 0x67, 0xb7, 0x59, 0xf8, 0x7e, 0xb1, 0x92, 0x6f, 0x16, 0x8c, 0x3f, 0x2d, 0x40, 0x4d,
0x27, 0x03, 0x0b, 0xe9, 0x46, 0x15, 0x11, 0x7c, 0x49, 0x1a, 0x55, 0xde, 0x84, 0x86, 0x08, 0x80, 0xeb, 0xa8, 0x17, 0xf3, 0xeb, 0x78, 0xa4, 0xa1, 0x7c, 0x32, 0xd2, 0x90, 0x6e, 0x54, 0x11, 0xd1,
0xa8, 0x79, 0x0b, 0x94, 0xcc, 0x3a, 0x07, 0x0a, 0x6e, 0x8e, 0xc1, 0x23, 0x90, 0x08, 0xaf, 0xe5, 0x98, 0xa4, 0x51, 0xe5, 0x4d, 0x68, 0x88, 0x88, 0x88, 0x9a, 0xb7, 0x40, 0xc9, 0xac, 0x73, 0xa0,
0x8a, 0xd0, 0x65, 0x1c, 0x84, 0x17, 0x73, 0xf1, 0x56, 0x75, 0xe0, 0x4d, 0x2e, 0x28, 0xa7, 0xe0, 0xe0, 0xe6, 0x18, 0x4d, 0x02, 0x89, 0xf0, 0x9e, 0xae, 0x88, 0x65, 0xc6, 0x41, 0x78, 0x53, 0x17,
0x22, 0x6c, 0x4d, 0xc0, 0x86, 0x22, 0x30, 0x87, 0x60, 0x99, 0x5a, 0xf4, 0x82, 0x92, 0x59, 0xe7, 0xaf, 0x59, 0x07, 0xde, 0xe4, 0x82, 0x72, 0x0a, 0x2e, 0xc2, 0xd6, 0x04, 0x6c, 0x28, 0x22, 0x75,
0x40, 0x51, 0xd0, 0xfb, 0x72, 0x8e, 0x71, 0xdf, 0xa9, 0x8d, 0xf4, 0x84, 0x89, 0xcd, 0xaf, 0x83, 0x08, 0x96, 0xa9, 0x85, 0x33, 0x28, 0x99, 0x75, 0x0e, 0x14, 0x05, 0xbd, 0x2f, 0xe7, 0x18, 0xf7,
0x94, 0xde, 0xb3, 0x8a, 0x73, 0xe7, 0x5b, 0xe9, 0x74, 0x2f, 0xd7, 0x7f, 0x92, 0x77, 0x81, 0x4c, 0x9d, 0xda, 0x48, 0x4f, 0x98, 0xd8, 0xfc, 0x3a, 0x48, 0xe9, 0x3d, 0xab, 0x38, 0x77, 0xbe, 0x95,
0x67, 0x33, 0x2b, 0x43, 0x23, 0x59, 0x34, 0x97, 0xa6, 0xb3, 0xd9, 0x50, 0x53, 0xd8, 0x7d, 0x03, 0x4e, 0xf7, 0x72, 0xfd, 0x27, 0x79, 0x17, 0xc8, 0x74, 0x36, 0xb3, 0x32, 0x34, 0x92, 0x45, 0x73,
0xca, 0xd2, 0xdf, 0xcc, 0x01, 0x69, 0xb3, 0x45, 0x8e, 0x75, 0x54, 0x87, 0xc7, 0x88, 0x75, 0xe7, 0x69, 0x3a, 0x9b, 0x0d, 0x35, 0x85, 0xdd, 0x37, 0xa0, 0x2c, 0xfd, 0xad, 0x1c, 0x90, 0x36, 0x5b,
0x74, 0xd6, 0x9d, 0xc1, 0x21, 0xf3, 0x99, 0x1c, 0xf2, 0x65, 0xbc, 0x24, 0xb6, 0x1a, 0x96, 0x53, 0xe4, 0x58, 0x47, 0x75, 0x78, 0x8c, 0x58, 0x77, 0x4e, 0x67, 0xdd, 0x19, 0x1c, 0x32, 0x9f, 0xc9,
0xab, 0xc1, 0xd8, 0x83, 0xda, 0x91, 0x16, 0xab, 0xf6, 0x2e, 0xdb, 0x68, 0x64, 0x94, 0x5a, 0xbe, 0x21, 0x5f, 0xc6, 0x4b, 0x62, 0xab, 0x61, 0x39, 0xb5, 0x1a, 0x8c, 0x3d, 0xa8, 0x1d, 0x69, 0xc1,
0x05, 0x71, 0x45, 0xa9, 0x2f, 0x82, 0xd3, 0x6a, 0x15, 0xce, 0x6b, 0x15, 0x36, 0xfe, 0x41, 0x8e, 0x6b, 0xef, 0xb2, 0x8d, 0x46, 0x86, 0xad, 0xe5, 0x5b, 0x10, 0x57, 0x94, 0xfa, 0x22, 0x5a, 0xad,
0x87, 0x8a, 0x53, 0xed, 0x8b, 0xc2, 0xe3, 0x4a, 0x7b, 0x63, 0x14, 0x88, 0xa4, 0x26, 0x2d, 0x8a, 0x56, 0xe1, 0xbc, 0x56, 0x61, 0xe3, 0x1f, 0xe4, 0x78, 0xec, 0x38, 0xd5, 0xbe, 0x28, 0x5e, 0xae,
0x22, 0x86, 0x08, 0xd6, 0xde, 0xf2, 0x4e, 0x4f, 0x03, 0x2a, 0xbd, 0x90, 0x6a, 0x08, 0xeb, 0x23, 0xb4, 0x37, 0x46, 0x91, 0x49, 0x6a, 0xd2, 0xa2, 0x28, 0x82, 0x8a, 0x60, 0xed, 0x2d, 0xef, 0xf4,
0x48, 0x9e, 0x28, 0xd8, 0xb1, 0xc5, 0xe1, 0xf9, 0x07, 0xc2, 0xf5, 0x88, 0x9d, 0x28, 0x0e, 0xed, 0x34, 0xa0, 0xd2, 0x0b, 0xa9, 0x86, 0xb0, 0x3e, 0x82, 0xe4, 0x89, 0x82, 0x1d, 0x5b, 0x1c, 0x9e,
0x4b, 0x51, 0x6a, 0xc0, 0x24, 0x19, 0x61, 0xf4, 0x90, 0x17, 0xf1, 0xd5, 0xb7, 0xf1, 0x77, 0x45, 0x7f, 0x20, 0x5c, 0x8f, 0xd8, 0x89, 0xe2, 0xd0, 0xbe, 0x14, 0xa5, 0x06, 0x4c, 0x92, 0x11, 0x46,
0xac, 0x94, 0xe4, 0x10, 0xdc, 0x87, 0x8a, 0xca, 0x35, 0xbe, 0x51, 0x4b, 0x4a, 0x85, 0x67, 0xe2, 0x0f, 0x79, 0x33, 0x5f, 0x7d, 0x1b, 0x7f, 0x57, 0x04, 0x4f, 0x49, 0x0e, 0xc1, 0x7d, 0xa8, 0xa8,
0x00, 0x6a, 0x78, 0x62, 0x35, 0xe6, 0x0b, 0x10, 0x0d, 0x57, 0x5d, 0xad, 0xd6, 0xef, 0x01, 0x39, 0x5c, 0xe3, 0x1b, 0xb5, 0xa4, 0x54, 0x78, 0x26, 0x0e, 0xa0, 0x86, 0x27, 0x56, 0x63, 0xbe, 0x00,
0x75, 0xfc, 0x24, 0x31, 0x5f, 0x90, 0x4d, 0xc4, 0x68, 0xd4, 0xc6, 0x31, 0xac, 0x48, 0x4e, 0xa2, 0xd1, 0x70, 0xd5, 0xd5, 0x6a, 0xfd, 0x1e, 0x90, 0x53, 0xc7, 0x4f, 0x12, 0xf3, 0x05, 0xd9, 0x44,
0x1d, 0x73, 0xe2, 0xe3, 0x9b, 0x7b, 0xc9, 0x5e, 0x91, 0x4f, 0xed, 0x15, 0xc6, 0xaf, 0x97, 0xa0, 0x8c, 0x46, 0x6d, 0x1c, 0xc3, 0x8a, 0xe4, 0x24, 0xda, 0x31, 0x27, 0x3e, 0xbe, 0xb9, 0x97, 0xec,
0x2c, 0xe3, 0x3e, 0x67, 0xc5, 0x2a, 0xae, 0xc6, 0x63, 0x15, 0xb7, 0x62, 0xa1, 0x15, 0x71, 0xe8, 0x15, 0xf9, 0xd4, 0x5e, 0x61, 0xfc, 0x46, 0x09, 0xca, 0x32, 0x10, 0x74, 0x56, 0xf0, 0xe2, 0x6a,
0x85, 0xd8, 0xf0, 0x4e, 0x72, 0xe7, 0xd7, 0x0c, 0x30, 0xb1, 0xdd, 0x5f, 0x18, 0x60, 0x4a, 0x71, 0x3c, 0x78, 0x71, 0x2b, 0x16, 0x6b, 0x11, 0x87, 0x5e, 0x88, 0x0d, 0xef, 0x24, 0x77, 0x7e, 0xcd,
0x03, 0x4c, 0x56, 0xfc, 0x66, 0x2e, 0xc1, 0xa6, 0xe2, 0x37, 0xdf, 0x02, 0x2e, 0x8e, 0x68, 0xee, 0x00, 0x13, 0xdb, 0xfd, 0x85, 0x01, 0xa6, 0x14, 0x37, 0xc0, 0x64, 0x05, 0x74, 0xe6, 0x12, 0x6c,
0x97, 0x15, 0x04, 0x88, 0x60, 0x12, 0x9a, 0xf4, 0x52, 0x49, 0x4a, 0x2f, 0xaf, 0x2c, 0x59, 0x7c, 0x2a, 0xa0, 0xf3, 0x2d, 0xe0, 0xe2, 0x88, 0xe6, 0x7e, 0x59, 0x41, 0x80, 0x88, 0x2e, 0xa1, 0x49,
0x0c, 0x0b, 0x3c, 0xee, 0x92, 0x08, 0x2c, 0x20, 0xf7, 0x1f, 0xd1, 0x57, 0xf2, 0x3f, 0xbf, 0xd5, 0x2f, 0x95, 0xa4, 0xf4, 0xf2, 0xca, 0x92, 0xc5, 0xc7, 0xb0, 0xc0, 0x03, 0x31, 0x89, 0x48, 0x03,
0x63, 0x0a, 0x5a, 0x3d, 0xde, 0x67, 0x2d, 0x16, 0xef, 0x53, 0x37, 0x0c, 0xd5, 0xe3, 0x86, 0xa1, 0x72, 0xff, 0x11, 0x7d, 0x25, 0xff, 0xf3, 0x5b, 0x3d, 0xa6, 0xa0, 0xd5, 0x03, 0x80, 0xd6, 0x62,
0x7b, 0xd0, 0x54, 0x1d, 0x87, 0x6a, 0x56, 0x37, 0x10, 0x97, 0x8a, 0x17, 0x25, 0x9c, 0x71, 0xcc, 0x01, 0x40, 0x75, 0xc3, 0x50, 0x3d, 0x6e, 0x18, 0xba, 0x07, 0x4d, 0xd5, 0x71, 0xa8, 0x66, 0x75,
0x5e, 0x10, 0xed, 0x9f, 0x8b, 0xb1, 0xfd, 0x93, 0xf1, 0xb3, 0x76, 0x18, 0xd2, 0xe9, 0x2c, 0x94, 0x03, 0x71, 0xa9, 0x78, 0x51, 0xc2, 0x19, 0xc7, 0xec, 0x05, 0xd1, 0xfe, 0xb9, 0x18, 0xdb, 0x3f,
0xfb, 0xa7, 0x16, 0x32, 0x9b, 0x8f, 0x3c, 0xbf, 0xf5, 0x24, 0x87, 0x97, 0xcf, 0x8e, 0x6d, 0x58, 0x19, 0x3f, 0x6b, 0x87, 0x21, 0x9d, 0xce, 0x42, 0xb9, 0x7f, 0x6a, 0x31, 0xb4, 0xf9, 0xc8, 0xf3,
0x3c, 0xb5, 0x9d, 0xc9, 0xdc, 0xa7, 0x96, 0x4f, 0xed, 0xc0, 0x73, 0x91, 0x3f, 0x44, 0x5b, 0xb9, 0x5b, 0x4f, 0x72, 0x78, 0xf9, 0xec, 0xd8, 0x86, 0xc5, 0x53, 0xdb, 0x99, 0xcc, 0x7d, 0x6a, 0xf9,
0x68, 0xe2, 0x1e, 0xa7, 0x31, 0x91, 0xc4, 0x6c, 0x9c, 0xea, 0x9f, 0x78, 0x77, 0x50, 0xef, 0x09, 0xd4, 0x0e, 0x3c, 0x17, 0xf9, 0x43, 0xb4, 0x95, 0x8b, 0x26, 0xee, 0x71, 0x1a, 0x13, 0x49, 0xcc,
0xb6, 0xad, 0x89, 0xf0, 0x02, 0xdc, 0x9b, 0xaa, 0xdb, 0xb3, 0xf6, 0x0e, 0xba, 0x4f, 0xf6, 0x87, 0xc6, 0xa9, 0xfe, 0x89, 0x77, 0x07, 0xf5, 0x9e, 0x60, 0xdb, 0x9a, 0x88, 0x37, 0xc0, 0xbd, 0xa9,
0xcd, 0x1c, 0xfb, 0x1c, 0x1c, 0xef, 0xec, 0x74, 0x3a, 0xbb, 0xb8, 0xcd, 0x01, 0x2c, 0xec, 0xb5, 0xba, 0x3d, 0x6b, 0xef, 0xa0, 0xfb, 0x64, 0x7f, 0xd8, 0xcc, 0xb1, 0xcf, 0xc1, 0xf1, 0xce, 0x4e,
0xbb, 0x07, 0x62, 0x93, 0x2b, 0x36, 0x4b, 0xc6, 0x1f, 0xe7, 0xa1, 0xa6, 0xb5, 0x06, 0x03, 0x87, 0xa7, 0xb3, 0x8b, 0xdb, 0x1c, 0xc0, 0xc2, 0x5e, 0xbb, 0x7b, 0x20, 0x36, 0xb9, 0x62, 0xb3, 0x64,
0xf0, 0x9f, 0x6c, 0x9f, 0x2b, 0x8b, 0xc0, 0x21, 0x1c, 0xd2, 0x1d, 0x93, 0x47, 0x6a, 0x8c, 0x78, 0xfc, 0x49, 0x1e, 0x6a, 0x5a, 0x6b, 0x30, 0x92, 0x08, 0xff, 0xc9, 0xf6, 0xb9, 0xb2, 0x88, 0x24,
0xbc, 0x93, 0xdb, 0xe9, 0x0e, 0xd9, 0x92, 0x9b, 0x84, 0x36, 0x48, 0x2a, 0x76, 0x76, 0xfe, 0xda, 0xc2, 0x21, 0xdd, 0x31, 0x79, 0xa4, 0xc6, 0x88, 0x07, 0x40, 0xb9, 0x9d, 0xee, 0x90, 0x2d, 0xb9,
0xd8, 0xd9, 0xe4, 0x6d, 0x58, 0x92, 0x25, 0xcb, 0x31, 0x11, 0x06, 0x0d, 0x01, 0x16, 0x43, 0xf2, 0x49, 0x68, 0x83, 0xa4, 0x82, 0x69, 0xe7, 0xaf, 0x0d, 0xa6, 0x4d, 0xde, 0x86, 0x25, 0x59, 0xb2,
0xb6, 0x88, 0xbd, 0x22, 0x76, 0x3a, 0x46, 0x57, 0x94, 0x5e, 0xc7, 0x6a, 0xb3, 0xc3, 0xa1, 0x2b, 0x1c, 0x13, 0x61, 0xd0, 0x10, 0x60, 0x31, 0x24, 0x6f, 0x8b, 0x60, 0x2c, 0x62, 0xa7, 0x63, 0x74,
0x8b, 0x8e, 0x13, 0x0e, 0x08, 0x4a, 0x66, 0x10, 0xdd, 0x29, 0xd1, 0xfc, 0xbe, 0xb1, 0xb6, 0x00, 0x45, 0xe9, 0x75, 0xac, 0x36, 0x3b, 0x1c, 0xba, 0xb2, 0xe8, 0x38, 0xe1, 0x80, 0xa0, 0x64, 0x06,
0xea, 0xa6, 0xfa, 0x36, 0x3e, 0x01, 0x88, 0xda, 0x13, 0xef, 0xdd, 0x1b, 0xf1, 0xde, 0xcd, 0x69, 0xd1, 0x9d, 0x12, 0xcd, 0xef, 0x1b, 0x6b, 0x0b, 0xa0, 0x6e, 0xaa, 0x6f, 0xe3, 0x13, 0x80, 0xa8,
0xbd, 0x9b, 0x37, 0xfe, 0xb1, 0xe0, 0x6c, 0x62, 0xa8, 0x94, 0x7a, 0xf3, 0x7d, 0x90, 0x0a, 0x57, 0x3d, 0xf1, 0xde, 0xbd, 0x11, 0xef, 0xdd, 0x9c, 0xd6, 0xbb, 0x79, 0xe3, 0x1f, 0x0b, 0xce, 0x26,
0x0b, 0x6f, 0x29, 0xcc, 0x26, 0x34, 0x94, 0x57, 0xa6, 0x97, 0x05, 0xa6, 0xab, 0x10, 0x29, 0x4e, 0x86, 0x4a, 0xa9, 0x37, 0xdf, 0x07, 0xa9, 0x70, 0xb5, 0xf0, 0x96, 0xc2, 0x6c, 0x42, 0x43, 0x79,
0x9c, 0x4f, 0x73, 0xe2, 0x37, 0xa0, 0x8e, 0xc1, 0xfc, 0x44, 0x41, 0x82, 0x9b, 0xd5, 0xa6, 0xf6, 0x65, 0x7a, 0x59, 0x60, 0xba, 0x0a, 0x91, 0xe2, 0xc4, 0xf9, 0x34, 0x27, 0x7e, 0x03, 0xea, 0x18,
0xa5, 0x2c, 0x3b, 0xc6, 0x82, 0x8b, 0x09, 0x16, 0xfc, 0xf7, 0x72, 0x3c, 0xf2, 0x53, 0x54, 0xd1, 0xdd, 0x4f, 0x14, 0x24, 0xb8, 0x59, 0x6d, 0x6a, 0x5f, 0xca, 0xb2, 0x63, 0x2c, 0xb8, 0x98, 0x60,
0x88, 0x07, 0xab, 0x3c, 0xe3, 0x3c, 0x58, 0x90, 0x9a, 0x0a, 0x7f, 0x0d, 0x5f, 0xcd, 0x67, 0xf3, 0xc1, 0x7f, 0x2f, 0xc7, 0x43, 0x41, 0x45, 0x15, 0x8d, 0x78, 0xb0, 0xca, 0x33, 0xce, 0x83, 0x05,
0xd5, 0x6c, 0x8e, 0x5d, 0xc8, 0xe4, 0xd8, 0xc6, 0x26, 0xb4, 0x76, 0x29, 0xeb, 0x8a, 0xf6, 0x64, 0xa9, 0xa9, 0xf0, 0xd7, 0xf0, 0xd5, 0x7c, 0x36, 0x5f, 0xcd, 0xe6, 0xd8, 0x85, 0x4c, 0x8e, 0x6d,
0x92, 0xe8, 0x4b, 0xe3, 0x16, 0xdc, 0xcc, 0xc0, 0x09, 0x4d, 0xd5, 0x6f, 0xe4, 0x60, 0xad, 0xcd, 0x6c, 0x42, 0x6b, 0x97, 0xb2, 0xae, 0x68, 0x4f, 0x26, 0x89, 0xbe, 0x34, 0x6e, 0xc1, 0xcd, 0x0c,
0x03, 0xbe, 0x7c, 0x63, 0x77, 0x9a, 0x3f, 0x87, 0x9b, 0xea, 0xca, 0x81, 0x76, 0x55, 0x52, 0x8f, 0x9c, 0xd0, 0x54, 0xfd, 0x66, 0x0e, 0xd6, 0xda, 0x3c, 0x02, 0xcc, 0x37, 0x76, 0xa7, 0xf9, 0x73,
0xd6, 0x25, 0x6f, 0x2b, 0x68, 0x17, 0x6d, 0xd8, 0x96, 0x6a, 0xb4, 0x60, 0x3d, 0x59, 0x1b, 0x51, 0xb8, 0xa9, 0xae, 0x1c, 0x68, 0x57, 0x25, 0xf5, 0xf0, 0x5d, 0xf2, 0xb6, 0x82, 0x76, 0xd1, 0x86,
0xd1, 0x3d, 0x58, 0xde, 0xa5, 0x27, 0xf3, 0xb3, 0x03, 0x7a, 0x11, 0xd5, 0x91, 0x40, 0x31, 0x38, 0x6d, 0xa9, 0x46, 0x0b, 0xd6, 0x93, 0xb5, 0x11, 0x15, 0xdd, 0x83, 0xe5, 0x5d, 0x7a, 0x32, 0x3f,
0xf7, 0x9e, 0x8b, 0x89, 0x81, 0xbf, 0xd1, 0x27, 0x99, 0xd1, 0x58, 0xc1, 0x8c, 0x8e, 0xa4, 0xa5, 0x3b, 0xa0, 0x17, 0x51, 0x1d, 0x09, 0x14, 0x83, 0x73, 0xef, 0xb9, 0x98, 0x18, 0xf8, 0x1b, 0x7d,
0x03, 0x21, 0x83, 0x19, 0x1d, 0x19, 0x8f, 0x80, 0xe8, 0xf9, 0x88, 0x51, 0x64, 0x07, 0xbf, 0xf9, 0x92, 0x19, 0x8d, 0x15, 0xcc, 0xe8, 0x48, 0x5a, 0x3a, 0x10, 0x32, 0x98, 0xd1, 0x91, 0xf1, 0x08,
0x89, 0x15, 0x5c, 0x05, 0x21, 0x9d, 0xca, 0x6b, 0xc0, 0x10, 0xcc, 0x4f, 0x06, 0x1c, 0x62, 0xbc, 0x88, 0x9e, 0x8f, 0x18, 0x45, 0x76, 0xf0, 0x9b, 0x9f, 0x58, 0xc1, 0x55, 0x10, 0xd2, 0xa9, 0xbc,
0x03, 0xf5, 0x23, 0xfb, 0xca, 0xa4, 0x3f, 0x16, 0xb7, 0x6d, 0x37, 0xa0, 0x3c, 0xb3, 0xaf, 0x18, 0x06, 0x0c, 0xc1, 0xfc, 0x64, 0xc0, 0x21, 0xc6, 0x3b, 0x50, 0x3f, 0xb2, 0xaf, 0x4c, 0xfa, 0x23,
0xab, 0x56, 0x46, 0x4f, 0x44, 0x1b, 0xbf, 0x5b, 0x84, 0x05, 0x4e, 0x49, 0xee, 0xf2, 0x57, 0x2d, 0x71, 0xdb, 0x76, 0x03, 0xca, 0x33, 0xfb, 0x8a, 0xb1, 0x6a, 0x65, 0xf4, 0x44, 0xb4, 0xf1, 0x7b,
0x1c, 0x17, 0x59, 0xa5, 0xdc, 0xb4, 0x34, 0x50, 0x6a, 0x5f, 0xcb, 0xa7, 0xf7, 0x35, 0xa1, 0xa1, 0x45, 0x58, 0xe0, 0x94, 0xe4, 0x2e, 0x7f, 0xe6, 0xc2, 0x71, 0x91, 0x55, 0xca, 0x4d, 0x4b, 0x03,
0x95, 0xd1, 0x04, 0xa5, 0x79, 0xca, 0x9d, 0x4f, 0x65, 0x08, 0xc1, 0x78, 0xbc, 0x93, 0x62, 0xf4, 0xa5, 0xf6, 0xb5, 0x7c, 0x7a, 0x5f, 0x13, 0x1a, 0x5a, 0x19, 0x5e, 0x50, 0x9a, 0xa7, 0xdc, 0xf9,
0x1a, 0x0a, 0x8f, 0xf5, 0x10, 0x77, 0x20, 0x88, 0x8e, 0x97, 0xbc, 0x76, 0x72, 0xbb, 0x16, 0x5b, 0x54, 0xc6, 0x14, 0x8c, 0xc7, 0x3b, 0x29, 0x46, 0xcf, 0xa3, 0xf0, 0x58, 0x0f, 0x71, 0x07, 0x82,
0x9a, 0x0e, 0xca, 0x3c, 0xc3, 0x96, 0xe5, 0x15, 0xf2, 0xf8, 0x19, 0x36, 0x75, 0x56, 0xad, 0xbc, 0xe8, 0x78, 0xc9, 0x6b, 0x27, 0xb7, 0x6b, 0xb1, 0xa5, 0xe9, 0xa0, 0xcc, 0x33, 0x6c, 0x59, 0x5e,
0xfc, 0xac, 0xca, 0x55, 0xb7, 0x2f, 0x38, 0xab, 0xc2, 0x2b, 0x9c, 0x55, 0x5f, 0xc1, 0x78, 0x7f, 0x21, 0x8f, 0x9f, 0x61, 0x53, 0x67, 0xd5, 0xca, 0xcb, 0xcf, 0xaa, 0x5c, 0x75, 0xfb, 0x82, 0xb3,
0x13, 0x2a, 0x28, 0x83, 0x69, 0x3b, 0x1c, 0x93, 0xbd, 0xd8, 0x0e, 0xf7, 0xa9, 0x76, 0x9a, 0xe3, 0x2a, 0xbc, 0xc2, 0x59, 0xf5, 0x15, 0x8c, 0xf7, 0x37, 0xa1, 0x82, 0x32, 0x98, 0xb6, 0xc3, 0x31,
0x9e, 0x43, 0xda, 0x16, 0x63, 0xd2, 0x1f, 0xff, 0x6c, 0xb4, 0x81, 0x5f, 0x41, 0x59, 0x40, 0xd9, 0xd9, 0x8b, 0xed, 0x70, 0x9f, 0x6a, 0xa7, 0x39, 0xee, 0x39, 0xa4, 0x6d, 0x31, 0x26, 0xfd, 0xd1,
0x84, 0x76, 0xed, 0xa9, 0x8c, 0x99, 0x8b, 0xbf, 0x59, 0xb7, 0x61, 0x14, 0xc9, 0x1f, 0xcf, 0x1d, 0xcf, 0x46, 0x1b, 0xf8, 0x15, 0x94, 0x05, 0x94, 0x4d, 0x68, 0xd7, 0x9e, 0xca, 0x20, 0xba, 0xf8,
0x9f, 0x8e, 0x65, 0x2c, 0x3b, 0x07, 0xd7, 0x37, 0x83, 0xb0, 0x06, 0xb2, 0x93, 0xa5, 0x2b, 0x63, 0x9b, 0x75, 0x1b, 0x86, 0x95, 0xfc, 0xd1, 0xdc, 0xf1, 0xe9, 0x58, 0x06, 0xb7, 0x73, 0x70, 0x7d,
0xde, 0x57, 0xcc, 0xb2, 0x13, 0x3c, 0x65, 0x9f, 0x06, 0x81, 0x26, 0x46, 0xfd, 0x9e, 0x79, 0xbe, 0x33, 0x08, 0x6b, 0x20, 0x3b, 0x59, 0xba, 0x32, 0x08, 0x7e, 0xc5, 0x2c, 0x3b, 0xc1, 0x53, 0xf6,
0x14, 0x20, 0x8c, 0xdf, 0xcb, 0x41, 0x53, 0xac, 0x2e, 0x85, 0xd3, 0x4f, 0x6d, 0xa5, 0xeb, 0x1c, 0x69, 0x10, 0x68, 0x62, 0x18, 0xf0, 0x99, 0xe7, 0x4b, 0x01, 0xc2, 0xf8, 0xfd, 0x1c, 0x34, 0xc5,
0x5d, 0x5e, 0x1c, 0x99, 0xce, 0x80, 0x06, 0xea, 0xb3, 0x94, 0x34, 0xc1, 0xf5, 0x71, 0x35, 0x06, 0xea, 0x52, 0x38, 0xfd, 0xd4, 0x56, 0xba, 0xce, 0xd1, 0xe5, 0xc5, 0xa1, 0xea, 0x0c, 0x68, 0xa0,
0xdc, 0x13, 0x12, 0xc5, 0xeb, 0x50, 0x93, 0x37, 0x26, 0xa6, 0xce, 0x44, 0x3e, 0x7c, 0xc4, 0xaf, 0x3e, 0x4b, 0x49, 0x13, 0x5c, 0x1f, 0x57, 0x63, 0xc0, 0x3d, 0x21, 0x51, 0xbc, 0x0e, 0x35, 0x79,
0x4c, 0x1c, 0x3a, 0x13, 0x29, 0x8c, 0xf8, 0xb6, 0x08, 0x69, 0x90, 0x43, 0x61, 0xc4, 0xb4, 0x43, 0x63, 0x62, 0xea, 0x4c, 0xe4, 0x4b, 0x48, 0xfc, 0xca, 0xc4, 0xa1, 0x33, 0x91, 0xc2, 0x88, 0x6f,
0x6a, 0xfc, 0x41, 0x0e, 0x96, 0xb5, 0xa6, 0x88, 0x75, 0xfb, 0x1d, 0xa8, 0xab, 0xb7, 0x08, 0xa8, 0x8b, 0x90, 0x06, 0x39, 0x14, 0x46, 0x4c, 0x3b, 0xa4, 0xc6, 0x1f, 0xe6, 0x60, 0x59, 0x6b, 0x8a,
0x92, 0x82, 0x37, 0xe2, 0x3c, 0x2a, 0x4a, 0x56, 0x1b, 0x29, 0x48, 0xc0, 0x2a, 0x33, 0xb6, 0xaf, 0x58, 0xb7, 0xdf, 0x81, 0xba, 0x7a, 0x9c, 0x80, 0x2a, 0x29, 0x78, 0x23, 0xce, 0xa3, 0xa2, 0x64,
0xb8, 0x5b, 0xff, 0x7c, 0x2a, 0x0f, 0xa3, 0x63, 0xfb, 0x6a, 0x8f, 0xd2, 0xc1, 0x7c, 0x4a, 0xee, 0xb5, 0x91, 0x82, 0x04, 0xac, 0x32, 0x63, 0xfb, 0x8a, 0xbb, 0xf5, 0xcf, 0xa7, 0xf2, 0x30, 0x3a,
0x42, 0xfd, 0x39, 0xa5, 0xcf, 0x14, 0x01, 0x67, 0xbd, 0xc0, 0x60, 0x82, 0xc2, 0x80, 0xc6, 0xd4, 0xb6, 0xaf, 0xf6, 0x28, 0x1d, 0xcc, 0xa7, 0xe4, 0x2e, 0xd4, 0x9f, 0x53, 0xfa, 0x4c, 0x11, 0x70,
0x73, 0xc3, 0x73, 0x45, 0x22, 0x4e, 0x00, 0x08, 0xe4, 0x34, 0xc6, 0x1f, 0xe5, 0x61, 0x85, 0x6b, 0xd6, 0x0b, 0x0c, 0x26, 0x28, 0x0c, 0x68, 0x4c, 0x3d, 0x37, 0x3c, 0x57, 0x24, 0xe2, 0x04, 0x80,
0x4d, 0x85, 0xee, 0x5c, 0xb0, 0xae, 0x16, 0x2c, 0x70, 0x55, 0x36, 0x67, 0x5e, 0xfb, 0x37, 0x4c, 0x40, 0x4e, 0x63, 0xfc, 0x71, 0x1e, 0x56, 0xb8, 0xd6, 0x54, 0xe8, 0xce, 0x05, 0xeb, 0x6a, 0xc1,
0xf1, 0x4d, 0x3e, 0x7e, 0x45, 0x4d, 0xaf, 0x8c, 0x9a, 0x70, 0x4d, 0xf7, 0x17, 0xd2, 0xdd, 0x7f, 0x02, 0x57, 0x65, 0x73, 0xe6, 0xb5, 0x7f, 0xc3, 0x14, 0xdf, 0xe4, 0xe3, 0x57, 0xd4, 0xf4, 0xca,
0x7d, 0xf7, 0x66, 0x59, 0xd2, 0x4b, 0x59, 0x96, 0xf4, 0x57, 0xb1, 0x5f, 0xa7, 0xee, 0xf7, 0x97, 0xa8, 0x09, 0xd7, 0x74, 0x7f, 0x21, 0xdd, 0xfd, 0xd7, 0x77, 0x6f, 0x96, 0x25, 0xbd, 0x94, 0x65,
0xd3, 0x61, 0x70, 0x1f, 0xc1, 0x46, 0x8c, 0x06, 0xb9, 0xb5, 0x73, 0xea, 0xa8, 0x18, 0xeb, 0xab, 0x49, 0x7f, 0x15, 0xfb, 0x75, 0xea, 0x7e, 0x7f, 0x39, 0x1d, 0x17, 0xf7, 0x11, 0x6c, 0xc4, 0x68,
0x1a, 0xf5, 0x40, 0xe2, 0xb6, 0xcb, 0x50, 0x0a, 0x46, 0xde, 0x8c, 0x1a, 0xeb, 0xb0, 0x1a, 0xef, 0x90, 0x5b, 0x3b, 0xa7, 0x8e, 0x0a, 0xba, 0xbe, 0xaa, 0x51, 0x0f, 0x24, 0x6e, 0xbb, 0x0c, 0xa5,
0x55, 0xb1, 0x4d, 0xfc, 0x76, 0x0e, 0x5a, 0x7b, 0x51, 0x3c, 0x61, 0x27, 0x08, 0x3d, 0x5f, 0x85, 0x60, 0xe4, 0xcd, 0xa8, 0xb1, 0x0e, 0xab, 0xf1, 0x5e, 0x15, 0xdb, 0xc4, 0xef, 0xe4, 0xa0, 0xb5,
0xa5, 0xbf, 0x0d, 0xc0, 0x1f, 0x61, 0xc2, 0xb3, 0xbf, 0x88, 0x0c, 0x85, 0x10, 0x3c, 0xf9, 0xdf, 0x17, 0x05, 0x18, 0x76, 0x82, 0xd0, 0xf3, 0x55, 0x9c, 0xfa, 0xdb, 0x00, 0xfc, 0x55, 0x26, 0x3c,
0x84, 0x0a, 0x75, 0xc7, 0x1c, 0xc9, 0x67, 0x43, 0x99, 0xba, 0x63, 0xa9, 0x37, 0x48, 0x6d, 0xc3, 0xfb, 0x8b, 0xc8, 0x50, 0x08, 0xc1, 0x93, 0xff, 0x4d, 0xa8, 0x50, 0x77, 0xcc, 0x91, 0x7c, 0x36,
0x8d, 0xb8, 0x80, 0x21, 0x62, 0x9c, 0xb0, 0xde, 0xa1, 0x17, 0x28, 0x0e, 0x14, 0x55, 0x8c, 0x93, 0x94, 0xa9, 0x3b, 0x96, 0x7a, 0x83, 0xd4, 0x36, 0xdc, 0x88, 0x0b, 0x18, 0x22, 0xc6, 0x09, 0xeb,
0x43, 0xfb, 0x12, 0x5d, 0xc2, 0x03, 0xe3, 0x37, 0xf3, 0xb0, 0x14, 0xd5, 0x8f, 0x47, 0x79, 0x7a, 0x1d, 0x7a, 0x81, 0xe2, 0x40, 0x51, 0xc5, 0x38, 0x39, 0xb4, 0x2f, 0xd1, 0x25, 0x3c, 0x30, 0x7e,
0x71, 0xbc, 0xaa, 0xbb, 0x62, 0x3a, 0x38, 0xec, 0x2c, 0xa5, 0xe9, 0x92, 0x2b, 0x7c, 0x71, 0x76, 0x2b, 0x0f, 0x4b, 0x51, 0xfd, 0x78, 0x94, 0xa7, 0x17, 0xc7, 0xab, 0xba, 0x2b, 0xa6, 0x83, 0xc3,
0x5d, 0x62, 0x40, 0x4d, 0x52, 0x78, 0xf3, 0x50, 0x0b, 0xdd, 0x5b, 0xe5, 0x24, 0xfd, 0x79, 0xc8, 0xce, 0x52, 0x9a, 0x2e, 0xb9, 0xc2, 0x17, 0x67, 0xd7, 0x25, 0x06, 0xd4, 0x24, 0x85, 0x37, 0x0f,
0x0e, 0xbf, 0xf6, 0x94, 0xc9, 0x12, 0xe2, 0xf8, 0x59, 0xb2, 0xa7, 0x61, 0x17, 0x5f, 0xfa, 0x62, 0xb5, 0x58, 0xbe, 0x55, 0x4e, 0xd2, 0x9f, 0x87, 0xec, 0xf0, 0x6b, 0x4f, 0x99, 0x2c, 0x21, 0x8e,
0x60, 0x96, 0x8c, 0x0f, 0x24, 0xa3, 0x62, 0xf4, 0x4d, 0x7e, 0x16, 0xe2, 0x23, 0x87, 0xe7, 0x20, 0x9f, 0x25, 0x7b, 0x1a, 0x76, 0xf1, 0xe9, 0x2f, 0x06, 0x66, 0xc9, 0xf8, 0x40, 0x32, 0x2a, 0x46,
0xfd, 0xa0, 0xc0, 0x1f, 0x27, 0x51, 0x07, 0x85, 0xd7, 0xa1, 0xc6, 0x33, 0x8f, 0xc2, 0x39, 0x60, 0xdf, 0xe4, 0x67, 0x21, 0x3e, 0x72, 0x78, 0x0e, 0xd2, 0x0f, 0x0a, 0xfc, 0xb5, 0x12, 0x75, 0x50,
0x1c, 0xbd, 0xb0, 0xeb, 0x22, 0x5e, 0xe8, 0xf5, 0xbc, 0x79, 0x4c, 0x55, 0x01, 0xbc, 0x28, 0x74, 0x78, 0x1d, 0x6a, 0x3c, 0xf3, 0x28, 0x9c, 0x03, 0x06, 0xd6, 0x0b, 0xbb, 0x2e, 0xe2, 0x85, 0x5e,
0x2b, 0xfa, 0x8d, 0x1c, 0xdc, 0xcc, 0x18, 0x36, 0xb1, 0xca, 0x77, 0x40, 0x8b, 0x2a, 0x2d, 0x7b, 0xcf, 0x9b, 0xc7, 0x54, 0x15, 0xc0, 0x8b, 0x42, 0xb7, 0xa2, 0xdf, 0xcc, 0xc1, 0xcd, 0x8c, 0x61,
0x97, 0x2f, 0xf5, 0x75, 0xc9, 0x56, 0xe3, 0x7d, 0x6a, 0x36, 0x4f, 0xe3, 0x80, 0xe8, 0x00, 0xcc, 0x13, 0xab, 0x7c, 0x07, 0xb4, 0x30, 0xd3, 0xb2, 0x77, 0xf9, 0x52, 0x5f, 0x97, 0x6c, 0x35, 0xde,
0x47, 0x30, 0x16, 0x2c, 0x04, 0xc5, 0x29, 0x3e, 0x8c, 0xfc, 0xec, 0x79, 0x04, 0x9b, 0x9d, 0x4b, 0xa7, 0x66, 0xf3, 0x34, 0x0e, 0x88, 0x0e, 0xc0, 0x7c, 0x04, 0x63, 0xc1, 0x42, 0x50, 0x9c, 0xe2,
0xc6, 0x31, 0x94, 0x9b, 0xf8, 0xe8, 0xd9, 0x5c, 0x5a, 0xfb, 0x12, 0x36, 0x83, 0xdc, 0x2b, 0xd9, 0xc3, 0xc8, 0xcf, 0x9e, 0x47, 0xb0, 0xd9, 0xb9, 0x64, 0x1c, 0x43, 0xb9, 0x89, 0x8f, 0x9e, 0xcd,
0x0c, 0xc6, 0xfc, 0x2a, 0xbf, 0xca, 0xeb, 0xa7, 0xc9, 0x04, 0x37, 0x50, 0x96, 0xe6, 0x04, 0xb3, 0xa5, 0xb5, 0x2f, 0x61, 0x33, 0xc8, 0xbd, 0x92, 0xcd, 0x60, 0xcc, 0xaf, 0xf2, 0xab, 0xbc, 0x7e,
0x90, 0x51, 0x43, 0x18, 0x88, 0x67, 0x6a, 0x04, 0xb0, 0x74, 0x38, 0x9f, 0x84, 0xce, 0x8e, 0x02, 0x92, 0x4c, 0x70, 0x03, 0x65, 0x69, 0x4e, 0x30, 0x0b, 0x19, 0x35, 0x84, 0x81, 0x78, 0xa6, 0x46,
0x91, 0x8f, 0x45, 0x1a, 0x2c, 0x47, 0xf6, 0x5a, 0x66, 0x41, 0xa0, 0x0a, 0xc2, 0xce, 0x9a, 0xb2, 0x00, 0x4b, 0x87, 0xf3, 0x49, 0xe8, 0xec, 0x28, 0x10, 0xf9, 0x58, 0xa4, 0xc1, 0x72, 0x64, 0xaf,
0x8c, 0xac, 0x74, 0x79, 0x4b, 0xd3, 0x78, 0x09, 0xc6, 0x4d, 0xd8, 0x88, 0xbe, 0x78, 0xb7, 0xc9, 0x65, 0x16, 0x04, 0xaa, 0x20, 0xec, 0xac, 0x29, 0xcb, 0xc8, 0x4a, 0x97, 0xb7, 0x34, 0x8d, 0x97,
0xad, 0xe6, 0xef, 0xe7, 0xf8, 0xfd, 0x13, 0x8e, 0x1b, 0xb8, 0xf6, 0x2c, 0x38, 0xf7, 0x42, 0xd2, 0x60, 0xdc, 0x84, 0x8d, 0xe8, 0x8b, 0x77, 0x9b, 0xdc, 0x6a, 0xfe, 0x7e, 0x8e, 0xdf, 0x3f, 0xe1,
0x81, 0x95, 0xc0, 0x71, 0xcf, 0x26, 0x54, 0xcf, 0x3e, 0x10, 0x9d, 0xb0, 0x16, 0xaf, 0x1b, 0x4f, 0xb8, 0x81, 0x6b, 0xcf, 0x82, 0x73, 0x2f, 0x24, 0x1d, 0x58, 0x09, 0x1c, 0xf7, 0x6c, 0x42, 0xf5,
0x1a, 0x98, 0xcb, 0x3c, 0x45, 0x94, 0x5b, 0x40, 0xb6, 0xaf, 0xab, 0x64, 0x34, 0x2d, 0x12, 0xbd, 0xec, 0x03, 0xd1, 0x09, 0x6b, 0xf1, 0xba, 0xf1, 0xa4, 0x81, 0xb9, 0xcc, 0x53, 0x44, 0xb9, 0x05,
0x91, 0xae, 0x7c, 0x17, 0x16, 0xe3, 0x05, 0x91, 0x4f, 0x45, 0x04, 0x8c, 0xa8, 0x56, 0x85, 0xc4, 0x64, 0xfb, 0xba, 0x4a, 0x46, 0xd3, 0x22, 0xd1, 0x1b, 0xe9, 0xca, 0x77, 0x61, 0x31, 0x5e, 0x10,
0xfd, 0xff, 0x68, 0x42, 0xd4, 0xa2, 0xbe, 0x0f, 0x8c, 0xbf, 0x9e, 0x83, 0x96, 0x49, 0xd9, 0xcc, 0xf9, 0x54, 0x44, 0xc0, 0x88, 0x6a, 0x55, 0x48, 0xdc, 0xff, 0x8f, 0x26, 0x44, 0x2d, 0xea, 0xfb,
0xd5, 0x6a, 0x29, 0xe7, 0xcc, 0x77, 0x52, 0xb9, 0x5e, 0xdf, 0x56, 0x19, 0x58, 0x43, 0xd6, 0xe8, 0xc0, 0xf8, 0xeb, 0x39, 0x68, 0x99, 0x94, 0xcd, 0x5c, 0xad, 0x96, 0x72, 0xce, 0x7c, 0x27, 0x95,
0xbd, 0x6b, 0x07, 0x63, 0xff, 0x46, 0xaa, 0x45, 0xdb, 0x15, 0x58, 0xe0, 0x24, 0xc6, 0x06, 0xac, 0xeb, 0xf5, 0x6d, 0x95, 0x81, 0x35, 0x64, 0x8d, 0xde, 0xbb, 0x76, 0x30, 0xf6, 0x6f, 0xa4, 0x5a,
0x89, 0xfa, 0xc8, 0xba, 0x44, 0xe6, 0xe9, 0x58, 0x89, 0x31, 0xf3, 0xf4, 0x26, 0xb4, 0xf8, 0x45, 0xb4, 0x5d, 0x81, 0x05, 0x4e, 0x62, 0x6c, 0xc0, 0x9a, 0xa8, 0x8f, 0xac, 0x4b, 0x64, 0x9e, 0x8e,
0x75, 0xbd, 0x11, 0x22, 0xe1, 0x2e, 0x90, 0x43, 0x7b, 0x64, 0xfb, 0x9e, 0xe7, 0x1e, 0x51, 0x5f, 0x95, 0x18, 0x33, 0x4f, 0x6f, 0x42, 0x8b, 0x5f, 0x54, 0xd7, 0x1b, 0x21, 0x12, 0xee, 0x02, 0x39,
0x38, 0x80, 0xa3, 0x84, 0x89, 0xd6, 0x5b, 0x29, 0x0a, 0xf3, 0x2f, 0x19, 0xb0, 0xdc, 0x73, 0xa5, 0xb4, 0x47, 0xb6, 0xef, 0x79, 0xee, 0x11, 0xf5, 0x85, 0x03, 0x38, 0x4a, 0x98, 0x68, 0xbd, 0x95,
0xbf, 0x1b, 0xff, 0x32, 0x7c, 0x58, 0xd9, 0xb6, 0x9f, 0x51, 0x99, 0x93, 0xec, 0xa2, 0xc7, 0x50, 0xa2, 0x30, 0xff, 0x92, 0x11, 0xcc, 0x3d, 0x57, 0xfa, 0xbb, 0xf1, 0x2f, 0xc3, 0x87, 0x95, 0x6d,
0x9b, 0xa9, 0x4c, 0x65, 0xbf, 0xcb, 0xa0, 0x41, 0xe9, 0x62, 0x4d, 0x9d, 0x9a, 0xb1, 0x20, 0xdf, 0xfb, 0x19, 0x95, 0x39, 0xc9, 0x2e, 0x7a, 0x0c, 0xb5, 0x99, 0xca, 0x54, 0xf6, 0xbb, 0x0c, 0x1a,
0xf3, 0x42, 0x0c, 0xbe, 0x21, 0x4d, 0x6e, 0x66, 0x95, 0x81, 0x9e, 0xd2, 0xab, 0xee, 0xd8, 0x78, 0x94, 0x2e, 0xd6, 0xd4, 0xa9, 0x19, 0x0b, 0xf2, 0x3d, 0x2f, 0xc4, 0xe0, 0x1b, 0xd2, 0xe4, 0x66,
0x08, 0xab, 0xf1, 0x32, 0x05, 0x6b, 0xd9, 0x84, 0xca, 0x54, 0xc0, 0x44, 0xed, 0xd5, 0x37, 0x3b, 0x56, 0x19, 0xe8, 0x29, 0xbd, 0xea, 0x8e, 0x8d, 0x87, 0xb0, 0x1a, 0x2f, 0x53, 0xb0, 0x96, 0x4d,
0x8c, 0xb0, 0x23, 0x9f, 0x4c, 0xd3, 0xdd, 0x55, 0x47, 0xaa, 0xc7, 0xb0, 0x91, 0xc2, 0x88, 0x0c, 0xa8, 0x4c, 0x05, 0x4c, 0xd4, 0x5e, 0x7d, 0xb3, 0xc3, 0x08, 0x3b, 0xf2, 0xc9, 0x34, 0xdd, 0x5d,
0xef, 0x42, 0x5d, 0xab, 0x08, 0x6f, 0x46, 0x91, 0x89, 0xac, 0xa2, 0x26, 0x81, 0xf1, 0x39, 0x6c, 0x75, 0xa4, 0x7a, 0x0c, 0x1b, 0x29, 0x8c, 0xc8, 0xf0, 0x2e, 0xd4, 0xb5, 0x8a, 0xf0, 0x66, 0x14,
0xf0, 0xf3, 0x58, 0x94, 0x5c, 0x76, 0x41, 0xa2, 0x15, 0xb9, 0x64, 0x2b, 0x3e, 0x96, 0xc7, 0x3c, 0x99, 0xc8, 0x2a, 0x6a, 0x12, 0x18, 0x9f, 0xc3, 0x06, 0x3f, 0x8f, 0x45, 0xc9, 0x65, 0x17, 0x24,
0x3d, 0x69, 0x14, 0x8c, 0x6f, 0x8c, 0x38, 0xe9, 0xb2, 0x24, 0x3f, 0x8d, 0x63, 0x58, 0x4f, 0x77, 0x5a, 0x91, 0x4b, 0xb6, 0xe2, 0x63, 0x79, 0xcc, 0xd3, 0x93, 0x46, 0xc1, 0xf8, 0xc6, 0x88, 0x93,
0x1f, 0xab, 0xff, 0x5f, 0xa8, 0xcb, 0x65, 0xf7, 0x44, 0x68, 0xd5, 0x3d, 0xff, 0x35, 0xc7, 0xfb, 0x2e, 0x4b, 0xf2, 0xd3, 0x38, 0x86, 0xf5, 0x74, 0xf7, 0xb1, 0xfa, 0xff, 0x54, 0x5d, 0x2e, 0xbb,
0x27, 0x86, 0x12, 0xd5, 0x1c, 0x03, 0x99, 0xd2, 0xf0, 0xdc, 0x1b, 0x5b, 0xe9, 0x92, 0x1f, 0x29, 0x27, 0x42, 0xab, 0xee, 0xf9, 0xaf, 0x39, 0xde, 0x3f, 0x31, 0x94, 0xa8, 0xe6, 0x18, 0xc8, 0x94,
0x8f, 0xa9, 0xcc, 0xb4, 0x5b, 0x87, 0x98, 0x50, 0xc3, 0x08, 0xdf, 0xfd, 0x69, 0x12, 0xbe, 0x39, 0x86, 0xe7, 0xde, 0xd8, 0x4a, 0x97, 0xfc, 0x48, 0x79, 0x4c, 0x65, 0xa6, 0xdd, 0x3a, 0xc4, 0x84,
0x82, 0xf5, 0x6c, 0xe2, 0x0c, 0x3f, 0xa3, 0x8f, 0xe2, 0x82, 0xfa, 0xed, 0x6b, 0x9b, 0xcf, 0xaa, 0x1a, 0x46, 0xf8, 0xee, 0x4f, 0x93, 0xf0, 0xcd, 0x11, 0xac, 0x67, 0x13, 0x67, 0xf8, 0x19, 0x7d,
0xa5, 0xcb, 0xed, 0xbf, 0x55, 0x81, 0xb2, 0xd0, 0x92, 0x90, 0x2d, 0x28, 0x8e, 0xa4, 0xcf, 0x6a, 0x14, 0x17, 0xd4, 0x6f, 0x5f, 0xdb, 0x7c, 0x56, 0x2d, 0x5d, 0x6e, 0xff, 0xed, 0x0a, 0x94, 0x85,
0x14, 0x90, 0x51, 0x60, 0xe5, 0xff, 0x1d, 0xf4, 0x5c, 0x65, 0x74, 0xe4, 0x31, 0x2c, 0xc6, 0xdd, 0x96, 0x84, 0x6c, 0x41, 0x71, 0x24, 0x7d, 0x56, 0xa3, 0x80, 0x8c, 0x02, 0x2b, 0xff, 0xef, 0xa0,
0x36, 0x12, 0x81, 0x58, 0xe2, 0xfe, 0x16, 0x8d, 0x51, 0xc2, 0x24, 0x5e, 0x8d, 0x84, 0x2b, 0x2e, 0xe7, 0x2a, 0xa3, 0x23, 0x8f, 0x61, 0x31, 0xee, 0xb6, 0x91, 0x08, 0xc4, 0x12, 0xf7, 0xb7, 0x68,
0x73, 0x56, 0xce, 0x35, 0xe9, 0xcb, 0x73, 0xd9, 0x79, 0x2d, 0x38, 0xb7, 0xad, 0x87, 0x8f, 0x3e, 0x8c, 0x12, 0x26, 0xf1, 0x6a, 0x24, 0x5c, 0x71, 0x99, 0xb3, 0x72, 0xae, 0x49, 0x5f, 0x9e, 0xcb,
0x11, 0x91, 0x58, 0x6a, 0x08, 0x1c, 0x9c, 0xdb, 0x0f, 0x1f, 0x7d, 0x92, 0x3c, 0x89, 0x89, 0x38, 0xce, 0x6b, 0xc1, 0xb9, 0x6d, 0x3d, 0x7c, 0xf4, 0x89, 0x88, 0xc4, 0x52, 0x43, 0xe0, 0xe0, 0xdc,
0x2c, 0xda, 0x49, 0x6c, 0x15, 0x4a, 0x3c, 0xaa, 0x3b, 0x77, 0x3e, 0xe4, 0x1f, 0xe4, 0x01, 0xac, 0x7e, 0xf8, 0xe8, 0x93, 0xe4, 0x49, 0x4c, 0xc4, 0x61, 0xd1, 0x4e, 0x62, 0xab, 0x50, 0xe2, 0x61,
0x4a, 0xbd, 0x9c, 0xb8, 0x26, 0xc2, 0x77, 0x51, 0xfe, 0xa8, 0x15, 0x11, 0xb8, 0x01, 0xa2, 0xb8, 0xde, 0xb9, 0xf3, 0x21, 0xff, 0x20, 0x0f, 0x60, 0x55, 0xea, 0xe5, 0xc4, 0x35, 0x11, 0xbe, 0x8b,
0x26, 0x6f, 0x1d, 0x16, 0xce, 0xa3, 0x30, 0xfd, 0x0d, 0x53, 0x7c, 0x19, 0x7f, 0x54, 0x82, 0x9a, 0xf2, 0x57, 0xae, 0x88, 0xc0, 0x0d, 0x10, 0xc5, 0x35, 0x79, 0xeb, 0xb0, 0x70, 0x1e, 0xc5, 0xed,
0xd6, 0x29, 0xa4, 0x0e, 0x15, 0xb3, 0x33, 0xe8, 0x98, 0x5f, 0x74, 0x76, 0x9b, 0x37, 0xc8, 0x3d, 0x6f, 0x98, 0xe2, 0xcb, 0xf8, 0xe3, 0x12, 0xd4, 0xb4, 0x4e, 0x21, 0x75, 0xa8, 0x98, 0x9d, 0x41,
0x78, 0xab, 0xdb, 0xdb, 0xe9, 0x9b, 0x66, 0x67, 0x67, 0x68, 0xf5, 0x4d, 0x4b, 0x86, 0x05, 0x3d, 0xc7, 0xfc, 0xa2, 0xb3, 0xdb, 0xbc, 0x41, 0xee, 0xc1, 0x5b, 0xdd, 0xde, 0x4e, 0xdf, 0x34, 0x3b,
0x6a, 0x7f, 0x75, 0xd8, 0xe9, 0x0d, 0xad, 0xdd, 0xce, 0xb0, 0xdd, 0x3d, 0x18, 0x34, 0x73, 0xe4, 0x3b, 0x43, 0xab, 0x6f, 0x5a, 0x32, 0x4e, 0xe8, 0x51, 0xfb, 0xab, 0xc3, 0x4e, 0x6f, 0x68, 0xed,
0x35, 0x68, 0x45, 0x94, 0x12, 0xdd, 0x3e, 0xec, 0x1f, 0xf7, 0x86, 0xcd, 0x3c, 0xb9, 0x03, 0xb7, 0x76, 0x86, 0xed, 0xee, 0xc1, 0xa0, 0x99, 0x23, 0xaf, 0x41, 0x2b, 0xa2, 0x94, 0xe8, 0xf6, 0x61,
0xf6, 0xba, 0xbd, 0xf6, 0x81, 0x15, 0xd1, 0xec, 0x1c, 0x0c, 0xbf, 0xb0, 0x3a, 0x3f, 0x7f, 0xd4, 0xff, 0xb8, 0x37, 0x6c, 0xe6, 0xc9, 0x1d, 0xb8, 0xb5, 0xd7, 0xed, 0xb5, 0x0f, 0xac, 0x88, 0x66,
0x35, 0xbf, 0x6a, 0x16, 0xb2, 0x08, 0xf6, 0x87, 0x07, 0x3b, 0x32, 0x87, 0x22, 0xb9, 0x09, 0x6b, 0xe7, 0x60, 0xf8, 0x85, 0xd5, 0xf9, 0x85, 0xa3, 0xae, 0xf9, 0x55, 0xb3, 0x90, 0x45, 0xb0, 0x3f,
0x9c, 0x80, 0x27, 0xb1, 0x86, 0xfd, 0xbe, 0x35, 0xe8, 0xf7, 0x7b, 0xcd, 0x12, 0x59, 0x86, 0x46, 0x3c, 0xd8, 0x91, 0x39, 0x14, 0xc9, 0x4d, 0x58, 0xe3, 0x04, 0x3c, 0x89, 0x35, 0xec, 0xf7, 0xad,
0xb7, 0xf7, 0x45, 0xfb, 0xa0, 0xbb, 0x6b, 0x99, 0x9d, 0xf6, 0xc1, 0x61, 0x73, 0x81, 0xac, 0xc0, 0x41, 0xbf, 0xdf, 0x6b, 0x96, 0xc8, 0x32, 0x34, 0xba, 0xbd, 0x2f, 0xda, 0x07, 0xdd, 0x5d, 0xcb,
0x52, 0x92, 0xae, 0xcc, 0xb2, 0x90, 0x74, 0xfd, 0x5e, 0xb7, 0xdf, 0xb3, 0xbe, 0xe8, 0x98, 0x83, 0xec, 0xb4, 0x0f, 0x0e, 0x9b, 0x0b, 0x64, 0x05, 0x96, 0x92, 0x74, 0x65, 0x96, 0x85, 0xa4, 0xeb,
0x6e, 0xbf, 0xd7, 0xac, 0x90, 0x75, 0x20, 0x71, 0xd4, 0xfe, 0x61, 0x7b, 0xa7, 0x59, 0x25, 0x6b, 0xf7, 0xba, 0xfd, 0x9e, 0xf5, 0x45, 0xc7, 0x1c, 0x74, 0xfb, 0xbd, 0x66, 0x85, 0xac, 0x03, 0x89,
0xb0, 0x1c, 0x87, 0x3f, 0xed, 0x7c, 0xd5, 0x04, 0xd2, 0x82, 0x55, 0x5e, 0x31, 0x6b, 0xbb, 0x73, 0xa3, 0xf6, 0x0f, 0xdb, 0x3b, 0xcd, 0x2a, 0x59, 0x83, 0xe5, 0x38, 0xfc, 0x69, 0xe7, 0xab, 0x26,
0xd0, 0xff, 0xd2, 0x3a, 0xec, 0xf6, 0xba, 0x87, 0xc7, 0x87, 0xcd, 0x1a, 0x06, 0x67, 0xee, 0x74, 0x90, 0x16, 0xac, 0xf2, 0x8a, 0x59, 0xdb, 0x9d, 0x83, 0xfe, 0x97, 0xd6, 0x61, 0xb7, 0xd7, 0x3d,
0xac, 0x6e, 0x6f, 0x70, 0xbc, 0xb7, 0xd7, 0xdd, 0xe9, 0x76, 0x7a, 0xc3, 0x66, 0x9d, 0x97, 0x9c, 0x3c, 0x3e, 0x6c, 0xd6, 0x30, 0x5a, 0x73, 0xa7, 0x63, 0x75, 0x7b, 0x83, 0xe3, 0xbd, 0xbd, 0xee,
0xd5, 0xf0, 0x06, 0x4b, 0x20, 0x2e, 0x06, 0x5a, 0xbb, 0xdd, 0x41, 0x7b, 0xfb, 0xa0, 0xb3, 0xdb, 0x4e, 0xb7, 0xd3, 0x1b, 0x36, 0xeb, 0xbc, 0xe4, 0xac, 0x86, 0x37, 0x58, 0x02, 0x71, 0x31, 0xd0,
0x5c, 0x24, 0xb7, 0xe1, 0xe6, 0xb0, 0x73, 0x78, 0xd4, 0x37, 0xdb, 0xe6, 0x57, 0xf2, 0xe2, 0xa0, 0xda, 0xed, 0x0e, 0xda, 0xdb, 0x07, 0x9d, 0xdd, 0xe6, 0x22, 0xb9, 0x0d, 0x37, 0x87, 0x9d, 0xc3,
0xb5, 0xd7, 0xee, 0x1e, 0x1c, 0x9b, 0x9d, 0xe6, 0x12, 0x79, 0x03, 0x6e, 0x9b, 0x9d, 0x1f, 0x1e, 0xa3, 0xbe, 0xd9, 0x36, 0xbf, 0x92, 0x17, 0x07, 0xad, 0xbd, 0x76, 0xf7, 0xe0, 0xd8, 0xec, 0x34,
0x77, 0xcd, 0xce, 0xae, 0xd5, 0xeb, 0xef, 0x76, 0xac, 0xbd, 0x4e, 0x7b, 0x78, 0x6c, 0x76, 0xac, 0x97, 0xc8, 0x1b, 0x70, 0xdb, 0xec, 0xfc, 0xe0, 0xb8, 0x6b, 0x76, 0x76, 0xad, 0x5e, 0x7f, 0xb7,
0xc3, 0xee, 0x60, 0xd0, 0xed, 0x3d, 0x69, 0x36, 0xc9, 0x5b, 0x70, 0x57, 0x91, 0xa8, 0x0c, 0x12, 0x63, 0xed, 0x75, 0xda, 0xc3, 0x63, 0xb3, 0x63, 0x1d, 0x76, 0x07, 0x83, 0x6e, 0xef, 0x49, 0xb3,
0x54, 0xcb, 0xac, 0x7d, 0x72, 0x48, 0x7b, 0x9d, 0x9f, 0x1f, 0x5a, 0x47, 0x9d, 0x8e, 0xd9, 0x24, 0x49, 0xde, 0x82, 0xbb, 0x8a, 0x44, 0x65, 0x90, 0xa0, 0x5a, 0x66, 0xed, 0x93, 0x43, 0xda, 0xeb,
0x64, 0x13, 0xd6, 0xa3, 0xe2, 0x79, 0x01, 0xa2, 0xec, 0x15, 0x86, 0x3b, 0xea, 0x98, 0x87, 0xed, 0xfc, 0xc2, 0xd0, 0x3a, 0xea, 0x74, 0xcc, 0x26, 0x21, 0x9b, 0xb0, 0x1e, 0x15, 0xcf, 0x0b, 0x10,
0x1e, 0x1b, 0xe0, 0x18, 0x6e, 0x95, 0x55, 0x3b, 0xc2, 0x25, 0xab, 0xbd, 0x46, 0x08, 0x2c, 0x6a, 0x65, 0xaf, 0x30, 0xdc, 0x51, 0xc7, 0x3c, 0x6c, 0xf7, 0xd8, 0x00, 0xc7, 0x70, 0xab, 0xac, 0xda,
0xa3, 0xb2, 0xd7, 0x36, 0x9b, 0xeb, 0x64, 0x09, 0x6a, 0x87, 0x47, 0x47, 0xd6, 0xb0, 0x7b, 0xd8, 0x11, 0x2e, 0x59, 0xed, 0x35, 0x42, 0x60, 0x51, 0x1b, 0x95, 0xbd, 0xb6, 0xd9, 0x5c, 0x27, 0x4b,
0xe9, 0x1f, 0x0f, 0x9b, 0x1b, 0x64, 0x0d, 0x9a, 0xdd, 0xde, 0xb0, 0x63, 0xb2, 0xb1, 0x96, 0x49, 0x50, 0x3b, 0x3c, 0x3a, 0xb2, 0x86, 0xdd, 0xc3, 0x4e, 0xff, 0x78, 0xd8, 0xdc, 0x20, 0x6b, 0xd0,
0xff, 0x5b, 0x99, 0xac, 0xc2, 0x92, 0xac, 0xa9, 0x84, 0xfe, 0x69, 0x99, 0x6c, 0x00, 0x39, 0xee, 0xec, 0xf6, 0x86, 0x1d, 0x93, 0x8d, 0xb5, 0x4c, 0xfa, 0xdf, 0xca, 0x64, 0x15, 0x96, 0x64, 0x4d,
0x99, 0x9d, 0xf6, 0x2e, 0xeb, 0x38, 0x85, 0xf8, 0xef, 0x65, 0x61, 0x11, 0xfd, 0xbd, 0x82, 0x12, 0x25, 0xf4, 0xcf, 0xca, 0x64, 0x03, 0xc8, 0x71, 0xcf, 0xec, 0xb4, 0x77, 0x59, 0xc7, 0x29, 0xc4,
0xf6, 0x22, 0x9f, 0xa8, 0xf8, 0xbb, 0x3a, 0x75, 0xed, 0x3d, 0x9c, 0x97, 0x3d, 0x67, 0xa8, 0x1d, 0x7f, 0x2f, 0x0b, 0x8b, 0xe8, 0xef, 0x17, 0x94, 0xb0, 0x17, 0xf9, 0x44, 0xc5, 0x1f, 0xda, 0xa9,
0xcd, 0x0b, 0xa9, 0xa3, 0x79, 0x4a, 0xf7, 0xd3, 0xd0, 0xcf, 0x0e, 0x6f, 0x42, 0x63, 0xca, 0xdf, 0x6b, 0x0f, 0xe4, 0xbc, 0xec, 0x7d, 0x43, 0xed, 0x68, 0x5e, 0x48, 0x1d, 0xcd, 0x53, 0xba, 0x9f,
0xd8, 0x11, 0x8f, 0x34, 0x80, 0x70, 0x10, 0xe4, 0x40, 0xfe, 0x42, 0x43, 0xea, 0x3d, 0xbf, 0x52, 0x86, 0x7e, 0x76, 0x78, 0x13, 0x1a, 0x53, 0xfe, 0xe8, 0x8e, 0x78, 0xb5, 0x01, 0x84, 0x83, 0x20,
0xfa, 0x3d, 0xbf, 0xac, 0xf3, 0xe1, 0x42, 0xd6, 0xf9, 0xf0, 0x3e, 0x2c, 0x73, 0xd6, 0xe4, 0xb8, 0x07, 0xf2, 0x27, 0x1b, 0x52, 0x0f, 0xfc, 0x95, 0xd2, 0x0f, 0xfc, 0x65, 0x9d, 0x0f, 0x17, 0xb2,
0xce, 0x54, 0x6a, 0x5d, 0xc4, 0xeb, 0x78, 0xc8, 0xa2, 0x38, 0x5c, 0x1e, 0x47, 0xe5, 0x91, 0x55, 0xce, 0x87, 0xf7, 0x61, 0x99, 0xb3, 0x26, 0xc7, 0x75, 0xa6, 0x52, 0xeb, 0x22, 0x9e, 0xcb, 0x43,
0xb0, 0x90, 0xb2, 0x38, 0xad, 0xc6, 0x4e, 0xaa, 0x9c, 0x73, 0xa8, 0x93, 0xaa, 0x2a, 0xc1, 0xbe, 0x16, 0xc5, 0xe1, 0xf2, 0x38, 0x2a, 0x8f, 0xac, 0x82, 0x85, 0x94, 0xc5, 0x69, 0x35, 0x76, 0x52,
0x8c, 0x4a, 0xa8, 0x69, 0x25, 0x70, 0x38, 0x96, 0x70, 0x1f, 0x96, 0xe9, 0x65, 0xe8, 0xdb, 0x96, 0xe5, 0x9c, 0x43, 0x9d, 0x54, 0x55, 0x09, 0xf6, 0x65, 0x54, 0x42, 0x4d, 0x2b, 0x81, 0xc3, 0xb1,
0x37, 0xb3, 0x7f, 0x3c, 0x47, 0xaf, 0x0e, 0x1b, 0x75, 0x40, 0x75, 0x73, 0x09, 0x11, 0x7d, 0x84, 0x84, 0xfb, 0xb0, 0x4c, 0x2f, 0x43, 0xdf, 0xb6, 0xbc, 0x99, 0xfd, 0xa3, 0x39, 0x7a, 0x75, 0xd8,
0xef, 0xda, 0xa1, 0x6d, 0xfc, 0x22, 0x80, 0xda, 0x55, 0xf1, 0x95, 0x41, 0xd7, 0x93, 0xd7, 0x40, 0xa8, 0x03, 0xaa, 0x9b, 0x4b, 0x88, 0xe8, 0x23, 0x7c, 0xd7, 0x0e, 0x6d, 0xe3, 0x97, 0x00, 0xd4,
0xeb, 0x26, 0xff, 0xc0, 0x71, 0x0c, 0x3d, 0xdf, 0x3e, 0xa3, 0x5d, 0x19, 0xcc, 0x28, 0x02, 0x90, 0xae, 0x8a, 0xcf, 0x0e, 0xba, 0x9e, 0xbc, 0x06, 0x5a, 0x37, 0xf9, 0x07, 0x8e, 0x63, 0xe8, 0xf9,
0x5b, 0x50, 0xf0, 0x66, 0xd2, 0x7d, 0xae, 0x2a, 0xa3, 0x8e, 0xcf, 0x4c, 0x06, 0x35, 0x3e, 0x81, 0xf6, 0x19, 0xed, 0xca, 0x60, 0x46, 0x11, 0x80, 0xdc, 0x82, 0x82, 0x37, 0x93, 0xee, 0x73, 0x55,
0x7c, 0x7f, 0x76, 0xad, 0xa8, 0xd4, 0x82, 0xb2, 0x7c, 0xc1, 0x37, 0x8f, 0x2e, 0x73, 0xf2, 0xf3, 0x19, 0x86, 0x7c, 0x66, 0x32, 0xa8, 0xf1, 0x09, 0xe4, 0xfb, 0xb3, 0x6b, 0x45, 0xa5, 0x16, 0x94,
0xfe, 0x5f, 0x86, 0x9a, 0xf6, 0x2c, 0x14, 0xd9, 0x80, 0x95, 0x2f, 0xbb, 0xc3, 0x5e, 0x67, 0x30, 0xe5, 0x93, 0xbe, 0x79, 0x74, 0x99, 0x93, 0x9f, 0xf7, 0xff, 0x32, 0xd4, 0xb4, 0x77, 0xa2, 0xc8,
0xb0, 0x8e, 0x8e, 0xb7, 0x9f, 0x76, 0xbe, 0xb2, 0xf6, 0xdb, 0x83, 0xfd, 0xe6, 0x0d, 0xc6, 0x4b, 0x06, 0xac, 0x7c, 0xd9, 0x1d, 0xf6, 0x3a, 0x83, 0x81, 0x75, 0x74, 0xbc, 0xfd, 0xb4, 0xf3, 0x95,
0x7a, 0x9d, 0xc1, 0xb0, 0xb3, 0x1b, 0x83, 0xe7, 0xc8, 0xeb, 0xb0, 0x79, 0xdc, 0x3b, 0x1e, 0x74, 0xb5, 0xdf, 0x1e, 0xec, 0x37, 0x6f, 0x30, 0x5e, 0xd2, 0xeb, 0x0c, 0x86, 0x9d, 0xdd, 0x18, 0x3c,
0x76, 0xad, 0xac, 0x74, 0x79, 0xb6, 0x78, 0x04, 0x3e, 0x23, 0x79, 0xe1, 0xfe, 0x2f, 0xc1, 0x62, 0x47, 0x5e, 0x87, 0xcd, 0xe3, 0xde, 0xf1, 0xa0, 0xb3, 0x6b, 0x65, 0xa5, 0xcb, 0xb3, 0xc5, 0x23,
0x3c, 0xb4, 0x07, 0x01, 0x58, 0x38, 0xe8, 0x3c, 0x69, 0xef, 0x7c, 0xc5, 0xa3, 0xca, 0x0f, 0x86, 0xf0, 0x19, 0xc9, 0x0b, 0xf7, 0x7f, 0x19, 0x16, 0xe3, 0xa1, 0x3d, 0x08, 0xc0, 0xc2, 0x41, 0xe7,
0xed, 0x61, 0x77, 0xc7, 0x12, 0x51, 0xe4, 0x19, 0xa3, 0xca, 0x91, 0x1a, 0x94, 0xdb, 0xbd, 0x9d, 0x49, 0x7b, 0xe7, 0x2b, 0x1e, 0x66, 0x7e, 0x30, 0x6c, 0x0f, 0xbb, 0x3b, 0x96, 0x08, 0x2b, 0xcf,
0xfd, 0xbe, 0x39, 0x68, 0xe6, 0xc9, 0x6b, 0xb0, 0x21, 0x97, 0xd0, 0x4e, 0xff, 0xf0, 0xb0, 0x3b, 0x18, 0x55, 0x8e, 0xd4, 0xa0, 0xdc, 0xee, 0xed, 0xec, 0xf7, 0xcd, 0x41, 0x33, 0x4f, 0x5e, 0x83,
0x44, 0x1e, 0x3d, 0xfc, 0xea, 0x88, 0xad, 0x98, 0xfb, 0x36, 0x54, 0xa3, 0x00, 0xf8, 0xc8, 0xf7, 0x0d, 0xb9, 0x84, 0x76, 0xfa, 0x87, 0x87, 0xdd, 0x21, 0xf2, 0xe8, 0xe1, 0x57, 0x47, 0x6c, 0xc5,
0xba, 0xc3, 0x6e, 0x7b, 0x18, 0x31, 0xfd, 0xe6, 0x0d, 0xc6, 0x56, 0x23, 0x30, 0x46, 0xb1, 0x6f, 0xdc, 0xb7, 0xa1, 0x1a, 0x45, 0xc4, 0x47, 0xbe, 0xd7, 0x1d, 0x76, 0xdb, 0xc3, 0x88, 0xe9, 0x37,
0xe6, 0xf8, 0xed, 0x67, 0x09, 0xe4, 0xa5, 0x37, 0xf3, 0x6c, 0xad, 0x47, 0xd0, 0xed, 0xfe, 0x90, 0x6f, 0x30, 0xb6, 0x1a, 0x81, 0x31, 0xac, 0x7d, 0x33, 0xc7, 0x6f, 0x3f, 0x4b, 0x20, 0x2f, 0xbd,
0x35, 0xe1, 0x97, 0x61, 0x31, 0x1e, 0x67, 0x9e, 0x34, 0xa1, 0xce, 0xca, 0xd7, 0x8a, 0x00, 0x58, 0x99, 0x67, 0x6b, 0x3d, 0x82, 0x6e, 0xf7, 0x87, 0xac, 0x09, 0xbf, 0x02, 0x8b, 0xf1, 0xc0, 0xf3,
0xe0, 0x35, 0x6e, 0xe6, 0x38, 0x63, 0xdf, 0xe9, 0x1f, 0x76, 0x7b, 0x4f, 0x70, 0x37, 0x68, 0xe6, 0xa4, 0x09, 0x75, 0x56, 0xbe, 0x56, 0x04, 0xc0, 0x02, 0xaf, 0x71, 0x33, 0xc7, 0x19, 0xfb, 0x4e,
0x19, 0xa8, 0x7f, 0x3c, 0x7c, 0xd2, 0x57, 0xa0, 0x02, 0x4b, 0xc1, 0x9b, 0xd3, 0x2c, 0xde, 0xff, 0xff, 0xb0, 0xdb, 0x7b, 0x82, 0xbb, 0x41, 0x33, 0xcf, 0x40, 0xfd, 0xe3, 0xe1, 0x93, 0xbe, 0x02,
0x31, 0x2c, 0xa7, 0x22, 0xd2, 0xb3, 0x5a, 0xf7, 0x8f, 0x87, 0x3b, 0xfd, 0x43, 0xbd, 0x9c, 0x1a, 0x15, 0x58, 0x0a, 0xde, 0x9c, 0x66, 0xf1, 0xfe, 0x8f, 0x60, 0x39, 0x15, 0xa2, 0x9e, 0xd5, 0xba,
0x94, 0x77, 0x0e, 0xda, 0xdd, 0x43, 0x34, 0x84, 0x34, 0xa0, 0x7a, 0xdc, 0x93, 0x9f, 0xf9, 0x78, 0x7f, 0x3c, 0xdc, 0xe9, 0x1f, 0xea, 0xe5, 0xd4, 0xa0, 0xbc, 0x73, 0xd0, 0xee, 0x1e, 0xa2, 0x21,
0x2c, 0xfd, 0x02, 0x63, 0x51, 0x7b, 0x5d, 0x73, 0x30, 0xb4, 0x06, 0xc3, 0xf6, 0x93, 0x4e, 0xb3, 0xa4, 0x01, 0xd5, 0xe3, 0x9e, 0xfc, 0xcc, 0xc7, 0x83, 0xeb, 0x17, 0x18, 0x8b, 0xda, 0xeb, 0x9a,
0xc8, 0xd2, 0x4a, 0x7e, 0x55, 0xba, 0xff, 0x39, 0x2c, 0xc6, 0x7d, 0xbd, 0xe3, 0xf6, 0xad, 0x4d, 0x83, 0xa1, 0x35, 0x18, 0xb6, 0x9f, 0x74, 0x9a, 0x45, 0x96, 0x56, 0xf2, 0xab, 0xd2, 0xfd, 0xcf,
0x58, 0xdf, 0xee, 0x0c, 0xbf, 0xec, 0x74, 0x7a, 0x38, 0xe4, 0x3b, 0x9d, 0xde, 0xd0, 0x6c, 0x1f, 0x61, 0x31, 0xee, 0xeb, 0x1d, 0xb7, 0x6f, 0x6d, 0xc2, 0xfa, 0x76, 0x67, 0xf8, 0x65, 0xa7, 0xd3,
0x74, 0x87, 0x5f, 0x35, 0x73, 0xf7, 0x1f, 0x43, 0x33, 0xe9, 0xa7, 0x10, 0x73, 0xec, 0x78, 0x91, 0xc3, 0x21, 0xdf, 0xe9, 0xf4, 0x86, 0x66, 0xfb, 0xa0, 0x3b, 0xfc, 0xaa, 0x99, 0xbb, 0xff, 0x18,
0x07, 0xc8, 0xfd, 0xff, 0x98, 0x83, 0xd5, 0x2c, 0xf3, 0x1b, 0x9b, 0x98, 0x82, 0x11, 0xb2, 0xed, 0x9a, 0x49, 0x3f, 0x85, 0x98, 0x63, 0xc7, 0x8b, 0x3c, 0x40, 0xee, 0xff, 0x87, 0x1c, 0xac, 0x66,
0x70, 0xd0, 0xef, 0x59, 0xbd, 0x3e, 0x06, 0x97, 0xde, 0x84, 0xf5, 0x04, 0x42, 0xb6, 0x22, 0x47, 0x99, 0xdf, 0xd8, 0xc4, 0x14, 0x8c, 0x90, 0x6d, 0x87, 0x83, 0x7e, 0xcf, 0xea, 0xf5, 0x31, 0xb8,
0x6e, 0xc1, 0x46, 0x2a, 0x91, 0x65, 0xf6, 0x8f, 0x71, 0x2c, 0x5b, 0xb0, 0x9a, 0x40, 0x76, 0x4c, 0xf4, 0x26, 0xac, 0x27, 0x10, 0xb2, 0x15, 0x39, 0x72, 0x0b, 0x36, 0x52, 0x89, 0x2c, 0xb3, 0x7f,
0xb3, 0x6f, 0x36, 0x0b, 0xe4, 0x3d, 0xb8, 0x97, 0xc0, 0xa4, 0x85, 0x00, 0x29, 0x23, 0x14, 0xc9, 0x8c, 0x63, 0xd9, 0x82, 0xd5, 0x04, 0xb2, 0x63, 0x9a, 0x7d, 0xb3, 0x59, 0x20, 0xef, 0xc1, 0xbd,
0x3b, 0xf0, 0x66, 0x8a, 0x3a, 0xda, 0x27, 0xad, 0xed, 0xf6, 0x01, 0x6b, 0x5e, 0xb3, 0x74, 0xff, 0x04, 0x26, 0x2d, 0x04, 0x48, 0x19, 0xa1, 0x48, 0xde, 0x81, 0x37, 0x53, 0xd4, 0xd1, 0x3e, 0x69,
0x0f, 0x8a, 0x00, 0xd1, 0x65, 0x4a, 0x56, 0xfe, 0x6e, 0x7b, 0xd8, 0x3e, 0xe8, 0xb3, 0x35, 0x63, 0x6d, 0xb7, 0x0f, 0x58, 0xf3, 0x9a, 0xa5, 0xfb, 0x7f, 0x58, 0x04, 0x88, 0x2e, 0x53, 0xb2, 0xf2,
0xf6, 0x87, 0x2c, 0x77, 0xb3, 0xf3, 0xc3, 0xe6, 0x8d, 0x4c, 0x4c, 0xff, 0x88, 0x35, 0x68, 0x03, 0x77, 0xdb, 0xc3, 0xf6, 0x41, 0x9f, 0xad, 0x19, 0xb3, 0x3f, 0x64, 0xb9, 0x9b, 0x9d, 0x1f, 0x34,
0x56, 0xf8, 0xfc, 0x3b, 0x60, 0xcd, 0x60, 0xd3, 0x05, 0xe3, 0x94, 0xa3, 0xa4, 0x71, 0x7c, 0xb4, 0x6f, 0x64, 0x62, 0xfa, 0x47, 0xac, 0x41, 0x1b, 0xb0, 0xc2, 0xe7, 0xdf, 0x01, 0x6b, 0x06, 0x9b,
0x67, 0xf6, 0x7b, 0x43, 0x6b, 0xb0, 0x7f, 0x3c, 0xdc, 0xc5, 0x28, 0xe7, 0x3b, 0x66, 0xf7, 0x88, 0x2e, 0x3c, 0x4e, 0x39, 0x93, 0x34, 0x8e, 0x8f, 0xf6, 0xcc, 0x7e, 0x6f, 0x68, 0x0d, 0xf6, 0x8f,
0xe7, 0x59, 0x7c, 0x11, 0x01, 0xcb, 0xba, 0xc4, 0x16, 0xf8, 0x93, 0xfe, 0x60, 0xd0, 0x3d, 0xb2, 0x87, 0xbb, 0x18, 0xf6, 0x7c, 0xc7, 0xec, 0x1e, 0xf1, 0x3c, 0x8b, 0x2f, 0x22, 0x60, 0x59, 0x97,
0x7e, 0x78, 0xdc, 0x31, 0xbb, 0x9d, 0x01, 0x26, 0x5c, 0xc8, 0x80, 0x33, 0xfa, 0x32, 0x9b, 0xb3, 0xd8, 0x02, 0x7f, 0xd2, 0x1f, 0x0c, 0xba, 0x47, 0xd6, 0x0f, 0x8e, 0x3b, 0x66, 0xb7, 0x33, 0xc0,
0xc3, 0x83, 0x2f, 0x84, 0x00, 0xc1, 0x48, 0x2b, 0x71, 0x10, 0xa3, 0xaa, 0xb2, 0xd1, 0x61, 0x3b, 0x84, 0x0b, 0x19, 0x70, 0x46, 0x5f, 0x66, 0x73, 0x76, 0x78, 0xf0, 0x85, 0x10, 0x20, 0x18, 0x69,
0x70, 0x46, 0xce, 0x70, 0x0d, 0x8e, 0xa5, 0xab, 0x31, 0xd9, 0x22, 0xb5, 0xf2, 0x31, 0x59, 0x3d, 0x25, 0x0e, 0x62, 0x54, 0x55, 0x36, 0x3a, 0x6c, 0x07, 0xce, 0xc8, 0x19, 0xae, 0xc1, 0xb1, 0x74,
0x1b, 0xc5, 0x52, 0xa1, 0xd8, 0xa1, 0x84, 0xb4, 0xdd, 0x5d, 0x13, 0x13, 0x2c, 0xa6, 0xa0, 0x8c, 0x35, 0x26, 0x5b, 0xa4, 0x56, 0x3e, 0x26, 0xab, 0x67, 0xa3, 0x58, 0x2a, 0x14, 0x3b, 0x94, 0x90,
0x76, 0x89, 0x4d, 0x42, 0xb6, 0x45, 0x33, 0x92, 0xa6, 0xfc, 0x60, 0x98, 0x65, 0xd6, 0xe2, 0x2f, 0xb6, 0xbb, 0x6b, 0x62, 0x82, 0xc5, 0x14, 0x94, 0xd1, 0x2e, 0xb1, 0x49, 0xc8, 0xb6, 0x68, 0x46,
0x8f, 0x0f, 0xb7, 0xfb, 0x72, 0xaf, 0xe7, 0xf5, 0x25, 0x19, 0x70, 0x46, 0xbf, 0x82, 0x61, 0xe4, 0xd2, 0x94, 0x1f, 0x0c, 0xb3, 0xcc, 0x5a, 0xfc, 0xe5, 0xf1, 0xe1, 0x76, 0x5f, 0xee, 0xf5, 0xbc,
0x39, 0x3b, 0x42, 0xc2, 0x55, 0x1d, 0xc0, 0x28, 0xd6, 0x18, 0x13, 0x94, 0x80, 0x1f, 0x75, 0xcc, 0xbe, 0x24, 0x03, 0xce, 0xe8, 0x57, 0x30, 0xae, 0x3c, 0x67, 0x47, 0x48, 0xb8, 0xaa, 0x03, 0x18,
0xbe, 0xc5, 0x84, 0x29, 0x14, 0x04, 0x19, 0xfd, 0xfa, 0xf5, 0x68, 0x96, 0x7a, 0xe3, 0xe1, 0xbf, 0xc5, 0x1a, 0x63, 0x82, 0x12, 0xf0, 0xc3, 0x8e, 0xd9, 0xb7, 0x98, 0x30, 0x85, 0x82, 0x20, 0xa3,
0x78, 0x03, 0xaa, 0xea, 0x92, 0x07, 0xf9, 0x01, 0x34, 0x62, 0x21, 0x14, 0x88, 0x34, 0x29, 0x64, 0x5f, 0xbf, 0x1e, 0xcd, 0x52, 0x6f, 0x3c, 0xfc, 0x17, 0x6f, 0x40, 0x55, 0x5d, 0xf2, 0x20, 0xdf,
0x45, 0x5c, 0xd8, 0x7c, 0x2d, 0x1b, 0x29, 0x0e, 0x4b, 0x87, 0x9a, 0x76, 0x82, 0x67, 0xf6, 0x5a, 0x87, 0x46, 0x2c, 0x84, 0x02, 0x91, 0x26, 0x85, 0xac, 0x88, 0x0b, 0x9b, 0xaf, 0x65, 0x23, 0xc5,
0x52, 0x63, 0x10, 0xcb, 0xed, 0xf6, 0x35, 0x58, 0x91, 0xdd, 0x53, 0x0c, 0xe1, 0xae, 0x3f, 0x4f, 0x61, 0xe9, 0x50, 0xd3, 0x4e, 0xf0, 0xcc, 0x5e, 0x4b, 0x6a, 0x0c, 0x62, 0xb9, 0xdd, 0xbe, 0x06,
0x4f, 0x6e, 0x47, 0xf1, 0xb4, 0x33, 0x9e, 0xad, 0xdf, 0xbc, 0x99, 0x7e, 0x48, 0x5e, 0xbe, 0x3c, 0x2b, 0xb2, 0x7b, 0x8a, 0x21, 0xdc, 0xf5, 0xf7, 0xea, 0xc9, 0xed, 0x28, 0x9e, 0x76, 0xc6, 0x3b,
0xbf, 0x0b, 0x35, 0xed, 0x61, 0x51, 0x72, 0xf3, 0xda, 0x47, 0x50, 0x37, 0x37, 0xb3, 0x50, 0xa2, 0xf6, 0x9b, 0x37, 0xd3, 0x2f, 0xcb, 0xcb, 0xa7, 0xe8, 0x77, 0xa1, 0xa6, 0xbd, 0x34, 0x4a, 0x6e,
0x4a, 0xdf, 0x85, 0xaa, 0x7a, 0xd0, 0x91, 0x6c, 0x68, 0x0f, 0x84, 0xea, 0x0f, 0x5c, 0x6e, 0xb6, 0x5e, 0xfb, 0x2a, 0xea, 0xe6, 0x66, 0x16, 0x4a, 0x54, 0xe9, 0xbb, 0x50, 0x55, 0x2f, 0x3c, 0x92,
0xd2, 0x08, 0x91, 0x7e, 0x17, 0x6a, 0xda, 0xbb, 0x8c, 0xaa, 0x16, 0xe9, 0xb7, 0x1f, 0x55, 0x2d, 0x0d, 0xed, 0xc5, 0x50, 0xfd, 0xc5, 0xcb, 0xcd, 0x56, 0x1a, 0x21, 0xd2, 0xef, 0x42, 0x4d, 0x7b,
0xb2, 0x9e, 0x71, 0x3c, 0x80, 0x35, 0xa1, 0x03, 0x39, 0xa1, 0x5f, 0xa7, 0x7b, 0x32, 0xde, 0xd9, 0xa8, 0x51, 0xd5, 0x22, 0xfd, 0x18, 0xa4, 0xaa, 0x45, 0xd6, 0xbb, 0x8e, 0x07, 0xb0, 0x26, 0x74,
0x7f, 0x90, 0x23, 0x8f, 0xa1, 0x22, 0xdf, 0xf2, 0x24, 0xeb, 0xd9, 0x6f, 0x9e, 0x6e, 0x6e, 0xa4, 0x20, 0x27, 0xf4, 0xeb, 0x74, 0x4f, 0xc6, 0xc3, 0xfb, 0x0f, 0x72, 0xe4, 0x31, 0x54, 0xe4, 0xe3,
0xe0, 0xa2, 0x2a, 0x6d, 0x80, 0xe8, 0xc5, 0x47, 0x22, 0x1b, 0x9e, 0x7a, 0x41, 0x52, 0x8d, 0x4c, 0x9e, 0x64, 0x3d, 0xfb, 0x11, 0xd4, 0xcd, 0x8d, 0x14, 0x5c, 0x54, 0xa5, 0x0d, 0x10, 0x3d, 0x01,
0xc6, 0xf3, 0x90, 0xbb, 0x50, 0xd3, 0x1e, 0x77, 0x54, 0x7d, 0x92, 0x7e, 0x18, 0x52, 0xf5, 0x49, 0x49, 0x64, 0xc3, 0x53, 0x4f, 0x4a, 0xaa, 0x91, 0xc9, 0x78, 0x2f, 0x72, 0x17, 0x6a, 0xda, 0x6b,
0xd6, 0x5b, 0x90, 0x3f, 0x80, 0x46, 0xec, 0x95, 0x46, 0x35, 0x8f, 0xb3, 0xde, 0x80, 0x54, 0xf3, 0x8f, 0xaa, 0x4f, 0xd2, 0x2f, 0x45, 0xaa, 0x3e, 0xc9, 0x7a, 0x1c, 0xf2, 0xfb, 0xd0, 0x88, 0x3d,
0x38, 0xfb, 0x61, 0xc7, 0x5d, 0xa8, 0x69, 0x2f, 0x27, 0xaa, 0x1a, 0xa5, 0x9f, 0x6f, 0x54, 0x35, 0xdb, 0xa8, 0xe6, 0x71, 0xd6, 0xa3, 0x90, 0x6a, 0x1e, 0x67, 0xbf, 0xf4, 0xb8, 0x0b, 0x35, 0xed,
0xca, 0x78, 0x68, 0x91, 0xad, 0x86, 0xf8, 0xb3, 0x89, 0x6a, 0x35, 0x64, 0xbe, 0xbf, 0xa8, 0x56, 0x29, 0x45, 0x55, 0xa3, 0xf4, 0x7b, 0x8e, 0xaa, 0x46, 0x19, 0x2f, 0x2f, 0xb2, 0xd5, 0x10, 0x7f,
0x43, 0xf6, 0x5b, 0x8b, 0x6c, 0xea, 0xa9, 0xb7, 0x1b, 0xc8, 0x46, 0x4c, 0xf5, 0x10, 0x3d, 0x02, 0x47, 0x51, 0xad, 0x86, 0xcc, 0x07, 0x19, 0xd5, 0x6a, 0xc8, 0x7e, 0x7c, 0x91, 0x4d, 0x3d, 0xf5,
0xa1, 0xa6, 0x5e, 0xfa, 0x99, 0x87, 0x27, 0xb0, 0xa2, 0x26, 0x8d, 0x7a, 0x79, 0x21, 0x50, 0x75, 0x76, 0x03, 0xd9, 0x88, 0xa9, 0x1e, 0xa2, 0x47, 0x20, 0xd4, 0xd4, 0x4b, 0x3f, 0xf3, 0xf0, 0x04,
0xca, 0x7c, 0xdf, 0x61, 0xb3, 0x99, 0xc4, 0x3e, 0xc8, 0x91, 0xcf, 0xa0, 0x2c, 0xc2, 0xd9, 0x93, 0x56, 0xd4, 0xa4, 0x51, 0x2f, 0x2f, 0x04, 0xaa, 0x4e, 0x99, 0xef, 0x3b, 0x6c, 0x36, 0x93, 0xd8,
0xb5, 0x64, 0x78, 0x7b, 0x5e, 0x89, 0xf5, 0xec, 0xa8, 0xf7, 0xe4, 0x08, 0x17, 0xb4, 0x1e, 0x6f, 0x07, 0x39, 0xf2, 0x19, 0x94, 0x45, 0x38, 0x7b, 0xb2, 0x96, 0x0c, 0x6f, 0xcf, 0x2b, 0xb1, 0x9e,
0x5e, 0x9f, 0xb1, 0x19, 0x21, 0xea, 0x37, 0x5f, 0xbf, 0x0e, 0x1d, 0xe5, 0x98, 0x7c, 0x23, 0xe1, 0x1d, 0xf5, 0x9e, 0x1c, 0xe1, 0x82, 0xd6, 0xe3, 0xcd, 0xeb, 0x33, 0x36, 0x23, 0x44, 0xfd, 0xe6,
0xf6, 0x75, 0xa1, 0x8d, 0xe2, 0x39, 0x5e, 0x17, 0x83, 0xf1, 0x09, 0xd4, 0xf5, 0x27, 0xb3, 0x88, 0xeb, 0xd7, 0xa1, 0xa3, 0x1c, 0x93, 0x6f, 0x24, 0xdc, 0xbe, 0x2e, 0xb4, 0x51, 0x3c, 0xc7, 0xeb,
0xbe, 0x0e, 0x93, 0x79, 0xdd, 0xca, 0xc4, 0x89, 0x8c, 0xbe, 0x80, 0x75, 0xd5, 0xdf, 0x7a, 0x9c, 0x62, 0x30, 0x3e, 0x81, 0xba, 0xfe, 0x86, 0x16, 0xd1, 0xd7, 0x61, 0x32, 0xaf, 0x5b, 0x99, 0x38,
0x9d, 0x80, 0xdc, 0xc9, 0x88, 0xbe, 0x13, 0xeb, 0xf5, 0x9b, 0xd7, 0x86, 0xe7, 0x79, 0x90, 0x43, 0x91, 0xd1, 0x17, 0xb0, 0xae, 0xfa, 0x5b, 0x8f, 0xb3, 0x13, 0x90, 0x3b, 0x19, 0xd1, 0x77, 0x62,
0x26, 0x1b, 0x7b, 0xe5, 0x26, 0x62, 0xb2, 0x59, 0x8f, 0xfb, 0x44, 0x4c, 0x36, 0xfb, 0x69, 0x9c, 0xbd, 0x7e, 0xf3, 0xda, 0xf0, 0x3c, 0x0f, 0x72, 0xc8, 0x64, 0x63, 0xcf, 0xde, 0x44, 0x4c, 0x36,
0x36, 0x2c, 0x69, 0x71, 0x82, 0x06, 0x57, 0xee, 0x48, 0xcd, 0xf7, 0x74, 0x20, 0xf0, 0xcd, 0x2c, 0xeb, 0xb5, 0x9f, 0x88, 0xc9, 0x66, 0xbf, 0x95, 0xd3, 0x86, 0x25, 0x2d, 0x4e, 0xd0, 0xe0, 0xca,
0x4d, 0x3c, 0xd9, 0x81, 0x9a, 0x1e, 0x6a, 0xe8, 0x05, 0xc9, 0x37, 0x34, 0x94, 0x1e, 0xc7, 0xf9, 0x1d, 0xa9, 0xf9, 0x9e, 0x0e, 0x04, 0xbe, 0x99, 0xa5, 0x89, 0x27, 0x3b, 0x50, 0xd3, 0x43, 0x0d,
0x41, 0x8e, 0x1c, 0x40, 0x33, 0x19, 0x18, 0x54, 0x2d, 0xe1, 0xac, 0x60, 0xaa, 0x9b, 0x09, 0x64, 0xbd, 0x20, 0xf9, 0x86, 0x86, 0xd2, 0xe3, 0x38, 0x3f, 0xc8, 0x91, 0x03, 0x68, 0x26, 0x03, 0x83,
0x2c, 0x9c, 0x28, 0x9b, 0x17, 0xb1, 0xe7, 0xdc, 0x3d, 0x3f, 0xb9, 0x15, 0xc5, 0x9f, 0x79, 0x57, 0xaa, 0x25, 0x9c, 0x15, 0x4c, 0x75, 0x33, 0x81, 0x8c, 0x85, 0x13, 0x65, 0xf3, 0x22, 0xf6, 0xbe,
0xb9, 0x65, 0xbd, 0xf0, 0x7f, 0x2f, 0xf7, 0x20, 0x47, 0xf6, 0xa0, 0x1e, 0x8b, 0x8b, 0x17, 0xbb, 0xbb, 0xe7, 0x27, 0xb7, 0xa2, 0xf8, 0xbb, 0xef, 0x2a, 0xb7, 0xac, 0x27, 0xff, 0xef, 0xe5, 0x1e,
0x6f, 0x94, 0x68, 0x66, 0x4b, 0xc7, 0x25, 0xda, 0x79, 0x08, 0x8b, 0x71, 0x97, 0x11, 0x55, 0xb1, 0xe4, 0xc8, 0x1e, 0xd4, 0x63, 0x71, 0xf1, 0x62, 0xf7, 0x8d, 0x12, 0xcd, 0x6c, 0xe9, 0xb8, 0x44,
0x4c, 0xbf, 0x16, 0x35, 0x7c, 0xd9, 0x7e, 0x26, 0xe4, 0x7b, 0x50, 0x63, 0x3c, 0x59, 0x7a, 0x1e, 0x3b, 0x0f, 0x61, 0x31, 0xee, 0x32, 0xa2, 0x2a, 0x96, 0xe9, 0xd7, 0xa2, 0x86, 0x2f, 0xdb, 0xcf,
0x12, 0x8d, 0x4f, 0x27, 0xc7, 0x8c, 0xc3, 0x84, 0x6a, 0xbc, 0xf0, 0xd7, 0xf2, 0x39, 0x6c, 0xd7, 0x84, 0xfc, 0x3c, 0xd4, 0x18, 0x4f, 0x96, 0x9e, 0x87, 0x44, 0xe3, 0xd3, 0xc9, 0x31, 0xe3, 0x30,
0x77, 0xf8, 0x73, 0xd8, 0xd2, 0xf9, 0x8c, 0x8d, 0xff, 0xab, 0x66, 0x42, 0xf6, 0x78, 0xe1, 0x43, 0xa1, 0x1a, 0x2f, 0xfc, 0xb5, 0x7c, 0x0e, 0xdb, 0xf5, 0x1d, 0xfe, 0x3e, 0xb6, 0x74, 0x3e, 0x63,
0x8f, 0x87, 0x11, 0xb8, 0xa9, 0xd1, 0x08, 0xd8, 0xab, 0xd5, 0xa1, 0xcd, 0xeb, 0x20, 0xd2, 0xc4, 0xe3, 0xff, 0xaa, 0x99, 0x90, 0x3d, 0x5e, 0xf8, 0xd0, 0xe3, 0x61, 0x04, 0x6e, 0x6a, 0x34, 0x02,
0xe6, 0xe0, 0x2b, 0xe6, 0x45, 0x3e, 0x05, 0x88, 0x9c, 0x7e, 0x49, 0xc2, 0xaf, 0x54, 0x2d, 0xa8, 0xf6, 0x6a, 0x75, 0x68, 0xf3, 0x3a, 0x88, 0x34, 0xb1, 0x39, 0xf8, 0x8a, 0x79, 0x91, 0x4f, 0x01,
0x0c, 0xbf, 0xe0, 0x0e, 0x5f, 0xef, 0xca, 0xb1, 0x55, 0xdf, 0x92, 0xe3, 0x3e, 0xb6, 0xb1, 0x2d, 0x22, 0xa7, 0x5f, 0x92, 0xf0, 0x2b, 0x55, 0x0b, 0x2a, 0xc3, 0x2f, 0xb8, 0xc3, 0xd7, 0xbb, 0x72,
0x39, 0x99, 0xcd, 0x47, 0xd0, 0x38, 0xf0, 0xbc, 0x67, 0xf3, 0x99, 0xba, 0x5d, 0x12, 0x77, 0xab, 0x6c, 0xd5, 0xb7, 0xe4, 0xb8, 0x8f, 0x6d, 0x6c, 0x4b, 0x4e, 0x66, 0xf3, 0x11, 0x34, 0x0e, 0x3c,
0xda, 0xb7, 0x83, 0xf3, 0xcd, 0x44, 0xb5, 0x48, 0x1b, 0x96, 0x15, 0x8b, 0x88, 0x3c, 0x6b, 0xe3, 0xef, 0xd9, 0x7c, 0xa6, 0x6e, 0x97, 0xc4, 0xdd, 0xaa, 0xf6, 0xed, 0xe0, 0x7c, 0x33, 0x51, 0x2d,
0x44, 0x31, 0xc6, 0x90, 0xc8, 0xe0, 0x41, 0x8e, 0x3c, 0x84, 0xfa, 0x2e, 0x1d, 0x61, 0xa8, 0x13, 0xd2, 0x86, 0x65, 0xc5, 0x22, 0x22, 0xcf, 0xda, 0x38, 0x51, 0x8c, 0x31, 0x24, 0x32, 0x78, 0x90,
0x74, 0xe2, 0x59, 0x89, 0x39, 0x84, 0x70, 0xef, 0x9f, 0xcd, 0x46, 0x0c, 0x28, 0x59, 0x5c, 0xe4, 0x23, 0x0f, 0xa1, 0xbe, 0x4b, 0x47, 0x18, 0xea, 0x04, 0x9d, 0x78, 0x56, 0x62, 0x0e, 0x21, 0xdc,
0x48, 0xa6, 0xef, 0x19, 0x71, 0x6f, 0xac, 0x18, 0x8b, 0x4b, 0x39, 0x93, 0x7d, 0x01, 0xcb, 0x29, 0xfb, 0x67, 0xb3, 0x11, 0x03, 0x4a, 0x16, 0x17, 0x39, 0x92, 0xe9, 0x7b, 0x46, 0xdc, 0x1b, 0x2b,
0x57, 0x2d, 0xc5, 0xdd, 0xae, 0x73, 0xf0, 0xda, 0xbc, 0x7b, 0x3d, 0x81, 0xc8, 0xf7, 0xfb, 0xd0, 0xc6, 0xe2, 0x52, 0xce, 0x64, 0x5f, 0xc0, 0x72, 0xca, 0x55, 0x4b, 0x71, 0xb7, 0xeb, 0x1c, 0xbc,
0xe0, 0x61, 0xbd, 0x4f, 0x28, 0xbf, 0xaa, 0x9c, 0x08, 0xda, 0xa6, 0xdf, 0x83, 0x4e, 0xb2, 0x24, 0x36, 0xef, 0x5e, 0x4f, 0x20, 0xf2, 0xfd, 0x1e, 0x34, 0x78, 0x58, 0xef, 0x13, 0xca, 0xaf, 0x2a,
0x9e, 0xe0, 0x09, 0x3e, 0x08, 0xa4, 0x5d, 0x04, 0x56, 0xe3, 0x9a, 0xbe, 0x9c, 0xac, 0xc6, 0x35, 0x27, 0x82, 0xb6, 0xe9, 0xf7, 0xa0, 0x93, 0x2c, 0x89, 0x27, 0x78, 0x82, 0x0f, 0x02, 0x69, 0x17,
0xeb, 0xce, 0xf1, 0xe7, 0x50, 0x7b, 0x42, 0x43, 0x79, 0xb5, 0x56, 0xc9, 0x47, 0x89, 0xbb, 0xb6, 0x81, 0xd5, 0xb8, 0xa6, 0x2f, 0x27, 0xab, 0x71, 0xcd, 0xba, 0x73, 0xfc, 0x39, 0xd4, 0x9e, 0xd0,
0x9b, 0x19, 0x17, 0xa2, 0xc9, 0x27, 0x98, 0x54, 0x85, 0x89, 0x58, 0xd7, 0x4a, 0xd1, 0x93, 0x2e, 0x50, 0x5e, 0xad, 0x55, 0xf2, 0x51, 0xe2, 0xae, 0xed, 0x66, 0xc6, 0x85, 0x68, 0xf2, 0x09, 0x26,
0x25, 0xe0, 0x4c, 0xfa, 0xd0, 0x82, 0xc5, 0xa8, 0x8a, 0xa7, 0x83, 0x03, 0xa9, 0x8a, 0x67, 0xc5, 0x55, 0x61, 0x22, 0xd6, 0xb5, 0x52, 0xf4, 0xa4, 0x4b, 0x09, 0x38, 0x93, 0x3e, 0xb4, 0x60, 0x31,
0x96, 0xf9, 0x1e, 0xef, 0x01, 0xed, 0x32, 0x6f, 0x24, 0x82, 0x25, 0xef, 0xfd, 0xaa, 0xea, 0xeb, 0xaa, 0xe2, 0xe9, 0xe0, 0x40, 0xaa, 0xe2, 0x59, 0xb1, 0x65, 0x7e, 0x9e, 0xf7, 0x80, 0x76, 0x99,
0xe4, 0x8f, 0x00, 0x06, 0xa1, 0x37, 0xdb, 0xb5, 0xe9, 0xd4, 0x73, 0x23, 0x9e, 0x10, 0x5d, 0x23, 0x37, 0x12, 0xc1, 0x92, 0xf7, 0x7e, 0x55, 0xf5, 0x75, 0xf2, 0x47, 0x00, 0x83, 0xd0, 0x9b, 0xed,
0x8d, 0x16, 0xa2, 0x76, 0x97, 0x94, 0x7c, 0xa9, 0xc9, 0xa6, 0xb1, 0x21, 0x91, 0xc3, 0x7e, 0xed, 0xda, 0x74, 0xea, 0xb9, 0x11, 0x4f, 0x88, 0xae, 0x91, 0x46, 0x0b, 0x51, 0xbb, 0x4b, 0x4a, 0xbe,
0x4d, 0x53, 0xd5, 0x9c, 0x8c, 0xdb, 0xa6, 0xc8, 0x24, 0x20, 0xf2, 0x84, 0x53, 0x92, 0x66, 0xca, 0xd4, 0x64, 0xd3, 0xd8, 0x90, 0xc8, 0x61, 0xbf, 0xf6, 0xa6, 0xa9, 0x6a, 0x4e, 0xc6, 0x6d, 0x53,
0xc9, 0x4e, 0xad, 0xf5, 0x0c, 0xb7, 0xb9, 0xef, 0x42, 0x35, 0x72, 0x21, 0xda, 0x88, 0x22, 0x57, 0x64, 0x12, 0x10, 0x79, 0xc2, 0x29, 0x49, 0x33, 0xe5, 0x64, 0xa7, 0xd6, 0x7a, 0x86, 0xdb, 0xdc,
0xc5, 0x1c, 0x8e, 0x14, 0xf7, 0x4e, 0xbb, 0xef, 0xf4, 0x60, 0x85, 0x57, 0x47, 0x6d, 0x7f, 0x78, 0x77, 0xa1, 0x1a, 0xb9, 0x10, 0x6d, 0x44, 0x91, 0xab, 0x62, 0x0e, 0x47, 0x8a, 0x7b, 0xa7, 0xdd,
0xbd, 0x50, 0xbd, 0x67, 0x95, 0xf6, 0x9b, 0x51, 0xeb, 0x27, 0xcb, 0xfb, 0x83, 0xad, 0x9f, 0x94, 0x77, 0x7a, 0xb0, 0xc2, 0xab, 0xa3, 0xb6, 0x3f, 0xbc, 0x5e, 0xa8, 0xde, 0xb3, 0x4a, 0xfb, 0xcd,
0x17, 0x81, 0x5a, 0x3f, 0xd7, 0xb9, 0x85, 0xa8, 0xf5, 0x73, 0xbd, 0x03, 0x42, 0x0f, 0x56, 0x32, 0xa8, 0xf5, 0x93, 0xe5, 0xfd, 0xc1, 0xd6, 0x4f, 0xca, 0x8b, 0x40, 0xad, 0x9f, 0xeb, 0xdc, 0x42,
0xfc, 0x01, 0xc8, 0x1b, 0xf2, 0x60, 0x73, 0xad, 0xaf, 0xc0, 0x66, 0xa6, 0xdd, 0x98, 0x0c, 0x61, 0xd4, 0xfa, 0xb9, 0xde, 0x01, 0xa1, 0x07, 0x2b, 0x19, 0xfe, 0x00, 0xe4, 0x0d, 0x79, 0xb0, 0xb9,
0x83, 0xa7, 0x69, 0x4f, 0x26, 0x09, 0xf3, 0xf3, 0xeb, 0x5a, 0x82, 0x0c, 0x93, 0x7a, 0x4c, 0x94, 0xd6, 0x57, 0x60, 0x33, 0xd3, 0x6e, 0x4c, 0x86, 0xb0, 0xc1, 0xd3, 0xb4, 0x27, 0x93, 0x84, 0xf9,
0x49, 0x98, 0xd5, 0x7b, 0xd0, 0x4c, 0x5a, 0x6e, 0xc9, 0xf5, 0xe4, 0x9b, 0x77, 0x62, 0x22, 0x7b, 0xf9, 0x75, 0x2d, 0x41, 0x86, 0x49, 0x3d, 0x26, 0xca, 0x24, 0xcc, 0xea, 0x3d, 0x68, 0x26, 0x2d,
0xda, 0xda, 0x4b, 0xbe, 0x50, 0xf6, 0xe3, 0x44, 0x1d, 0xef, 0x44, 0xcf, 0x30, 0x66, 0x5a, 0xbb, 0xb7, 0xe4, 0x7a, 0xf2, 0xcd, 0x3b, 0x31, 0x91, 0x3d, 0x6d, 0xed, 0x25, 0x5f, 0x28, 0xfb, 0x71,
0xd5, 0x69, 0x20, 0xd3, 0xfc, 0x4c, 0x7e, 0x1e, 0x36, 0x92, 0x33, 0x5a, 0xe6, 0x7c, 0x37, 0xab, 0xa2, 0x8e, 0x77, 0xa2, 0x77, 0x19, 0x33, 0xad, 0xdd, 0xea, 0x34, 0x90, 0x69, 0x7e, 0x26, 0xbf,
0xbb, 0xae, 0x15, 0xe5, 0xe2, 0x0d, 0x7a, 0x90, 0x63, 0x8c, 0x58, 0xb7, 0xf2, 0xaa, 0x89, 0x94, 0x00, 0x1b, 0xc9, 0x19, 0x2d, 0x73, 0xbe, 0x9b, 0xd5, 0x5d, 0xd7, 0x8a, 0x72, 0xf1, 0x06, 0x3d,
0x61, 0x6e, 0x56, 0x13, 0x29, 0xd3, 0x2c, 0x7c, 0x04, 0x4b, 0x09, 0x03, 0xaf, 0x12, 0x83, 0xb3, 0xc8, 0x31, 0x46, 0xac, 0x5b, 0x79, 0xd5, 0x44, 0xca, 0x30, 0x37, 0xab, 0x89, 0x94, 0x69, 0x16,
0x4d, 0xc2, 0x4a, 0x0c, 0xbe, 0xce, 0x2e, 0x3c, 0x80, 0x66, 0xd2, 0x74, 0xab, 0xc6, 0xfa, 0x1a, 0x3e, 0x82, 0xa5, 0x84, 0x81, 0x57, 0x89, 0xc1, 0xd9, 0x26, 0x61, 0x25, 0x06, 0x5f, 0x67, 0x17,
0x73, 0xf0, 0xe6, 0x9d, 0x6b, 0xf1, 0xf1, 0x6a, 0x6a, 0x46, 0xce, 0x58, 0x35, 0xd3, 0xa6, 0xd9, 0x1e, 0x40, 0x33, 0x69, 0xba, 0x55, 0x63, 0x7d, 0x8d, 0x39, 0x78, 0xf3, 0xce, 0xb5, 0xf8, 0x78,
0x58, 0x35, 0x33, 0x4c, 0xac, 0xdb, 0xef, 0xfc, 0xe8, 0x5b, 0x67, 0x4e, 0x78, 0x3e, 0x3f, 0xd9, 0x35, 0x35, 0x23, 0x67, 0xac, 0x9a, 0x69, 0xd3, 0x6c, 0xac, 0x9a, 0x19, 0x26, 0xd6, 0xed, 0x77,
0x1a, 0x79, 0xd3, 0x0f, 0x26, 0x52, 0xab, 0x21, 0xee, 0xfe, 0x7f, 0x30, 0x71, 0xc7, 0x1f, 0x60, 0x7e, 0xf8, 0xad, 0x33, 0x27, 0x3c, 0x9f, 0x9f, 0x6c, 0x8d, 0xbc, 0xe9, 0x07, 0x13, 0xa9, 0xd5,
0x06, 0x27, 0x0b, 0x33, 0xdf, 0x0b, 0xbd, 0x8f, 0xfe, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6a, 0x10, 0x77, 0xff, 0x3f, 0x98, 0xb8, 0xe3, 0x0f, 0x30, 0x83, 0x93, 0x85, 0x99, 0xef, 0x85, 0xde,
0x5a, 0x38, 0x51, 0x37, 0x91, 0x00, 0x00, 0x47, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x6d, 0x2d, 0xa4, 0x48, 0x91, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

@ -1487,6 +1487,11 @@ message Peer {
Denotes that we are not receiving new graph updates from the peer. Denotes that we are not receiving new graph updates from the peer.
*/ */
PASSIVE_SYNC = 2; PASSIVE_SYNC = 2;
/*
Denotes that this peer is pinned into an active sync.
*/
PINNED_SYNC = 3;
} }
// The type of sync we are currently performing with this peer. // The type of sync we are currently performing with this peer.

@ -2269,10 +2269,11 @@
"enum": [ "enum": [
"UNKNOWN_SYNC", "UNKNOWN_SYNC",
"ACTIVE_SYNC", "ACTIVE_SYNC",
"PASSIVE_SYNC" "PASSIVE_SYNC",
"PINNED_SYNC"
], ],
"default": "UNKNOWN_SYNC", "default": "UNKNOWN_SYNC",
"description": " - UNKNOWN_SYNC: Denotes that we cannot determine the peer's current sync type.\n - ACTIVE_SYNC: Denotes that we are actively receiving new graph updates from the peer.\n - PASSIVE_SYNC: Denotes that we are not receiving new graph updates from the peer." "description": " - UNKNOWN_SYNC: Denotes that we cannot determine the peer's current sync type.\n - ACTIVE_SYNC: Denotes that we are actively receiving new graph updates from the peer.\n - PASSIVE_SYNC: Denotes that we are not receiving new graph updates from the peer.\n - PINNED_SYNC: Denotes that this peer is pinned into an active sync."
}, },
"PendingChannelsResponseClosedChannel": { "PendingChannelsResponseClosedChannel": {
"type": "object", "type": "object",

@ -10330,21 +10330,119 @@ func subscribeGraphNotifications(t *harnessTest, ctxb context.Context,
} }
} }
func assertSyncType(t *harnessTest, node *lntest.HarnessNode,
peer string, syncType lnrpc.Peer_SyncType) {
t.t.Helper()
ctxb := context.Background()
ctxt, _ := context.WithTimeout(ctxb, defaultTimeout)
resp, err := node.ListPeers(ctxt, &lnrpc.ListPeersRequest{})
require.NoError(t.t, err)
for _, rpcPeer := range resp.Peers {
if rpcPeer.PubKey != peer {
continue
}
require.Equal(t.t, syncType, rpcPeer.SyncType)
return
}
t.t.Fatalf("unable to find peer: %s", peer)
}
func waitForGraphSync(t *harnessTest, node *lntest.HarnessNode) {
t.t.Helper()
err := wait.Predicate(func() bool {
ctxb := context.Background()
ctxt, _ := context.WithTimeout(ctxb, defaultTimeout)
resp, err := node.GetInfo(ctxt, &lnrpc.GetInfoRequest{})
require.NoError(t.t, err)
return resp.SyncedToGraph
}, defaultTimeout)
require.NoError(t.t, err)
}
func testGraphTopologyNotifications(net *lntest.NetworkHarness, t *harnessTest) { func testGraphTopologyNotifications(net *lntest.NetworkHarness, t *harnessTest) {
t.t.Run("pinned", func(t *testing.T) {
ht := newHarnessTest(t, net)
testGraphTopologyNtfns(net, ht, true)
})
t.t.Run("unpinned", func(t *testing.T) {
ht := newHarnessTest(t, net)
testGraphTopologyNtfns(net, ht, false)
})
}
func testGraphTopologyNtfns(net *lntest.NetworkHarness, t *harnessTest, pinned bool) {
ctxb := context.Background() ctxb := context.Background()
const chanAmt = funding.MaxBtcFundingAmount const chanAmt = funding.MaxBtcFundingAmount
// Spin up Bob first, since we will need to grab his pubkey when
// starting Alice to test pinned syncing.
bob, err := net.NewNode("bob", nil)
require.NoError(t.t, err)
defer shutdownAndAssert(net, t, bob)
ctxt, _ := context.WithTimeout(ctxb, defaultTimeout)
bobInfo, err := bob.GetInfo(ctxt, &lnrpc.GetInfoRequest{})
require.NoError(t.t, err)
bobPubkey := bobInfo.IdentityPubkey
// For unpinned syncing, start Alice as usual. Otherwise grab Bob's
// pubkey to include in his pinned syncer set.
var aliceArgs []string
if pinned {
aliceArgs = []string{
"--numgraphsyncpeers=1",
fmt.Sprintf("--gossip.pinned-syncers=%s", bobPubkey),
}
}
alice, err := net.NewNode("alice", aliceArgs)
require.NoError(t.t, err)
defer shutdownAndAssert(net, t, alice)
// Connect Alice and Bob.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
err = net.EnsureConnected(ctxt, alice, bob)
require.NoError(t.t, err)
// Alice stimmy.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
err = net.SendCoins(ctxt, btcutil.SatoshiPerBitcoin, alice)
require.NoError(t.t, err)
// Bob stimmy.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
err = net.SendCoins(ctxt, btcutil.SatoshiPerBitcoin, bob)
require.NoError(t.t, err)
// Assert that Bob has the correct sync type before proceeeding.
if pinned {
assertSyncType(t, alice, bobPubkey, lnrpc.Peer_PINNED_SYNC)
} else {
assertSyncType(t, alice, bobPubkey, lnrpc.Peer_ACTIVE_SYNC)
}
// Regardless of syncer type, ensure that both peers report having
// completed their initial sync before continuing to make a channel.
waitForGraphSync(t, alice)
// Let Alice subscribe to graph notifications. // Let Alice subscribe to graph notifications.
graphSub := subscribeGraphNotifications( graphSub := subscribeGraphNotifications(
t, ctxb, net.Alice, t, ctxb, alice,
) )
defer close(graphSub.quit) defer close(graphSub.quit)
// Open a new channel between Alice and Bob. // Open a new channel between Alice and Bob.
ctxt, _ := context.WithTimeout(ctxb, channelOpenTimeout) ctxt, _ = context.WithTimeout(ctxb, channelOpenTimeout)
chanPoint := openChannelAndAssert( chanPoint := openChannelAndAssert(
ctxt, t, net, net.Alice, net.Bob, ctxt, t, net, alice, bob,
lntest.OpenChannelParams{ lntest.OpenChannelParams{
Amt: chanAmt, Amt: chanAmt,
}, },
@ -10364,15 +10462,15 @@ func testGraphTopologyNotifications(net *lntest.NetworkHarness, t *harnessTest)
// message. // message.
for _, chanUpdate := range graphUpdate.ChannelUpdates { for _, chanUpdate := range graphUpdate.ChannelUpdates {
switch chanUpdate.AdvertisingNode { switch chanUpdate.AdvertisingNode {
case net.Alice.PubKeyStr: case alice.PubKeyStr:
case net.Bob.PubKeyStr: case bob.PubKeyStr:
default: default:
t.Fatalf("unknown advertising node: %v", t.Fatalf("unknown advertising node: %v",
chanUpdate.AdvertisingNode) chanUpdate.AdvertisingNode)
} }
switch chanUpdate.ConnectingNode { switch chanUpdate.ConnectingNode {
case net.Alice.PubKeyStr: case alice.PubKeyStr:
case net.Bob.PubKeyStr: case bob.PubKeyStr:
default: default:
t.Fatalf("unknown connecting node: %v", t.Fatalf("unknown connecting node: %v",
chanUpdate.ConnectingNode) chanUpdate.ConnectingNode)
@ -10388,8 +10486,8 @@ func testGraphTopologyNotifications(net *lntest.NetworkHarness, t *harnessTest)
for _, nodeUpdate := range graphUpdate.NodeUpdates { for _, nodeUpdate := range graphUpdate.NodeUpdates {
switch nodeUpdate.IdentityKey { switch nodeUpdate.IdentityKey {
case net.Alice.PubKeyStr: case alice.PubKeyStr:
case net.Bob.PubKeyStr: case bob.PubKeyStr:
default: default:
t.Fatalf("unknown node: %v", t.Fatalf("unknown node: %v",
nodeUpdate.IdentityKey) nodeUpdate.IdentityKey)
@ -10413,7 +10511,7 @@ func testGraphTopologyNotifications(net *lntest.NetworkHarness, t *harnessTest)
// Now we'll test that updates are properly sent after channels are closed // Now we'll test that updates are properly sent after channels are closed
// within the network. // within the network.
ctxt, _ = context.WithTimeout(ctxb, channelCloseTimeout) ctxt, _ = context.WithTimeout(ctxb, channelCloseTimeout)
closeChannelAndAssert(ctxt, t, net, net.Alice, chanPoint, false) closeChannelAndAssert(ctxt, t, net, alice, chanPoint, false)
// Now that the channel has been closed, we should receive a // Now that the channel has been closed, we should receive a
// notification indicating so. // notification indicating so.
@ -10468,7 +10566,7 @@ out:
// we disconnect Alice and Bob, open a channel between Bob and Carol, // we disconnect Alice and Bob, open a channel between Bob and Carol,
// and finally connect Alice to Bob again. // and finally connect Alice to Bob again.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
if err := net.DisconnectNodes(ctxt, net.Alice, net.Bob); err != nil { if err := net.DisconnectNodes(ctxt, alice, bob); err != nil {
t.Fatalf("unable to disconnect alice and bob: %v", err) t.Fatalf("unable to disconnect alice and bob: %v", err)
} }
carol, err := net.NewNode("Carol", nil) carol, err := net.NewNode("Carol", nil)
@ -10478,12 +10576,12 @@ out:
defer shutdownAndAssert(net, t, carol) defer shutdownAndAssert(net, t, carol)
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
if err := net.ConnectNodes(ctxt, net.Bob, carol); err != nil { if err := net.ConnectNodes(ctxt, bob, carol); err != nil {
t.Fatalf("unable to connect bob to carol: %v", err) t.Fatalf("unable to connect bob to carol: %v", err)
} }
ctxt, _ = context.WithTimeout(ctxb, channelOpenTimeout) ctxt, _ = context.WithTimeout(ctxb, channelOpenTimeout)
chanPoint = openChannelAndAssert( chanPoint = openChannelAndAssert(
ctxt, t, net, net.Bob, carol, ctxt, t, net, bob, carol,
lntest.OpenChannelParams{ lntest.OpenChannelParams{
Amt: chanAmt, Amt: chanAmt,
}, },
@ -10496,7 +10594,7 @@ out:
// Bob, since a node will update its node announcement after a new // Bob, since a node will update its node announcement after a new
// channel is opened. // channel is opened.
ctxt, _ = context.WithTimeout(ctxb, defaultTimeout) ctxt, _ = context.WithTimeout(ctxb, defaultTimeout)
if err := net.EnsureConnected(ctxt, net.Alice, net.Bob); err != nil { if err := net.EnsureConnected(ctxt, alice, bob); err != nil {
t.Fatalf("unable to connect alice to bob: %v", err) t.Fatalf("unable to connect alice to bob: %v", err)
} }
@ -10510,7 +10608,7 @@ out:
for _, nodeUpdate := range graphUpdate.NodeUpdates { for _, nodeUpdate := range graphUpdate.NodeUpdates {
switch nodeUpdate.IdentityKey { switch nodeUpdate.IdentityKey {
case carol.PubKeyStr: case carol.PubKeyStr:
case net.Bob.PubKeyStr: case bob.PubKeyStr:
default: default:
t.Fatalf("unknown node update pubey: %v", t.Fatalf("unknown node update pubey: %v",
nodeUpdate.IdentityKey) nodeUpdate.IdentityKey)
@ -10521,14 +10619,14 @@ out:
for _, chanUpdate := range graphUpdate.ChannelUpdates { for _, chanUpdate := range graphUpdate.ChannelUpdates {
switch chanUpdate.AdvertisingNode { switch chanUpdate.AdvertisingNode {
case carol.PubKeyStr: case carol.PubKeyStr:
case net.Bob.PubKeyStr: case bob.PubKeyStr:
default: default:
t.Fatalf("unknown advertising node: %v", t.Fatalf("unknown advertising node: %v",
chanUpdate.AdvertisingNode) chanUpdate.AdvertisingNode)
} }
switch chanUpdate.ConnectingNode { switch chanUpdate.ConnectingNode {
case carol.PubKeyStr: case carol.PubKeyStr:
case net.Bob.PubKeyStr: case bob.PubKeyStr:
default: default:
t.Fatalf("unknown connecting node: %v", t.Fatalf("unknown connecting node: %v",
chanUpdate.ConnectingNode) chanUpdate.ConnectingNode)
@ -10552,7 +10650,7 @@ out:
// Close the channel between Bob and Carol. // Close the channel between Bob and Carol.
ctxt, _ = context.WithTimeout(ctxb, channelCloseTimeout) ctxt, _ = context.WithTimeout(ctxb, channelCloseTimeout)
closeChannelAndAssert(ctxt, t, net, net.Bob, chanPoint, false) closeChannelAndAssert(ctxt, t, net, bob, chanPoint, false)
} }
// testNodeAnnouncement ensures that when a node is started with one or more // testNodeAnnouncement ensures that when a node is started with one or more
@ -11774,11 +11872,7 @@ func testSwitchOfflineDelivery(net *lntest.NetworkHarness, t *harnessTest) {
// Wait until all outstanding htlcs in the network have been settled. // Wait until all outstanding htlcs in the network have been settled.
err = wait.Predicate(func() bool { err = wait.Predicate(func() bool {
predErr = assertNumActiveHtlcs(nodes, 0) return assertNumActiveHtlcs(nodes, 0) == nil
if predErr != nil {
return false
}
return true
}, defaultTimeout) }, defaultTimeout)
if err != nil { if err != nil {
t.Fatalf("htlc mismatch: %v", predErr) t.Fatalf("htlc mismatch: %v", predErr)
@ -12102,11 +12196,7 @@ func testSwitchOfflineDeliveryPersistence(net *lntest.NetworkHarness, t *harness
// After reconnection succeeds, the settles should be propagated all // After reconnection succeeds, the settles should be propagated all
// the way back to the sender. All nodes should report no active htlcs. // the way back to the sender. All nodes should report no active htlcs.
err = wait.Predicate(func() bool { err = wait.Predicate(func() bool {
predErr = assertNumActiveHtlcs(nodes, 0) return assertNumActiveHtlcs(nodes, 0) == nil
if predErr != nil {
return false
}
return true
}, defaultTimeout) }, defaultTimeout)
if err != nil { if err != nil {
t.Fatalf("htlc mismatch: %v", predErr) t.Fatalf("htlc mismatch: %v", predErr)
@ -12369,11 +12459,7 @@ func testSwitchOfflineDeliveryOutgoingOffline(
// Wait for all payments to reach Carol. // Wait for all payments to reach Carol.
var predErr error var predErr error
err = wait.Predicate(func() bool { err = wait.Predicate(func() bool {
predErr = assertNumActiveHtlcs(nodes, numPayments) return assertNumActiveHtlcs(nodes, numPayments) == nil
if predErr != nil {
return false
}
return true
}, defaultTimeout) }, defaultTimeout)
if err != nil { if err != nil {
t.Fatalf("htlc mismatch: %v", predErr) t.Fatalf("htlc mismatch: %v", predErr)

@ -2746,6 +2746,8 @@ func (r *rpcServer) ListPeers(ctx context.Context,
lnrpcSyncType = lnrpc.Peer_ACTIVE_SYNC lnrpcSyncType = lnrpc.Peer_ACTIVE_SYNC
case discovery.PassiveSync: case discovery.PassiveSync:
lnrpcSyncType = lnrpc.Peer_PASSIVE_SYNC lnrpcSyncType = lnrpc.Peer_PASSIVE_SYNC
case discovery.PinnedSync:
lnrpcSyncType = lnrpc.Peer_PINNED_SYNC
default: default:
return nil, fmt.Errorf("unhandled sync type %v", return nil, fmt.Errorf("unhandled sync type %v",
syncType) syncType)

@ -1019,3 +1019,20 @@ litecoin.node=ltcd
; Specify the timeout to be used when opening the database. ; Specify the timeout to be used when opening the database.
; db.bolt.dbtimeout=60s ; db.bolt.dbtimeout=60s
[gossip]
; Specify a set of pinned gossip syncers, which will always be actively syncing
; whenever the corresponding peer is online. A pinned syncer does not count
; towards the configured `numgraphsyncpeers` since pinned syncers are not
; rotated. Configuring a pinned syncer does not ensure a persistent connection
; to the target peer, they will only be pinned if the connection remains active
; via some other mechanism, e.g. having an open channel.
;
; This feature is useful when trying to ensure that a node keeps its
; routing table tightly synchronized with a set of remote peers, e.g. multiple
; lightning nodes operated by the same service.
;
; Each value should be a hex-encoded pubkey of the pinned peer. Multiple pinned
; peers can be specified by setting multiple flags/fields in the config.
; gossip.pinned-syncers=pubkey1
; gossip.pinned-syncers=pubkey2

@ -820,6 +820,7 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
SubBatchDelay: time.Second * 5, SubBatchDelay: time.Second * 5,
IgnoreHistoricalFilters: cfg.IgnoreHistoricalGossipFilters, IgnoreHistoricalFilters: cfg.IgnoreHistoricalGossipFilters,
GossipUpdateThrottle: !cfg.ProtocolOptions.NoGossipThrottle(), GossipUpdateThrottle: !cfg.ProtocolOptions.NoGossipThrottle(),
PinnedSyncers: cfg.Gossip.PinnedSyncers,
}, },
s.identityECDH.PubKey(), s.identityECDH.PubKey(),
) )