!ݎΊ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~No rights reserved UNLICENSExenog@protonmail.com experimentalPOSIXNone<>?QV]js haskoin-node&Incoming messages that a peer accepts. haskoin-node3Events originating from peers and the peer manager. haskoin-nodenew peer connected haskoin-nodepeer disconnected haskoin-nodepeer sent a message haskoin-node$Reasons why a peer may stop working.  haskoin-nodepeer is being a naughty boy  haskoin-node"peer sent an extra version message  haskoin-node-incoming message headers could not be decoded  haskoin-node-incoming message payload could not be decoded  haskoin-nodenonce for peer matches ours haskoin-nodemessage payload too large haskoin-nodepeer address not valid haskoin-nodepeer sent wrong headers haskoin-node"peer cannot serve block chain data haskoin-nodepeer has no segwit support haskoin-noderequest to peer timed out haskoin-nodepeers are being purged haskoin-nodepeer is unknown haskoin-node$Configuration for a particular peer. haskoin-nodeSend peer messages to publisher haskoin-nodenetwork constants haskoin-node peer address haskoin-node,Chain and peer events generated by the node. haskoin-node%events from the chain syncing process haskoin-node"events from peers and peer manager haskoin-node.Events originating from chain syncing process. haskoin-nodechain has new best block  haskoin-node!chain is in sync with the network! haskoin-node/Messages that can be sent to the chain process." haskoin-nodeget best block known$ haskoin-nodeget ancestor for  at % haskoin-nodeget highest common node& haskoin-nodeget a block header' haskoin-nodeis chain in sync with network?( haskoin-node)internal message for process housekeeping) haskoin-node4internal message to notify that a peer has connected* haskoin-node7internal message to notify that a peer has disconnected+ haskoin-node(Configuration for chain syncing process.- haskoin-nodedatabase handle. haskoin-nodenetwork constants/ haskoin-nodesend header chain events here0 haskoin-nodetimeout in seconds1 haskoin-node.Messages that can be sent to the peer manager.2 haskoin-nodetry to connect to peers3 haskoin-nodeget all connected peers4 haskoin-nodeget a peer information5 haskoin-nodedelete all known peers6 haskoin-nodecheck this peer7 haskoin-node/peer got a message that is forwarded to manager8 haskoin-node child died9 haskoin-nodeset this as our best block: haskoin-nodePeer manager configuration.< haskoin-node%maximum number of peers to connect to= haskoin-node*database handler to store peer information> haskoin-node"static list of peers to connect to? haskoin-nodeactivate peer discovery@ haskoin-node"network address for the local hostA haskoin-nodenetwork constantsB haskoin-node.send manager and peer messages to this mailboxC haskoin-nodetimeout in secondsD haskoin-nodeGeneral node configuration.F haskoin-node)maximum number of connected peers allowedG haskoin-nodedatabase handlerH haskoin-node"static list of peers to connect toI haskoin-nodeactivate peer discoveryJ haskoin-node"network address for the local hostK haskoin-nodenetwork constantsL haskoin-node&node events are sent to this publisherM haskoin-nodetimeout in secondsN haskoin-node!Mailbox for peer manager process.O haskoin-node)Mailbox for chain header syncing process.P haskoin-nodeMailbox for a peer.Q haskoin-node+Data structure representing an online peer.S haskoin-nodenetwork addressT haskoin-node%got version acknowledgement from peerU haskoin-nodepeer is connected and readyV haskoin-nodeprotocol versionW haskoin-nodepeer asynchronous processX haskoin-node peer mailboxY haskoin-node"random nonce sent during handshakeZ haskoin-nodelast sent ping time and nonce[ haskoin-nodelast few ping rountrip duration\ haskoin-nodeType alias for a port number.] haskoin-nodeType alias for a hostname.^ haskoin-node2Type alias for a combination of hostname and port._ haskoin-node%Resolve a host and port to a list of . May make use DNS resolver.` haskoin-node Convert a  to a a numeric host and port.a haskoin-nodeOur protocol version.b haskoin-nodeEInternal function used by peer to send a message to the peer manager.c haskoin-node)Get list of connected peers from manager.d haskoin-node0Get information for an online peer from manager.e haskoin-node(Kill a peer with the provided exception.f haskoin-node>Internal function used by manager to check peers periodically.g haskoin-node?Internal function used to ask manager to connect to a new peer.h haskoin-node0Set the best block that the manager knows about.i haskoin-nodeSend a network message to peer.j haskoin-nodekGet a publisher associated to a peer. Must provide timeout as peer may disconnect and become unresponsive.k haskoin-node+Request full blocks from peer. Will return i if the list of blocks returned by the peer is incomplete, comes out of order, or a timeout is reached.l haskoin-node,Request transactions from peer. Will return o if the list of transactions returned by the peer is incomplete, comes out of order, or a timeout is reached.m haskoin-nodeRequest transactions and/or blocks from peer. Return maybe if any single inventory fails to be retrieved, if they come out of order, or if timeout is reached.n haskoin-node'Ping a peer and await response. Return * if response not received before timeout.o haskoin-nodeCreate version data structure.p haskoin-nodeGet a block header from O process.q haskoin-node)Get best block header from chain process.r haskoin-nodeGet ancestor of  at  from chain process.s haskoin-nodeGet parents of  starting at  from chain process.t haskoin-node)Get last common block from chain process.u haskoin-node*Notify chain that a new peer is connected.v haskoin-node*Notify chain that a peer has disconnected.w haskoin-node Is given  in the main chain?x haskoin-nodeIs chain in sync with network?y haskoin-node3Peer sends a bunch of headers to the chain process.z haskoin-nodeConnect to a socket via TCP.{ haskoin-nodeCCalculate the median value from a list. The list must not be empty.|  !*)('&%$#"+,0/.-198765432:;CBA@?>=<DEMLKJIHGFNOPQR[ZYXWVUTS\]^_`abcdefghijklmnopqrstuvwxyz{|^]\QR[ZYXWVUTSPONDEMLKJIHGF:;CBA@?>=<198765432+,0/.-!*)('&%$#"  _`abcdefghijklmnopqrstuvwxyz{No rights reserved UNLICENSExenog@protonmail.com experimentalPOSIXNone +;<=>?CV]r haskoin-node'Reader for header synchronization code. haskoin-nodeplaceholder for upstream data haskoin-nodedatabase handle haskoin-node(mutable state for header synchronization haskoin-node2Type alias for monad commonly used in this module. haskoin-nodeKey for best block in database. haskoin-node!Key for block header in database. haskoin-node+Mutable state for the header chain process. haskoin-node6peer to sync against and time of last received message haskoin-nodequeue of peers to sync against haskoin-node1has the header chain ever been considered synced? haskoin-nodeDatabase key for version. haskoin-nodeVersion of the database. haskoin-nodexInitialize header database. If version is different from current, the database is purged of conflicting elements first. haskoin-nodeYPurge database of elements having keys that may conflict with those used in this module. haskoin-node.Import a bunch of continuous headers. Returns  if the number of headers is 2000, which means that there are possibly more headers to sync from whatever peer delivered these. haskoin-nodeCheck if best block header is in sync with the rest of the block chain by comparing the best block with the current time, verifying that there are no peers in the queue to be synced, and no peer is being synced at the moment. This function will only return  once. It should be used to decide whether to notify other processes that the header chain has been synced. The state of the chain will be flipped to synced when this function returns . haskoin-node-Get next peer to sync against from the queue. haskoin-node"Set a syncing peer and generate a G data structure with a block locator to send to that peer for syncing. haskoin-nodeFSet the time of last received data to now if a syncing peer is active. haskoin-node5Add a new peer to the queue of peers to sync against. haskoin-node!Get syncing peer if there is one. haskoin-node&Set syncing peer to the pone provided. haskoin-nodeReturn F if the chain has ever been considered synced. it will always return 4, even if the chain gets out of sync for any reason. haskoin-nodeSet chain as synced. haskoin-nodemRemove a peer from the queue of peers to sync and unset the syncing peer if it is set to the provided value. haskoin-nodeReturn syncing peer data.%%No rights reserved UNLICENSExenog@protonmail.com experimentalPOSIXNone +;<=>?CV]o haskoin-node>Launch process to synchronize block headers in current thread.No rights reserved UNLICENSExenog@protonmail.com experimentalPOSIXNone +;<=>?N]" haskoin-node Peer data. haskoin-nodeDatabase version key. haskoin-nodePeer score key in database. haskoin-nodePeer address key in database. haskoin-nodepeer network address and port haskoin-nodePeer score. Lower is better. haskoin-nodeDatabase version. haskoin-node'Update peer score and pass in database. haskoin-node2Add a peer to database if it is not already there. haskoin-nodebInitialize peer database, purging it of conflicting records if version doesn't match current one. haskoin-node(Purge conflicting records from database. haskoin-nodeGet static network seeds. haskoin-node/Get default score for statically-defined peers. haskoin-node$Get default score for network seeds. haskoin-node'Get default score for discovered peers. haskoin-node!Serialize a network address/port. haskoin-node#Deserialize a network address/port. haskoin-node-Get database entry for provided peer address. haskoin-node:Promote a peer by improving its score (decreasing by one). haskoin-node*Demote a peer increasing its score by one. haskoin-node>Get a peer from database. Pass a list of addresses to exclude. haskoin-nodeReport receiving a pong from a connected peer. Will store ping roundtrip time in a window of latest eleven. Peers are returned by the manager in order of median roundtrip time. haskoin-node.Return time of last ping sent to peer, if any. haskoin-node-Set nonce and time of last ping sent to peer. haskoin-nodeCSet version for online peer. Will set the peer connected status to @ if a verack message has already been registered for that peer. haskoin-node8Register that a verack message was received from a peer. haskoin-nodeCreate Q data structure. haskoin-node1Get a human-readable string for the peer address. haskoin-nodeFind a connected peer. haskoin-node#Insert or replace a connected peer. haskoin-nodeModify an online peer. haskoin-nodeRemove an online peer. haskoin-node(Find online peer by asynchronous handle. haskoin-node*Remove online peer by asynchronous handle. haskoin-node peer address haskoin-nodenonce sent to peer haskoin-node peer mailbox haskoin-nodepeer asynchronous handle((No rights reserved UNLICENSExenog@protonmail.com experimentalPOSIXNone "#+<>?FT haskoin-node#Run peer process in current thread. haskoin-node,Internal function to dispatch peer messages. haskoin-node4Internal conduit to parse messages coming from peer. haskoin-node5Outgoing peer conduit to serialize and send messages. haskoin-nodePeer string for loggingNo rights reserved UNLICENSExenog@protonmail.com experimentalPOSIXNone +;<=>?N] haskoin-node(Reader for peer configuration and state.  haskoin-node,Monad used by most functions in this module. haskoin-nodeEPeer Manager process. In order to fully start it needs to receive a ManageBestBlock event.No rights reserved UNLICENSExenog@protonmail.com experimentalPOSIXNone&'<>? haskoin-node(Launch a node in the background. Pass a N and O7 to a function. Node will stop once the function ends. haskoin-node&Launch node process in the foreground.F  !1DEFGHIJKLMNOPQRSTUVWXYZ[\]^acdeijklpqrstwxF]\^PON!1QRSTUVWXYZ[DEFGHIJKLM  cdeijklpqrstwxaSafee           !"# #$%&'()*+,-./00123456789:;<=>>?@ABCDEFGGHIJKLMNOPQRSSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     )haskoin-node-0.9.2-8nFH89UTJRADVfjU4AiVzPNetwork.Haskoin.Node.Common Network.Haskoin.Node.Chain.LogicNetwork.Haskoin.Node.Chain"Network.Haskoin.Node.Manager.LogicNetwork.Haskoin.Node.PeerNetwork.Haskoin.Node.Manager Haskoin.NodePaths_haskoin_node PeerMessage GetPublisherKillPeer SendMessage PeerEvent PeerConnectedPeerDisconnected PeerExceptionPeerMisbehavingDuplicateVersionDecodeHeaderErrorCannotDecodePayload PeerIsMyselfPayloadTooLargePeerAddressInvalidPeerSentBadHeadersNotNetworkPeer PeerNoSegWit PeerTimeout PurgingPeer UnknownPeer PeerConfigpeerConfListenpeerConfNetworkpeerConfAddress NodeEvent ChainEventChainBestBlock ChainSynced ChainMessage ChainGetBest ChainHeadersChainGetAncestor ChainGetSplit ChainGetBlock ChainIsSynced ChainPingChainPeerConnectedChainPeerDisconnected ChainConfig chainConfDBchainConfNetworkchainConfEventschainConfTimeoutManagerMessageManagerConnectManagerGetPeersManagerGetOnlinePeerManagerPurgePeersManagerCheckPeerManagerPeerMessageManagerPeerDiedManagerBestBlock ManagerConfigmgrConfMaxPeers mgrConfDB mgrConfPeersmgrConfDiscovermgrConfNetAddrmgrConfNetwork mgrConfEventsmgrConfTimeout NodeConfignodeConfMaxPeers nodeConfDB nodeConfPeersnodeConfDiscovernodeConfNetAddr nodeConfNetnodeConfEventsnodeConfTimeoutManagerChainPeer OnlinePeeronlinePeerAddressonlinePeerVerAckonlinePeerConnectedonlinePeerVersiononlinePeerAsynconlinePeerMailboxonlinePeerNonceonlinePeerPingonlinePeerPingsPortHostHostPort toSockAddr fromSockAddr myVersionmanagerPeerMessagemanagerGetPeersmanagerGetPeerkillPeer managerCheckmanagerConnectmanagerSetBest sendMessagepeerGetPublisher peerGetBlocks peerGetTxs peerGetDatapeerPing buildVersion chainGetBlock chainGetBestchainGetAncestorchainGetParentschainGetSplitBlockchainPeerConnectedchainPeerDisconnectedchainBlockMain chainIsSynced chainHeaderswithConnectionmedian$fExceptionPeerException$fOrdOnlinePeer$fEqOnlinePeer$fEqChainEvent$fShowChainEvent$fEqPeerException$fShowPeerException $fEqPeerEvent $fEqNodeEvent ChainReadermyReader myChainDB chainStateMonadChainLogic BestBlockKeyBlockHeaderKey ChainState chainSyncingnewPeersmySynced ChainSync chainSyncPeerchainTimestamp chainHighestChainDataVersionKey dataVersion initChainDB purgeChainDB importHeaders notifySyncednextPeer syncHeaderssetLastReceivedaddPeergetSyncingPeersetSyncingPeerisSynced setSynced finishPeerchainSyncingPeer$fSerializeChainDataVersionKey#$fKeyValueChainDataVersionKeyWord32$fKeyChainDataVersionKey!$fKeyValueBlockHeaderKeyBlockNode$fSerializeBlockHeaderKey$fSerializeBestBlockKey$fKeyValueBestBlockKeyBlockNode$fBlockHeadersm$fEqChainDataVersionKey$fOrdChainDataVersionKey$fShowChainDataVersionKey$fEqBlockHeaderKey$fShowBlockHeaderKey$fEqBestBlockKey$fShowBestBlockKeychainPeerDataPeerDataVersionKey PeerScore PeerScoreBase PeerAddressPeerAddressBasegetPeerAddressScore versionPeerDB updatePeerDB newPeerDB initPeerDB purgePeerDB networkSeedsstaticPeerScore netSeedScore netPeerScoreencodeSockAddrdecodeSockAddr getPeerDB promotePeerDB demotePeerDB getNewPeerDBgotPonglastPing setPeerPingsetPeerVersion setPeerVerAck newOnlinePeer peerStringfindPeer insertPeer modifyPeer removePeer findPeerAsyncremovePeerAsync$fKeyPeerAddress$fSerializePeerAddress$fKeyValuePeerScore()$fKeyPeerScore$fSerializePeerScore"$fKeyValuePeerDataVersionKeyWord32$fKeyPeerDataVersionKey$fSerializePeerDataVersionKey$fKeyValuePeerAddressPeerData$fSerializePeerData$fEqPeerAddress$fOrdPeerAddress$fShowPeerAddress $fEqPeerScore$fOrdPeerScore$fShowPeerScore$fEqPeerDataVersionKey$fOrdPeerDataVersionKey$fShowPeerDataVersionKey $fEqPeerData$fShowPeerData $fOrdPeerDatapeermanagerwithNodenode)haskoin-core-0.8.1-Cj0NpCKZ3LuBKmzmURsV4XNetwork.Haskoin.Block.Headers BlockNodeNetwork.Haskoin.Block.Common BlockHeight&network-2.6.3.6-2g6VId0Xlc85XRtUcfQj0TNetwork.Socket.TypesSockAddrbaseGHC.BaseNothingghc-prim GHC.TypesFalse BlockHashTrue GetHeadersdispatchMessage inPeerConduitoutPeerConduit ManagerReader MonadManagerversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName