Îõ³h$–UÆ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE7Concurrently run actions until one succeeds or all fail(c) Eric Mertens, 2020ISCemertens@gmail.com Safe-Inferred+Ù3Fhookup#microsecond delay between attempts hookuprelease unneeded success hookupordered list of attempts F?Hack into the internals of OpenSSL to add missing functionality(c) Eric Mertens, 2016ISCemertens@gmail.comNone LhookupäAdd hostname checking to the certificate verification step. Partial wildcards matching is disabled.hookup hostname &SOCKS5 network protocol implementation(c) Eric Mertens, 2018ISCemertens@gmail.comNoneè~ Ghookup;Server message used to indicate result of client's request.HhookupÉClient message used to request a network operation from the SOCKS server.Ihookup?Initial SOCKS sent by server with chosen authentication method.JhookupÊInitial SOCKS sent by client with proposed list of authentication methods.Khookup%proposed methods (maximum length 255)Lhookup2Network host identified by address or domain name.MhookupIPv4 host addressNhookupIPv6 host addressOhookup Domain name (maximum length 255)PhookupNetwork host and port number hookupSOCKS command reply codesQhookupSOCKS client commandsRhookupSOCKS authentication methods0GSTUHVWXIYZJ[KLMNOP\  Q]^_R`abcdefghijk2Network connections generalized over TLS and SOCKS(c) Eric Mertens, 2016ISCemertens@gmail.comNone+É%hookup­A connection to a network service along with its read buffer used for line-oriented protocols. The connection could be a plain network connection, SOCKS connected, or TLS.hookup3Type for errors that can be thrown by this package.hookupFailure during  getAddrInfo resolving remote hosthookupFailure during 2 to remote hosthookupFailure during 6hookupIncomplete line during 6hookup4Socks command rejected by server by given reply codehookup,Socks authentication method was not acceptedhookup3Socks server sent an invalid message or no message.hookup+Domain name was too long for SOCKS protocolhookupãTLS connection parameters. These parameters are passed to OpenSSL when making a secure connection. hookupPath to client certificate!hookupPath to client private key"hookupPrivate key decryption password#hookupPath to CA certificate bundle$hookup OpenSSL cipher suite name (e.g. "HIGH")%hookup#Disables certificate checking when l&hookupSOCKS connection parameters(hookupSOCKS server host)hookupSOCKS server port*hookupParameters for 2.Common defaults for fields:  defaultFamily, 1When a &Ñ is provided the connection will be established using a SOCKS (version 5) proxy.When a Ú is provided the connection negotiate TLS at connect time in order to protect the stream.ìThe binding hostname can be used to force the connect to use a particular interface or IP protocol version.,hookupDestination host-hookupDestination TCP port.hookupOptional SOCKS parameters/hookupOptional TLS parameters0hookupSource address to bind1hookupÍDefault values for TLS that use no client certificates, use system CA root, "HIGH", cipher suite, and which validate hostnames.2hookupÊOpen network connection to TCP service specified by the given parameters.-The resulting connection MUST be closed with 4 to avoid leaking resources.Throws m, , n, 3hookup Create a new Õ using an already connected socket. This will attempt to start TLS if configured but will ignore any SOCKS server settings as it is assumed that the socket is already actively connected to the intended service.Throws n4hookupClose network connection.5hookupÆReceive the next chunk from the stream. This operation will first return the buffer if it contains a non-empty chunk. Otherwise it will request up to the requested number of bytes from the stream.Throws: m, o, n6hookup2Receive a line from the network connection. Both "\r\n" and "\n" are recognized. Returning p< means that the peer has closed its half of the connection. Unterminated lines will raise a ø exception. This can happen if the peer transmits some data and closes its end without transmitting a line terminator.Throws: o, n, , m7hookupPush a q¡ onto the buffer so that it will be the first bytes to be read on the next receive operation. This could perhaps be useful for putting the unused portion of a 5" back into the buffer for future 6 or 5 operations.8hookupÿSend bytes on the network connection. This ensures the whole chunk is transmitted, which might take multiple underlying sends.Throws: m, n:hookup#Get peer certificate if one exists.;hookup#Get peer certificate if one exists.Chookupr" implemented for prettier messages2hookupparameters hookupopen connection 3hookupparameters hookupconnected socket hookupopen connection 4hookupopen connection 5hookupopen connection hookupmaximum underlying recv size hookupnext chunk from stream 6hookupopen connection hookupmaximum line length hookupnext line or end-of-stream 7hookupconnection hookupnew head of buffer 8hookupopen connection hookupchunk 9hookupconnection params hookup hostname ?   !"#$%&'()*+,-./0123456789:;<=>?@AÈ23495687*+,-./0&'() !"#$%1   ;:<=>?@Aó      !"##$%&'()**+,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTIUVJWXKYLRZ[\]^_`abcdefghijklmnopoqlrstuvlwxù!hookup-0.6-9HtyX95rCzE9B7xszpmYRAHookupHookup.OpenSSLHookup.Concurrent Hookup.Socks5)HsOpenSSL-0.11.5.1-In6gjtBuo3RGWb7ozREtLm OpenSSL.PEMPwTTY PwCallbackPwBSPwStrPwNonePemPasswordSupplywithDefaultPassword getPubKeyDerinstallVerification CommandReplyAddrNotSupportedCmdNotSupported TTLExpiredConnectionRefusedHostUnreachableNetUnreachable NotAllowedGeneralFailure Succeeded ConnectionConnectionFailureHostnameResolutionFailure LineTooLong LineTruncated SocksErrorSocksAuthenticationErrorSocksProtocolErrorSocksBadDomainName TlsParamstpClientCertificatetpClientPrivateKeytpClientPrivateKeyPasswordtpServerCertificate tpCipherSuite tpInsecure SocksParamsspHostspPortConnectionParamscpHostcpPortcpSockscpTlscpBinddefaultTlsParamsconnectconnectWithSocketcloserecvrecvLineputBufsend upgradeTlsgetPeerCertificategetClientCertificategetPeerCertFingerprintSha1getPeerCertFingerprintSha256getPeerCertFingerprintSha512getPeerPubkeyFingerprintSha1getPeerPubkeyFingerprintSha256getPeerPubkeyFingerprintSha512$fExceptionConnectError$fExceptionConnectionFailure$fShowConnectionFailure$fShowConnectErrorconcurrentAttemptsResponseRequest ServerHello ClientHello cHelloMethodsHostIPv4IPv6 DomainNameAddressCommand AuthMethodrspReply rspAddress reqCommand reqAddress sHelloMethodConnectBind UdpAssociateAuthNoAuthenticationRequired AuthGssApiAuthUsernamePasswordAuthNoAcceptableMethodsbuildClientHelloparseClientHellobuildServerHelloparseServerHello buildRequest parseRequest buildResponse parseResponseghc-prim GHC.TypesTruebaseGHC.IO.ExceptionIOErrorOpenSSL.Session ProtocolErrorConnectionAbruptlyTerminated GHC.MaybeNothingbytestring-0.10.10.0Data.ByteString.Internal ByteStringGHC.Exception.TypedisplayException