ϊΞH―@ο–      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•NoneT       None 5<=DIRTg,Sets a custom variable in the sandbox monad.h-Checks that a custom sandbox variable is set.i]Returns the value of a previously set sandbox variable (or a provided default value if unset)jUnsets a custom variable.b !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ Process NamePath to the application binary%Arguments to pass on the command-lineATime to wait (in s.) before checking that the process is still up!Which outputs to capture (if any)Evironment variables%Working directory for the new processKLMNOPQRSTUVWXYZ[\]^_`abcdefg!Variable key for future referenceVariable valueh Variable keyi Variable keyDefault value if not foundj Variable keyklmnopqrstu` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsb@?>ABC456789:;<='()*+,-./0123 !"#$%&DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoputqrs> !"#$%&' ()*+,-./01234 56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu)Benjamin Surma <benjamin.surma@gmail.com>NoneTxDOptional parameters when registering a process in the Sandbox monad.{ATime to wait (in s.) before checking that the process is still up|!Which outputs to capture (if any)}Environment variables~%Working directory for the new process@Creates a sandbox and execute the given actions in the IO monad.)Registers a process in the Sandbox monad.‚[Communicates with a sandboxed process via TCP and returns the answered message as a string.ƒˆStarts the given process, runs the action, then stops the process. The process is managed by the functions start and stop respectively.„[Helper function: starts a process, wait for it to terminate and return its captured output.…0Starts a previously registered process (verbose)†=Starts all registered processes (in their registration order)‡7Gracefully stops a previously started process (verbose)ˆ!Sends a POSIX signal to a process‰OGracefully stops all registered processes (in their reverse registration order)Š:Returns the effective binary path of a registered process.‹UReturns the handles used to communicate with a registered process using standard I/O.Œ6Returns the last captured output of a started process.4Interacts with a sandboxed process via standard I/O.ŽDReturns an unbound user TCP port and stores it for future reference.2Explicitely sets a port to be returned by getPort.=Creates a temporary file in the sandbox and returns its path.‘9Returns the path of a file previously created by setFile.’BTemporarily sets a variable for the execution of the given action.“EReturns the temporary directory used to host the sandbox environment.”#Executes the given action silently. xyz{|}~–Name of the sandbox environmentAction to perform€ Process namePath to the application binary%Arguments to pass on the command-lineProcess settings‚Name of the registered port  Input string.Time to wait before timeout (in milli-seconds)ƒ Process name Action to run„… Process name†—‡ Process nameˆ Process nameSignal to send‰Š Process name‹ Process nameŒ Process name Process name Input string.Time to wait before timeout (in milli-seconds)ŽPort name for future referencePort name for future referenceTCP port numberFile name for future reference File contents‘File name used during setFile’ Variable keyVariable value Action to run“”Action to execute•1 !"#$%&>ACghijxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”3>xyz{|{|}~ !"#$%&€AC„ƒ…†‡‰ˆ”‚Œ‹ŽŠ‘“higj’xyz{|{|}~–€‚ƒ„…†—‡ˆ‰Š‹ŒŽ‘’“”•˜  !"#$%&'()*+,-./01123456789:;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ(test-sandbox-0.1.7-SY1YJEl0tZImdhi94zjWu Test.SandboxTest.Sandbox.ProcessTest.Sandbox.InternalsbaseControl.Monad.IO.ClassliftIO0data-default-class-0.1.2.0-GsXqKN6o1X9jr0fF5qCVDData.Default.Classdef+lifted-base-0.2.3.11-6XhX8qGbmdEFXynkaM2mbPControl.Exception.Liftedfinallybracket mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.Error.Class catchError throwError ProcessInfopiPidpiStatpiPpidpiPgidgetProcessInfogetProcessInfosgetProcessGroupIDs getProcessIDscleanUpProcessGroupIDs$fShowProcessInfo$fEqProcessInfo$fReadProcessInfoSandboxTestOptionsstoSeedstoMaximumGeneratedTests"stoMaximumUnsuitableGeneratedTestsstoMaximumTestSize SandboxSeedSandboxFixedSeedSandboxRandomSeedSandboxedProcessInstanceRunningInstanceStoppedInstanceCapture CaptureStdout CaptureStderr CaptureBothCaptureStdoutWithFileCaptureStderrWithFileCaptureBothWithFileSandboxedProcessspNamespBinaryspArgsspWait spCapture spInstancespPidspPGid spHandlesspEnvsspCwd SandboxStatessName ssDataDir ssProcessesssProcessOrderssAllocatedPortsssAvailablePortsssFiles ssVariablesSandboxSandboxStateRefPort runSandbox errorHandler runSandbox'getputprettyheaderfooternewSandboxStateregisterProcessisValidProcessName getProcess updateProcess secondInΒ΅ssetFile' bufferSizehReadWithTimeout sendToPort getNewPort isBindable' isBindable startProcessformatCommandLine stopProcessgetAvailablePidscleanUpProcesseshSignalProcess killProcess hGetProcessIDinteractWithProcessgetProcessInputHandlegetProcessCapturedOutputHandlegetProcessBinaryfindExecutables tryBinarygetProcessCandidateBinariesexpandwhenM setVariable checkVariable getVariable unsetVariable isVerbose verbosityKey isCleanUp cleanUpKey displayBannerinstallSignalHandlers putOptions getOptionsoptionsVariable$fSerializeSandboxTestOptions$fSerializeSandboxSeed$fGenericSandboxSeed$fGenericSandboxTestOptionsProcessSettingsProcessSettings2psWait psCapturepsEnvpsCwdsandbox withSandboxregistersendTo withProcessrunstartstartAllstopsignalstopAll getBinary getHandlesreadLastCapturedOutput interactWithgetPortsetPortsetFilegetFile withVariable getDataDirsilently$fDefaultProcessSettingscleanUpwaitFor