c      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b None C6Specifies a location of an event within the input textLine number of the eventColumn number of the event*Byte index of event from start of document The number of bytes in the event:Parse error, consisting of message text and error locationcObtain C value from Haskell d.-efg hijklmnopqrstuvwxyz{c|Entity decoder"Whether to include input locations}~  #efg  hijklmnopqrstuvwxyz{c|}~None %&09;T 8An exception indicating an XML parse error, used by the  ..Throwing variants."An abstraction for any string type you want to use as xml text (that is, attribute values or element text content). If you want to use a new string type with hexpat#, you must make it an instance of "..TThe encoding parameter, if provided, overrides the document's encoding declaration./%If provided, entity references (i.e. &nbsp;K and friends) will be decoded into text using the supplied lookup function1Parse a generalized list of ByteStrings containing XML to SAX events. In the event of an error, FailDocument is the last element of the output list.2Parse a generalized list of ByteStrings containing XML to SAX events. In the event of an error, FailDocument is the last element of the output list.3oLazily parse XML to SAX events. In the event of an error, FailDocument is the last element of the output list.4IA variant of parseSAX that gives a document location with each SAX event.5ALazily parse XML to SAX events. In the event of an error, throw . parseThrowing< can throw an exception from pure code, which is generally a bad way to handle errors, because Haskell's lazy evaluation means it's hard to predict where it will be thrown from. However, it may be acceptable in situations where it's not expected during normal operation, depending on the design of your program.6kA variant of parseSAX that gives a document location with each SAX event. In the event of an error, throw .parseLocationsThrowing< can throw an exception from pure code, which is generally a bad way to handle errors, because Haskell's lazy evaluation means it's hard to predict where it will be thrown from. However, it may be acceptable in situations where it's not expected during normal operation, depending on the design of your program.( !"#$%&'()*+,-./01 Parse optionsInput text (a lazy ByteString)2 Parse optionsInput text (a lazy ByteString) Parse optionsInput text (a lazy ByteString)&True to add locations to binary outputFetch extra dataFetch a value for failure case 3 Parse optionsInput text (a lazy ByteString)4 Parse optionsInput text (a lazy ByteString)5 Parse optionsinput text (a lazy ByteString)6Optional encoding overrideInput text (a lazy ByteString)789:;.  !"#$%&'()*+,-./0123456. ,-./ !3142650"#$%&'()*+  !" #$%&'()*+,-./0123456789:;None :<=DORT%@`A class of node types where an Element can be constructed given a tag, attributes and children.AGeneric element constructor.CIs the given node an element?DIs the given node text?EIs the given node CData?F+Is the given node a processing instruction?GIs the given node a comment?HrExtract all text content from inside a tag into a single string, including any text contained in children. This excludes the contents of comments or processing instructions-. To get the text for these node types, use O.I,Is the given node a tag with the given name?JLGet the name of this node if it's an element, return empty string otherwise.KAIs the given node a Processing Instruction with the given target?L\Get the target of this node if it's a Processing Instruction, return empty string otherwise.MMGet the attributes of a node if it's an element, return empty list otherwise.NGGet children of a node if it's an element, return empty list otherwise.OkGet this node's text if it's a text node, comment, or processing instruction, return empty text otherwise.P0Modify name if it's an element, no-op otherwise.Q6Modify attributes if it's an element, no-op otherwise.RFModify children (non-recursively) if it's an element, no-op otherwise.SDMap an element non-recursively, allowing the tag type to be changed.T>Map all tags (both tag names and attribute names) recursively.UwChange a node recursively from one container type to another, with a specified function to convert the container type.VGeneric text node constructor.WxA type function to give the type of a list of nodes, using the appropriate list type for the specified node type, e.g. ListOf (UNode Text)XaType shortcut for attributes with unqualified names where tag and text are the same string type.YType shortcut for attributesZrExtract all text content from inside a tag into a single string, including any text contained in children. This excludes the contents of comments or processing instructions-. To get the text for these node types, use O.[Change a list of nodes recursively from one container type to another, with a specified function to convert the container type.\Change a node recursively from one container type to another. This extracts the entire tree contents to standard lists and re-constructs them with the new container type. For monadic list types used in hexpat-iteratee# this operation forces evaluation. ]Change a list of nodes recursively from one container type to another. This extracts the entire tree contents to standard lists and re-constructs them with the new container type. For monadic list types used in hexpat-iteratee" this operation forces evaluation.^9Get the value of the attribute having the specified name._Set the value of the attribute with the specified name to the value, overwriting the first existing attribute with that name if present.`7Delete the first attribute matching the specified name.asetAttribute if Just, deleteAttribute if Nothing.bhGenerically convert an element of one node type to another. Useful for adding or removing annotations.cGenerically convert an element of one node type to another, using the specified element constructor. Useful for adding or removing annotations.doGenerically convert a list of nodes from one node type to another. Useful for adding or removing annotations.eGenerically convert a list of nodes from one node type to another, using the specified element constructor. Useful for adding or removing annotations.&@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcElement constructordeElement constructor&@ABHCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcde&YXZWBCDEFGHIJKLMNOPQRSTUV[\]@A^_`abcde@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeNonef1Type shortcut for attributes with qualified namesgA qualified name.Qualified names have two parts, a prefix and a local part. The local part is the name of the tag. The prefix scopes that name to a particular group of legal tags.The prefix will usually be associated with a namespace URI. This is usually achieved by using xmlns attributes to bind prefixes to URIs.k-Make a new QName from a prefix and localPart.l Make a new QName with no prefix. fghijklmno fghijklmn ghijfklmnfghijklmnoNone:r2Type shortcut for attributes with namespaced namessA namespace-qualified tag.}NName has two components, a local part and an optional namespace. The local part is the name of the tag. The namespace is the URI identifying collections of declared tags. Tags with the same local part but from different namespaces are distinct. Unqualified tags are those with no namespace. They are in the default namespace, and all uses of an unqualified tag are equivalent.w-Make a new NName from a prefix and localPart.x Make a new NName with no prefix.rstuvwxyz{|} rstuvwxyz{| stuvrwx{|yzrstuvwxyz{|}None:4Select only the elements from a list of XML content.0Select only the text from a list of XML content.0Find all immediate children with the given name.4Filter all immediate children wrt a given predicate.EFilter all immediate children wrt a given predicate over their names.,Find an immediate child with the given name.,Find an immediate child with the given name.7Find an immediate child with name matching a predicate.@Find the left-most occurrence of an element matching given name.CFilter the left-most occurrence of an element wrt. given predicate.CFilter the left-most occurrence of an element wrt. given predicate.Find all non-nested occurances of an element. (i.e., once we have found an element, we do not search for more occurances among the element's children).Find all non-nested occurrences of an element wrt. given predicate. (i.e., once we have found an element, we do not search for more occurances among the element's children).Find all non-nested occurences of an element wrt a predicate over element names. (i.e., once we have found an element, we do not search for more occurances among the element's children).None 09;<=DRT >Type alias for a node where namespaced names are used for tags=Type alias for a node where qualified names are used for tags^Type alias for a node with unqualified tag names where tag and text are the same string type.BA pure tree representation that uses a list as its container type.In the hexpat' package, a list of nodes has the type [Node tag text]A, but note that you can also use the more general type function WQ to give a list of any node type, using that node's associated list type, e.g. ListOf (UNode Text).,The tree representation of the XML document.c is the container type for the element's children, which would normally be [], but could potentially be a monadic list type to allow for chunked I/O.tag_ is the tag type, which can either be one of several string types, or a special type from the Text.XML.Expat.Namespaced or Text.XML.Expat.Qualified modules.text% is the string type for text content.GStrictly parse XML to tree. Returns error message or valid parsed tree.OA lower level function that lazily converts a SAX stream into a tree structure.kA lower level function that converts a generalized SAX stream into a tree structure. Ignores parse errors.Lazily parse XML to tree. Note that forcing the XMLParseError return value will force the entire parse. Therefore, to ensure lazy operation, don't check the error status until you have processed the tree.Parse a generalized list to a tree, ignoring parse errors. This function allows for a parse from an enumerator/iteratee to a "lazy" tree structure using the List-enumerator package.:Lazily parse XML to tree. In the event of an error, throw . parseThrowing< can throw an exception from pure code, which is generally a bad way to handle errors, because Haskell's lazy evaluation means it's hard to predict where it will be thrown from. However, it may be acceptable in situations where it's not expected during normal operation, depending on the design of your program. Parse options Input text (a strict ByteString) Parse optionsInput text (a lazy ByteString) Parse options*Input text as a generalized list of blocks Parse optionsInput text (a lazy ByteString)h "#$%&'()*+,-./0@ABHCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnrstuvwxyz{|.,-./0 "#$%&'()*+None:<=DR*Get the XML declaration for this document.:Get the Document Type Declaration (DTD) for this document.Get the top-level  nodes for this document.'Get the root element for this document.*Make a document with the specified fields.Stub for future expansion.@XML declaration, consisting of version, encoding and standalone.<The formatting functions always outputs only UTF-8, regardless of what encoding is specified here. If you want to produce a document in a different encoding, then set the encoding here, format the document, and then convert the output text from UTF-8 to your desired encoding using some text conversion library.XMake a document with the specified root node and all other information set to defaults.  None:TPFormat document with <?xml.. header - lazy variant that returns lazy ByteString.mFormat document with <?xml.. header - generalized variant that returns a generic list of strict ByteStrings.TFormat document with <?xml.. header - strict variant that returns strict ByteString.KFormat XML node with no header - lazy variant that returns lazy ByteString.OFormat XML node with no header - strict variant that returns strict ByteString.hFormat XML node with no header - generalized variant that returns a generic list of strict ByteStrings.CFormat an XML document - lazy variant that returns lazy ByteString.GFormat an XML document - strict variant that returns strict ByteString.`Format an XML document - generalized variant that returns a generic list of strict ByteStrings.,The standard XML header with UTF-8 encoding.:Flatten a tree structure into SAX events, monadic version.MFormat SAX events with no header - lazy variant that returns lazy ByteString.QFormat SAX events with no header - strict variant that returns strict ByteString.OFormat SAX events with no header - generalized variant that uses generic list./Make the output prettier by adding indentation.JMake the output prettier by adding indentation, specifying initial indent. SAX events SAX eventsTrue if processing CDATA.Number of indentation spaces per nesting levelInitial indent (spaces).Number of indentation spaces per nesting level None 9:;<=CDRgType alias for an extended node where namespaced names are used for tags, annotated with parse locationHType alias for an extended node where namespaced names are used for tagsfType alias for an extended node where qualified names are used for tags, annotated with parse locationGType alias for an extended node where qualified names are used for tagsType alias for an extended node with unqualified tag names where tag and text are the same string type, annotated with parse location>Type alias for an extended node, annotated with parse locationgType alias for an extended node with unqualified tag names where tag and text are the same string typekType alias for an extended document where namespaced names are used for tags, annotated with parse locationLType alias for an extended document where namespaced names are used for tagsjType alias for an extended document where qualified names are used for tags, annotated with parse locationKType alias for an extended document where qualified names are used for tagsType alias for an extended document with unqualified tag names where tag and text are the same string type, annotated with parse locationBType alias for an extended document, annotated with parse locationkType alias for an extended document with unqualified tag names where tag and text are the same string typeUA pure tree representation that uses a list as its container type, extended variant.In the hexpat' package, a list of nodes has the type [Node tag text]A, but note that you can also use the more general type function WQ to give a list of any node type, using that node's associated list type, e.g. ListOf (UNode Text).Extended variant of the tree representation of the XML document, intended to support the entire XML specification. DTDs are not yet supported, however.cG is the container type for the element's children, which is [] in the hexpat& package, and a monadic list type for hexpat-iteratee.tag_ is the tag type, which can either be one of several string types, or a special type from the Text.XML.Expat.Namespaced or Text.XML.Expat.Qualified modules.text% is the string type for text content.a is the type of the annotation. One of the things this can be used for is to store the XML parse location, which is useful for error handling. Note that some functions in the Text.XML.Expat.Cursor. module need to create new nodes through the @0 type class. Normally this can only be done if a is a Maybe type or () (so it can provide the Nothing value for the annotation on newly created nodes). Or, you can write your own @9 instance. Apart from that, there is no requirement for a to be a Maybe type.PA pure representation of an XML document that uses a list as its container type.Document representation of the XML document, intended to support the entire XML specification. DTDs are not yet supported, however.TModify this node's annotation (non-recursively) if it's an element, otherwise no-op.cModify this node's annotation and all its children recursively if it's an element, otherwise no-op.@Modify the annotation of every node in the document recursively.A lower level function that lazily converts a SAX stream into a tree structure. Variant that takes annotations for start tags.Lazily parse XML to tree. Note that forcing the XMLParseError return value will force the entire parse. Therefore, to ensure lazy operation, don't check the error status until you have processed the tree.:Lazily parse XML to tree. In the event of an error, throw . parseThrowing< can throw an exception from pure code, which is generally a bad way to handle errors, because Haskell's lazy evaluation means it's hard to predict where it will be thrown from. However, it may be acceptable in situations where it's not expected during normal operation, depending on the design of your program.GStrictly parse XML to tree. Returns error message or valid parsed tree./ Parse optionsInput text (a lazy ByteString) Parse optionsInput text (a lazy ByteString) Parse options Input text (a strict ByteString) "#$%&'()*+,-./0@ABHCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnrstuvwxyz{|D,-./0 "#$%&'()*+" None:IA cursor specific to Text.XML.Expat.Tree.Node trees.LGeneralized cursor: The position of a piece of content in an XML document. n is the Node type and cT is the list type, which would usually be [], except when you're using chunked I/O.The currently selected content.$Siblings on the left, closest first.%Siblings on the right, closest first.5The contexts of the parent elements of this location.A path specific to Text.XML.Expat.Tree.Node trees.(Generalized path within an XML document. !The parent of the given location. *The top-most parent of the given location. 6The left sibling of the given location - pure version.EThe left sibling of the given location - used for monadic node types.7The right sibling of the given location - pure version.FThe right sibling of the given location - used for monadic node types.5The first child of the given location - pure version.DThe first child of the given location - used for monadic node types.4The last child of the given location - pure version.CThe last child of the given location - used for monadic node types.6Find the next left sibling that satisfies a predicate.6Find the next left sibling that satisfies a predicate.FFind the next right sibling that satisfies a predicate - pure version.UFind the next right sibling that satisfies a predicate - used for monadic node types.:The first child that satisfies a predicate - pure version.IThe first child that satisfies a predicate - used for monadic node types.The next position in a left-to-right depth-first traversal of a document: either the first child, right sibling, or the right sibling of a parent that has one. Pure version.The next position in a left-to-right depth-first traversal of a document: either the first child, right sibling, or the right sibling of a parent that has one. Used for monadic node types.`Perform a depth first search for a descendant that satisfies the given predicate. Pure version.oPerform a depth first search for a descendant that satisfies the given predicate. Used for monadic node types.AThe child with the given index (starting from 0). - pure version.OThe child with the given index (starting from 0) - used for monadic node types.3private: computes the parent for "down" operations.A cursor for the given content. :The location of the first tree in a forest - pure version.JThe location of the first tree in a forest - used with monadic node types.!+Computes the tree containing this location."-Computes the forest containing this location.#"Are we at the top of the document?$;Are we at the left end of the the document? (Pure version.)%JAre we at the left end of the the document? (Used for monadic node types.)&8Are we at the right end of the document? (Pure version.)'GAre we at the right end of the document? (Used for monadic node types.)(%Are we at the bottom of the document?)Do we have a parent?*BGet the node index inside the sequence of children - pure version.QGet the node index inside the sequence of children - used for monadic node types.+Do we have children?,Change the current content.-Modify the current content..*Modify the current content - pure version./9Modify the current content - used for monadic node types.03Modify the current content, allowing for an effect.13Insert content to the left of the current position.24Insert content to the right of the current position.33Insert content to the left of the current position.44Insert content to the right of the current position.:Insert content as the first child of the current position.5:Insert content as the first child of the current position.6:Insert content as the first child of the current position.7:Insert content as the first child of the current position.8:Insert content as the first child of the current position.9NRemove the content on the left of the current position, if any - pure version.:]Remove the content on the left of the current position, if any - used for monadic node types.;ORemove the content on the right of the current position, if any - pure version.<]Remove the content on the left of the current position, if any - used for monadic node types.=bInsert content to the left of the current position. The new content becomes the current position.>cInsert content to the right of the current position. The new content becomes the current position.?SRemove the current element. The new position is the one on the left. Pure version.@SRemove the current element. The new position is the one on the left. Pure version.ATRemove the current element. The new position is the one on the right. Pure version.BcRemove the current element. The new position is the one on the right. Used for monadic node types.CPRemove the current element. The new position is the parent of the old position.vprivate: Gets the given element of a list. Also returns the preceding elements (reversed) and the following elements.7private: combChildren ls x ys = reverse ls ++ [x] ++ rsR      !"#$%&'()*+,-./0123456789:;<=>?@ABClsxrsDG      !"#$%&'()*+,-./0123456789:;<=>?@ABCG   "!   #$%&'()+*,-./012345678=>9:;<?@ABCJ      !"#$%&'()*+,-./0123456789:;<=>?@ABCD None 9:;<=DRTFhType alias for an annotated node where namespaced names are used for tags, annotated with parse locationGIType alias for an annotated node where namespaced names are used for tagsHgType alias for an annotated node where qualified names are used for tags, annotated with parse locationIHType alias for an annotated node where qualified names are used for tagsJType alias for an annotated node with unqualified tag names where tag and text are the same string type, annotated with parse locationK?Type alias for an annotated node, annotated with parse locationLhType alias for an annotated node with unqualified tag names where tag and text are the same string typeMVA pure tree representation that uses a list as its container type, annotated variant.In the hexpat' package, a list of nodes has the type [Node tag text]A, but note that you can also use the more general type function WQ to give a list of any node type, using that node's associated list type, e.g. ListOf (UNode Text).NAnnotated variant of the tree representation of the XML document, meaning that it has an extra piece of information of your choice attached to each Element.c is the container type for the element's children, which would normally be [], but could potentially be a monadic list type to allow for chunked I/O.tag_ is the tag type, which can either be one of several string types, or a special type from the Text.XML.Expat.Namespaced or Text.XML.Expat.Qualified modules.text% is the string type for text content.a is the type of the annotation. One of the things this can be used for is to store the XML parse location, which is useful for error handling. Note that some functions in the Text.XML.Expat.Cursor. module need to create new nodes through the @0 type class. Normally this can only be done if a is a Maybe type or () (so it can provide the Nothing value for the annotation on newly created nodes). Or, you can write your own @9 instance. Apart from that, there is no requirement for a to be a Maybe type.UTModify this node's annotation (non-recursively) if it's an element, otherwise no-op.VcModify this node's annotation and all its children recursively if it's an element, otherwise no-op.WA lower level function that lazily converts a SAX stream into a tree structure. Variant that takes annotations for start tags.XkA lower level function that converts a generalized SAX stream into a tree structure. Ignores parse errors.YLazily parse XML to tree. Note that forcing the XMLParseError return value will force the entire parse. Therefore, to ensure lazy operation, don't check the error status until you have processed the tree.ZParse a generalized list to a tree, ignoring parse errors. This function allows for a parse from an enumerator/iteratee to a "lazy" tree structure using the List-enumerator package.[:Lazily parse XML to tree. In the event of an error, throw . parseThrowing< can throw an exception from pure code, which is generally a bad way to handle errors, because Haskell's lazy evaluation means it's hard to predict where it will be thrown from. However, it may be acceptable in situations where it's not expected during normal operation, depending on the design of your program.\GStrictly parse XML to tree. Returns error message or valid parsed tree.FGHIJKLMNOPQRSTUVWXY Parse optionsInput text (a lazy ByteString)Z Parse options*Input text as a generalized list of blocks[ Parse optionsInput text (a lazy ByteString)\ Parse options Input text (a strict ByteString)]^_`abo "#$%&'()*+,-./0@ABHCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnrstuvwxyz{|FGHIJKLMNPOQRSTUVWXYZ[\5MNOPQRSTLKJUVIHGF,-./0 Y\Z[WX"#$%&'()*+FGHIJKLMNOPQRSTUVWXYZ[\]^_`ab  !!"#$%&'()*+,-./01234566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoppqrstuvwxyz{{|}~<:>*)##                        < >                                         ! " # $ % & ' ( ) * + , -            < : > ./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU V W X Y Z [ \ ] ^ _ ` a b c de%hexpat-0.20.10-9qb9MlxSI2QJKEHOxK8kgrText.XML.Expat.Internal.IOText.XML.Expat.SAX!Text.XML.Expat.Internal.NodeClass!Text.XML.Expat.Internal.Qualified"Text.XML.Expat.Internal.NamespacedText.XML.Expat.ProcText.XML.Expat.Tree%Text.XML.Expat.Internal.DocumentClassText.XML.Expat.FormatText.XML.Expat.ExtendedText.XML.Expat.CursorText.XML.Expat.AnnotatedHParserXMLParseLocation xmlLineNumberxmlColumnNumber xmlByteIndex xmlByteCount XMLParseErrorEncodingASCIIUTF8UTF16ISO88591encodingToStringhexpatNewParser$fNFDataXMLParseLocation$fNFDataXMLParseError$fEqXMLParseLocation$fShowXMLParseLocation$fEqXMLParseError$fShowXMLParseErrorXMLParseExceptionSAXEventXMLDeclaration StartElement EndElement CharacterData StartCDataEndCDataProcessingInstructionComment FailDocumentGenericXMLString gxNullString gxToString gxFromString gxFromChargxHeadgxTail gxBreakOngxFromByteStringgxToByteString ParseOptionsoverrideEncoding entityDecoderdefaultParseOptionsparseGparseLocationsGparseparseLocations parseThrowingparseLocationsThrowing$fExceptionXMLParseException$fNFDataSAXEvent$fGenericXMLStringText$fGenericXMLStringByteString$fGenericXMLString[] $fEqSAXEvent$fShowSAXEvent$fEqXMLParseException$fShowXMLParseExceptionMkElementClass mkElement NodeClass isElementisTextisCDataisProcessingInstruction isComment textContentMisNamedgetName hasTarget getTarget getAttributes getChildrengetText modifyNamemodifyAttributesmodifyChildren modifyElement mapAllTagsmapNodeContainermkTextListOf UAttributes Attributes textContentmapNodeListContainerfromNodeContainerfromNodeListContainer getAttribute setAttributedeleteAttributealterAttribute fromElement fromElement_ fromNodes fromNodes_ QAttributesQNameqnPrefix qnLocalPartmkQName mkAnQName toQualified fromQualified $fNFDataQName $fEqQName $fShowQName NAttributesNName nnNamespace nnLocalPartmkNName mkAnNNamexmlnsUrixmlns toNamespacedfromNamespaced $fNFDataNName $fEqNName $fShowNName onlyElemsonlyText findChildrenfilterChildrenfilterChildrenName findChild filterChildfilterChildName findElement filterElementfilterElementName findElementsfilterElementsfilterElementsNameNNodeQNodeUNodeNodeNodeGElementTexteName eAttributes eChildrenparse' saxToTree saxToTreeG$fMkElementClassNodeGc$fNodeClassNodeGc $fNFDataNodeG $fEqNodeG $fShowNodeG DocumentClassgetXMLDeclarationgetDocumentTypeDeclarationgetTopLevelMiscsgetRoot mkDocumentNodeTypeMiscDocumentTypeDeclarationmkPlainDocumentmodifyXMLDeclarationmodifyDocumentTypeDeclarationmodifyTopLevelMiscs modifyRoot $fNFDataMisc$fEqMisc $fShowMisc$fEqXMLDeclaration$fShowXMLDeclaration$fEqDocumentTypeDeclaration$fShowDocumentTypeDeclarationformatformatGformat' formatNode formatNode' formatNodeGformatDocumentformatDocument'formatDocumentG xmlHeader documentToSAX treeToSAX formatSAX formatSAX' formatSAXGindentindent_NLNodeQLNodeULNodeLNode NLDocument NDocument QLDocument QDocument ULDocument LDocument UDocumentCDataeAnnDocument DocumentGdXMLDeclarationdDocumentTypeDeclarationdTopLevelMiscsdRootmodifyAnnotation mapAnnotationmapDocumentAnnotation$fMkElementClassNodeGc0$fDocumentClassDocumentGc $fEqDocumentG$fShowDocumentGCursorCursorGCurcurrentleftsrightsparentsPathPathGTagtagName tagAttribsfromTagparentrootleftleftMrightrightM firstChild firstChildM lastChild lastChildMfindLeft findRightnextDFnextDFMfindRecfindRecMgetChild getChildMgetTagfromTree fromForesttoTreetoForestisRootisFirstisFirstMisLastisLastMisLeafisChild getNodeIndex hasChildren setContent modifyContentmodifyContentListmodifyContentListMmodifyContentM insertLeft insertRightinsertManyLeftinsertManyRightinsertFirstChildinsertLastChildinsertManyFirstChildinsertManyLastChild removeLeft removeLeftM removeRight removeRightM insertGoLeft insertGoRight removeGoLeft removeGoLeftM removeGoRightremoveGoRightM removeGoUp $fShowCursorG $fShowTag cFromBoolghc-prim GHC.TypesBoolCEntityHandler MyParserPtrMyParser_struct ParserPtr Parser_struct funPtrFree_hexpatSetEntityHandlermkCEntityHandler_hexpatParseSafe_hexpatParseUnsafehexpatFreeParser_hexpatGetParser_hexpatNewParserxmlErrorStringxmlGetCurrentByteCountxmlGetCurrentByteIndexxmlGetCurrentColumnNumberxmlGetCurrentLineNumberxmlGetErrorCodewithOptEncodingwithBStringLenunStatusgetErrorgetParseLocationpeekByteStringLenwrapCEntityHandler parseImplparseBuf PrefixNsMap NsPrefixMapxmlUrixmlbaseNsBindingsbasePfBindingsnodeWithNamespacesnodeWithQualifiersstartTagHelper formatSAXGbpack isSafeChar escapeText findLeftM findRightM findChildM downParents fromForestM getNodeIndexM mapChildrensplitChildrenM combChildrenreverseL