h$lhD      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None381pathPath of some base and type.The type variables are:b= @ base, the base location of the path; absolute or relative.t# @ type, whether file or directory.>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/All directories end in a trailing separator. There are no duplicate path separators //, no .., no ./, no ~/, etc.path>Normalized file path representation for the relative path rootpath Convert to a  type.All directories have a trailing slash, so if you want no trailing slash, you can use  from the filepath package.pathHelper function: check if the filepath has any parent directories in it. This handles the logic of checking for different path separators on Windows. path!Same as 'show . Path.toFilePath'.The following property holds: x == y D show x == show y pathString ordering.The following property holds: 'show x `compare` show y D x `compare` y pathString equality.The following property holds: show x == show y D x == yNoneYNone38 CpathPath of some base and type.The type variables are:b= @ base, the base location of the path; absolute or relative.t# @ type, whether file or directory.>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/All directories end in a trailing separator. There are no duplicate path separators //, no .., no ./, no ~/, etc.path>Normalized file path representation for the relative path rootpath Convert to a  type.All directories have a trailing slash, so if you want no trailing slash, you can use  from the filepath package.pathHelper function: check if the filepath has any parent directories in it. This handles the logic of checking for different path separators on Windows.path!Same as 'show . Path.toFilePath'.The following property holds: x == y D show x == show ypathString ordering.The following property holds: 'show x `compare` show y D x `compare` ypathString equality.The following property holds: show x == show y D x == yNone 38>9.pathSame as ".pathPath of some type. t represents the type, whether file or directory. Pattern match to find whether the path is absolute or relative."path1Exceptions that can occur during path operations.,pathA directory path.-path A file path..path1A relative path; one without a root. Note that a .. path component to represent the parent directory is not allowed by this library./pathAn absolute path.0 path Construct a  / , using QuasiQuotes. #[absdir|/|] [absdir|/home/chris|] :Remember: due to the nature of absolute paths a path like [absdir|/home/chris|] may compile on your platform, but it may not compile on another platform (Windows).1 path Construct a  . , using QuasiQuotes. "[absdir|/home|][reldir|chris|] 2 path Construct a  / - using QuasiQuotes. [absfile|/home/chris/foo.txt|] :Remember: due to the nature of absolute paths a path like [absdir|/home/chris/foo.txt|] may compile on your platform, but it may not compile on another platform (Windows).3 path Construct a  . - using QuasiQuotes. +[absdir|/home/chris|][relfile|foo.txt|] 4pathAppend 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 @)5pathIf the directory in the first argument is a proper prefix of the path in the second argument strip it from the second argument, generating a path relative to the directory. Throws )6 if the directory is not a proper prefix of the path.The following properties hold: !stripProperPrefix x (x y) = y$Cases which are proven not possible: 5stripProperPrefix (a :: Path Abs @) (b :: Path Rel @) 5stripProperPrefix (a :: Path Rel @) (b :: Path Abs @)$In other words the bases must match.6pathDetermines if the path in the first parameter is a proper prefix of the path in the second parameter.The following properties hold: not (x `isProperPrefixOf` x) x `isProperPrefixOf` (x y)7path,Change from one directory prefix to another.Throw ); if the first argument is not a proper prefix of the path.replaceProperPrefix $(mkRelDir "foo") $(mkRelDir "bar") $(mkRelFile "foo/file.txt") == $(mkRelFile "bar/file.txt")8path+Take the parent path component from a path.The following properties hold: ;parent (x y) == x parent "/x" == "/" parent "x" == "." On the root (absolute or relative), getting the parent is idempotent: "parent "/" = "/" parent "." = "." 9path Extract the file part of a path.The following properties hold:  filename (p a) == filename a:path*Extract the last directory name of a path.The following properties hold: *dirname $(mkRelDir ".") == $(mkRelDir ".") dirname (p a) == dirname a;path; is the inverse of =. It splits the given file path into a valid filename and a valid extension.splitExtension $(mkRelFile "name.foo" ) == Just ($(mkRelFile "name" ), ".foo" )splitExtension $(mkRelFile "name.foo." ) == Just ($(mkRelFile "name" ), ".foo." )splitExtension $(mkRelFile "name.foo.." ) == Just ($(mkRelFile "name" ), ".foo..")splitExtension $(mkRelFile "name.bar.foo" ) == Just ($(mkRelFile "name.bar"), ".foo" )splitExtension $(mkRelFile ".name.foo" ) == Just ($(mkRelFile ".name" ), ".foo" )splitExtension $(mkRelFile "name..foo" ) == Just ($(mkRelFile "name." ), ".foo" )splitExtension $(mkRelFile "....foo" ) == Just ($(mkRelFile "..." ), ".foo" )Throws * exception if the filename does not have an extension or in other words it cannot be split into a valid filename and a valid extension. The following cases throw an exception, please note that "." and ".." are not valid filenames:%splitExtension $(mkRelFile "name" )%splitExtension $(mkRelFile "name." )%splitExtension $(mkRelFile "name.." )%splitExtension $(mkRelFile ".name" )%splitExtension $(mkRelFile "..name" )%splitExtension $(mkRelFile "...name"); and =6 are inverses of each other, the following laws hold: uncurry addExtension . swap >=> splitExtension == return splitExtension >=> uncurry addExtension . swap == return < path+Get extension from given file path. Throws * exception if the file does not have an extension. The following laws hold: flip addExtension file >=> fileExtension == return fileExtension == (fmap snd) . splitExtension =path!Add extension to given file path.addExtension ".foo" $(mkRelFile "name" ) == Just $(mkRelFile "name.foo" )addExtension ".foo." $(mkRelFile "name" ) == Just $(mkRelFile "name.foo." )addExtension ".foo.." $(mkRelFile "name" ) == Just $(mkRelFile "name.foo.." )addExtension ".foo" $(mkRelFile "name.bar" ) == Just $(mkRelFile "name.bar.foo")addExtension ".foo" $(mkRelFile ".name" ) == Just $(mkRelFile ".name.foo" )addExtension ".foo" $(mkRelFile "name." ) == Just $(mkRelFile "name..foo" )addExtension ".foo" $(mkRelFile "..." ) == Just $(mkRelFile "....foo" ) Throws an + exception if the extension is not valid. A valid extension starts with a .3 followed by one or more characters not including . followed by zero or more . in trailing position. Moreover, an extension must be a valid filename, notably it cannot include path separators. Particularly, .foo.bar9 is an invalid extension, instead you have to first set .foo and then .bar8 individually. Some examples of invalid extensions are:+addExtension "foo" $(mkRelFile "name")+addExtension "..foo" $(mkRelFile "name")+addExtension ".foo.bar" $(mkRelFile "name")+addExtension ".foo/bar" $(mkRelFile "name")>pathAdd extension to given file path. Throws if the resulting filename does not parse.(addFileExtension "txt $(mkRelFile "foo") "foo.txt"3addFileExtension "symbols" $(mkRelFile "Data.List")"Data.List.symbols"4addFileExtension ".symbols" $(mkRelFile "Data.List")"Data.List.symbols"4addFileExtension "symbols" $(mkRelFile "Data.List.")"Data.List..symbols"5addFileExtension ".symbols" $(mkRelFile "Data.List.")"Data.List..symbols"1addFileExtension "evil/" $(mkRelFile "Data.List")/*** Exception: InvalidRelFile "Data.List.evil/"?pathA synonym for >< in the form of an infix operator. See more examples there.&$(mkRelFile "Data.List") <.> "symbols""Data.List.symbols"$$(mkRelFile "Data.List") <.> "evil/"/*** Exception: InvalidRelFile "Data.List.evil/"@pathIf the file has an extension replace it with the given extension otherwise add the new extension to it. Throws an +? exception if the new extension is not a valid extension (see < for validity rules).The following law holds: (fileExtension >=> flip replaceExtension file) file == return fileA pathReplace/add extension to given file path. Throws if the resulting filename does not parse.BpathA synonym for A in the form of an operator.CpathConvert an absolute  to a normalized absolute dir .Throws: # when the supplied path:is not an absolute path contains a ..1 path component representing the parent directoryis not a valid path (See )DpathConvert a relative  to a normalized relative dir .Throws: $ when the supplied path:is not a relative pathis "" contains a ..1 path component representing the parent directoryis not a valid path (See )is all path separatorsEpathConvert an absolute  to a normalized absolute file .Throws: % when the supplied path:is not an absolute pathis a directory path i.e.has a trailing path separatoris . or ends in /. contains a ..1 path component representing the parent directoryis not a valid path (See )FpathConvert a relative  to a normalized relative file .Throws: & when the supplied path:is not a relative pathis ""is a directory path i.e.has a trailing path separatoris . or ends in /. contains a ..1 path component representing the parent directoryis not a valid path (See )Gpath&Convert absolute path to directory to  type.Hpath&Convert relative path to directory to  type.Ipath!Convert absolute path to file to  type.Jpath!Convert relative path to file to  type.KpathMake a  / ,.9Remember: due to the nature of absolute paths this (e.g.  /home/foo) may compile on your platform, but it may not compile on another platform (Windows).LpathMake a  . ,.MpathMake a  / -.9Remember: due to the nature of absolute paths this (e.g.  /home/foo) may compile on your platform, but it may not compile on another platform (Windows).NpathMake a  . -.Opath8Helper to project the contents out of a SomeBase object.prjSomeBase toFilePath (Abs [absfile|/foo/bar/cow.moo|]) == "/foo/bar/cow.moo"Ppath1Helper to apply a function to the SomeBase objectmapSomeBase parent (Abs [absfile|/foo/bar/cow.moo|]) == Abs [absdir|"/foo/bar"|]QpathConvert a valid directory to a .RpathConvert a valid file to a .Spath Convert an absolute or relative  to a normalized  representing a directory.Throws: ( when the supplied path: contains a ..1 path component representing the parent directoryis not a valid path (See )Tpath Convert an absolute or relative  to a normalized  representing a file.Throws: ' when the supplied path:is a directory path i.e.has a trailing path separatoris . or ends in /. contains a ..1 path component representing the parent directoryis not a valid path (See )UpathSame as 5.VpathSame as 6.=pathExtension to addpath Old file namepath9New file name with the desired extension added at the end>pathExtension to addpath Old file namepath9New file name with the desired extension added at the end?path Old file namepathExtension to addpath9New file name with the desired extension added at the end@pathExtension to setpath Old file namepath(New file name with the desired extensionApathExtension to setpath Old file namepath(New file name with the desired extensionBpath Old file namepathExtension to setpath(New file name with the desired extension; !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV;/.-, !"#$%&'()*+0123456789:=;<@POCDEFSTGHIJQRKLMNUV>?AB45?7B7None:q; !"+*)('&%#$,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVNone 38>ge.opathSame as s.ppathPath of some type. t represents the type, whether file or directory. Pattern match to find whether the path is absolute or relative.spath1Exceptions that can occur during path operations.}pathA directory path.~path A file path.path1A relative path; one without a root. Note that a .. path component to represent the parent directory is not allowed by this library.pathAn absolute path. path Construct a   } using QuasiQuotes. #[absdir|/|] [absdir|/home/chris|] :Remember: due to the nature of absolute paths a path like [absdir|/home/chris|] may compile on your platform, but it may not compile on another platform (Windows). path Construct a   } using QuasiQuotes. "[absdir|/home|][reldir|chris|]  path Construct a   ~ using QuasiQuotes. [absfile|/home/chris/foo.txt|] :Remember: due to the nature of absolute paths a path like [absdir|/home/chris/foo.txt|] may compile on your platform, but it may not compile on another platform (Windows). path Construct a   ~ using QuasiQuotes. +[absdir|/home/chris|][relfile|foo.txt|] pathAppend 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 @)pathIf the directory in the first argument is a proper prefix of the path in the second argument strip it from the second argument, generating a path relative to the directory. Throws z6 if the directory is not a proper prefix of the path.The following properties hold: !stripProperPrefix x (x y) = y$Cases which are proven not possible: 5stripProperPrefix (a :: Path Abs @) (b :: Path Rel @) 5stripProperPrefix (a :: Path Rel @) (b :: Path Abs @)$In other words the bases must match.pathDetermines if the path in the first parameter is a proper prefix of the path in the second parameter.The following properties hold: not (x `isProperPrefixOf` x) x `isProperPrefixOf` (x y)path,Change from one directory prefix to another.Throw z; if the first argument is not a proper prefix of the path.replaceProperPrefix $(mkRelDir "foo") $(mkRelDir "bar") $(mkRelFile "foo/file.txt") == $(mkRelFile "bar/file.txt")path+Take the parent path component from a path.The following properties hold: ;parent (x y) == x parent "/x" == "/" parent "x" == "." On the root (absolute or relative), getting the parent is idempotent: "parent "/" = "/" parent "." = "." path Extract the file part of a path.The following properties hold:  filename (p a) == filename apath*Extract the last directory name of a path.The following properties hold: *dirname $(mkRelDir ".") == $(mkRelDir ".") dirname (p a) == dirname apath is the inverse of . It splits the given file path into a valid filename and a valid extension.splitExtension $(mkRelFile "name.foo" ) == Just ($(mkRelFile "name" ), ".foo" )splitExtension $(mkRelFile "name.foo." ) == Just ($(mkRelFile "name" ), ".foo." )splitExtension $(mkRelFile "name.foo.." ) == Just ($(mkRelFile "name" ), ".foo..")splitExtension $(mkRelFile "name.bar.foo" ) == Just ($(mkRelFile "name.bar"), ".foo" )splitExtension $(mkRelFile ".name.foo" ) == Just ($(mkRelFile ".name" ), ".foo" )splitExtension $(mkRelFile "name..foo" ) == Just ($(mkRelFile "name." ), ".foo" )splitExtension $(mkRelFile "....foo" ) == Just ($(mkRelFile "..." ), ".foo" )Throws { exception if the filename does not have an extension or in other words it cannot be split into a valid filename and a valid extension. The following cases throw an exception, please note that "." and ".." are not valid filenames:%splitExtension $(mkRelFile "name" )%splitExtension $(mkRelFile "name." )%splitExtension $(mkRelFile "name.." )%splitExtension $(mkRelFile ".name" )%splitExtension $(mkRelFile "..name" )%splitExtension $(mkRelFile "...name") and 6 are inverses of each other, the following laws hold: uncurry addExtension . swap >=> splitExtension == return splitExtension >=> uncurry addExtension . swap == return  path+Get extension from given file path. Throws { exception if the file does not have an extension. The following laws hold: flip addExtension file >=> fileExtension == return fileExtension == (fmap snd) . splitExtension path!Add extension to given file path.addExtension ".foo" $(mkRelFile "name" ) == Just $(mkRelFile "name.foo" )addExtension ".foo." $(mkRelFile "name" ) == Just $(mkRelFile "name.foo." )addExtension ".foo.." $(mkRelFile "name" ) == Just $(mkRelFile "name.foo.." )addExtension ".foo" $(mkRelFile "name.bar" ) == Just $(mkRelFile "name.bar.foo")addExtension ".foo" $(mkRelFile ".name" ) == Just $(mkRelFile ".name.foo" )addExtension ".foo" $(mkRelFile "name." ) == Just $(mkRelFile "name..foo" )addExtension ".foo" $(mkRelFile "..." ) == Just $(mkRelFile "....foo" ) Throws an | exception if the extension is not valid. A valid extension starts with a .3 followed by one or more characters not including . followed by zero or more . in trailing position. Moreover, an extension must be a valid filename, notably it cannot include path separators. Particularly, .foo.bar9 is an invalid extension, instead you have to first set .foo and then .bar8 individually. Some examples of invalid extensions are:+addExtension "foo" $(mkRelFile "name")+addExtension "..foo" $(mkRelFile "name")+addExtension ".foo.bar" $(mkRelFile "name")+addExtension ".foo/bar" $(mkRelFile "name")pathAdd extension to given file path. Throws if the resulting filename does not parse.(addFileExtension "txt $(mkRelFile "foo") "foo.txt"3addFileExtension "symbols" $(mkRelFile "Data.List")"Data.List.symbols"4addFileExtension ".symbols" $(mkRelFile "Data.List")"Data.List.symbols"4addFileExtension "symbols" $(mkRelFile "Data.List.")"Data.List..symbols"5addFileExtension ".symbols" $(mkRelFile "Data.List.")"Data.List..symbols"1addFileExtension "evil/" $(mkRelFile "Data.List")/*** Exception: InvalidRelFile "Data.List.evil/"pathA synonym for < in the form of an infix operator. See more examples there.&$(mkRelFile "Data.List") <.> "symbols""Data.List.symbols"$$(mkRelFile "Data.List") <.> "evil/"/*** Exception: InvalidRelFile "Data.List.evil/"pathIf the file has an extension replace it with the given extension otherwise add the new extension to it. Throws an |? exception if the new extension is not a valid extension (see  for validity rules).The following law holds: (fileExtension >=> flip replaceExtension file) file == return file pathReplace/add extension to given file path. Throws if the resulting filename does not parse.pathA synonym for  in the form of an operator.pathConvert an absolute  to a normalized absolute dir .Throws: t when the supplied path:is not an absolute path contains a ..1 path component representing the parent directoryis not a valid path (See )pathConvert a relative  to a normalized relative dir .Throws: u when the supplied path:is not a relative pathis "" contains a ..1 path component representing the parent directoryis not a valid path (See )is all path separatorspathConvert an absolute  to a normalized absolute file .Throws: v when the supplied path:is not an absolute pathis a directory path i.e.has a trailing path separatoris . or ends in /. contains a ..1 path component representing the parent directoryis not a valid path (See )pathConvert a relative  to a normalized relative file .Throws: w when the supplied path:is not a relative pathis ""is a directory path i.e.has a trailing path separatoris . or ends in /. contains a ..1 path component representing the parent directoryis not a valid path (See )path&Convert absolute path to directory to  type.path&Convert relative path to directory to  type.path!Convert absolute path to file to  type.path!Convert relative path to file to  type.pathMake a   }.9Remember: due to the nature of absolute paths this (e.g.  /home/foo) may compile on your platform, but it may not compile on another platform (Windows).pathMake a   }.pathMake a   ~.9Remember: due to the nature of absolute paths this (e.g.  /home/foo) may compile on your platform, but it may not compile on another platform (Windows).pathMake a   ~.path8Helper to project the contents out of a SomeBase object.prjSomeBase toFilePath (Abs [absfile|/foo/bar/cow.moo|]) == "/foo/bar/cow.moo"path1Helper to apply a function to the SomeBase objectmapSomeBase parent (Abs [absfile|/foo/bar/cow.moo|]) == Abs [absdir|"/foo/bar"|]pathConvert a valid directory to a .pathConvert a valid file to a .path Convert an absolute or relative  to a normalized p representing a directory.Throws: y when the supplied path: contains a ..1 path component representing the parent directoryis not a valid path (See )path Convert an absolute or relative  to a normalized p representing a file.Throws: x when the supplied path:is a directory path i.e.has a trailing path separatoris . or ends in /. contains a ..1 path component representing the parent directoryis not a valid path (See )pathSame as .pathSame as .pathExtension to addpath Old file namepath9New file name with the desired extension added at the endpathExtension to addpath Old file namepath9New file name with the desired extension added at the endpath Old file namepathExtension to addpath9New file name with the desired extension added at the endpathExtension to setpath Old file namepath(New file name with the desired extensionpathExtension to setpath Old file namepath(New file name with the desired extensionpath Old file namepathExtension to setpath(New file name with the desired extension;opqrstuvwxyz{|}~;~}pqrstuvwxyz{|o577           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijhkj!path-0.9.2-2Irdd6ZnAkFHzbRma7tm5zPath.Internal.PosixPath.Internal.Windows Path.Posix Path.WindowsSystem.FilePathdropTrailingPathSeparator Path.InternalPath relRootFP toFilePath hasParentDir$fLiftLiftedRepPath$fHashablePath$fToJSONKeyPath $fToJSONPath $fNFDataPath $fShowPath $fOrdPath$fEqPath $fDataPath $fGenericPathPathParseExceptionSomeBaseAbsRel PathException InvalidAbsDir InvalidRelDirInvalidAbsFileInvalidRelFile InvalidFile InvalidDirNotAProperPrefixHasNoExtensionInvalidExtensionDirFileabsdirreldirabsfilerelfilestripProperPrefixisProperPrefixOfreplaceProperPrefixparentfilenamedirnamesplitExtension fileExtension addExtensionaddFileExtension<.>replaceExtensionsetFileExtension-<.> parseAbsDir parseRelDir parseAbsFile parseRelFile fromAbsDir fromRelDir fromAbsFile fromRelFilemkAbsDirmkRelDir mkAbsFile mkRelFile prjSomeBase mapSomeBase fromSomeDir fromSomeFile parseSomeDir parseSomeFilestripDir isParentOf$fFromJSONKeyPath$fFromJSONKeyPath0$fFromJSONPath$fFromJSONPath0$fFromJSONKeyPath1$fFromJSONKeyPath2$fFromJSONPath1$fFromJSONPath2$fExceptionPathException$fFromJSONSomeBase$fFromJSONSomeBase0$fHashableSomeBase$fToJSONSomeBase$fShowSomeBase$fNFDataSomeBase$fGenericSomeBase $fEqSomeBase $fOrdSomeBase$fShowPathException$fEqPathException $fDataDir $fDataFile $fDataRel $fDataAbsbaseGHC.IOFilePathfilepath-1.4.2.1System.FilePath.PosixisValidSystem.FilePath.Windows