h&47      !"#$%&'()*+,-./0123456 (c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;?   (c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;? dr-cabal(Read a list of entries from a JSON file.8Exits process with an error message on decoding failure.!dr-cabal2Write entries as a pretty JSON to the output file. ! !(c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/235;?#dr-cabalDon't read from the file and don't store the results in the file$dr-cabal!Store current results in the file%dr-cabal+Read previously saved results from the file7dr-cabalAll possible commands. "#$%&'()*+, *+,&'()"#$%(c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;?9-./-./(c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;? 8dr-cabalTake a log of Cabal events and derive a critical path, which is the longest stretch of dependent packages such that the sum of their build times determines the total wall clock time.The algorithm works this way: 1. Find the very last event in the log and a corresponding library L. 2. Find when L first emerges in the log (which is when its build started). 3. If this is the very first entry of the log, exit. 4. Find which build just finished before L's build started and a corresponding library L'. 5. Set L := L' and return to Step 2.00(c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;? 1dr-cabal&Get the width of the current terminal.This function exits the process with the message if it can't get the width of the current terminal.2dr-cabalClears the the  screenHeight number of lines in the screen. Pass the number of lines in the output to clear the entire screen.3dr-cabalRun action in the alternate buffer and return to the normal screen after exception or SIGINT.NOTE: This function always returns to the normal screen after the action. If you want to print something to the normal screen use the result of the given action afterwards.123123(c) 2019 Alexander Gugel (c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;? 9dr-cabal A data type:dr-cabalInitial message;dr-cabalNew line received from the stdinReaderWorker. Update the chart.<dr-cabalNo new lines from stdin%. Simply wait and update the spinner.=dr-cabalFinished reading lines from stdin>dr-cabalAction returned by the stdinReaderWorker.?dr-cabalProduce the initial message@dr-cabalLine content read from stdin with timestampAdr-cabalEOF reached for stdin4dr-cabalWatch build entries from stdin7 and interactively update the chart and current status.Bdr-cabalAdd >" to end of the queue in the given C.Ddr-cabalProduce the next E by reading the current > and removing it from the queue.4dr-cabalA function to draw chartdr-cabal!Returns the final list of entriesFdr-cabal/Mutable reference to the queue of input actionsdr-cabalA function to draw the chart44(c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;?Gdr-cabal Chart typedr-cabalTerminal widthdr-cabal Time entries55 (c) 2022 Dmitrii KovanikovMPL-2.0'Dmitrii Kovanikov  ExperimentalPortable Safe-Inferred"%&(/25;?.66      !"#$%&'()*+,-../0123456789:;< =>?,@ABCDEFGHIJKLMNO'dr-cabal-0.2.0.0-6GxZMvBwiBFIu5ypM9P49u DrCabal.Model DrCabal.Json DrCabal.CliDrCabal.Profile.FormatDrCabal.Profile.StackedDrCabal.Terminal DrCabal.WatchDrCabal.ProfileDrCabalEntry entryStatus entryStart entryLibraryStatus Downloading DownloadedStartingBuildingHaddock Installing CompletedLinelineTimelineLineStyleStacked parseLine$fFromJSONStatus$fToJSONStatus$fFromJSONEntry $fToJSONEntry $fShowEntry $fShowStatus $fReadStatus $fEqStatus $fOrdStatus $fEnumStatus$fBoundedStatus $fShowLine readEntries writeEntriesFileModeNoneOutputInput ProfileArgsprofileArgsStyleprofileArgsFileModeCommandProfile readCommandfmtfmtNanosfmtDecimalPlacescreateStackedChartgetTerminalWidth clearScreenwithAlternateBuffer watchBuild runProfilemaincommandPcomputeCriticalPathGreeting UpdateChartWaitFinish InputActionStartConsumeEnd pushActionbase GHC.IORefIORef nextCommandInteractiveCommandinteractiveWorker createChart