)$V      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUNone5Mail address for provided Optional name for the given  Mail address Codomain of Function extracting  of Body of the HTTP request Url to scrape*String encoded in the standard cron formatSend a mail when there's changed data at your scrape target. This needs sendmail to be configured correctly on the host your program runs. TJust execute the provided function when there's changed data at your scrape target."The url to be called using GET#5The callback config to be executed when something in " has changed.0Signals that the last execution of the provided   led to execution of /0Signals that the last execution of the provided   didn't lead to execution of 6  !"#$%&()*+,-./012456789:;<=2  !"#$%()*+,-./01456789:;<=6 %$& !"#102-./()*+,=<;56789:4   !"#$%&()*+,-./012456789:;<=NoneDHelper constructor for   containing  callback.EHelper constructor for   containing  callback.@ABCDEFVGWXHIJKLMYZN[\]O@ABCDEFGHIJKLMNODEFGHNLJKICBA@MO@ABCDEFVGWXHIJKLMYZN[\]O(C) 2015-16 Matthias HerrmannGPL-3matthias.mh.herrmann@gmail.comNoneP_The basic scrape function. It fires a GET request against the url defined within the provided  %. The body is passed to the provided  . The result  of the latter is used to determine whether something has changed on the respective website. If so, the callback configured in   is executed and . is returned. Otherwise / is returned.QRepeat executing P by providing a ). The returned IO action is non blockingRExecute a list of (# in parallel. If validation of any ( fails, ^ containing 5 indexed by the corresponding  is returned.SExecute a list of   in sequence using P= and collect the results in a map containing the respective  as key.T5Clear all mutable state associated with the provided  U5Clear all mutable state ever used by "scrape-changes"_`PQRSTU:  !"#$%()*+,-./01456789:;<=DEPQRSTUPQRSDETU_`PQRSTUa      !"##$%&'()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd-scrape-changes-0.1.0.2-B8GmQ0lzgfYKGzB10lf10CNetwork.ScrapeChanges.DomainNetwork.ScrapeChanges.InternalNetwork.ScrapeChangesData.Text.LazyTextMailAddr _mailAddrName _mailAddrScraperHttpBodyUrlCronScheduleString$fShowMailAddr $fEqMailAddr$fGenericMailAddrMail _mailFrom_mailTo _mailSubject _mailBodymailAddr mailAddrName$fHashableMailAddr $fShowMail$fEqMail $fGenericMailCallbackConfig MailConfig OtherConfigmailBodymailFrom mailSubjectmailTo$fHashableMail ScrapeConfig_scrapeInfoUrl_scrapeInfoCallbackConfig _MailConfig _OtherConfig$fEqCallbackConfig$fEqScrapeConfigScrapeSchedule_scrapeScheduleCron_scrapeScheduleConfig_scrapeScheduleScraper ScrapeResultCallbackCalledCallbackNotCalledscrapeInfoCallbackConfig scrapeInfoUrl$fHashableScrapeConfig$fShowScrapeResultScrapeValidationValidationErrorUrlNotAbsoluteUrlProtocolInvalidMailConfigInvalidMailFromAddrMailConfigInvalidMailToAddrCronScheduleInvalidscrapeScheduleConfigscrapeScheduleCronscrapeScheduleScraper$fShowValidationError$fEqValidationErrorHash MailToAddr MailFromAddr ScrapeInfoUrlmailScrapeConfigotherScrapeConfigvalidateScrapeConfigvalidateCronSchedulereadLatestHashhash' removeHash removeHashesexecuteCallbackConfig loggerNamesaveHashhttpExceptionHandlerscrape repeatScraperepeatScrapeAll scrapeAllclearScrapeConfigclearAllScrapeConfigsvalidateCallbackConfighashPath hashPathDirvalidateMailConfig validateUrl toMimeMail toMimeAddresscreateParentDirsbase Data.EitherLeft CurrentHash LatestHash