Îõ³h$ieƒ´      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³None38ÙõpathPath 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.path–Helper 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 == yNoneNone38Ù pathPath 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.path–Helper 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 == yNone38>À8`,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 ¦@)5path·If 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.6pathæDetermines 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")>pathÓAdd 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/"@pathóIf 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 pathÛReplace/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  . -.OpathConvert a valid directory to a ´.PpathConvert a valid file to a ´.Qpath 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 µ)Rpath 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 µ)SpathSame as 5.TpathSame 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 extension9 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST9/.-, !"#$%&'()*+0123456789:=;<@CDEFQRGHIJOPKLMNST>?AB45?7B7None99 !"+*)('&%#$,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTNone38>Àd¹,ipathSame as m.jpathPath of some type. tó represents the type, whether file or directory. Pattern match to find whether the path is absolute or relative.mpath1Exceptions that can occur during path operations.wpathA directory path.xpath A file path.ypath1A relative path; one without a root. Note that a ..Ò path component to represent the parent directory is not allowed by this library.zpathAn absolute path.{ path Construct a  z w 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  y w using QuasiQuotes. "[absdir|/home|][reldir|chris|] } path Construct a  z x 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  y x 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 ¦@)€path·If 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 t6 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.pathæDetermines 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 t; 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 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 ué 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 uÍ 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 vË 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")‰pathÓAdd 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/"‹pathóIf the file has an extension replace it with the given extension otherwise add the new extension to it. Throws an v? 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Œ pathÛReplace/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: n 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: o 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: p 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: q 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  z w.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  y w.˜pathMake a  z x.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  y x.špathConvert a valid directory to a ´.›pathConvert a valid file to a ´.œpath Convert an absolute or relative ´ to a normalized j representing a directory.Throws: s 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 j representing a file.Throws: r 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 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 extensionŒpathExtension to setpath Old file namepath(New file name with the desired extensionpath Old file namepathExtension to setpath(New file name with the desired extension9ijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ9zyxwjklmnopqrstuv{|}~€‚ƒ„…ˆ†‡‹Ž‘œ’“”•š›–—˜™ižŸ‰ŠŒ5Š77·           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdbedæ!path-0.9.0-IvzdM7m5n242bNPX4d8fxaPath.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 fromSomeDir fromSomeFile parseSomeDir parseSomeFilestripDir isParentOf$fFromJSONKeyPath$fFromJSONKeyPath0$fFromJSONPath$fFromJSONPath0$fFromJSONKeyPath1$fFromJSONKeyPath2$fFromJSONPath1$fFromJSONPath2$fExceptionPathException$fFromJSONSomeBase$fFromJSONSomeBase0$fHashableSomeBase$fToJSONSomeBase$fShowSomeBase$fNFDataSomeBase$fGenericSomeBase $fEqSomeBase $fOrdSomeBase$fShowPathException$fEqPathExceptionbaseGHC.IOFilePathfilepath-1.4.2.1System.FilePath.PosixisValidSystem.FilePath.Windows