Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Pygments / examplefiles / output / example.cpp
Size: Mime:
€]q(cpygments.token
_TokenType
qXCommentqX	Multilineq†q…qq}q(Xsubtypesqcbuiltins
set
q	]q
…qRqXparentq
hh…q…qq}q(hh	]q(hhXPreprocq†q…qq}q(hh	]q…qRqh
hubhhXMultiq†q…qq}q(hh	]q …q!Rq"h
hubhhXHashbangq#†q$…q%q&}q'(hh	]q(…q)Rq*h
hubhhXSingleq+†q,…q-q.}q/(hh	]q0…q1Rq2h
hubhhX
SingleLineq3†q4…q5q6}q7(hh	]q8…q9Rq:h
hubhhXDocq;†q<…q=q>}q?(hh	]q@…qARqBh
hubhhX	DirectiveqC†qD…qEqF}qG(hh	]qH…qIRqJh
hubhhhX
SinglelineqK†qL…qMqN}qO(hh	]qP…qQRqRh
hubhhXPreprocFileqS†qT…qUqV}qW(hh	]qX…qYRqZh
hubhhXSpecialq[†q\…q]q^}q_(hh	]q`…qaRqbh
hube…qcRqdh
h)…qeqf}qg(hh	]qh(hXEscapeqi…qj…qkql}qm(hh	]qn…qoRqph
hfubhXOperatorqq…qr…qsqt}qu(hh	]qv(hhqXDBSqw†qx…qyqz}q{(hh	]q|…q}Rq~h
htubhhqXWordq†q€…qq‚}qƒ(hh	]q„…q…Rq†h
htube…q‡Rqˆh
hfhh‚hwhzubhXNameq‰…qŠ…q‹qŒ}q(hh	]qŽ(hh‰XTagq†q…q‘q’}q“(hh	]q”…q•Rq–h
hŒubhh‰XEntityq—†q˜…q™qš}q›(hh	]qœhh‰h—hw‡q…qžqŸ}q (hh	]q¡…q¢Rq£h
hšuba…q¤Rq¥h
hŒhwhŸubhh‰X	Exceptionq¦†q§…q¨q©}qª(hh	]q«…q¬Rq­h
hŒubhh‰X	Decoratorq®†q¯…q°q±}q²(hh	]q³…q´Rqµh
hŒubhh‰XClassq¶†q·…q¸q¹}qº(hh	]q»(hh‰h¶hw‡q¼…q½q¾}q¿(hh	]qqÁRqÂh
h¹ubhh‰h¶XStartqÇqąqŁqÆ}qÇ(hh	]qȅqÉRqÊh
h¹ube…qËRqÌh
hŒhÃhÆhwh¾ubhh‰XVariableq͆q΅qρqÐ}qÑ(hh	]qÒ(hh‰hÍX	AnonymousqӇqԅqՁqÖ}q×(hh	]q؅qÙRqÚh
hÐubhh‰hÍh¶‡qۅq܁qÝ}qÞ(hh	]q߅qàRqáh
hÐubhh‰hÍXMagicqâ‡qã…qäqå}qæ(hh	]qç…qèRqéh
hÐubhh‰hÍXGlobalqê‡që…qìqí}qî(hh	]qï…qðRqñh
hÐubhh‰hÍXInstanceqò‡qó…qôqõ}qö(hh	]q÷…qøRqùh
hÐube…qúRqûh
hŒh¶hÝhêhíhòhõhâhåhÓhÖubhh‰X	Attributeqü†qý…qþqÿ}r(hh	]rhh‰hüh͇r…rr}r(hh	]r…rRrh
hÿuba…r	Rr
h
hŒhÍjubhh‰X	Namespacer†r…r
r}r(hh	]r…rRrh
hŒubhh‰XPropertyr†r…rr}r(hh	]r…rRrh
hŒubhh‰XSymbolr†r…rr}r(hh	]r …r!Rr"h
hŒubhh‰XClassesr#†r$…r%r&}r'(hh	]r(…r)Rr*h
hŒubhh‰XPseudor+†r,…r-r.}r/(hh	]r0…r1Rr2h
hŒubhh‰XLabelr3†r4…r5r6}r7(hh	]r8…r9Rr:h
hŒubhh‰hq†r;…r<r=}r>(hh	]r?…r@RrAh
hŒubhh‰XBuiltinrB†rC…rDrE}rF(hh	]rG(hh‰jBj+‡rH…rIrJ}rK(hh	]rL…rMRrNh
jEubhh‰jBXTyperO‡rP…rQrR}rS(hh	]rT…rURrVh
jEube…rWRrXh
hŒj+jJjOjRubhh‰XFieldrY†rZ…r[r\}r](hh	]r^…r_Rr`h
hŒubhh‰XOtherra†rb…rcrd}re(hh	]rfhh‰jaXMemberrg‡rh…rirj}rk(hh	]rl…rmRrnh
jduba…roRrph
hŒjgjjubhh‰XFunctionrq†rr…rsrt}ru(hh	]rvhh‰jqhâ‡rw…rxry}rz(hh	]r{…r|Rr}h
jtuba…r~Rrh
hŒhâjyubhh‰jO†r€…rr‚}rƒ(hh	]r„…r…Rr†h
hŒubhh‰XConstantr‡†rˆ…r‰rŠ}r‹(hh	]rŒ…rRrŽh
hŒube…rRrh
hfhühÿjBjEh¶h¹j‡jŠh®h±h—hšh¦h©jqjtjjj3j6jjjajdhh’hÍhÐjYj\jjj+j.hqj=j#j&jOj‚ubhXLiteralr‘…r’…r“r”}r•(hh	]r–(hj‘ja†r—…r˜r™}rš(hh	]r›…rœRrh
j”ubhj‘XCharrž†rŸ…r r¡}r¢(hh	]r£…r¤Rr¥h
j”ubhj‘XDater¦†r§…r¨r©}rª(hh	]r«…r¬Rr­h
j”ubhj‘XScalarr®†r¯…r°r±}r²(hh	]r³hj‘j®XPlainr´‡rµ…r¶r·}r¸(hh	]r¹…rºRr»h
j±uba…r¼Rr½h
j”j´j·ubhj‘XStringr¾†r¿…rÀrÁ}rÂ(hh	]rÃ(hj‘j¾XInterpolrćrÅ…rƁrÇ}rÈ(hh	]rÉ…rÊRrËh
jÁubhj‘j¾X	DelimeterṙrÍ…r΁rÏ}rÐ(hh	]rÑ…rÒRrÓh
jÁubhj‘j¾jž‡rÔ…rՁrÖ}r×(hh	]rØ…rÙRrÚh
jÁubhj‘j¾j‡rÛ…r܁rÝ}rÞ(hh	]rß…ràRráh
jÁubhj‘j¾h+‡râ…rãrä}rå(hh	]ræ…rçRrèh
jÁubhj‘j¾ja‡ré…rêrë}rì(hh	]rí…rîRrïh
jÁubhj‘j¾XBacktickrð‡rñ…ròró}rô(hh	]rõ…röRr÷h
jÁubhj‘j¾hi‡rø…rùrú}rû(hh	]rü…rýRrþh
jÁubhj‘j¾XRegexrÿ‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾XMomentr‡r…r	r
}r(hh	]r…r
Rrh
jÁubhj‘j¾XBooleanr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Characterr‡r…rr}r(hh	]r…rRrh
jÁubhj‘j¾X	Delimiterr‡r …r!r"}r#(hh	]r$…r%Rr&h
jÁubhj‘j¾h;‡r'…r(r)}r*(hh	]r+…r,Rr-h
jÁubhj‘j¾h‰‡r.…r/r0}r1(hh	]r2…r3Rr4h
jÁubhj‘j¾XAffixr5‡r6…r7r8}r9(hh	]r:…r;Rr<h
jÁubhj‘j¾XHeredocr=‡r>…r?r@}rA(hh	]rB…rCRrDh
jÁubhj‘j¾XDoublerE‡rF…rGrH}rI(hh	]rJ…rKRrLh
jÁubhj‘j¾XInterprM‡rN…rOrP}rQ(hh	]rR…rSRrTh
jÁubhj‘j¾XAtomrU‡rV…rWrX}rY(hh	]rZ…r[Rr\h
jÁube…r]Rr^h
j”j5j8jðjójžjÖjj"h;j)jEjHhijúj=j@jÄjÇjajëjÿjh+jäjjÝjjjj
jMjPjjjÌjÏjUjXh‰j0ubhj‘XNumberr_†r`…rarb}rc(hh	]rd(hj‘j_XFloatre‡rf…rgrh}ri(hh	]rj…rkRrlh
jbubhj‘j_XDecrm‡rn…rorp}rq(hh	]rr…rsRrth
jbubhj‘j_XRadixru‡rv…rwrx}ry(hh	]rz…r{Rr|h
jbubhj‘j_XOctr}‡r~…rr€}r(hh	]r‚…rƒRr„h
jbubhj‘j_XBinr…‡r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jbubhj‘j_hü‡r…rށr}r(hh	]r‘…r’Rr“h
jbubhj‘j_XHexr”‡r•…r–r—}r˜(hh	]r™…ršRr›h
jbubhj‘j_XIntegerrœ‡r…ržrŸ}r (hh	]r¡h(j‘j_jœXLongr¢tr£…r¤r¥}r¦(hh	]r§…r¨Rr©h
jŸuba…rªRr«h
jbj¢j¥ubhj‘j_XDecimalr¬‡r­…r®r¯}r°(hh	]r±…r²Rr³h
jbube…r´Rrµh
j”j…jˆjejhj”j—jœjŸj}j€jujxhüjj¬j¯jmjpube…r¶Rr·h
hfj¾jÁj_jbj¦j©j®j±jaj™jžj¡ubhXGenericr¸…r¹…rºr»}r¼(hh	]r½(hj¸XErrorr¾†r¿…rÀrÁ}rÂ(hh	]rÃ…rÄRrÅh
j»ubhj¸X
SubheadingrƆrÇ…rȁrÉ}rÊ(hh	]rË…rÌRrÍh
j»ubhj¸X	TracebackrΆrÏ…rЁrÑ}rÒ(hh	]rÓ…rÔRrÕh
j»ubhj¸XOutputrÖ†r×…r؁rÙ}rÚ(hh	]rÛ…rÜRrÝh
j»ubhj¸XPromptrÞ†rß…ràrá}râ(hh	]rã…räRråh
j»ubhj¸XDeletedræ†rç…rèré}rê(hh	]rë…rìRríh
j»ubhj¸XInsertedrî†rï…rðrñ}rò(hh	]ró…rôRrõh
j»ubhj¸XHeadingrö†r÷…rørù}rú(hh	]rû…rüRrýh
j»ubhj¸XStrongrþ†rÿ…rr}r(hh	]r…rRrh
j»ubhj¸XEmphr†r…rr	}r
(hh	]r…rRr
h
j»ube…rRrh
hfjæjéjj	j¾jÁjöjùjîjñjÖjÙjÞjájþjjÆjÉjÎjÑubhj¾…r…rr}r(hh	]r…rRrh
hfubhXKeywordr…r…rr}r(hh	]r(hjh†r…rr}r (hh	]r!…r"Rr#h
jubhjj†r$…r%r&}r'(hh	]r(…r)Rr*h
jubhjjO†r+…r,r-}r.(hh	]r/…r0Rr1h
jubhjXPreProcr2†r3…r4r5}r6(hh	]r7…r8Rr9h
jubhjXControlr:†r;…r<r=}r>(hh	]r?…r@RrAh
jubhjj‡†rB…rCrD}rE(hh	]rF…rGRrHh
jubhjj†rI…rJrK}rL(hh	]rM…rNRrOh
jubhjj+†rP…rQrR}rS(hh	]rT…rURrVh
jubhjXDeclarationrW†rX…rYrZ}r[(hh	]r\…r]Rr^h
jubhjXReservedr_†r`…rarb}rc(hh	]rd…reRrfh
jube…rgRrhh
hfj‡jDjWjZjjKj+jRj_jbjOj-j:j=jj&j2j5hjubhja…ri…rjrk}rl(hh	]rm…rnRroh
hfubhXTextrp…rq…rrrs}rt(hh	]ru(hjpXRootrv†rw…rxry}rz(hh	]r{…r|Rr}h
jsubhjpj†r~…rr€}r(hh	]r‚…rƒRr„h
jsubhjpXRagr…†r†…r‡rˆ}r‰(hh	]rŠ…r‹RrŒh
jsubhjpX
Whitespacer†rŽ…rr}r‘(hh	]r’…r“Rr”h
jsubhjpXBeerr•†r–…r—r˜}r™(hh	]rš…r›Rrœh
jsubhjpXPunctuationr†rž…rŸr }r¡(hh	]r¢…r£Rr¤h
jsube…r¥Rr¦h
hfjjjj€jj jvjyj•j˜j…jˆubhhj…r§…r¨r©}rª(hh	]r«hjX	Indicatorr¬†r­…r®r¯}r°(hh	]r±…r²Rr³h
j©uba…r´Rrµh
hfj¬j¯ube…r¶Rr·jpjshihlj¾jjajkjjh‰hŒj‘j”jj©hqhthhj¸j»XTokenr¸hfj¾jÁj_jbubh#h&hhhhhShVh+h.h[h^hChFh3h6h;h>hhhKhNububXŠ/***************************************************************************
                    ansigenerator.cpp  -  description
                             -------------------
    begin                : Jul 5 2004
    copyright            : (C) 2004 by André Simon
    email                : andre.simon1@gmx.de
 ***************************************************************************/r¹†rºjsX
r»†r¼jsj»†r½hXh/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/r¾†r¿jsj»†rÀjsj»†rÁhX#r†rÃhXincluderĆrÅjsX rƆrÇhVX"ansigenerator.h"rȆrÉhj»†rÊjsj»†rËjXusingr̆rÍjsjƆrÎjX	namespacerφrÐjsjƆrÑhŒXstdrÒ†rÓj©X;rÔ†rÕjsj»†rÖjsj»†r×jX	namespacer؆rÙjsjƆrÚhŒX	highlightrÛ†rÜjsjƆrÝj©X{rÞ†rßjsj»†ràjsj»†rájsj»†râhŒXstringrã†räjsX  rå†ræhŒX
AnsiGeneratorrç†rèhtX:ré†rêhtjé†rëhŒX
getOpenTagrì†ríj©X(rî†rïjXconstrð†rñjsjƆròhŒXstringró†rôhtX&rõ†röhŒXfontr÷†røj©X,rù†rújsj»†rûjsX"                                  rü†rýjXconstrþ†rÿjsjƆrhŒXstringr†rhtjõ†rhŒXfgColr†rj©jù†rjsjƆrjXconstr†r	jsjƆr
hŒXstringr†rhtjõ†r
hŒXbgColr†rj©X)r†rjsjƆrj©jÞ†rjsj»†rjsX    r†rhŒX
ostringstreamr†rjsjƆrhŒXsr†rj©jÔ†rjsj»†rjsX    r†rhŒj†r jsX  r!†r"htX<r#†r$htj#†r%jsjƆr&jÁX"r'†r(júX\033r)†r*jÁX[r+†r,jÁj'†r-htj#†r.htj#†r/hŒXfontr0†r1j©jÔ†r2jsj»†r3jsX    r4†r5jXifr6†r7jsjƆr8j©jî†r9htX!r:†r;hŒXfgColr<†r=j©X.r>†r?hŒXemptyr@†rAj©jî†rBj©j†rCj©j†rDjsj»†rEjsX        rF†rGhŒj†rHhtj#†rIhtj#†rJjÁj'†rKjÁjÔ†rLjÁj'†rMhtj#†rNhtj#†rOhŒXfgColrP†rQj©jÔ†rRjsj»†rSjsX    rT†rUjXifrV†rWjsjƆrXj©jî†rYhtj:†rZhŒXbgColr[†r\j©j>†r]hŒXemptyr^†r_j©jî†r`j©j†raj©j†rbjsj»†rcjsX        rd†rehŒj†rfhtj#†rghtj#†rhjÁj'†rijÁjÔ†rjjÁj'†rkhtj#†rlhtj#†rmhŒXbgColrn†roj©jÔ†rpjsj»†rqjsX    rr†rshŒj†rtjsjƆruhtj#†rvhtj#†rwjsjƆrxjÁj'†ryjÁXmrz†r{jÁj'†r|j©jÔ†r}jsj»†r~jsX    r†r€jXreturnr†r‚jsX  rƒ†r„hŒj†r…j©j>†r†hŒXstrr‡†rˆj©jî†r‰j©j†rŠj©jÔ†r‹jsj»†rŒj©X}r†rŽjsj»†rjsj»†rjsj»†r‘hŒX
AnsiGeneratorr’†r“htjé†r”htjé†r•hŒX
AnsiGeneratorr–†r—j©jî†r˜jXconstr™†ršjsjƆr›hŒXstringrœ†rjsjƆržhtjõ†rŸhŒXcolourThemer †r¡j©j†r¢jsj»†r£jsX        r¤†r¥htjé†r¦jsjƆr§hŒX
CodeGeneratorr¨†r©j©jî†rªhŒXcolourThemer«†r¬j©j†r­jsjƆr®j©jÞ†r¯jsj»†r°jsX    r±†r²hŒXstyleTagOpenr³†r´j©j>†rµhŒX	push_backr¶†r·j©jî†r¸jÁj'†r¹jÁj'†rºj©j†r»j©jÔ†r¼jsj»†r½jsX    r¾†r¿hŒXstyleTagOpenrÀ†rÁj©j>†rÂhŒX	push_backrÆrÄj©jî†rÅhŒX
getOpenTagrƆrÇj©jî†rÈjÁj'†rÉjÁX00rʆrËjÁj'†rÌj©jù†rÍjsjƆrÎjÁj'†rÏjÁX31rІrÑjÁj'†rÒj©j†rÓj©j†rÔj©jÔ†rÕjsjƆrÖh.X//str
r׆rØjsX    rÙ†rÚhŒXstyleTagOpenrÛ†rÜj©j>†rÝhŒX	push_backrÞ†rßj©jî†ràhŒX
getOpenTagrá†râj©jî†rãjÁj'†räjÁX00rå†ræjÁj'†rçj©jù†rèjsjƆréjÁj'†rêjÁX34rë†rìjÁj'†ríj©j†rîj©j†rïj©jÔ†rðh.X	//number
rñ†ròjsX    ró†rôhŒXstyleTagOpenrõ†röj©j>†r÷hŒX	push_backrø†rùj©jî†rúhŒX
getOpenTagrû†rüj©jî†rýjÁj'†rþjÁX00rÿ†rjÁj'†rj©jù†rjsjƆrjÁj'†rjÁX34r†rjÁj'†rj©j†rj©j†r	j©jÔ†r
h.X
//sl comment
r†rjsX    r
†rhŒXstyleTagOpenr†rj©j>†rhŒX	push_backr†rj©jî†rhŒX
getOpenTagr†rj©jî†rjÁj'†rjÁX00r†rjÁj'†rj©jù†rjsjƆrjÁj'†rjÁX34r†r jÁj'†r!j©j†r"j©j†r#j©jÔ†r$h.X
//ml comment
r%†r&jsX    r'†r(hŒXstyleTagOpenr)†r*j©j>†r+hŒX	push_backr,†r-j©jî†r.hŒX
getOpenTagr/†r0j©jî†r1jÁj'†r2jÁX00r3†r4jÁj'†r5j©jù†r6jsjƆr7jÁj'†r8jÁX35r9†r:jÁj'†r;j©j†r<j©j†r=j©jÔ†r>h.X
//escapeChar
r?†r@jsX    rA†rBhŒXstyleTagOpenrC†rDj©j>†rEhŒX	push_backrF†rGj©jî†rHhŒX
getOpenTagrI†rJj©jî†rKjÁj'†rLjÁX00rM†rNjÁj'†rOj©jù†rPjsjƆrQjÁj'†rRjÁX35rS†rTjÁj'†rUj©j†rVj©j†rWj©jÔ†rXh.X//directive
rY†rZjsX    r[†r\hŒXstyleTagOpenr]†r^j©j>†r_hŒX	push_backr`†raj©jî†rbhŒX
getOpenTagrc†rdj©jî†rejÁj'†rfjÁX01rg†rhjÁj'†rij©jù†rjjsjƆrkjÁj'†rljÁX31rm†rnjÁj'†roj©j†rpj©j†rqj©jÔ†rrh.X//directive string
rs†rtjsX    ru†rvhŒXstyleTagOpenrw†rxj©j>†ryhŒX	push_backrz†r{j©jî†r|hŒX
getOpenTagr}†r~j©jî†rjÁj'†r€jÁX00r†r‚jÁj'†rƒj©jù†r„jsjƆr…jÁj'†r†jÁX30r‡†rˆjÁj'†r‰j©j†rŠj©j†r‹j©jÔ†rŒh.X
//linenum
r†rŽjsX    r†rhŒXstyleTagOpenr‘†r’j©j>†r“hŒX	push_backr”†r•j©jî†r–hŒX
getOpenTagr—†r˜j©jî†r™jÁj'†ršjÁX01r›†rœjÁj'†rj©jù†ržjsjƆrŸjÁj'†r jÁX00r¡†r¢jÁj'†r£j©j†r¤j©j†r¥j©jÔ†r¦h.X	//symbol
r§†r¨jsj»†r©jsX    rª†r«hŒX
styleTagCloser¬†r­j©j>†r®hŒX	push_backr¯†r°j©jî†r±jÁj'†r²jÁj'†r³j©j†r´j©jÔ†rµjsj»†r¶jsX    r·†r¸jXforr¹†rºjsjƆr»j©jî†r¼j-Xintr½†r¾jsjƆr¿hŒXirÀ†rÁhtX=r†rÃjŸX1rĆrÅj©jÔ†rÆhŒjÀ†rÇhtj#†rÈhŒXNUMBER_BUILTIN_STYLESrɆrÊj©jÔ†rËjsjƆrÌhŒjÀ†rÍhtX+rΆrÏhtjΆrÐj©j†rÑjsjƆrÒj©jÞ†rÓjsj»†rÔjsX        rÕ†rÖhŒX
styleTagCloser׆rØj©j>†rÙhŒX	push_backrÚ†rÛj©jî†rÜjÁj'†rÝjúX\033rÞ†rßjÁX[mrà†rájÁj'†râj©j†rãj©jÔ†räjsj»†råjsX    ræ†rçj©j†rèjsj»†réjsX    rê†rëhŒX
newLineTagrì†ríjsjƆrîhtj†rïjsjƆrðjÁj'†rñjúX\nrò†rójÁj'†rôj©jÔ†rõjsj»†röjsX    r÷†røhŒXspacerrù†rújsjƆrûhtj†rüjsjƆrýjÁj'†rþjÁjƆrÿjÁj'†rj©jÔ†rjsj»†rj©j†rjsj»†rjsj»†rhŒX
AnsiGeneratorr†rhtjé†rhtjé†r	hŒX
AnsiGeneratorr
†rj©jî†rj©j†r
jsjƆrj©jÞ†rj©j†rjsj»†rhŒX
AnsiGeneratorr†rhtjé†rhtjé†rhtX~r†rhŒX
AnsiGeneratorr†rj©jî†rj©j†rjsjƆrj©jÞ†rj©j†rjsj»†rjsj»†r hŒXstringr!†r"jsjƆr#hŒX
AnsiGeneratorr$†r%htjé†r&htjé†r'hŒX	getHeaderr(†r)j©jî†r*jXconstr+†r,jsjƆr-hŒXstringr.†r/jsjƆr0htjõ†r1jsjƆr2hŒXtitler3†r4j©j†r5jsjƆr6j©jÞ†r7jsj»†r8jsX    r9†r:jXreturnr;†r<jsjƆr=hŒXstringr>†r?j©jî†r@j©j†rAj©jÔ†rBjsj»†rCj©j†rDjsj»†rEjsj»†rFj-XvoidrG†rHjsjƆrIhŒX
AnsiGeneratorrJ†rKhtjé†rLhtjé†rMhŒX	printBodyrN†rOj©jî†rPj©j†rQjsjƆrRj©jÞ†rSjsj»†rTjsX    rU†rVhŒXprocessRootStaterW†rXj©jî†rYj©j†rZj©jÔ†r[jsj»†r\j©j†r]jsj»†r^jsj»†r_hŒXstringr`†rajsjƆrbhŒX
AnsiGeneratorrc†rdhtjé†rehtjé†rfhŒX	getFooterrg†rhj©jî†rij©j†rjjsjƆrkj©jÞ†rljsj»†rmjsX    rn†rojXreturnrp†rqjsjƆrrhŒXstringrs†rtj©jî†ruj©j†rvj©jÔ†rwjsj»†rxj©j†ryjsj»†rzjsj»†r{hŒXstringr|†r}jsjƆr~hŒX
AnsiGeneratorr†r€htjé†rhtjé†r‚hŒX
maskCharacterrƒ†r„j©jî†r…j-Xunsignedr††r‡jsjƆrˆj-Xcharr‰†rŠjsjƆr‹hŒXcrŒ†rj©j†rŽjsjƆrj©jÞ†rjsj»†r‘jsX    r’†r“hŒXstringr”†r•jsjƆr–hŒjz†r—j©jÔ†r˜jsj»†r™jsX    rš†r›hŒjz†rœhtjΆrhtj†ržhŒjŒ†rŸj©jÔ†r jsj»†r¡jsX    r¢†r£jXreturnr¤†r¥jsjƆr¦hŒjz†r§j©jÔ†r¨jsj»†r©j©j†rªjsj»†r«jsj»†r¬hŒXstringr­†r®jsjƆr¯hŒX
AnsiGeneratorr°†r±htjé†r²htjé†r³hŒXgetMatchingOpenTagr´†rµj©jî†r¶j-Xunsignedr·†r¸jsjƆr¹j-Xintrº†r»jsjƆr¼hŒXstyleIDr½†r¾j©j†r¿jsjƆrÀj©jÞ†rÁjsj»†rÂjsX    rÆrÄjXreturnrņrÆjsjƆrÇj©jî†rÈhŒXstyleIDrɆrÊj©j†rËhtX?r̆rÍhŒX
getOpenTagrΆrÏj©jî†rÐjÁj'†rÑjÁX01rÒ†rÓjÁj'†rÔj©jù†rÕjsjƆrÖjÁj'†r×jÁX32r؆rÙjÁj'†rÚj©jù†rÛjsjƆrÜjÁj'†rÝjÁj'†rÞj©j†rßhtjé†ràhŒX
getOpenTagrá†râj©jî†rãjÁj'†räjÁX00rå†ræjÁj'†rçj©jù†rèjsjƆréjÁj'†rêjÁX33rë†rìjÁj'†ríj©j†rîj©jÔ†rïjsj»†rðj©j†rñjsj»†ròjsj»†róhŒXstringrô†rõjsjƆröhŒX
AnsiGeneratorr÷†røhtjé†rùhtjé†rúhŒXgetMatchingCloseTagrû†rüj©jî†rýj-Xunsignedrþ†rÿjsjƆrj-Xintr†rjsjƆrhŒXstyleIDr†rj©j†rjsjƆrj©jÞ†rjsj»†r	jsX    r
†rjXreturnr†r
jsjƆrjÁj'†rjúX\033r†rjÁX[mr†rjÁj'†rj©jÔ†rjsj»†rj©j†rjsj»†rjsj»†rj©j†rjsj»†rhX‡/***************************************************************************
                         ansicode.h  -  description
                             -------------------
    begin                : Jul 5 2004
    copyright            : (C) 2004 by Andre Simon
    email                : andre.simon1@gmx.de
 ***************************************************************************/r†rjsj»†rjsj»†rhXh/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/r †r!jsj»†r"jsj»†r#hj†r$hXifndef ANSIGENERATOR_Hr%†r&hj»†r'hj†r(hXdefine ANSIGENERATOR_Hr)†r*hj»†r+jsj»†r,hj†r-hXincluder.†r/jsjƆr0hVX
<iostream>r1†r2hj»†r3hj†r4hXincluder5†r6jsjƆr7hVX	<fstream>r8†r9hj»†r:hj†r;hXincluder<†r=jsjƆr>hVX<string>r?†r@hj»†rAhj†rBhXincluderC†rDjsjƆrEhVX	<sstream>rF†rGhj»†rHjsj»†rIhj†rJhXincluderK†rLjsjƆrMhVX"codegenerator.h"rN†rOhj»†rPhj†rQhXincluderR†rSjsjƆrThVX
"charcodes.h"rU†rVhj»†rWhj†rXhXincluderY†rZjsjƆr[hVX"version.h"r\†r]hj»†r^jsj»†r_jX	namespacer`†rajsjƆrbhŒX	highlightrc†rdjsjƆrej©jÞ†rfjsj»†rgjsj»†rhhX/**
   \brief This class generates ANSI escape sequences.

   It contains information about the resulting document structure (document
   header and footer), the colour system, white space handling and text
   formatting attributes.

* @author Andre Simon
*/ri†rjjsj»†rkjsj»†rljXclassrm†rnjsjƆroh¹X
AnsiGeneratorrp†rqjsjƆrrhtjé†rsjsjƆrtjXpublicru†rvjsjƆrwhŒX	highlightrx†ryhtjé†rzhtjé†r{hŒX
CodeGeneratorr|†r}jsj»†r~jsX  r†r€j©jÞ†rjsj»†r‚jsX  rƒ†r„jXpublicr…†r†htjé†r‡jsj»†rˆjsj»†r‰jsX   rІr‹hXJ/** Constructor
     \param colourTheme Name of Colour theme to use
    */rŒ†rjsj»†rŽjsX    r†rhŒX
AnsiGeneratorr‘†r’j©jî†r“jsjƆr”jXconstr•†r–jsjƆr—hŒXstringr˜†r™jsjƆršhtjõ†r›hŒXcolourThemerœ†rj©j†ržj©jÔ†rŸjsj»†r jsX    r¡†r¢hŒX
AnsiGeneratorr£†r¤j©jî†r¥j©j†r¦j©jÔ†r§jsj»†r¨jsX    r©†rªhtj†r«hŒX
AnsiGeneratorr¬†r­j©jî†r®j©j†r¯j©jÔ†r°jsj»†r±jsj»†r²jsX   r³†r´hXL/** prints document header
       \param  title Title of the document
    */rµ†r¶jsj»†r·jsX    r¸†r¹hŒXstringrº†r»jsjƆr¼jtX	getHeaderr½†r¾j©jî†r¿jXconstrÀ†rÁjsjƆrÂhŒXstringrÆrÄjsjƆrÅhtjõ†rÆjsjƆrÇhŒXtitlerȆrÉj©j†rÊj©jÔ†rËjsj»†rÌjsj»†rÍjsX    rΆrÏhX/** Prints document footer*/rІrÑjsj»†rÒjsX    rÓ†rÔhŒXstringrÕ†rÖjsjƆr×jtX	getFooterr؆rÙj©jî†rÚj©j†rÛj©jÔ†rÜjsj»†rÝjsj»†rÞjsX    r߆ràhX/** Prints document body*/rá†râjsj»†rãjsX    rä†råj-Xvoidræ†rçjsjƆrèjtX	printBodyré†rêj©jî†rëj©j†rìj©jÔ†ríjsj»†rîjsj»†rïjsX  rð†rñjXprivaterò†róhtjé†rôjsj»†rõjsj»†röjsX    r÷†røhX/** \return escaped character*/rù†rújsj»†rûjsX    rü†rýjXvirtualrþ†rÿjsjƆrhŒXstringr†rjsjƆrhŒX
maskCharacterr†rj©jî†rj-Xunsignedr†rjsjƆr	j-Xcharr
†rjsjƆrj©j†r
j©jÔ†rjsj»†rjsj»†rjsj»†rjsX    r†rhX6/** gibt ANSI-"Tags" zurueck (Farbindex+bold+kursiv)*/r†rjsj»†rjsX    r†rhŒXstringr†rjsjƆrjtX
getOpenTagr†rj©jî†rjXconstr†r jsjƆr!hŒXstringr"†r#htjõ†r$hŒXfontr%†r&j©jù†r'jsj»†r(jsX                      r)†r*jXconstr+†r,jsjƆr-hŒXstringr.†r/htjõ†r0hŒXfgColr1†r2j©jù†r3jsjƆr4jXconstr5†r6jsjƆr7hŒXstringr8†r9htjõ†r:hŒXbgColr;†r<htj†r=jÁj'†r>jÁj'†r?j©j†r@j©jÔ†rAjsj»†rBjsj»†rCjsj»†rDjsj»†rEjsX    rF†rGhŒXstringrH†rIjsjƆrJjtXgetMatchingOpenTagrK†rLj©jî†rMj-XunsignedrN†rOjsjƆrPj-XintrQ†rRjsjƆrShŒXstyleIDrT†rUj©j†rVj©jÔ†rWjsj»†rXjsX    rY†rZhŒXstringr[†r\jsjƆr]jtXgetMatchingCloseTagr^†r_j©jî†r`j-Xunsignedra†rbjsjƆrcj-Xintrd†rejsjƆrfhŒXstyleIDrg†rhj©j†rij©jÔ†rjjsj»†rkjsX  rl†rmj©j†rnj©jÔ†rojsj»†rpjsj»†rqj©j†rrjsj»†rshj†rthXendifru†rvhj»†rwhX2/*
 * Copyright (c) 1998,1999,2000,2001,2002 Tal Davidson. All rights reserved.
 *
 * ASBeautifier.cpp
 * by Tal Davidson (davidsont@bigfoot.com)
 * This file is a part of "Artistic Style" - an indentater and reformatter
 * of C, C, C# and Java source files.
 *
 * The "Artistic Style" project, including all files needed to compile it,
 * is free software; you can redistribute it and/or use it and/or modify it
 * under the terms of the GNU General Public License as published 
 * by the Free Software Foundation; either version 2 of the License, 
 * or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program.
 *
 * Patches:
 * 18 March 1999 - Brian Rampel -
 *       Fixed inverse insertion of spaces vs. tabs when in -t mode.
 * 08 may 2004 
 *       applied ASBeautifier.cpp.BITFIELD.patch.bz2
 */rx†ryjsj»†rzjsj»†r{hj†r|hXincluder}†r~jsjƆrhVX"compiler_defines.h"r€†rhj»†r‚hj†rƒhXincluder„†r…jsjƆr†hVX"ASBeautifier.h"r‡†rˆhj»†r‰jsj»†rŠhj†r‹hXincluderŒ†rjsjƆrŽhVX<vector>r†rhj»†r‘hj†r’hXincluder“†r”jsjƆr•hVX<string>r–†r—hj»†r˜hj†r™hXincluderš†r›jsjƆrœhVX<cctype>r†ržhj»†rŸhj†r hXincluder¡†r¢jsjƆr£hVX<algorithm>r¤†r¥hj»†r¦hj†r§hXincluder¨†r©jsjƆrªhVX
<iostream>r«†r¬hj»†r­jsj»†r®jsj»†r¯hj†r°hXtdefine INIT_CONTAINER(container, value)     {if ( (container) != NULL ) delete (container); (container) = (value); }r±†r²hj»†r³hj†r´hX^define DELETE_CONTAINER(container)          {if ( (container) != NULL ) delete (container) ; }rµ†r¶hj»†r·jsj»†r¸hj†r¹hXifdef USES_NAMESPACErº†r»hj»†r¼jXusingr½†r¾jsjƆr¿jX	namespacerÀ†rÁjsjƆrÂhŒXstdrÆrÄj©jÔ†rÅjsj»†rÆhj†rÇhXendifrȆrÉhj»†rÊjsj»†rËjsj»†rÌjsj»†rÍjsj»†rÎhj†rÏhXifdef USES_NAMESPACErІrÑhj»†rÒjX	namespacerÓ†rÔjsjƆrÕhŒXastylerÖ†r×jsj»†rØjsX  rÙ†rÚj©jÞ†rÛjsj»†rÜhj†rÝhXendifrÞ†rßhj»†ràjsj»†rájsX  râ†rãj-Xboolrä†råjsjƆræhŒXASBeautifierrç†rèhtjé†réhtjé†rêhŒXcalledInitStaticrë†rìjsjƆríhtj†rîjsjƆrïjEXfalserð†rñj©jÔ†ròjsj»†rójsj»†rôjsX  rõ†röhŒXvectorr÷†røhtj#†rùjXconstrú†rûjsjƆrühŒXstringrý†rþhtX*rÿ†r	htX>r	†r	jsjƆr	hŒXASBeautifierr	†r	htjé†r	e(htjé†r	hŒXheadersr	†r		j©jÔ†r
	jsj»†r	jsX  r	†r
	hŒXvectorr	†r	htj#†r	jXconstr	†r	jsjƆr	hŒXstringr	†r	htjÿ†r	htj	†r	jsjƆr	hŒXASBeautifierr	†r	htjé†r	htjé†r	hŒXnonParenHeadersr	†r	j©jÔ†r	jsj»†r 	jsX  r!	†r"	hŒXvectorr#	†r$	htj#†r%	jXconstr&	†r'	jsjƆr(	hŒXstringr)	†r*	htjÿ†r+	htj	†r,	jsjƆr-	hŒXASBeautifierr.	†r/	htjé†r0	htjé†r1	hŒXpreBlockStatementsr2	†r3	j©jÔ†r4	jsj»†r5	jsX  r6	†r7	hŒXvectorr8	†r9	htj#†r:	jXconstr;	†r<	jsjƆr=	hŒXstringr>	†r?	htjÿ†r@	htj	†rA	jsjƆrB	hŒXASBeautifierrC	†rD	htjé†rE	htjé†rF	hŒXassignmentOperatorsrG	†rH	j©jÔ†rI	jsj»†rJ	jsX  rK	†rL	hŒXvectorrM	†rN	htj#†rO	jXconstrP	†rQ	jsjƆrR	hŒXstringrS	†rT	htjÿ†rU	htj	†rV	jsjƆrW	hŒXASBeautifierrX	†rY	htjé†rZ	htjé†r[	hŒXnonAssignmentOperatorsr\	†r]	j©jÔ†r^	jsj»†r_	jsj»†r`	jsX  ra	†rb	hX(/*
   * initialize the static vars
   */rc	†rd	jsj»†re	jsX  rf	†rg	j-Xvoidrh	†ri	jsjƆrj	hŒXASBeautifierrk	†rl	htjé†rm	htjé†rn	hŒX
initStaticro	†rp	j©jî†rq	j©j†rr	jsj»†rs	jsX  rt	†ru	j©jÞ†rv	jsj»†rw	jsX    rx	†ry	jXifrz	†r{	jsjƆr|	j©jî†r}	hŒXcalledInitStaticr~	†r	j©j†r€	jsj»†r	jsX      r‚	†rƒ	jXreturnr„	†r…	j©jÔ†r†	jsj»†r‡	jsj»†rˆ	jsX    r‰	†rŠ	hŒXcalledInitStaticr‹	†rŒ	jsjƆr	htj†rŽ	jsjƆr	jEXtruer	†r‘	j©jÔ†r’	jsj»†r“	jsj»†r”	jsX    r•	†r–	hŒXheadersr—	†r˜	j©j>†r™	hŒX	push_backrš	†r›	j©jî†rœ	htjõ†r	hŒXAS_IFrž	†rŸ	j©j†r 	j©jÔ†r¡	jsj»†r¢	jsX    r£	†r¤	hŒXheadersr¥	†r¦	j©j>†r§	hŒX	push_backr¨	†r©	j©jî†rª	htjõ†r«	hŒXAS_ELSEr¬	†r­	j©j†r®	j©jÔ†r¯	jsj»†r°	jsX    r±	†r²	hŒXheadersr³	†r´	j©j>†rµ	hŒX	push_backr¶	†r·	j©jî†r¸	htjõ†r¹	hŒXAS_FORrº	†r»	j©j†r¼	j©jÔ†r½	jsj»†r¾	jsX    r¿	†rÀ	hŒXheadersrÁ	†rÂ	j©j>†rÃ	hŒX	push_backrÄ	†rÅ	j©jî†rÆ	htjõ†rÇ	hŒXAS_WHILErÈ	†rÉ	j©j†rÊ	j©jÔ†rË	jsj»†rÌ	jsX    rÍ	†rÎ	hŒXheadersrÏ	†rÐ	j©j>†rÑ	hŒX	push_backrÒ	†rÓ	j©jî†rÔ	htjõ†rÕ	hŒXAS_DOrÖ	†r×	j©j†rØ	j©jÔ†rÙ	jsj»†rÚ	jsX    rÛ	†rÜ	hŒXheadersrÝ	†rÞ	j©j>†rß	hŒX	push_backrà	†rá	j©jî†râ	htjõ†rã	hŒXAS_TRYrä	†rå	j©j†ræ	j©jÔ†rç	jsj»†rè	jsX    ré	†rê	hŒXheadersrë	†rì	j©j>†rí	hŒX	push_backrî	†rï	j©jî†rð	htjõ†rñ	hŒXAS_CATCHrò	†ró	j©j†rô	j©jÔ†rõ	jsj»†rö	jsX    r÷	†rø	hŒXheadersrù	†rú	j©j>†rû	hŒX	push_backrü	†rý	j©jî†rþ	htjõ†rÿ	hŒX
AS_FINALLYr
†r
j©j†r
j©jÔ†r
jsjȠr
jsX    r
†r
hŒXheadersr
†r
j©j>†r	
hŒX	push_backr

†r
j©jî†r
htjõ†r
hŒXAS_SYNCHRONIZEDr
†r
j©j†r
j©jÔ†r
jsjȠr
jsX    r
†r
hŒXheadersr
†r
j©j>†r
hŒX	push_backr
†r
j©jî†r
htjõ†r
hŒX	AS_SWITCHr
†r
j©j†r
j©jÔ†r
jsjȠr 
jsX    r!
†r"
hŒXheadersr#
†r$
j©j>†r%
hŒX	push_backr&
†r'
j©jî†r(
htjõ†r)
hŒXAS_CASEr*
†r+
j©j†r,
j©jÔ†r-
jsjȠr.
jsX    r/
†r0
hŒXheadersr1
†r2
j©j>†r3
hŒX	push_backr4
†r5
j©jî†r6
htjõ†r7
hŒX
AS_DEFAULTr8
†r9
j©j†r:
j©jÔ†r;
jsjȠr<
jsX    r=
†r>
hŒXheadersr?
†r@
j©j>†rA
hŒX	push_backrB
†rC
j©jî†rD
htjõ†rE
hŒX
AS_FOREACHrF
†rG
j©j†rH
j©jÔ†rI
jsjȠrJ
jsX    rK
†rL
hŒXheadersrM
†rN
j©j>†rO
hŒX	push_backrP
†rQ
j©jî†rR
htjõ†rS
hŒXAS_LOCKrT
†rU
j©j†rV
j©jÔ†rW
jsjȠrX
jsX    rY
†rZ
hŒXheadersr[
†r\
j©j>†r]
hŒX	push_backr^
†r_
j©jî†r`
htjõ†ra
hŒX	AS_UNSAFErb
†rc
j©j†rd
j©jÔ†re
jsjȠrf
jsX    rg
†rh
hŒXheadersri
†rj
j©j>†rk
hŒX	push_backrl
†rm
j©jî†rn
htjõ†ro
hŒXAS_FIXEDrp
†rq
j©j†rr
j©jÔ†rs
jsjȠrt
jsX    ru
†rv
hŒXheadersrw
†rx
j©j>†ry
hŒX	push_backrz
†r{
j©jî†r|
htjõ†r}
hŒXAS_GETr~
†r
j©j†r€
j©jÔ†r
jsj»†r‚
jsX    rƒ
†r„
hŒXheadersr…
†r†
j©j>†r‡
hŒX	push_backrˆ
†r‰
j©jî†rŠ
htjõ†r‹
hŒXAS_SETrŒ
†r
j©j†rŽ
j©jÔ†r
jsj»†r
jsX    r‘
†r’
hŒXheadersr“
†r”
j©j>†r•
hŒX	push_backr–
†r—
j©jî†r˜
htjõ†r™
hŒXAS_ADDrš
†r›
j©j†rœ
j©jÔ†r
jsj»†rž
jsX    rŸ
†r 
hŒXheadersr¡
†r¢
j©j>†r£
hŒX	push_backr¤
†r¥
j©jî†r¦
htjõ†r§
hŒX	AS_REMOVEr¨
†r©
j©j†rª
j©jÔ†r«
jsj»†r¬
jsX    r­
†r®
h.X!//headers.push_back(&AS_PUBLIC);
r¯
†r°
jsX    r±
†r²
h.X"//headers.push_back(&AS_PRIVATE);
r³
†r´
jsX    rµ
†r¶
h.X$//headers.push_back(&AS_PROTECTED);
r·
†r¸
jsj»†r¹
jsX    rº
†r»
h.X#//headers.push_back(&AS_OPERATOR);
r¼
†r½
jsX    r¾
†r¿
hŒXheadersrÀ
†rÁ
j©j>†rÂ
hŒX	push_backrÃ
†rÄ
j©jî†rÅ
htjõ†rÆ
hŒXAS_TEMPLATErÇ
†rÈ
j©j†rÉ
j©jÔ†rÊ
jsj»†rË
jsX    rÌ
†rÍ
hŒXheadersrÎ
†rÏ
j©j>†rÐ
hŒX	push_backrÑ
†rÒ
j©jî†rÓ
htjõ†rÔ
hŒXAS_CONSTrÕ
†rÖ
j©j†r×
j©jÔ†rØ
jsj»†rÙ
jsX    rÚ
†rÛ
hX/**/rÜ
†rÝ
jsj»†rÞ
jsX    rß
†rà
hŒXheadersrá
†râ
j©j>†rã
hŒX	push_backrä
†rå
j©jî†ræ
htjõ†rç
hŒX	AS_STATICrè
†ré
j©j†rê
j©jÔ†rë
jsj»†rì
jsX    rí
†rî
hŒXheadersrï
†rð
j©j>†rñ
hŒX	push_backrò
†ró
j©jî†rô
htjõ†rõ
hŒX	AS_EXTERNrö
†r÷
j©j†rø
j©jÔ†rù
jsj»†rú
jsj»†rû
jsX    rü
†rý
hŒXnonParenHeadersrþ
†rÿ
j©j>†rhŒX	push_backr†rj©jî†rhtjõ†rhŒXAS_ELSEr†rj©j†rj©jÔ†rjsj»†r	jsX    r
†rhŒXnonParenHeadersr†r
j©j>†rhŒX	push_backr†rj©jî†rhtjõ†rhŒXAS_DOr†rj©j†rj©jÔ†rjsj»†rjsX    r†rhŒXnonParenHeadersr†rj©j>†rhŒX	push_backr†rj©jî†rhtjõ†r hŒXAS_TRYr!†r"j©j†r#j©jÔ†r$jsj»†r%jsX    r&†r'hŒXnonParenHeadersr(†r)j©j>†r*hŒX	push_backr+†r,j©jî†r-htjõ†r.hŒX
AS_FINALLYr/†r0j©j†r1j©jÔ†r2jsj»†r3jsX    r4†r5hŒXnonParenHeadersr6†r7j©j>†r8hŒX	push_backr9†r:j©jî†r;htjõ†r<hŒX	AS_STATICr=†r>j©j†r?j©jÔ†r@jsj»†rAjsX    rB†rChŒXnonParenHeadersrD†rEj©j>†rFhŒX	push_backrG†rHj©jî†rIhtjõ†rJhŒXAS_CONSTrK†rLj©j†rMj©jÔ†rNjsj»†rOjsX    rP†rQhŒXnonParenHeadersrR†rSj©j>†rThŒX	push_backrU†rVj©jî†rWhtjõ†rXhŒX	AS_EXTERNrY†rZj©j†r[j©jÔ†r\jsj»†r]jsX    r^†r_hŒXnonParenHeadersr`†raj©j>†rbhŒX	push_backrc†rdj©jî†rehtjõ†rfhŒXAS_CASErg†rhj©j†rij©jÔ†rjjsj»†rkjsX    rl†rmhŒXnonParenHeadersrn†roj©j>†rphŒX	push_backrq†rrj©jî†rshtjõ†rthŒX
AS_DEFAULTru†rvj©j†rwj©jÔ†rxjsj»†ryjsX    rz†r{hŒXnonParenHeadersr|†r}j©j>†r~hŒX	push_backr†r€j©jî†rhtjõ†r‚hŒX	AS_UNSAFErƒ†r„j©j†r…j©jÔ†r†jsj»†r‡jsX    rˆ†r‰hŒXnonParenHeadersrІr‹j©j>†rŒhŒX	push_backr†rŽj©jî†rhtjõ†rhŒXAS_GETr‘†r’j©j†r“j©jÔ†r”jsj»†r•jsX    r–†r—hŒXnonParenHeadersr˜†r™j©j>†ršhŒX	push_backr›†rœj©jî†rhtjõ†ržhŒXAS_SETrŸ†r j©j†r¡j©jÔ†r¢jsj»†r£jsX    r¤†r¥hŒXnonParenHeadersr¦†r§j©j>†r¨hŒX	push_backr©†rªj©jî†r«htjõ†r¬hŒXAS_ADDr­†r®j©j†r¯j©jÔ†r°jsj»†r±jsX    r²†r³hŒXnonParenHeadersr´†rµj©j>†r¶hŒX	push_backr·†r¸j©jî†r¹htjõ†rºhŒX	AS_REMOVEr»†r¼j©j†r½j©jÔ†r¾jsj»†r¿jsj»†rÀjsj»†rÁjsj»†rÂjsX    rÆrÄhŒXnonParenHeadersrņrÆj©j>†rÇhŒX	push_backrȆrÉj©jî†rÊhtjõ†rËhŒX	AS_PUBLICr̆rÍj©j†rÎj©jÔ†rÏjsj»†rÐjsX    rцrÒhŒXnonParenHeadersrÓ†rÔj©j>†rÕhŒX	push_backrÖ†r×j©jî†rØhtjõ†rÙhŒX
AS_PRIVATErÚ†rÛj©j†rÜj©jÔ†rÝjsj»†rÞjsX    r߆ràhŒXnonParenHeadersrá†râj©j>†rãhŒX	push_backrä†råj©jî†ræhtjõ†rçhŒXAS_PROTECTEDrè†réj©j†rêj©jÔ†rëjsj»†rìjsX    rí†rîhŒXnonParenHeadersrï†rðj©j>†rñhŒX	push_backrò†rój©jî†rôhtjõ†rõhŒXAS_TEMPLATErö†r÷j©j†røj©jÔ†rùjsj»†rújsX    rû†rühŒXnonParenHeadersrý†rþj©j>†rÿhŒX	push_backr†rj©jî†rhtjõ†rhŒXAS_CONSTr†rj©j†rj©jÔ†rjsj»†rjsX    r	†r
h.X+///    nonParenHeaders.push_back(&AS_ASM);
r†rjsj»†r
jsX    r†rhŒXpreBlockStatementsr†rj©j>†rhŒX	push_backr†rj©jî†rhtjõ†rhŒXAS_CLASSr†rj©j†rj©jÔ†rjsj»†rjsX    r†rhŒXpreBlockStatementsr†rj©j>†r hŒX	push_backr!†r"j©jî†r#htjõ†r$hŒX	AS_STRUCTr%†r&j©j†r'j©jÔ†r(jsj»†r)jsX    r*†r+hŒXpreBlockStatementsr,†r-j©j>†r.hŒX	push_backr/†r0j©jî†r1htjõ†r2hŒXAS_UNIONr3†r4j©j†r5j©jÔ†r6jsj»†r7jsX    r8†r9hŒXpreBlockStatementsr:†r;j©j>†r<hŒX	push_backr=†r>j©jî†r?htjõ†r@hŒXAS_INTERFACErA†rBj©j†rCj©jÔ†rDjsj»†rEjsX    rF†rGhŒXpreBlockStatementsrH†rIj©j>†rJhŒX	push_backrK†rLj©jî†rMhtjõ†rNhŒXAS_NAMESPACErO†rPj©j†rQj©jÔ†rRjsj»†rSjsX    rT†rUhŒXpreBlockStatementsrV†rWj©j>†rXhŒX	push_backrY†rZj©jî†r[htjõ†r\hŒX	AS_THROWSr]†r^j©j†r_j©jÔ†r`jsj»†rajsX    rb†rchŒXpreBlockStatementsrd†rej©j>†rfhŒX	push_backrg†rhj©jî†rihtjõ†rjhŒX	AS_EXTERNrk†rlj©j†rmj©jÔ†rnjsj»†rojsj»†rpjsX    rq†rrhŒXassignmentOperatorsrs†rtj©j>†ruhŒX	push_backrv†rwj©jî†rxhtjõ†ryhŒX	AS_ASSIGNrz†r{j©j†r|j©jÔ†r}jsj»†r~jsX    r†r€hŒXassignmentOperatorsr†r‚j©j>†rƒhŒX	push_backr„†r…j©jî†r†htjõ†r‡hŒXAS_PLUS_ASSIGNrˆ†r‰j©j†rŠj©jÔ†r‹jsj»†rŒjsX    r†rŽhŒXassignmentOperatorsr†rj©j>†r‘hŒX	push_backr’†r“j©jî†r”htjõ†r•hŒXAS_MINUS_ASSIGNr–†r—j©j†r˜j©jÔ†r™jsj»†ršjsX    r›†rœhŒXassignmentOperatorsr†ržj©j>†rŸhŒX	push_backr †r¡j©jî†r¢htjõ†r£hŒXAS_MULT_ASSIGNr¤†r¥j©j†r¦j©jÔ†r§jsj»†r¨jsX    r©†rªhŒXassignmentOperatorsr«†r¬j©j>†r­hŒX	push_backr®†r¯j©jî†r°htjõ†r±hŒX
AS_DIV_ASSIGNr²†r³j©j†r´j©jÔ†rµjsj»†r¶jsX    r·†r¸hŒXassignmentOperatorsr¹†rºj©j>†r»hŒX	push_backr¼†r½j©jî†r¾htjõ†r¿hŒX
AS_MOD_ASSIGNrÀ†rÁj©j†rÂj©jÔ†rÃjsj»†rÄjsX    rÅ†rÆhŒXassignmentOperatorsrÇ†rÈj©j>†rÉhŒX	push_backrÊ†rËj©jî†rÌhtjõ†rÍhŒXAS_OR_ASSIGNrÎ†rÏj©j†rÐj©jÔ†rÑjsj»†rÒjsX    rÓ†rÔhŒXassignmentOperatorsrÕ†rÖj©j>†r×hŒX	push_backrØ†rÙj©jî†rÚhtjõ†rÛhŒX
AS_AND_ASSIGNrÜ†rÝj©j†rÞj©jÔ†rßjsj»†ràjsX    rá†râhŒXassignmentOperatorsrã†räj©j>†råhŒX	push_backræ†rçj©jî†rèhtjõ†réhŒX
AS_XOR_ASSIGNrê†rëj©j†rìj©jÔ†ríjsj»†rîjsX    rï†rðhŒXassignmentOperatorsrñ†ròj©j>†róhŒX	push_backrô†rõj©jî†röhtjõ†r÷hŒXAS_GR_GR_GR_ASSIGNrø†rùj©j†rúj©jÔ†rûjsj»†rüjsX    rý†rþhŒXassignmentOperatorsrÿ†r
j©j>†r
hŒX	push_backr
†r
j©jî†r
htjõ†r
hŒXAS_GR_GR_ASSIGNr
†r
j©j†r
j©jÔ†r	
jsjȠr

jsX    r
†r
hŒXassignmentOperatorsr

†r
j©j>†r
hŒX	push_backr
†r
j©jî†r
htjõ†r
hŒXAS_LS_LS_LS_ASSIGNr
†r
j©j†r
j©jÔ†r
jsjȠr
jsX    r
†r
hŒXassignmentOperatorsr
†r
j©j>†r
hŒX	push_backr
†r
j©jî†r 
htjõ†r!
hŒXAS_LS_LS_ASSIGNr"
†r#
j©j†r$
j©jÔ†r%
jsjȠr&
jsjȠr'
jsX    r(
†r)
hŒXassignmentOperatorsr*
†r+
j©j>†r,
hŒX	push_backr-
†r.
j©jî†r/
htjõ†r0
hŒX	AS_RETURNr1
†r2
j©j†r3
j©jÔ†r4
jsjȠr5
jsjȠr6
jsX    r7
†r8
hŒXnonAssignmentOperatorsr9
†r:
j©j>†r;
hŒX	push_backr<
†r=
j©jî†r>
htjõ†r?
hŒXAS_EQUALr@
†rA
j©j†rB
j©jÔ†rC
jsjȠrD
jsX    rE
†rF
hŒXnonAssignmentOperatorsrG
†rH
j©j>†rI
hŒX	push_backrJ
†rK
j©jî†rL
htjõ†rM
hŒXAS_PLUS_PLUSrN
†rO
j©j†rP
j©jÔ†rQ
jsjȠrR
jsX    rS
†rT
hŒXnonAssignmentOperatorsrU
†rV
j©j>†rW
hŒX	push_backrX
†rY
j©jî†rZ
htjõ†r[
hŒXAS_MINUS_MINUSr\
†r]
j©j†r^
j©jÔ†r_
jsjȠr`
jsX    ra
†rb
hŒXnonAssignmentOperatorsrc
†rd
j©j>†re
hŒX	push_backrf
†rg
j©jî†rh
htjõ†ri
hŒXAS_NOT_EQUALrj
†rk
j©j†rl
j©jÔ†rm
jsjȠrn
jsX    ro
†rp
hŒXnonAssignmentOperatorsrq
†rr
j©j>†rs
hŒX	push_backrt
†ru
j©jî†rv
htjõ†rw
hŒXAS_GR_EQUALrx
†ry
j©j†rz
j©jÔ†r{
jsjȠr|
jsX    r}
†r~
hŒXnonAssignmentOperatorsr
†r€
j©j>†r
hŒX	push_backr‚
†rƒ
j©jî†r„
htjõ†r…
hŒXAS_GR_GR_GRr†
†r‡
j©j†rˆ
j©jÔ†r‰
jsj»†rŠ
jsX    r‹
†rŒ
hŒXnonAssignmentOperatorsr
†rŽ
j©j>†r
hŒX	push_backr
†r‘
j©jî†r’
htjõ†r“
hŒXAS_GR_GRr”
†r•
j©j†r–
j©jÔ†r—
jsj»†r˜
jsX    r™
†rš
hŒXnonAssignmentOperatorsr›
†rœ
j©j>†r
hŒX	push_backrž
†rŸ
j©jî†r 
htjõ†r¡
hŒXAS_LS_EQUALr¢
†r£
j©j†r¤
j©jÔ†r¥
jsj»†r¦
jsX    r§
†r¨
hŒXnonAssignmentOperatorsr©
†rª
j©j>†r«
hŒX	push_backr¬
†r­
j©jî†r®
htjõ†r¯
hŒXAS_LS_LS_LSr°
†r±
j©j†r²
j©jÔ†r³
jsj»†r´
jsX    rµ
†r¶
hŒXnonAssignmentOperatorsr·
†r¸
j©j>†r¹
hŒX	push_backrº
†r»
j©jî†r¼
htjõ†r½
hŒXAS_LS_LSr¾
†r¿
j©j†rÀ
j©jÔ†rÁ
jsj»†rÂ
jsX    rÃ
†rÄ
hŒXnonAssignmentOperatorsrÅ
†rÆ
j©j>†rÇ
hŒX	push_backrÈ
†rÉ
j©jî†rÊ
htjõ†rË
hŒXAS_ARROWrÌ
†rÍ
j©j†rÎ
j©jÔ†rÏ
jsj»†rÐ
jsX    rÑ
†rÒ
hŒXnonAssignmentOperatorsrÓ
†rÔ
j©j>†rÕ
hŒX	push_backrÖ
†r×
j©jî†rØ
htjõ†rÙ
hŒXAS_ANDrÚ
†rÛ
j©j†rÜ
j©jÔ†rÝ
jsj»†rÞ
jsX    rß
†rà
hŒXnonAssignmentOperatorsrá
†râ
j©j>†rã
hŒX	push_backrä
†rå
j©jî†ræ
htjõ†rç
hŒXAS_ORrè
†ré
j©j†rê
j©jÔ†rë
jsj»†rì
jsX  rí
†rî
j©j†rï
jsj»†rð
jsj»†rñ
jsX  rò
†ró
hX)/**
   * ASBeautifier's constructor
   */rô
†rõ
jsj»†rö
jsX  r÷
†rø
hŒXASBeautifierrù
†rú
htjé†rû
htjé†rü
hŒXASBeautifierrý
†rþ
j©jî†rÿ
j©j†rjsj»†rjsX  r†rj©jÞ†rjsj»†rjsX    r†rhŒX
initStaticr†r	j©jî†r
j©j†rj©jÔ†rjsj»†r
jsj»†rjsX    r†rhŒXwaitingBeautifierStackr†rjsjƆrhtj†rjsjƆrjEXNULLr†rj©jÔ†rjsj»†rjsX    r†rhŒXactiveBeautifierStackr†rjsjƆrhtj†rjsjƆr jEXNULLr!†r"j©jÔ†r#jsj»†r$jsX    r%†r&hŒX!waitingBeautifierStackLengthStackr'†r(jsjƆr)htj†r*jsjƆr+jEXNULLr,†r-j©jÔ†r.jsj»†r/jsX    r0†r1hŒX activeBeautifierStackLengthStackr2†r3jsjƆr4htj†r5jsjƆr6jEXNULLr7†r8j©jÔ†r9jsj»†r:jsj»†r;jsX    r<†r=hŒXheaderStackr>†r?jsX  r@†rAhtj†rBjsjƆrCjEXNULLrD†rEj©jÔ†rFjsj»†rGjsX    rH†rIhŒX
tempStacksrJ†rKjsjƆrLhtj†rMjsjƆrNjEXNULLrO†rPj©jÔ†rQjsj»†rRjsX    rS†rThŒXblockParenDepthStackrU†rVjsjƆrWhtj†rXjsjƆrYjEXNULLrZ†r[j©jÔ†r\jsj»†r]jsX    r^†r_hŒXblockStatementStackr`†rajsjƆrbhtj†rcjsjƆrdjEXNULLre†rfj©jÔ†rgjsj»†rhjsX    ri†rjhŒXparenStatementStackrk†rljsjƆrmhtj†rnjsjƆrojEXNULLrp†rqj©jÔ†rrjsj»†rsjsX    rt†ruhŒXbracketBlockStateStackrv†rwjsjƆrxhtj†ryjsjƆrzjEXNULLr{†r|j©jÔ†r}jsj»†r~e(jsX    r†r€hŒXinStatementIndentStackr†r‚jsjƆrƒhtj†r„jsjƆr…jEXNULLr††r‡j©jÔ†rˆjsj»†r‰jsX    rІr‹hŒXinStatementIndentStackSizeStackrŒ†rjsjƆrŽhtj†rjsjƆrjEXNULLr‘†r’j©jÔ†r“jsj»†r”jsX    r•†r–hŒXparenIndentStackr—†r˜jsjƆr™htj†ršjsjƆr›jEXNULLrœ†rj©jÔ†ržjsj»†rŸjsX    r †r¡hŒXsourceIteratorr¢†r£jsjƆr¤htj†r¥jsjƆr¦jEXNULLr§†r¨j©jÔ†r©jsj»†rªjsj»†r«jsX    r¬†r­hŒXisMinimalConditinalIndentSetr®†r¯jsjƆr°htj†r±jsjƆr²jEXfalser³†r´j©jÔ†rµjsj»†r¶jsX    r·†r¸hŒXshouldForceTabIndentationr¹†rºjsjƆr»htj†r¼jsjƆr½jEXfalser¾†r¿j©jÔ†rÀjsj»†rÁjsj»†rÂjsX    rÆrÄhŒXsetSpaceIndentationrņrÆj©jî†rÇjŸX4rȆrÉj©j†rÊj©jÔ†rËjsj»†rÌjsX    r͆rÎhŒXsetMaxInStatementIndentLengthrφrÐj©jî†rÑjŸX40rÒ†rÓj©j†rÔj©jÔ†rÕjsj»†rÖjsX    r׆rØhŒXsetClassIndentrÙ†rÚj©jî†rÛjEXfalser܆rÝj©j†rÞj©jÔ†rßjsj»†ràjsX    rá†râhŒXsetSwitchIndentrã†räj©jî†råjEXfalseræ†rçj©j†rèj©jÔ†réjsj»†rêjsX    rë†rìhŒX
setCaseIndentrí†rîj©jî†rïjEXfalserð†rñj©j†ròj©jÔ†rójsj»†rôjsX    rõ†röhŒXsetBlockIndentr÷†røj©jî†rùjEXfalserú†rûj©j†rüj©jÔ†rýjsj»†rþjsX    rÿ†rhŒXsetBracketIndentr†rj©jî†rjEXfalser†rj©j†rj©jÔ†rjsj»†rjsX    r	†r
hŒXsetNamespaceIndentr†rj©jî†r
jEXfalser†rj©j†rj©jÔ†rjsj»†rjsX    r†rhŒXsetLabelIndentr†rj©jî†rjEXfalser†rj©j†rj©jÔ†rjsj»†rjsX    r†rhŒXsetEmptyLineFillr†r j©jî†r!jEXfalser"†r#j©j†r$j©jÔ†r%jsj»†r&jsX    r'†r(hŒX	setCStyler)†r*j©jî†r+j©j†r,j©jÔ†r-jsj»†r.jsX    r/†r0hŒXsetPreprocessorIndentr1†r2j©jî†r3jEXfalser4†r5j©j†r6j©jÔ†r7jsj»†r8jsX  r9†r:j©j†r;jsj»†r<jsj»†r=jsX  r>†r?hŒXASBeautifierr@†rAhtjé†rBhtjé†rChŒXASBeautifierrD†rEj©jî†rFjXconstrG†rHjsjƆrIhŒXASBeautifierrJ†rKjsjƆrLhtjõ†rMhŒXotherrN†rOj©j†rPjsj»†rQjsX  rR†rSj©jÞ†rTjsj»†rUjsX    rV†rWhŒXwaitingBeautifierStackrX†rYjsjƆrZhtj†r[jsjƆr\jEXNULLr]†r^j©jÔ†r_jsj»†r`jsX    ra†rbhŒXactiveBeautifierStackrc†rdjsjƆrehtj†rfjsjƆrgjEXNULLrh†rij©jÔ†rjjsj»†rkjsX    rl†rmhŒX!waitingBeautifierStackLengthStackrn†rojsjƆrphtj†rqjsjƆrrjEXNULLrs†rtj©jÔ†rujsj»†rvjsX    rw†rxhŒX activeBeautifierStackLengthStackry†rzjsjƆr{htj†r|jsjƆr}jEXNULLr~†rj©jÔ†r€jsj»†rjsj»†r‚jsX    rƒ†r„hŒXheaderStackr…†r†jsX  r‡†rˆhtj†r‰jsjƆrŠjXnewr‹†rŒjsjƆrhŒXvectorrކrhtj#†rjXconstr‘†r’jsjƆr“hŒXstringr”†r•htjÿ†r–htj	†r—j©jÔ†r˜jsj»†r™jsX    rš†r›htjÿ†rœhŒXheaderStackr†ržjsjƆrŸhtj†r jsjƆr¡htjÿ†r¢hŒXotherr£†r¤j©j>†r¥hŒXheaderStackr¦†r§j©jÔ†r¨jsj»†r©jsj»†rªjsX    r«†r¬hŒX
tempStacksr­†r®jsjƆr¯htj†r°jsjƆr±jXnewr²†r³jsjƆr´hŒXvectorrµ†r¶htj#†r·jsjƆr¸hŒXvectorr¹†rºhtj#†r»jXconstr¼†r½jsjƆr¾hŒXstringr¿†rÀhtjÿ†rÁhtj	†rÂhtjÿ†rÃjsjƆrÄhtj	†rÅj©jÔ†rÆjsj»†rÇjsX    rȆrÉhŒXvectorrʆrËhtj#†rÌjsjƆrÍhŒXvectorrΆrÏhtj#†rÐjXconstrцrÒjsjƆrÓhŒXstringrÔ†rÕhtjÿ†rÖhtj	†r×htjÿ†rØjsjƆrÙhtj	†rÚhtjé†rÛhtjé†rÜhŒXiteratorr݆rÞjsjƆrßhŒXiterrà†ráj©jÔ†râjsj»†rãjsX    rä†råjXforræ†rçjsjƆrèj©jî†réhŒXiterrê†rëjsjƆrìhtj†ríjsjƆrîhŒXotherrï†rðj©j>†rñhŒX
tempStacksrò†róhtX-rô†rõhtj	†röhŒXbeginr÷†røj©jî†rùj©j†rúj©jÔ†rûjsj»†rüjsX	         rý†rþhŒXiterrÿ†rjsjƆrhtj:†rhtj†rjsjƆrhŒXotherr†rj©j>†rhŒX
tempStacksr†r	htjô†r
htj	†rhŒXendr†r
j©jî†rj©j†rj©jÔ†rjsj»†rjsX	         r†rhtjΆrhtjΆrhŒXiterr†rj©j†rjsj»†rjsX      r†rj©jÞ†rjsj»†rjsX        r†rhŒXvectorr †r!htj#†r"jXconstr#†r$jsjƆr%hŒXstringr&†r'htjÿ†r(htj	†r)jsjƆr*htjÿ†r+hŒXnewVecr,†r-jsjƆr.htj†r/jsjƆr0jXnewr1†r2jsjƆr3hŒXvectorr4†r5htj#†r6jXconstr7†r8jsjƆr9hŒXstringr:†r;htjÿ†r<htj	†r=j©jÔ†r>jsj»†r?jsX        r@†rAhtjÿ†rBhŒXnewVecrC†rDjsjƆrEhtj†rFjsjƆrGhtjÿ†rHhtjÿ†rIhŒXiterrJ†rKj©jÔ†rLjsj»†rMjsX        rN†rOhŒX
tempStacksrP†rQhtjô†rRhtj	†rShŒX	push_backrT†rUj©jî†rVhŒXnewVecrW†rXj©j†rYj©jÔ†rZjsj»†r[jsX      r\†r]j©j†r^jsj»†r_jsX    r`†rahŒXblockParenDepthStackrb†rcjsjƆrdhtj†rejsjƆrfjXnewrg†rhjsjƆrihŒXvectorrj†rkhtj#†rlj-Xintrm†rnhtj	†roj©jÔ†rpjsj»†rqjsX    rr†rshtjÿ†rthŒXblockParenDepthStackru†rvjsjƆrwhtj†rxjsjƆryhtjÿ†rzhŒXotherr{†r|j©j>†r}hŒXblockParenDepthStackr~†rj©jÔ†r€jsj»†rjsj»†r‚jsX    rƒ†r„hŒXblockStatementStackr…†r†jsjƆr‡htj†rˆjsjƆr‰jXnewrІr‹jsjƆrŒhŒXvectorr†rŽhtj#†rj-Xboolr†r‘htj	†r’j©jÔ†r“jsj»†r”jsX    r•†r–htjÿ†r—hŒXblockStatementStackr˜†r™jsjƆršhtj†r›jsjƆrœhtjÿ†rhŒXotherrž†rŸj©j>†r hŒXblockStatementStackr¡†r¢j©jÔ†r£jsj»†r¤jsj»†r¥jsX    r¦†r§hŒXparenStatementStackr¨†r©jsjƆrªhtj†r«jsX  r¬†r­jXnewr®†r¯jsjƆr°hŒXvectorr±†r²htj#†r³j-Xboolr´†rµhtj	†r¶j©jÔ†r·jsj»†r¸jsX    r¹†rºhtjÿ†r»hŒXparenStatementStackr¼†r½jsjƆr¾htj†r¿jsjƆrÀhtjÿ†rÁhŒXotherr†rÃj©j>†rÄhŒXparenStatementStackrņrÆj©jÔ†rÇjsj»†rÈjsj»†rÉjsX    rʆrËhŒXbracketBlockStateStackr̆rÍjsjƆrÎhtj†rÏjsjƆrÐjXnewrцrÒjsjƆrÓhŒXvectorrÔ†rÕhtj#†rÖj-Xboolr׆rØhtj	†rÙj©jÔ†rÚjsj»†rÛjsX    r܆rÝhtjÿ†rÞhŒXbracketBlockStateStackr߆ràjsjƆráhtj†râjsjƆrãhtjÿ†rähŒXotherrå†ræj©j>†rçhŒXbracketBlockStateStackrè†réj©jÔ†rêjsj»†rëjsj»†rìjsX    rí†rîhŒXinStatementIndentStackrï†rðjsjƆrñhtj†ròjsjƆrójXnewrô†rõjsjƆröhŒXvectorr÷†røhtj#†rùj-Xintrú†rûhtj	†rüj©jÔ†rýjsj»†rþjsX    rÿ†rhtjÿ†rhŒXinStatementIndentStackr†rjsjƆrhtj†rjsjƆrhtjÿ†rhŒXotherr†r	j©j>†r
hŒXinStatementIndentStackr†rj©jÔ†r
jsj»†rjsj»†rjsX    r†rhŒXinStatementIndentStackSizeStackr†rjsjƆrhtj†rjsjƆrjXnewr†rjsjƆrhŒXvectorr†rhtj#†rj-Xintr†rhtj	†rj©jÔ†r jsj»†r!jsX    r"†r#htjÿ†r$hŒXinStatementIndentStackSizeStackr%†r&jsjƆr'htj†r(jsjƆr)htjÿ†r*hŒXotherr+†r,j©j>†r-hŒXinStatementIndentStackSizeStackr.†r/j©jÔ†r0jsj»†r1jsj»†r2jsX    r3†r4hŒXparenIndentStackr5†r6jsjƆr7htj†r8jsjƆr9jXnewr:†r;jsjƆr<hŒXvectorr=†r>htj#†r?j-Xintr@†rAhtj	†rBj©jÔ†rCjsj»†rDjsX    rE†rFhtjÿ†rGhŒXparenIndentStackrH†rIjsjƆrJhtj†rKjsjƆrLhtjÿ†rMhŒXotherrN†rOj©j>†rPhŒXparenIndentStackrQ†rRj©jÔ†rSjsj»†rTjsj»†rUjsX    rV†rWhŒXsourceIteratorrX†rYjsjƆrZhtj†r[jsjƆr\hŒXotherr]†r^j©j>†r_hŒXsourceIteratorr`†raj©jÔ†rbjsj»†rcjsj»†rdjsX    re†rfhŒXindentStringrg†rhjsjƆrihtj†rjjsjƆrkhŒXotherrl†rmj©j>†rnhŒXindentStringro†rpj©jÔ†rqjsj»†rrjsX    rs†rthŒX
currentHeaderru†rvjsjƆrwhtj†rxjsjƆryhŒXotherrz†r{j©j>†r|hŒX
currentHeaderr}†r~j©jÔ†rjsj»†r€jsX    r†r‚hŒXpreviousLastLineHeaderrƒ†r„jsjƆr…htj†r†jsjƆr‡hŒXotherrˆ†r‰j©j>†rŠhŒXpreviousLastLineHeaderr‹†rŒj©jÔ†rjsj»†rŽjsX    r†rhŒXimmediatelyPreviousAssignmentOpr‘†r’jsjƆr“htj†r”jsjƆr•hŒXotherr–†r—j©j>†r˜hŒXimmediatelyPreviousAssignmentOpr™†ršj©jÔ†r›jsj»†rœjsX    r†ržhŒX	isInQuoterŸ†r jsjƆr¡htj†r¢jsjƆr£hŒXotherr¤†r¥j©j>†r¦hŒX	isInQuoter§†r¨j©jÔ†r©jsj»†rªjsX    r«†r¬hŒXisInCommentr­†r®jsjƆr¯htj†r°jsjƆr±hŒXotherr²†r³j©j>†r´hŒXisInCommentrµ†r¶j©jÔ†r·jsj»†r¸jsX    r¹†rºhŒXisInCaser»†r¼jsjƆr½htj†r¾jsjƆr¿hŒXotherrÀ†rÁj©j>†rÂhŒXisInCaserÆrÄj©jÔ†rÅjsj»†rÆjsX    rdžrÈhŒXisInQuestionrɆrÊjsjƆrËhtj†rÌjsjƆrÍhŒXotherrΆrÏj©j>†rÐhŒXisInQuestionrцrÒj©jÔ†rÓjsj»†rÔjsX    rÕ†rÖhŒX
isInStatementr׆rØjsjƆrÙhtj†rÚhŒXotherrÛ†rÜj©j>†rÝjsjƆrÞhŒX
isInStatementr߆ràj©jÔ†rájsj»†râjsX    rã†rähŒX
isInHeaderrå†ræjsjƆrçhtj†rèjsjƆréhŒXotherrê†rëj©j>†rìhŒX
isInHeaderrí†rîj©jÔ†rïjsj»†rðjsX    rñ†ròhŒXisCStyleró†rôjsjƆrõhtj†röjsjƆr÷hŒXotherrø†rùj©j>†rúhŒXisCStylerû†rüj©jÔ†rýjsj»†rþjsX    rÿ†rhŒXisInOperatorr†rjsjƆrhtj†rjsjƆrhŒXotherr†rj©j>†rhŒXisInOperatorr	†r
j©jÔ†rjsj»†rjsX    r
†rhŒXisInTemplater†rjsjƆrhtj†rjsjƆrhŒXotherr†rj©j>†rhŒXisInTemplater†rj©jÔ†rjsj»†rjsX    r†rhŒX	isInConstr†rjsjƆrhtj†r jsjƆr!hŒXotherr"†r#j©j>†r$hŒX	isInConstr%†r&j©jÔ†r'jsj»†r(jsX    r)†r*hŒXclassIndentr+†r,jsjƆr-htj†r.jsjƆr/hŒXotherr0†r1j©j>†r2hŒXclassIndentr3†r4j©jÔ†r5jsj»†r6jsX    r7†r8hŒXisInClassHeaderr9†r:jsjƆr;htj†r<jsjƆr=hŒXotherr>†r?j©j>†r@hŒXisInClassHeaderrA†rBj©jÔ†rCjsj»†rDjsX    rE†rFhŒXisInClassHeaderTabrG†rHjsjƆrIhtj†rJjsjƆrKhŒXotherrL†rMj©j>†rNhŒXisInClassHeaderTabrO†rPj©jÔ†rQjsj»†rRjsX    rS†rThŒXswitchIndentrU†rVjsjƆrWhtj†rXjsjƆrYhŒXotherrZ†r[j©j>†r\hŒXswitchIndentr]†r^j©jÔ†r_jsj»†r`jsX    ra†rbhŒX
caseIndentrc†rdjsjƆrehtj†rfjsjƆrghŒXotherrh†rij©j>†rjhŒX
caseIndentrk†rlj©jÔ†rmjsj»†rnjsX    ro†rphŒXnamespaceIndentrq†rrjsjƆrshtj†rtjsjƆruhŒXotherrv†rwj©j>†rxhŒXnamespaceIndentry†rzj©jÔ†r{jsj»†r|jsX    r}†r~hŒX
bracketIndentr†r€jsjƆrhtj†r‚jsjƆrƒhŒXotherr„†r…j©j>†r†hŒX
bracketIndentr‡†rˆj©jÔ†r‰jsj»†rŠjsX    r‹†rŒhŒXblockIndentr†rŽjsjƆrhtj†rjsjƆr‘hŒXotherr’†r“j©j>†r”hŒXblockIndentr•†r–j©jÔ†r—jsj»†r˜jsX    r™†ršhŒXlabelIndentr›†rœjsjƆrhtj†ržjsjƆrŸhŒXotherr †r¡j©j>†r¢hŒXlabelIndentr£†r¤j©jÔ†r¥jsj»†r¦jsX    r§†r¨hŒXpreprocessorIndentr©†rªjsjƆr«htj†r¬jsjƆr­hŒXotherr®†r¯j©j>†r°hŒXpreprocessorIndentr±†r²j©jÔ†r³jsj»†r´jsX    rµ†r¶hŒX
parenDepthr·†r¸jsjƆr¹htj†rºjsjƆr»hŒXotherr¼†r½j©j>†r¾hŒX
parenDepthr¿†rÀj©jÔ†rÁjsj»†rÂjsX    rÆrÄhŒXindentLengthrņrÆjsjƆrÇhtj†rÈjsjƆrÉhŒXotherrʆrËj©j>†rÌhŒXindentLengthr͆rÎj©jÔ†rÏjsj»†rÐjsX    rцrÒhŒX
blockTabCountrÓ†rÔjsjƆrÕhtj†rÖjsjƆr×hŒXotherr؆rÙj©j>†rÚhŒX
blockTabCountrÛ†rÜj©jÔ†rÝjsj»†rÞjsX    r߆ràhŒXleadingWhiteSpacesrá†râjsjƆrãhtj†räjsjƆråhŒXotherræ†rçj©j>†rèhŒXleadingWhiteSpacesré†rêj©jÔ†rëjsj»†rìjsX    rí†rîhŒXmaxInStatementIndentrï†rðjsjƆrñhtj†ròjsjƆróhŒXotherrô†rõj©j>†röhŒXmaxInStatementIndentr÷†røj©jÔ†rùjsj»†rújsX    rû†rühŒX
templateDepthrý†rþjsjƆrÿhtj†rjsjƆrhŒXotherr†rj©j>†rhŒX
templateDepthr†rj©jÔ†rjsj»†rjsX    r	†r
hŒX	quoteCharr†rjsjƆr
htj†rjsjƆrhŒXotherr†rj©j>†rhŒX	quoteCharr†rj©jÔ†rjsj»†rjsX    r†rhŒXprevNonSpaceChr†rjsjƆrhtj†rjsjƆrhŒXotherr†rj©j>†r hŒXprevNonSpaceChr!†r"j©jÔ†r#jsj»†r$jsX    r%†r&hŒXcurrentNonSpaceChr'†r(jsjƆr)htj†r*jsjƆr+hŒXotherr,†r-j©j>†r.hŒXcurrentNonSpaceChr/†r0j©jÔ†r1jsj»†r2jsX    r3†r4hŒXcurrentNonLegalChr5†r6jsjƆr7htj†r8jsjƆr9hŒXotherr:†r;j©j>†r<hŒXcurrentNonLegalChr=†r>j©jÔ†r?jsj»†r@jsX    rA†rBhŒXprevNonLegalChrC†rDjsjƆrEhtj†rFjsjƆrGhŒXotherrH†rIj©j>†rJhŒXprevNonLegalChrK†rLj©jÔ†rMjsj»†rNjsX    rO†rPhŒXisInConditionalrQ†rRjsjƆrShtj†rTjsjƆrUhŒXotherrV†rWj©j>†rXhŒXisInConditionalrY†rZj©jÔ†r[jsj»†r\jsX    r]†r^hŒXminConditionalIndentr_†r`jsjƆrahtj†rbjsjƆrchŒXotherrd†rej©j>†rfhŒXminConditionalIndentrg†rhj©jÔ†rijsj»†rjjsX    rk†rlhŒXprevFinalLineSpaceTabCountrm†rnjsjƆrohtj†rpjsjƆrqhŒXotherrr†rsj©j>†rthŒXprevFinalLineSpaceTabCountru†rvj©jÔ†rwjsj»†rxjsX    ry†rzhŒXprevFinalLineTabCountr{†r|jsjƆr}htj†r~jsjƆrhŒXotherr€†rj©j>†r‚hŒXprevFinalLineTabCountrƒ†r„j©jÔ†r…jsj»†r†jsX    r‡†rˆhŒX
emptyLineFillr‰†rŠjsjƆr‹htj†rŒjsjƆrhŒXotherrކrj©j>†rhŒX
emptyLineFillr‘†r’j©jÔ†r“jsj»†r”jsX    r•†r–hŒXprobationHeaderr—†r˜jsjƆr™htj†ršjsjƆr›hŒXotherrœ†rj©j>†ržhŒXprobationHeaderrŸ†r j©jÔ†r¡jsj»†r¢jsX    r£†r¤hŒX
isInDefiner¥†r¦jsjƆr§htj†r¨jsjƆr©hŒXotherrª†r«j©j>†r¬hŒX
isInDefiner­†r®j©jÔ†r¯jsj»†r°jsX    r±†r²hŒXisInDefineDefinitionr³†r´jsjƆrµhtj†r¶jsjƆr·hŒXotherr¸†r¹j©j>†rºhŒXisInDefineDefinitionr»†r¼j©jÔ†r½jsj»†r¾jsX    r¿†rÀhŒXbackslashEndsPrevLinerÁ†rÂjsjƆrÃhtj†rÄjsjƆrÅhŒXotherrƆrÇj©j>†rÈhŒXbackslashEndsPrevLinerɆrÊj©jÔ†rËjsj»†rÌjsX    r͆rÎhŒXdefineTabCountrφrÐjsjƆrÑhtj†rÒjsjƆrÓhŒXotherrÔ†rÕj©j>†rÖhŒXdefineTabCountr׆rØj©jÔ†rÙjsj»†rÚjsX  rÛ†rÜj©j†rÝjsj»†rÞjsj»†rßjsX  rà†ráhX(/**
   * ASBeautifier's destructor
   */râ†rãe(jsj»†räjsX  rå†ræhŒXASBeautifierrç†rèhtjé†réhtjé†rêhtj†rëhŒXASBeautifierrì†ríj©jî†rîj©j†rïjsj»†rðjsX  rñ†ròj©jÞ†rójsj»†rôjsX    rõ†röhŒXDELETE_CONTAINERr÷†røj©jî†rùjsjƆrúhŒXheaderStackrû†rüjsjƆrýj©j†rþj©jÔ†rÿjsj»†rjsX    r†rhŒXDELETE_CONTAINERr†rj©jî†rjsjƆrhŒX
tempStacksr†rjsjƆr	j©j†r
j©jÔ†rjsj»†rjsX    r
†rhŒXDELETE_CONTAINERr†rj©jî†rjsjƆrhŒXblockParenDepthStackr†rjsjƆrj©j†rj©jÔ†rjsj»†rjsX    r†rhŒXDELETE_CONTAINERr†rj©jî†rjsjƆrhŒXblockStatementStackr†r jsjƆr!j©j†r"j©jÔ†r#jsj»†r$jsX    r%†r&hŒXDELETE_CONTAINERr'†r(j©jî†r)jsjƆr*hŒXparenStatementStackr+†r,jsjƆr-j©j†r.j©jÔ†r/jsj»†r0jsX    r1†r2hŒXDELETE_CONTAINERr3†r4j©jî†r5jsjƆr6hŒXbracketBlockStateStackr7†r8jsjƆr9j©j†r:j©jÔ†r;jsj»†r<jsX    r=†r>hŒXDELETE_CONTAINERr?†r@j©jî†rAjsjƆrBhŒXinStatementIndentStackrC†rDjsjƆrEj©j†rFj©jÔ†rGjsj»†rHjsX    rI†rJhŒXDELETE_CONTAINERrK†rLj©jî†rMjsjƆrNhŒXinStatementIndentStackSizeStackrO†rPjsjƆrQj©j†rRj©jÔ†rSjsj»†rTjsX    rU†rVhŒXDELETE_CONTAINERrW†rXj©jî†rYjsjƆrZhŒXparenIndentStackr[†r\jsjƆr]j©j†r^j©jÔ†r_jsj»†r`jsj»†rajsX    rb†rch.X'// DELETE_CONTAINER( sourceIterator );
rd†rejsX  rf†rgj©j†rhjsj»†rijsj»†rjjsX  rk†rlhX÷/**
   * initialize the ASBeautifier.
   *
   * init() should be called every time a ABeautifier object is to start
   * beautifying a NEW source file.
   * init() recieves a pointer to a DYNAMICALLY CREATED ASSourceIterator object
   * that will be used to iterate through the source code. This object will be
   * deleted during the ASBeautifier's destruction, and thus should not be
   * deleted elsewhere.
   *
   * @param iter     a pointer to the DYNAMICALLY CREATED ASSourceIterator object.
   */rm†rnjsj»†rojsX  rp†rqj-Xvoidrr†rsjsjƆrthŒXASBeautifierru†rvhtjé†rwhtjé†rxhŒXinitry†rzj©jî†r{hŒXASSourceIteratorr|†r}jsjƆr~htjÿ†rhŒXiterr€†rj©j†r‚jsj»†rƒjsj»†r„jsX  r…†r†j©jÞ†r‡jsj»†rˆjsX    r‰†rŠhŒXsourceIteratorr‹†rŒjsjƆrhtj†rŽjsjƆrhŒXiterr†r‘j©jÔ†r’jsj»†r“jsX    r”†r•hŒXinitr–†r—j©jî†r˜j©j†r™j©jÔ†ršjsj»†r›jsX  rœ†rj©j†ržjsj»†rŸjsj»†r jsX  r¡†r¢hX+/**
   * initialize the ASBeautifier.
   */r£†r¤jsj»†r¥jsX  r¦†r§j-Xvoidr¨†r©jsjƆrªhŒXASBeautifierr«†r¬htjé†r­htjé†r®hŒXinitr¯†r°j©jî†r±j©j†r²jsj»†r³jsX  r´†rµj©jÞ†r¶jsj»†r·jsX    r¸†r¹hŒXINIT_CONTAINERrº†r»j©jî†r¼jsjƆr½hŒXwaitingBeautifierStackr¾†r¿j©jù†rÀjsX  rÁ†rÂjXnewrÆrÄjsjƆrÅhŒXvectorrƆrÇhtj#†rÈhŒXASBeautifierrɆrÊhtjÿ†rËhtj	†rÌjsjƆrÍj©j†rÎj©jÔ†rÏjsj»†rÐjsX    rцrÒhŒXINIT_CONTAINERrÓ†rÔj©jî†rÕjsjƆrÖhŒXactiveBeautifierStackr׆rØj©jù†rÙjsX  rÚ†rÛjXnewr܆rÝjsjƆrÞhŒXvectorr߆ràhtj#†ráhŒXASBeautifierrâ†rãhtjÿ†rähtj	†råjsjƆræj©j†rçj©jÔ†rèjsj»†réjsj»†rêjsX    rë†rìhŒXINIT_CONTAINERrí†rîj©jî†rïjsjƆrðhŒX!waitingBeautifierStackLengthStackrñ†ròj©jù†rójsjƆrôjXnewrõ†röjsjƆr÷hŒXvectorrø†rùhtj#†rúj-Xintrû†rühtj	†rýjsjƆrþj©j†rÿj©jÔ†rjsj»†rjsX    r†rhŒXINIT_CONTAINERr†rj©jî†rjsjƆrhŒX activeBeautifierStackLengthStackr†r	j©jù†r
jsjƆrjXnewr†r
jsjƆrhŒXvectorr†rhtj#†rj-Xintr†rhtj	†rjsjƆrj©j†rj©jÔ†rjsj»†rjsj»†rjsX    r†rhŒXINIT_CONTAINERr†rj©jî†rjsjƆrhŒXheaderStackr †r!j©jù†r"jsX  r#†r$jXnewr%†r&jsjƆr'hŒXvectorr(†r)htj#†r*jXconstr+†r,jsjƆr-hŒXstringr.†r/htjÿ†r0htj	†r1jsjƆr2j©j†r3j©jÔ†r4jsj»†r5jsX    r6†r7hŒXINIT_CONTAINERr8†r9j©jî†r:jsjƆr;hŒX
tempStacksr<†r=j©jù†r>jsjƆr?jXnewr@†rAjsjƆrBhŒXvectorrC†rDhtj#†rEjsjƆrFhŒXvectorrG†rHhtj#†rIjXconstrJ†rKjsjƆrLhŒXstringrM†rNhtjÿ†rOhtj	†rPhtjÿ†rQjsjƆrRhtj	†rSjsjƆrTj©j†rUj©jÔ†rVjsj»†rWjsX    rX†rYhŒX
tempStacksrZ†r[htjô†r\htj	†r]hŒX	push_backr^†r_j©jî†r`jXnewra†rbjsjƆrchŒXvectorrd†rehtj#†rfjXconstrg†rhjsjƆrihŒXstringrj†rkhtjÿ†rlhtj	†rmj©j†rnj©jÔ†rojsj»†rpjsj»†rqjsX    rr†rshŒXINIT_CONTAINERrt†ruj©jî†rvjsjƆrwhŒXblockParenDepthStackrx†ryj©jù†rzjsjƆr{jXnewr|†r}jsjƆr~hŒXvectorr†r€htj#†rj-Xintr‚†rƒhtj	†r„jsjƆr…j©j†r†j©jÔ†r‡jsj»†rˆjsX    r‰†rŠhŒXINIT_CONTAINERr‹†rŒj©jî†rjsjƆrŽhŒXblockStatementStackr†rj©jù†r‘jsjƆr’jXnewr“†r”jsjƆr•hŒXvectorr–†r—htj#†r˜j-Xboolr™†ršhtj	†r›jsjƆrœj©j†rj©jÔ†ržjsj»†rŸjsX    r †r¡hŒXINIT_CONTAINERr¢†r£j©jî†r¤jsjƆr¥hŒXparenStatementStackr¦†r§j©jù†r¨jsjƆr©jXnewrª†r«jsjƆr¬hŒXvectorr­†r®htj#†r¯j-Xboolr°†r±htj	†r²jsjƆr³j©j†r´j©jÔ†rµjsj»†r¶jsj»†r·jsX    r¸†r¹hŒXINIT_CONTAINERrº†r»j©jî†r¼jsjƆr½hŒXbracketBlockStateStackr¾†r¿j©jù†rÀjsjƆrÁjXnewr†rÃjsjƆrÄhŒXvectorrņrÆhtj#†rÇj-XboolrȆrÉhtj	†rÊjsjƆrËj©j†rÌj©jÔ†rÍjsj»†rÎjsX    rφrÐhŒXbracketBlockStateStackrцrÒhtjô†rÓhtj	†rÔhŒX	push_backrÕ†rÖj©jî†r×jEXtruer؆rÙj©j†rÚj©jÔ†rÛjsj»†rÜjsj»†rÝjsX    rÞ†rßhŒXINIT_CONTAINERrà†ráj©jî†râjsjƆrãhŒXinStatementIndentStackrä†råj©jù†ræjsjƆrçjXnewrè†réjsjƆrêhŒXvectorrë†rìhtj#†ríj-Xintrî†rïhtj	†rðjsjƆrñj©j†ròj©jÔ†rójsj»†rôjsX    rõ†röhŒXINIT_CONTAINERr÷†røj©jî†rùjsjƆrúhŒXinStatementIndentStackSizeStackrû†rüj©jù†rýjsjƆrþjXnewrÿ†rjsjƆrhŒXvectorr†rhtj#†rj-Xintr†rhtj	†rjsjƆrj©j†r	j©jÔ†r
jsj»†rjsX    r†r
hŒXinStatementIndentStackSizeStackr†rhtjô†rhtj	†rhŒX	push_backr†rj©jî†rjŸX0r†rj©j†rj©jÔ†rjsj»†rjsX    r†rhŒXINIT_CONTAINERr†rj©jî†rjsjƆrhŒXparenIndentStackr †r!j©jù†r"jsjƆr#jXnewr$†r%jsjƆr&hŒXvectorr'†r(htj#†r)j-Xintr*†r+htj	†r,jsjƆr-j©j†r.j©jÔ†r/jsj»†r0jsj»†r1jsX    r2†r3hŒXimmediatelyPreviousAssignmentOpr4†r5jsjƆr6htj†r7jsjƆr8jEXNULLr9†r:j©jÔ†r;jsj»†r<jsX    r=†r>hŒXpreviousLastLineHeaderr?†r@jsjƆrAhtj†rBjsjƆrCjEXNULLrD†rEj©jÔ†rFjsj»†rGjsj»†rHjsX    rI†rJhŒX	isInQuoterK†rLjsjƆrMhtj†rNjsjƆrOjEXfalserP†rQj©jÔ†rRjsj»†rSjsX    rT†rUhŒXisInCommentrV†rWjsjƆrXhtj†rYjsjƆrZjEXfalser[†r\j©jÔ†r]jsj»†r^jsX    r_†r`hŒX
isInStatementra†rbjsjƆrchtj†rdjsjƆrejEXfalserf†rgj©jÔ†rhjsj»†rijsX    rj†rkhŒXisInCaserl†rmjsjƆrnhtj†rojsjƆrpjEXfalserq†rrj©jÔ†rsjsj»†rtjsX    ru†rvhŒXisInQuestionrw†rxjsjƆryhtj†rzjsjƆr{jEXfalser|†r}j©jÔ†r~jsj»†rjsX    r€†rhŒXisInClassHeaderr‚†rƒjsjƆr„htj†r…jsjƆr†jEXfalser‡†rˆj©jÔ†r‰jsj»†rŠjsX    r‹†rŒhŒXisInClassHeaderTabr†rŽjsjƆrhtj†rjsjƆr‘jEXfalser’†r“j©jÔ†r”jsj»†r•jsX    r–†r—hŒX
isInHeaderr˜†r™jsjƆršhtj†r›jsjƆrœjEXfalser†ržj©jÔ†rŸjsj»†r jsX    r¡†r¢hŒXisInOperatorr£†r¤jsjƆr¥htj†r¦jsjƆr§jEXfalser¨†r©j©jÔ†rªjsj»†r«jsX    r¬†r­hŒXisInTemplater®†r¯jsjƆr°htj†r±jsjƆr²jEXfalser³†r´j©jÔ†rµjsj»†r¶jsX    r·†r¸hŒX	isInConstr¹†rºjsjƆr»htj†r¼jsjƆr½jEXfalser¾†r¿j©jÔ†rÀjsj»†rÁjsX    r†rÃhŒXisInConditionalrĆrÅjsjƆrÆhtj†rÇjsjƆrÈjEXfalserɆrÊj©jÔ†rËjsj»†rÌjsX    r͆rÎhŒX
templateDepthrφrÐjsjƆrÑhtj†rÒjsjƆrÓjŸj†rÔj©jÔ†rÕjsj»†rÖjsX    r׆rØhŒX
parenDepthrÙ†rÚhtj†rÛjŸj†rÜj©jÔ†rÝjsj»†rÞjsX    r߆ràhŒX
blockTabCountrá†râjsjƆrãhtj†räjsjƆråjŸj†ræj©jÔ†rçjsj»†rèjsX    ré†rêhŒXleadingWhiteSpacesrë†rìjsjƆríhtj†rîjsjƆrïjŸj†rðj©jÔ†rñjsj»†ròjsX    ró†rôhŒXprevNonSpaceChrõ†röjsjƆr÷htj†røjsjƆrùjÖX'rú†rûjÖjÞ†rüjÖjú†rýj©jÔ†rþjsj»†rÿjsX    r†rhŒXcurrentNonSpaceChr†rjsjƆrhtj†rjsjƆrjÖjú†rjÖjÞ†rjÖjú†r	j©jÔ†r
jsj»†rjsX    r†r
hŒXprevNonLegalChr†rjsjƆrhtj†rjsjƆrjÖjú†rjÖjÞ†rjÖjú†rj©jÔ†rjsj»†rjsX    r†rhŒXcurrentNonLegalChr†rjsjƆrhtj†rjsjƆrjÖjú†rjÖjÞ†r jÖjú†r!j©jÔ†r"jsj»†r#jsX    r$†r%hŒXprevFinalLineSpaceTabCountr&†r'jsjƆr(htj†r)jsjƆr*jŸj†r+j©jÔ†r,jsj»†r-jsX    r.†r/hŒXprevFinalLineTabCountr0†r1jsjƆr2htj†r3jsjƆr4jŸj†r5j©jÔ†r6jsj»†r7jsX    r8†r9hŒXprobationHeaderr:†r;jsjƆr<htj†r=jsjƆr>jEXNULLr?†r@j©jÔ†rAjsj»†rBjsX    rC†rDhŒXbackslashEndsPrevLinerE†rFjsjƆrGhtj†rHjsjƆrIjEXfalserJ†rKj©jÔ†rLjsj»†rMjsX    rN†rOhŒX
isInDefinerP†rQjsjƆrRhtj†rSjsjƆrTjEXfalserU†rVj©jÔ†rWjsj»†rXjsX    rY†rZhŒXisInDefineDefinitionr[†r\jsjƆr]htj†r^jsjƆr_jEXfalser`†raj©jÔ†rbjsj»†rcjsX    rd†rehŒXdefineTabCountrf†rgjsjƆrhhtj†rijsjƆrjjŸj†rkj©jÔ†rljsj»†rmjsX  rn†roj©j†rpjsj»†rqjsj»†rrjsX  rs†rthX5/**
   * set indentation style to ANSI C/C++.  
   */ru†rvjsj»†rwjsX  rx†ryj-Xvoidrz†r{jsjƆr|hŒXASBeautifierr}†r~htjé†rhtjé†r€hŒX	setCStyler†r‚j©jî†rƒj©j†r„jsj»†r…jsX  r††r‡j©jÞ†rˆjsj»†r‰jsX    rІr‹hŒXisCStylerŒ†rjsjƆrŽhtj†rjsjƆrjEXtruer‘†r’j©jÔ†r“jsj»†r”jsX  r•†r–j©j†r—jsj»†r˜jsj»†r™jsX  rš†r›hX5/**
   * set indentation style to Java / K&R.  
   */rœ†rjsj»†ržjsX  rŸ†r j-Xvoidr¡†r¢jsjƆr£hŒXASBeautifierr¤†r¥htjé†r¦htjé†r§hŒXsetJavaStyler¨†r©j©jî†rªj©j†r«jsj»†r¬jsX  r­†r®j©jÞ†r¯jsj»†r°jsX    r±†r²hŒXisCStyler³†r´jsjƆrµhtj†r¶jsjƆr·jEXfalser¸†r¹j©jÔ†rºjsj»†r»jsX  r¼†r½j©j†r¾jsj»†r¿jsj»†rÀjsX  rÁ†rÂhX3/**
   * indent using one tab per indentation
   */rÆrÄjsj»†rÅjsX  rƆrÇj-XvoidrȆrÉjsjƆrÊhŒXASBeautifierrˆrÌhtjé†rÍhtjé†rÎhŒXsetTabIndentationrφrÐj©jî†rÑj-XintrÒ†rÓjsjƆrÔhŒXlengthrÕ†rÖj©jù†r×jsjƆrØj-XboolrÙ†rÚjsjƆrÛhŒX	forceTabsr܆rÝj©j†rÞjsj»†rßjsX  rà†ráj©jÞ†râjsj»†rãjsX    rä†råhŒXindentStringræ†rçjsjƆrèhtj†réjsjƆrêjÁj'†rëjúX\trì†ríjÁj'†rîj©jÔ†rïjsj»†rðjsX    rñ†ròhŒXindentLengthró†rôjsjƆrõhtj†röjsjƆr÷hŒXlengthrø†rùj©jÔ†rújsj»†rûjsX    rü†rýhŒXshouldForceTabIndentationrþ†rÿjsjƆrhtj†rjsjƆrhŒX	forceTabsr†rj©jÔ†rjsj»†rjsj»†rjsX    r†r	jXifr
†rjsjƆrj©jî†r
htj:†rhŒXisMinimalConditinalIndentSetr†rj©j†rjsj»†rjsX      r†rhŒXminConditionalIndentr†rjsjƆrhtj†rjsjƆrhŒXindentLengthr†rjsjƆrhtjÿ†rjsjƆrjŸX2r†r j©jÔ†r!jsj»†r"jsX  r#†r$j©j†r%jsj»†r&jsj»†r'jsX  r(†r)hX~/**
   
   * indent using a number of spaces per indentation.
   *
   * @param   length     number of spaces per indent.
   */r*†r+jsj»†r,jsX  r-†r.j-Xvoidr/†r0jsjƆr1hŒXASBeautifierr2†r3htjé†r4htjé†r5hŒXsetSpaceIndentationr6†r7j©jî†r8j-Xintr9†r:jsjƆr;hŒXlengthr<†r=j©j†r>jsj»†r?jsX  r@†rAj©jÞ†rBjsj»†rCjsX    rD†rEhŒXindentStringrF†rGhtj†rHhŒXstringrI†rJj©jî†rKhŒXlengthrL†rMj©jù†rNjsjƆrOjÖjú†rPjÖjƆrQjÖjú†rRj©j†rSj©jÔ†rTjsj»†rUjsX    rV†rWhŒXindentLengthrX†rYjsjƆrZhtj†r[jsjƆr\hŒXlengthr]†r^j©jÔ†r_jsj»†r`jsj»†rajsX    rb†rcjXifrd†rejsjƆrfj©jî†rghtj:†rhhŒXisMinimalConditinalIndentSetri†rjj©j†rkjsj»†rljsX      rm†rnhŒXminConditionalIndentro†rpjsjƆrqhtj†rrjsjƆrshŒXindentLengthrt†rujsjƆrvhtjÿ†rwjsjƆrxjŸj†ryj©jÔ†rzjsj»†r{jsX  r|†r}j©j†r~jsj»†rjsj»†r€jsX  r†r‚hXŽ/**
   * set the maximum indentation between two lines in a multi-line statement.
   *
   * @param   max     maximum indentation length.
   */rƒ†r„jsj»†r…jsX  r††r‡j-Xvoidrˆ†r‰jsjƆrŠhŒXASBeautifierr‹†rŒhtjé†rhtjé†rŽhŒXsetMaxInStatementIndentLengthr†rj©jî†r‘j-Xintr’†r“jsjƆr”hŒXmaxr•†r–j©j†r—jsj»†r˜jsX  r™†ršj©jÞ†r›jsj»†rœjsX    r†ržhŒXmaxInStatementIndentrŸ†r jsjƆr¡htj†r¢jsjƆr£hŒXmaxr¤†r¥j©jÔ†r¦jsj»†r§jsX  r¨†r©j©j†rªjsj»†r«jsj»†r¬jsX  r­†r®hXŽ/**
   * set the minimum indentation between two lines in a multi-line condition.
   *
   * @param   min     minimal indentation length.
   */r¯†r°jsj»†r±jsX  r²†r³j-Xvoidr´†rµjsjƆr¶hŒXASBeautifierr·†r¸htjé†r¹htjé†rºhŒXsetMinConditionalIndentLengthr»†r¼j©jî†r½j-Xintr¾†r¿jsjƆrÀhŒXminrÁ†rÂj©j†rÃjsj»†rÄjsX  rņrÆj©jÞ†rÇjsj»†rÈjsX    rɆrÊhŒXminConditionalIndentrˆrÌjsjƆrÍhtj†rÎjsjƆrÏhŒXminrІrÑj©jÔ†rÒjsj»†rÓjsX    rÔ†rÕhŒXisMinimalConditinalIndentSetrÖ†r×jsjƆrØhtj†rÙjsjƆrÚjEXtruerÛ†rÜj©jÔ†rÝjsj»†rÞjsX  r߆ràj©j†rájsj»†râjsj»†rãjsX  rä†råhXµ/**
   * set the state of the bracket indentation option. If true, brackets will 
   * be indented one additional indent.
   *
   * @param   state             state of option.
   */ræ†rçjsj»†rèjsX  ré†rêj-Xvoidrë†rìjsjƆríhŒXASBeautifierrî†rïhtjé†rðhtjé†rñhŒXsetBracketIndentrò†rój©jî†rôj-Xboolrõ†röjsjƆr÷hŒXstaterø†rùj©j†rújsj»†rûjsX  rü†rýj©jÞ†rþjsj»†rÿjsX    r†rhŒX
bracketIndentr†rjsjƆrhtj†rjsjƆrhŒXstater†rj©jÔ†r	jsj»†r
jsX  r†rj©j†r
jsj»†rjsj»†rjsX  r†rhXÙ/**
   * set the state of the block indentation option. If true, entire blocks 
   * will be indented one additional indent, similar to the GNU indent style.
   *
   * @param   state             state of option.
   */r†rjsj»†rjsX  r†rj-Xvoidr†rjsjƆrhŒXASBeautifierr†rhtjé†rhtjé†rhŒXsetBlockIndentr†rj©jî†r j-Xboolr!†r"jsjƆr#hŒXstater$†r%j©j†r&jsj»†r'jsX  r(†r)j©jÞ†r*jsj»†r+jsX    r,†r-jXifr.†r/jsjƆr0j©jî†r1hŒXstater2†r3e(j©j†r4jsj»†r5jsX      r6†r7hŒXsetBracketIndentr8†r9j©jî†r:jEXfalser;†r<j©j†r=j©jÔ†r>jsjƆr?h.X7// so that we don't have both bracket and block indent
r@†rAjsX    rB†rChŒXblockIndentrD†rEjsjƆrFhtj†rGjsjƆrHhŒXstaterI†rJj©jÔ†rKjsj»†rLjsX  rM†rNj©j†rOjsj»†rPjsj»†rQjsX  rR†rShX¿/**
   * set the state of the class indentation option. If true, C++ class
   * definitions will be indented one additional indent.
   *
   * @param   state             state of option.
   */rT†rUjsj»†rVjsX  rW†rXj-XvoidrY†rZjsjƆr[hŒXASBeautifierr\†r]htjé†r^htjé†r_hŒXsetClassIndentr`†raj©jî†rbj-Xboolrc†rdjsjƆrehŒXstaterf†rgj©j†rhjsj»†rijsX  rj†rkj©jÞ†rljsj»†rmjsX    rn†rohŒXclassIndentrp†rqjsjƆrrhtj†rsjsjƆrthŒXstateru†rvj©jÔ†rwjsj»†rxjsX  ry†rzj©j†r{jsj»†r|jsj»†r}jsX  r~†rhXÉ/**
   * set the state of the switch indentation option. If true, blocks of 'switch' 
   * statements will be indented one additional indent.
   *
   * @param   state             state of option.
   */r€†rjsj»†r‚jsX  rƒ†r„j-Xvoidr…†r†jsjƆr‡hŒXASBeautifierrˆ†r‰htjé†rŠhtjé†r‹hŒXsetSwitchIndentrŒ†rj©jî†rŽj-Xboolr†rjsjƆr‘hŒXstater’†r“j©j†r”jsj»†r•jsX  r–†r—j©jÞ†r˜jsj»†r™jsX    rš†r›hŒXswitchIndentrœ†rjsjƆržhtj†rŸjsjƆr hŒXstater¡†r¢j©jÔ†r£jsj»†r¤jsX  r¥†r¦j©j†r§jsj»†r¨jsj»†r©jsX  rª†r«hXÄ/**
   * set the state of the case indentation option. If true, lines of 'case' 
   * statements will be indented one additional indent.
   *
   * @param   state             state of option.
   */r¬†r­jsj»†r®jsX  r¯†r°j-Xvoidr±†r²jsjƆr³hŒXASBeautifierr´†rµhtjé†r¶htjé†r·hŒX
setCaseIndentr¸†r¹j©jî†rºj-Xboolr»†r¼jsjƆr½hŒXstater¾†r¿j©j†rÀjsj»†rÁjsX  r†rÃj©jÞ†rÄjsj»†rÅjsX    rƆrÇhŒX
caseIndentrȆrÉjsjƆrÊhtj†rËjsjƆrÌhŒXstater͆rÎj©jÔ†rÏjsj»†rÐjsX  rцrÒj©j†rÓjsj»†rÔjsX  rÕ†rÖhXþ/**
   * set the state of the namespace indentation option. 
   * If true, blocks of 'namespace' statements will be indented one 
   * additional indent. Otherwise, NO indentation will be added.
   *
   * @param   state             state of option.
   */r׆rØjsj»†rÙjsX  rÚ†rÛj-Xvoidr܆rÝjsjƆrÞhŒXASBeautifierr߆ràhtjé†ráhtjé†râhŒXsetNamespaceIndentrã†räj©jî†råj-Xboolræ†rçjsjƆrèhŒXstateré†rêj©j†rëjsj»†rìjsX  rí†rîj©jÞ†rïjsj»†rðjsX    rñ†ròhŒXnamespaceIndentró†rôjsjƆrõhtj†röjsjƆr÷hŒXstaterø†rùj©jÔ†rújsj»†rûjsX  rü†rýj©j†rþjsj»†rÿjsj»†rjsX  r†rhX!/**
   * set the state of the label indentation option. 
   * If true, labels will be indented one indent LESS than the
   * current indentation level.
   * If false, labels will be flushed to the left with NO
   * indent at all.
   *
   * @param   state             state of option.
   */r†rjsj»†rjsX  r†rj-Xvoidr†r	jsjƆr
hŒXASBeautifierr†rhtjé†r
htjé†rhŒXsetLabelIndentr†rj©jî†rj-Xboolr†rjsjƆrhŒXstater†rj©j†rjsj»†rjsX  r†rj©jÞ†rjsj»†rjsX    r†rhŒXlabelIndentr†r jsjƆr!htj†r"jsjƆr#hŒXstater$†r%j©jÔ†r&jsj»†r'jsX  r(†r)j©j†r*jsj»†r+jsj»†r,jsX  r-†r.hX¸/**
   * set the state of the preprocessor indentation option. 
   * If true, multiline #define statements will be indented.
   *
   * @param   state             state of option.
   */r/†r0jsj»†r1jsX  r2†r3j-Xvoidr4†r5jsjƆr6hŒXASBeautifierr7†r8htjé†r9htjé†r:hŒXsetPreprocessorIndentr;†r<j©jî†r=j-Xboolr>†r?jsjƆr@hŒXstaterA†rBj©j†rCjsj»†rDjsX  rE†rFj©jÞ†rGjsj»†rHjsX    rI†rJhŒXpreprocessorIndentrK†rLjsjƆrMhtj†rNjsjƆrOhŒXstaterP†rQj©jÔ†rRjsj»†rSjsX  rT†rUj©j†rVjsj»†rWjsj»†rXjsX  rY†rZhXü/**
   * set the state of the empty line fill option. 
   * If true, empty lines will be filled with the whitespace.
   * of their previous lines.
   * If false, these lines will remain empty.
   *
   * @param   state             state of option.
   */r[†r\jsj»†r]jsX  r^†r_j-Xvoidr`†rajsjƆrbhŒXASBeautifierrc†rdhtjé†rehtjé†rfhŒXsetEmptyLineFillrg†rhj©jî†rij-Xboolrj†rkjsjƆrlhŒXstaterm†rnj©j†rojsj»†rpjsX  rq†rrj©jÞ†rsjsj»†rtjsX    ru†rvhŒX
emptyLineFillrw†rxjsjƆryhtj†rzjsjƆr{hŒXstater|†r}j©jÔ†r~jsj»†rjsX  r€†rj©j†r‚jsj»†rƒjsj»†r„jsX  r…†r†hXŒ/**
   * check if there are any indented lines ready to be read by nextLine()
   *
   * @return    are there any indented lines ready?
   */r‡†rˆjsj»†r‰jsX  rІr‹j-XboolrŒ†rjsjƆrŽhŒXASBeautifierr†rhtjé†r‘htjé†r’hŒXhasMoreLinesr“†r”j©jî†r•j©j†r–jsjƆr—jXconstr˜†r™jsj»†ršjsX    r›†rœj©jÞ†rjsj»†ržjsX      rŸ†r jXreturnr¡†r¢jsjƆr£hŒXsourceIteratorr¤†r¥htjô†r¦htj	†r§hŒXhasMoreLinesr¨†r©j©jî†rªj©j†r«j©jÔ†r¬jsj»†r­jsX    r®†r¯j©j†r°jsj»†r±jsj»†r²jsX  r³†r´hXN/**
   * get the next indented line.
   *
   * @return    indented line.
   */rµ†r¶jsj»†r·jsX  r¸†r¹hŒXstringrº†r»jsjƆr¼hŒXASBeautifierr½†r¾htjé†r¿htjé†rÀhŒXnextLinerÁ†rÂj©jî†rÃj©j†rÄjsj»†rÅjsX  rƆrÇj©jÞ†rÈjsj»†rÉjsX    rʆrËjXreturnr̆rÍjsjƆrÎhŒXbeautifyrφrÐj©jî†rÑhŒXsourceIteratorrÒ†rÓhtjô†rÔhtj	†rÕhŒXnextLinerÖ†r×j©jî†rØj©j†rÙj©j†rÚj©jÔ†rÛjsj»†rÜjsX  r݆rÞj©j†rßjsj»†ràjsj»†rájsX  râ†rãhX
/**
   * beautify a line of source code.
   * every line of source code in a source code file should be sent
   * one after the other to the beautify method.
   *
   * @return      the indented line.
   * @param originalLine       the original unindented line.
   */rä†råjsj»†ræjsX  rç†rèhŒXstringré†rêjsjƆrëhŒXASBeautifierrì†ríhtjé†rîhtjé†rïhŒXbeautifyrð†rñj©jî†ròjXconstró†rôjsjƆrõhŒXstringrö†r÷jsjƆrøhtjõ†rùhŒXoriginalLinerú†rûj©j†rüjsj»†rýjsX  rþ†rÿj©jÞ†rjsj»†rjsX    r†rhŒXstringr†rjsjƆrhŒXliner†rj©jÔ†r	jsj»†r
jsX    r†rj-Xboolr
†rjsjƆrhŒXisInLineCommentr†rjsjƆrhtj†rjsjƆrjEXfalser†rj©jÔ†rjsj»†rjsX    r†rj-Xboolr†rjsjƆrhŒXlineStartsInCommentr†rjsjƆr htj†r!jsjƆr"jEXfalser#†r$j©jÔ†r%jsj»†r&jsX    r'†r(j-Xboolr)†r*jsjƆr+hŒX	isInClassr,†r-jsjƆr.htj†r/jsjƆr0jEXfalser1†r2j©jÔ†r3jsj»†r4jsX    r5†r6j-Xboolr7†r8jsjƆr9hŒX
isInSwitchr:†r;jsjƆr<htj†r=jsjƆr>jEXfalser?†r@j©jÔ†rAjsj»†rBjsX    rC†rDj-XboolrE†rFjsjƆrGhŒXisImmediatelyAfterConstrH†rIjsjƆrJhtj†rKjsjƆrLjEXfalserM†rNj©jÔ†rOjsj»†rPjsX    rQ†rRj-XboolrS†rTjsjƆrUhŒX
isSpecialCharrV†rWjsjƆrXhtj†rYjsjƆrZjEXfalser[†r\j©jÔ†r]jsj»†r^jsj»†r_jsX    r`†raj-Xcharrb†rcjsjƆrdhŒXchre†rfjsjƆrghtj†rhjsjƆrijÖjú†rjjÖjƆrkjÖjú†rlj©jÔ†rmjsj»†rnjsX    ro†rpj-Xcharrq†rrjsjƆrshŒXprevChrt†ruj©jÔ†rvjsj»†rwjsX    rx†ryhŒXstringrz†r{jsjƆr|hŒX	outBufferr}†r~j©jÔ†rjsjƆr€h.X*// the newly idented line is bufferd here
r†r‚jsX    rƒ†r„j-Xintr…†r†jsjƆr‡hŒXtabCountrˆ†r‰jsjƆrŠhtj†r‹jsjƆrŒjŸj†rj©jÔ†rŽjsj»†rjsX    r†r‘jXconstr’†r“jsjƆr”hŒXstringr•†r–jsjƆr—htjÿ†r˜hŒXlastLineHeaderr™†ršjsjƆr›htj†rœjsjƆrjEXNULLrž†rŸj©jÔ†r jsj»†r¡jsX    r¢†r£j-Xboolr¤†r¥jsjƆr¦hŒXclosingBracketReachedr§†r¨jsjƆr©htj†rªjsjƆr«jEXfalser¬†r­j©jÔ†r®jsj»†r¯jsX    r°†r±j-Xintr²†r³jsjƆr´hŒX
spaceTabCountrµ†r¶jsjƆr·htj†r¸jsjƆr¹jŸj†rºj©jÔ†r»jsj»†r¼jsX    r½†r¾j-Xcharr¿†rÀjsjƆrÁhŒXtempChr†rÃj©jÔ†rÄjsj»†rÅjsX    rƆrÇj-XunsignedrȆrÉjsjƆrÊj-XintrˆrÌjsjƆrÍhŒXheaderStackSizerΆrÏjsjƆrÐhtj†rÑjsjƆrÒhŒXheaderStackrÓ†rÔhtjô†rÕhtj	†rÖhŒXsizer׆rØj©jî†rÙj©j†rÚj©jÔ†rÛjsj»†rÜjsX    r݆rÞh.X*//bool isLineInStatement = isInStatement;
r߆ràjsX    rá†râj-Xboolrã†räjsjƆråhŒXshouldIndentBrackettedLineræ†rçjsjƆrèhtj†réjsjƆrêjEXtruerë†rìj©jÔ†ríjsj»†rîjsX    rï†rðj-Xintrñ†ròjsjƆróhŒXlineOpeningBlocksNumrô†rõjsjƆröhtj†r÷jsjƆrøjŸj†rùj©jÔ†rújsj»†rûjsX    rü†rýj-Xintrþ†rÿjsjƆrhŒXlineClosingBlocksNumr†rjsjƆrhtj†rjsjƆrjŸj†rj©jÔ†rjsj»†rjsX    r	†r
j-Xboolr†rjsjƆr
hŒXpreviousLineProbationr†rjsjƆrhtj†rjsjƆrj©jî†rhŒXprobationHeaderr†rjsjƆrhtj:†rhtj†rjsjƆrjEXNULLr†rj©j†rj©jÔ†rjsj»†rjsX    r†r j-Xunsignedr!†r"jsjƆr#j-Xintr$†r%jsjƆr&hŒjÀ†r'j©jÔ†r(jsj»†r)jsj»†r*jsX    r+†r,hŒX
currentHeaderr-†r.jsjƆr/htj†r0jsjƆr1jEXNULLr2†r3j©jÔ†r4jsj»†r5jsj»†r6jsX    r7†r8hŒXlineStartsInCommentr9†r:jsjƆr;htj†r<jsjƆr=hŒXisInCommentr>†r?j©jÔ†r@jsj»†rAjsj»†rBjsX    rC†rDh.X3// handle and remove white spaces around the line:
rE†rFjsX    rG†rHh.XF// If not in comment, first find out size of white space before line,
rI†rJjsX    rK†rLh.X>// so that possible comments starting in the line continue in
rM†rNjsX    rO†rPh.X,// relation to the preliminary white-space.
rQ†rRjsX    rS†rTjXifrU†rVjsjƆrWj©jî†rXhtj:†rYhŒXisInCommentrZ†r[j©j†r\jsj»†r]jsX      r^†r_j©jÞ†r`jsj»†rajsX        rb†rchŒXleadingWhiteSpacesrd†rejsjƆrfhtj†rgjsjƆrhjŸj†rij©jÔ†rjjsj»†rkjsX        rl†rmjXwhilern†rojsjƆrpj©jî†rqhŒXleadingWhiteSpacesrr†rshtj#†rthŒXoriginalLineru†rvj©j>†rwhŒXlengthrx†ryj©jî†rzj©j†r{jsjƆr|htjõ†r}htjõ†r~jsjƆrhŒXoriginalLiner€†rj©j+†r‚hŒXleadingWhiteSpacesrƒ†r„j©X]r…†r†jsjƆr‡htj#†rˆhtj†r‰jsjƆrŠj—X0x20r‹†rŒj©j†rjsj»†rŽjsX
          r†rhŒXleadingWhiteSpacesr‘†r’htjΆr“htjΆr”j©jÔ†r•jsj»†r–jsj»†r—jsX        r˜†r™hŒXlinerš†r›jsjƆrœhtj†rjsjƆržhŒXtrimrŸ†r j©jî†r¡hŒXoriginalLiner¢†r£j©j†r¤j©jÔ†r¥jsj»†r¦jsX      r§†r¨j©j†r©jsj»†rªjsX    r«†r¬jXelser­†r®jsj»†r¯jsX      r°†r±j©jÞ†r²jsj»†r³jsX        r´†rµj-Xunsignedr¶†r·jsjƆr¸j-Xintr¹†rºjsjƆr»hŒXtrimSizer¼†r½j©jÔ†r¾jsj»†r¿jsX        rÀ†rÁjXforr†rÃjsjƆrÄj©jî†rÅhŒXtrimSizerƆrÇhtj†rÈjŸj†rÉj©jÔ†rÊjsj»†rËjsX
             r̆rÍhŒXtrimSizerΆrÏjsjƆrÐhtj#†rÑjsjƆrÒhŒXoriginalLinerÓ†rÔj©j>†rÕhŒXlengthrÖ†r×j©jî†rØj©j†rÙjsjƆrÚhtjõ†rÛhtjõ†rÜjsjƆrÝhŒXtrimSizerÞ†rßhtj#†ràhŒXleadingWhiteSpacesrá†râjsjƆrãhtjõ†rähtjõ†råjsjƆræhŒXoriginalLinerç†rèj©j+†réhŒXtrimSizerê†rëj©j…†rìjsjƆríhtj#†rîhtj†rïjsjƆrðj—X0x20rñ†ròjsjƆrój©jÔ†rôjsj»†rõjsX
             rö†r÷hŒXtrimSizerø†rùhtjΆrúhtjΆrûj©j†rüjsj»†rýjsX
          rþ†rÿj©jÔ†rjsj»†rjsX        r†rhŒXliner†rjsjƆrhtj†rjsjƆrhŒXoriginalLiner	†r
j©j>†rhŒXsubstrr†r
j©jî†rhŒXtrimSizer†rj©j†rj©jÔ†rjsj»†rjsX      r†rj©j†rjsj»†rjsj»†rjsj»†rjsX    r†rjXifr†rjsjƆrj©jî†rhŒXliner †r!j©j>†r"hŒXlengthr#†r$j©jî†r%j©j†r&jsjƆr'htj†r(htj†r)jsjƆr*jŸj†r+j©j†r,jsj»†r-jsX      r.†r/j©jÞ†r0jsj»†r1jsX        r2†r3jXifr4†r5jsjƆr6j©jî†r7hŒX
emptyLineFillr8†r9j©j†r:jsj»†r;jsX
          r<†r=jXreturnr>†r?jsjƆr@hŒX	preLineWSrA†rBj©jî†rChŒXprevFinalLineSpaceTabCountrD†rEj©jù†rFjsjƆrGhŒXprevFinalLineTabCountrH†rIj©j†rJj©jÔ†rKjsj»†rLjsX        rM†rNjXelserO†rPjsj»†rQjsX
          rR†rSjXreturnrT†rUjsjƆrVhŒXlinerW†rXj©jÔ†rYjsj»†rZjsX      r[†r\j©j†r]jsj»†r^jsj»†r_jsX    r`†rah.X // handle preprocessor commands
rb†rcjsj»†rdjsX    re†rfjXifrg†rhjsjƆrij©jî†rjhŒXisCStylerk†rljsjƆrmhtjõ†rnhtjõ†rojsjƆrphtj:†rqhŒXisInCommentrr†rsjsjƆrthtjõ†ruhtjõ†rvjsjƆrwj©jî†rxhŒXlinery†rzj©j+†r{jŸj†r|j©j…†r}jsjƆr~htj†rhtj†r€jsjƆrjÖjú†r‚jÖj†rƒjÖjú†r„jsjƆr…htX|r††r‡htj††rˆjsjƆr‰hŒXbackslashEndsPrevLinerІr‹j©j†rŒj©j†rjsj»†rŽjsX      r†rj©jÞ†r‘jsj»†r’jsX        r“†r”jXifr•†r–jsjƆr—j©jî†r˜hŒXliner™†ršj©j+†r›jŸj†rœj©j…†rjsjƆržhtj†rŸhtj†r jsjƆr¡jÖjú†r¢jÖj†r£jÖjú†r¤j©j†r¥jsj»†r¦jsX
          r§†r¨j©jÞ†r©jsj»†rªjsX            r«†r¬hŒXstringr­†r®jsjƆr¯hŒXpreprocr°†r±jsjƆr²htj†r³jsjƆr´hŒXtrimrµ†r¶j©jî†r·hŒXstringr¸†r¹j©jî†rºhŒXliner»†r¼j©j>†r½hŒXc_strr¾†r¿j©jî†rÀj©j†rÁjsjƆrÂhtjΆrÃjsjƆrÄjŸjĆrÅj©j†rÆj©j†rÇj©jÔ†rÈjsj»†rÉjsj»†rÊjsj»†rËjsX            r̆rÍh.XI// When finding a multi-lined #define statement, the original beautifier
rΆrÏjsX            rІrÑh.X)// 1. sets its isInDefineDefinition flag
rÒ†rÓjsX            rÔ†rÕh.XK// 2. clones a new beautifier that will be used for the actual indentation
rÖ†r×jsX            r؆rÙh.XP//    of the #define. This clone is put into the activeBeautifierStack in order
rÚ†rÛjsX            r܆rÝh.X///    to be called for the actual indentation.
rÞ†rßjsX            rà†ráh.XU// The original beautifier will have isInDefineDefinition = true, isInDefine = false
râ†rãjsX            rä†råh.XT// The cloned beautifier will have   isInDefineDefinition = true, isInDefine = true
ræ†rçjsX            rè†réjXifrê†rëjsjƆrìj©jî†ríhŒXpreprocessorIndentrî†rïjsjƆrðhtjõ†rñhtjõ†ròjsjƆróhŒXpreprocrô†rõj©j>†röhŒXCOMPAREr÷†røj©jî†rùjŸj†rúj©jù†rûjsjƆrüjŸX6rý†rþj©jù†rÿjsjƆrhŒXstringr†rj©jî†rjÁj'†rjÁXdefiner†rjÁj'†rj©j†rj©j†r	jsjƆr
htj†rhtj†rjsjƆr
jŸj†rjsjƆrhtjõ†rhtjõ†rjsX  r†rhŒXliner†rj©j+†rhŒXliner†rj©j>†rhŒXlengthr†rj©jî†rj©j†rjsjƆrhtjô†rjsjƆr jŸjĆr!j©j…†r"jsjƆr#htj†r$htj†r%jsjƆr&jÖjú†r'jÖX\\r(†r)jÖjú†r*j©j†r+jsj»†r,jsX              r-†r.j©jÞ†r/jsj»†r0jsX                r1†r2jXifr3†r4jsjƆr5j©jî†r6htj:†r7hŒXisInDefineDefinitionr8†r9j©j†r:jsj»†r;jsX                  r<†r=j©jÞ†r>jsj»†r?jsX                    r@†rAhŒXASBeautifierrB†rCjsjƆrDhtjÿ†rEhŒXdefineBeautifierrF†rGj©jÔ†rHjsj»†rIjsj»†rJjsX                    rK†rLh.X#// this is the original beautifier
rM†rNjsX                    rO†rPhŒXisInDefineDefinitionrQ†rRjsjƆrShtj†rTjsjƆrUjEXtruerV†rWj©jÔ†rXjsj»†rYjsj»†rZjsX                    r[†r\h.X/// push a new beautifier into the active stack
r]†r^jsX                    r_†r`h.XD// this breautifier will be used for the indentation of this define
ra†rbjsX                    rc†rdhŒXdefineBeautifierre†rfjsjƆrghtj†rhjsjƆrijXnewrj†rkjsjƆrlhŒXASBeautifierrm†rnj©jî†rohtjÿ†rpjXthisrq†rrj©j†rsj©jÔ†rtjsj»†rujsX                    rv†rwh.X//defineBeautifier->init();
rx†ryjsX                    rz†r{h.X1//defineBeautifier->isInDefineDefinition = true;
r|†r}jsX                    r~†rh.X"//defineBeautifier->beautify("");
r€†rjsX                    r‚†rƒhŒXactiveBeautifierStackr„†r…htjô†r†htj	†r‡hŒX	push_backrˆ†r‰j©jî†rŠhŒXdefineBeautifierr‹†rŒj©j†rj©jÔ†rŽjsj»†rjsX                  r†r‘j©j†r’jsj»†r“jsX                r”†r•jXelser–†r—jsj»†r˜jsX                  r™†rše(j©jÞ†r›jsj»†rœjsX                    r†ržh.XL// the is the cloned beautifier that is in charge of indenting the #define.
rŸ†r jsX                    r¡†r¢hŒX
isInDefiner£†r¤jsjƆr¥htj†r¦jsjƆr§jEXtruer¨†r©j©jÔ†rªjsj»†r«jsX                  r¬†r­j©j†r®jsj»†r¯jsX              r°†r±j©j†r²jsj»†r³jsX            r´†rµjXelser¶†r·jsjƆr¸jXifr¹†rºjsjƆr»j©jî†r¼hŒXpreprocr½†r¾j©j>†r¿hŒXCOMPARErÀ†rÁj©jî†rÂjŸj†rÃj©jù†rÄjsjƆrÅjŸj†rÆj©jù†rÇjsjƆrÈhŒXstringrɆrÊj©jî†rËjÁj'†rÌjÁXifr͆rÎjÁj'†rÏj©j†rÐj©j†rÑjsjƆrÒhtj†rÓhtj†rÔjsjƆrÕjŸj†rÖj©j†r×jsj»†rØjsX              rÙ†rÚj©jÞ†rÛjsj»†rÜjsX                r݆rÞh.X(// push a new beautifier into the stack
r߆ràjsX                rá†râhŒX!waitingBeautifierStackLengthStackrã†rähtjô†råhtj	†ræhŒX	push_backrç†rèj©jî†réhŒXwaitingBeautifierStackrê†rëhtjô†rìhtj	†ríhŒXsizerî†rïj©jî†rðj©j†rñj©j†ròj©jÔ†rójsj»†rôjsX                rõ†röhŒX activeBeautifierStackLengthStackr÷†røhtjô†rùhtj	†rúhŒX	push_backrû†rüj©jî†rýhŒXactiveBeautifierStackrþ†rÿhtjô†rhtj	†rhŒXsizer†rj©jî†rj©j†rj©j†rj©jÔ†rjsj»†rjsX                r	†r
hŒXwaitingBeautifierStackr†rhtjô†r
htj	†rhŒX	push_backr†rj©jî†rjXnewr†rjsjƆrhŒXASBeautifierr†rj©jî†rhtjÿ†rjXthisr†rj©j†rj©j†rj©jÔ†rjsj»†rjsX              r†r j©j†r!jsj»†r"jsX            r#†r$jXelser%†r&jsjƆr'jXifr(†r)jsjƆr*j©jî†r+hŒXpreprocr,†r-j©j>†r.hŒXCOMPAREr/†r0j©jî†r1jŸj†r2j©jù†r3jsjƆr4jŸjȆr5hX/*2*/r6†r7j©jù†r8jsjƆr9hŒXstringr:†r;j©jî†r<jÁj'†r=jÁXelser>†r?jÁj'†r@j©j†rAj©j†rBjsjƆrChtj†rDhtj†rEjsjƆrFjŸj†rGj©j†rHjsj»†rIjsX              rJ†rKj©jÞ†rLjsj»†rMjsX                rN†rOjXifrP†rQjsjƆrRj©jî†rShtj:†rThŒXwaitingBeautifierStackrU†rVhtjô†rWhtj	†rXhŒXemptyrY†rZj©jî†r[j©j†r\j©j†r]jsj»†r^jsX                  r_†r`j©jÞ†rajsj»†rbjsX                    rc†rdh.X4// MOVE current waiting beautifier to active stack.
re†rfjsX                    rg†rhhŒXactiveBeautifierStackri†rjhtjô†rkhtj	†rlhŒX	push_backrm†rnj©jî†rohŒXwaitingBeautifierStackrp†rqhtjô†rrhtj	†rshŒXbackrt†ruj©jî†rvj©j†rwj©j†rxj©jÔ†ryjsj»†rzjsX                    r{†r|hŒXwaitingBeautifierStackr}†r~htjô†rhtj	†r€hŒXpop_backr†r‚j©jî†rƒj©j†r„j©jÔ†r…jsj»†r†jsX                  r‡†rˆj©j†r‰jsj»†rŠjsX              r‹†rŒj©j†rjsj»†rŽjsX            r†rjXelser‘†r’jsjƆr“jXifr”†r•jsjƆr–j©jî†r—hŒXpreprocr˜†r™j©j>†ršhŒXCOMPAREr›†rœj©jî†rjŸj†ržj©jù†rŸjsjƆr jŸjȆr¡j©jù†r¢jsjƆr£hŒXstringr¤†r¥j©jî†r¦jÁj'†r§jÁXelifr¨†r©jÁj'†rªj©j†r«j©j†r¬jsjƆr­htj†r®htj†r¯jsjƆr°jŸj†r±j©j†r²jsj»†r³jsX              r´†rµj©jÞ†r¶jsj»†r·jsX                r¸†r¹jXifrº†r»jsjƆr¼j©jî†r½htj:†r¾hŒXwaitingBeautifierStackr¿†rÀhtjô†rÁhtj	†rÂhŒXemptyrÆrÄj©jî†rÅj©j†rÆj©j†rÇjsj»†rÈjsX                  rɆrÊj©jÞ†rËjsj»†rÌjsX                    r͆rÎh.X\// append a COPY current waiting beautifier to active stack, WITHOUT deleting the original.
rφrÐjsX                    rцrÒhŒXactiveBeautifierStackrÓ†rÔhtjô†rÕhtj	†rÖhŒX	push_backr׆rØj©jî†rÙjsjƆrÚjXnewrÛ†rÜjsjƆrÝhŒXASBeautifierrÞ†rßj©jî†ràjsjƆráhtjÿ†râj©jî†rãhŒXwaitingBeautifierStackrä†råhtjô†ræhtj	†rçhŒXbackrè†réj©jî†rêj©j†rëj©j†rìjsjƆríj©j†rîjsjƆrïj©j†rðj©jÔ†rñjsj»†ròjsX                  ró†rôj©j†rõjsj»†röjsX              r÷†røj©j†rùjsj»†rújsX            rû†rüjXelserý†rþjsjƆrÿjXifr †r jsjƆr j©jî†r hŒXpreprocr †r j©j>†r hŒXCOMPAREr †r j©jî†r	 jŸj†r
 j©jù†r jsjƆr jŸX5r
 †r j©jù†r jsjƆr hŒXstringr †r j©jî†r jÁj'†r jÁXendifr †r jÁj'†r j©j†r j©j†r jsjƆr htj†r htj†r jsjƆr jŸj†r j©j†r jsj»†r  jsX              r! †r" j©jÞ†r# jsj»†r$ jsX                r% †r& j-Xunsignedr' †r( jsjƆr) j-Xintr* †r+ jsjƆr, hŒXstackLengthr- †r. j©jÔ†r/ jsj»†r0 jsX                r1 †r2 hŒXASBeautifierr3 †r4 jsjƆr5 htjÿ†r6 hŒX
beautifierr7 †r8 j©jÔ†r9 jsj»†r: jsj»†r; jsX                r< †r= jXifr> †r? jsjƆr@ j©jî†rA htj:†rB hŒX!waitingBeautifierStackLengthStackrC †rD htjô†rE htj	†rF hŒXemptyrG †rH j©jî†rI j©j†rJ j©j†rK jsj»†rL jsX                  rM †rN j©jÞ†rO jsj»†rP jsX                    rQ †rR hŒXstackLengthrS †rT jsjƆrU htj†rV jsjƆrW hŒX!waitingBeautifierStackLengthStackrX †rY htjô†rZ htj	†r[ hŒXbackr\ †r] j©jî†r^ j©j†r_ j©jÔ†r` jsj»†ra jsX                    rb †rc hŒX!waitingBeautifierStackLengthStackrd †re htjô†rf htj	†rg hŒXpop_backrh †ri j©jî†rj j©j†rk j©jÔ†rl jsj»†rm jsX                    rn †ro jXwhilerp †rq jsjƆrr j©jî†rs hŒXwaitingBeautifierStackrt †ru htjô†rv htj	†rw hŒXsizerx †ry j©jî†rz j©j†r{ jsjƆr| htj	†r} jsjƆr~ hŒXstackLengthr †r€ j©j†r jsj»†r‚ jsX                      rƒ †r„ j©jÞ†r… jsj»†r† jsX                        r‡ †rˆ hŒX
beautifierr‰ †rŠ jsjƆr‹ htj†rŒ jsjƆr hŒXwaitingBeautifierStackrŽ †r htjô†r htj	†r‘ hŒXbackr’ †r“ j©jî†r” j©j†r• j©jÔ†r– jsj»†r— jsX                        r˜ †r™ hŒXwaitingBeautifierStackrš †r› htjô†rœ htj	†r hŒXpop_backrž †rŸ j©jî†r  j©j†r¡ j©jÔ†r¢ jsj»†r£ jsX                        r¤ †r¥ jXdeleter¦ †r§ jsjƆr¨ hŒX
beautifierr© †rª j©jÔ†r« jsj»†r¬ jsX                      r­ †r® j©j†r¯ jsj»†r° jsX                  r± †r² j©j†r³ jsj»†r´ jsj»†rµ jsX                r¶ †r· jXifr¸ †r¹ jsjƆrº j©jî†r» htj:†r¼ hŒX activeBeautifierStackLengthStackr½ †r¾ htjô†r¿ htj	†rÀ hŒXemptyrÁ †r j©jî†rà j©j†rÄ j©j†rÅ jsj»†rÆ jsX                  rÇ †rÈ j©jÞ†rÉ jsj»†rÊ jsX                    rË †rÌ hŒXstackLengthrÍ †rÎ jsjƆrÏ htj†rÐ jsjƆrÑ hŒX activeBeautifierStackLengthStackrÒ †rÓ htjô†rÔ htj	†rÕ hŒXbackrÖ †r× j©jî†rØ j©j†rÙ j©jÔ†rÚ jsj»†rÛ jsX                    rÜ †rÝ hŒX activeBeautifierStackLengthStackrÞ †rß htjô†rà htj	†rá hŒXpop_backr⠆rã j©jî†rä j©j†rå j©jÔ†ræ jsj»†rç jsX                    rè †ré jXwhilerê †rë jsjƆrì j©jî†rí hŒXactiveBeautifierStackrî †rï htjô†rð htj	†rñ hŒXsizerò †ró j©jî†rô j©j†rõ jsjƆrö htj	†r÷ jsjƆrø hŒXstackLengthrù †rú j©j†rû jsj»†rü jsX                      rý †rþ j©jÞ†rÿ jsj»†r!jsX                        r!†r!hŒX
beautifierr!†r!jsjƆr!htj†r!jsjƆr!hŒXactiveBeautifierStackr!†r	!htjô†r
!htj	†r!hŒXbackr!†r
!j©jî†r!j©j†r!j©jÔ†r!jsj»†r!jsX                        r!†r!hŒXactiveBeautifierStackr!†r!htjô†r!htj	†r!hŒXpop_backr!†r!j©jî†r!j©j†r!j©jÔ†r!jsj»†r!jsX                        r!†r!jXdeleter !†r!!jsjƆr"!hŒX
beautifierr#!†r$!j©jÔ†r%!jsj»†r&!jsX                      r'!†r(!j©j†r)!jsj»†r*!jsX                  r+!†r,!j©j†r-!jsj»†r.!jsj»†r/!jsj»†r0!jsX              r1!†r2!j©j†r3!jsj»†r4!jsX
          r5!†r6!j©j†r7!jsj»†r8!jsj»†r9!jsX        r:!†r;!h.X)// check if the last char is a backslash
r<!†r=!jsX        r>!†r?!jXifr@!†rA!j©jî†rB!hŒXlinerC!†rD!j©j>†rE!hŒXlengthrF!†rG!j©jî†rH!j©j†rI!jsjƆrJ!htj	†rK!jsjƆrL!jŸj†rM!j©j†rN!jsj»†rO!jsX
          rP!†rQ!hŒXbackslashEndsPrevLinerR!†rS!jsjƆrT!htj†rU!jsjƆrV!j©jî†rW!hŒXlinerX!†rY!j©j+†rZ!hŒXliner[!†r\!j©j>†r]!hŒXlengthr^!†r_!j©jî†r`!j©j†ra!jsjƆrb!htjô†rc!jsjƆrd!jŸjĆre!j©j…†rf!jsjƆrg!htj†rh!htj†ri!jsjƆrj!jÖjú†rk!jÖX\\rl!†rm!jÖjú†rn!j©j†ro!j©jÔ†rp!jsj»†rq!jsX        rr!†rs!jXelsert!†ru!jsj»†rv!jsX
          rw!†rx!hŒXbackslashEndsPrevLinery!†rz!jsjƆr{!htj†r|!jsjƆr}!jEXfalser~!†r!j©jÔ†r€!jsj»†r!jsj»†r‚!jsX        rƒ!†r„!h.X0// check if this line ends a multi-line #define
r…!†r†!jsX        r‡!†rˆ!h.XI// if so, use the #define's cloned beautifier for the line's indentation
r‰!†rŠ!jsX        r‹!†rŒ!h.XF// and then remove it from the active beautifier stack and delete it.
r!†rŽ!jsX        r!†r!jXifr‘!†r’!jsjƆr“!j©jî†r”!htj:†r•!hŒXbackslashEndsPrevLiner–!†r—!jsjƆr˜!htjõ†r™!htjõ†rš!jsjƆr›!hŒXisInDefineDefinitionrœ!†r!jsjƆrž!htjõ†rŸ!htjõ†r !jsjƆr¡!htj:†r¢!hŒX
isInDefiner£!†r¤!j©j†r¥!jsj»†r¦!jsX
          r§!†r¨!j©jÞ†r©!jsj»†rª!jsX            r«!†r¬!hŒXstringr­!†r®!jsjƆr¯!hŒXbeautifiedLiner°!†r±!j©jÔ†r²!jsj»†r³!jsX            r´!†rµ!hŒXASBeautifierr¶!†r·!jsjƆr¸!htjÿ†r¹!hŒXdefineBeautifierrº!†r»!j©jÔ†r¼!jsj»†r½!jsj»†r¾!jsX            r¿!†rÀ!hŒXisInDefineDefinitionrÁ!†rÂ!jsjƆrÃ!htj†rÄ!jsjƆrÅ!jEXfalserÆ!†rÇ!j©jÔ†rÈ!jsj»†rÉ!jsX            rÊ!†rË!hŒXdefineBeautifierrÌ!†rÍ!jsjƆrÎ!htj†rÏ!jsjƆrÐ!hŒXactiveBeautifierStackrÑ!†rÒ!htjô†rÓ!htj	†rÔ!hŒXbackrÕ!†rÖ!j©jî†r×!j©j†rØ!j©jÔ†rÙ!jsj»†rÚ!jsX            rÛ!†rÜ!hŒXactiveBeautifierStackrÝ!†rÞ!htjô†rß!htj	†rà!hŒXpop_backrá!†râ!j©jî†rã!j©j†rä!j©jÔ†rå!jsj»†ræ!jsj»†rç!jsX            rè!†ré!hŒXbeautifiedLinerê!†rë!jsjƆrì!htj†rí!jsjƆrî!hŒXdefineBeautifierrï!†rð!htjô†rñ!htj	†rò!hŒXbeautifyró!†rô!j©jî†rõ!hŒXlinerö!†r÷!j©j†rø!j©jÔ†rù!jsj»†rú!jsX            rû!†rü!jXdeleterý!†rþ!jsjƆrÿ!hŒXdefineBeautifierr"†r"j©jÔ†r"jsj»†r"jsX            r"†r"jXreturnr"†r"jsjƆr"hŒXbeautifiedLiner	"†r
"j©jÔ†r"jsj»†r"jsX
          r
"†r"j©j†r"jsj»†r"jsj»†r"jsX        r"†r"h.XL// unless this is a multi-line #define, return this precompiler line as is.
r"†r"jsX        r"†r"jXifr"†r"jsjƆr"j©jî†r"htj:†r"hŒX
isInDefiner"†r"jsjƆr"htjõ†r "htjõ†r!"jsjƆr""htj:†r#"hŒXisInDefineDefinitionr$"†r%"j©j†r&"jsj»†r'"jsX
          r("†r)"jXreturnr*"†r+"jsjƆr,"hŒXoriginalLiner-"†r."j©jÔ†r/"jsj»†r0"jsX      r1"†r2"j©j†r3"jsj»†r4"jsj»†r5"jsX    r6"†r7"h.XG// if there exists any worker beautifier in the activeBeautifierStack,
r8"†r9"jsX    r:"†r;"h.X9// then use it instead of me to indent the current line.
r<"†r="jsX    r>"†r?"jXifr@"†rA"jsjƆrB"j©jî†rC"htj:†rD"hŒX
isInDefinerE"†rF"jsjƆrG"htjõ†rH"htjõ†rI"jsjƆrJ"hŒXactiveBeautifierStackrK"†rL"jsjƆrM"htj:†rN"htj†rO"jsjƆrP"jEXNULLrQ"†rR"jsjƆrS"htjõ†rT"htjõ†rU"jsjƆrV"htj:†rW"hŒXactiveBeautifierStackrX"†rY"htjô†rZ"htj	†r["hŒXemptyr\"†r]"j©jî†r^"j©j†r_"j©j†r`"jsj»†ra"jsX      rb"†rc"j©jÞ†rd"jsj»†re"jsX        rf"†rg"jXreturnrh"†ri"jsjƆrj"hŒXactiveBeautifierStackrk"†rl"htjô†rm"htj	†rn"hŒXbackro"†rp"j©jî†rq"j©j†rr"htjô†rs"htj	†rt"hŒXbeautifyru"†rv"j©jî†rw"hŒXlinerx"†ry"j©j†rz"j©jÔ†r{"jsj»†r|"jsX      r}"†r~"j©j†r"jsj»†r€"jsj»†r"jsX    r‚"†rƒ"h.XC// calculate preliminary indentation based on data from past lines
r„"†r…"jsX    r†"†r‡"jXifrˆ"†r‰"jsjƆrŠ"j©jî†r‹"htj:†rŒ"hŒXinStatementIndentStackr"†rŽ"htjô†r"htj	†r"hŒXemptyr‘"†r’"j©jî†r“"j©j†r”"j©j†r•"jsj»†r–"jsX      r—"†r˜"hŒX
spaceTabCountr™"†rš"jsjƆr›"htj†rœ"jsjƆr"hŒXinStatementIndentStackrž"†rŸ"htjô†r "htj	†r¡"hŒXbackr¢"†r£"j©jî†r¤"j©j†r¥"j©jÔ†r¦"jsj»†r§"jsj»†r¨"jsj»†r©"jsX    rª"†r«"jXforr¬"†r­"jsjƆr®"j©jî†r¯"hŒjÀ†r°"htj†r±"jŸj†r²"j©jÔ†r³"jsjƆr´"hŒjÀ†rµ"htj#†r¶"hŒXheaderStackSizer·"†r¸"j©jÔ†r¹"jsjƆrº"hŒjÀ†r»"htjΆr¼"htjΆr½"j©j†r¾"jsj»†r¿"jsX      rÀ"†rÁ"j©jÞ†rÂ"jsj»†rÃ"jsX        rÄ"†rÅ"hŒX	isInClassrÆ"†rÇ"jsjƆrÈ"htj†rÉ"jsjƆrÊ"jEXfalserË"†rÌ"j©jÔ†rÍ"jsj»†rÎ"jsj»†rÏ"jsX        rÐ"†rÑ"jXifrÒ"†rÓ"jsjƆrÔ"j©jî†rÕ"hŒXblockIndentrÖ"†r×"jsjƆrØ"htj††rÙ"htj††rÚ"jsjƆrÛ"j©jî†rÜ"htj:†rÝ"j©jî†rÞ"hŒjÀ†rß"htj	†rà"jŸj†rá"jsjƆrâ"htjõ†rã"htjõ†rä"jsjƆrå"j©jî†ræ"htjÿ†rç"hŒXheaderStackrè"†ré"j©j†rê"j©j+†rë"hŒjÀ†rì"htjô†rí"jŸjĆrî"j©j…†rï"jsjƆrð"htj:†rñ"htj†rò"jsjƆró"htjõ†rô"hŒXAS_OPEN_BRACKETrõ"†rö"jsj»†r÷"jsX                              rø"†rù"htjõ†rú"htjõ†rû"jsjƆrü"j©jî†rý"htjÿ†rþ"hŒXheaderStackrÿ"†r#j©j†r#j©j+†r#hŒjÀ†r#j©j…†r#jsjƆr#htj†r#htj†r#jsjƆr#htjõ†r	#hŒXAS_OPEN_BRACKETr
#†r#j©j†r#j©j†r
#j©j†r#jsj»†r#jsX
          r#†r#htjΆr#htjΆr#hŒXtabCountr#†r#j©jÔ†r#jsj»†r#jsj»†r#jsX        r#†r#jXifr#†r#jsjƆr#j©jî†r#hŒXisCStyler#†r #jsjƆr!#htjõ†r"#htjõ†r##jsjƆr$#htj:†r%#hŒXnamespaceIndentr&#†r'#jsjƆr(#htjõ†r)#htjõ†r*#jsjƆr+#hŒjÀ†r,#jsjƆr-#htj	†r.#htj†r/#jsjƆr0#jŸjĆr1#jsj»†r2#jsX            r3#†r4#htjõ†r5#htjõ†r6#jsjƆr7#j©jî†r8#htjÿ†r9#hŒXheaderStackr:#†r;#j©j†r<#j©j+†r=#hŒjÀ†r>#htjô†r?#jŸjĆr@#j©j…†rA#jsjƆrB#htj†rC#htj†rD#jsjƆrE#htjõ†rF#hŒXAS_NAMESPACErG#†rH#jsj»†rI#jsX            rJ#†rK#htjõ†rL#htjõ†rM#jsjƆrN#j©jî†rO#htjÿ†rP#hŒXheaderStackrQ#†rR#j©j†rS#j©j+†rT#hŒjÀ†rU#j©j…†rV#jsjƆrW#htj†rX#htj†rY#jsjƆrZ#htjõ†r[#hŒXAS_OPEN_BRACKETr\#†r]#j©j†r^#jsj»†r_#jsX
          r`#†ra#htjô†rb#htjô†rc#hŒXtabCountrd#†re#j©jÔ†rf#jsj»†rg#jsj»†rh#jsX        ri#†rj#jXifrk#†rl#jsjƆrm#j©jî†rn#hŒXisCStylero#†rp#jsjƆrq#htjõ†rr#htjõ†rs#jsjƆrt#hŒjÀ†ru#jsjƆrv#htj	†rw#htj†rx#jsjƆry#jŸjĆrz#jsj»†r{#jsX            r|#†r}#htjõ†r~#htjõ†r#jsjƆr€#j©jî†r#htjÿ†r‚#hŒXheaderStackrƒ#†r„#j©j†r…#j©j+†r†#hŒjÀ†r‡#htjô†rˆ#jŸjĆr‰#j©j…†rŠ#jsjƆr‹#htj†rŒ#htj†r#jsjƆrŽ#htjõ†r#hŒXAS_CLASSr#†r‘#jsj»†r’#jsX            r“#†r”#htjõ†r•#htjõ†r–#jsjƆr—#j©jî†r˜#htjÿ†r™#hŒXheaderStackrš#†r›#j©j†rœ#j©j+†r#hŒjÀ†rž#j©j…†rŸ#jsjƆr #htj†r¡#htj†r¢#jsjƆr£#htjõ†r¤#hŒXAS_OPEN_BRACKETr¥#†r¦#jsjƆr§#j©j†r¨#jsj»†r©#jsX
          rª#†r«#e(j©jÞ†r¬#jsj»†r­#jsX            r®#†r¯#jXifr°#†r±#jsjƆr²#j©jî†r³#hŒXclassIndentr´#†rµ#j©j†r¶#jsj»†r·#jsX              r¸#†r¹#htjΆrº#htjΆr»#hŒXtabCountr¼#†r½#j©jÔ†r¾#jsj»†r¿#jsX            rÀ#†rÁ#hŒX	isInClassrÂ#†rÃ#jsjƆrÄ#htj†rÅ#jsjƆrÆ#jEXtruerÇ#†rÈ#j©jÔ†rÉ#jsj»†rÊ#jsX
          rË#†rÌ#j©j†rÍ#jsj»†rÎ#jsj»†rÏ#jsX        rÐ#†rÑ#h.XT// is the switchIndent option is on, indent switch statements an additional indent.
rÒ#†rÓ#jsX        rÔ#†rÕ#jXelserÖ#†r×#jsjƆrØ#jXifrÙ#†rÚ#jsjƆrÛ#j©jî†rÜ#hŒXswitchIndentrÝ#†rÞ#jsjƆrß#htjõ†rà#htjõ†rá#jsjƆrâ#hŒjÀ†rã#jsjƆrä#htj	†rå#jsjƆræ#jŸjĆrç#jsjƆrè#htjõ†ré#htjõ†rê#jsj»†rë#jsX                 rì#†rí#j©jî†rî#htjÿ†rï#hŒXheaderStackrð#†rñ#j©j†rò#j©j+†ró#hŒjÀ†rô#htjô†rõ#jŸjĆrö#j©j…†r÷#jsjƆrø#htj†rù#htj†rú#jsjƆrû#htjõ†rü#hŒX	AS_SWITCHrý#†rþ#jsjƆrÿ#htjõ†r$htjõ†r$jsj»†r$jsX                 r$†r$j©jî†r$htjÿ†r$hŒXheaderStackr$†r$j©j†r	$j©j+†r
$hŒjÀ†r$j©j…†r$jsjƆr
$htj†r$htj†r$jsjƆr$htjõ†r$hŒXAS_OPEN_BRACKETr$†r$jsj»†r$jsX                r$†r$j©j†r$jsj»†r$jsX
          r$†r$j©jÞ†r$jsj»†r$jsX            r$†r$htjΆr$htjΆr $hŒXtabCountr!$†r"$j©jÔ†r#$jsj»†r$$jsX            r%$†r&$hŒX
isInSwitchr'$†r($jsjƆr)$htj†r*$jsjƆr+$jEXtruer,$†r-$j©jÔ†r.$jsj»†r/$jsX
          r0$†r1$j©j†r2$jsj»†r3$jsj»†r4$jsX      r5$†r6$j©j†r7$jsj»†r8$jsj»†r9$jsX    r:$†r;$jXifr<$†r=$jsjƆr>$j©jî†r?$htj:†r@$hŒXlineStartsInCommentrA$†rB$jsj»†rC$jsX        rD$†rE$htjõ†rF$htjõ†rG$jsjƆrH$hŒXisCStylerI$†rJ$jsj»†rK$jsX        rL$†rM$htjõ†rN$htjõ†rO$jsjƆrP$hŒX	isInClassrQ$†rR$jsj»†rS$jsX        rT$†rU$htjõ†rV$htjõ†rW$jsjƆrX$hŒXclassIndentrY$†rZ$jsj»†r[$jsX        r\$†r]$htjõ†r^$htjõ†r_$jsjƆr`$hŒXheaderStackSizera$†rb$jsjƆrc$htj	†rd$htj†re$jsjƆrf$jŸj†rg$jsj»†rh$jsX        ri$†rj$htjõ†rk$htjõ†rl$j©jî†rm$htjÿ†rn$hŒXheaderStackro$†rp$j©j†rq$j©j+†rr$hŒXheaderStackSizers$†rt$htjô†ru$jŸj†rv$j©j…†rw$jsjƆrx$htj†ry$htj†rz$jsjƆr{$htjõ†r|$hŒXAS_CLASSr}$†r~$jsj»†r$jsX        r€$†r$htjõ†r‚$htjõ†rƒ$jsjƆr„$j©jî†r…$htjÿ†r†$hŒXheaderStackr‡$†rˆ$j©j†r‰$j©j+†rŠ$hŒXheaderStackSizer‹$†rŒ$htjô†r$jŸjĆrŽ$j©j…†r$jsjƆr$htj†r‘$htj†r’$jsjƆr“$htjõ†r”$hŒXAS_OPEN_BRACKETr•$†r–$jsj»†r—$jsX        r˜$†r™$htjõ†rš$htjõ†r›$jsjƆrœ$hŒXliner$†rž$j©j+†rŸ$jŸj†r $j©j…†r¡$jsjƆr¢$htj†r£$htj†r¤$jsjƆr¥$jÖjú†r¦$jÖj†r§$jÖjú†r¨$j©j†r©$jsj»†rª$jsX      r«$†r¬$htjô†r­$htjô†r®$hŒXtabCountr¯$†r°$j©jÔ†r±$jsj»†r²$jsj»†r³$jsX    r´$†rµ$jXelser¶$†r·$jsjƆr¸$jtXifr¹$†rº$jsjƆr»$j©jî†r¼$htj:†r½$hŒXlineStartsInCommentr¾$†r¿$jsj»†rÀ$jsX
             rÁ$†rÂ$htjõ†rÃ$htjõ†rÄ$jsjƆrÅ$hŒX
isInSwitchrÆ$†rÇ$jsj»†rÈ$jsX
             rÉ$†rÊ$htjõ†rË$htjõ†rÌ$jsjƆrÍ$hŒXswitchIndentrÎ$†rÏ$jsj»†rÐ$jsX
             rÑ$†rÒ$htjõ†rÓ$htjõ†rÔ$jsjƆrÕ$hŒXheaderStackSizerÖ$†r×$jsjƆrØ$htj	†rÙ$htj†rÚ$jsjƆrÛ$jŸj†rÜ$jsj»†rÝ$jsX
             rÞ$†rß$htjõ†rà$htjõ†rá$jsjƆrâ$j©jî†rã$htjÿ†rä$hŒXheaderStackrå$†ræ$j©j†rç$j©j+†rè$hŒXheaderStackSizeré$†rê$htjô†rë$jŸj†rì$j©j…†rí$jsjƆrî$htj†rï$htj†rð$jsjƆrñ$htjõ†rò$hŒX	AS_SWITCHró$†rô$jsj»†rõ$jsX
             rö$†r÷$htjõ†rø$htjõ†rù$jsjƆrú$j©jî†rû$htjÿ†rü$hŒXheaderStackrý$†rþ$j©j†rÿ$j©j+†r%hŒXheaderStackSizer%†r%htjô†r%jŸjĆr%j©j…†r%jsjƆr%htj†r%htj†r%jsjƆr	%htjõ†r
%hŒXAS_OPEN_BRACKETr%†r%jsj»†r
%jsX
             r%†r%htjõ†r%htjõ†r%jsjƆr%hŒXliner%†r%j©j+†r%jŸj†r%j©j…†r%jsjƆr%htj†r%htj†r%jsjƆr%jÖjú†r%jÖj†r%jÖjú†r%j©j†r%jsj»†r %jsX      r!%†r"%htjô†r#%htjô†r$%hŒXtabCountr%%†r&%j©jÔ†r'%jsj»†r(%jsj»†r)%jsX    r*%†r+%jXifr,%†r-%jsjƆr.%j©jî†r/%hŒXisInClassHeaderr0%†r1%j©j†r2%jsj»†r3%jsX      r4%†r5%j©jÞ†r6%jsj»†r7%jsX        r8%†r9%hŒXisInClassHeaderTabr:%†r;%jsjƆr<%htj†r=%jsjƆr>%jEXtruer?%†r@%j©jÔ†rA%jsj»†rB%jsX        rC%†rD%hŒXtabCountrE%†rF%jsjƆrG%htjΆrH%htj†rI%jsjƆrJ%jŸj†rK%j©jÔ†rL%jsj»†rM%jsX      rN%†rO%j©j†rP%jsj»†rQ%jsj»†rR%jsX    rS%†rT%jXifrU%†rV%jsjƆrW%j©jî†rX%hŒXisInConditionalrY%†rZ%j©j†r[%jsj»†r\%jsX      r]%†r^%j©jÞ†r_%jsj»†r`%jsX        ra%†rb%htjô†rc%htjô†rd%hŒXtabCountre%†rf%j©jÔ†rg%jsj»†rh%jsX      ri%†rj%j©j†rk%jsj»†rl%jsj»†rm%jsj»†rn%jsX    ro%†rp%h.X)// parse characters in the current line.
rq%†rr%jsj»†rs%jsX    rt%†ru%jXforrv%†rw%jsjƆrx%j©jî†ry%hŒjÀ†rz%htj†r{%jŸj†r|%j©jÔ†r}%jsjƆr~%hŒjÀ†r%htj#†r€%hŒXliner%†r‚%j©j>†rƒ%hŒXlengthr„%†r…%j©jî†r†%j©j†r‡%j©jÔ†rˆ%jsjƆr‰%hŒjÀ†rŠ%htjΆr‹%htjΆrŒ%j©j†r%jsj»†rŽ%jsX      r%†r%j©jÞ†r‘%jsj»†r’%jsX        r“%†r”%hŒXtempChr•%†r–%jsjƆr—%htj†r˜%jsjƆr™%hŒXlinerš%†r›%j©j+†rœ%hŒjÀ†r%j©j…†rž%j©jÔ†rŸ%jsj»†r %jsj»†r¡%jsX        r¢%†r£%hŒXprevChr¤%†r¥%jsjƆr¦%htj†r§%jsjƆr¨%hŒXchr©%†rª%j©jÔ†r«%jsj»†r¬%jsX        r­%†r®%hŒXchr¯%†r°%jsjƆr±%htj†r²%jsjƆr³%hŒXtempChr´%†rµ%j©jÔ†r¶%jsj»†r·%jsj»†r¸%jsX        r¹%†rº%hŒX	outBufferr»%†r¼%j©j>†r½%hŒXappendr¾%†r¿%j©jî†rÀ%jŸjĆrÁ%j©jù†rÂ%jsjƆrÃ%hŒXchrÄ%†rÅ%j©j†rÆ%j©jÔ†rÇ%jsj»†rÈ%jsj»†rÉ%jsX        rÊ%†rË%jXifrÌ%†rÍ%jsjƆrÎ%j©jî†rÏ%hŒXisWhiteSpacerÐ%†rÑ%j©jî†rÒ%hŒXchrÓ%†rÔ%j©j†rÕ%j©j†rÖ%jsj»†r×%jsX
          rØ%†rÙ%jXcontinuerÚ%†rÛ%j©jÔ†rÜ%jsj»†rÝ%jsj»†rÞ%jsj»†rß%jsX        rà%†rá%h.XL// handle special characters (i.e. backslash+character such as \n, \t, ...)
râ%†rã%jsX        rä%†rå%jXifræ%†rç%jsjƆrè%j©jî†ré%hŒX
isSpecialCharrê%†rë%j©j†rì%jsj»†rí%jsX
          rî%†rï%j©jÞ†rð%jsj»†rñ%jsX            rò%†ró%hŒX
isSpecialCharrô%†rõ%jsjƆrö%htj†r÷%jsjƆrø%jEXfalserù%†rú%j©jÔ†rû%jsj»†rü%jsX            rý%†rþ%jXcontinuerÿ%†r&j©jÔ†r&jsj»†r&jsX
          r&†r&j©j†r&jsj»†r&jsX        r&†r&jXifr	&†r
&jsjƆr&j©jî†r&htj:†r
&j©jî†r&hŒXisInCommentr&†r&jsjƆr&htj††r&htj††r&jsjƆr&hŒXisInLineCommentr&†r&j©j†r&jsjƆr&htjõ†r&htjõ†r&jsjƆr&hŒXliner&†r&j©j>†r&hŒXCOMPAREr&†r &j©jî†r!&hŒjÀ†r"&j©jù†r#&jsjƆr$&jŸj†r%&j©jù†r&&jsjƆr'&hŒXstringr(&†r)&j©jî†r*&jÁj'†r+&júX\\r,&†r-&júX\\r.&†r/&jÁj'†r0&j©j†r1&j©j†r2&jsjƆr3&htj†r4&htj†r5&jsjƆr6&jŸj†r7&j©j†r8&jsj»†r9&jsX
          r:&†r;&j©jÞ†r<&jsj»†r=&jsX            r>&†r?&hŒX	outBufferr@&†rA&j©j>†rB&hŒXappendrC&†rD&j©jî†rE&jŸjĆrF&j©jù†rG&jsjƆrH&jÖjú†rI&jÖX\\rJ&†rK&jÖjú†rL&j©j†rM&j©jÔ†rN&jsj»†rO&jsX            rP&†rQ&hŒjÀ†rR&htjΆrS&htjΆrT&j©jÔ†rU&jsj»†rV&jsX            rW&†rX&jXcontinuerY&†rZ&j©jÔ†r[&jsj»†r\&jsX
          r]&†r^&j©j†r_&jsj»†r`&jsX        ra&†rb&jXifrc&†rd&jsjƆre&j©jî†rf&htj:†rg&j©jî†rh&hŒXisInCommentri&†rj&jsjƆrk&htj††rl&htj††rm&jsjƆrn&hŒXisInLineCommentro&†rp&j©j†rq&jsjƆrr&htjõ†rs&htjõ†rt&jsjƆru&hŒXchrv&†rw&htj†rx&htj†ry&jÖjú†rz&jÖX\\r{&†r|&jÖjú†r}&j©j†r~&jsj»†r&jsX
          r€&†r&j©jÞ†r‚&jsj»†rƒ&jsX            r„&†r…&hŒX
isSpecialCharr†&†r‡&jsjƆrˆ&htj†r‰&jsjƆrŠ&jEXtruer‹&†rŒ&j©jÔ†r&jsj»†rŽ&jsX            r&†r&jXcontinuer‘&†r’&j©jÔ†r“&jsj»†r”&jsX
          r•&†r–&j©j†r—&jsj»†r˜&jsj»†r™&jsX        rš&†r›&h.X1// handle quotes (such as 'x' and "Hello Dolly")
rœ&†r&jsX        rž&†rŸ&jXifr &†r¡&jsjƆr¢&j©jî†r£&htj:†r¤&j©jî†r¥&hŒXisInCommentr¦&†r§&jsjƆr¨&htj††r©&htj††rª&jsjƆr«&hŒXisInLineCommentr¬&†r­&j©j†r®&jsjƆr¯&htjõ†r°&htjõ†r±&jsjƆr²&j©jî†r³&hŒXchr´&†rµ&htj†r¶&htj†r·&jÖjú†r¸&jÖj'†r¹&jÖjú†rº&jsjƆr»&htj††r¼&htj††r½&jsjƆr¾&hŒXchr¿&†rÀ&htj†rÁ&htj†rÂ&jÖjú†rÃ&jÖX\'rÄ&†rÅ&jÖjú†rÆ&j©j†rÇ&j©j†rÈ&jsj»†rÉ&jsX
          rÊ&†rË&jXifrÌ&†rÍ&jsjƆrÎ&j©jî†rÏ&htj:†rÐ&hŒX	isInQuoterÑ&†rÒ&j©j†rÓ&jsj»†rÔ&jsX            rÕ&†rÖ&j©jÞ†r×&jsj»†rØ&jsX              rÙ&†rÚ&hŒX	quoteCharrÛ&†rÜ&jsjƆrÝ&htj†rÞ&jsjƆrß&hŒXchrà&†rá&j©jÔ†râ&jsj»†rã&jsX              rä&†rå&hŒX	isInQuoteræ&†rç&jsjƆrè&htj†ré&jsjƆrê&jEXtruerë&†rì&j©jÔ†rí&jsj»†rî&jsX            rï&†rð&j©j†rñ&jsj»†rò&jsX
          ró&†rô&jXelserõ&†rö&jsjƆr÷&jXifrø&†rù&jsjƆrú&j©jî†rû&hŒX	quoteCharrü&†rý&jsjƆrþ&htj†rÿ&htj†r'jsjƆr'hŒXchr'†r'j©j†r'jsj»†r'jsX            r'†r'j©jÞ†r'jsj»†r	'jsX              r
'†r'hŒX	isInQuoter'†r
'jsjƆr'htj†r'jsjƆr'jEXfalser'†r'j©jÔ†r'jsj»†r'jsX              r'†r'hŒX
isInStatementr'†r'jsjƆr'htj†r'jsjƆr'jEXtruer'†r'j©jÔ†r'jsj»†r'jsX              r '†r!'jXcontinuer"'†r#'j©jÔ†r$'jsj»†r%'jsX            r&'†r''j©j†r('jsj»†r)'jsX        r*'†r+'jXifr,'†r-'jsjƆr.'j©jî†r/'hŒX	isInQuoter0'†r1'j©j†r2'jsj»†r3'jsX
          r4'†r5'jXcontinuer6'†r7'j©jÔ†r8'jsj»†r9'jsj»†r:'jsX        r;'†r<'h.X// handle comments
r='†r>'jsj»†r?'jsX        r@'†rA'jXifrB'†rC'jsjƆrD'j©jî†rE'jsjƆrF'htj:†rG'j©jî†rH'hŒXisInCommentrI'†rJ'jsjƆrK'htj††rL'htj††rM'jsjƆrN'hŒXisInLineCommentrO'†rP'j©j†rQ'jsjƆrR'htjõ†rS'htjõ†rT'jsjƆrU'hŒXlinerV'†rW'j©j>†rX'hŒXCOMPARErY'†rZ'j©jî†r['hŒjÀ†r\'j©jù†r]'jsjƆr^'jŸj†r_'j©jù†r`'jsjƆra'hŒXAS_OPEN_LINE_COMMENTrb'†rc'j©j†rd'jsjƆre'htj†rf'htj†rg'jsjƆrh'jŸj†ri'jsjƆrj'j©j†rk'jsj»†rl'jsX
          rm'†rn'j©jÞ†ro'jsj»†rp'jsX            rq'†rr'hŒXisInLineCommentrs'†rt'jsjƆru'htj†rv'jsjƆrw'jEXtruerx'†ry'j©jÔ†rz'jsj»†r{'jsX            r|'†r}'hŒX	outBufferr~'†r'j©j>†r€'hŒXappendr'†r‚'j©jî†rƒ'jŸjĆr„'j©jù†r…'jsjƆr†'jÖjú†r‡'jÖX/rˆ'†r‰'jÖjú†rŠ'j©j†r‹'j©jÔ†rŒ'jsj»†r'jsX            rŽ'†r'hŒjÀ†r'htjΆr‘'htjΆr’'j©jÔ†r“'jsj»†r”'jsX            r•'†r–'jXcontinuer—'†r˜'j©jÔ†r™'jsj»†rš'jsX
          r›'†rœ'j©j†r'jsj»†rž'jsX        rŸ'†r 'jXelser¡'†r¢'jsjƆr£'jXifr¤'†r¥'jsjƆr¦'j©jî†r§'jsjƆr¨'htj:†r©'j©jî†rª'hŒXisInCommentr«'†r¬'jsjƆr­'htj††r®'htj††r¯'jsjƆr°'hŒXisInLineCommentr±'†r²'j©j†r³'jsjƆr´'htjõ†rµ'htjõ†r¶'jsjƆr·'hŒXliner¸'†r¹'j©j>†rº'hŒXCOMPAREr»'†r¼'j©jî†r½'hŒjÀ†r¾'j©jù†r¿'jsjƆrÀ'jŸj†rÁ'j©jù†rÂ'jsjƆrÃ'hŒXAS_OPEN_COMMENTrÄ'†rÅ'j©j†rÆ'jsjƆrÇ'htj†rÈ'htj†rÉ'jsjƆrÊ'jŸj†rË'jsjƆrÌ'j©j†rÍ'jsj»†rÎ'jsX
          rÏ'†rÐ'j©jÞ†rÑ'jsj»†rÒ'jsX            rÓ'†rÔ'hŒXisInCommentrÕ'†rÖ'jsjƆr×'htj†rØ'jsjƆrÙ'jEXtruerÚ'†rÛ'j©jÔ†rÜ'jsj»†rÝ'jsX            rÞ'†rß'hŒX	outBufferrà'†rá'j©j>†râ'hŒXappendrã'†rä'j©jî†rå'jŸjĆræ'j©jù†rç'jsjƆrè'jÖjú†ré'jÖjÿ†rê'jÖjú†rë'j©j†rì'j©jÔ†rí'jsj»†rî'jsX            rï'†rð'hŒjÀ†rñ'htjΆrò'htjΆró'j©jÔ†rô'jsj»†rõ'jsX            rö'†r÷'jXcontinuerø'†rù'j©jÔ†rú'jsj»†rû'jsX
          rü'†rý'j©j†rþ'jsj»†rÿ'jsX        r(†r(jXelser(†r(jsjƆr(jXifr(†r(jsjƆr(j©jî†r(jsjƆr	(j©jî†r
(hŒXisInCommentr(†r(jsjƆr
(htj††r(htj††r(jsjƆr(hŒXisInLineCommentr(†r(j©j†r(jsjƆr(htjõ†r(htjõ†r(jsjƆr(hŒXliner(†r(j©j>†r(hŒXCOMPAREr(†r(j©jî†r(hŒjÀ†r(j©jù†r(jsjƆr (jŸj†r!(j©jù†r"(jsjƆr#(hŒXAS_CLOSE_COMMENTr$(†r%(j©j†r&(jsjƆr'(htj†r((htj†r)(jsjƆr*(jŸj†r+(jsjƆr,(j©j†r-(jsj»†r.(jsX
          r/(†r0(j©jÞ†r1(jsj»†r2(jsX            r3(†r4(hŒXisInCommentr5(†r6(jsjƆr7(htj†r8(jsjƆr9(jEXfalser:(†r;(j©jÔ†r<(jsj»†r=(jsX            r>(†r?(hŒX	outBufferr@(†rA(j©j>†rB(hŒXappendrC(†rD(j©jî†rE(jŸjĆrF(j©jù†rG(jsjƆrH(jÖjú†rI(jÖjˆ'†rJ(jÖjú†rK(j©j†rL(j©jÔ†rM(jsj»†rN(jsX            rO(†rP(hŒjÀ†rQ(htjΆrR(htjΆrS(j©jÔ†rT(jsj»†rU(jsX            rV(†rW(jXcontinuerX(†rY(j©jÔ†rZ(jsj»†r[(jsX
          r\(†r](j©j†r^(jsj»†r_(jsj»†r`(jsX        ra(†rb(jXifrc(†rd(jsjƆre(j©jî†rf(hŒXisInCommentrg(†rh(htj††ri(htj††rj(hŒXisInLineCommentrk(†rl(j©j†rm(jsj»†rn(jsX
          ro(†rp(jXcontinuerq(†rr(j©jÔ†rs(jsj»†rt(jsj»†ru(jsX        rv(†rw(h.X^// if we have reached this far then we are NOT in a comment or string of special character...
rx(†ry(jsj»†rz(jsX        r{(†r|(jXifr}(†r~(jsjƆr(j©jî†r€(hŒXprobationHeaderr(†r‚(jsjƆrƒ(htj:†r„(htj†r…(jsjƆr†(jEXNULLr‡(†rˆ(j©j†r‰(jsj»†rŠ(jsX
          r‹(†rŒ(j©jÞ†r(jsj»†rŽ(jsX            r(†r(jXifr‘(†r’(jsjƆr“(j©jî†r”(jsjƆr•(j©jî†r–(j©jî†r—(hŒXprobationHeaderr˜(†r™(jsjƆrš(htj†r›(htj†rœ(jsjƆr(htjõ†rž(hŒX	AS_STATICrŸ(†r (jsjƆr¡(htj††r¢(htj††r£(jsjƆr¤(hŒXprobationHeaderr¥(†r¦(jsjƆr§(htj†r¨(htj†r©(e(jsjƆrª(htjõ†r«(hŒXAS_CONSTr¬(†r­(j©j†r®(jsjƆr¯(htjõ†r°(htjõ†r±(jsjƆr²(hŒXchr³(†r´(jsjƆrµ(htj†r¶(htj†r·(jsjƆr¸(jÖjú†r¹(jÖjÞ†rº(jÖjú†r»(j©j†r¼(jsj»†r½(jsX                 r¾(†r¿(htj††rÀ(htj††rÁ(jsjƆrÂ(j©jî†rÃ(hŒXprobationHeaderrÄ(†rÅ(jsjƆrÆ(htj†rÇ(htj†rÈ(jsjƆrÉ(htjõ†rÊ(hŒXAS_SYNCHRONIZEDrË(†rÌ(jsjƆrÍ(htjõ†rÎ(htjõ†rÏ(jsjƆrÐ(hŒXchrÑ(†rÒ(jsjƆrÓ(htj†rÔ(htj†rÕ(jsjƆrÖ(jÖjú†r×(jÖjî†rØ(jÖjú†rÙ(j©j†rÚ(j©j†rÛ(jsj»†rÜ(jsX              rÝ(†rÞ(j©jÞ†rß(jsj»†rà(jsX                rá(†râ(h.X/// insert the probation header as a new header
rã(†rä(jsX                rå(†ræ(hŒX
isInHeaderrç(†rè(jsjƆré(htj†rê(jsjƆrë(jEXtruerì(†rí(j©jÔ†rî(jsj»†rï(jsX                rð(†rñ(hŒXheaderStackrò(†ró(htjô†rô(htj	†rõ(hŒX	push_backrö(†r÷(j©jî†rø(hŒXprobationHeaderrù(†rú(j©j†rû(j©jÔ†rü(jsj»†rý(jsj»†rþ(jsX                rÿ(†r)h.X(// handle the specific probation header
r)†r)jsX                r)†r)hŒXisInConditionalr)†r)jsjƆr)htj†r)jsjƆr	)j©jî†r
)hŒXprobationHeaderr)†r)jsjƆr
)htj†r)htj†r)jsjƆr)htjõ†r)hŒXAS_SYNCHRONIZEDr)†r)j©j†r)j©jÔ†r)jsj»†r)jsX                r)†r)jXifr)†r)jsjƆr)j©jî†r)hŒXprobationHeaderr)†r)jsjƆr)htj†r )htj†r!)jsjƆr")htjõ†r#)hŒXAS_CONSTr$)†r%)j©j†r&)jsj»†r')jsX                  r()†r))hŒXisImmediatelyAfterConstr*)†r+)jsjƆr,)htj†r-)jsjƆr.)jEXtruer/)†r0)j©jÔ†r1)jsj»†r2)jsX                r3)†r4)h.X//  isInConst = true;
r5)†r6)jsX                r7)†r8)hX«/* TODO:
                 * There is actually no more need for the global isInConst variable.
                               * The only reason for checking const is to see if there is a const
                 * immediately before an open-bracket.
                 * Since CONST is now put into probation and is checked during itspost-char,
                 * isImmediatelyAfterConst can be set by its own...
                 */r9)†r:)jsj»†r;)jsj»†r<)jsX                r=)†r>)hŒX
isInStatementr?)†r@)jsjƆrA)htj†rB)jsjƆrC)jEXfalserD)†rE)j©jÔ†rF)jsj»†rG)jsX                rH)†rI)h.XN// if the probation comes from the previous line, then indent by 1 tab count.
rJ)†rK)jsX                rL)†rM)jXifrN)†rO)jsjƆrP)j©jî†rQ)hŒXpreviousLineProbationrR)†rS)jsjƆrT)htjõ†rU)htjõ†rV)jsjƆrW)hŒXchrX)†rY)jsjƆrZ)htj†r[)htj†r\)jsjƆr])jÖjú†r^)jÖjÞ†r_)jÖjú†r`)j©j†ra)jsj»†rb)jsX                  rc)†rd)hŒXtabCountre)†rf)htjΆrg)htjΆrh)j©jÔ†ri)jsj»†rj)jsX                rk)†rl)hŒXpreviousLineProbationrm)†rn)jsjƆro)htj†rp)jsjƆrq)jEXfalserr)†rs)j©jÔ†rt)jsj»†ru)jsX              rv)†rw)j©j†rx)jsj»†ry)jsj»†rz)jsX            r{)†r|)h.X // dismiss the probation header
r})†r~)jsX            r)†r€)hŒXprobationHeaderr)†r‚)jsjƆrƒ)htj†r„)jsjƆr…)jEXNULLr†)†r‡)j©jÔ†rˆ)jsj»†r‰)jsX
          rŠ)†r‹)j©j†rŒ)jsj»†r)jsj»†rŽ)jsX        r)†r)hŒXprevNonSpaceChr‘)†r’)jsjƆr“)htj†r”)jsjƆr•)hŒXcurrentNonSpaceChr–)†r—)j©jÔ†r˜)jsj»†r™)jsX        rš)†r›)hŒXcurrentNonSpaceChrœ)†r)jsjƆrž)htj†rŸ)jsjƆr )hŒXchr¡)†r¢)j©jÔ†r£)jsj»†r¤)jsX        r¥)†r¦)jXifr§)†r¨)jsjƆr©)j©jî†rª)htj:†r«)hŒXisLegalNameCharr¬)†r­)j©jî†r®)hŒXchr¯)†r°)j©j†r±)jsjƆr²)htjõ†r³)htjõ†r´)jsjƆrµ)hŒXchr¶)†r·)jsjƆr¸)htj:†r¹)htj†rº)jsjƆr»)jÖjú†r¼)jÖjù†r½)jÖjú†r¾)jsjƆr¿)htjõ†rÀ)htjõ†rÁ)jsjƆrÂ)hŒXchrÃ)†rÄ)jsjƆrÅ)htj:†rÆ)htj†rÇ)jsjƆrÈ)jÖjú†rÉ)jÖjÔ†rÊ)jÖjú†rË)jsjƆrÌ)j©j†rÍ)jsj»†rÎ)jsX
          rÏ)†rÐ)j©jÞ†rÑ)jsj»†rÒ)jsX            rÓ)†rÔ)hŒXprevNonLegalChrÕ)†rÖ)jsjƆr×)htj†rØ)jsjƆrÙ)hŒXcurrentNonLegalChrÚ)†rÛ)j©jÔ†rÜ)jsj»†rÝ)jsX            rÞ)†rß)hŒXcurrentNonLegalChrà)†rá)jsjƆrâ)htj†rã)jsjƆrä)hŒXchrå)†ræ)j©jÔ†rç)jsj»†rè)jsX
          ré)†rê)j©j†rë)jsj»†rì)jsj»†rí)jsX        rî)†rï)h.X//if (isInConst)
rð)†rñ)jsX        rò)†ró)h.X//{
rô)†rõ)jsX        rö)†r÷)h.X//    isInConst = false;
rø)†rù)jsX        rú)†rû)h.X&//    isImmediatelyAfterConst = true;
rü)†rý)jsX        rþ)†rÿ)h.X//}
r*†r*jsj»†r*jsX        r*†r*jXifr*†r*jsjƆr*j©jî†r*hŒX
isInHeaderr	*†r
*j©j†r*jsj»†r*jsX
          r
*†r*j©jÞ†r*jsj»†r*jsX            r*†r*hŒX
isInHeaderr*†r*jsjƆr*htj†r*jsjƆr*jEXfalser*†r*j©jÔ†r*jsj»†r*jsX            r*†r*hŒX
currentHeaderr*†r*jsjƆr *htj†r!*jsjƆr"*hŒXheaderStackr#*†r$*htjô†r%*htj	†r&*hŒXbackr'*†r(*j©jî†r)*j©j†r**j©jÔ†r+*jsj»†r,*jsX
          r-*†r.*j©j†r/*jsj»†r0*jsX        r1*†r2*jXelser3*†r4*jsj»†r5*jsX
          r6*†r7*hŒX
currentHeaderr8*†r9*jsjƆr:*htj†r;*jsjƆr<*jEXNULLr=*†r>*j©jÔ†r?*jsj»†r@*jsj»†rA*jsX        rB*†rC*jXifrD*†rE*jsjƆrF*j©jî†rG*hŒXisCStylerH*†rI*jsjƆrJ*htjõ†rK*htjõ†rL*jsjƆrM*hŒXisInTemplaterN*†rO*jsj»†rP*jsX            rQ*†rR*htjõ†rS*htjõ†rT*jsjƆrU*j©jî†rV*hŒXchrW*†rX*jsjƆrY*htj†rZ*htj†r[*jsjƆr\*jÖjú†r]*jÖj#†r^*jÖjú†r_*jsjƆr`*htj††ra*htj††rb*jsjƆrc*hŒXchrd*†re*jsjƆrf*htj†rg*htj†rh*jsjƆri*jÖjú†rj*jÖj	†rk*jÖjú†rl*j©j†rm*jsj»†rn*jsX            ro*†rp*htjõ†rq*htjõ†rr*jsX  rs*†rt*hŒX
findHeaderru*†rv*j©jî†rw*hŒXlinerx*†ry*j©jù†rz*jsjƆr{*hŒjÀ†r|*j©jù†r}*jsjƆr~*hŒXnonAssignmentOperatorsr*†r€*j©j†r*jsjƆr‚*htj†rƒ*htj†r„*jsjƆr…*jEXNULLr†*†r‡*j©j†rˆ*jsjƆr‰*h.X//;
rŠ*†r‹*jsX
          rŒ*†r*j©jÞ†rŽ*jsj»†r*jsX            r*†r‘*jXifr’*†r“*jsjƆr”*j©jî†r•*hŒXchr–*†r—*jsjƆr˜*htj†r™*htj†rš*jsjƆr›*jÖjú†rœ*jÖj#†r*jÖjú†rž*j©j†rŸ*jsj»†r *jsX              r¡*†r¢*j©jÞ†r£*jsj»†r¤*jsX                r¥*†r¦*htjΆr§*htjΆr¨*hŒX
templateDepthr©*†rª*j©jÔ†r«*jsj»†r¬*jsX              r­*†r®*j©j†r¯*jsj»†r°*jsX            r±*†r²*jXelser³*†r´*jsjƆrµ*jXifr¶*†r·*jsjƆr¸*j©jî†r¹*hŒXchrº*†r»*jsjƆr¼*htj†r½*htj†r¾*jsjƆr¿*jÖjú†rÀ*jÖj	†rÁ*jÖjú†rÂ*j©j†rÃ*jsj»†rÄ*jsX              rÅ*†rÆ*j©jÞ†rÇ*jsj»†rÈ*jsX                rÉ*†rÊ*jXifrË*†rÌ*jsjƆrÍ*j©jî†rÎ*htjô†rÏ*htjô†rÐ*hŒX
templateDepthrÑ*†rÒ*jsjƆrÓ*htj#†rÔ*htj†rÕ*jsjƆrÖ*jŸj†r×*j©j†rØ*jsj»†rÙ*jsX                  rÚ*†rÛ*j©jÞ†rÜ*jsj»†rÝ*jsX                    rÞ*†rß*jXifrà*†rá*jsjƆrâ*j©jî†rã*hŒXisInTemplaterä*†rå*j©j†ræ*jsj»†rç*jsX                      rè*†ré*hŒXchrê*†rë*jsjƆrì*htj†rí*jsjƆrî*jÖjú†rï*jÖjÔ†rð*jÖjú†rñ*j©jÔ†rò*jsj»†ró*jsX                    rô*†rõ*jXelserö*†r÷*jsj»†rø*jsX                      rù*†rú*hŒXchrû*†rü*jsjƆrý*htj†rþ*jsjƆrÿ*jÖjú†r+jÖXtr+†r+jÖjú†r+j©jÔ†r+jsj»†r+jsX                    r+†r+hŒXisInTemplater+†r	+jsjƆr
+htj†r+jsjƆr+jEXfalser
+†r+j©jÔ†r+jsj»†r+jsX                    r+†r+hŒX
templateDepthr+†r+jsjƆr+htj†r+jsjƆr+jŸj†r+j©jÔ†r+jsj»†r+jsX                  r+†r+j©j†r+jsj»†r+jsj»†r+jsX              r +†r!+j©j†r"+jsj»†r#+jsX
          r$+†r%+j©j†r&+jsj»†r'+jsj»†r(+jsX        r)+†r*+h.X// handle parenthesies
r++†r,+jsX        r-+†r.+jXifr/+†r0+jsjƆr1+j©jî†r2+hŒXchr3+†r4+jsjƆr5+htj†r6+htj†r7+jsjƆr8+jÖjú†r9+jÖjî†r:+jÖjú†r;+jsjƆr<+htj††r=+htj††r>+jsjƆr?+hŒXchr@+†rA+jsjƆrB+htj†rC+htj†rD+jsjƆrE+jÖjú†rF+jÖj+†rG+jÖjú†rH+jsjƆrI+htj††rJ+htj††rK+jsjƆrL+hŒXchrM+†rN+jsjƆrO+htj†rP+htj†rQ+jsjƆrR+jÖjú†rS+jÖj†rT+jÖjú†rU+jsjƆrV+htj††rW+htj††rX+jsjƆrY+hŒXchrZ+†r[+jsjƆr\+htj†r]+htj†r^+jsjƆr_+jÖjú†r`+jÖj…†ra+jÖjú†rb+j©j†rc+jsj»†rd+jsX
          re+†rf+j©jÞ†rg+jsj»†rh+jsX            ri+†rj+jXifrk+†rl+jsjƆrm+j©jî†rn+hŒXchro+†rp+jsjƆrq+htj†rr+htj†rs+jsjƆrt+jÖjú†ru+jÖjî†rv+jÖjú†rw+jsjƆrx+htj††ry+htj††rz+jsjƆr{+hŒXchr|+†r}+jsjƆr~+htj†r+htj†r€+jsjƆr+jÖjú†r‚+jÖj+†rƒ+jÖjú†r„+j©j†r…+jsj»†r†+jsX              r‡+†rˆ+j©jÞ†r‰+jsj»†rŠ+jsX                r‹+†rŒ+jXifr+†rŽ+jsjƆr+j©jî†r+hŒX
parenDepthr‘+†r’+jsjƆr“+htj†r”+htj†r•+jsjƆr–+jŸj†r—+j©j†r˜+jsj»†r™+jsX                  rš+†r›+j©jÞ†rœ+jsj»†r+jsX                    rž+†rŸ+hŒXparenStatementStackr +†r¡+htjô†r¢+htj	†r£+hŒX	push_backr¤+†r¥+j©jî†r¦+hŒX
isInStatementr§+†r¨+j©j†r©+j©jÔ†rª+jsj»†r«+jsX                    r¬+†r­+hŒX
isInStatementr®+†r¯+jsjƆr°+htj†r±+jsjƆr²+jEXtruer³+†r´+j©jÔ†rµ+jsj»†r¶+jsX                  r·+†r¸+j©j†r¹+jsj»†rº+jsX                r»+†r¼+hŒX
parenDepthr½+†r¾+htjΆr¿+htjΆrÀ+j©jÔ†rÁ+jsj»†rÂ+jsj»†rÃ+jsX                rÄ+†rÅ+hŒXinStatementIndentStackSizeStackrÆ+†rÇ+htjô†rÈ+htj	†rÉ+hŒX	push_backrÊ+†rË+j©jî†rÌ+hŒXinStatementIndentStackrÍ+†rÎ+htjô†rÏ+htj	†rÐ+hŒXsizerÑ+†rÒ+j©jî†rÓ+j©j†rÔ+j©j†rÕ+j©jÔ†rÖ+jsj»†r×+jsj»†rØ+jsX                rÙ+†rÚ+jXifrÛ+†rÜ+jsjƆrÝ+j©jî†rÞ+hŒX
currentHeaderrß+†rà+jsjƆrá+htj:†râ+htj†rã+jsjƆrä+jEXNULLrå+†ræ+j©j†rç+jsj»†rè+jsX                  ré+†rê+hŒXregisterInStatementIndentrë+†rì+j©jî†rí+hŒXlinerî+†rï+j©jù†rð+jsjƆrñ+hŒjÀ†rò+j©jù†ró+jsjƆrô+hŒX
spaceTabCountrõ+†rö+j©jù†r÷+jsjƆrø+hŒXminConditionalIndentrù+†rú+hX/*indentLength*2*/rû+†rü+j©jù†rý+jsjƆrþ+jEXtruerÿ+†r,j©j†r,j©jÔ†r,jsj»†r,jsX                r,†r,jXelser,†r,jsj»†r,jsX                  r	,†r
,jtXregisterInStatementIndentr,†r,j©jî†r
,hŒXliner,†r,j©jù†r,jsjƆr,hŒjÀ†r,j©jù†r,jsjƆr,hŒX
spaceTabCountr,†r,j©jù†r,jsjƆr,jŸj†r,j©jù†r,jsjƆr,jEXtruer,†r,j©j†r,j©jÔ†r,jsj»†r ,jsX              r!,†r",j©j†r#,jsj»†r$,jsX            r%,†r&,jXelser',†r(,jsjƆr),jXifr*,†r+,jsjƆr,,j©jî†r-,hŒXchr.,†r/,jsjƆr0,htj†r1,htj†r2,jsjƆr3,jÖjú†r4,jÖj†r5,jÖjú†r6,jsjƆr7,htj††r8,htj††r9,jsjƆr:,hŒXchr;,†r<,jsjƆr=,htj†r>,htj†r?,jsjƆr@,jÖjú†rA,jÖj…†rB,jÖjú†rC,j©j†rD,jsj»†rE,jsX              rF,†rG,j©jÞ†rH,jsj»†rI,jsX                rJ,†rK,hŒX
parenDepthrL,†rM,htjô†rN,htjô†rO,j©jÔ†rP,jsj»†rQ,jsX                rR,†rS,jXifrT,†rU,jsjƆrV,j©jî†rW,hŒX
parenDepthrX,†rY,jsjƆrZ,htj†r[,htj†r\,jsjƆr],jŸj†r^,j©j†r_,jsj»†r`,jsX                  ra,†rb,j©jÞ†rc,jsj»†rd,jsX                    re,†rf,hŒX
isInStatementrg,†rh,jsjƆri,htj†rj,jsjƆrk,hŒXparenStatementStackrl,†rm,htjô†rn,htj	†ro,hŒXbackrp,†rq,j©jî†rr,j©j†rs,j©jÔ†rt,jsj»†ru,jsX                    rv,†rw,hŒXparenStatementStackrx,†ry,htjô†rz,htj	†r{,hŒXpop_backr|,†r},j©jî†r~,j©j†r,j©jÔ†r€,jsj»†r,jsX                    r‚,†rƒ,hŒXchr„,†r…,jsjƆr†,htj†r‡,jsjƆrˆ,jÖjú†r‰,jÖjƆrŠ,jÖjú†r‹,j©jÔ†rŒ,jsj»†r,jsj»†rŽ,jsX                    r,†r,hŒXisInConditionalr‘,†r’,jsjƆr“,htj†r”,jsjƆr•,jEXfalser–,†r—,j©jÔ†r˜,jsj»†r™,jsX                  rš,†r›,j©j†rœ,jsj»†r,jsj»†rž,jsX                rŸ,†r ,jXifr¡,†r¢,jsjƆr£,j©jî†r¤,htj:†r¥,hŒXinStatementIndentStackSizeStackr¦,†r§,htjô†r¨,htj	†r©,hŒXemptyrª,†r«,j©jî†r¬,j©j†r­,j©j†r®,jsj»†r¯,jsX                  r°,†r±,j©jÞ†r²,jsj»†r³,jsX                    r´,†rµ,j-Xunsignedr¶,†r·,jsjƆr¸,j-Xintr¹,†rº,jsjƆr»,hŒXpreviousIndentStackSizer¼,†r½,jsjƆr¾,htj†r¿,jsjƆrÀ,hŒXinStatementIndentStackSizeStackrÁ,†rÂ,htjô†rÃ,htj	†rÄ,hŒXbackrÅ,†rÆ,j©jî†rÇ,j©j†rÈ,j©jÔ†rÉ,jsj»†rÊ,jsX                    rË,†rÌ,hŒXinStatementIndentStackSizeStackrÍ,†rÎ,htjô†rÏ,htj	†rÐ,hŒXpop_backrÑ,†rÒ,j©jî†rÓ,j©j†rÔ,j©jÔ†rÕ,jsj»†rÖ,jsX                    r×,†rØ,jXwhilerÙ,†rÚ,jsjƆrÛ,j©jî†rÜ,hŒXpreviousIndentStackSizerÝ,†rÞ,jsjƆrß,htj#†rà,jsjƆrá,hŒXinStatementIndentStackrâ,†rã,htjô†rä,htj	†rå,hŒXsizeræ,†rç,j©jî†rè,j©j†ré,j©j†rê,jsj»†rë,jsX                      rì,†rí,hŒXinStatementIndentStackrî,†rï,htjô†rð,htj	†rñ,hŒXpop_backrò,†ró,j©jî†rô,j©j†rõ,j©jÔ†rö,jsj»†r÷,jsj»†rø,jsX                    rù,†rú,jXifrû,†rü,jsjƆrý,j©jî†rþ,htj:†rÿ,hŒXparenIndentStackr-†r-htjô†r-htj	†r-hŒXemptyr-†r-j©jî†r-j©j†r-j©j†r-jsj»†r	-jsX                      r
-†r-j©jÞ†r-jsj»†r
-jsX                        r-†r-j-Xintr-†r-jsjƆr-hŒXpoppedIndentr-†r-jsjƆr-htj†r-jsjƆr-hŒXparenIndentStackr-†r-htjô†r-htj	†r-hŒXbackr-†r-j©jî†r-j©j†r-j©jÔ†r -jsj»†r!-jsX                        r"-†r#-hŒXparenIndentStackr$-†r%-htjô†r&-htj	†r'-hŒXpop_backr(-†r)-j©jî†r*-j©j†r+-j©jÔ†r,-jsj»†r--jsj»†r.-jsX                        r/-†r0-jXifr1-†r2-jsjƆr3-j©jî†r4-hŒjÀ†r5-jsjƆr6-htj†r7-htj†r8-jsjƆr9-jŸj†r:-j©j†r;-jsj»†r<-jsX                          r=-†r>-hŒX
spaceTabCountr?-†r@-jsjƆrA-htj†rB-jsjƆrC-hŒXpoppedIndentrD-†rE-j©jÔ†rF-jsj»†rG-jsX                      rH-†rI-j©j†rJ-jsj»†rK-jsX                  rL-†rM-j©j†rN-jsj»†rO-jsX              rP-†rQ-j©j†rR-jsj»†rS-jsj»†rT-jsX            rU-†rV-jXcontinuerW-†rX-j©jÔ†rY-jsj»†rZ-jsX
          r[-†r\-j©j†r]-jsj»†r^-jsj»†r_-jsj»†r`-jsX        ra-†rb-jXifrc-†rd-jsjƆre-j©jî†rf-hŒXchrg-†rh-jsjƆri-htj†rj-htj†rk-jsjƆrl-jÖjú†rm-jÖjÞ†rn-jÖjú†ro-j©j†rp-jsj»†rq-jsX
          rr-†rs-j©jÞ†rt-jsj»†ru-jsX            rv-†rw-j-Xboolrx-†ry-jsjƆrz-hŒX
isBlockOpenerr{-†r|-jsjƆr}-htj†r~-jsjƆr-jEXfalser€-†r-j©jÔ†r‚-jsj»†rƒ-jsj»†r„-jsX            r…-†r†-h.XC// first, check if '{' is a block-opener or an static-array opener
r‡-†rˆ-jsX            r‰-†rŠ-hŒX
isBlockOpenerr‹-†rŒ-jsjƆr-htj†rŽ-jsjƆr-j©jî†r-jsjƆr‘-j©jî†r’-hŒXprevNonSpaceChr“-†r”-jsjƆr•-htj†r–-htj†r—-jsjƆr˜-jÖjú†r™-jÖjÞ†rš-jÖjú†r›-jsjƆrœ-htjõ†r-htjõ†rž-jsjƆrŸ-hŒXbracketBlockStateStackr -†r¡-htjô†r¢-htj	†r£-hŒXbackr¤-†r¥-j©jî†r¦-j©j†r§-j©j†r¨-jsj»†r©-jsX                              rª-†r«-htj††r¬-htj††r­-jsjƆr®-hŒXprevNonSpaceChr¯-†r°-jsjƆr±-htj†r²-htj†r³-e(jsjƆr´-jÖjú†rµ-jÖj†r¶-jÖjú†r·-jsj»†r¸-jsX                              r¹-†rº-htj††r»-htj††r¼-jsjƆr½-hŒXprevNonSpaceChr¾-†r¿-jsjƆrÀ-htj†rÁ-htj†rÂ-jsjƆrÃ-jÖjú†rÄ-jÖj†rÅ-jÖjú†rÆ-jsj»†rÇ-jsX                              rÈ-†rÉ-htj††rÊ-htj††rË-jsjƆrÌ-hŒXprevNonSpaceChrÍ-†rÎ-jsjƆrÏ-htj†rÐ-htj†rÑ-jsjƆrÒ-jÖjú†rÓ-jÖjÔ†rÔ-jÖjú†rÕ-jsj»†rÖ-jsX                              r×-†rØ-htj††rÙ-htj††rÚ-jsjƆrÛ-hŒXisInClassHeaderrÜ-†rÝ-jsj»†rÞ-jsX                              rß-†rà-htj††rá-htj††râ-jsjƆrã-hŒX
isBlockOpenerrä-†rå-jsj»†ræ-jsX                              rç-†rè-htj††ré-htj††rê-jsjƆrë-hŒXisImmediatelyAfterConstrì-†rí-jsj»†rî-jsX                              rï-†rð-htj††rñ-htj††rò-jsjƆró-j©jî†rô-hŒX
isInDefinerõ-†rö-jsjƆr÷-htjõ†rø-htjõ†rù-jsj»†rú-jsX"                                  rû-†rü-j©jî†rý-hŒXprevNonSpaceChrþ-†rÿ-jsjƆr.htj†r.htj†r.jsjƆr.jÖjú†r.jÖjî†r.jÖjú†r.jsj»†r.jsX#                                   r.†r	.htj††r
.htj††r.jsjƆr.hŒXprevNonSpaceChr
.†r.jsjƆr.htj†r.htj†r.jsjƆr.jÖjú†r.jÖX_r.†r.jÖjú†r.jsj»†r.jsX#                                   r.†r.htj††r.htj††r.jsjƆr.hŒXisalnumr.†r.j©jî†r.hŒXprevNonSpaceChr .†r!.j©j†r".j©j†r#.j©j†r$.jsjƆr%.j©j†r&.j©jÔ†r'.jsj»†r(.jsj»†r).jsX            r*.†r+.hŒXisInClassHeaderr,.†r-.jsjƆr..htj†r/.jsjƆr0.jEXfalser1.†r2.j©jÔ†r3.jsj»†r4.jsX            r5.†r6.jXifr7.†r8.jsjƆr9.j©jî†r:.htj:†r;.hŒX
isBlockOpenerr<.†r=.jsjƆr>.htjõ†r?.htjõ†r@.jsjƆrA.hŒX
currentHeaderrB.†rC.jsjƆrD.htj:†rE.htj†rF.jsjƆrG.jEXNULLrH.†rI.j©j†rJ.jsj»†rK.jsX              rL.†rM.j©jÞ†rN.jsj»†rO.jsX                rP.†rQ.jXforrR.†rS.jsjƆrT.j©jî†rU.j-XunsignedrV.†rW.jsjƆrX.j-XintrY.†rZ.jsjƆr[.hŒXnr\.†r].htj†r^.jŸj†r_.j©jÔ†r`.jsjƆra.hŒj\.†rb.jsjƆrc.htj#†rd.jsjƆre.hŒXnonParenHeadersrf.†rg.j©j>†rh.hŒXsizeri.†rj.j©jî†rk.j©j†rl.j©jÔ†rm.jsjƆrn.hŒj\.†ro.htjΆrp.htjΆrq.j©j†rr.jsj»†rs.jsX                  rt.†ru.jXifrv.†rw.jsjƆrx.j©jî†ry.hŒX
currentHeaderrz.†r{.jsjƆr|.htj†r}.htj†r~.jsjƆr.hŒXnonParenHeadersr€.†r.j©j+†r‚.hŒj\.†rƒ.j©j…†r„.j©j†r….jsj»†r†.jsX                    r‡.†rˆ.j©jÞ†r‰.jsj»†rŠ.jsX                      r‹.†rŒ.hŒX
isBlockOpenerr.†rŽ.jsjƆr.htj†r.jsjƆr‘.jEXtruer’.†r“.j©jÔ†r”.jsj»†r•.jsX                      r–.†r—.jXbreakr˜.†r™.j©jÔ†rš.jsj»†r›.jsX                    rœ.†r.j©j†rž.jsj»†rŸ.jsX              r .†r¡.j©j†r¢.jsj»†r£.jsX            r¤.†r¥.hŒXbracketBlockStateStackr¦.†r§.htjô†r¨.htj	†r©.hŒX	push_backrª.†r«.j©jî†r¬.hŒX
isBlockOpenerr­.†r®.j©j†r¯.j©jÔ†r°.jsj»†r±.jsX            r².†r³.jXifr´.†rµ.jsjƆr¶.j©jî†r·.htj:†r¸.hŒX
isBlockOpenerr¹.†rº.j©j†r».jsj»†r¼.jsX              r½.†r¾.j©jÞ†r¿.jsj»†rÀ.jsX                rÁ.†rÂ.hŒXinStatementIndentStackSizeStackrÃ.†rÄ.htjô†rÅ.htj	†rÆ.hŒX	push_backrÇ.†rÈ.j©jî†rÉ.hŒXinStatementIndentStackrÊ.†rË.htjô†rÌ.htj	†rÍ.hŒXsizerÎ.†rÏ.j©jî†rÐ.j©j†rÑ.j©j†rÒ.j©jÔ†rÓ.jsj»†rÔ.jsX                rÕ.†rÖ.hŒXregisterInStatementIndentr×.†rØ.j©jî†rÙ.hŒXlinerÚ.†rÛ.j©jù†rÜ.jsjƆrÝ.hŒjÀ†rÞ.j©jù†rß.jsjƆrà.hŒX
spaceTabCountrá.†râ.j©jù†rã.jsjƆrä.jŸj†rå.j©jù†ræ.jsjƆrç.jEXtruerè.†ré.j©j†rê.j©jÔ†rë.jsj»†rì.jsX                rí.†rî.hŒX
parenDepthrï.†rð.htjΆrñ.htjΆrò.j©jÔ†ró.jsj»†rô.jsX                rõ.†rö.jXifr÷.†rø.jsjƆrù.j©jî†rú.hŒjÀ†rû.jsjƆrü.htj†rý.htj†rþ.jsjƆrÿ.jŸj†r/j©j†r/jsj»†r/jsX                  r/†r/hŒXshouldIndentBrackettedLiner/†r/jsjƆr/htj†r/jsjƆr	/jEXfalser
/†r/j©jÔ†r/jsj»†r
/jsj»†r/jsX                r/†r/jXcontinuer/†r/j©jÔ†r/jsj»†r/jsX              r/†r/j©j†r/jsj»†r/jsj»†r/jsX            r/†r/h.X%// this bracket is a block opener...
r/†r/jsj»†r/jsX            r/†r /htjΆr!/htjΆr"/hŒXlineOpeningBlocksNumr#/†r$/j©jÔ†r%/jsj»†r&/jsj»†r'/jsX            r(/†r)/jXifr*/†r+/jsjƆr,/j©jî†r-/hŒXisInClassHeaderr./†r//j©j†r0/jsj»†r1/jsX              r2/†r3/hŒXisInClassHeaderr4/†r5/jsjƆr6/htj†r7/jsjƆr8/jEXfalser9/†r:/j©jÔ†r;/jsj»†r</jsX            r=/†r>/jXifr?/†r@/jsjƆrA/j©jî†rB/hŒXisInClassHeaderTabrC/†rD/j©j†rE/jsj»†rF/jsX              rG/†rH/j©jÞ†rI/jsj»†rJ/jsX                rK/†rL/hŒXisInClassHeaderTabrM/†rN/jsjƆrO/htj†rP/jsjƆrQ/jEXfalserR/†rS/j©jÔ†rT/jsj»†rU/jsX                rV/†rW/hŒXtabCountrX/†rY/jsjƆrZ/htjô†r[/htj†r\/jsjƆr]/jŸj†r^/j©jÔ†r_/jsj»†r`/jsX              ra/†rb/j©j†rc/jsj»†rd/jsj»†re/jsX            rf/†rg/hŒXblockParenDepthStackrh/†ri/htjô†rj/htj	†rk/hŒX	push_backrl/†rm/j©jî†rn/hŒX
parenDepthro/†rp/j©j†rq/j©jÔ†rr/jsj»†rs/jsX            rt/†ru/hŒXblockStatementStackrv/†rw/htjô†rx/htj	†ry/hŒX	push_backrz/†r{/j©jî†r|/hŒX
isInStatementr}/†r~/j©j†r/j©jÔ†r€/jsj»†r/jsj»†r‚/jsX            rƒ/†r„/hŒXinStatementIndentStackSizeStackr…/†r†/htjô†r‡/htj	†rˆ/hŒX	push_backr‰/†rŠ/j©jî†r‹/hŒXinStatementIndentStackrŒ/†r/htjô†rŽ/htj	†r/hŒXsizer/†r‘/j©jî†r’/j©j†r“/j©j†r”/j©jÔ†r•/jsj»†r–/jsj»†r—/jsX            r˜/†r™/hŒX
blockTabCountrš/†r›/jsjƆrœ/htjΆr/htj†rž/jsjƆrŸ/hŒX
isInStatementr /†r¡/htj̆r¢/jsjƆr£/jŸjĆr¤/jsjƆr¥/htjé†r¦/jsjƆr§/jŸj†r¨/j©jÔ†r©/jsj»†rª/jsX            r«/†r¬/hŒX
parenDepthr­/†r®/jsjƆr¯/htj†r°/jsjƆr±/jŸj†r²/j©jÔ†r³/jsj»†r´/jsX            rµ/†r¶/hŒX
isInStatementr·/†r¸/jsjƆr¹/htj†rº/jsjƆr»/jEXfalser¼/†r½/j©jÔ†r¾/jsj»†r¿/jsj»†rÀ/jsX            rÁ/†rÂ/hŒX
tempStacksrÃ/†rÄ/htjô†rÅ/htj	†rÆ/hŒX	push_backrÇ/†rÈ/j©jî†rÉ/jXnewrÊ/†rË/jsjƆrÌ/hŒXvectorrÍ/†rÎ/htj#†rÏ/jXconstrÐ/†rÑ/jsjƆrÒ/hŒXstringrÓ/†rÔ/htjÿ†rÕ/htj	†rÖ/j©j†r×/j©jÔ†rØ/jsj»†rÙ/jsX            rÚ/†rÛ/hŒXheaderStackrÜ/†rÝ/htjô†rÞ/htj	†rß/hŒX	push_backrà/†rá/j©jî†râ/htjõ†rã/hŒXAS_OPEN_BRACKETrä/†rå/j©j†ræ/j©jÔ†rç/jsj»†rè/jsX            ré/†rê/hŒXlastLineHeaderrë/†rì/jsjƆrí/htj†rî/jsjƆrï/htjõ†rð/hŒXAS_OPEN_BRACKETrñ/†rò/j©jÔ†ró/jsjƆrô/h.X// <------
rõ/†rö/jsj»†r÷/jsX            rø/†rù/jXcontinuerú/†rû/j©jÔ†rü/jsj»†rý/jsX
          rþ/†rÿ/j©j†r0jsj»†r0jsj»†r0jsX        r0†r0h.X%//check if a header has been reached
r0†r0jsX        r0†r0jXifr	0†r
0jsjƆr0j©jî†r0hŒXprevChr
0†r0jsjƆr0htj†r0htj†r0jsjƆr0jÖjú†r0jÖjƆr0jÖjú†r0j©j†r0jsj»†r0jsX
          r0†r0j©jÞ†r0jsj»†r0jsX            r0†r0j-Xboolr0†r0jsjƆr 0hŒXisIndentableHeaderr!0†r"0jsjƆr#0htj†r$0jsjƆr%0jEXtruer&0†r'0j©jÔ†r(0jsj»†r)0jsX            r*0†r+0jXconstr,0†r-0jsjƆr.0hŒXstringr/0†r00jsjƆr10htjÿ†r20hŒX	newHeaderr30†r40jsjƆr50htj†r60jsjƆr70hŒX
findHeaderr80†r90j©jî†r:0hŒXliner;0†r<0j©jù†r=0jsjƆr>0hŒjÀ†r?0j©jù†r@0jsjƆrA0hŒXheadersrB0†rC0j©j†rD0j©jÔ†rE0jsj»†rF0jsX            rG0†rH0jXifrI0†rJ0jsjƆrK0j©jî†rL0hŒX	newHeaderrM0†rN0jsjƆrO0htj:†rP0htj†rQ0jsjƆrR0jEXNULLrS0†rT0j©j†rU0jsj»†rV0jsX              rW0†rX0j©jÞ†rY0jsj»†rZ0jsX                r[0†r\0h.X0// if we reached here, then this is a header...
r]0†r^0jsX                r_0†r`0hŒX
isInHeaderra0†rb0jsjƆrc0htj†rd0jsjƆre0jEXtruerf0†rg0j©jÔ†rh0jsj»†ri0jsj»†rj0jsX                rk0†rl0hŒXvectorrm0†rn0htj#†ro0jXconstrp0†rq0jsjƆrr0hŒXstringrs0†rt0htjÿ†ru0htj	†rv0jsjƆrw0htjÿ†rx0hŒX
lastTempStackry0†rz0j©jÔ†r{0jsj»†r|0jsX                r}0†r~0jXifr0†r€0jsjƆr0j©jî†r‚0hŒX
tempStacksrƒ0†r„0htjô†r…0htj	†r†0hŒXemptyr‡0†rˆ0j©jî†r‰0j©j†rŠ0j©j†r‹0jsj»†rŒ0jsX                  r0†rŽ0hŒX
lastTempStackr0†r0jsjƆr‘0htj†r’0jsjƆr“0jEXNULLr”0†r•0j©jÔ†r–0jsj»†r—0jsX                r˜0†r™0jXelserš0†r›0jsj»†rœ0jsX                  r0†rž0hŒX
lastTempStackrŸ0†r 0jsjƆr¡0htj†r¢0jsjƆr£0hŒX
tempStacksr¤0†r¥0htjô†r¦0htj	†r§0hŒXbackr¨0†r©0j©jî†rª0j©j†r«0j©jÔ†r¬0jsj»†r­0jsj»†r®0jsX                r¯0†r°0h.XJ// if a new block is opened, push a new stack into tempStacks to hold the
r±0†r²0jsX                r³0†r´0h.X,// future list of headers in the new block.
rµ0†r¶0jsj»†r·0jsX                r¸0†r¹0h.X2// take care of the special case: 'else if (...)'
rº0†r»0jsX                r¼0†r½0jXifr¾0†r¿0jsjƆrÀ0j©jî†rÁ0hŒX	newHeaderrÂ0†rÃ0jsjƆrÄ0htj†rÅ0htj†rÆ0jsjƆrÇ0htjõ†rÈ0hŒXAS_IFrÉ0†rÊ0jsjƆrË0htjõ†rÌ0htjõ†rÍ0jsjƆrÎ0hŒXlastLineHeaderrÏ0†rÐ0jsjƆrÑ0htj†rÒ0htj†rÓ0jsjƆrÔ0htjõ†rÕ0hŒXAS_ELSErÖ0†r×0j©j†rØ0jsj»†rÙ0jsX                  rÚ0†rÛ0j©jÞ†rÜ0jsj»†rÝ0jsX                    rÞ0†rß0h.Xv//spaceTabCount += indentLength; // to counter the opposite addition that occurs when the 'if' is registered below...
rà0†rá0jsX                    râ0†rã0hŒXheaderStackrä0†rå0htjô†ræ0htj	†rç0hŒXpop_backrè0†ré0j©jî†rê0j©j†rë0j©jÔ†rì0jsj»†rí0jsX                  rî0†rï0j©j†rð0jsj»†rñ0jsj»†rò0jsX                ró0†rô0h.X// take care of 'else'
rõ0†rö0jsX                r÷0†rø0jXelserù0†rú0jsjƆrû0jXifrü0†rý0jsjƆrþ0j©jî†rÿ0hŒX	newHeaderr1†r1jsjƆr1htj†r1htj†r1jsjƆr1htjõ†r1hŒXAS_ELSEr1†r1j©j†r	1jsj»†r
1jsX                  r1†r1j©jÞ†r
1jsj»†r1jsX                    r1†r1jXifr1†r1jsjƆr1j©jî†r1hŒX
lastTempStackr1†r1jsjƆr1htj:†r1htj†r1jsjƆr1jEXNULLr1†r1j©j†r1jsj»†r1jsX                      r1†r 1j©jÞ†r!1jsj»†r"1jsX                        r#1†r$1j-Xintr%1†r&1jsjƆr'1hŒX	indexOfIfr(1†r)1jsjƆr*1htj†r+1jsjƆr,1hŒXindexOfr-1†r.1j©jî†r/1htjÿ†r01hŒX
lastTempStackr11†r21j©jù†r31jsjƆr41htjõ†r51hŒXAS_IFr61†r71j©j†r81j©jÔ†r91jsjƆr:1h.X// <---
r;1†r<1jsX                        r=1†r>1jXifr?1†r@1jsjƆrA1j©jî†rB1hŒX	indexOfIfrC1†rD1jsjƆrE1htj:†rF1htj†rG1jsjƆrH1htjô†rI1jŸjĆrJ1j©j†rK1jsj»†rL1jsX                          rM1†rN1j©jÞ†rO1jsj»†rP1jsX                            rQ1†rR1h.XC// recreate the header list in headerStack up to the previous 'if'
rS1†rT1jsX                            rU1†rV1h.X8// from the temporary snapshot stored in lastTempStack.
rW1†rX1jsX                            rY1†rZ1j-Xintr[1†r\1jsjƆr]1hŒXrestackSizer^1†r_1jsjƆr`1htj†ra1jsjƆrb1hŒX
lastTempStackrc1†rd1htjô†re1htj	†rf1hŒXsizerg1†rh1j©jî†ri1j©j†rj1jsjƆrk1htjô†rl1jsjƆrm1hŒX	indexOfIfrn1†ro1jsjƆrp1htjô†rq1jsjƆrr1jŸjĆrs1j©jÔ†rt1jsj»†ru1jsX                            rv1†rw1jXforrx1†ry1jsjƆrz1j©jî†r{1j-Xintr|1†r}1jsjƆr~1hŒXrr1†r€1htj†r1jŸj†r‚1j©jÔ†rƒ1jsjƆr„1hŒj1†r…1htj#†r†1hŒXrestackSizer‡1†rˆ1j©jÔ†r‰1jsjƆrŠ1hŒj1†r‹1htjΆrŒ1htjΆr1j©j†rŽ1jsj»†r1jsX                              r1†r‘1j©jÞ†r’1jsj»†r“1jsX                                 r”1†r•1hŒXheaderStackr–1†r—1htjô†r˜1htj	†r™1hŒX	push_backrš1†r›1j©jî†rœ1hŒX
lastTempStackr1†rž1htjô†rŸ1htj	†r 1hŒXbackr¡1†r¢1j©jî†r£1j©j†r¤1j©j†r¥1j©jÔ†r¦1jsj»†r§1jsX                                 r¨1†r©1hŒX
lastTempStackrª1†r«1htjô†r¬1htj	†r­1hŒXpop_backr®1†r¯1j©jî†r°1j©j†r±1j©jÔ†r²1jsj»†r³1jsX                              r´1†rµ1j©j†r¶1jsj»†r·1jsX                            r¸1†r¹1jXifrº1†r»1jsjƆr¼1j©jî†r½1htj:†r¾1hŒXclosingBracketReachedr¿1†rÀ1j©j†rÁ1jsj»†rÂ1jsX                              rÃ1†rÄ1hŒXtabCountrÅ1†rÆ1jsjƆrÇ1htjΆrÈ1htj†rÉ1jsjƆrÊ1hŒXrestackSizerË1†rÌ1j©jÔ†rÍ1jsj»†rÎ1jsX                          rÏ1†rÐ1j©j†rÑ1jsj»†rÒ1jsX                        rÓ1†rÔ1hX-/*
                         * If the above if is not true, i.e. no 'if' before the 'else',
                         * then nothing beautiful will come out of this...
                         * I should think about inserting an Exception here to notify the caller of this...
                         */rÕ1†rÖ1jsj»†r×1jsX                      rØ1†rÙ1j©j†rÚ1jsj»†rÛ1jsX                  rÜ1†rÝ1j©j†rÞ1jsj»†rß1jsj»†rà1jsX                rá1†râ1h.X+// check if 'while' closes a previous 'do'
rã1†rä1jsX                rå1†ræ1jXelserç1†rè1jsjƆré1jXifrê1†rë1jsjƆrì1j©jî†rí1hŒX	newHeaderrî1†rï1jsjƆrð1htj†rñ1htj†rò1jsjƆró1htjõ†rô1hŒXAS_WHILErõ1†rö1j©j†r÷1jsj»†rø1jsX                  rù1†rú1j©jÞ†rû1jsj»†rü1jsX                    rý1†rþ1jXifrÿ1†r2jsjƆr2j©jî†r2hŒX
lastTempStackr2†r2jsjƆr2htj:†r2htj†r2jsjƆr2jEXNULLr	2†r
2j©j†r2jsj»†r2jsX                      r
2†r2j©jÞ†r2jsj»†r2jsX                        r2†r2j-Xintr2†r2jsjƆr2hŒX	indexOfDor2†r2jsjƆr2htj†r2jsjƆr2hŒXindexOfr2†r2j©jî†r2htjÿ†r2hŒX
lastTempStackr2†r 2j©jù†r!2jsjƆr"2htjõ†r#2hŒXAS_DOr$2†r%2j©j†r&2j©jÔ†r'2jsjƆr(2h.X// <---
r)2†r*2jsX                        r+2†r,2jXifr-2†r.2jsjƆr/2j©jî†r02hŒX	indexOfDor12†r22jsjƆr32htj:†r42htj†r52jsjƆr62htjô†r72jŸjĆr82j©j†r92jsj»†r:2jsX                          r;2†r<2j©jÞ†r=2jsj»†r>2jsX                            r?2†r@2h.XC// recreate the header list in headerStack up to the previous 'do'
rA2†rB2jsX                            rC2†rD2h.X8// from the temporary snapshot stored in lastTempStack.
rE2†rF2jsX                            rG2†rH2j-XintrI2†rJ2jsjƆrK2hŒXrestackSizerL2†rM2jsjƆrN2htj†rO2jsjƆrP2hŒX
lastTempStackrQ2†rR2htjô†rS2htj	†rT2hŒXsizerU2†rV2j©jî†rW2j©j†rX2jsjƆrY2htjô†rZ2jsjƆr[2hŒX	indexOfDor\2†r]2jsjƆr^2htjô†r_2jsjƆr`2jŸjĆra2j©jÔ†rb2jsj»†rc2jsX                            rd2†re2jXforrf2†rg2jsjƆrh2j©jî†ri2j-Xintrj2†rk2jsjƆrl2hŒj1†rm2htj†rn2jŸj†ro2j©jÔ†rp2jsjƆrq2hŒj1†rr2htj#†rs2hŒXrestackSizert2†ru2j©jÔ†rv2jsjƆrw2hŒj1†rx2htjΆry2htjΆrz2j©j†r{2jsj»†r|2jsX                              r}2†r~2j©jÞ†r2jsj»†r€2jsX                                 r2†r‚2hŒXheaderStackrƒ2†r„2htjô†r…2htj	†r†2hŒX	push_backr‡2†rˆ2j©jî†r‰2hŒX
lastTempStackrŠ2†r‹2htjô†rŒ2htj	†r2hŒXbackrŽ2†r2j©jî†r2j©j†r‘2j©j†r’2j©jÔ†r“2jsj»†r”2jsX                                 r•2†r–2hŒX
lastTempStackr—2†r˜2htjô†r™2htj	†rš2hŒXpop_backr›2†rœ2j©jî†r2j©j†rž2j©jÔ†rŸ2jsj»†r 2jsX                              r¡2†r¢2j©j†r£2jsj»†r¤2jsX                            r¥2†r¦2jXifr§2†r¨2jsjƆr©2j©jî†rª2htj:†r«2hŒXclosingBracketReachedr¬2†r­2j©j†r®2jsj»†r¯2jsX                              r°2†r±2hŒXtabCountr²2†r³2jsjƆr´2htjΆrµ2htj†r¶2jsjƆr·2hŒXrestackSizer¸2†r¹2j©jÔ†rº2jsj»†r»2jsX                          r¼2†r½2j©j†r¾2jsj»†r¿2jsX                      rÀ2†rÁ2j©j†rÂ2jsj»†rÃ2jsX                  rÄ2†rÅ2j©j†rÆ2jsj»†rÇ2jsX                rÈ2†rÉ2h.X7// check if 'catch' closes a previous 'try' or 'catch'
rÊ2†rË2jsX                rÌ2†rÍ2jXelserÎ2†rÏ2jsjƆrÐ2jXifrÑ2†rÒ2jsjƆrÓ2j©jî†rÔ2hŒX	newHeaderrÕ2†rÖ2jsjƆr×2htj†rØ2htj†rÙ2jsjƆrÚ2htjõ†rÛ2hŒXAS_CATCHrÜ2†rÝ2jsjƆrÞ2e(htj††rß2htj††rà2jsjƆrá2hŒX	newHeaderrâ2†rã2jsjƆrä2htj†rå2htj†ræ2jsjƆrç2htjõ†rè2hŒX
AS_FINALLYré2†rê2j©j†rë2jsj»†rì2jsX                  rí2†rî2j©jÞ†rï2jsj»†rð2jsX                    rñ2†rò2jXifró2†rô2jsjƆrõ2j©jî†rö2hŒX
lastTempStackr÷2†rø2jsjƆrù2htj:†rú2htj†rû2jsjƆrü2jEXNULLrý2†rþ2j©j†rÿ2jsj»†r3jsX                      r3†r3j©jÞ†r3jsj»†r3jsX                        r3†r3j-Xintr3†r3jsjƆr	3hŒX
indexOfTryr
3†r3jsjƆr3htj†r
3jsjƆr3hŒXindexOfr3†r3j©jî†r3htjÿ†r3hŒX
lastTempStackr3†r3j©jù†r3jsjƆr3htjõ†r3hŒXAS_TRYr3†r3j©j†r3j©jÔ†r3jsj»†r3jsX                        r3†r3jXifr3†r 3jsjƆr!3j©jî†r"3hŒX
indexOfTryr#3†r$3jsjƆr%3htj†r&3htj†r'3jsjƆr(3htjô†r)3jŸjĆr*3j©j†r+3jsj»†r,3jsX                          r-3†r.3hŒX
indexOfTryr/3†r03jsjƆr13htj†r23jsjƆr33hŒXindexOfr43†r53j©jî†r63htjÿ†r73hŒX
lastTempStackr83†r93j©jù†r:3jsjƆr;3htjõ†r<3hŒXAS_CATCHr=3†r>3j©j†r?3j©jÔ†r@3jsj»†rA3jsX                        rB3†rC3jXifrD3†rE3jsjƆrF3j©jî†rG3hŒX
indexOfTryrH3†rI3jsjƆrJ3htj:†rK3htj†rL3jsjƆrM3htjô†rN3jŸjĆrO3j©j†rP3jsj»†rQ3jsX                          rR3†rS3j©jÞ†rT3jsj»†rU3jsX                            rV3†rW3h.XD// recreate the header list in headerStack up to the previous 'try'
rX3†rY3jsX                            rZ3†r[3h.X8// from the temporary snapshot stored in lastTempStack.
r\3†r]3jsX                            r^3†r_3j-Xintr`3†ra3jsjƆrb3hŒXrestackSizerc3†rd3jsjƆre3htj†rf3jsjƆrg3hŒX
lastTempStackrh3†ri3htjô†rj3htj	†rk3hŒXsizerl3†rm3j©jî†rn3j©j†ro3jsjƆrp3htjô†rq3jsjƆrr3hŒX
indexOfTryrs3†rt3jsjƆru3htjô†rv3jsjƆrw3jŸjĆrx3j©jÔ†ry3jsj»†rz3jsX                            r{3†r|3jXforr}3†r~3jsjƆr3j©jî†r€3j-Xintr3†r‚3jsjƆrƒ3hŒj1†r„3htj†r…3jŸj†r†3j©jÔ†r‡3jsjƆrˆ3hŒj1†r‰3htj#†rŠ3hŒXrestackSizer‹3†rŒ3j©jÔ†r3jsjƆrŽ3hŒj1†r3htjΆr3htjΆr‘3j©j†r’3jsj»†r“3jsX                              r”3†r•3j©jÞ†r–3jsj»†r—3jsX                                 r˜3†r™3hŒXheaderStackrš3†r›3htjô†rœ3htj	†r3hŒX	push_backrž3†rŸ3j©jî†r 3hŒX
lastTempStackr¡3†r¢3htjô†r£3htj	†r¤3hŒXbackr¥3†r¦3j©jî†r§3j©j†r¨3j©j†r©3j©jÔ†rª3jsj»†r«3jsX                                 r¬3†r­3hŒX
lastTempStackr®3†r¯3htjô†r°3htj	†r±3hŒXpop_backr²3†r³3j©jî†r´3j©j†rµ3j©jÔ†r¶3jsj»†r·3jsX                              r¸3†r¹3j©j†rº3jsj»†r»3jsj»†r¼3jsX                            r½3†r¾3jXifr¿3†rÀ3jsjƆrÁ3j©jî†rÂ3htj:†rÃ3hŒXclosingBracketReachedrÄ3†rÅ3j©j†rÆ3jsj»†rÇ3jsX                              rÈ3†rÉ3hŒXtabCountrÊ3†rË3jsjƆrÌ3htjΆrÍ3htj†rÎ3jsjƆrÏ3hŒXrestackSizerÐ3†rÑ3j©jÔ†rÒ3jsj»†rÓ3jsX                          rÔ3†rÕ3j©j†rÖ3jsj»†r×3jsX                      rØ3†rÙ3j©j†rÚ3jsj»†rÛ3jsX                  rÜ3†rÝ3j©j†rÞ3jsj»†rß3jsX                rà3†rá3jXelserâ3†rã3jsjƆrä3jXifrå3†ræ3jsjƆrç3j©jî†rè3hŒX	newHeaderré3†rê3jsjƆrë3htj†rì3htj†rí3jsjƆrî3htjõ†rï3hŒXAS_CASErð3†rñ3j©j†rò3jsj»†ró3jsX                  rô3†rõ3j©jÞ†rö3jsj»†r÷3jsX                    rø3†rù3hŒXisInCaserú3†rû3jsjƆrü3htj†rý3jsjƆrþ3jEXtruerÿ3†r4j©jÔ†r4jsj»†r4jsX                    r4†r4jXifr4†r4jsjƆr4j©jî†r4htj:†r	4hŒX
caseIndentr
4†r4j©j†r4jsj»†r
4jsX                      r4†r4htjô†r4htjô†r4hŒXtabCountr4†r4j©jÔ†r4jsj»†r4jsX                  r4†r4j©j†r4jsj»†r4jsX                r4†r4jXelser4†r4jsjƆr4jXifr4†r 4j©jî†r!4hŒX	newHeaderr"4†r#4jsjƆr$4htj†r%4htj†r&4jsjƆr'4htjõ†r(4hŒX
AS_DEFAULTr)4†r*4j©j†r+4jsj»†r,4jsX                  r-4†r.4j©jÞ†r/4jsj»†r04jsX                    r14†r24hŒXisInCaser34†r44jsjƆr54htj†r64jsjƆr74jEXtruer84†r94j©jÔ†r:4jsj»†r;4jsX                    r<4†r=4jXifr>4†r?4jsjƆr@4j©jî†rA4htj:†rB4hŒX
caseIndentrC4†rD4j©j†rE4jsj»†rF4jsX                      rG4†rH4htjô†rI4htjô†rJ4hŒXtabCountrK4†rL4j©jÔ†rM4jsj»†rN4jsX                  rO4†rP4j©j†rQ4jsj»†rR4jsX                rS4†rT4jXelserU4†rV4jsjƆrW4jXifrX4†rY4jsjƆrZ4j©jî†r[4hŒX	newHeaderr\4†r]4jsjƆr^4htj†r_4htj†r`4jsjƆra4htjõ†rb4hŒX	AS_PUBLICrc4†rd4jsjƆre4htj††rf4htj††rg4jsjƆrh4hŒX	newHeaderri4†rj4jsjƆrk4htj†rl4htj†rm4jsjƆrn4htjõ†ro4hŒXAS_PROTECTEDrp4†rq4jsjƆrr4htj††rs4htj††rt4jsjƆru4hŒX	newHeaderrv4†rw4jsjƆrx4htj†ry4htj†rz4jsjƆr{4htjõ†r|4hŒX
AS_PRIVATEr}4†r~4j©j†r4jsj»†r€4jsX                  r4†r‚4j©jÞ†rƒ4jsj»†r„4jsX                    r…4†r†4jXifr‡4†rˆ4jsjƆr‰4j©jî†rŠ4hŒXisCStyler‹4†rŒ4jsjƆr4htjõ†rŽ4htjõ†r4jsjƆr4htj:†r‘4hŒXisInClassHeaderr’4†r“4j©j†r”4jsj»†r•4jsX                      r–4†r—4htjô†r˜4htjô†r™4hŒXtabCountrš4†r›4j©jÔ†rœ4jsj»†r4jsX                    rž4†rŸ4hŒXisIndentableHeaderr 4†r¡4jsjƆr¢4htj†r£4jsjƆr¤4jEXfalser¥4†r¦4j©jÔ†r§4jsj»†r¨4jsX                  r©4†rª4j©j†r«4jsj»†r¬4jsX                r­4†r®4h.XC//else if ((newHeader == &STATIC || newHeader == &SYNCHRONIZED) &&
r¯4†r°4jsX                r±4†r²4h.X$//         !headerStack->empty() &&
r³4†r´4jsX                rµ4†r¶4h.XU//         (headerStack->back() == &STATIC || headerStack->back() == &SYNCHRONIZED))
r·4†r¸4jsX                r¹4†rº4h.X//{
r»4†r¼4jsX                r½4†r¾4h.X"//    isIndentableHeader = false;
r¿4†rÀ4jsX                rÁ4†rÂ4h.X//}
rÃ4†rÄ4jsX                rÅ4†rÆ4jXelserÇ4†rÈ4jsjƆrÉ4jXifrÊ4†rË4jsjƆrÌ4j©jî†rÍ4hŒX	newHeaderrÎ4†rÏ4jsjƆrÐ4htj†rÑ4htj†rÒ4jsjƆrÓ4htjõ†rÔ4hŒX	AS_STATICrÕ4†rÖ4jsj»†r×4jsX                         rØ4†rÙ4htj††rÚ4htj††rÛ4jsjƆrÜ4hŒX	newHeaderrÝ4†rÞ4jsjƆrß4htj†rà4htj†rá4jsjƆrâ4htjõ†rã4hŒXAS_SYNCHRONIZEDrä4†rå4jsj»†ræ4jsX                         rç4†rè4htj††ré4htj††rê4jsjƆrë4j©jî†rì4hŒX	newHeaderrí4†rî4jsjƆrï4htj†rð4htj†rñ4jsjƆrò4htjõ†ró4hŒXAS_CONSTrô4†rõ4jsjƆrö4htjõ†r÷4htjõ†rø4jsjƆrù4hŒXisCStylerú4†rû4j©j†rü4j©j†rý4jsj»†rþ4jsX                  rÿ4†r5j©jÞ†r5jsj»†r5jsX                    r5†r5jXifr5†r5jsjƆr5j©jî†r5htj:†r	5hŒXheaderStackr
5†r5htjô†r5htj	†r
5hŒXemptyr5†r5j©jî†r5j©j†r5jsjƆr5htjõ†r5htjõ†r5jsj»†r5jsX                        r5†r5j©jî†r5hŒXheaderStackr5†r5htjô†r5htj	†r5hŒXbackr5†r5j©jî†r5j©j†r 5jsjƆr!5htj†r"5htj†r#5jsjƆr$5htjõ†r%5hŒX	AS_STATICr&5†r'5jsj»†r(5jsX                         r)5†r*5htj††r+5htj††r,5jsjƆr-5hŒXheaderStackr.5†r/5htjô†r05htj	†r15hŒXbackr25†r35j©jî†r45j©j†r55jsjƆr65htj†r75htj†r85jsjƆr95htjõ†r:5hŒXAS_SYNCHRONIZEDr;5†r<5jsj»†r=5jsX                         r>5†r?5htj††r@5htj††rA5jsjƆrB5hŒXheaderStackrC5†rD5htjô†rE5htj	†rF5hŒXbackrG5†rH5j©jî†rI5j©j†rJ5jsjƆrK5htj†rL5htj†rM5jsjƆrN5htjõ†rO5hŒXAS_CONSTrP5†rQ5j©j†rR5j©j†rS5jsj»†rT5jsX                      rU5†rV5j©jÞ†rW5jsj»†rX5jsX                        rY5†rZ5hŒXisIndentableHeaderr[5†r\5jsjƆr]5htj†r^5jsjƆr_5jEXfalser`5†ra5j©jÔ†rb5jsj»†rc5jsX                      rd5†re5j©j†rf5jsj»†rg5jsX                    rh5†ri5jXelserj5†rk5jsj»†rl5jsX                      rm5†rn5j©jÞ†ro5jsj»†rp5jsX                        rq5†rr5hŒXisIndentableHeaderrs5†rt5jsjƆru5htj†rv5jsjƆrw5jEXfalserx5†ry5j©jÔ†rz5jsj»†r{5jsX                        r|5†r}5hŒXprobationHeaderr~5†r5jsjƆr€5htj†r5jsjƆr‚5hŒX	newHeaderrƒ5†r„5j©jÔ†r…5jsj»†r†5jsX                      r‡5†rˆ5j©j†r‰5jsj»†rŠ5jsX                  r‹5†rŒ5j©j†r5jsj»†rŽ5jsX                r5†r5jXelser‘5†r’5jsjƆr“5jXifr”5†r•5jsjƆr–5j©jî†r—5hŒX	newHeaderr˜5†r™5jsjƆrš5htj†r›5htj†rœ5jsjƆr5htjõ†rž5hŒXAS_CONSTrŸ5†r 5j©j†r¡5jsj»†r¢5jsX                  r£5†r¤5j©jÞ†r¥5jsj»†r¦5jsX                    r§5†r¨5h.X/// this will be entered only if NOT in C style
r©5†rª5jsX                    r«5†r¬5h.XH// since otherwise the CONST would be found to be a probstion header...
r­5†r®5jsj»†r¯5jsX                    r°5†r±5h.X//if (isCStyle)
r²5†r³5jsX                    r´5†rµ5h.X//  isInConst = true;
r¶5†r·5jsX                    r¸5†r¹5hŒXisIndentableHeaderrº5†r»5jsjƆr¼5htj†r½5jsjƆr¾5jEXfalser¿5†rÀ5j©jÔ†rÁ5jsj»†rÂ5jsX                  rÃ5†rÄ5j©j†rÅ5jsj»†rÆ5jsX                rÇ5†rÈ5hX=/*
                              else if (newHeader == &OPERATOR)
                              {
                                  if (isCStyle)
                                      isInOperator = true;
                                  isIndentableHeader = false;
                              }
                */rÉ5†rÊ5jsj»†rË5jsX                rÌ5†rÍ5jXelserÎ5†rÏ5jsjƆrÐ5jXifrÑ5†rÒ5jsjƆrÓ5j©jî†rÔ5hŒX	newHeaderrÕ5†rÖ5jsjƆr×5htj†rØ5htj†rÙ5jsjƆrÚ5htjõ†rÛ5hŒXAS_TEMPLATErÜ5†rÝ5j©j†rÞ5jsj»†rß5jsX                  rà5†rá5j©jÞ†râ5jsj»†rã5jsX                    rä5†rå5jXifræ5†rç5jsjƆrè5j©jî†ré5hŒXisCStylerê5†rë5j©j†rì5jsj»†rí5jsX                      rî5†rï5hŒXisInTemplaterð5†rñ5jsjƆrò5htj†ró5jsjƆrô5jEXtruerõ5†rö5j©jÔ†r÷5jsj»†rø5jsX                    rù5†rú5hŒXisIndentableHeaderrû5†rü5jsjƆrý5htj†rþ5jsjƆrÿ5jEXfalser6†r6j©jÔ†r6jsj»†r6jsX                  r6†r6j©j†r6jsj»†r6jsj»†r6jsj»†r	6jsX                r
6†r6jXifr6†r
6jsjƆr6j©jî†r6hŒXisIndentableHeaderr6†r6j©j†r6jsj»†r6jsX                  r6†r6j©jÞ†r6jsj»†r6jsX                    r6†r6h.X
// 3.2.99
r6†r6jsX                    r6†r6h.X//spaceTabCount-=indentLength;
r6†r6jsX                    r 6†r!6hŒXheaderStackr"6†r#6htjô†r$6htj	†r%6hŒX	push_backr&6†r'6j©jî†r(6hŒX	newHeaderr)6†r*6j©j†r+6j©jÔ†r,6jsj»†r-6jsX                    r.6†r/6hŒX
isInStatementr06†r16jsjƆr26htj†r36jsjƆr46jEXfalser56†r66j©jÔ†r76jsj»†r86jsX                    r96†r:6jXifr;6†r<6jsjƆr=6j©jî†r>6hŒXindexOfr?6†r@6j©jî†rA6hŒXnonParenHeadersrB6†rC6j©jù†rD6jsjƆrE6hŒX	newHeaderrF6†rG6j©j†rH6jsjƆrI6htj†rJ6htj†rK6jsjƆrL6htjô†rM6jŸjĆrN6j©j†rO6jsj»†rP6jsX                      rQ6†rR6j©jÞ†rS6jsj»†rT6jsX                        rU6†rV6hŒXisInConditionalrW6†rX6jsjƆrY6htj†rZ6jsjƆr[6jEXtruer\6†r]6j©jÔ†r^6jsj»†r_6jsX                      r`6†ra6j©j†rb6jsj»†rc6jsX                    rd6†re6hŒXlastLineHeaderrf6†rg6jsjƆrh6htj†ri6jsjƆrj6hŒX	newHeaderrk6†rl6j©jÔ†rm6jsj»†rn6jsX                  ro6†rp6j©j†rq6jsj»†rr6jsX                rs6†rt6jXelseru6†rv6jsj»†rw6jsX                  rx6†ry6hŒX
isInHeaderrz6†r{6jsjƆr|6htj†r}6jsjƆr~6jEXfalser6†r€6j©jÔ†r6jsj»†r‚6jsj»†rƒ6jsX                r„6†r…6h.X//lastLineHeader = newHeader;
r†6†r‡6jsj»†rˆ6jsX                r‰6†rŠ6hŒX	outBufferr‹6†rŒ6j©j>†r6hŒXappendrŽ6†r6j©jî†r6hŒX	newHeaderr‘6†r’6htjô†r“6htj	†r”6hŒXsubstrr•6†r–6j©jî†r—6jŸjĆr˜6j©j†r™6j©j†rš6j©jÔ†r›6jsj»†rœ6jsX                r6†rž6hŒjÀ†rŸ6jsjƆr 6htjΆr¡6htj†r¢6jsjƆr£6hŒX	newHeaderr¤6†r¥6htjô†r¦6htj	†r§6hŒXlengthr¨6†r©6j©jî†rª6j©j†r«6jsjƆr¬6htjô†r­6jsjƆr®6jŸjĆr¯6j©jÔ†r°6jsj»†r±6jsj»†r²6jsX                r³6†r´6jXcontinuerµ6†r¶6j©jÔ†r·6jsj»†r¸6jsX              r¹6†rº6j©j†r»6jsj»†r¼6jsX
          r½6†r¾6j©j†r¿6jsj»†rÀ6jsj»†rÁ6jsX        rÂ6†rÃ6jXifrÄ6†rÅ6jsjƆrÆ6j©jî†rÇ6hŒXisCStylerÈ6†rÉ6jsjƆrÊ6htjõ†rË6htjõ†rÌ6jsjƆrÍ6htj:†rÎ6hŒXisalpharÏ6†rÐ6j©jî†rÑ6hŒXprevChrÒ6†rÓ6j©j†rÔ6jsj»†rÕ6jsX            rÖ6†r×6htjõ†rØ6htjõ†rÙ6jsjƆrÚ6hŒXlinerÛ6†rÜ6j©j>†rÝ6hŒXCOMPARErÞ6†rß6j©jî†rà6hŒjÀ†rá6j©jù†râ6jsjƆrã6jŸX8rä6†rå6j©jù†ræ6jsjƆrç6hŒXAS_OPERATORrè6†ré6j©j†rê6jsjƆrë6htj†rì6htj†rí6jsjƆrî6jŸj†rï6jsjƆrð6htjõ†rñ6htjõ†rò6jsjƆró6htj:†rô6hŒXisalnumrõ6†rö6j©jî†r÷6hŒXlinerø6†rù6j©j+†rú6hŒjÀ†rû6htjΆrü6jŸjä6†rý6j©j…†rþ6j©j†rÿ6j©j†r7jsj»†r7jsX
          r7†r7j©jÞ†r7jsj»†r7jsX            r7†r7hŒXisInOperatorr7†r	7jsjƆr
7htj†r7jsjƆr7jEXtruer
7†r7j©jÔ†r7jsj»†r7jsX            r7†r7hŒX	outBufferr7†r7j©j>†r7hŒXappendr7†r7j©jî†r7hŒXAS_OPERATORr7†r7j©j>†r7hŒXsubstrr7†r7j©jî†r7jŸjĆr7j©j†r 7j©j†r!7j©jÔ†r"7jsj»†r#7jsX            r$7†r%7hŒjÀ†r&7jsjƆr'7htjΆr(7htj†r)7jsjƆr*7jŸX7r+7†r,7j©jÔ†r-7jsj»†r.7jsX            r/7†r07jXcontinuer17†r27j©jÔ†r37jsj»†r47jsX
          r57†r67j©j†r77jsj»†r87jsj»†r97jsX        r:7†r;7jXifr<7†r=7jsjƆr>7j©jî†r?7hŒXchr@7†rA7jsjƆrB7htj†rC7htj†rD7jsjƆrE7jÖjú†rF7jÖj̆rG7jÖjú†rH7j©j†rI7jsj»†rJ7jsX
          rK7†rL7hŒXisInQuestionrM7†rN7jsjƆrO7htj†rP7jsjƆrQ7jEXtruerR7†rS7j©jÔ†rT7jsj»†rU7jsj»†rV7jsj»†rW7jsX        rX7†rY7h.X)// special handling of 'case' statements
rZ7†r[7jsX        r\7†r]7jXifr^7†r_7jsjƆr`7j©jî†ra7hŒXchrb7†rc7jsjƆrd7htj†re7htj†rf7jsjƆrg7jÖjú†rh7jÖjé†ri7jÖjú†rj7j©j†rk7jsj»†rl7jsX
          rm7†rn7j©jÞ†ro7jsj»†rp7jsX            rq7†rr7jXifrs7†rt7jsjƆru7j©jî†rv7hŒXlinerw7†rx7j©j>†ry7hŒXlengthrz7†r{7j©jî†r|7j©j†r}7jsjƆr~7htj	†r7jsjƆr€7hŒjÀ†r7htjΆr‚7jŸjĆrƒ7jsjƆr„7htjõ†r…7htjõ†r†7jsjƆr‡7hŒXlinerˆ7†r‰7j©j+†rŠ7hŒjÀ†r‹7htjΆrŒ7jŸjĆr7j©j…†rŽ7jsjƆr7htj†r7htj†r‘7jsjƆr’7jÖjú†r“7jÖjé†r”7jÖjú†r•7j©j†r–7jsjƆr—7h.X// look for ::
r˜7†r™7jsX              rš7†r›7j©jÞ†rœ7jsj»†r7jsX                rž7†rŸ7htjΆr 7htjΆr¡7hŒjÀ†r¢7j©jÔ†r£7jsj»†r¤7jsX                r¥7†r¦7hŒX	outBufferr§7†r¨7j©j>†r©7hŒXappendrª7†r«7j©jî†r¬7jŸjĆr­7j©jù†r®7jsjƆr¯7jÖjú†r°7jÖjé†r±7jÖjú†r²7j©j†r³7j©jÔ†r´7jsj»†rµ7jsX                r¶7†r·7hŒXchr¸7†r¹7jsjƆrº7htj†r»7jsjƆr¼7jÖjú†r½7jÖjƆr¾7jÖjú†r¿7j©jÔ†rÀ7jsj»†rÁ7jsX                rÂ7†rÃ7jXcontinuerÄ7†rÅ7j©jÔ†rÆ7jsj»†rÇ7jsX              rÈ7†rÉ7j©j†rÊ7jsj»†rË7jsj»†rÌ7jsX            rÍ7†rÎ7jXelserÏ7†rÐ7jsjƆrÑ7jXifrÒ7†rÓ7jsjƆrÔ7j©jî†rÕ7hŒXisCStylerÖ7†r×7jsjƆrØ7htjõ†rÙ7htjõ†rÚ7jsjƆrÛ7hŒX	isInClassrÜ7†rÝ7jsjƆrÞ7htjõ†rß7htjõ†rà7jsjƆrá7hŒXprevNonSpaceChrâ7†rã7jsjƆrä7htj:†rå7htj†ræ7jsjƆrç7jÖjú†rè7jÖj†ré7jÖjú†rê7j©j†rë7jsj»†rì7jsX              rí7†rî7j©jÞ†rï7jsj»†rð7jsX              rñ7†rò7h.X5// BEGIN Content of ASBeautifier.cpp.BITFIELD.patch:
ró7†rô7jsX              
                rõ7†rö7j-Xunsignedr÷7†rø7jsjƆrù7j-Xintrú7†rû7jsjƆrü7hŒXchIndexrý7†rþ7j©jÔ†rÿ7jsj»†r8jsX
   			    r8†r8j-Xcharr8†r8jsjƆr8e(hŒXnextChr8†r8jsjƆr8htj†r	8jsjƆr
8jŸj†r8j©jÔ†r8jsj»†r
8jsX                r8†r8jXforr8†r8jsjƆr8j©jî†r8hŒXchIndexr8†r8jsjƆr8htj†r8jsjƆr8hŒjÀ†r8htjΆr8jŸjĆr8j©jÔ†r8jsjƆr8hŒXchIndexr8†r8jsjƆr 8htj#†r!8jsjƆr"8hŒXliner#8†r$8j©j>†r%8hŒXlengthr&8†r'8j©jî†r(8j©j†r)8j©jÔ†r*8jsjƆr+8hŒXchIndexr,8†r-8htjΆr.8htjΆr/8j©j†r08jsj»†r18jsX            		r28†r38jXifr48†r58jsjƆr68j©jî†r78htj:†r88hŒXisWhiteSpacer98†r:8j©jî†r;8hŒXliner<8†r=8j©j+†r>8hŒXchIndexr?8†r@8j©j…†rA8j©j†rB8j©j†rC8jsj»†rD8jsX						rE8†rF8jXbreakrG8†rH8j©jÔ†rI8jsj»†rJ8jsX					rK8†rL8jXifrM8†rN8jsjƆrO8j©jî†rP8hŒXchIndexrQ8†rR8htj#†rS8jsjƆrT8hŒXlinerU8†rV8j©j>†rW8hŒXlengthrX8†rY8j©jî†rZ8j©j†r[8j©j†r\8jsj»†r]8jsX       					r^8†r_8hŒXnextChr`8†ra8jsjƆrb8htj†rc8jsjƆrd8hŒXlinere8†rf8j©j+†rg8hŒXchIndexrh8†ri8j©j…†rj8j©jÔ†rk8jsj»†rl8jsX				rm8†rn8j-Xintro8†rp8jsjƆrq8hŒXnWordrr8†rs8jsjƆrt8htj†ru8jŸj†rv8j©jÔ†rw8jsj»†rx8jsX    			ry8†rz8jXforr{8†r|8jsjƆr}8j©jî†r~8hŒXchIndexr8†r€8jsjƆr8htj†r‚8jsjƆrƒ8jŸj†r„8j©jÔ†r…8jsjƆr†8hŒXchIndexr‡8†rˆ8jsjƆr‰8htj#†rŠ8jsjƆr‹8hŒjÀ†rŒ8j©jÔ†r8jsjƆrŽ8hŒXchIndexr8†r8htjΆr‘8htjΆr’8j©j†r“8jsj»†r”8jsX				r•8†r–8j©jÞ†r—8jsj»†r˜8jsX					r™8†rš8jXifr›8†rœ8jsjƆr8j©jî†rž8htj:†rŸ8hŒXisWhiteSpacer 8†r¡8j©jî†r¢8hŒXliner£8†r¤8j©j+†r¥8hŒXchIndexr¦8†r§8j©j…†r¨8j©j†r©8j©j†rª8jsj»†r«8jsX					r¬8†r­8j©jÞ†r®8jsj»†r¯8jsX						r°8†r±8hŒXnWordr²8†r³8jsjƆr´8htjΆrµ8htjΆr¶8j©jÔ†r·8jsj»†r¸8jsX						r¹8†rº8jXwhiler»8†r¼8jsjƆr½8j©jî†r¾8htj:†r¿8hŒXisWhiteSpacerÀ8†rÁ8j©jî†rÂ8hŒXlinerÃ8†rÄ8j©j+†rÅ8htjΆrÆ8htjΆrÇ8hŒXchIndexrÈ8†rÉ8j©j…†rÊ8j©j†rË8j©j†rÌ8j©jÔ†rÍ8jsj»†rÎ8jsX					rÏ8†rÐ8j©j†rÑ8jsX									
				rÒ8†rÓ8j©j†rÔ8jsj»†rÕ8jsX				rÖ8†r×8jXifrØ8†rÙ8jsjƆrÚ8j©jî†rÛ8j©jî†rÜ8hŒXnextChrÝ8†rÞ8jsjƆrß8htj	†rà8htj†rá8jsjƆrâ8jÖjú†rã8jÖj†rä8jÖjú†rå8jsjƆræ8htjõ†rç8htjõ†rè8jsjƆré8hŒXnextChrê8†rë8jsjƆrì8htj#†rí8htj†rî8jsjƆrï8jÖjú†rð8jÖX9rñ8†rò8jÖjú†ró8j©j†rô8jsjƆrõ8htj††rö8htj††r÷8jsjƆrø8j©jî†rù8hŒXnWordrú8†rû8jsjƆrü8htj	†rý8jŸjĆrþ8j©j†rÿ8j©j†r9jsj»†r9jsX					r9†r9jXcontinuer9†r9j©jÔ†r9jsj»†r9jsX              r9†r	9h.X3// END Content of ASBeautifier.cpp.BITFIELD.patch:
r
9†r9jsX!                
                r9†r
9htjô†r9htjô†r9hŒXtabCountr9†r9j©jÔ†r9jsj»†r9jsX                r9†r9h.X=// found a 'private:' or 'public:' inside a class definition
r9†r9jsX                r9†r9h.X// so do nothing special
r9†r9jsX              r9†r9j©j†r9jsj»†r9jsj»†r 9jsX            r!9†r"9jXelser#9†r$9jsjƆr%9jXifr&9†r'9jsjƆr(9j©jî†r)9hŒXisCStyler*9†r+9jsjƆr,9htjõ†r-9htjõ†r.9jsjƆr/9hŒXisInClassHeaderr09†r19j©j†r29jsj»†r39jsX              r49†r59j©jÞ†r69jsj»†r79jsj»†r89jsX                r99†r:9h.X+// found a 'class A : public B' definition
r;9†r<9jsX                r=9†r>9h.X// so do nothing special
r?9†r@9jsX              rA9†rB9j©j†rC9jsj»†rD9jsj»†rE9jsX            rF9†rG9jXelserH9†rI9jsjƆrJ9jXifrK9†rL9jsjƆrM9j©jî†rN9hŒXisInQuestionrO9†rP9j©j†rQ9jsj»†rR9jsX              rS9†rT9j©jÞ†rU9jsj»†rV9jsX                rW9†rX9hŒXisInQuestionrY9†rZ9jsjƆr[9htj†r\9jsjƆr]9jEXfalser^9†r_9j©jÔ†r`9jsj»†ra9jsX              rb9†rc9j©j†rd9jsj»†re9jsX            rf9†rg9jXelserh9†ri9jsjƆrj9jXifrk9†rl9jsjƆrm9j©jî†rn9hŒXisCStylero9†rp9jsjƆrq9htjõ†rr9htjõ†rs9jsjƆrt9hŒXprevNonSpaceChru9†rv9jsjƆrw9htj†rx9htj†ry9jsjƆrz9jÖjú†r{9jÖj†r|9jÖjú†r}9j©j†r~9jsj»†r9jsX              r€9†r9j©jÞ†r‚9jsj»†rƒ9jsX                r„9†r…9hŒXisInClassHeaderr†9†r‡9jsjƆrˆ9htj†r‰9jsjƆrŠ9jEXtruer‹9†rŒ9j©jÔ†r9jsj»†rŽ9jsX                r9†r9jXifr‘9†r’9jsjƆr“9j©jî†r”9hŒjÀ†r•9htj†r–9htj†r—9jŸj†r˜9j©j†r™9jsj»†rš9jsX                  r›9†rœ9hŒXtabCountr9†rž9jsjƆrŸ9htjΆr 9htj†r¡9jsjƆr¢9jŸj†r£9j©jÔ†r¤9jsj»†r¥9jsX              r¦9†r§9j©j†r¨9jsj»†r©9jsX            rª9†r«9jXelser¬9†r­9jsj»†r®9jsX              r¯9†r°9j©jÞ†r±9jsj»†r²9jsX                r³9†r´9hŒXcurrentNonSpaceChrµ9†r¶9jsjƆr·9htj†r¸9jsjƆr¹9jÖjú†rº9jÖjÔ†r»9jÖjú†r¼9j©jÔ†r½9jsjƆr¾9h.X?// so that brackets after the ':' will appear as block-openers
r¿9†rÀ9jsX                rÁ9†rÂ9jXifrÃ9†rÄ9jsjƆrÅ9j©jî†rÆ9hŒXisInCaserÇ9†rÈ9j©j†rÉ9jsj»†rÊ9jsX                  rË9†rÌ9j©jÞ†rÍ9jsj»†rÎ9jsX                    rÏ9†rÐ9hŒXisInCaserÑ9†rÒ9jsjƆrÓ9htj†rÔ9jsjƆrÕ9jEXfalserÖ9†r×9j©jÔ†rØ9jsj»†rÙ9jsX                    rÚ9†rÛ9hŒXchrÜ9†rÝ9jsjƆrÞ9htj†rß9jsjƆrà9jÖjú†rá9jÖjÔ†râ9jÖjú†rã9j©jÔ†rä9jsjƆrå9h.X#// from here on, treat char as ';'
ræ9†rç9jsX                  rè9†ré9j©j†rê9jsX 
              rë9†rì9h.X8// BEGIN content of ASBeautifier.cpp.BITFIELD.patch.bz2
rí9†rî9jsX              rï9†rð9jXelserñ9†rò9jsjƆró9h.X// bitfield or labels
rô9†rõ9jsX								rö9†r÷9j©jÞ†rø9jsj»†rù9jsX				rú9†rû9j-Xunsignedrü9†rý9jsjƆrþ9j-Xintrÿ9†r:jsjƆr:hŒXchIndexr:†r:j©jÔ†r:jsj»†r:jsX				r:†r:j-Xcharr:†r	:jsjƆr
:hŒXnextChr:†r:jsjƆr
:htj†r:jsjƆr:jŸj†r:j©jÔ†r:jsj»†r:jsX				r:†r:jXforr:†r:jsjƆr:j©jî†r:hŒXchIndexr:†r:jsjƆr:htj†r:jsjƆr:hŒjÀ†r:htjΆr:jŸjĆr :j©jÔ†r!:jsjƆr":j©jî†r#:hŒXisCStyler$:†r%:jsjƆr&:htjõ†r':htjõ†r(:jsjƆr):hŒXchIndexr*:†r+:jsjƆr,:htj#†r-:jsjƆr.:hŒXliner/:†r0:j©j>†r1:hŒXlengthr2:†r3:j©jî†r4:j©j†r5:j©j†r6:j©jÔ†r7:jsjƆr8:hŒXchIndexr9:†r::htjΆr;:htjΆr<:j©j†r=:jsj»†r>:jsX					r?:†r@:jXifrA:†rB:jsjƆrC:j©jî†rD:htj:†rE:hŒXisWhiteSpacerF:†rG:j©jî†rH:hŒXlinerI:†rJ:j©j+†rK:hŒXchIndexrL:†rM:j©j…†rN:j©j†rO:j©j†rP:jsj»†rQ:jsX						rR:†rS:jXbreakrT:†rU:j©jÔ†rV:jsj»†rW:jsX				rX:†rY:jXifrZ:†r[:jsjƆr\:j©jî†r]:hŒXchIndexr^:†r_:htj#†r`:jsjƆra:hŒXlinerb:†rc:j©j>†rd:hŒXlengthre:†rf:j©jî†rg:j©j†rh:j©j†ri:jsj»†rj:jsX					rk:†rl:hŒXnextChrm:†rn:jsjƆro:htj†rp:jsjƆrq:hŒXlinerr:†rs:j©j+†rt:hŒXchIndexru:†rv:j©j…†rw:j©jÔ†rx:jsj»†ry:jsj»†rz:jsX     			r{:†r|:j-Xintr}:†r~:jsjƆr:hŒXnWordr€:†r:jsjƆr‚:htj†rƒ:jŸj†r„:j©jÔ†r…:jsj»†r†:jsX 				r‡:†rˆ:jXforr‰:†rŠ:jsjƆr‹:j©jî†rŒ:hŒXchIndexr:†rŽ:jsjƆr:htj†r:jsjƆr‘:jŸj†r’:j©jÔ†r“:jsjƆr”:hŒXchIndexr•:†r–:jsjƆr—:htj#†r˜:jsjƆr™:hŒjÀ†rš:j©jÔ†r›:jsjƆrœ:hŒXchIndexr:†rž:htjΆrŸ:htjΆr :j©j†r¡:jsj»†r¢:jsX				r£:†r¤:j©jÞ†r¥:jsj»†r¦:jsX					r§:†r¨:jXifr©:†rª:jsjƆr«:j©jî†r¬:htj:†r­:hŒXisWhiteSpacer®:†r¯:j©jî†r°:hŒXliner±:†r²:j©j+†r³:hŒXchIndexr´:†rµ:j©j…†r¶:j©j†r·:j©j†r¸:jsj»†r¹:jsX					rº:†r»:j©jÞ†r¼:jsj»†r½:jsX						r¾:†r¿:hŒXnWordrÀ:†rÁ:jsjƆrÂ:htjΆrÃ:htjΆrÄ:j©jÔ†rÅ:jsj»†rÆ:jsX						rÇ:†rÈ:jXwhilerÉ:†rÊ:jsjƆrË:j©jî†rÌ:htj:†rÍ:hŒXisWhiteSpacerÎ:†rÏ:j©jî†rÐ:hŒXlinerÑ:†rÒ:j©j+†rÓ:htjΆrÔ:htjΆrÕ:hŒXchIndexrÖ:†r×:j©j…†rØ:j©j†rÙ:j©j†rÚ:j©jÔ†rÛ:jsj»†rÜ:jsX					rÝ:†rÞ:j©j†rß:jsX									
				rà:†rá:j©j†râ:jsj»†rã:jsX         		rä:†rå:jXifræ:†rç:jsjƆrè:j©jî†ré:hŒXisCStylerê:†rë:jsjƆrì:htjõ†rí:htjõ†rî:jsX  rï:†rð:j©jî†rñ:hŒXnextChrò:†ró:jsjƆrô:htj	†rõ:htj†rö:jsjƆr÷:jÖjú†rø:jÖj†rù:jÖjú†rú:jsjƆrû:htjõ†rü:htjõ†rý:jsjƆrþ:hŒXnextChrÿ:†r;jsjƆr;htj#†r;htj†r;jsjƆr;jÖjú†r;jÖjñ8†r;jÖjú†r;j©j†r;jsjƆr	;htj††r
;htj††r;jsjƆr;j©jî†r
;hŒXnWordr;†r;jsjƆr;htj	†r;jŸjĆr;j©j†r;j©j†r;jsj»†r;jsX				r;†r;j©jÞ†r;jsj»†r;jsX					r;†r;jXcontinuer;†r;j©jÔ†r;jsj»†r;jsX				r ;†r!;j©j†r";jsj»†r#;jsX                r$;†r%;h.X8// END content of ASASBeautifier.cpp.BITFIELD.patch.bz2
r&;†r';jsj»†r(;jsX                r);†r*;jXelser+;†r,;jsjƆr-;h.X"// is in a label (e.g. 'label1:')
r.;†r/;jsX                  r0;†r1;j©jÞ†r2;jsj»†r3;jsX                    r4;†r5;jXifr6;†r7;jsjƆr8;j©jî†r9;hŒXlabelIndentr:;†r;;j©j†r<;jsj»†r=;jsX                      r>;†r?;htjô†r@;htjô†rA;hŒXtabCountrB;†rC;j©jÔ†rD;jsjƆrE;h.X // unindent label by one indent
rF;†rG;jsX                    rH;†rI;jXelserJ;†rK;jsj»†rL;jsX                      rM;†rN;hŒXtabCountrO;†rP;jsjƆrQ;htj†rR;jsjƆrS;jŸj†rT;j©jÔ†rU;jsjƆrV;h.X#// completely flush indent to left
rW;†rX;jsX                  rY;†rZ;j©j†r[;jsj»†r\;jsj»†r];jsX              r^;†r_;h.X:// BEGIN content of ASASBeautifier.cpp.BITFIELD.patch.bz2
r`;†ra;jsX                rb;†rc;j©j†rd;jsj»†re;jsX            rf;†rg;h.X8// END content of ASASBeautifier.cpp.BITFIELD.patch.bz2
rh;†ri;jsj»†rj;jsX              rk;†rl;j©j†rm;jsj»†rn;jsX
          ro;†rp;j©j†rq;jsj»†rr;jsj»†rs;jsX        rt;†ru;jXifrv;†rw;jsjƆrx;j©jî†ry;j©jî†rz;hŒXchr{;†r|;jsjƆr};htj†r~;htj†r;jsjƆr€;jÖjú†r;jÖjÔ†r‚;jÖjú†rƒ;jsX  r„;†r…;htj††r†;htj††r‡;jsjƆrˆ;j©jî†r‰;hŒX
parenDepthrŠ;†r‹;htj	†rŒ;jŸj†r;jsjƆrŽ;htjõ†r;htjõ†r;jsjƆr‘;hŒXchr’;†r“;jsjƆr”;htj†r•;htj†r–;jsjƆr—;jÖjú†r˜;jÖjù†r™;jÖjú†rš;j©j†r›;j©j†rœ;jsX  r;†rž;htjõ†rŸ;htjõ†r ;jsjƆr¡;htj:†r¢;hŒXinStatementIndentStackSizeStackr£;†r¤;htjô†r¥;htj	†r¦;hŒXemptyr§;†r¨;j©jî†r©;j©j†rª;j©j†r«;jsj»†r¬;jsX
          r­;†r®;jXwhiler¯;†r°;jsjƆr±;j©jî†r²;j©jî†r³;j-Xunsignedr´;†rµ;jsjƆr¶;j-Xintr·;†r¸;j©j†r¹;hŒXinStatementIndentStackSizeStackrº;†r»;htjô†r¼;htj	†r½;hŒXbackr¾;†r¿;j©jî†rÀ;j©j†rÁ;jsjƆrÂ;htjΆrÃ;jsjƆrÄ;j©jî†rÅ;hŒX
parenDepthrÆ;†rÇ;htj	†rÈ;jŸj†rÉ;jsjƆrÊ;htj̆rË;jsjƆrÌ;jŸjĆrÍ;jsjƆrÎ;htjé†rÏ;jsjƆrÐ;jŸj†rÑ;j©j†rÒ;jsX  rÓ;†rÔ;htj#†rÕ;jsjƆrÖ;hŒXinStatementIndentStackr×;†rØ;htjô†rÙ;htj	†rÚ;hŒXsizerÛ;†rÜ;j©jî†rÝ;j©j†rÞ;j©j†rß;jsj»†rà;jsX            rá;†râ;hŒXinStatementIndentStackrã;†rä;htjô†rå;htj	†ræ;hŒXpop_backrç;†rè;j©jî†ré;j©j†rê;j©jÔ†rë;jsj»†rì;jsj»†rí;jsj»†rî;jsX        rï;†rð;h.X// handle ends of statements
rñ;†rò;jsX        ró;†rô;jXifrõ;†rö;jsjƆr÷;j©jî†rø;jsjƆrù;j©jî†rú;hŒXchrû;†rü;jsjƆrý;htj†rþ;htj†rÿ;jsjƆr<jÖjú†r<jÖjÔ†r<jÖjú†r<jsjƆr<htjõ†r<htjõ†r<jsjƆr<hŒX
parenDepthr<†r	<jsjƆr
<htj†r<htj†r<jsjƆr
<jŸj†r<j©j†r<jsjƆr<htj††r<htj††r<jsjƆr<hŒXchr<†r<jsjƆr<htj†r<htj†r<jsjƆr<jÖjú†r<jÖj†r<jÖjú†r<hX&/* || (ch == ',' && parenDepth == 0)*/r<†r<j©j†r<jsj»†r <jsX
          r!<†r"<j©jÞ†r#<jsj»†r$<jsX            r%<†r&<jXifr'<†r(<jsjƆr)<j©jî†r*<hŒXchr+<†r,<jsjƆr-<htj†r.<htj†r/<jsjƆr0<jÖjú†r1<jÖj†r2<jÖjú†r3<j©j†r4<jsj»†r5<jsX              r6<†r7<j©jÞ†r8<jsj»†r9<jsX                r:<†r;<h.XI// first check if this '}' closes a previous block, or a static array...
r<<†r=<jsX                r><†r?<jXifr@<†rA<jsjƆrB<j©jî†rC<htj:†rD<hŒXbracketBlockStateStackrE<†rF<htjô†rG<htj	†rH<hŒXemptyrI<†rJ<j©jî†rK<j©j†rL<j©j†rM<jsj»†rN<jsX                  rO<†rP<j©jÞ†rQ<jsj»†rR<jsX                    rS<†rT<j-XboolrU<†rV<jsjƆrW<hŒXbracketBlockStaterX<†rY<jsjƆrZ<htj†r[<jsjƆr\<hŒXbracketBlockStateStackr]<†r^<htjô†r_<htj	†r`<hŒXbackra<†rb<j©jî†rc<j©j†rd<j©jÔ†re<jsj»†rf<jsX                    rg<†rh<hŒXbracketBlockStateStackri<†rj<htjô†rk<htj	†rl<hŒXpop_backrm<†rn<j©jî†ro<j©j†rp<j©jÔ†rq<jsj»†rr<jsX                    rs<†rt<jXifru<†rv<jsjƆrw<j©jî†rx<htj:†ry<hŒXbracketBlockStaterz<†r{<j©j†r|<jsj»†r}<jsX                      r~<†r<j©jÞ†r€<jsj»†r<jsX                        r‚<†rƒ<jXifr„<†r…<jsjƆr†<j©jî†r‡<htj:†rˆ<hŒXinStatementIndentStackSizeStackr‰<†rŠ<htjô†r‹<htj	†rŒ<hŒXemptyr<†rŽ<j©jî†r<j©j†r<j©j†r‘<jsj»†r’<jsX                          r“<†r”<j©jÞ†r•<jsj»†r–<jsX                            r—<†r˜<h.X"// this bracket is a static array
r™<†rš<jsj»†r›<jsX                            rœ<†r<j-Xunsignedrž<†rŸ<jsjƆr <j-Xintr¡<†r¢<jsjƆr£<hŒXpreviousIndentStackSizer¤<†r¥<jsjƆr¦<htj†r§<jsjƆr¨<hŒXinStatementIndentStackSizeStackr©<†rª<htjô†r«<htj	†r¬<hŒXbackr­<†r®<j©jî†r¯<j©j†r°<j©jÔ†r±<jsj»†r²<jsX                            r³<†r´<hŒXinStatementIndentStackSizeStackrµ<†r¶<htjô†r·<htj	†r¸<hŒXpop_backr¹<†rº<j©jî†r»<j©j†r¼<j©jÔ†r½<jsj»†r¾<jsX                            r¿<†rÀ<jXwhilerÁ<†rÂ<jsjƆrÃ<j©jî†rÄ<hŒXpreviousIndentStackSizerÅ<†rÆ<jsjƆrÇ<htj#†rÈ<jsjƆrÉ<hŒXinStatementIndentStackrÊ<†rË<htjô†rÌ<htj	†rÍ<hŒXsizerÎ<†rÏ<j©jî†rÐ<j©j†rÑ<j©j†rÒ<jsj»†rÓ<jsX                              rÔ<†rÕ<hŒXinStatementIndentStackrÖ<†r×<htjô†rØ<htj	†rÙ<hŒXpop_backrÚ<†rÛ<j©jî†rÜ<j©j†rÝ<j©jÔ†rÞ<jsj»†rß<jsX                            rà<†rá<hŒX
parenDepthrâ<†rã<htjô†rä<htjô†rå<j©jÔ†ræ<jsj»†rç<jsX                            rè<†ré<jXifrê<†rë<jsjƆrì<j©jî†rí<hŒjÀ†rî<jsjƆrï<htj†rð<htj†rñ<jsjƆrò<jŸj†ró<j©j†rô<jsj»†rõ<jsX                              rö<†r÷<hŒXshouldIndentBrackettedLinerø<†rù<jsjƆrú<htj†rû<jsjƆrü<jEXfalserý<†rþ<j©jÔ†rÿ<jsj»†r=jsj»†r=jsX                            r=†r=jXifr=†r=jsjƆr=j©jî†r=htj:†r=hŒXparenIndentStackr	=†r
=htjô†r=htj	†r=hŒXemptyr
=†r=j©jî†r=j©j†r=j©j†r=jsj»†r=jsX                              r=†r=j©jÞ†r=jsj»†r=jsX                                 r=†r=j-Xintr=†r=jsjƆr=hŒXpoppedIndentr=†r=jsjƆr=htj†r=e(jsjƆr =hŒXparenIndentStackr!=†r"=htjô†r#=htj	†r$=hŒXbackr%=†r&=j©jî†r'=j©j†r(=j©jÔ†r)=jsj»†r*=jsX                                 r+=†r,=hŒXparenIndentStackr-=†r.=htjô†r/=htj	†r0=hŒXpop_backr1=†r2=j©jî†r3=j©j†r4=j©jÔ†r5=jsj»†r6=jsX                                 r7=†r8=jXifr9=†r:=jsjƆr;=j©jî†r<=hŒjÀ†r==jsjƆr>=htj†r?=htj†r@=jsjƆrA=jŸj†rB=j©j†rC=jsj»†rD=jsX"                                  rE=†rF=hŒX
spaceTabCountrG=†rH=jsjƆrI=htj†rJ=jsjƆrK=hŒXpoppedIndentrL=†rM=j©jÔ†rN=jsj»†rO=jsX                              rP=†rQ=j©j†rR=jsj»†rS=jsX                          rT=†rU=j©j†rV=jsj»†rW=jsX                        rX=†rY=jXcontinuerZ=†r[=j©jÔ†r\=jsj»†r]=jsX                      r^=†r_=j©j†r`=jsj»†ra=jsX                  rb=†rc=j©j†rd=jsj»†re=jsj»†rf=jsX                rg=†rh=h.X#// this bracket is block closer...
ri=†rj=jsj»†rk=jsX                rl=†rm=htjΆrn=htjΆro=hŒXlineClosingBlocksNumrp=†rq=j©jÔ†rr=jsj»†rs=jsj»†rt=jsX                ru=†rv=jXifrw=†rx=j©jî†ry=htj:†rz=hŒXinStatementIndentStackSizeStackr{=†r|=htjô†r}=htj	†r~=hŒXemptyr=†r€=j©jî†r=j©j†r‚=j©j†rƒ=jsj»†r„=jsX                  r…=†r†=hŒXinStatementIndentStackSizeStackr‡=†rˆ=htjô†r‰=htj	†rŠ=hŒXpop_backr‹=†rŒ=j©jî†r=j©j†rŽ=j©jÔ†r=jsj»†r=jsj»†r‘=jsX                r’=†r“=jXifr”=†r•=jsjƆr–=j©jî†r—=htj:†r˜=hŒXblockParenDepthStackr™=†rš=htjô†r›=htj	†rœ=hŒXemptyr=†rž=j©jî†rŸ=j©j†r =j©j†r¡=jsj»†r¢=jsX                  r£=†r¤=j©jÞ†r¥=jsj»†r¦=jsX                    r§=†r¨=hŒX
parenDepthr©=†rª=jsjƆr«=htj†r¬=jsjƆr­=hŒXblockParenDepthStackr®=†r¯=htjô†r°=htj	†r±=hŒXbackr²=†r³=j©jî†r´=j©j†rµ=j©jÔ†r¶=jsj»†r·=jsX                    r¸=†r¹=hŒXblockParenDepthStackrº=†r»=htjô†r¼=htj	†r½=hŒXpop_backr¾=†r¿=j©jî†rÀ=j©j†rÁ=j©jÔ†rÂ=jsj»†rÃ=jsX                    rÄ=†rÅ=hŒX
isInStatementrÆ=†rÇ=jsjƆrÈ=htj†rÉ=jsjƆrÊ=hŒXblockStatementStackrË=†rÌ=htjô†rÍ=htj	†rÎ=hŒXbackrÏ=†rÐ=j©jî†rÑ=j©j†rÒ=j©jÔ†rÓ=jsj»†rÔ=jsX                    rÕ=†rÖ=hŒXblockStatementStackr×=†rØ=htjô†rÙ=htj	†rÚ=hŒXpop_backrÛ=†rÜ=j©jî†rÝ=j©j†rÞ=j©jÔ†rß=jsj»†rà=jsj»†rá=jsX                    râ=†rã=jXifrä=†rå=jsjƆræ=j©jî†rç=hŒX
isInStatementrè=†ré=j©j†rê=jsj»†rë=jsX                      rì=†rí=hŒX
blockTabCountrî=†rï=htjô†rð=htjô†rñ=j©jÔ†rò=jsj»†ró=jsX                  rô=†rõ=j©j†rö=jsj»†r÷=jsj»†rø=jsX                rù=†rú=hŒXclosingBracketReachedrû=†rü=jsjƆrý=htj†rþ=jsjƆrÿ=jEXtruer>†r>j©jÔ†r>jsj»†r>jsX                r>†r>j-Xintr>†r>jsjƆr>hŒXheaderPlacer	>†r
>jsjƆr>htj†r>jsjƆr
>hŒXindexOfr>†r>j©jî†r>htjÿ†r>hŒXheaderStackr>†r>j©jù†r>jsjƆr>htjõ†r>hŒXAS_OPEN_BRACKETr>†r>j©j†r>j©jÔ†r>jsjƆr>h.X// <---
r>†r>jsX                r>†r>jXifr >†r!>jsjƆr">j©jî†r#>hŒXheaderPlacer$>†r%>jsjƆr&>htj:†r'>htj†r(>jsjƆr)>htjô†r*>jŸjĆr+>j©j†r,>jsj»†r->jsX                  r.>†r/>j©jÞ†r0>jsj»†r1>jsX                    r2>†r3>jXconstr4>†r5>jsjƆr6>hŒXstringr7>†r8>jsjƆr9>htjÿ†r:>hŒXpoppedr;>†r<>jsjƆr=>htj†r>>jsjƆr?>hŒXheaderStackr@>†rA>htjô†rB>htj	†rC>hŒXbackrD>†rE>j©jî†rF>j©j†rG>j©jÔ†rH>jsj»†rI>jsX                    rJ>†rK>jXwhilerL>†rM>jsjƆrN>j©jî†rO>hŒXpoppedrP>†rQ>jsjƆrR>htj:†rS>htj†rT>jsjƆrU>htjõ†rV>hŒXAS_OPEN_BRACKETrW>†rX>j©j†rY>jsj»†rZ>jsX                      r[>†r\>j©jÞ†r]>jsj»†r^>jsX                        r_>†r`>hŒXheaderStackra>†rb>htjô†rc>htj	†rd>hŒXpop_backre>†rf>j©jî†rg>j©j†rh>j©jÔ†ri>jsj»†rj>jsX                        rk>†rl>hŒXpoppedrm>†rn>jsjƆro>htj†rp>jsjƆrq>hŒXheaderStackrr>†rs>htjô†rt>htj	†ru>hŒXbackrv>†rw>j©jî†rx>j©j†ry>j©jÔ†rz>jsj»†r{>jsX                      r|>†r}>j©j†r~>jsj»†r>jsX                    r€>†r>hŒXheaderStackr‚>†rƒ>htjô†r„>htj	†r…>hŒXpop_backr†>†r‡>j©jî†rˆ>j©j†r‰>j©jÔ†rŠ>jsj»†r‹>jsj»†rŒ>jsX                    r>†rŽ>jXifr>†r>jsjƆr‘>j©jî†r’>htj:†r“>hŒX
tempStacksr”>†r•>htjô†r–>htj	†r—>hŒXemptyr˜>†r™>j©jî†rš>j©j†r›>j©j†rœ>jsj»†r>jsX                      rž>†rŸ>j©jÞ†r >jsj»†r¡>jsX                        r¢>†r£>hŒXvectorr¤>†r¥>htj#†r¦>jXconstr§>†r¨>jsjƆr©>hŒXstringrª>†r«>htjÿ†r¬>htj	†r­>jsjƆr®>htjÿ†r¯>hŒXtempr°>†r±>jsjƆr²>htj†r³>jsX  r´>†rµ>hŒX
tempStacksr¶>†r·>htjô†r¸>htj	†r¹>hŒXbackrº>†r»>j©jî†r¼>j©j†r½>j©jÔ†r¾>jsj»†r¿>jsX                        rÀ>†rÁ>hŒX
tempStacksrÂ>†rÃ>htjô†rÄ>htj	†rÅ>hŒXpop_backrÆ>†rÇ>j©jî†rÈ>j©j†rÉ>j©jÔ†rÊ>jsj»†rË>jsX                        rÌ>†rÍ>jXdeleterÎ>†rÏ>jsjƆrÐ>hŒXtemprÑ>†rÒ>j©jÔ†rÓ>jsj»†rÔ>jsX                      rÕ>†rÖ>j©j†r×>jsj»†rØ>jsX                  rÙ>†rÚ>j©j†rÛ>jsj»†rÜ>jsj»†rÝ>jsj»†rÞ>jsX                rß>†rà>hŒXchrá>†râ>jsjƆrã>htj†rä>jsjƆrå>jÖjú†ræ>jÖjƆrç>jÖjú†rè>j©jÔ†ré>jsjƆrê>h.Xd// needed due to cases such as '}else{', so that headers ('else' tn tih case) will be identified...
rë>†rì>jsX              rí>†rî>j©j†rï>jsj»†rð>jsj»†rñ>jsX            rò>†ró>hX5/*
             * Create a temporary snapshot of the current block's header-list in the
             * uppermost inner stack in tempStacks, and clear the headerStack up to
             * the begining of the block.
             * Thus, the next future statement will think it comes one indent past
             * the block's '{' unless it specifically checks for a companion-header
             * (such as a previous 'if' for an 'else' header) within the tempStacks,
             * and recreates the temporary snapshot by manipulating the tempStacks.
             */rô>†rõ>jsj»†rö>jsX            r÷>†rø>jXifrù>†rú>jsjƆrû>j©jî†rü>htj:†rý>hŒX
tempStacksrþ>†rÿ>htjô†r?htj	†r?hŒXbackr?†r?j©jî†r?j©j†r?htjô†r?htj	†r?hŒXemptyr?†r	?j©jî†r
?j©j†r?j©j†r?jsj»†r
?jsX              r?†r?jXwhiler?†r?jsjƆr?j©jî†r?htj:†r?hŒX
tempStacksr?†r?htjô†r?htj	†r?hŒXbackr?†r?j©jî†r?j©j†r?htjô†r?htj	†r?hŒXemptyr?†r ?j©jî†r!?j©j†r"?j©j†r#?jsj»†r$?jsX                r%?†r&?hŒX
tempStacksr'?†r(?htjô†r)?htj	†r*?hŒXbackr+?†r,?j©jî†r-?j©j†r.?htjô†r/?htj	†r0?hŒXpop_backr1?†r2?j©jî†r3?j©j†r4?j©jÔ†r5?jsj»†r6?jsX            r7?†r8?jXwhiler9?†r:?jsjƆr;?j©jî†r<?htj:†r=?hŒXheaderStackr>?†r??htjô†r@?htj	†rA?hŒXemptyrB?†rC?j©jî†rD?j©j†rE?jsjƆrF?htjõ†rG?htjõ†rH?jsjƆrI?hŒXheaderStackrJ?†rK?htjô†rL?htj	†rM?hŒXbackrN?†rO?j©jî†rP?j©j†rQ?jsjƆrR?htj:†rS?htj†rT?jsjƆrU?htjõ†rV?hŒXAS_OPEN_BRACKETrW?†rX?j©j†rY?jsj»†rZ?jsX              r[?†r\?j©jÞ†r]?jsj»†r^?jsX                r_?†r`?hŒX
tempStacksra?†rb?htjô†rc?htj	†rd?hŒXbackre?†rf?j©jî†rg?j©j†rh?htjô†ri?htj	†rj?hŒX	push_backrk?†rl?j©jî†rm?hŒXheaderStackrn?†ro?htjô†rp?htj	†rq?hŒXbackrr?†rs?j©jî†rt?j©j†ru?j©j†rv?j©jÔ†rw?jsj»†rx?jsX                ry?†rz?hŒXheaderStackr{?†r|?htjô†r}?htj	†r~?hŒXpop_backr?†r€?j©jî†r?j©j†r‚?j©jÔ†rƒ?jsj»†r„?jsX              r…?†r†?j©j†r‡?jsj»†rˆ?jsj»†r‰?jsX            rŠ?†r‹?jXifrŒ?†r?jsjƆrŽ?j©jî†r?hŒX
parenDepthr?†r‘?jsjƆr’?htj†r“?htj†r”?jsjƆr•?jŸj†r–?jsjƆr—?htjõ†r˜?htjõ†r™?jsjƆrš?hŒXchr›?†rœ?jsjƆr?htj†rž?htj†rŸ?jsjƆr ?jÖjú†r¡?jÖjÔ†r¢?jÖjú†r£?j©j†r¤?jsj»†r¥?jsX              r¦?†r§?hŒX
isInStatementr¨?†r©?htj†rª?jEXfalser«?†r¬?j©jÔ†r­?jsj»†r®?jsj»†r¯?jsX            r°?†r±?hŒXisInClassHeaderr²?†r³?jsjƆr´?htj†rµ?jsjƆr¶?jEXfalser·?†r¸?j©jÔ†r¹?jsj»†rº?jsj»†r»?jsX            r¼?†r½?jXcontinuer¾?†r¿?j©jÔ†rÀ?jsj»†rÁ?jsX
          rÂ?†rÃ?j©j†rÄ?jsj»†rÅ?jsj»†rÆ?jsj»†rÇ?jsX        rÈ?†rÉ?h.X@// check for preBlockStatements ONLY if not within parenthesies
rÊ?†rË?jsX        rÌ?†rÍ?h.XG// (otherwise 'struct XXX' statements would be wrongly interpreted...)
rÎ?†rÏ?jsX        rÐ?†rÑ?jXifrÒ?†rÓ?jsjƆrÔ?j©jî†rÕ?hŒXprevChrÖ?†r×?jsjƆrØ?htj†rÙ?htj†rÚ?jsjƆrÛ?jÖjú†rÜ?jÖjƆrÝ?jÖjú†rÞ?jsjƆrß?htjõ†rà?htjõ†rá?jsjƆrâ?htj:†rã?hŒXisInTemplaterä?†rå?jsjƆræ?htjõ†rç?htjõ†rè?jsjƆré?hŒX
parenDepthrê?†rë?jsjƆrì?htj†rí?htj†rî?jsjƆrï?jŸj†rð?j©j†rñ?jsj»†rò?jsX
          ró?†rô?j©jÞ†rõ?jsj»†rö?jsX            r÷?†rø?jXconstrù?†rú?jsjƆrû?hŒXstringrü?†rý?jsjƆrþ?htjÿ†rÿ?hŒX	newHeaderr@†r@jsjƆr@htj†r@jsjƆr@hŒX
findHeaderr@†r@j©jî†r@hŒXliner@†r	@j©jù†r
@jsjƆr@hŒjÀ†r@j©jù†r
@jsjƆr@hŒXpreBlockStatementsr@†r@j©j†r@j©jÔ†r@jsj»†r@jsX            r@†r@jXifr@†r@jsjƆr@j©jî†r@hŒX	newHeaderr@†r@jsjƆr@htj:†r@htj†r@jsjƆr@jEXNULLr @†r!@j©j†r"@jsj»†r#@jsX              r$@†r%@j©jÞ†r&@jsj»†r'@jsX                r(@†r)@hŒXisInClassHeaderr*@†r+@jsjƆr,@htj†r-@jsjƆr.@jEXtruer/@†r0@j©jÔ†r1@jsj»†r2@jsX                r3@†r4@hŒX	outBufferr5@†r6@j©j>†r7@hŒXappendr8@†r9@j©jî†r:@hŒX	newHeaderr;@†r<@htjô†r=@htj	†r>@hŒXsubstrr?@†r@@j©jî†rA@jŸjĆrB@j©j†rC@j©j†rD@j©jÔ†rE@jsj»†rF@jsX                rG@†rH@hŒjÀ†rI@jsjƆrJ@htjΆrK@htj†rL@jsjƆrM@hŒX	newHeaderrN@†rO@htjô†rP@htj	†rQ@hŒXlengthrR@†rS@j©jî†rT@j©j†rU@jsjƆrV@htjô†rW@jsjƆrX@jŸjĆrY@j©jÔ†rZ@jsj»†r[@jsX                r\@†r]@h.X//if (isCStyle)
r^@†r_@jsX                r`@†ra@hŒXheaderStackrb@†rc@htjô†rd@htj	†re@hŒX	push_backrf@†rg@j©jî†rh@hŒX	newHeaderri@†rj@j©j†rk@j©jÔ†rl@jsj»†rm@jsX              rn@†ro@j©j†rp@jsj»†rq@jsX
          rr@†rs@j©j†rt@jsj»†ru@jsj»†rv@jsX        rw@†rx@h.X// Handle operators
ry@†rz@jsX        r{@†r|@h.X//
r}@†r~@jsj»†r@jsX        r€@†r@h.XH////        // PRECHECK if a '==' or '--' or '++' operator was reached.
r‚@†rƒ@jsX        r„@†r…@h.XV////        // If not, then register an indent IF an assignment operator was reached.
r†@†r‡@jsX        rˆ@†r‰@h.Xa////        // The precheck is important, so that statements such as 'i--==2' are not recognized
rŠ@†r‹@jsX        rŒ@†r@h.XG////        // to have assignment operators (here, '-=') in them . . .
rŽ@†r@jsj»†r@jsX        r‘@†r’@jXconstr“@†r”@jsjƆr•@hŒXstringr–@†r—@jsjƆr˜@htjÿ†r™@hŒXfoundAssignmentOprš@†r›@jsjƆrœ@htj†r@jsjƆrž@jEXNULLrŸ@†r @j©jÔ†r¡@jsj»†r¢@jsX        r£@†r¤@jXconstr¥@†r¦@jsjƆr§@hŒXstringr¨@†r©@jsjƆrª@htjÿ†r«@hŒXfoundNonAssignmentOpr¬@†r­@jsjƆr®@htj†r¯@jsjƆr°@jEXNULLr±@†r²@j©jÔ†r³@jsj»†r´@jsj»†rµ@jsX        r¶@†r·@hŒXimmediatelyPreviousAssignmentOpr¸@†r¹@jsjƆrº@htj†r»@jsjƆr¼@jEXNULLr½@†r¾@j©jÔ†r¿@jsj»†rÀ@jsj»†rÁ@jsX        rÂ@†rÃ@h.X*// Check if an operator has been reached.
rÄ@†rÅ@jsX        rÆ@†rÇ@hŒXfoundAssignmentOprÈ@†rÉ@jsjƆrÊ@htj†rË@jsjƆrÌ@hŒX
findHeaderrÍ@†rÎ@j©jî†rÏ@hŒXlinerÐ@†rÑ@j©jù†rÒ@jsjƆrÓ@hŒjÀ†rÔ@j©jù†rÕ@jsjƆrÖ@hŒXassignmentOperatorsr×@†rØ@j©jù†rÙ@jsjƆrÚ@jEXfalserÛ@†rÜ@j©j†rÝ@j©jÔ†rÞ@jsj»†rß@jsX        rà@†rá@hŒXfoundNonAssignmentOprâ@†rã@jsjƆrä@htj†rå@jsjƆræ@hŒX
findHeaderrç@†rè@j©jî†ré@hŒXlinerê@†rë@j©jù†rì@jsjƆrí@hŒjÀ†rî@j©jù†rï@jsjƆrð@hŒXnonAssignmentOperatorsrñ@†rò@j©jù†ró@jsjƆrô@jEXfalserõ@†rö@j©j†r÷@j©jÔ†rø@jsj»†rù@jsj»†rú@jsX        rû@†rü@h.XJ// Since findHeader's boundry checking was not used above, it is possible
rý@†rþ@jsX        rÿ@†rAh.XC// that both an assignment op and a non-assignment op where found,
rA†rAjsX        rA†rAh.XI// e.g. '>>' and '>>='. If this is the case, treat the LONGER one as the
rA†rAjsX        rA†rAh.X// found operator.
r	A†r
AjsX        rA†rAjXifr
A†rAjsjƆrAj©jî†rAhŒXfoundAssignmentOprA†rAjsjƆrAhtj:†rAhtj†rAjsjƆrAjEXNULLrA†rAjsjƆrAhtjõ†rAhtjõ†rAjsjƆrAhŒXfoundNonAssignmentOprA†rAjsjƆrAhtj:†r Ahtj†r!AjsjƆr"AjEXNULLr#A†r$Aj©j†r%Ajsj»†r&AjsX
          r'A†r(AjXifr)A†r*AjsjƆr+Aj©jî†r,AhŒXfoundAssignmentOpr-A†r.Ahtjô†r/Ahtj	†r0AhŒXlengthr1A†r2Aj©jî†r3Aj©j†r4AjsjƆr5Ahtj#†r6AjsjƆr7AhŒXfoundNonAssignmentOpr8A†r9Ahtjô†r:Ahtj	†r;AhŒXlengthr<A†r=Aj©jî†r>Aj©j†r?Aj©j†r@Ajsj»†rAAjsX            rBA†rCAhŒXfoundAssignmentOprDA†rEAjsjƆrFAhtj†rGAjsjƆrHAjEXNULLrIA†rJAj©jÔ†rKAjsj»†rLAjsX
          rMA†rNAjXelserOA†rPAjsj»†rQAjsX            rRA†rSAhŒXfoundNonAssignmentOprTA†rUAjsjƆrVAhtj†rWAjsjƆrXAjEXNULLrYA†rZAj©jÔ†r[Ajsj»†r\Ajsj»†r]AjsX        r^A†r_AjXifr`A†raAjsjƆrbAj©jî†rcAhŒXfoundNonAssignmentOprdA†reAjsjƆrfAhtj:†rgAhtj†rhAjsjƆriAjEXNULLrjA†rkAj©j†rlAjsj»†rmAjsX
          rnA†roAj©jÞ†rpAjsj»†rqAjsX            rrA†rsAjXifrtA†ruAjsjƆrvAj©jî†rwAhŒXfoundNonAssignmentOprxA†ryAhtjô†rzAhtj	†r{AhŒXlengthr|A†r}Aj©jî†r~Aj©j†rAjsjƆr€Ahtj	†rAjsjƆr‚AjŸjĆrƒAj©j†r„Ajsj»†r…AjsX              r†A†r‡Aj©jÞ†rˆAjsj»†r‰AjsX                rŠA†r‹AhŒX	outBufferrŒA†rAj©j>†rŽAhŒXappendrA†rAj©jî†r‘AhŒXfoundNonAssignmentOpr’A†r“Ahtjô†r”Ahtj	†r•AhŒXsubstrr–A†r—Aj©jî†r˜AjŸjĆr™Aj©j†ršAj©j†r›Aj©jÔ†rœAjsj»†rAjsX                ržA†rŸAhŒjÀ†r AjsjƆr¡AhtjΆr¢Ahtj†r£AjsjƆr¤AhŒXfoundNonAssignmentOpr¥A†r¦Ahtjô†r§Ahtj	†r¨AhŒXlengthr©A†rªAj©jî†r«Aj©j†r¬AjsjƆr­Ahtjô†r®AjsjƆr¯AjŸjĆr°Aj©jÔ†r±Ajsj»†r²AjsX              r³A†r´Aj©j†rµAjsj»†r¶AjsX
          r·A†r¸Aj©j†r¹Ajsj»†rºAjsj»†r»AjsX        r¼A†r½AjXelser¾A†r¿AjsjƆrÀAjXifrÁA†rÂAjsjƆrÃAj©jî†rÄAhŒXfoundAssignmentOprÅA†rÆAjsjƆrÇAhtj:†rÈAhtj†rÉAjsjƆrÊAjEXNULLrËA†rÌAj©j†rÍAjsj»†rÎAjsj»†rÏAjsX
          rÐA†rÑAj©jÞ†rÒAjsj»†rÓAjsX            rÔA†rÕAjXifrÖA†r×AjsjƆrØAj©jî†rÙAhŒXfoundAssignmentOprÚA†rÛAhtjô†rÜAhtj	†rÝAhŒXlengthrÞA†rßAj©jî†ràAj©j†ráAjsjƆrâAhtj	†rãAjsjƆräAjŸjĆråAj©j†ræAjsj»†rçAjsX              rèA†réAj©jÞ†rêAjsj»†rëAjsX                rìA†ríAhŒX	outBufferrîA†rïAj©j>†rðAhŒXappendrñA†ròAj©jî†róAhŒXfoundAssignmentOprôA†rõAhtjô†röAhtj	†r÷AhŒXsubstrrøA†rùAj©jî†rúAjŸjĆrûAj©j†rüAj©j†rýAj©jÔ†rþAjsj»†rÿAjsX                rB†rBhŒjÀ†rBjsjƆrBhtjΆrBhtj†rBjsjƆrBhŒXfoundAssignmentOprB†rBhtjô†r	Bhtj	†r
BhŒXlengthrB†rBj©jî†r
Bj©j†rBjsjƆrBhtjô†rBjsjƆrBjŸjĆrBj©jÔ†rBjsj»†rBjsX              rB†rBj©j†rBjsj»†rBjsj»†rBjsX            rB†rBjXifrB†rBjsjƆrBj©jî†rBhtj:†r BhŒXisInOperatorr!B†r"BjsjƆr#Bhtjõ†r$Bhtjõ†r%BjsjƆr&Bhtj:†r'BhŒXisInTemplater(B†r)Bj©j†r*Bjsj»†r+BjsX              r,B†r-Bj©jÞ†r.Bjsj»†r/BjsX                r0B†r1BhŒXregisterInStatementIndentr2B†r3Bj©jî†r4BhŒXliner5B†r6Bj©jù†r7BjsjƆr8BhŒjÀ†r9Bj©jù†r:BjsjƆr;BhŒX
spaceTabCountr<B†r=Bj©jù†r>BjsjƆr?BjŸj†r@Bj©jù†rABjsjƆrBBjEXfalserCB†rDBj©j†rEBe(j©jÔ†rFBjsj»†rGBjsX                rHB†rIBhŒXimmediatelyPreviousAssignmentOprJB†rKBjsjƆrLBhtj†rMBjsjƆrNBhŒXfoundAssignmentOprOB†rPBj©jÔ†rQBjsj»†rRBjsX                rSB†rTBhŒX
isInStatementrUB†rVBjsjƆrWBhtj†rXBjsjƆrYBjEXtruerZB†r[Bj©jÔ†r\Bjsj»†r]BjsX              r^B†r_Bj©j†r`Bjsj»†raBjsX
          rbB†rcBj©j†rdBjsj»†reBjsj»†rfBjsX        rgB†rhBhXÄ/*
                immediatelyPreviousAssignmentOp = NULL;
                bool isNonAssingmentOperator = false;
                for (int n = 0; n < nonAssignmentOperators.size(); n++)
                    if (line.COMPARE(i, nonAssignmentOperators[n]->length(), *(nonAssignmentOperators[n])) == 0)
                    {
                        if (nonAssignmentOperators[n]->length() > 1)
                        {
                            outBuffer.append(nonAssignmentOperators[n]->substr(1));
                            i += nonAssignmentOperators[n]->length() - 1;
                        }
                        isNonAssingmentOperator = true;
                        break;
                    }
                if (!isNonAssingmentOperator)
                {
                    for (int a = 0; a < assignmentOperators.size(); a++)
                        if (line.COMPARE(i, assignmentOperators[a]->length(), *(assignmentOperators[a])) == 0)
                        {
                            if (assignmentOperators[a]->length() > 1)
                            {
                                outBuffer.append(assignmentOperators[a]->substr(1));
                                i += assignmentOperators[a]->length() - 1;
                            }
         
                            if (!isInOperator && !isInTemplate)
                            {
                                registerInStatementIndent(line, i, spaceTabCount, 0, false);
                                immediatelyPreviousAssignmentOp = assignmentOperators[a];
                                isInStatement = true;
                            }
                            break;
                        }
                }
        */riB†rjBjsj»†rkBjsj»†rlBjsX        rmB†rnBjXifroB†rpBjsjƆrqBj©jî†rrBhŒXisInOperatorrsB†rtBj©j†ruBjsj»†rvBjsX
          rwB†rxBhŒXisInOperatorryB†rzBjsjƆr{Bhtj†r|BjsjƆr}BjEXfalser~B†rBj©jÔ†r€Bjsj»†rBjsX      r‚B†rƒBj©j†r„Bjsj»†r…Bjsj»†r†BjsX    r‡B†rˆBh.X*// handle special cases of unindentation:
r‰B†rŠBjsj»†r‹BjsX    rŒB†rBhXÑ/*
     * if '{' doesn't follow an immediately previous '{' in the headerStack
     * (but rather another header such as "for" or "if", then unindent it
     * by one indentation relative to its block.
     */rŽB†rBjsj»†rBjsX    r‘B†r’Bh.Xv//    cerr << endl << lineOpeningBlocksNum << " " <<  lineClosingBlocksNum << " " <<  previousLastLineHeader << endl;
r“B†r”Bjsj»†r•BjsX    r–B†r—Bh.X*// indent #define lines with one less tab
r˜B†r™BjsX    ršB†r›Bh.X//if (isInDefine)
rœB†rBjsX    ržB†rŸBh.X$//    tabCount -= defineTabCount-1;
r B†r¡Bjsj»†r¢Bjsj»†r£BjsX    r¤B†r¥BjXifr¦B†r§BjsjƆr¨Bj©jî†r©Bhtj:†rªBhŒXlineStartsInCommentr«B†r¬Bjsj»†r­BjsX        r®B†r¯Bhtjõ†r°Bhtjõ†r±BjsjƆr²Bhtj:†r³BhŒXblockIndentr´B†rµBjsj»†r¶BjsX        r·B†r¸Bhtjõ†r¹Bhtjõ†rºBjsjƆr»BhŒX	outBufferr¼B†r½Bj©j>†r¾BhŒXlengthr¿B†rÀBj©jî†rÁBj©j†rÂBhtj	†rÃBjŸj†rÄBjsj»†rÅBjsX        rÆB†rÇBhtjõ†rÈBhtjõ†rÉBjsjƆrÊBhŒX	outBufferrËB†rÌBj©j+†rÍBjŸj†rÎBj©j…†rÏBhtj†rÐBhtj†rÑBjÖjú†rÒBjÖjÞ†rÓBjÖjú†rÔBjsj»†rÕBjsX        rÖB†r×Bhtjõ†rØBhtjõ†rÙBjsjƆrÚBhtj:†rÛBj©jî†rÜBhŒXlineOpeningBlocksNumrÝB†rÞBjsjƆrßBhtj	†ràBjsjƆráBjŸj†râBjsjƆrãBhtjõ†räBhtjõ†råBjsjƆræBhŒXlineOpeningBlocksNumrçB†rèBjsjƆréBhtj†rêBhtj†rëBjsjƆrìBhŒXlineClosingBlocksNumríB†rîBj©j†rïBjsj»†rðBjsX        rñB†ròBhtjõ†róBhtjõ†rôBjsjƆrõBhtj:†röBj©jî†r÷BhŒXheaderStackrøB†rùBhtjô†rúBhtj	†rûBhŒXsizerüB†rýBj©jî†rþBj©j†rÿBjsjƆrChtj	†rCjsjƆrCjŸjĆrCjsjƆrChtjõ†rChtjõ†rCjsjƆrCj©jî†rChtjÿ†r	ChŒXheaderStackr
C†rCj©j†rCj©j+†r
ChŒXheaderStackrC†rChtjô†rChtj	†rChŒXsizerC†rCj©jî†rCj©j†rChtjô†rCjŸj†rCj©j…†rCjsjƆrChtj†rChtj†rCjsjƆrChtjõ†rChŒXAS_OPEN_BRACKETrC†rCj©j†r Cjsj»†r!CjsX        r"C†r#Chtjõ†r$Chtjõ†r%CjsjƆr&ChŒXshouldIndentBrackettedLiner'C†r(Cj©j†r)Cjsj»†r*CjsX      r+C†r,Chtjô†r-Chtjô†r.ChŒXtabCountr/C†r0Cj©jÔ†r1Cjsj»†r2Cjsj»†r3CjsX    r4C†r5CjXelser6C†r7CjsjƆr8CjtXifr9C†r:CjsjƆr;Cj©jî†r<Chtj:†r=ChŒXlineStartsInCommentr>C†r?Cjsj»†r@CjsX
             rAC†rBChtjõ†rCChtjõ†rDCjsjƆrEChŒX	outBufferrFC†rGCj©j>†rHChŒXlengthrIC†rJCj©jî†rKCj©j†rLChtj	†rMCjŸj†rNCjsj»†rOCjsX
             rPC†rQChtjõ†rRChtjõ†rSCjsjƆrTChŒX	outBufferrUC†rVCj©j+†rWCjŸj†rXCj©j…†rYChtj†rZChtj†r[CjÖjú†r\CjÖj†r]CjÖjú†r^Cjsj»†r_CjsX
             r`C†raChtjõ†rbChtjõ†rcCjsjƆrdChŒXshouldIndentBrackettedLinereC†rfCjsjƆrgCj©j†rhCjsj»†riCjsX      rjC†rkChtjô†rlChtjô†rmChŒXtabCountrnC†roCj©jÔ†rpCjsj»†rqCjsj»†rrCjsX    rsC†rtCh.X'// correctly indent one-line-blocks...
ruC†rvCjsX    rwC†rxCjXelseryC†rzCjsjƆr{CjtXifr|C†r}CjsjƆr~Cj©jî†rChtj:†r€ChŒXlineStartsInCommentrC†r‚Cjsj»†rƒCjsX
             r„C†r…Chtjõ†r†Chtjõ†r‡CjsjƆrˆChŒX	outBufferr‰C†rŠCj©j>†r‹ChŒXlengthrŒC†rCj©jî†rŽCj©j†rChtj	†rCjŸj†r‘Cjsj»†r’CjsX
             r“C†r”Chtjõ†r•Chtjõ†r–CjsjƆr—ChŒXlineOpeningBlocksNumr˜C†r™CjsjƆršChtj	†r›CjsjƆrœCjŸj†rCjsj»†ržCjsX
             rŸC†r Chtjõ†r¡Chtjõ†r¢CjsjƆr£ChŒXlineOpeningBlocksNumr¤C†r¥CjsjƆr¦Chtj†r§Chtj†r¨CjsjƆr©ChŒXlineClosingBlocksNumrªC†r«Cjsj»†r¬CjsX
             r­C†r®Chtjõ†r¯Chtjõ†r°CjsjƆr±ChŒXpreviousLastLineHeaderr²C†r³CjsjƆr´Chtj:†rµChtj†r¶CjsjƆr·CjEXNULLr¸C†r¹Cjsj»†rºCjsX
             r»C†r¼Chtjõ†r½Chtjõ†r¾CjsjƆr¿ChŒXpreviousLastLineHeaderrÀC†rÁCjsjƆrÂChtj:†rÃChtj†rÄCjsjƆrÅChtjõ†rÆChŒXAS_OPEN_BRACKETrÇC†rÈCj©j†rÉCjsj»†rÊCjsX      rËC†rÌChŒXtabCountrÍC†rÎCjsjƆrÏChtjô†rÐChtj†rÑCjsjƆrÒCjŸjĆrÓCj©jÔ†rÔCjsjƆrÕCh.X0//lineOpeningBlocksNum - (blockIndent ? 1 : 0);
rÖC†r×Cjsj»†rØCjsX    rÙC†rÚCjXifrÛC†rÜCjsjƆrÝCj©jî†rÞChŒXtabCountrßC†ràCjsjƆráChtj#†râCjsjƆrãCjŸj†räCj©j†råCjsj»†ræCjsX      rçC†rèChŒXtabCountréC†rêCjsjƆrëChtj†rìCjsjƆríCjŸj†rîCj©jÔ†rïCjsj»†rðCjsj»†rñCjsX    ròC†róCh.X6// take care of extra bracket indentatation option...
rôC†rõCjsX    röC†r÷CjXifrøC†rùCjsjƆrúCj©jî†rûChŒX
bracketIndentrüC†rýCjsjƆrþChtjõ†rÿChtjõ†rDjsjƆrDhŒX	outBufferrD†rDj©j>†rDhŒXlengthrD†rDj©jî†rDj©j†rDhtj	†r	DjŸj†r
DjsjƆrDhtjõ†rDhtjõ†r
DjsjƆrDhŒXshouldIndentBrackettedLinerD†rDj©j†rDjsj»†rDjsX      rD†rDjXifrD†rDjsjƆrDj©jî†rDhŒX	outBufferrD†rDj©j+†rDjŸj†rDj©j…†rDhtj†rDhtj†rDjÖjú†r DjÖjÞ†r!DjÖjú†r"DjsjƆr#Dhtj††r$Dhtj††r%DjsjƆr&DhŒX	outBufferr'D†r(Dj©j+†r)DjŸj†r*Dj©j…†r+Dhtj†r,Dhtj†r-DjÖjú†r.DjÖj†r/DjÖjú†r0Dj©j†r1Djsj»†r2DjsX        r3D†r4DhŒXtabCountr5D†r6DhtjΆr7DhtjΆr8Dj©jÔ†r9Djsj»†r:Djsj»†r;Djsj»†r<DjsX    r=D†r>DjXifr?D†r@DjsjƆrADj©jî†rBDhŒX
isInDefinerCD†rDDj©j†rEDjsj»†rFDjsX      rGD†rHDj©jÞ†rIDjsj»†rJDjsX        rKD†rLDjXifrMD†rNDjsjƆrODj©jî†rPDhŒX	outBufferrQD†rRDj©j+†rSDjŸj†rTDj©j…†rUDjsjƆrVDhtj†rWDhtj†rXDjsjƆrYDjÖjú†rZDjÖj†r[DjÖjú†r\Dj©j†r]Djsj»†r^DjsX
          r_D†r`Dj©jÞ†raDjsj»†rbDjsX            rcD†rdDhŒXstringreD†rfDjsjƆrgDhŒXpreprocrhD†riDjsjƆrjDhtj†rkDjsjƆrlDhŒXtrimrmD†rnDj©jî†roDhŒXstringrpD†rqDj©jî†rrDhŒX	outBufferrsD†rtDj©j>†ruDhŒXc_strrvD†rwDj©jî†rxDj©j†ryDjsjƆrzDhtjΆr{DjsjƆr|DjŸjĆr}Dj©j†r~Dj©j†rDj©jÔ†r€Djsj»†rDjsX            r‚D†rƒDjXifr„D†r…DjsjƆr†Dj©jî†r‡DhŒXpreprocrˆD†r‰Dj©j>†rŠDhŒXCOMPAREr‹D†rŒDj©jî†rDjŸj†rŽDj©jù†rDjsjƆrDjŸjý†r‘Dj©jù†r’DjsjƆr“DhŒXstringr”D†r•Dj©jî†r–DjÁj'†r—DjÁXdefiner˜D†r™DjÁj'†ršDj©j†r›Dj©j†rœDjsjƆrDhtj†ržDhtj†rŸDjsjƆr DjŸj†r¡Dj©j†r¢Djsj»†r£DjsX              r¤D†r¥Dj©jÞ†r¦Djsj»†r§DjsX                r¨D†r©DjXifrªD†r«DjsjƆr¬Dj©jî†r­Dhtj:†r®DhŒXinStatementIndentStackr¯D†r°Dhtjô†r±Dhtj	†r²DhŒXemptyr³D†r´Dj©jî†rµDj©j†r¶Djsj»†r·DjsX                    r¸D†r¹Dhtjõ†rºDhtjõ†r»DjsjƆr¼DhŒXinStatementIndentStackr½D†r¾Dhtjô†r¿Dhtj	†rÀDhŒXbackrÁD†rÂDj©jî†rÃDj©j†rÄDjsjƆrÅDhtj	†rÆDjsjƆrÇDjŸj†rÈDj©j†rÉDjsj»†rÊDjsX                  rËD†rÌDj©jÞ†rÍDjsj»†rÎDjsX                    rÏD†rÐDhŒXdefineTabCountrÑD†rÒDjsjƆrÓDhtj†rÔDjsjƆrÕDhŒXtabCountrÖD†r×Dj©jÔ†rØDjsj»†rÙDjsX                  rÚD†rÛDj©j†rÜDjsj»†rÝDjsX                rÞD†rßDjXelseràD†ráDjsj»†râDjsX                  rãD†räDj©jÞ†råDjsj»†ræDjsX                    rçD†rèDhŒXdefineTabCountréD†rêDjsjƆrëDhtj†rìDjsjƆríDhŒXtabCountrîD†rïDjsjƆrðDhtjô†rñDjsjƆròDjŸjĆróDj©jÔ†rôDjsj»†rõDjsX                    röD†r÷DhŒXtabCountrøD†rùDhtjô†rúDhtjô†rûDj©jÔ†rüDjsj»†rýDjsX                  rþD†rÿDj©j†rEjsj»†rEjsX              rE†rEj©j†rEjsj»†rEjsX
          rE†rEj©j†rEjsj»†r	Ejsj»†r
EjsX        rE†rEhŒXtabCountr
E†rEjsjƆrEhtjô†rEhtj†rEjsjƆrEhŒXdefineTabCountrE†rEj©jÔ†rEjsj»†rEjsX      rE†rEj©j†rEjsj»†rEjsj»†rEjsX    rE†rEjXifrE†rEjsjƆr Ej©jî†r!EhŒXtabCountr"E†r#EjsjƆr$Ehtj#†r%EjsjƆr&EjŸj†r'Ej©j†r(Ejsj»†r)EjsX      r*E†r+EhŒXtabCountr,E†r-EjsjƆr.Ehtj†r/EjsjƆr0EjŸj†r1Ej©jÔ†r2Ejsj»†r3Ejsj»†r4Ejsj»†r5EjsX    r6E†r7Eh.X6// finally, insert indentations into begining of line
r8E†r9Ejsj»†r:EjsX    r;E†r<EhŒXprevFinalLineSpaceTabCountr=E†r>EjsjƆr?Ehtj†r@EjsjƆrAEhŒX
spaceTabCountrBE†rCEj©jÔ†rDEjsj»†rEEjsX    rFE†rGEhŒXprevFinalLineTabCountrHE†rIEjsjƆrJEhtj†rKEjsjƆrLEhŒXtabCountrME†rNEj©jÔ†rOEjsj»†rPEjsj»†rQEjsX    rRE†rSEjXifrTE†rUEjsjƆrVEj©jî†rWEhŒXshouldForceTabIndentationrXE†rYEj©j†rZEjsj»†r[EjsX      r\E†r]Ej©jÞ†r^Ejsj»†r_EjsX        r`E†raEhŒXtabCountrbE†rcEjsjƆrdEhtjΆreEhtj†rfEjsjƆrgEhŒX
spaceTabCountrhE†riEjsjƆrjEhtjˆ'†rkEjsjƆrlEhŒXindentLengthrmE†rnEj©jÔ†roEjsj»†rpEjsX        rqE†rrEhŒX
spaceTabCountrsE†rtEjsjƆruEhtj†rvEjsjƆrwEhŒX
spaceTabCountrxE†ryEjsjƆrzEhtX%r{E†r|EjsjƆr}EhŒXindentLengthr~E†rEj©jÔ†r€Ejsj»†rEjsX      r‚E†rƒEj©j†r„Ejsj»†r…Ejsj»†r†EjsX    r‡E†rˆEhŒX	outBufferr‰E†rŠEjsjƆr‹Ehtj†rŒEjsjƆrEhŒX	preLineWSrŽE†rEj©jî†rEhŒX
spaceTabCountr‘E†r’Ej©jù†r“EhŒXtabCountr”E†r•Ej©j†r–EjsjƆr—EhtjΆr˜EjsjƆr™EhŒX	outBufferršE†r›Ej©jÔ†rœEjsj»†rEjsj»†ržEjsX    rŸE†r EjXifr¡E†r¢EjsjƆr£Ej©jî†r¤EhŒXlastLineHeaderr¥E†r¦EjsjƆr§Ehtj:†r¨Ehtj†r©EjsjƆrªEjEXNULLr«E†r¬Ej©j†r­Ejsj»†r®EjsX      r¯E†r°EhŒXpreviousLastLineHeaderr±E†r²EjsjƆr³Ehtj†r´EjsjƆrµEhŒXlastLineHeaderr¶E†r·Ej©jÔ†r¸Ejsj»†r¹Ejsj»†rºEjsX    r»E†r¼EjXreturnr½E†r¾EjsjƆr¿EhŒX	outBufferrÀE†rÁEj©jÔ†rÂEjsj»†rÃEjsX  rÄE†rÅEj©j†rÆEjsj»†rÇEjsj»†rÈEjsj»†rÉEjsX  rÊE†rËEhŒXstringrÌE†rÍEjsjƆrÎEhŒXASBeautifierrÏE†rÐEhtjé†rÑEhtjé†rÒEhŒX	preLineWSrÓE†rÔEj©jî†rÕEj-XintrÖE†r×EjsjƆrØEhŒX
spaceTabCountrÙE†rÚEj©jù†rÛEjsjƆrÜEj-XintrÝE†rÞEjsjƆrßEhŒXtabCountràE†ráEj©j†râEjsj»†rãEjsX  räE†råEj©jÞ†ræEjsj»†rçEjsX    rèE†réEhŒXstringrêE†rëEjsjƆrìEhŒXwsríE†rîEj©jÔ†rïEjsj»†rðEjsj»†rñEjsX    ròE†róEjXforrôE†rõEjsjƆröEj©jî†r÷Ej-XintrøE†rùEjsjƆrúEhŒjÀ†rûEhtj†rüEjŸj†rýEj©jÔ†rþEjsjƆrÿEhŒjÀ†rFhtj#†rFhŒXtabCountrF†rFj©jÔ†rFjsjƆrFhŒjÀ†rFhtjΆrFhtjΆrFj©j†r	Fjsj»†r
FjsX      rF†rFhŒXwsr
F†rFjsjƆrFhtjΆrFhtj†rFjsjƆrFhŒXindentStringrF†rFj©jÔ†rFjsj»†rFjsj»†rFjsX    rF†rFjXwhilerF†rFjsjƆrFj©jî†rFj©jî†rFhŒX
spaceTabCountrF†r Fhtjô†r!Fhtjô†r"Fj©j†r#FjsjƆr$Fhtj	†r%FjsjƆr&FjŸj†r'Fj©j†r(Fjsj»†r)FjsX      r*F†r+FhŒXwsr,F†r-FjsjƆr.FhtjΆr/Fhtj†r0FjsjƆr1FhŒXstringr2F†r3Fj©jî†r4FjÁj'†r5FjÁjƆr6FjÁj'†r7Fj©j†r8Fj©jÔ†r9Fjsj»†r:Fjsj»†r;FjsX    r<F†r=FjXreturnr>F†r?FjsjƆr@FhŒXwsrAF†rBFj©jÔ†rCFjsj»†rDFjsj»†rEFjsX  rFF†rGFj©j†rHFjsj»†rIFjsj»†rJFjsX  rKF†rLFhX//**
   * register an in-statement indent.
   */rMF†rNFjsj»†rOFjsX  rPF†rQFj-XvoidrRF†rSFjsjƆrTFhŒXASBeautifierrUF†rVFhtjé†rWFhtjé†rXFhŒXregisterInStatementIndentrYF†rZFj©jî†r[FjXconstr\F†r]FjsjƆr^FhŒXstringr_F†r`FjsjƆraFhtjõ†rbFhŒXlinercF†rdFj©jù†reFjsjƆrfFj-XintrgF†rhFjsjƆriFhŒjÀ†rjFj©jù†rkFjsjƆrlFj-XintrmF†rnFjsjƆroFhŒX
spaceTabCountrpF†rqFj©jù†rrFjsj»†rsFjsX      rtF†ruFj-XintrvF†rwFjsjƆrxFhŒX	minIndentryF†rzFj©jù†r{FjsjƆr|Fj-Xboolr}F†r~FjsjƆrFhŒXupdateParenStackr€F†rFj©j†r‚Fjsj»†rƒFjsX  r„F†r…Fj©jÞ†r†Fjsj»†r‡FjsX    rˆF†r‰Fj-XintrŠF†r‹FjsjƆrŒFhŒXinStatementIndentrF†rŽFj©jÔ†rFjsj»†rFjsX    r‘F†r’Fj-Xintr“F†r”FjsjƆr•FhŒXremainingCharNumr–F†r—FjsjƆr˜Fhtj†r™FjsjƆršFhŒXliner›F†rœFj©j>†rFhŒXlengthržF†rŸFj©jî†r Fj©j†r¡FjsjƆr¢Fhtjô†r£FjsjƆr¤FhŒjÀ†r¥Fj©jÔ†r¦Fjsj»†r§FjsX    r¨F†r©Fj-XintrªF†r«FjsjƆr¬FhŒX
nextNonWSCharr­F†r®FjsjƆr¯Fhtj†r°FjsjƆr±FjŸjĆr²Fj©jÔ†r³Fjsj»†r´Fjsj»†rµFjsX    r¶F†r·FhŒX
nextNonWSCharr¸F†r¹FjsjƆrºFhtj†r»FjsjƆr¼FhŒXgetNextProgramCharDistancer½F†r¾Fj©jî†r¿FhŒXlinerÀF†rÁFj©jù†rÂFjsjƆrÃFhŒjÀ†rÄFj©j†rÅFj©jÔ†rÆFjsj»†rÇFjsj»†rÈFjsX    rÉF†rÊFh.Xc// if indent is around the last char in the line, indent instead 2 spaces from the previous indent
rËF†rÌFjsX    rÍF†rÎFjXifrÏF†rÐFjsjƆrÑFj©jî†rÒFhŒX
nextNonWSCharrÓF†rÔFjsjƆrÕFhtj†rÖFhtj†r×FjsjƆrØFhŒXremainingCharNumrÙF†rÚFj©j†rÛFjsj»†rÜFjsX      rÝF†rÞFj©jÞ†rßFjsj»†ràFjsX        ráF†râFj-XintrãF†räFjsjƆråFhŒXpreviousIndentræF†rçFjsjƆrèFhtj†réFjsjƆrêFhŒX
spaceTabCountrëF†rìFj©jÔ†ríFjsj»†rîFjsX        rïF†rðFjXifrñF†ròFjsjƆróFj©jî†rôFhtj:†rõFhŒXinStatementIndentStackröF†r÷Fhtjô†røFhtj	†rùFhŒXemptyrúF†rûFj©jî†rüFj©j†rýFj©j†rþFjsj»†rÿFjsX
          rG†rGhŒXpreviousIndentrG†rGjsjƆrGhtj†rGjsjƆrGhŒXinStatementIndentStackrG†rGhtjô†r	Ghtj	†r
GhŒXbackrG†rGj©jî†r
Gj©j†rGj©jÔ†rGjsj»†rGjsj»†rGjsX        rG†rGhŒXinStatementIndentStackrG†rGhtjô†rGhtj	†rGhŒX	push_backrG†rGj©jî†rGhX/*2*/rG†rGjsjƆrGhŒXindentLengthrG†rGjsjƆr GhtjΆr!GjsjƆr"GhŒXpreviousIndentr#G†r$GjsjƆr%Gj©j†r&Gj©jÔ†r'Gjsj»†r(GjsX        r)G†r*GjXifr+G†r,GjsjƆr-Gj©jî†r.GhŒXupdateParenStackr/G†r0Gj©j†r1Gjsj»†r2GjsX
          r3G†r4GhŒXparenIndentStackr5G†r6Ghtjô†r7Ghtj	†r8GhŒX	push_backr9G†r:Gj©jî†r;GjsjƆr<GhŒXpreviousIndentr=G†r>GjsjƆr?Gj©j†r@Gj©jÔ†rAGjsj»†rBGjsX        rCG†rDGjXreturnrEG†rFGj©jÔ†rGGjsj»†rHGjsX      rIG†rJGj©j†rKGjsj»†rLGjsj»†rMGjsX    rNG†rOGjXifrPG†rQGjsjƆrRGj©jî†rSGhŒXupdateParenStackrTG†rUGj©j†rVGjsj»†rWGjsX      rXG†rYGhŒXparenIndentStackrZG†r[Ghtjô†r\Ghtj	†r]Ge(hŒX	push_backr^G†r_Gj©jî†r`GhŒjÀ†raGhtjΆrbGhŒX
spaceTabCountrcG†rdGj©j†reGj©jÔ†rfGjsj»†rgGjsj»†rhGjsX    riG†rjGhŒXinStatementIndentrkG†rlGjsjƆrmGhtj†rnGjsjƆroGhŒjÀ†rpGjsjƆrqGhtjΆrrGjsjƆrsGhŒX
nextNonWSCharrtG†ruGjsjƆrvGhtjΆrwGjsjƆrxGhŒX
spaceTabCountryG†rzGj©jÔ†r{Gjsj»†r|Gjsj»†r}GjsX    r~G†rGjXifr€G†rGjsjƆr‚Gj©jî†rƒGhŒjÀ†r„GjsjƆr…GhtjΆr†GjsjƆr‡GhŒX
nextNonWSCharrˆG†r‰GjsjƆrŠGhtj#†r‹GjsjƆrŒGhŒX	minIndentrG†rŽGj©j†rGjsj»†rGjsX      r‘G†r’GhŒXinStatementIndentr“G†r”GjsjƆr•Ghtj†r–GjsjƆr—GhŒX	minIndentr˜G†r™GjsjƆršGhtjΆr›GjsjƆrœGhŒX
spaceTabCountrG†ržGj©jÔ†rŸGjsj»†r Gjsj»†r¡GjsX    r¢G†r£GjXifr¤G†r¥GjsjƆr¦Gj©jî†r§GhŒjÀ†r¨GjsjƆr©GhtjΆrªGjsjƆr«GhŒX
nextNonWSCharr¬G†r­GjsjƆr®Ghtj	†r¯GjsjƆr°GhŒXmaxInStatementIndentr±G†r²Gj©j†r³Gjsj»†r´GjsX      rµG†r¶GhŒXinStatementIndentr·G†r¸GjsjƆr¹Ghtj†rºGjsX  r»G†r¼GhŒXindentLengthr½G†r¾Ghtjÿ†r¿GjŸj†rÀGjsjƆrÁGhtjΆrÂGjsjƆrÃGhŒX
spaceTabCountrÄG†rÅGj©jÔ†rÆGjsj»†rÇGjsj»†rÈGjsj»†rÉGjsj»†rÊGjsX    rËG†rÌGjXifrÍG†rÎGjsjƆrÏGj©jî†rÐGhtj:†rÑGhŒXinStatementIndentStackrÒG†rÓGhtjô†rÔGhtj	†rÕGhŒXemptyrÖG†r×Gj©jî†rØGj©j†rÙGjsjƆrÚGhtjõ†rÛGhtjõ†rÜGjsj»†rÝGjsX        rÞG†rßGhŒXinStatementIndentràG†ráGjsjƆrâGhtj#†rãGjsjƆräGhŒXinStatementIndentStackråG†ræGhtjô†rçGhtj	†rèGhŒXbackréG†rêGj©jî†rëGj©j†rìGj©j†ríGjsj»†rîGjsX      rïG†rðGhŒXinStatementIndentrñG†ròGjsjƆróGhtj†rôGjsjƆrõGhŒXinStatementIndentStackröG†r÷Ghtjô†røGhtj	†rùGhŒXbackrúG†rûGj©jî†rüGj©j†rýGj©jÔ†rþGjsj»†rÿGjsj»†rHjsX    rH†rHhŒXinStatementIndentStackrH†rHhtjô†rHhtj	†rHhŒX	push_backrH†rHj©jî†r	HhŒXinStatementIndentr
H†rHj©j†rHj©jÔ†r
Hjsj»†rHjsX  rH†rHj©j†rHjsj»†rHjsj»†rHjsX  rH†rHhX²/**
   * get distance to the next non-white sspace, non-comment character in the line.
   * if no such character exists, return the length remaining to the end of the line.
   */rH†rHjsj»†rHjsX  rH†rHj-XintrH†rHjsjƆrHhŒXASBeautifierrH†rHhtjé†r Hhtjé†r!HhŒXgetNextProgramCharDistancer"H†r#Hj©jî†r$HjXconstr%H†r&HjsjƆr'HhŒXstringr(H†r)HjsjƆr*Hhtjõ†r+HhŒXliner,H†r-Hj©jù†r.HjsjƆr/Hj-Xintr0H†r1HjsjƆr2HhŒjÀ†r3Hj©j†r4Hjsj»†r5HjsX  r6H†r7Hj©jÞ†r8Hjsj»†r9HjsX    r:H†r;Hj-Xboolr<H†r=HjsjƆr>HhŒX	inCommentr?H†r@HjsjƆrAHhtj†rBHjsjƆrCHjEXfalserDH†rEHj©jÔ†rFHjsj»†rGHjsX    rHH†rIHj-XintrJH†rKHjsjƆrLHhŒXremainingCharNumrMH†rNHjsjƆrOHhtj†rPHjsjƆrQHhŒXlinerRH†rSHj©j>†rTHhŒXlengthrUH†rVHj©jî†rWHj©j†rXHjsjƆrYHhtjô†rZHjsjƆr[HhŒjÀ†r\Hj©jÔ†r]Hjsj»†r^HjsX    r_H†r`Hj-XintraH†rbHjsjƆrcHhŒXcharDistancerdH†reHjsjƆrfHhtj†rgHjsjƆrhHjŸjĆriHj©jÔ†rjHjsj»†rkHjsX    rlH†rmHj-XintrnH†roHjsjƆrpHhŒXchrqH†rrHj©jÔ†rsHjsj»†rtHjsj»†ruHjsX    rvH†rwHjXforrxH†ryHjsjƆrzHj©jî†r{HhŒXcharDistancer|H†r}HjsjƆr~Hhtj†rHjsjƆr€HjŸjĆrHj©jÔ†r‚HjsjƆrƒHhŒXcharDistancer„H†r…HjsjƆr†Hhtj#†r‡HjsjƆrˆHhŒXremainingCharNumr‰H†rŠHj©jÔ†r‹HjsjƆrŒHhŒXcharDistancerH†rŽHhtjΆrHhtjΆrHj©j†r‘Hjsj»†r’HjsX      r“H†r”Hj©jÞ†r•Hjsj»†r–HjsX        r—H†r˜HhŒXchr™H†ršHjsjƆr›Hhtj†rœHjsjƆrHhŒXlineržH†rŸHj©j+†r HhŒjÀ†r¡HjsjƆr¢HhtjΆr£HjsjƆr¤HhŒXcharDistancer¥H†r¦Hj©j…†r§Hj©jÔ†r¨Hjsj»†r©HjsX        rªH†r«HjXifr¬H†r­HjsjƆr®Hj©jî†r¯HhŒX	inCommentr°H†r±Hj©j†r²Hjsj»†r³HjsX
          r´H†rµHj©jÞ†r¶Hjsj»†r·HjsX            r¸H†r¹HjXifrºH†r»HjsjƆr¼Hj©jî†r½HhŒXliner¾H†r¿Hj©j>†rÀHhŒXCOMPARErÁH†rÂHj©jî†rÃHhŒjÀ†rÄHjsjƆrÅHhtjΆrÆHjsjƆrÇHhŒXcharDistancerÈH†rÉHj©jù†rÊHjsjƆrËHjŸj†rÌHj©jù†rÍHjsjƆrÎHhŒXAS_CLOSE_COMMENTrÏH†rÐHj©j†rÑHjsjƆrÒHhtj†rÓHhtj†rÔHjsjƆrÕHjŸj†rÖHj©j†r×Hjsj»†rØHjsX              rÙH†rÚHj©jÞ†rÛHjsj»†rÜHjsX                rÝH†rÞHhŒXcharDistancerßH†ràHhtjΆráHhtjΆrâHj©jÔ†rãHjsj»†räHjsX                råH†ræHhŒX	inCommentrçH†rèHjsjƆréHhtj†rêHjsjƆrëHjEXfalserìH†ríHj©jÔ†rîHjsj»†rïHjsX              rðH†rñHj©j†ròHjsj»†róHjsX            rôH†rõHjXcontinueröH†r÷Hj©jÔ†røHjsj»†rùHjsX
          rúH†rûHj©j†rüHjsj»†rýHjsX        rþH†rÿHjXelserI†rIjsjƆrIjXifrI†rIjsjƆrIj©jî†rIhŒXisWhiteSpacerI†rIj©jî†r	IhŒXchr
I†rIj©j†rIj©j†r
IjsjȠrIjsX
          rI†rIjXcontinuerI†rIj©jÔ†rIjsj»†rIjsX        rI†rIjXelserI†rIjsjƆrIjtXifrI†rIjsjƆrIj©jî†rIhŒXchrI†rIjsjƆr Ihtj†r!Ihtj†r"IjsjƆr#IjÖjú†r$IjÖjˆ'†r%IjÖjú†r&Ij©j†r'Ijsj»†r(IjsX
          r)I†r*Ij©jÞ†r+Ijsj»†r,IjsX            r-I†r.IjXifr/I†r0IjsjƆr1Ij©jî†r2IhŒXliner3I†r4Ij©j>†r5IhŒXCOMPAREr6I†r7Ij©jî†r8IhŒjÀ†r9IjsjƆr:IhtjΆr;IjsjƆr<IhŒXcharDistancer=I†r>Ij©jù†r?IjsjƆr@IjŸj†rAIj©jù†rBIjsjƆrCIhŒXAS_OPEN_LINE_COMMENTrDI†rEIj©j†rFIjsjƆrGIhtj†rHIhtj†rIIjsjƆrJIjŸj†rKIj©j†rLIjsj»†rMIjsX              rNI†rOIjXreturnrPI†rQIjsjƆrRIhŒXremainingCharNumrSI†rTIj©jÔ†rUIjsj»†rVIjsX            rWI†rXIjXelserYI†rZIjsjƆr[IjXifr\I†r]IjsjƆr^Ij©jî†r_IhŒXliner`I†raIj©j>†rbIhŒXCOMPARErcI†rdIj©jî†reIhŒjÀ†rfIjsjƆrgIhtjΆrhIjsjƆriIhŒXcharDistancerjI†rkIj©jù†rlIjsjƆrmIjŸj†rnIj©jù†roIjsjƆrpIhŒXAS_OPEN_COMMENTrqI†rrIj©j†rsIjsjƆrtIhtj†ruIhtj†rvIjsjƆrwIjŸj†rxIj©j†ryIjsj»†rzIjsX              r{I†r|Ij©jÞ†r}Ijsj»†r~IjsX                rI†r€IhŒXcharDistancerI†r‚IhtjΆrƒIhtjΆr„Ij©jÔ†r…Ijsj»†r†IjsX                r‡I†rˆIhŒX	inCommentr‰I†rŠIjsjƆr‹Ihtj†rŒIjsjƆrIjEXtruerŽI†rIj©jÔ†rIjsj»†r‘IjsX              r’I†r“Ij©j†r”Ijsj»†r•IjsX
          r–I†r—Ij©j†r˜Ijsj»†r™IjsX        ršI†r›IjXelserœI†rIjsj»†ržIjsX
          rŸI†r IjXreturnr¡I†r¢IjsjƆr£IhŒXcharDistancer¤I†r¥Ij©jÔ†r¦Ijsj»†r§IjsX      r¨I†r©Ij©j†rªIjsj»†r«Ijsj»†r¬IjsX    r­I†r®IjXreturnr¯I†r°IjsjƆr±IhŒXcharDistancer²I†r³Ij©jÔ†r´Ijsj»†rµIjsX  r¶I†r·Ij©j†r¸Ijsj»†r¹Ijsj»†rºIjsj»†r»IjsX  r¼I†r½IhXÂ/**
   * check if a specific character can be used in a legal variable/method/class name
   *
   * @return          legality of the char.
   * @param ch        the character to be checked.
   */r¾I†r¿Ijsj»†rÀIjsX  rÁI†rÂIj-XboolrÃI†rÄIjsjƆrÅIhŒXASBeautifierrÆI†rÇIhtjé†rÈIhtjé†rÉIhŒXisLegalNameCharrÊI†rËIj©jî†rÌIj-XcharrÍI†rÎIjsjƆrÏIhŒXchrÐI†rÑIj©j†rÒIjsjƆrÓIjXconstrÔI†rÕIjsj»†rÖIjsX    r×I†rØIj©jÞ†rÙIjsj»†rÚIjsX      rÛI†rÜIjXreturnrÝI†rÞIjsjƆrßIj©jî†ràIhŒXisalnumráI†râIj©jî†rãIhŒXchräI†råIj©j†ræIjsjƆrçIh.XJ//(ch>='a' && ch<='z') || (ch>='A' && ch<='Z') || (ch>='0' && ch<='9') ||
rèI†réIjsX              rêI†rëIhtj††rìIhtj††ríIjsjƆrîIhŒXchrïI†rðIhtj†rñIhtj†ròIjÖjú†róIjÖj>†rôIjÖjú†rõIjsjƆröIhtj††r÷Ihtj††røIjsjƆrùIhŒXchrúI†rûIhtj†rüIhtj†rýIjÖjú†rþIjÖj.†rÿIjÖjú†rJjsjƆrJhtj††rJhtj††rJjsjƆrJj©jî†rJhtj:†rJhŒXisCStylerJ†rJjsjƆr	Jhtjõ†r
Jhtjõ†rJjsjƆrJhŒXchr
J†rJhtj†rJhtj†rJjÖjú†rJjÖX$rJ†rJjÖjú†rJj©j†rJjsjƆrJhtj††rJhtj††rJjsjƆrJj©jî†rJhŒXisCStylerJ†rJjsjƆrJhtjõ†rJhtjõ†rJjsjƆr JhŒXchr!J†r"Jhtj†r#Jhtj†r$JjÖjú†r%JjÖj†r&JjÖjú†r'Jj©j†r(Jj©j†r)Jj©jÔ†r*Jjsj»†r+JjsX    r,J†r-Jj©j†r.Jjsj»†r/Jjsj»†r0Jjsj»†r1JjsX  r2J†r3JhXÁ/**
   * check if a specific line position contains a header, out of several possible headers.
   *
   * @return    a pointer to the found header. if no header was found then return NULL.
   */r4J†r5Jjsj»†r6JjsX  r7J†r8JjXconstr9J†r:JjsjƆr;JhŒXstringr<J†r=JjsjƆr>Jhtjÿ†r?JhŒXASBeautifierr@J†rAJhtjé†rBJhtjé†rCJhŒX
findHeaderrDJ†rEJj©jî†rFJjXconstrGJ†rHJjsjƆrIJhŒXstringrJJ†rKJjsjƆrLJhtjõ†rMJhŒXlinerNJ†rOJj©jù†rPJjsjƆrQJj-XintrRJ†rSJjsjƆrTJhŒjÀ†rUJj©jù†rVJjsjƆrWJjXconstrXJ†rYJjsjƆrZJhŒXvectorr[J†r\Jhtj#†r]JjXconstr^J†r_JjsjƆr`JhŒXstringraJ†rbJhtjÿ†rcJhtj	†rdJjsjƆreJhtjõ†rfJhŒXpossibleHeadersrgJ†rhJj©jù†riJjsjƆrjJj-XboolrkJ†rlJjsjƆrmJhŒXcheckBoundryrnJ†roJj©j†rpJjsj»†rqJjsX  rrJ†rsJj©jÞ†rtJjsj»†ruJjsX    rvJ†rwJj-XintrxJ†ryJjsjƆrzJhŒX
maxHeadersr{J†r|JjsjƆr}Jhtj†r~JjsjƆrJhŒXpossibleHeadersr€J†rJj©j>†r‚JhŒXsizerƒJ†r„Jj©jî†r…Jj©j†r†Jj©jÔ†r‡Jjsj»†rˆJjsX    r‰J†rŠJjXconstr‹J†rŒJjsjƆrJhŒXstringrŽJ†rJjsjƆrJhtjÿ†r‘JhŒXheaderr’J†r“JjsjƆr”Jhtj†r•JjsjƆr–JjEXNULLr—J†r˜Jj©jÔ†r™Jjsj»†ršJjsX    r›J†rœJj-XintrJ†ržJjsjƆrŸJhŒXpr J†r¡Jj©jÔ†r¢Jjsj»†r£Jjsj»†r¤JjsX    r¥J†r¦JjXforr§J†r¨JjsjƆr©Jj©jî†rªJhŒj J†r«Jhtj†r¬JjŸj†r­Jj©jÔ†r®JjsjƆr¯JhŒj J†r°JjsjƆr±Jhtj#†r²JjsjƆr³JhŒX
maxHeadersr´J†rµJj©jÔ†r¶JjsjƆr·JhŒj J†r¸JhtjΆr¹JhtjΆrºJj©j†r»Jjsj»†r¼JjsX      r½J†r¾Jj©jÞ†r¿Jjsj»†rÀJjsX        rÁJ†rÂJhŒXheaderrÃJ†rÄJjsjƆrÅJhtj†rÆJjsjƆrÇJhŒXpossibleHeadersrÈJ†rÉJj©j+†rÊJhŒj J†rËJj©j…†rÌJj©jÔ†rÍJjsj»†rÎJjsj»†rÏJjsX        rÐJ†rÑJjXifrÒJ†rÓJjsjƆrÔJj©jî†rÕJhŒXlinerÖJ†r×Jj©j>†rØJhŒXCOMPARErÙJ†rÚJj©jî†rÛJhŒjÀ†rÜJj©jù†rÝJjsjƆrÞJhŒXheaderrßJ†ràJhtjô†ráJhtj	†râJhŒXlengthrãJ†räJj©jî†råJj©j†ræJj©jù†rçJjsjƆrèJhtjÿ†réJhŒXheaderrêJ†rëJj©j†rìJjsjƆríJhtj†rîJhtj†rïJjsjƆrðJjŸj†rñJj©j†ròJjsj»†róJjsX
          rôJ†rõJj©jÞ†röJjsj»†r÷JjsX            røJ†rùJh.X?// check that this is a header and not a part of a longer word
rúJ†rûJjsX            rüJ†rýJh.X4// (e.g. not at its begining, not at its middle...)
rþJ†rÿJjsj»†rKjsX            rK†rKj-XintrK†rKjsjƆrKhŒX
lineLengthrK†rKjsjƆrKhtj†r	KjsjƆr
KhŒXlinerK†rKj©j>†r
KhŒXlengthrK†rKj©jî†rKj©j†rKj©jÔ†rKjsj»†rKjsX            rK†rKj-XintrK†rKjsjƆrKhŒX	headerEndrK†rKjsjƆrKhtj†rKjsjƆrKhŒjÀ†rKjsjƆrKhtjΆr KjsjƆr!KhŒXheaderr"K†r#Khtjô†r$Khtj	†r%KhŒXlengthr&K†r'Kj©jî†r(Kj©j†r)Kj©jÔ†r*Kjsj»†r+KjsX            r,K†r-Kj-Xcharr.K†r/KjsjƆr0KhŒXstartChr1K†r2KjsjƆr3Khtj†r4KjsjƆr5Kj©jî†r6Khtjÿ†r7KhŒXheaderr8K†r9Kj©j†r:Kj©j+†r;KjŸj†r<Kj©j…†r=Kj©jÔ†r>KjsX   r?K†r@Kh.X// first char of header
rAK†rBKjsX            rCK†rDKj-XcharrEK†rFKjsjƆrGKhŒXendChrHK†rIKjsjƆrJKhtj†rKKjsjƆrLKjŸj†rMKj©jÔ†rNKjsX                rOK†rPKh.X// char just after header
rQK†rRKjsX            rSK†rTKj-XcharrUK†rVKjsjƆrWKhŒXprevChrXK†rYKjsjƆrZKhtj†r[KjsjƆr\KjŸj†r]Kj©jÔ†r^KjsX               r_K†r`Kh.X// char just before header
raK†rbKjsj»†rcKjsX            rdK†reKjXifrfK†rgKjsjƆrhKj©jî†riKhŒX	headerEndrjK†rkKjsjƆrlKhtj#†rmKjsjƆrnKhŒX
lineLengthroK†rpKj©j†rqKjsj»†rrKjsX              rsK†rtKj©jÞ†ruKjsj»†rvKjsX                rwK†rxKhŒXendChryK†rzKjsjƆr{Khtj†r|KjsjƆr}KhŒXliner~K†rKj©j+†r€KhŒX	headerEndrK†r‚Kj©j…†rƒKj©jÔ†r„Kjsj»†r…KjsX              r†K†r‡Kj©j†rˆKjsj»†r‰KjsX            rŠK†r‹KjXifrŒK†rKjsjƆrŽKj©jî†rKhŒjÀ†rKjsjƆr‘Khtj	†r’KjsjƆr“KjŸj†r”Kj©j†r•Kjsj»†r–KjsX              r—K†r˜Kj©jÞ†r™Kjsj»†ršKjsX                r›K†rœKhŒXprevChrK†ržKjsjƆrŸKhtj†r KjsjƆr¡KhŒXliner¢K†r£Kj©j+†r¤KhŒjÀ†r¥Khtjô†r¦KjŸjĆr§Kj©j…†r¨Kj©jÔ†r©Kjsj»†rªKjsX              r«K†r¬Kj©j†r­Kjsj»†r®Kjsj»†r¯KjsX            r°K†r±KjXifr²K†r³KjsjƆr´Kj©jî†rµKhtj:†r¶KhŒXcheckBoundryr·K†r¸Kj©j†r¹Kjsj»†rºKjsX              r»K†r¼Kj©jÞ†r½Kjsj»†r¾KjsX                r¿K†rÀKjXreturnrÁK†rÂKjsjƆrÃKhŒXheaderrÄK†rÅKj©jÔ†rÆKjsj»†rÇKjsX              rÈK†rÉKj©j†rÊKjsj»†rËKjsX            rÌK†rÍKjXelserÎK†rÏKjsjƆrÐKjXifrÑK†rÒKjsjƆrÓKj©jî†rÔKhŒXprevChrÕK†rÖKjsjƆr×Khtj:†rØKhtj†rÙKjsjƆrÚKjŸj†rÛKjsj»†rÜKjsX                     rÝK†rÞKhtjõ†rßKhtjõ†ràKjsjƆráKhŒXisLegalNameCharrâK†rãKj©jî†räKhŒXstartChråK†ræKj©j†rçKjsj»†rèKjsX                     réK†rêKhtjõ†rëKhtjõ†rìKjsjƆríKhŒXisLegalNameCharrîK†rïKj©jî†rðKhŒXprevChrñK†ròKj©j†róKj©j†rôKjsj»†rõKjsX              röK†r÷Kj©jÞ†røKjsj»†rùKjsX                rúK†rûKjXreturnrüK†rýKjsjƆrþKjEXNULLrÿK†rLj©jÔ†rLjsj»†rLjsX              rL†rLj©j†rLjsj»†rLjsX            rL†rLjXelser	L†r
LjsjƆrLjXifrL†r
LjsjƆrLj©jî†rLhŒX	headerEndrL†rLjsjƆrLhtj	†rLhtj†rLjsjƆrLhŒX
lineLengthrL†rLjsj»†rLjsX                     rL†rLhtj††rLhtj††rLjsjƆrLhtj:†rLhŒXisLegalNameCharrL†r Lj©jî†r!LhŒXstartChr"L†r#Lj©j†r$Ljsj»†r%LjsX                     r&L†r'Lhtj††r(Lhtj††r)LjsjƆr*Lhtj:†r+LhŒXisLegalNameCharr,L†r-Lj©jî†r.LhŒXendChr/L†r0Lj©j†r1Lj©j†r2Ljsj»†r3LjsX              r4L†r5Lj©jÞ†r6Ljsj»†r7LjsX                r8L†r9LjXreturnr:L†r;LjsjƆr<LhŒXheaderr=L†r>Lj©jÔ†r?Ljsj»†r@LjsX              rAL†rBLj©j†rCLjsj»†rDLjsX            rEL†rFLjXelserGL†rHLjsj»†rILjsX              rJL†rKLj©jÞ†rLLjsj»†rMLjsX                rNL†rOLjXreturnrPL†rQLjsjƆrRLjEXNULLrSL†rTLj©jÔ†rULjsj»†rVLjsX              rWL†rXLj©j†rYLjsj»†rZLjsX
          r[L†r\Lj©j†r]Ljsj»†r^LjsX      r_L†r`Lj©j†raLjsj»†rbLjsj»†rcLjsX    rdL†reLjXreturnrfL†rgLjsjƆrhLjEXNULLriL†rjLj©jÔ†rkLjsj»†rlLjsX  rmL†rnLj©j†roLjsj»†rpLjsj»†rqLjsj»†rrLjsX  rsL†rtLhXÂ/**
   * check if a specific character can be used in a legal variable/method/class name
   *
   * @return          legality of the char.
   * @param ch        the character to be checked.
   */ruL†rvLjsj»†rwLjsX  rxL†ryLj-XboolrzL†r{LjsjƆr|LhŒXASBeautifierr}L†r~Lhtjé†rLhtjé†r€LhŒXisWhiteSpacerL†r‚Lj©jî†rƒLj-Xcharr„L†r…Le(jsjƆr†LhŒXchr‡L†rˆLj©j†r‰LjsjƆrŠLjXconstr‹L†rŒLjsj»†rLjsX    rŽL†rLj©jÞ†rLjsj»†r‘LjsX      r’L†r“LjXreturnr”L†r•LjsjƆr–Lj©jî†r—LhŒXchr˜L†r™LjsjƆršLhtj†r›Lhtj†rœLjsjƆrLjÖjú†ržLjÖjƆrŸLjÖjú†r LjsjƆr¡Lhtj††r¢Lhtj††r£LjsjƆr¤LhŒXchr¥L†r¦LjsjƆr§Lhtj†r¨Lhtj†r©LjsjƆrªLjÖjú†r«LjÖX\tr¬L†r­LjÖjú†r®Lj©j†r¯Lj©jÔ†r°Ljsj»†r±LjsX    r²L†r³Lj©j†r´Ljsj»†rµLjsj»†r¶LjsX  r·L†r¸LhX/**
   * find the index number of a string element in a container of strings
   *
   * @return              the index number of element in the ocntainer. -1 if element not found.
   * @param container     a vector of strings.
   * @param element       the element to find .
   */r¹L†rºLjsj»†r»LjsX  r¼L†r½Lj-Xintr¾L†r¿LjsjƆrÀLhŒXASBeautifierrÁL†rÂLhtjé†rÃLhtjé†rÄLhŒXindexOfrÅL†rÆLj©jî†rÇLhŒXvectorrÈL†rÉLhtj#†rÊLjXconstrËL†rÌLjsjƆrÍLhŒXstringrÎL†rÏLhtjÿ†rÐLhtj	†rÑLjsjƆrÒLhtjõ†rÓLhŒX	containerrÔL†rÕLj©jù†rÖLjsjƆr×LjXconstrØL†rÙLjsjƆrÚLhŒXstringrÛL†rÜLjsjƆrÝLhtjÿ†rÞLhŒXelementrßL†ràLj©j†ráLjsj»†râLjsX  rãL†räLj©jÞ†råLjsj»†ræLjsX    rçL†rèLhŒXvectorréL†rêLhtj#†rëLjXconstrìL†ríLjsjƆrîLhŒXstringrïL†rðLhtjÿ†rñLhtj	†ròLhtjé†róLhtjé†rôLhŒXconst_iteratorrõL†röLjsjƆr÷LhŒXwhererøL†rùLj©jÔ†rúLjsj»†rûLjsj»†rüLjsX    rýL†rþLhŒXwhererÿL†rMhtj†rMjsjƆrMhŒXfindrM†rMj©jî†rMhŒX	containerrM†rMj©j>†rMhŒXbeginr	M†r
Mj©jî†rMj©j†rMj©jù†r
MjsjƆrMhŒX	containerrM†rMj©j>†rMhŒXendrM†rMj©jî†rMj©j†rMj©jù†rMjsjƆrMhŒXelementrM†rMj©j†rMj©jÔ†rMjsj»†rMjsX    rM†rMjXifrM†r MjsjƆr!Mj©jî†r"MhŒXwherer#M†r$MjsjƆr%Mhtj†r&Mhtj†r'MjsjƆr(MhŒX	containerr)M†r*Mj©j>†r+MhŒXendr,M†r-Mj©jî†r.Mj©j†r/Mj©j†r0Mjsj»†r1MjsX      r2M†r3MjXreturnr4M†r5MjsjƆr6Mhtjô†r7MjŸjĆr8Mj©jÔ†r9Mjsj»†r:MjsX    r;M†r<MjXelser=M†r>Mjsj»†r?MjsX      r@M†rAMjXreturnrBM†rCMjsjƆrDMhŒXwhererEM†rFMjsjƆrGMhtjô†rHMjsjƆrIMhŒX	containerrJM†rKMj©j>†rLMhŒXbeginrMM†rNMj©jî†rOMj©j†rPMj©jÔ†rQMjsj»†rRMjsX  rSM†rTMj©j†rUMjsj»†rVMjsj»†rWMjsX  rXM†rYMhX”/**
   * trim removes the white space surrounding a line.
   *
   * @return          the trimmed line.
   * @param str       the line to trim.
   */rZM†r[Mjsj»†r\MjsX  r]M†r^MhŒXstringr_M†r`MjsjƆraMhŒXASBeautifierrbM†rcMhtjé†rdMhtjé†reMhŒXtrimrfM†rgMj©jî†rhMjXconstriM†rjMjsjƆrkMhŒXstringrlM†rmMjsjƆrnMhtjõ†roMhŒXstrrpM†rqMj©j†rrMjsj»†rsMjsX  rtM†ruMj©jÞ†rvMjsj»†rwMjsj»†rxMjsX    ryM†rzMj-Xintr{M†r|MjsjƆr}MhŒXstartr~M†rMjsjƆr€Mhtj†rMjsjƆr‚MjŸj†rƒMj©jÔ†r„Mjsj»†r…MjsX    r†M†r‡Mj-XintrˆM†r‰MjsjƆrŠMhŒXendr‹M†rŒMjsjƆrMhtj†rŽMjsjƆrMhŒXstrrM†r‘Mj©j>†r’MhŒXlengthr“M†r”Mj©jî†r•Mj©j†r–MjsjƆr—Mhtjô†r˜MjsjƆr™MjŸjĆršMj©jÔ†r›Mjsj»†rœMjsj»†rMjsX    ržM†rŸMjXwhiler M†r¡MjsjƆr¢Mj©jî†r£MhŒXstartr¤M†r¥MjsjƆr¦Mhtj#†r§MjsjƆr¨MhŒXendr©M†rªMjsjƆr«Mhtjõ†r¬Mhtjõ†r­MjsjƆr®MhŒXisWhiteSpacer¯M†r°Mj©jî†r±MhŒXstrr²M†r³Mj©j+†r´MhŒXstartrµM†r¶Mj©j…†r·Mj©j†r¸Mj©j†r¹Mjsj»†rºMjsX      r»M†r¼MhŒXstartr½M†r¾MhtjΆr¿MhtjΆrÀMj©jÔ†rÁMjsj»†rÂMjsj»†rÃMjsX    rÄM†rÅMjXwhilerÆM†rÇMjsjƆrÈMj©jî†rÉMhŒXstartrÊM†rËMjsjƆrÌMhtj#†rÍMhtj†rÎMjsjƆrÏMhŒXendrÐM†rÑMjsjƆrÒMhtjõ†rÓMhtjõ†rÔMjsjƆrÕMhŒXisWhiteSpacerÖM†r×Mj©jî†rØMhŒXstrrÙM†rÚMj©j+†rÛMhŒXendrÜM†rÝMj©j…†rÞMj©j†rßMj©j†ràMjsj»†ráMjsX      râM†rãMhŒXendräM†råMhtjô†ræMhtjô†rçMj©jÔ†rèMjsj»†réMjsj»†rêMjsX    rëM†rìMhŒXstringríM†rîMjsjƆrïMjtX	returnStrrðM†rñMj©jî†ròMhŒXstrróM†rôMj©jù†rõMjsjƆröMhŒXstartr÷M†røMj©jù†rùMjsjƆrúMhŒXendrûM†rüMhtjΆrýMjŸjĆrþMhtjô†rÿMhŒXstartrN†rNj©j†rNj©jÔ†rNjsj»†rNjsX    rN†rNjXreturnrN†rNjsjƆr	NhŒX	returnStrr
N†rNj©jÔ†rNjsj»†r
NjsX  rN†rNj©j†rNjsj»†rNjsj»†rNhj†rNhXifdef USES_NAMESPACErN†rNhj»†rNj©j†rNjsj»†rNhj†rNhXendifrN†rNhj»†rNhXŽ/*
 * Copyright (c) 1998,1999,2000,2001,2002 Tal Davidson. All rights reserved.
 *
 * compiler_defines.h   (1 January 1999)
 * by Tal Davidson (davidsont@bigfoot.com)
 * This file is a part of "Artistic Style" - an indentater and reformatter
 * of C, C++, C# and Java source files.
 *
 * The "Artistic Style" project, including all files needed to compile it,
 * is free software; you can redistribute it and/or use it and/or modify it
 * under the terms of the GNU General Public License as published 
 * by the Free Software Foundation; either version 2 of the License, 
 * or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program.
 */rN†rNjsj»†rNjsj»†r Njsj»†r!Nhj†r"NhXifndef ASBEAUTIFIER_Hr#N†r$Nhj»†r%Nhj†r&NhXdefine ASBEAUTIFIER_Hr'N†r(Nhj»†r)Njsj»†r*Nhj†r+NhXincluder,N†r-NjsjƆr.NhVX"ASResource.h"r/N†r0Nhj»†r1Nhj†r2NhXincluder3N†r4NjsjƆr5NhVX"compiler_defines.h"r6N†r7Nhj»†r8Nhj†r9NhXincluder:N†r;NjsjƆr<NhVX"ASSourceIterator.h"r=N†r>Nhj»†r?Njsj»†r@Nhj†rANhXincluderBN†rCNjsjƆrDNhVX<string>rEN†rFNhj»†rGNhj†rHNhXincluderIN†rJNjsjƆrKNhVX<vector>rLN†rMNhj»†rNNjsj»†rONjsj»†rPNjXusingrQN†rRNjsjƆrSNjX	namespacerTN†rUNjsjƆrVNhŒXstdrWN†rXNj©jÔ†rYNjsj»†rZNjsj»†r[NjX	namespacer\N†r]NjsjƆr^NhŒXastyler_N†r`Njsj»†raNjsX  rbN†rcNj©jÞ†rdNjsj»†reNjsj»†rfNjsX  rgN†rhNjXenumriN†rjNjsjƆrkNhŒXBracketModerlN†rmNjsX   rnN†roNj©jÞ†rpNjsjƆrqNhŒX	NONE_MODErrN†rsNj©jù†rtNjsjƆruNhŒXATTACH_MODErvN†rwNj©jù†rxNjsjƆryNhŒX
BREAK_MODErzN†r{Nj©jù†r|NjsjƆr}NhŒX	BDAC_MODEr~N†rNjsjƆr€Nj©j†rNj©jÔ†r‚Njsj»†rƒNjsX  r„N†r…NjXenumr†N†r‡NjsjƆrˆNhŒXBracketTyper‰N†rŠNjsX   r‹N†rŒNj©jÞ†rNjsjƆrŽNhŒX	NULL_TYPErN†rNjsjƆr‘Nhtj†r’NjsjƆr“NjŸj†r”Nj©jù†r•Njsj»†r–NjsX                       r—N†r˜NhŒXDEFINITION_TYPEr™N†ršNjsjƆr›Nhtj†rœNjsjƆrNjŸjĆržNj©jù†rŸNjsj»†r NjsX                       r¡N†r¢NhŒXCOMMAND_TYPEr£N†r¤NjsjƆr¥Nhtj†r¦NjsjƆr§NjŸj†r¨Nj©jù†r©Njsj»†rªNjsX                       r«N†r¬NhŒX
ARRAY_TYPEr­N†r®NjsX  r¯N†r°Nhtj†r±NjsjƆr²NjŸjȆr³Nj©jù†r´Njsj»†rµNjsX                       r¶N†r·NhŒXSINGLE_LINE_TYPEr¸N†r¹NjsjƆrºNhtj†r»NjsjƆr¼NjŸjä6†r½Nj©j†r¾Nj©jÔ†r¿Njsj»†rÀNjsj»†rÁNjsj»†rÂNjsX  rÃN†rÄNjXclassrÅN†rÆNjsjƆrÇNh¹XASBeautifierrÈN†rÉNjsjƆrÊNhtjé†rËNjsjƆrÌNjX	protectedrÍN†rÎNjsjƆrÏNhŒX
ASResourcerÐN†rÑNjsj»†rÒNjsX    rÓN†rÔNj©jÞ†rÕNjsj»†rÖNjsX    r×N†rØNjXpublicrÙN†rÚNhtjé†rÛNjsj»†rÜNjsX      rÝN†rÞNhŒXASBeautifierrßN†ràNj©jî†ráNj©j†râNj©jÔ†rãNjsj»†räNjsX      råN†ræNjXvirtualrçN†rèNjsjƆréNhtj†rêNhŒXASBeautifierrëN†rìNj©jî†ríNj©j†rîNj©jÔ†rïNjsj»†rðNjsX      rñN†ròNjXvirtualróN†rôNjsjƆrõNj-XvoidröN†r÷NjsjƆrøNjtXinitrùN†rúNj©jî†rûNhŒXASSourceIteratorrüN†rýNhtjÿ†rþNjsjƆrÿNhŒXiterrO†rOj©j†rOj©jÔ†rOjsjƆrOh.X,// pointer to dynamically created iterator.
rO†rOjsX      rO†rOjXvirtualr	O†r
OjsjƆrOj-XvoidrO†r
OjsjƆrOjtXinitrO†rOj©jî†rOj©j†rOj©jÔ†rOjsj»†rOjsX      rO†rOjXvirtualrO†rOjsjƆrOj-XboolrO†rOjsjƆrOjtXhasMoreLinesrO†rOj©jî†rOj©j†r OjsjƆr!OjXconstr"O†r#Oj©jÔ†r$Ojsj»†r%OjsX      r&O†r'OjXvirtualr(O†r)OjsjƆr*OhŒXstringr+O†r,OjsjƆr-OjtXnextLiner.O†r/Oj©jî†r0Oj©j†r1Oj©jÔ†r2Ojsj»†r3OjsX      r4O†r5OjXvirtualr6O†r7OjsjƆr8OhŒXstringr9O†r:OjsjƆr;OjtXbeautifyr<O†r=Oj©jî†r>OjXconstr?O†r@OjsjƆrAOhŒXstringrBO†rCOjsjƆrDOhtjõ†rEOhŒXlinerFO†rGOj©j†rHOj©jÔ†rIOjsj»†rJOjsX      rKO†rLOj-XvoidrMO†rNOjsjƆrOOjtXsetTabIndentationrPO†rQOj©jî†rROj-XintrSO†rTOjsjƆrUOhŒXlengthrVO†rWOjsjƆrXOhtj†rYOjsjƆrZOjŸjȆr[Oj©jù†r\OjsjƆr]Oj-Xboolr^O†r_OjsjƆr`OhŒX	forceTabsraO†rbOjsjƆrcOhtj†rdOjsjƆreOjEXfalserfO†rgOj©j†rhOj©jÔ†riOjsj»†rjOjsX      rkO†rlOj-XvoidrmO†rnOjsjƆroOjtXsetSpaceIndentationrpO†rqOj©jî†rrOj-XintrsO†rtOjsjƆruOhŒXlengthrvO†rwOjsjƆrxOhtj†ryOjsjƆrzOjŸjȆr{Oj©j†r|Oj©jÔ†r}Ojsj»†r~OjsX      rO†r€Oj-XvoidrO†r‚OjsjƆrƒOjtXsetMaxInStatementIndentLengthr„O†r…Oj©jî†r†Oj-Xintr‡O†rˆOjsjƆr‰OhŒXmaxrŠO†r‹Oj©j†rŒOj©jÔ†rOjsj»†rŽOjsX      rO†rOj-Xvoidr‘O†r’OjsjƆr“OjtXsetMinConditionalIndentLengthr”O†r•Oj©jî†r–Oj-Xintr—O†r˜OjsjƆr™OhŒXminršO†r›Oj©j†rœOj©jÔ†rOjsj»†ržOjsX      rŸO†r Oj-Xvoidr¡O†r¢OjsjƆr£OjtXsetClassIndentr¤O†r¥Oj©jî†r¦Oj-Xboolr§O†r¨OjsjƆr©OhŒXstaterªO†r«Oj©j†r¬Oj©jÔ†r­Ojsj»†r®OjsX      r¯O†r°Oj-Xvoidr±O†r²OjsjƆr³OjtXsetSwitchIndentr´O†rµOj©jî†r¶Oj-Xboolr·O†r¸OjsjƆr¹OhŒXstaterºO†r»Oj©j†r¼Oj©jÔ†r½Ojsj»†r¾OjsX      r¿O†rÀOj-XvoidrÁO†rÂOjsjƆrÃOjtX
setCaseIndentrÄO†rÅOj©jî†rÆOj-XboolrÇO†rÈOjsjƆrÉOhŒXstaterÊO†rËOj©j†rÌOj©jÔ†rÍOjsj»†rÎOjsX      rÏO†rÐOj-XvoidrÑO†rÒOjsjƆrÓOjtXsetBracketIndentrÔO†rÕOj©jî†rÖOj-Xboolr×O†rØOjsjƆrÙOhŒXstaterÚO†rÛOj©j†rÜOj©jÔ†rÝOjsj»†rÞOjsX      rßO†ràOj-XvoidráO†râOjsjƆrãOjtXsetBlockIndenträO†råOj©jî†ræOj-XboolrçO†rèOjsjƆréOhŒXstaterêO†rëOj©j†rìOj©jÔ†ríOjsj»†rîOjsX      rïO†rðOj-XvoidrñO†ròOjsjƆróOjtXsetNamespaceIndentrôO†rõOj©jî†röOj-Xboolr÷O†røOjsjƆrùOhŒXstaterúO†rûOj©j†rüOj©jÔ†rýOjsj»†rþOjsX      rÿO†rPj-XvoidrP†rPjsjƆrPjtXsetLabelIndentrP†rPj©jî†rPj-XboolrP†rPjsjƆr	PhŒXstater
P†rPj©j†rPj©jÔ†r
Pjsj»†rPjsX      rP†rPj-XvoidrP†rPjsjƆrPjtX	setCStylerP†rPj©jî†rPj©j†rPj©jÔ†rPjsj»†rPjsX      rP†rPj-XvoidrP†rPjsjƆrPjtXsetJavaStylerP†r Pj©jî†r!Pj©j†r"Pj©jÔ†r#Pjsj»†r$PjsX      r%P†r&Pj-Xvoidr'P†r(PjsjƆr)PjtXsetEmptyLineFillr*P†r+Pj©jî†r,Pj-Xboolr-P†r.PjsjƆr/PhŒXstater0P†r1Pj©j†r2Pj©jÔ†r3Pjsj»†r4PjsX      r5P†r6Pj-Xvoidr7P†r8PjsjƆr9PjtXsetPreprocessorIndentr:P†r;Pj©jî†r<Pj-Xboolr=P†r>PjsjƆr?PhŒXstater@P†rAPj©j†rBPj©jÔ†rCPjsj»†rDPjsj»†rEPjsj»†rFPjsX    rGP†rHPjX	protectedrIP†rJPhtjé†rKPjsj»†rLPjsX      rMP†rNPj-XintrOP†rPPjsjƆrQPhŒXgetNextProgramCharDistancerRP†rSPj©jî†rTPjXconstrUP†rVPjsjƆrWPhŒXstringrXP†rYPjsjƆrZPhtjõ†r[PhŒXliner\P†r]Pj©jù†r^PjsjƆr_Pj-Xintr`P†raPjsjƆrbPhŒjÀ†rcPj©j†rdPj©jÔ†rePjsj»†rfPjsX      rgP†rhPj-XboolriP†rjPjsjƆrkPjtXisLegalNameCharrlP†rmPj©jî†rnPj-XcharroP†rpPjsjƆrqPhŒXchrrP†rsPj©j†rtPjsjƆruPjXconstrvP†rwPj©jÔ†rxPjsj»†ryPjsX      rzP†r{Pj-Xboolr|P†r}PjsjƆr~PjtXisWhiteSpacerP†r€Pj©jî†rPj-Xcharr‚P†rƒPjsjƆr„PhŒXchr…P†r†Pj©j†r‡PjsjƆrˆPjXconstr‰P†rŠPj©jÔ†r‹Pjsj»†rŒPjsX      rP†rŽPjXconstrP†rPjsjƆr‘PhŒXstringr’P†r“PjsjƆr”Phtjÿ†r•PjtX
findHeaderr–P†r—Pj©jî†r˜PjXconstr™P†ršPjsjƆr›PhŒXstringrœP†rPjsjƆržPhtjõ†rŸPhŒXliner P†r¡Pj©jù†r¢PjsjƆr£Pj-Xintr¤P†r¥PjsjƆr¦PhŒjÀ†r§Pj©jù†r¨Pjsj»†r©PjsX                               rªP†r«PjXconstr¬P†r­PjsjƆr®PhŒXvectorr¯P†r°Phtj#†r±PjXconstr²P†r³PjsjƆr´PhŒXstringrµP†r¶Phtjÿ†r·Phtj	†r¸PjsjƆr¹Phtjõ†rºPhŒXpossibleHeadersr»P†r¼Pj©jù†r½Pjsj»†r¾PjsX                               r¿P†rÀPj-XboolrÁP†rÂPjsjƆrÃPhŒXcheckBoundryrÄP†rÅPjsjƆrÆPhtj†rÇPjsjƆrÈPjEXtruerÉP†rÊPj©j†rËPj©jÔ†rÌPjsj»†rÍPjsX      rÎP†rÏPhŒXstringrÐP†rÑPjsjƆrÒPjtXtrimrÓP†rÔPj©jî†rÕPjXconstrÖP†r×PjsjƆrØPhŒXstringrÙP†rÚPjsjƆrÛPhtjõ†rÜPhŒXstrrÝP†rÞPj©j†rßPj©jÔ†ràPjsj»†ráPjsX      râP†rãPj-XinträP†råPjsjƆræPjtXindexOfrçP†rèPj©jî†réPhŒXvectorrêP†rëPhtj#†rìPjXconstríP†rîPjsjƆrïPhŒXstringrðP†rñPhtjÿ†ròPhtj	†róPjsjƆrôPhtjõ†rõPhŒX	containerröP†r÷Pj©jù†røPjsjƆrùPjXconstrúP†rûPjsjƆrüPhŒXstringrýP†rþPjsjƆrÿPhtjÿ†rQhŒXelementrQ†rQj©j†rQj©jÔ†rQjsj»†rQjsj»†rQjsX    rQ†rQjXprivater	Q†r
Qhtjé†rQjsj»†rQjsX      r
Q†rQhŒXASBeautifierrQ†rQj©jî†rQjXconstrQ†rQjsjƆrQhŒXASBeautifierrQ†rQjsjƆrQhtjõ†rQhŒXcopyrQ†rQj©j†rQj©jÔ†rQjsj»†rQjsX      rQ†rQj-Xvoidr Q†r!QjsjƆr"QjXoperatorr#Q†r$Qhtj†r%Qj©jî†r&QhŒXASBeautifierr'Q†r(Qhtjõ†r)Qj©j†r*Qj©jÔ†r+QjsjƆr,Qh.X// not to be implemented
r-Q†r.Qjsj»†r/QjsX      r0Q†r1Qj-Xvoidr2Q†r3QjsjƆr4QjtX
initStaticr5Q†r6Qj©jî†r7Qj©j†r8Qj©jÔ†r9Qjsj»†r:QjsX      r;Q†r<Qj-Xvoidr=Q†r>QjsjƆr?QjtXregisterInStatementIndentr@Q†rAQj©jî†rBQjXconstrCQ†rDQjsjƆrEQhŒXstringrFQ†rGQjsjƆrHQhtjõ†rIQhŒXlinerJQ†rKQj©jù†rLQjsjƆrMQj-XintrNQ†rOQjsjƆrPQhŒjÀ†rQQj©jù†rRQjsjƆrSQj-XintrTQ†rUQjsjƆrVQhŒX
spaceTabCountrWQ†rXQj©jù†rYQjsj»†rZQjsX%                                     r[Q†r\Qj-Xintr]Q†r^QjsjƆr_QhŒX	minIndentr`Q†raQj©jù†rbQjsjƆrcQj-XboolrdQ†reQjsjƆrfQhŒXupdateParenStackrgQ†rhQj©j†riQj©jÔ†rjQjsj»†rkQjsX      rlQ†rmQhŒXstringrnQ†roQjsjƆrpQjtX	preLineWSrqQ†rrQj©jî†rsQj-XintrtQ†ruQjsjƆrvQhŒX
spaceTabCountrwQ†rxQj©jù†ryQjsjƆrzQj-Xintr{Q†r|QjsjƆr}QhŒXtabCountr~Q†rQj©j†r€Qj©jÔ†rQjsj»†r‚Qjsj»†rƒQjsX      r„Q†r…QjXstaticr†Q†r‡QjsjƆrˆQhŒXvectorr‰Q†rŠQhtj#†r‹QjXconstrŒQ†rQjsjƆrŽQhŒXstringrQ†rQhtjÿ†r‘Qhtj	†r’QjsjƆr“QhŒXheadersr”Q†r•Qj©jÔ†r–Qjsj»†r—QjsX      r˜Q†r™QjXstaticršQ†r›QjsjƆrœQhŒXvectorrQ†ržQhtj#†rŸQjXconstr Q†r¡QjsjƆr¢QhŒXstringr£Q†r¤Qhtjÿ†r¥Qhtj	†r¦QjsjƆr§QhŒXnonParenHeadersr¨Q†r©Qj©jÔ†rªQjsj»†r«QjsX      r¬Q†r­QjXstaticr®Q†r¯QjsjƆr°QhŒXvectorr±Q†r²Qhtj#†r³QjXconstr´Q†rµQjsjƆr¶QhŒXstringr·Q†r¸Qhtjÿ†r¹Qhtj	†rºQjsjƆr»QhŒXpreprocessorHeadersr¼Q†r½Qj©jÔ†r¾Qjsj»†r¿QjsX      rÀQ†rÁQjXstaticrÂQ†rÃQjsjƆrÄQhŒXvectorrÅQ†rÆQhtj#†rÇQjXconstrÈQ†rÉQjsjƆrÊQhŒXstringrËQ†rÌQhtjÿ†rÍQhtj	†rÎQjsjƆrÏQhŒXpreBlockStatementsrÐQ†rÑQj©jÔ†rÒQjsj»†rÓQjsX      rÔQ†rÕQjXstaticrÖQ†r×QjsjƆrØQhŒXvectorrÙQ†rÚQhtj#†rÛQjXconstrÜQ†rÝQjsjƆrÞQhŒXstringrßQ†ràQhtjÿ†ráQhtj	†râQjsjƆrãQhŒXassignmentOperatorsräQ†råQj©jÔ†ræQe(jsj»†rçQjsX      rèQ†réQjXstaticrêQ†rëQjsjƆrìQhŒXvectorríQ†rîQhtj#†rïQjXconstrðQ†rñQjsjƆròQhŒXstringróQ†rôQhtjÿ†rõQhtj	†röQjsjƆr÷QhŒXnonAssignmentOperatorsrøQ†rùQj©jÔ†rúQjsj»†rûQjsj»†rüQjsX      rýQ†rþQjXstaticrÿQ†rRjsjƆrRj-XboolrR†rRjsjƆrRhŒXcalledInitStaticrR†rRj©jÔ†rRjsj»†rRjsj»†r	RjsX      r
R†rRhŒXASSourceIteratorrR†r
RjsjƆrRhtjÿ†rRhŒXsourceIteratorrR†rRj©jÔ†rRjsj»†rRjsX      rR†rRhŒXvectorrR†rRhtj#†rRhŒXASBeautifierrR†rRhtjÿ†rRhtj	†rRjsjƆrRhtjÿ†rRhŒXwaitingBeautifierStackrR†r Rj©jÔ†r!Rjsj»†r"RjsX      r#R†r$RhŒXvectorr%R†r&Rhtj#†r'RhŒXASBeautifierr(R†r)Rhtjÿ†r*Rhtj	†r+RjsjƆr,Rhtjÿ†r-RhŒXactiveBeautifierStackr.R†r/Rj©jÔ†r0Rjsj»†r1RjsX      r2R†r3RhŒXvectorr4R†r5Rhtj#†r6Rj-Xintr7R†r8Rhtj	†r9RjsjƆr:Rhtjÿ†r;RhŒX!waitingBeautifierStackLengthStackr<R†r=Rj©jÔ†r>Rjsj»†r?RjsX      r@R†rARhŒXvectorrBR†rCRhtj#†rDRj-XintrER†rFRhtj	†rGRjsjƆrHRhtjÿ†rIRhŒX activeBeautifierStackLengthStackrJR†rKRj©jÔ†rLRjsj»†rMRjsX      rNR†rORhŒXvectorrPR†rQRhtj#†rRRjXconstrSR†rTRjsjƆrURhŒXstringrVR†rWRhtjÿ†rXRhtj	†rYRjsjƆrZRhtjÿ†r[RhŒXheaderStackr\R†r]Rj©jÔ†r^Rjsj»†r_RjsX      r`R†raRhŒXvectorrbR†rcRhtj#†rdRjsjƆreRhŒXvectorrfR†rgRhtj#†rhRjXconstriR†rjRjsjƆrkRhŒXstringrlR†rmRhtjÿ†rnRhtj	†roRhtjÿ†rpRjsjƆrqRhtj	†rrRjsjƆrsRhtjÿ†rtRhŒX
tempStacksruR†rvRj©jÔ†rwRjsj»†rxRjsX      ryR†rzRhŒXvectorr{R†r|Rhtj#†r}Rj-Xintr~R†rRhtj	†r€RjsjƆrRhtjÿ†r‚RhŒXblockParenDepthStackrƒR†r„Rj©jÔ†r…Rjsj»†r†RjsX      r‡R†rˆRhŒXvectorr‰R†rŠRhtj#†r‹Rj-XboolrŒR†rRhtj	†rŽRjsjƆrRhtjÿ†rRhŒXblockStatementStackr‘R†r’Rj©jÔ†r“Rjsj»†r”RjsX      r•R†r–RhŒXvectorr—R†r˜Rhtj#†r™Rj-XboolršR†r›Rhtj	†rœRjsjƆrRhtjÿ†ržRhŒXparenStatementStackrŸR†r Rj©jÔ†r¡Rjsj»†r¢RjsX      r£R†r¤RhŒXvectorr¥R†r¦Rhtj#†r§Rj-Xintr¨R†r©Rhtj	†rªRjsjƆr«Rhtjÿ†r¬RhŒXinStatementIndentStackr­R†r®Rj©jÔ†r¯Rjsj»†r°RjsX      r±R†r²RhŒXvectorr³R†r´Rhtj#†rµRj-Xintr¶R†r·Rhtj	†r¸RjsjƆr¹Rhtjÿ†rºRhŒXinStatementIndentStackSizeStackr»R†r¼Rj©jÔ†r½Rjsj»†r¾RjsX      r¿R†rÀRhŒXvectorrÁR†rÂRhtj#†rÃRj-XintrÄR†rÅRhtj	†rÆRjsjƆrÇRhtjÿ†rÈRhŒXparenIndentStackrÉR†rÊRj©jÔ†rËRjsj»†rÌRjsX      rÍR†rÎRhŒXvectorrÏR†rÐRhtj#†rÑRj-XboolrÒR†rÓRhtj	†rÔRjsjƆrÕRhtjÿ†rÖRhŒXbracketBlockStateStackr×R†rØRj©jÔ†rÙRjsj»†rÚRjsX      rÛR†rÜRhŒXstringrÝR†rÞRjsjƆrßRhŒXindentStringràR†ráRj©jÔ†râRjsj»†rãRjsX      räR†råRjXconstræR†rçRjsjƆrèRhŒXstringréR†rêRjsjƆrëRhtjÿ†rìRhŒX
currentHeaderríR†rîRj©jÔ†rïRjsj»†rðRjsX      rñR†ròRjXconstróR†rôRjsjƆrõRhŒXstringröR†r÷RjsjƆrøRhtjÿ†rùRhŒXpreviousLastLineHeaderrúR†rûRj©jÔ†rüRjsj»†rýRjsX      rþR†rÿRjXconstrS†rSjsjƆrShŒXstringrS†rSjsjƆrShtjÿ†rShŒXimmediatelyPreviousAssignmentOprS†rSj©jÔ†r	Sjsj»†r
SjsX      rS†rSjXconstr
S†rSjsjƆrShŒXstringrS†rSjsjƆrShtjÿ†rShŒXprobationHeaderrS†rSj©jÔ†rSjsj»†rSjsX      rS†rSj-XboolrS†rSjsjƆrShŒX	isInQuoterS†rSj©jÔ†rSjsj»†r SjsX      r!S†r"Sj-Xboolr#S†r$SjsjƆr%ShŒXisInCommentr&S†r'Sj©jÔ†r(Sjsj»†r)SjsX      r*S†r+Sj-Xboolr,S†r-SjsjƆr.ShŒXisInCaser/S†r0Sj©jÔ†r1Sjsj»†r2SjsX      r3S†r4Sj-Xboolr5S†r6SjsjƆr7ShŒXisInQuestionr8S†r9Sj©jÔ†r:Sjsj»†r;SjsX      r<S†r=Sj-Xboolr>S†r?SjsjƆr@ShŒX
isInStatementrAS†rBSj©jÔ†rCSjsj»†rDSjsX      rES†rFSj-XboolrGS†rHSjsjƆrIShŒX
isInHeaderrJS†rKSj©jÔ†rLSjsj»†rMSjsX      rNS†rOSj-XboolrPS†rQSjsjƆrRShŒXisCStylerSS†rTSj©jÔ†rUSjsj»†rVSjsX      rWS†rXSj-XboolrYS†rZSjsjƆr[ShŒXisInOperatorr\S†r]Sj©jÔ†r^Sjsj»†r_SjsX      r`S†raSj-XboolrbS†rcSjsjƆrdShŒXisInTemplatereS†rfSj©jÔ†rgSjsj»†rhSjsX      riS†rjSj-XboolrkS†rlSjsjƆrmShŒX	isInConstrnS†roSj©jÔ†rpSjsj»†rqSjsX      rrS†rsSj-XboolrtS†ruSjsjƆrvShŒX
isInDefinerwS†rxSj©jÔ†rySjsj»†rzSjsX      r{S†r|Sj-Xboolr}S†r~SjsjƆrShŒXisInDefineDefinitionr€S†rSj©jÔ†r‚Sjsj»†rƒSjsX      r„S†r…Sj-Xboolr†S†r‡SjsjƆrˆShŒXclassIndentr‰S†rŠSj©jÔ†r‹Sjsj»†rŒSjsX      rS†rŽSj-XboolrS†rSjsjƆr‘ShŒXisInClassHeaderr’S†r“Sj©jÔ†r”Sjsj»†r•SjsX      r–S†r—Sj-Xboolr˜S†r™SjsjƆršShŒXisInClassHeaderTabr›S†rœSj©jÔ†rSjsj»†ržSjsX      rŸS†r Sj-Xboolr¡S†r¢SjsjƆr£ShŒXswitchIndentr¤S†r¥Sj©jÔ†r¦Sjsj»†r§SjsX      r¨S†r©Sj-XboolrªS†r«SjsjƆr¬ShŒX
caseIndentr­S†r®Sj©jÔ†r¯Sjsj»†r°SjsX      r±S†r²Sj-Xboolr³S†r´SjsjƆrµShŒXnamespaceIndentr¶S†r·Sj©jÔ†r¸Sjsj»†r¹SjsX      rºS†r»Sj-Xboolr¼S†r½SjsjƆr¾ShŒX
bracketIndentr¿S†rÀSj©jÔ†rÁSjsj»†rÂSjsX      rÃS†rÄSj-XboolrÅS†rÆSjsjƆrÇShŒXblockIndentrÈS†rÉSj©jÔ†rÊSjsj»†rËSjsX      rÌS†rÍSj-XboolrÎS†rÏSjsjƆrÐShŒXlabelIndentrÑS†rÒSj©jÔ†rÓSjsj»†rÔSjsX      rÕS†rÖSj-Xboolr×S†rØSjsjƆrÙShŒXpreprocessorIndentrÚS†rÛSj©jÔ†rÜSjsj»†rÝSjsX      rÞS†rßSj-XboolràS†ráSjsjƆrâShŒXisInConditionalrãS†räSj©jÔ†råSjsj»†ræSjsX      rçS†rèSj-XboolréS†rêSjsjƆrëShŒXisMinimalConditinalIndentSetrìS†ríSj©jÔ†rîSjsj»†rïSjsX      rðS†rñSj-XboolròS†róSjsjƆrôShŒXshouldForceTabIndentationrõS†röSj©jÔ†r÷Sjsj»†røSjsX      rùS†rúSj-XintrûS†rüSjsjƆrýShŒXminConditionalIndentrþS†rÿSj©jÔ†rTjsj»†rTjsX      rT†rTj-XintrT†rTjsjƆrThŒX
parenDepthrT†rTj©jÔ†r	Tjsj»†r
TjsX      rT†rTj-Xintr
T†rTjsjƆrThŒXindentLengthrT†rTj©jÔ†rTjsj»†rTjsX      rT†rTj-XintrT†rTjsjƆrThŒX
blockTabCountrT†rTj©jÔ†rTjsj»†rTjsX      rT†rTj-XunsignedrT†r TjsjƆr!Tj-Xintr"T†r#TjsjƆr$ThŒXleadingWhiteSpacesr%T†r&Tj©jÔ†r'Tjsj»†r(TjsX      r)T†r*Tj-Xintr+T†r,TjsjƆr-ThŒXmaxInStatementIndentr.T†r/Tj©jÔ†r0Tjsj»†r1TjsX      r2T†r3Tj-Xintr4T†r5TjsjƆr6ThŒX
templateDepthr7T†r8Tj©jÔ†r9Tjsj»†r:TjsX      r;T†r<Tj-Xcharr=T†r>TjsjƆr?ThŒX	quoteCharr@T†rATj©jÔ†rBTjsj»†rCTjsX      rDT†rETj-XcharrFT†rGTjsjƆrHThŒXprevNonSpaceChrIT†rJTj©jÔ†rKTjsj»†rLTjsX      rMT†rNTj-XcharrOT†rPTjsjƆrQThŒXcurrentNonSpaceChrRT†rSTj©jÔ†rTTjsj»†rUTjsX      rVT†rWTj-XcharrXT†rYTjsjƆrZThŒXcurrentNonLegalChr[T†r\Tj©jÔ†r]Tjsj»†r^TjsX      r_T†r`Tj-XcharraT†rbTjsjƆrcThŒXprevNonLegalChrdT†reTj©jÔ†rfTjsj»†rgTjsX      rhT†riTj-XintrjT†rkTjsjƆrlThŒXprevFinalLineSpaceTabCountrmT†rnTj©jÔ†roTjsj»†rpTjsX      rqT†rrTj-XintrsT†rtTjsjƆruThŒXprevFinalLineTabCountrvT†rwTj©jÔ†rxTjsj»†ryTjsX      rzT†r{Tj-Xboolr|T†r}TjsjƆr~ThŒX
emptyLineFillrT†r€Tj©jÔ†rTjsj»†r‚TjsX      rƒT†r„Tj-Xboolr…T†r†TjsjƆr‡ThŒXbackslashEndsPrevLinerˆT†r‰Tj©jÔ†rŠTjsj»†r‹TjsX      rŒT†rTj-XintrŽT†rTjsjƆrThŒXdefineTabCountr‘T†r’Tj©jÔ†r“Tjsj»†r”TjsX    r•T†r–Tj©j†r—Tj©jÔ†r˜Tjsj»†r™Tj©j†ršTjsj»†r›Tjsj»†rœThj†rThXendifržT†rŸThj»†r ThXÌ/*
 * Copyright (c) 1998,1999,2000,2001,2002 Tal Davidson. All rights reserved.
 *
 * ASFormatter.cpp
 * by Tal Davidson (davidsont@bigfoot.com)
 * This file is a part of "Artistic Style" - an indentater and reformatter
 * of C, C++, C# and Java source files.
 *
 * The "Artistic Style" project, including all files needed to compile it,
 * is free software; you can redistribute it and/or use it and/or modify it
 * under the terms of the GNU General Public License as published 
 * by the Free Software Foundation; either version 2 of the License, 
 * or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program.
 *
 *
 * Patches:
 * 26 November 1998 - Richard Bullington -
 *        A correction of line-breaking in headers following '}',
 
 *        was created using a variation of a  patch by Richard Bullington.
 * 08 May 2004
 *        applied   ASFormatter450670.patch.bz2, ASFormatter.cpp.patch.bz2,
 *                  patch1_ssvb_patch.tar.gz
 */r¡T†r¢Tjsj»†r£Tjsj»†r¤Thj†r¥ThXincluder¦T†r§TjsjƆr¨ThVX"compiler_defines.h"r©T†rªThj»†r«Thj†r¬ThXincluder­T†r®TjsjƆr¯ThVX"ASFormatter.h"r°T†r±Thj»†r²Tjsj»†r³Tjsj»†r´Thj†rµThXincluder¶T†r·TjsjƆr¸ThVX<string>r¹T†rºThj»†r»Thj†r¼ThXincluder½T†r¾TjsjƆr¿ThVX<cctype>rÀT†rÁThj»†rÂThj†rÃThXincluderÄT†rÅTjsjƆrÆThVX<vector>rÇT†rÈThj»†rÉThj†rÊThXincluderËT†rÌTjsjƆrÍThVX<algorithm>rÎT†rÏThj»†rÐThj†rÑThXincluderÒT†rÓTjsjƆrÔThVX
<iostream>rÕT†rÖThj»†r×Tjsj»†rØTjsj»†rÙThj†rÚThXtdefine INIT_CONTAINER(container, value)     {if ( (container) != NULL ) delete (container); (container) = (value); }rÛT†rÜThj»†rÝThj†rÞThX^define DELETE_CONTAINER(container)          {if ( (container) != NULL ) delete (container) ; }rßT†ràThj»†ráThj†râThXAdefine IS_A(a,b)                            ( ((a) & (b)) == (b))rãT†räThj»†råThj†ræThXifdef USES_NAMESPACErçT†rèThj»†réTjXusingrêT†rëTjsjƆrìTjX	namespaceríT†rîTjsjƆrïThŒXstdrðT†rñTj©jÔ†ròTjsj»†róTe.