úÎHYEÇ%      !"#$None0Path of some base and type.>Internally is a string. The string can be of two formats only:  File format: file.txt,  foo/bar.txt,  /foo/bar.txtDirectory format: foo/,  /foo/bar/UAll directories end in a trailing separator. There are no duplicate path separators //, no .., no ./, no ~/, etc.Same as .The following property holds: x == y "a show x == show yString ordering.The following property holds: 'show x `compare` show y "a x `compare` yString equality.The following property holds: show x == show y "a x == y© 2015 2016 FP Complete BSD 3 clause%Chris Done <chrisdone@fpcomplete.com> experimentalportableNone09;CM"Exception when parsing a location.A directory path.  A file path. 1A relative path; one without a root. Note that a .& as well as any path starting with a ..… is not a valid relative path. In other words, a relative path is always strictly under the directory tree to which it is relative. An absolute path. Convert an absolute % to a normalized absolute dir .Throws:  when the supplied path:is not an absolute path contains a .. anywhere in the pathis not a valid path (See ) Convert a relative % to a normalized relative dir .Throws:  when the supplied path:is not a relative path is any of "", . or .. contains .. anywhere in the pathis not a valid path (See )Convert an absolute % to a normalized absolute file .Throws:  when the supplied path:is not an absolute pathhas a trailing path separator contains .. anywhere in the pathends in /.is not a valid path (See )&$Is the string a valid absolute file?Convert a relative % to a normalized relative file .Throws:  when the supplied path:is not a relative pathhas a trailing path separatoris "", . or .. contains .. anywhere in the pathis not a valid path (See )'$Is the string a valid relative file?(–Helper function: check if the filepath has any parent directories in it. This handles the logic of checking for different path separators on Windows.Make a 'Path Abs Dir'.9Remember: due to the nature of absolute paths this (e.g.  /home/fooW) may compile on your platform, but it may not compile on another platform (Windows).Make a 'Path Rel Dir'.Make a 'Path Abs File'.9Remember: due to the nature of absolute paths this (e.g.  /home/fooW) may compile on your platform, but it may not compile on another platform (Windows).Make a 'Path Rel File'. Convert to a % type.VAll directories have a trailing slash, so if you want no trailing slash, you can use  from the filepath package.&Convert absolute path to directory to % type.&Convert relative path to directory to % type.!Convert absolute path to file to % type.!Convert relative path to file to % type.Append two paths.6The following cases are valid and the equalities hold: =$(mkAbsDir x) </> $(mkRelDir y) = $(mkAbsDir (x ++ "/" ++ y)) ?$(mkAbsDir x) </> $(mkRelFile y) = $(mkAbsFile (x ++ "/" ++ y)) =$(mkRelDir x) </> $(mkRelDir y) = $(mkRelDir (x ++ "/" ++ y)) ?$(mkRelDir x) </> $(mkRelFile y) = $(mkRelFile (x ++ "/" ++ y))1The following are proven not possible to express: $(mkAbsFile &) </> x $(mkRelFile &) </> x x </> $(mkAbsFile &) x </> $(mkAbsDir &)IStrip directory from path, making it relative to that directory. Throws )* if directory is not a parent of the path.The following properties hold: stripDir x (x </> y) = y$Cases which are proven not possible: ,stripDir (a :: Path Abs &) (b :: Path Rel &) ,stripDir (a :: Path Rel &) (b :: Path Abs &)$In other words the bases must match.>Is p a parent of the given location? Implemented in terms of . The bases must match.The following properties hold: not (x  x) x  (x </> y):Take the absolute parent directory from the absolute path.The following properties hold: parent (x </> y) == x.On the root, getting the parent is idempotent: parent (parent "/") = "/" Extract the file part of a path.The following properties hold:  filename (p </> a) == filename a*Extract the last directory name of a path.The following properties hold: dirname (p </> a) == dirname a*)Internal use for normalizing a directory.)+,-.) / &'(0*1 !"#   $+,-.) / &'(0*1 !"#2      !"#$%&'()*+,-./012345678"path-0.5.10-9cmjiWFN1x2HCokpjCm2C6 Path.InternalPath toFilePathSystem.FilePathisValiddropTrailingPathSeparator $fToJSONPath $fNFDataPath $fShowPath $fOrdPath$fEqPathPathParseExceptionDirFileRelAbs parseAbsDir parseRelDir parseAbsFile parseRelFilemkAbsDirmkRelDir mkAbsFile mkRelFile fromAbsDir fromRelDir fromAbsFile fromRelFilestripDir isParentOfparentfilenamedirname$fExceptionPathParseException$fFromJSONPath$fFromJSONPath0$fFromJSONPath1$fFromJSONPath2$fShowPathParseExceptionbaseGHC.IOFilePath validAbsFile validRelFile hasParentDirCouldn'tStripPrefixDir normalizeDir InvalidAbsDir InvalidRelDirInvalidAbsFileInvalidRelFile parseJSONWithcurDirNormalizedFPnormalizeFilePath