h&XxP{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                    Safe-Inferred>(c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred(c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred pinch/A ByteString Builder that knows its final size.pinch5Build a ByteString from the given ByteString builder.pinchAppend two Builders into one.pinchSerialize a single signed byte. pinch!Serialize a single unsigned byte. pinch7Serialize a signed 16-bit integer in big endian format. pinch7Serialize a signed 32-bit integer in big endian format. pinch7Serialize a signed 64-bit integer in big endian format. pinch:Serialize a signed 64-bit integer in little endian format.pinchSerialize a signed 64-bit floating point number in big endian format.pinchSerialize a signed 64-bit floating point number in little endian format.pinch2Inlcude the given ByteString as-is in the builder.Note that because this operation is applied lazily, we will maintain a reference to the ByteString until the builder is executed.pinch+Returns the number of bytes in the builder.    (c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred6pinch FoldList represents a list as a foldl' traversal over it.This allows us to avoid allocating new collections for an intermediate representation of various data types that users provide.pinch/Builds a FoldList over pairs of items of a map.pinch"Builds a FoldList from a Foldable.pinch;Applies the given function to all elements in the FoldList.Note that the function is applied lazily when the results are requested. If the results of the same FoldList are requested multiple times, the function will be called multiple times on the same elements.pinch0Returns a FoldList with the given item repeated n times.pinchExecutes the given monadic action the given number of times and returns a FoldList of the results.pinch foldlWithKey$ provided by the map implementation.  (c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred#pinch#A simple continuation-based parser. This is just  Either e a in continuation-passing style.pinch-Success continuation. Called with the result.pinch6Failure continuation. Called with the failure message.$pinchRun a Parser! and return the result inside an Either.%pinchAllows handling parse errors.#$%(c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred )*56&pinchUsed when the * for something is not known at compile time. Typically, this will be pattern matched inside a case statement and code that depends on the TType will be go there.(pinch,Typeclass used to map type-leve TTypes into *6 objects. All TType tags are instances of this class.)pinchBased on the context in which this is used, it will automatically return the corresponding * object.*pinch&Represents the type of a Thrift value.Objects of this type are tagged with one of the TType tags, so this type also acts as a singleton on the TTypes. It allows writing code that can enforce properties about the TType of values at compile time.6pinch list7pinch set8pinch  map9pinch  exception:pinch union;pinch struct<pinch string=pinch binary>pinch i64?pinch enum@pinch i32Apinch i16Bpinch doubleCpinch byteDpinch boolEpinch#Witness the equality of two ttypes.Fpinch#Witness the equality of two TTypes.Implicit version of  ttypeEquality.!&'()*+,-./0123456789:;<=>?@ABCDEF!*+,-./012345()&'EFDCBA@?>=<;:9876(c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred )*56VpinchV holds any value, regardless of type. This may be used when the type of the value is not necessarily known at compile time. Typically, this will be pattern matched on and code that depends on the value's *' will go inside the scope of the match.XpinchValue maps directly to serialized representation of Thrift types. It contains about as much information as what gets sent over the wire. Value# objects are tagged with different *+ values to indicate the type of the value.Typical usage will not involve accessing the constructors for this type.  must be used to construct X1 objects or convert them back to original types.epinchA single item in a mapgpinch,Safely attempt to cast a Value into another.hpinchGet the * of a X.VWXYZ[\]^_`abcdefghXYZ[\]^_`abcdefVWgh(c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred)*<#]upinchA pair of field identifier and maybe a value stored in the field. If the value is absent, the field will be ignored.vpinchThe Pinchable type class is implemented by types that can be sent or received over the wire as Thrift payloads.wpinch* tag for this type.$For most custom types, this will be ;, :, or 9. For enums, it will be ?5. If the instance automatically derived with use of Generic, this is not required because it is automatically determined by use of Field or  Enumeration.xpinch Convert an a into a X. For structs, , , and  may be used to construct X objects tagged with ;.ypinchRead a X back into an a. For structs,  and & may be used to retrieve field values.zpinchGPinchable is used to impelment support for automatically deriving instances of Pinchable via generics.{pinch*% tag to use for objects of this type.|pinch4Converts a generic representation of a value into a X.}pinch Converts a X5 back into the generic representation of the object.~pinchImplementation of x based on z.pinchImplementation of y based on z.pinch Construct a u from a field identifier and a v value.pinch Construct a u* from a field identifier and an optional v value.pinch Construct a X tagged with a ; from the given key-value pairs. Optional fields whose values were omitted will be ignored. 3struct [1 .= ("Hello" :: Text), 2 .= (42 :: Int16)]pinch Constructs a X tagged with :. union 1 ("foo" :: ByteString)pinchGiven a field ID and a  Value TStruct, get the value stored in the struct under that field ID. The lookup fails if the field is absent or if it's not the same type as expected by this call's context.pinchGiven a field ID and a  Value TStruct, get the optional value stored in the struct under the given field ID. The value returned is Nothing if it was absent or the wrong type. The lookup fails only if the value retrieved fails to y.pinch Helper to y values by matching TTypes.pinch Helper to x maps.pinch  foldlWithKey#$%uvwxyz{|}~vwxyuz{|}~#$% Safe-Inferred%mpinchAn error occured while processing a thrift call. Signals errors like premature EOF, Thrift protocol parsing failures etc.pinch$Thrift exception type as defined in  https://github.com/apache/thrift/blob/master/doc/specs/thrift-rpc.md#response-struct.pinch+Thrift application exception as defined in  https://github.com/apache/thrift/blob/master/doc/specs/thrift-rpc.md#response-struct.(c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred6;* pinch%Message envelope for Thrift payloads.pinch5Name of the method to which this message is targeted.pinchType of the message.pinchSequence ID of the message.If the clients expect to receive out-of-order responses, they may use the message ID to map responses back to their corresponding requests. If the client does not expect out-of-order responses, they are free to use the same message ID for all messages.The server's contract regarding message IDs is that all responses must have the same message ID as their corresponding requests.pinchContents of the message.pinchType of message being sent.pinchA call to a specific method.1The message body is the request arguments struct.pinchResponse to a call.'The message body is the response union.pinchFailure to make a call.Note: This message type is not1 used for exceptions that are defined under the throws clause of a method. Those exceptions are part of the response union of the method and are received in a Reply7. This message type is used for Thrift-level failures.pinch&One-way call that expects no response.  (c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred)*1689:;2pinch Represents a void result for methods.This should be used as an element in a response union along with  tags. For a method, void setValue(..) throws (1: ValueAlreadyExists alreadyExists, 2: InternalError internalError)/Something similar to the following can be used. data SetValueResponse = SetValueAlreadyExists (Field 1 ValueAlreadyExists) | SetValueInternalError (Field 2 InternalError) | SetValueSuccess Void deriving (Generic) instance Pinchable SetValueResponsepinchData types that represent Thrift enums must have one constructor for each enum item accepting an 2 object tagged with the corresponding enum value. data Role = RoleUser (Enumeration 1) | RoleAdmin (Enumeration 2) deriving Generic instance Pinchable RolepinchFields of data types that represent structs, unions, and exceptions should be wrapped inside & and tagged with the field identifier. data Foo = Foo (Field 1 Text) (Field 2 (Maybe Int32)) deriving Generic instance Pinchable Foo data A = A (Field 1 Int32) | B (Field 2 Text) deriving Generic instance Pinchable FooFields which hold Maybe< values are treated as optional. All fields values must be v to automatically derive a  Pinchable! instance for the new data type.pinch;Implemented by TType tags whose values know how to combine.pinch"Gets the current value of a field. ,let Foo a' _ = {- ... -} a = getField a'pinchPuts a value inside a field. +Foo (putField "Hello") (putField (Just 42))pinch A lens on Field( wrappers for use with the lens library. $person & name . field .~ "new value"pinch"Convenience function to construct  objects. let role = RoleUser enum   (c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred5pinchProtocols define a specific way to convert values into binary and back.pinch Serializes a X into a ByteString builder. Returns a Builder0 and the total length of the serialized content.pinch Serializes a + and its payload into a ByteString builder. Returns a Builder0 and the total length of the serialized content.pinchReads a X4 from a ByteString and returns leftovers from parse.pinchReads a  and its payload.pinchReads a X from a ByteString.pinchReads a # and its payload from a ByteString. (c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred)*6pinch9Provides an implementation of the Thrift Binary Protocol.pinchMap a TType to its type code.pinch+Map a type code to the corresponding TType. (c) Ben Gamari 2015BSD3!Abhinav Gupta  experimental Safe-Inferred)*68`pinchA compact message type.pinch:Provides an implementation of the Thrift Compact Protocol.pinchMap a TType to its type code.pinch+Map a type code to the corresponding TType.pinchThe compact type codepincha four-bit (unshifted) payload (c) Abhinav Gupta 2015BSD3!Abhinav Gupta  experimental Safe-Inferred>tpinchEncode the given v value using the given .7unpack $ encode binaryProtocol ["a" :: ByteString, "b"]"[11,0,0,0,2,0,0,0,1,97,0,0,0,1,98]pinch Decode a v value from the using the given ./let s = pack [11,0,0,0,2,0,0,0,1,97,0,0,0,1,98]5decode binaryProtocol s :: Either String [ByteString]Right ["a","b"]pinch Decode a v value from the using the given ; and also return the "unparsed" portion of the bytestring.(let s = pack [3,0,0,0,5,1,2,3,4,5,0,0,0]decodeWithLeftovers binaryProtocol s :: Either String (ByteString, [Int8])"Right ("\NUL\NUL\NUL",[1,2,3,4,5])pinch Encode the  using the given . let request = GetUserRequest (putField "jsmith") (putField []) message =  "getUser" Call 42 request in encodeMessage binaryProtocol message pinch Decode a  using the given .decodeMessage binaryProtocol bs >>= getMessageBody :: Either String GetUserRequestRight (GetUserRequest {userName = Field "jsmith", userAttributes = Field []})pinchBuild a Message.pinchRead the message contents.This returns a Left result if the message contents do not match the requested type.pinchName of the target method.pinchType of the message.pinch Message ID.pinchMessage payload. This must be an object which serializes into a struct.>#$()*6789:;=>?@ABCDVWXuvwxy>vwxy#$uXVW*()DCB?A@>=;:9876  Safe-InferredB:pinch!A bidirectional transport to readwrite messages fromto.pinchGets up to n bytes. Returns an empty bytestring if EOF is reached.pinchWrites the given bytestring.pinch,Creates a thrift framed transport. See also  https://github.com/apache/thrift/blob/master/doc/specs/thrift-rpc.md#framed-vs-unframed-transport.pinch.Creates a thrift unframed transport. See also  https://github.com/apache/thrift/blob/master/doc/specs/thrift-rpc.md#framed-vs-unframed-transport.pinchRuns a Get parser incrementally, reading more input as necessary until a successful parse has been achieved.pinchGets exactly n bytes. If EOF is reached, an empty string is returned.   Safe-InferredEpinch=Result datatype for void methods not throwing any exceptions.pinch0The Result datatype for a Thrift Service Method.pinch8The Haskell type returned when the Thrift call succeeds.pinchTries to extract the result from a Thrift call. If the call threw any of the Thrift exceptions declared for this Thrift service method, the corresponding Haskell excpetions is thrown using throwIO.pinchRuns the given computation. If it throws any of the exceptions declared in the Thrift service definition, it is caught and converted to the corresponding Haskell result datatype constructor.pinch7A bi-directional channel to read/write Thrift messages.pinchCreates a channel using the same transport/protocol for both directions.pinchCreates a channel. Safe-Inferred")*5Lpinch$Create a handler for a request type.pinch2Handle normal call requests. Must return a result.pinch1Handle oneway requests. Cannot return any result.pinch(Allows passing context information to a ". The context is indexed by type.pinchA Thrift server. Takes the context and the request as input and may produces a reply message.pinch$A single request to a thrift server.pinch)Map the message contained in the request.pinch-Extract the message contained in the request.pinchAdds a new item to the context. If an item with the same type is already part of the context, it will be overwritten.pinchLookup a value in the context.pinchCreates a new thrift server processing requests with the function f.By default, if processing a oneway call fails a haskell exception is thrown which will likely terminate the guilty connection. You may use the 1 combinator to handle this case more gracefully.pinch*Multiplex multiple services into a single .!The service name is added to the ? and may be retrieved using `lookupInContext @ServiceName ctx`.pinchAdd error handlers to a . Exceptions are caught and not re-thrown, but you may do so by calling ioThrow yourself.pinch,Run a Thrift server for a single connection.pinchBuilds an exception reply given the corresponding request message.pinchSelect exceptions to handle.pinch&Error handler for normal method calls.pinchError handler for oneway calls.   Safe-Inferred ")*OpinchA multiplexing thrift client.pinchCalls a Thrift service and returns the result/error data structure. Application-level exceptions defined in the thrift service are returned as part of the result/error data structure.pinch;A call to a Thrift server resulting in the return datatype a.pinchA simple Thrift Client.pinch!Instantiates a new Thrift client.pinchCalls a Thrift service. If an application-level thrift exception as defined in the Thrift service definition is returned by the server, it will be re-thrown using .pinchCreate a new multiplexing thrift client targeting the given service. !"#$%&'()*+,-./0123456789:;<=>??@ABCDEFGHIJKLMMLKNOJPIHQGFEDCRSTUVWXYZ[\]^_`abccdefghijklmnopqqrstuvwxyz{|}~                                           $pinch-0.4.2.0-IDRbW49C4OJFHJTq1R3JrNPinch.Internal.FoldListPinch.Internal.BuilderPinch.Internal.PinchablePinch.Internal.TTypePinch.Internal.ValuePinch.Internal.ExceptionPinch.Internal.MessagePinch.Internal.GenericPinch.ProtocolPinch.Protocol.BinaryPinch.Protocol.CompactPinchPinch.TransportPinch.Internal.RPC Pinch.Server Pinch.Client Paths_pinchPinch.Internal.BitsPinch.Internal.Pinchable.ParserPinch.Pinchable PinchablebaseData.TraversablesequencemapM Data.FoldabletoListfoldrfoldl'Builder runBuilderappendint8word8int16BEint32BEint64BEint64LEdoubleBEdoubleLE byteStringgetSize$fMonoidBuilder$fSemigroupBuilderFoldListfromMap fromFoldablemap replicate replicateM$fMonoidFoldList$fSemigroupFoldList$fHashableFoldList$fNFDataFoldList $fEqFoldList$fTraversableFoldList$fFoldableFoldList$fFunctorFoldList$fShowFoldListParser runParser parserCatch SomeTTypeIsTTypettypeTTypeTBoolTByteTDoubleTInt16TInt32TInt64TBinaryTStructTMapTSetTList TExceptionTUnionTTextTEnum ttypeEqualityttypeEqT$fHashableTType$fIsTTypeTList $fIsTTypeTSet $fIsTTypeTMap$fIsTTypeTStruct$fIsTTypeTBinary$fIsTTypeTInt64$fIsTTypeTInt32$fIsTTypeTInt16$fIsTTypeTDouble$fIsTTypeTByte$fIsTTypeTBool$fShowSomeTType $fEqTType $fShowTType SomeValueValueVBoolVByteVDoubleVInt16VInt32VInt64VBinaryVStructVMapVNullMapVSetVListMapItem castValue valueTType$fHashableSomeValue$fHashableValue$fNFDataSomeValue $fEqSomeValue $fNFDataValue $fEqValue $fShowValue $fShowMapItem$fHashableMapItem$fNFDataMapItem $fEqMapItem$fShowSomeValue FieldPairTagpinchunpinch GPinchableGTaggPinchgUnpinch genericPinchgenericUnpinch.=?=structunion.:.:?$fPinchableSet$fPinchableHashSet$fPinchableMap$fPinchableHashMap $fPinchable[]$fPinchableVector$fPinchableInt64$fPinchableInt32$fPinchableInt16$fPinchableDouble$fPinchableInt8$fPinchableBool$fPinchableText$fPinchableText0$fPinchableByteString$fPinchableByteString0$fPinchableValue ThriftError ExceptionTypeUnknown UnknownMethodInvalidMessageTypeWrongMethodName BadSequenceId MissingResult InternalError ProtocolErrorInvalidTransformInvalidProtocolUnsupportedClientTypeApplicationException appExMessage appExType$fPinchableExceptionType$fPinchableApplicationException$fExceptionApplicationException$fExceptionThriftError$fShowThriftError$fEqThriftError$fShowApplicationException$fEqApplicationException$fShowExceptionType$fEqExceptionType$fEnumExceptionType$fBoundedExceptionTypeMessage messageName messageType messageIdmessagePayload MessageTypeCallReply ExceptionOneway$fNFDataMessageType$fNFDataMessage $fShowMessage $fEqMessage$fGenericMessage$fShowMessageType$fEqMessageType$fDataMessageType$fGenericMessageTypeVoid EnumerationFieldgetFieldputFieldfieldenum$fGPinchable:+:$fGPinchableM1$fGPinchableM10$fGPinchable:*:$fCombinableTStruct$fGPinchableK1$fGPinchableK10$fGPinchableK11$fNFDataEnumeration$fGPinchableK12$fEqVoid $fGenericVoid $fOrdVoid $fShowVoid$fEqEnumeration$fGenericEnumeration$fOrdEnumeration$fShowEnumeration$fBoundedField $fEqField $fEnumField$fFoldableField$fFunctorField$fGenericField$fSemigroupField $fMonoidField $fNFDataField $fOrdField $fShowField$fTraversableFieldProtocolserializeValueserializeMessagedeserializeValue'deserializeMessage'deserializeValuedeserializeMessagebinaryProtocolcompactProtocol$fIsTTypeTStopencodedecodedecodeWithLeftovers encodeMessage decodeMessage mkMessagegetMessageBody Transport writeMessage readMessage ReadResult RRSuccess RRFailureRREOF ConnectioncGetSomecPutframedTransportunframedTransport$fConnectionSocket$fConnectionHandle$fEqReadResult$fShowReadResultUnit ThriftResult ResultTypeunwrapwrap ServiceNameChannel cTransportIn cTransportOut cProtocolIn cProtocolOut createChannelcreateChannel1$fIsStringServiceName$fThriftResultUnit$fPinchableUnit$fEqServiceName$fHashableServiceNameHandler CallHandler OnewayHandler ContextItemContext ThriftServerunThriftServerRequestRCallROnewaymapRequestMessagegetRequestMessage addToContextlookupInContext createServer multiplexonError runConnectionmkApplicationExceptionReply$fMonoidContext$fSemigroupContext$fContextItemServiceName $fShowRequestMultiplexClient ThriftClientcall ThriftCallTCallTOnewayClientclient callOrThrowmultiplexClient$fThriftClientClient$fThriftClientMultiplexClientversiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir w16ShiftL w32ShiftL w64ShiftLSuccessFailurecheckedUnpinchpinchMap Combinable toTypeCode fromTypeCodeCType toCompactCodefromCompactCode compactCode' runGetWith getExactlyGHC.IOthrowIO