!"#$% & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { |}~%NoneA  is an  containing a triple of maximum capacity, a semaphore used to indicate that the chan has gone from empty to non-empty, and a sequence of items. Create a % with the specified maximum capacity.wIf the chan is full, does nothing. NOTE: An alternative would be to drop the oldest element before adding the new one.ARead an item from the channel. Blocks until an item is available.8Return the channel's contents as a lazily realized list. Safe-InferredJWrapper for the Connection Header type that is a list of key-value pairs.NSerialize a list of key-value pairs using the ROS Connection Header protocol. Safe-Inferred%This type represensts the possible error cases that can occur when a service is called by a client. A NotOkExcept occurs when the server replies to a service request with an error message instead of the normal service message. The NotOkExcept string a string sent from the server. See http:/ wiki.ros.orgROS/TCPROS A ResponseReadExcept occurs when the roshask service client has problems recieving either the expected service message or NotOkExcept message. MasterExcept is for problems encountered while communicating with the master ConHeadExcept is for an error with the connection header ConnectExcept is for problems with connecting to the server SendRequestExcept is for problems with sending the request Safe-Inferred   Safe-Inferred;Ensure that the first character in a String is capitalized.<Determine if a path is a directory containing a ROS package. :Determine if a path is a directory containing a ROS stack. 0Identify the name of the package defining a msg. Identify the name of the stack in which a msg is defined. If the package definining the message does not live in a stack, the result is . Given a path to a msg definition file, compute a destination directory for generated Haskell code. A typical path will be under, ~.cabalshareroshask.     Safe-Inferred;A state monad that threads a pointer through a computation.sAction that pokes a value into the current pointer location, then moves the pointer to just after the poked value.tAction that peeks a value from the current pointer location, then moves the pointer to just after the peeked value.BRun a StorableM action with the supplied initial pointer location.NoneM Construct a 6 with the specified number of elements from a strict  without copying. Construct a 6 with the specified number of elements from a strict 6 making a copy of the underlying data in the process. Construct a 4 with the specified number of elements from a lazy .Construct a strict  from a & without copying the underlying data.Construct a strict ' from a copy of the data underlying a . Safe-InferredNoneFind the names of the ROS packages this package depends on as indicated by the manifest.xml or package.xml file in this package's root directory.Returns ! if the ROS package at the given " defines any messages or services=Find the names of the ROS packages the package at the given  depends on as indicated by its  manifest.xmlJ file. Only those packages that define messages or services are returned.Find the paths to the packages this package depends on as indicated by the manifest.xml file in this package's root directory.Transitive closure of . Find the paths to the packages this package depends on as indicated by the manifest.xml file in this package's root directories and the manifests in the root directories of the dependencies, and so on.HReturn the full path to every .msg file in the given package directory.!AFind all message definition files in a ROS package. Returns the  to the package, and the , to each message definition in the package."Find the path to the message definition (.msg) file for a message type with the given name. The first argument is a home package used to resolve unqualified message names. The second argument is the name of the message type either in the form "pkgName/typeName" or "typeName". The specified package will be searched for using the search paths indicated in the current environment (ROS_PACKAGE_PATH and ROS_ROOT). !"  !" "!  !"NoneE#The  buildHook override integrates a new  with the _ in order to include additional directories (e.g. those with message type definitions) in the  field.$The confHook override takes over  cabal install's --bindir* option to force binary outputs into the bin( subdirectory of the package directory.#$#$#$#$  Safe-Inferred%oA simple PID transfer function that assumes a unit sampling interval. The first three parameters are the gains, the fourth parameter is the desired setpoint, the fifth and sixth parameters are the previous two errors, the seventh parameter is the most recent system output. The return value is a tuple of the most recent error and the computed controller output.&:PID controller with a fixed time interval between samples.'PID controller with explicit time stamps associated with each sample. The order of the resultant tuples is (timeStamp, sample).(A PID controller that maintains its own state. The first three parameters are the gains, the fourth parameter is the desired setpoint. The return value is an IO function that takes the newest system output and returns the controller output.)?A PID controller that assumes a uniform sampling interval of 1.*A PID controller that uses the system clock to associate a timestamp with each measurement that then used to determine the sampling interval.+A PID controller that takes values of the form (timeStamp, sample) such that the associated timestamp is used to determine the sampling rate.%&'()*+%&'()*+%&'()*+%&'()*+  Safe-Inferred,*Produces an action that runs the supplied ) action no faster than given rate in Hz.,,,,  Safe-InferredM$-qA pair of an optional value and a continuation with effects for producing more such pairs. This type is used by J to implement a streaming  unfold . fold composition./dA pair of an optional value and a continuation for producing more such pairs. This type is used by I to implement a streaming  unfold . fold composition.1HA Topic is an infinite stream of values that steps between values in a .4%Return the first value produced by a 1.5%Return the first value produced by a 1 along with the remaining 1 data.66Force evaluation of a topic until it produces a value.7(Prepend a single item to the front of a 1.8 Returns a 1* containing all the values from the given 1 after the first.9 Return a 1 of all the suffixes of a 1.: Returns a 11 containing only those elements of the supplied 1' for which the given predicate returns .;take n t returns the prefix of t of length n.<Run a 1L for the specified number of iterations, discarding the values it produces.=drop n t returns the suffix of t after the first n elements.> dropWhile p t returns the suffix of t* after all elements satisfying predicate p have been dropped.? takeWhile p t0 returns the longest prefix (possibly empty) of t. all of whose elements satisfy the predicate p.@ break p tP returns a tuple whose first element is the longest prefix (possibly empty) of t. all of whose elements satisfy the predicate p4, and whose second element is the remainder of the 1.A splitAt n t7 returns a tuple whose first element is the prefix of t of length n4, and whose second element is the remainder of the 1.B Returns a 1 that includes only the  values from the given 1.C?Repeatedly execute a monadic action feeding the values into a 1.DBuild a 1t from a seed value. The supplied function is applied to the seed value to produce both a value that goes into the 12 and a new seed value for the next recursive call.E?Yield a value and a continuation in a metamorphism (used with I).FODo not yield a value, but provide a continuation in a metamorphism (used with I).GZYield a value and a continuation in a monad as part of a monadic metamorphism (used with J).HODo not yield a value, but provide a continuation in a metamorphism (used with J).I'A metamorphism (cf. Jeremy Gibbons) on 1s. This is an unfold following a fold (i.e. unfoldr . foldl5), with the expectation that partial results of the unfold may be returned before the fold| is completed. The supplied function produces a optional value and a continuation when applied to an element of the first 1#. The value is returned by the new 1 if it is not D, and the continuation is used to produce the rest of the returned 1.J Similar to I(, but the metamorphism may have effects.KFold two functions along a 1( collecting their productions in a new 1.L#Fold two monadic functions along a 1( collecting their productions in a new 1.MFold two functions along a 14 collecting and tagging their productions in a new 1.N#Fold two monadic functions along a 14 collecting and tagging their productions in a new 1.O9Removes one level of monadic structure from the values a 1 produces.P forever t runs all monadic actions a 1 produces. This is useful for 1@s whose steps produce side-effects, but not useful pure values.QMap a monadic action over a 1.RMap a monadic action of a 1? purely for its side effects. This function will never return.SA left-associative scan of a 1K is a fold whose every intermediate value is produced as a value of a new 1.T#Print all the values produced by a 1.,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX(-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST,123XW456789:;<=>?@ABCD/0V-.UEFGHIJKLMNOPQRST(-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX NoneMY Produce an infinite list from a 1.Z Produce a 1 from an infinite list.[Tee a 1 into two duplicate 1s. Each returned 1. will receive all the values of the original 1> while any side-effect produced by each step of the original 1 will occur only once.This version of tee% lazily pulls data from the original 1E when it is first required by a consumer of either of the returned 1es. This behavior is crucial when lazily consuming the data stream is preferred. For instance, using n with [ will allow for a chunk of data to be abandoned before being fully consumed as long as neither consumer has forced its way too far down the stream.RThis function is useful when two consumers must see all the same elements from a 1 . If the 1 was instead ^9d, then one consumer might get the first value from the 1O before the second consumer's buffer is created since buffer creation is lazy.\This version of tee' eagerly pulls data from the original 1 as soon as it is available. This behavior is undesirable when lazily consuming the data stream is preferred. For instance, using n with \& will likely not work well. However, \, may have slightly better performance than [.] Fan out one 1 out to a number of duplicate 1Us, each of which will produce the same values. Side effects caused by the original Topic'|s production will occur only once. This is useful when a known number of consumers must see exactly all the same elements.^Make a 1 shareable among multiple consumers. Each consumer of a Topic gets its own read buffer automatically as soon as it starts pulling items from the Topic. Without calling one of ^, [, or ]R on a Topic, the Topic's values will be split among all consumers (e.g. consumer A' gets half the values produced by the 1, while consumer B_ gets the other half with some unpredictable interleaving). Note that Topics returned by the Ros.Node.subscribe are already shared._The application topicRate rate t runs 1 t no faster than rate Hz.` Splits a 1 into two 1s: the elements of the first 1L all satisfy the given predicate, while none of the elements of the second 1 do.a Returns a 18 whose values are consecutive values from the original 1.bInterleave two 1s. Items from each component 1 will be tagged with an ( constructor and added to the combined 1 as they become available.c Returns a 1> that produces a new pair every time either of the component 1ws produces a new value. The value of the other element of the pair will be the newest available value. The resulting 1? will produce a new value at the rate of the faster component 12, and may contain duplicate consecutive elements.d Returns a 1< that produces a new pair every time both of the component 1,s have produced a new value. The composite 19 will produce pairs at the rate of the slower component 1/ consisting of the most recent value from each 1.e Merge two 1+s into one. The items from each component 1 will be added to the combined 1 as they become available.f=Apply a function to each consecutive pair of elements from a 1.g!Compute a running "average" of a 1l using a user-provided normalization function applied to the sum of products. The arguments are a constat alpha8 that is used to scale the current average, a constant invAlpha used to scale the newest value, a function for adding two scaled values, a function for scaling input values, a function for normalizing the sum of scaled values, and finally the stream to average. Parameterizing over all the arithmetic to this extent allows for the use of denormalizing scaling factors, as might be used to keep all arithmetic integral. An example would be scaling the average by the integer 7, the new value by the integer 1, then normalizing by dividing the sum of scaled values by 8.h#Perform numerical integration of a 1q using Simpson's rule applied at three consecutive points. This requires a function for adding values from the 1<, and a function for scaling values by a fractional number.i!Compute a running "average" of a 1. The application weightedMean alpha plus scale t sums the product of alpha. and the current average with the product of  1 - alpha# and the newest value produced by 1 tH. The addition and scaling operations are performed using the supplied plus and scale functions.j!Compute a running "average" of a 1. The application )weightedMean2 alpha invAlpha plus scale t sums the product of alpha- and the current average with the product of invAlpha# and the newest value produced by 1 tH. The addition and scaling operations are performed using the supplied plus and scale functions.kUse a 1 of functions to filter a 1 of values. The application filterBy t1 t2 causes each function from 1 t1& to be applied to values produced by t2 until it returns . At that point, the k1 application produces the accepted value of the t2) and moves on to the next function from t1! which is applied to the rest of t2 in the same manner.lProduce elements of the first 1( no faster than elements of the second 1 are produced.m Flatten a 1 of  values. For example, turn a  Topic m [a] of finite lists into a Topic a4 by taking each element from each list in sequence.n Flatten a 1 of D values such that old values are discarded as soon as the original 1 produces a new .oPull elements from a 1 in a new thread. This allows  1Js to run at different rates even if they are consumed by a single thread.pSliding window over a . slidingWindow n t slides a window of width n along 1 t. As soon as at least n! elements have been produced by t , the output 1 starts producing the mconcat of the elements in the window.qSliding window over an  . slidingWindowG n t slides a window of width n along 1 t. As soon as at least n elements have been produced by t , the output 1f starts producing the total sum of the elements of the window. This function is more efficient than pq because the group inverse operation is used to remove elements falling behind the window from the running sum.r3A way of pushing a monadic action into and along a 1. The application topicOn proj inj trans t extracts a function from trans0 that is then applied to the result of applying proj to each value of 1 tH. The result of that application is supplied to the result of applying inj to the same values from t# to produce a value for the output 1B. A typical use case is projecting out a field from the original 1 t using proj so that it may be modified by trans; and then injected back into the original structure using inj.s subsample n t subsamples topic t by dropping n: elements for every element produced by the result topic.YZ[\]^_`abcdefghijklmnopqrsYZ[\]^_`abcdefghijklmnopqrsYZ[\]^_`abcdefghijklmnopqrsYZ[\]^_`abcdefghijklmnopqrsb NonetpidUniform2 kp ki kd setpoint t( runs a PID controller that transforms 1 t of process outputs into a 1P of control signals designed to steer the output to the setpoints produced by 1 setpoint using the PID gains kp, ki, and kd0. The interval between samples produced by the 1 is assumed to be 1.upidUniform kp ki kd setpoint t( runs a PID controller that transforms 1 t of process outputs into a 1] of control signals designed to steer the output to the given setpoint using the PID gains kp, ki, and kd0. The interval between samples produced by the 1 is assumed to be 1.v pidFixed2 kp ki kd setpoint dt t( runs a PID controller that transforms 1 t of process outputs into a 1P of control signals designed to steer the output to the setpoints produced by 1 setpoint using the PID gains kp, ki, and kd., along with an assumed fixed time interval, dt, between samples.wpidFixed kp ki kd setpoint dt t( runs a PID controller that transforms 1 t of process outputs into a 1] of control signals designed to steer the output to the given setpoint using the PID gains kp, ki, and kd., along with an assumed fixed time interval, dt, between samples.xpidTimed2 kp ki kd setpoint t( runs a PID controller that transforms 1 t of process outputs into a 1P of control signals designed to steer the output to the setpoints produced by 1 setpoint using the PID gains kp, ki, and kdE. The system clock is checked for each value produced by the input 1' to determine the actual sampling rate.ypidTimed kp ki kd setpoint t( runs a PID controller that transforms 1 t of process outputs into a 1] of control signals designed to steer the output to the given setpoint using the PID gains kp, ki, and kdD. The system clock is checked for each value produced by the input 1( to determine the actual sampling rate.zpidStamped2 kp ki kd setpoint t( runs a PID controller that transforms 1 t of process outputs into a 1] of control signals designed to steer the output to the given setpoint using the PID gains kp, ki, and kd. Values produced by the 1 tM must be paired with a timestamp and thus have the form (timeStamp, sample).{pidStamped kp ki kd setpoint t( runs a PID controller that transforms 1 t of process outputs into a 1] of control signals designed to steer the output to the given setpoint using the PID gains kp, ki, and kd. Values produced by the 1 tN must be paired with a timestamp and thuse have the form (timeStamp, sample).tuvwxyz{tuvwxyz{tuvwxyz{tuvwxyz{ Safe-Inferred|Run a 1 built around a lazy   s$ monad using a given initial state.}Run a 1 build around a strict   s$ monad using a given initial state.~Run a 1= built around a 'ReaderT r' monad using a value for reading.Map a monadic function over a 1, in the process lifting the 1 into a new monad.|}~|}~|}~|}~ Safe-Inferred24 Parameter rebindings are used to assign values to private parameters by prefixing the parameter name with an underscore. The special keyword __name$ can be used to remap the node name. jName rebindings are typically used to remap Topic names, but can also be used to remap a parameter name. DMechanism to extract a Haskell value from a parsed parameter value.,The types of values supported as parameters.MParse program arguments to determine name remappings and parameter settings.   !"#$%&'   !"#$%&' Safe-Inferred ()*+,-./0 ()*+,-./0()*+,-./0 Safe-Inferred Safe-Inferred0ROSDuration is a tuple of (seconds, nanoseconds),ROSTime is a tuple of (seconds, nanoseconds)  Safe-Inferred1*Class of types that may be derived from a .timeDiff t1 t2 computes the difference t1 - t2.Get the current POSIX time..Compute the difference in seconds between two  values. The application diffSeconds tStop tStart computes the time interval tStop - tStart.2 Convert a , to the POSIX number of seconds since epoch.123123None24MA type class for binary serialization of ROS messages. Very like the standard Data.Binary type class, but with different, more compact, instances for base types and an extra class method for dealing with message headers."Serialize a value to a ByteString.&Deserialize a value from a ByteString.Serialize a ROS message given a sequence number. This number may be used by message types with headers. The default implementation ignores the sequence number.None4=The function that does the work of streaming members of the  class in from a 5.6SGet the result back from a service call (called by the service client) (see http:/ wiki.ros.org ROS/TCPROS)748694674869NoneM:!Delete a parameter on the server.;$Set a parameter value on the server.<%Retrieve parameter value from server.=Search for a parameter name on the Parameter Server. The search starts in the caller's namespace and proceeds upwards through parent namespaces until the Parameter Server finds a matching key. The first non-trivial partial match is returned.>gRetrieve parameter value from server and subscribe to updates to that param. See paramUpdate() in the  API.?fUnsubscribe from updates to a parameter. If there is an error, the status message is returned on the @f; otherwise whether or not the caller was previously subscribed to the parameter is returned on the A.BkCheck if a parameter is stored on the server. If there is an error, the status message is returned on the @3; otherwise the query response is returned on the A.C8Get a list of all parameter names stored on this server. :;D<=>?BC:;<=>?BC :;D<=>?BC  Safe-InferredEETA transactional data store for tracking all the connections for a particular topic.FRecord the fact that we've sent a message of the given number of bytes to the given URI. If the number of bytes is negative, the connection is marked is disconnected.GRecord the fact that we've received a message of the given number of bytes from the given URI. If the number of bytes is negative, the connection is marked as disconnected. EHIJKLMNOPQFG EHIJKLMNOPQFGEHIJKLMNOPQFGNoneESerialize a message after setting the sequence number in its header.NoneERYGiven two consecutive values, pick the one with the closest time stamp to another value.SfindBrackets t1 t2 Pairs each element of t2- with the pair of consecutive elements from t1V that brackets it in time, and the time interval in seconds covered by that bracket.TRemove an element from a 1 if the next element from that 1_ is composed of elements bearing the exact same sequence IDs in their headers (as obtained by ). Returns a 1O that produces a new pair for every value produced by either of the component 1Ss. The value of the other element of the pair will be the element from the other 1, with the nearest time stamp. The resulting 1? will produce a new value at the rate of the faster component 1.The application interpolate f t1 t2 produces a new 1 that pairs every element of t2A with an interpolation of two temporally bracketing values from t1=. The interpolation is effected with the supplied function, f, that is given the two values to interpolate and the linear ratio to find between them. This ratio is determined by the time stamp of the intervening element of t2.Batch 1 values that arrive within the given time window (expressed in seconds). When a value arrives, the window opens and all values received within that window are returned in a list, then the next value is awaited before opening the window again. Intended usage is to gather approximately simultaneous events into batches. Note that the times used to batch messages are arrival times rather than time stamps. This is what lets us close the window, rather than having to admit any message that ever arrives with a compatible time stamp.RSTRST!None+UVWXYZ[UVWXYUVWXYZ["None+\]^_`abcdefghijkl\]^_`abcdefghi \]^_`abcdefghijkl#NonemSubscribe the caller to the specified topic. In addition to receiving a list of current publishers, the subscriber will also receive notifications of new publishers via the publisherUpdate API. Takes the URI of the master, the caller_id, the topic name, the topic type (must be a package-resource name, i.e. the .msg name), and the API URI of the subscriber to register (used for new publisher notifications). Returns a list of XML-RPC API URIs for nodes currently publishing the specified topic.nUnregister the caller as a subscriber of the topic. Takes the URI of the master, the caller_id, the topic name, and the API URI of the subscriber to unregister. Returns zero if the caller was not registered as a subscriber.o)Register the caller as a publisher the topic. Takes the URI of the master, the caller_id, the topic name, the topic type (must be a package-resource name, i.e. the .msg name), and the API URI of the publisher to register. Returns a list of the XML-RPC URIs of current subscribers of the topic.pUnregister the caller as a publisher of the topic. Takes the URI of the master, caller_id, the topic name, and the API URI of the publisher to unregister. Returns zero if the caller was not registered as a publisher.qlookupService u s1 s2 where u is the URI of the ROS master, s1 is the ROS caller ID, and s2/ is the ROS fully-qualified name of the serviceIn the result tuple !(code, statusMessage, serviceUrl), code' should be 1 upon a sucessful call. If code is not 1 then  statusMessage_ may contain an error message. The host name and port of the service can be extracted from the  serviceUrlrkROS API: registerService(caller_id, service, service_api, caller_api) Register the caller as a provider of the specified service. Parameters caller_id (str) ROS caller ID service (str) Fully-qualified name of service service_api (str) ROSRPC Service URI caller_api (str) XML-RPC URI of caller node Returns (int, str, int) (code, statusMessage, ignore)sMROS API: unregisterService(caller_id, service, service_api) Unregister the caller as a provider of the specified service. Parameters caller_id (str) ROS caller ID service (str) Fully-qualified name of service service_api (str) API URI of service to unregister. Unregistration will only occur if current registration matches. Returns (int, str, int) (code, statusMessage, numUnregistered). Number of unregistrations (either 0 or 1). If this is zero it means that the caller was not registered as a service provider. The call still succeeds as the intended final state is reached.mnopqrsmnopqrsmnopqrs$NonetUUnregister all of a node's publishers and subscribers, then stop the node's servers.u~Run a ROS slave node. Returns an action that will wait for the node to shutdown along with the port the server is running on.vwxyz{|}~tu wxyz{|}~tuvw xyz{|}~tu%None !"246:BMA y carries with it parameters, topic remappings, and some state encoding the status of its subscriptions and publications.(% &NoneM A  represents a 1' fully prepared to accept subscribers.The K type class dictionary made explicit to strip off the actual message type.DPush each item from this client's buffer over the connected socket.Accept new client connections. A new send buffer is allocated for each new client and added to the client list along with an action for cleaning up the client connection. FIXME: cleaning up a disconnected client should be reflected at a higher level, too."Publish each item obtained from a 1 to each connected client.[Produce a publishing action associated with a list of clients. This is used by runServers.GConnect to a publisher and return the stream of data it is publishing.(bracketOnError equivalent for MonadError7Catch any IOErrors and convert them to a different typeCatch all IOErrors that might occur and convert them to a custom error type with the IOError message postpended to the given stringThe server starts a thread that peels elements off the stream as they become available and sends them to all connected clients. Returns an action for cleaning up resources allocated by this publication server along with the port the server is listening on.Prepare an action for publishing messages. Arguments are a monadic function for updating topic statistics, and a transmit buffer size. The returned  value may be supplied to , while the returned 0 function may be used to push out new messages.Publish several 1#s. A single cleanup action for all 1 s is returned, along with each 1)s server port in the order of the input s.None'NoneRun a ROS Node with the given name. Returns when the Node has shutdown either by receiving an interrupt signal (e.g. Ctrl-C) or because the master told it to stop.None:M3Maximum number of items to buffer for a subscriber.ESpark a thread that funnels a Stream from a URI into the given Chan.(Subscribe to the given Topic. Returns a ()d 1.eSpin up a thread within a Node. This is typically used for message handlers. Note that the supplied 1Y is traversed solely for any side effects of its steps; the produced values are ignored. Advertise a 1 publishing a stream of A values with a per-client transmit buffer of the specified size. Advertise a 10 publishing a stream of values produced in the  monad.+Get an action that will shutdown this Node.+Apply any matching renames to a given name.KConvert relative names to absolute names. Leaves absolute names unchanged.0Get a parameter value from the Parameter Server.[Get the value associated with the given parameter name. If the parameter is not set, then * is returned; if the parameter is set to x, then Just x is returned.Get the value associated with the given parameter name. If the parameter is not set, return the second argument as the default value.Get the current node's name.Get the current namespace.Run a ROS Node. 123_123_ NoneALog message levels. These allow for simple filtering of messages.*Template Haskell functions to splice in a  value. Usage: '$(logDebug "This is my message to you")*Template Haskell functions to splice in a  value. Usage: '$(logDebug "This is my message to you")*Template Haskell functions to splice in a  value. Usage: '$(logDebug "This is my message to you")*Template Haskell functions to splice in a  value. Usage: '$(logDebug "This is my message to you")*Template Haskell functions to splice in a  value. Usage: '$(logDebug "This is my message to you")zEnable logging for this node. The argument indicates the level of log messages that should be echoed to standard out. If n, then no messages are printed; if 'Just lvl', then all messages of greater than or equal level are printed. *+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Q R S T U V W X Y Y Z Z [ [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  ) Q R S "%      !"#$%&'()*()+(),-./01 23456789:;<=>7?@7A@BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^__`abcdefghijklmnopqrs6t6uvwx y z { | | } ~      !!!!!!!"""""""""""""""""#######$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%B%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&''''      roshask-0.2Ros.Service.ServiceTypesRos.Internal.PathUtilRos.NodeRos.Internal.Util.StorableMonadRos.Internal.Util.BytesToVectorRos.Internal.Msg.SrvInfoRos.Internal.DepFinderRos.Internal.SetupUtil Ros.Util.PIDRos.Rate Ros.TopicRos.Topic.Util Ros.Topic.PIDRos.Topic.TransformersRos.Internal.Msg.MsgInfoRos.Internal.RosTypesRos.Internal.RosTimeRos.Internal.RosBinaryRos.Internal.Msg.HeaderSupportRos.Topic.Stamped Ros.Logging Ros.ServiceRos.Internal.Util.RingChanRos.Node.ConnectionHeader Paths_roshaskRos.Internal.Util.ArgRemappingRos.Internal.Util.AppConfigRos.Node.BinaryIterRos.Graph.ParameterServerRosSlaveAPIRos.Topic.StatsRos.Internal.HeaderRos.Internal.LogRos.Graph.MasterRos.Graph.Slave Ros.Node.TypeRos.Node.RosTcpRos.Node.RunNode Ros.TopicUtilshareServiceResponseExceptSendRequestExcept ConnectExcept ConHeadExcept MasterExceptResponseReadExcept NotOkExceptcapisPkgisStack pathToPkgName stackName codeGenDirtransformers-0.4.2.0Control.Monad.IO.ClassliftIO StorableMpokepeek runStorableunsafeBytesToVector bytesToVectorbytesToVectorLunsafeVectorToBytes vectorToBytesSrvInfosrvMD5 srvTypeNamefindPackageDepNames hasMsgsOrSrvsfindDepsWithMessagesfindPackageDepsfindPackageDepsTrans findMessages findServicesfindMessagesInPkg findMessagerosBuildrosConf pidUniformpidFixedpidTimed pidFixedIO pidUniformIO pidTimedIO pidWithTimeIO rateLimiter IterContMIterContTopicrunTopicheadunconsforceconstailtailsfiltertaketake_drop dropWhile takeWhilebreaksplitAt catMaybesrepeatMunfoldyieldskipyieldMskipM metamorph metamorphM bimetamorph bimetamorphM bimetamorphE bimetamorphMEjoinforevermapMmapM_scan showTopic$fFunctorIterContM$fFunctorIterCont$fApplicativeTopic$fFunctorTopictoListfromListteeteeEagerfan topicRate partition consecutive<+>everyNewbothNewmergefiniteDifferenceweightedMeanNormalized simpsonsRule weightedMean weightedMean2filterBygateconcats interruptible forkTopic slidingWindowslidingWindowGtopicOn subsample pidUniform2 pidFixed2 pidTimed2 pidStamped2 pidStamped runTopicStaterunTopicState'runTopicReaderliftMapMsgInfo sourceMD5 msgTypeName ROSDurationROSTime ServiceName ConnectionID TopicType ParamNameNodeName TopicNameCallerIDURI fromROSTime toROSTime diffROSTime getROSTime diffSeconds RosBinaryputgetputMsggetAsciiputAsciiputUnitgetUnitputListgetList putFixedList getFixedListgetInt32putInt32getFixedputFixed$fRosBinaryVector$fRosBinary(,)$fRosBinaryByteString $fRosBinary[]$fRosBinaryDouble$fRosBinaryFloat$fRosBinaryWord64$fRosBinaryInt64$fRosBinaryWord32$fRosBinaryInt$fRosBinaryWord16$fRosBinaryInt16$fRosBinaryWord8$fRosBinaryInt8$fRosBinaryBool HasHeader getSequencegetFramegetStamp setSequence putStampedMsg interpolatebatchLogNode callService subscribe runHandleradvertiseBuffered advertisegetShutdownAction getParamOptgetParamgetName getNamespacerunNodeLogLevelFatalErrorWarnInfoDebuglogDebuglogInfologWarnlogErrorlogFatal enableLoggingRingChanbaseGHC.MVarMVar newRingChan writeChanreadChangetChanContents getBuffered ConnHeader genHeader tagLengthgetInt parsePair parseHeadercatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName Data.MaybeNothingvector-0.10.12.1Data.Vector.StorableVectorbytestring-0.10.4.0Data.ByteString.Internal ByteStringData.ByteString.Lazy.Internalghc-prim GHC.TypesTrueGHC.IOFilePathPackagefindPackagePath getPackagescatkinBuildDeps packagePaths getRosPathsignoredPackagesCabal-1.20.0.2Distribution.PackageDescriptionHookedBuildInfoPackageDescription hsSourceDirs Buildable ExecutablesLibraryAndExecutablesaddRosMsgPathsIOtimeDiffGHC.BaseMonadJust Data.EitherEither Data.FoldableFoldable Data.MonoidMonoidvector-space-0.8.7Data.AdditiveGroup AdditiveGroupControl.Monad.Trans.State.LazyStateT Control.Monad.Trans.State.StrictParamsNames FromParamParamValparseRemappingsSignNegativePositive fromParamPUnknownPListPDoublePStringPBoolPIntlexersign applySign intOrFloat'parseVal parseBinding $fFromParam[]$fFromParam[]0$fFromParam[]1$fFromParamDouble$fFromParam[]2$fFromParamBool$fFromParamIntConfig ConfigOptions verbosity getVerbositydebug forkConfigparseAppConfig configured FromROSTime$fFromROSTimeDouble$fFromROSTimeUTCTimestreamInGHC.IO.Handle.TypesHandlegetServiceResulthGetAll hGetAllET deleteParamsetParam searchParamsubscribeParamunsubscribeParamLeftRighthasParam getParamNames handleParamStatMapsendMessageStatrecvMessageStatPubStats bytesSentnumSent pubConnectedSubStats bytesReceived subConnected statSnapshot pickNearest findBrackets removeDupsHeaderseqstampframe_id$fMsgInfoHeader$fRosBinaryHeaderheaderlevelnamemsgfilefunctionlinetopicsdEBUGiNFOwARNeRRORfATAL $fMsgInfoLog$fHasHeaderLog$fRosBinaryLogregisterSubscriberunregisterSubscriberregisterPublisherunregisterPublisher lookupServiceregisterServiceunregisterService cleanupNoderunSlave RpcResultRosSlave getMaster getNodeName getNodeURIgetSubscriptionsgetPublicationspublisherUpdategetTopicPortTCPsetShutdownActionstopNodemkPublishStats mkSubStats getBusStats getBusInfo getMaster' shutdown'getPid'getSubscriptions'getPublications' paramUpdate' pubUpdatemyName requestTopicrequestTopicClientslaveRPC simpleServe findFreePortunNode NodeConfig nodeParams nodeRemaps nodeAppConfigRemap NodeStatenodeName namespacemasternodeURIsignalShutdown subscriptions publications Publication subscriberspubTypepubPort pubCleanuppubTopicpubStatsDynTopic Subscription knownPubsaddPubsubTypesubStats fromDynTopic connectToPub$fRosSlaveNodeState$fMonadReaderNodeConfigNode$fMonadStateNodeStateNodeFeeder MsgInfoRcd serviceClient acceptClients pubStream pubStreamIO subStreambracketOnErrorMEcatchConvertIOioErrorToExceptT runServer feedTopic runServers_md5 _typeNamesendBSrecvAll negotiatePub negotiateSub parseHostparseHostAndPort maybeToEithercallServiceWithMasternegotiateServicemkPubNegotiator runServerAuxregisterPublicationregisterSubscription registerNoderecvBufferSize addSource remapNamecanonicalizeNamegetServerParammkSubmkPubmkPubAux advertiseAux emptyHeadermkLogMsg rosOutChan showLevelsendMsgprintLog