K~r      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Basic XML types. provisional'Iavor S. Diatchki <diatchki@galois.com> Safe-Inferred XML qualified names \As-is character data; pretty printer passes it along without any escaping or CDATA wrap-up. 6Unescaped character data; pretty printer embeds it in < ![CDATA[.. 0Ordinary character data; pretty printer escapes &, < etc.  XML CData XML attributes  XML elements  XML content A line is an Integer  Blank names  Blank cdata Blank elements "         provisional'Iavor S. Diatchki <diatchki@galois.com> Safe-Inferred 5Get the text value of an XML element. This function @ ignores non-text elements, and concatenates all text elements. !5Select only the elements from a list of XML content. "(Select only the elements from a parent. #1Select only the text from a list of XML content. $1Find all immediate children with the given name. %5Filter all immediate children wrt a given predicate. &FFilter 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. )8Find an immediate child with name matching a predicate. *AFind the left-most occurrence of an element matching given name. +DFilter the left-most occurrence of an element wrt. given predicate. ,DFilter the left-most occurrence of an element wrt. given predicate. -.Find all non-nested occurances of an element. 8 (i.e., once we have found an element, we do not search & for more occurances among the element' s children). .DFind all non-nested occurrences of an element wrt. given predicate. 8 (i.e., once we have found an element, we do not search & for more occurances among the element' s children). /QFind all non-nested occurences of an element wrt a predicate over element names. 8 (i.e., once we have found an element, we do not search & for more occurances among the element' s children). 0"Lookup the value of an attribute. 1!Lookup attribute name from list. 2ELookup the first attribute whose name satisfies the given predicate. 33Lookup the value of the first attribute whose name  satisfies the given predicate.  !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123,Output handling for the lightweight XML lib. provisional'Iavor S. Diatchki <diatchki@galois.com> Safe-Inferred5The XML 1.0 header 6&Default pretty orinting configutaion. & * Always use abbreviate empty tags. 7>The predicate specifies for which empty tags we should use XML's  abbreviated notation  TAG/). This is useful if we are working with F some XML-ish standards (such as certain versions of HTML) where some . empty tags should always be displayed in the  TAG /TAG form. 8KSpecify if we should use extra white-space to make document more readable. = WARNING: This adds additional white-space to text elements, 3 and so it may change the meaning of the document. 91A configuration that tries to make things pretty 7 (possibly at the cost of changing the semantics a bit  through adding white space.) :2Pretty printing renders XML documents faithfully, 0 with the exception that whitespace may be added/removed ! in non-verbatim character data. ;Pretty printing elements <Pretty printing content =2Pretty printing renders XML documents faithfully, 0 with the exception that whitespace may be added/removed ! in non-verbatim character data. >Pretty printing elements ?Pretty printing content $Pretty printing content using ShowS @ Adds the  ?xml? header. &Convert a text element to characters. 456789:;<=>?@ABCDEF456789:;<=>?@ABCDEF@ABCFE:<;=?>46978D5456789:;<=>?@ABCDEFNoneQ<This type may be used to provide a custom scanning function  for extracting characters. V<This type may be used to provide a custom scanning function  for extracting characters. `;Match the value for an attribute. For malformed XML we do ! our best to guess the programmer' s intention. 'GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg!GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg!STUQRVPOJNMLKWXYZ[\]^_`abcGIHdefgGIHJNMLKOPQRSTUVWXYZ[\]^_`abcdefgportable provisional'Iavor S. Diatchki <diatchki@galois.com>Noneh7parseXMLDoc, parse a XMLl document to maybe an element i%parseXML to a list of content chunks hihiihhiportable provisional'Iavor S. Diatchki <diatchki@galois.com> Safe-Inferred,j7The position of a piece of content in an XML document. l The currently selected content. m%Siblings on the left, closest first. n&Siblings on the right, closest first. o6The contexts of the parent elements of this location. y"The parent of the given location. z+The top-most parent of the given location. {(The left sibling of the given location. |)The right sibling of the given location. }'The first child of the given location. ~&The last child of the given location. 7Find the next left sibling that satisfies a predicate. 8Find the next right sibling that satisfies a predicate. ,The first child that satisfies a predicate. JThe next position in a left-to-right depth-first traversal of a document: N either the first child, right sibling, or the right sibling of a parent that  has one. APerform a depth first search for a descendant that satisfies the  given predicate. 2The child with the given index (starting from 0). !private: computes the parent for down operations.  A cursor for the given content.  A cursor for the given element. ,The location of the first tree in a forest. ,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? )Are we at the right end of the document? &Are we at the bottom of the document? Do we have a parent? 3Get the node index inside the sequence of children Do we have children? Change the current content. Modify the current content. 4Modify the current content, allowing for an effect. 4Insert content to the left of the current position. 5Insert content to the right of the current position. @Remove the content on the left of the current position, if any. ARemove the content on the right of the current position, if any. 4Insert content to the left of the current position. / The new content becomes the current position. 5Insert content to the right of the current position. / The new content becomes the current position. Remove the current element. * The new position is the one on the left. Remove the current element. + The new position is the one on the right. Remove the current element. 5 The new position is the parent of the old position. +private: Gets the given element of a list. L Also returns the preceding elements (reversed) and the following elements. 0private: combChildren ls x ys = reverse ls ++ [x] ++ ys 6jklmnopqrstuvwxyz{|}~3jklmnopqrstuvwxyz{|}~3qrstuvwxjklmnopyz}~{|-jklmnopqrstuvwxyz{|}~ portability provisional'Iavor S. Diatchki <diatchki@galois.com>None@A smart element constructor which uses the type of its argument , to determine what sort of element to make.  Add an attribute to an element. #Add some attributes to an element. Create an unqualified name. "Create node with unqualified name O  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFhi      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUUVWXYZ[\]^_`abcdefghijklmnopqrsttuvwxyz{|}~+8 xml-1.3.13Text.XML.Light.TypesText.XML.Light.ProcText.XML.Light.OutputText.XML.Light.LexerText.XML.Light.InputText.XML.Light.CursorText.XML.LightQNameqNameqURIqPrefix CDataKindCDataRaw CDataVerbatim CDataTextCData cdVerbatimcdDatacdLineAttrattrKeyattrValElementelName elAttribs elContentelLineContentCRefTextElemLine blank_name blank_cdata blank_element strContent onlyElems elChildrenonlyText findChildrenfilterChildrenfilterChildrenName findChild filterChildfilterChildName findElement filterElementfilterElementName findElementsfilterElementsfilterElementsNamefindAttr lookupAttr lookupAttrBy findAttrByConfigPP xml_headerdefaultConfigPPuseShortEmptyTagsuseExtraWhiteSpaceprettyConfigPP ppTopElement ppElement ppContent ppcTopElement ppcElement ppcContentshowTopElement showContent showElement showCDatatagEndshowAttr showQNameTxtCRefBitTxtBitTokenTokTextTokCRefTokEndTokStartLStringLCharScanner XmlSourceuncons linenumber customScannertokenstokens'specialqualNametagattribsattribattr_val dropSpacestringbreak'breakn decode_attr decode_text cref_to_charnum_esccvt_char parseXMLDocparseXMLCursorCurcurrentleftsrightsparentsPathTagtagName tagAttribstagLinegetTagsetTagfromTagparentrootleftright firstChild lastChildfindLeft findRightnextDFfindRecgetChild fromContent fromElement fromForesttoTreetoForestisRootisFirstisLastisLeafisChild getNodeIndex hasChildren setContent modifyContentmodifyContentM insertLeft insertRight removeLeft removeRight insertGoLeft insertGoRight removeGoLeft removeGoRight removeGoUpNodenodeadd_attr add_attrsunqualunode $fOrdQName $fEqQName ppContentS showCDataS shortEmptyTagprettify ppElementSppCDataS showCRefSescCDataescCharescStrtagStart$fXmlSourceScanner$fXmlSourceText$fXmlSourceText0$fXmlSourceByteString$fXmlSourceByteString0 $fXmlSource[]NSInfoparsenodes annotName annotAttraddNS downParents splitChildren combChildren$fNode[] $fNode(,) $fNode(,)0 $fNodeCData $fNode[]0 $fNode(,)1 $fNode(,)2 $fNode(,)3 $fNodeElement $fNode[]1 $fNode(,)4 $fNode(,)5 $fNode(,)6 $fNode(,)7 $fNode(,)8 $fNodeContent $fNode[]2$fNode() $fNodeAttr $fNode[]3 $fNode(,)9