rst2pdf-0.93/0000775000175000017500000000000012064144447012705 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/0000775000175000017500000000000012064144446014270 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/writer.py0000664000175000017500000000153411222661770016160 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms from StringIO import StringIO from docutils import writers from rst2pdf import createpdf class PdfWriter(writers.Writer): def __init__(self, builder): writers.Writer.__init__(self) self.builder = builder self.output = u'' supported = ('pdf') """Formats this writer supports.""" config_section = 'pdf writer' config_section_dependencies = ('writers') """Final translated form of `document`.""" def translate(self): sio = StringIO('') createpdf.RstToPdf(sphinx=True).createPdf( doctree=self.document, output=sio, compressed=False) self.output = unicode(sio.getvalue(), 'utf-8', 'ignore') def supports(self, format): """This writer supports all format-specific elements.""" return 1 rst2pdf-0.93/rst2pdf/counter_role.py0000664000175000017500000000142211353154034017333 0ustar ralsinaralsina# -*- coding: utf-8 -*- from docutils.nodes import Text, target values = {} class CounterNode(Text): children = () def __init__(self, data, rawsource=''): if ':' in data: self.name, value = [s.lower() for s in data.split(':')][:2] self.value=int(value) else: self.name=data.lower() self.value=values.get(self.name,1) values[self.name]=self.value+1 def astext(self): return unicode(self.value) def counter_fn(name, rawtext, text, lineno, inliner, options={}, content=[]): n=CounterNode(text) s='%s-%s'%(n.name, n.value) return [target(ids=[s]),n], [] counter_fn.content=True from docutils.parsers.rst import roles roles.register_canonical_role('counter', counter_fn) rst2pdf-0.93/rst2pdf/icons/0000775000175000017500000000000012064144446015403 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/images/0000775000175000017500000000000012064144446015535 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/images/image-missing.png0000664000175000017500000002573411206654557021015 0ustar ralsinaralsinaPNG  IHDR>asRGBbKGD pHYs.#.#x?vtIME,+L IDATxywy?}}ޫsK>`lcb'@*DR@c 88ؐTb TD-cXȇӖeYcW{=tzfgwgWJvWuuONOy~;qx{{nۏ୽s B㥷qۙ |6N>["̊." 56!6`!A/.H6Ǐ&`vs6$M @maY%|~_t @GFM{r@AhEE@8ˉAcGs! Z~ `|bJE0L9odUf| _zl AdY&bȳu43a=9"y䝺i5#5 4k}@V/L|A su~!Ǩ\M X%|? 0@L$o]fS<#4SO?+5K`n`8E -Y,+}>9 0plĘO70. l9>[E8~nD`q,| XP?5-Ǣ hs`70/ZvSy*S\=l]R ?..`%_'tans*كPV?o`'oA0=MlAh`a*±Zͩ@cXj|p@b{f.`@*zquǶuSAVA8~n``'5388Ѷk׽{QIks|!a/U- Ƕ1M˲0Lvn[ib6mWE$IBQ$@ $Ȳ(5b,".`{mYibQTP+* WnYUMgbQ F   FaB@J W)Q^۶iY躎R.S(( emې^x#A`o/N4ZIiR)OlJ,F&S)lF0^5 dh4J(YNf1ߢ՛ae\"?4BʕD=9E EѲElMC*ccrՕXI&ذez+VIvwJHU "I7 rc9{l0MEP(fOL`=/\,"RtXO( 8Cc&Bu$HW²eʞ=~#`<?sR"]5HR@ t9sD&`׆Br_,f2d2GAO`t9ƿ%uHzTSo5f{=NC4oc?GptpY`0 1Ouİ8}0S?W7t\.8ك-]B2=k:u%8Ѳz0x30Op,ot!Z o ̥e*\1r۷÷0>FoOjS`-_Aǐ"AmCC JMȲ|44[t=&DlWL&~ӟss C `888Q.6b8 c L vY92֓8_"_W@,Ce0AloB˶T*d3FGF(?OK_$̕y)%ǡR̐{e7ڑv]*!XN q1=z_p ۞BL7x{Iw8v-(֔/)4\6'^ϊ?I@0Z5r`Llێ/XN;D!@H&qǫ͡QDtYgv@~rx!d?\?z("][KE"DHpy/+>6-4fl MߎS6r;;ᢋ.aJDY=1u0 !Tz"dvĸ.dKm }<Sa~;SABz{>ի BZN߳La`y&:ڵO>c8oy7o8w9VAAr",r1 B 281 0SihX(!'mVz8f'~.CG ňbDc1"0@ UV E!2z_tol֭{zE;qɁ-HX>ơO`{ZY+/y$VU>}cL!pjB7Lt:M{{{[mrQk$T*AۄܛAwsA(W^C~+;w bgtq0\.@\-m:bB>O?FLhp N6u~a[&Jaǟ@-눭[GK,vx}~ kK‰ )q6"'=*V,lӢ /q"~@>X,iZ-OpJX)^OJ ;aP*e0Gb$1mu[ne9Sh#*kK쳟>:::ܢt;=E!n6"-Iޫae&w?{k87+:`CdY2ah1lgl?'#qت3AagPdN?>GWW===kMN/=Bgdd; 5U6&XV~2`d^}kBI?LBhT@\?24&}, EU) xT="l]wD;[n!AWWTjreoxxg?+ϣ  l=rgY&NH:RX@5<BX5%1sY7hfT;(n\7_]a:;v+6|K$J"kI1o~!:{{eX?l"b;$ݵW $eFQE`&b1iY㠻={ʻw;she7HNn5k_vtv"n? )eaAPF}.BvlE7vB0CIQ޵ EQugj뚆(-BP$ڗօO{14㴵ўNmfə~k9)ZܿFLmi"_,p,NnVOMC6BĠ@PJrj`.dp4QUn݊ LaFW^q"J[)K7 'd;.E Q_ن3d 6 `5p|;Ivn%V:\D/8n88JtRĘK^˪i'5 .7 ɹ̪WUÇ [م脰zA)b6#L$\zw_ ReAʾ~cپ̮q0nKKڑ#7PC)t!CPU745U{Q~)Y ޟTܮDy((w7ߓ9Ӭj0)=}%F!@/2Ӊ}kiW_#PGˈ2)IHhv`AB d>4A9lhUl8Z |abnN;?5Wc)oRzQ}ED7//:k)&v8n#N#"Bs1ؖ\[r\5.!twRw '/947oYf6˴WfBj&Z]zim??Gacl ֞"|ĩs:سYFw8u#N8(RRWw`eXV>H\E ALxJ(ߤ3 Ā#ئUW]CcYU0{״~=.<r X*w] g72cȊU[GW?===$Z?ҥXYD@*]g&"FPu(70B8Fkx TTGZ/J5?1]˖ :G+95~qq%dצ 6Fd}i"HAK`#+?+2%lF hcZoSBf;O74J9֫ٿ5:c`V Xj7{i # jbr@qM;7[/`wGOO7π$Ib6X[[0* [:5bYu?WDz(r(8Hm8aԏiF, L vhv\~^8'ŶM(%+YK:k6n" `{[k23g HĐ;(ˈj3Zڃ6!$"R(e3_f ^㺳iPw+$ `d!Y>3Ik/_i6}}|_m誊J`kvk X#lÄ è+_a?7ř W[VDWŀy~%}۫w|/3  tnYuB"zAL$>:YjSAhBKHVl ԯhM"Q ),>Qί|^dɚ$\]nv.H; w{prn| è DUDQ@ Ln4SAr[! ) "j)#@BBIhV0 2 ###۲kRN_A٨_\ qad׶d.\u]RyyAY_AM&:.`A77Y&@S, {habK߳0\:pcta}ٺeqN[BMuQ;"f,|%KZNj/|}$yǰ~K-hEd`iR$l@r/ aB1OZ c|:đ#G/qdf.hd,:k/t\qI;["d w-awCW lRca9 ƨ>'C7@8 %E:k"NKՉv%*"072::;Uoᴋ9 f_֠Ď]K஻ƶ'RRУK$VI0QIJeD;;농;Mg3'0{ʲL~Ed4ĐD Xc+ o~;C;r~1S0Zׁ^ l{ah.jG9LUע " K.! `6w)@4 (fyPb${xe;$B2g^fu*|f_D;~.#r9<w=źd_bɠZz4DfY鬿n HZE2@e\#0rymXKҜx~g{!N6D^|~HG?N TY۝P(011>Habg%+E^"c*.+VD9~Zt:R, n ^zu TQHD}1sN) $a\ ύMqY Ou|>7?kEheIla%_O,#/Z=2HD$!Lr_5X=I">gM q̼^W4!0Šƈߝ3޷MB]s۱wU1iq)XH$FHXo&sRf`xSR)?a,QMIN"Pq_3#.̀$wwYcDzxRadxgo Q$(/O"z9)2a3>\$3jN 吝v j}ޱ9}$쫻xQm=\u=KzƏ9={x ;2Wt[0(!4g#D`YwI;ѓ,}*e8y\ / ڬ| *{Y)(jl!,le}?+//Qx~mzݗu2& l}a%_@ߕWJ|l:09ǷJ7+𫀢(\ȣ$8p T\Z3a`Y(?r. /{>Yg&yH͚!! ?J` ,ΛLwo%KS HӤiDm\|YI&D"괸^7ͯȹg]K 0ZǏ(ͮJұPe}9 !=I:tc¤aR@$JIUL(SIR \vgĻD"$ܒ7U{*ttrnn86tYwܱcsԧo%Ci U* ;h\ç}12oZ(`*6r @$M8 H(V}#vZD"D"(H6S[v6|R]Z 8> iGr,Hx<^Þw?63_a!;l! X88Qs4ȴHRN5M/m>y#YqYaOu~_=x}=D3Dަ-s  &y晇@/|c>-ap2-q*?3!ZFàViߺu[o]==}FIj Ɯ [f5?Ϋn~c\(pRU˯8Xe6˗/-[l?}eYD)1633ǛNliAWW(N+<̯^˲r~SoqNp:aZ7W*~;xko@8мOJiȤRVk= B.`hw.g[6]]]M3|RIwC=b7ߒhVmpXO/g86mmmruO$;;q`ö8ƒ-/۶m;|縃B{Do >|8 &lȂys+p.w]7x]Lf ;'l͘]<&۶m}|t-D3D1Bq*(Ou. vU};9s36rBO,%yyA=-ԘO:Z'U̔hݚ_V}:bkU…07Uu9PN4}WVRj}czR*96b˸{ʴ.޹II`']h1 qH,hM-jnui],oBvCc""vٹ<<[]ASRV5ˠlw9yy$q$Et:-rZ9fc(rp7pPŗNDyr]Ɨէu,mpp 9{;TÐ|=.D47,A)hƟ@ň%8"P5XN.~ NK4/'O^C$ ZL{4Aap>ӗ9lz=shx+; X"+30E&j2τ̊NZ)wAhIho ޥ8gVT 1VZKiKi$OUPJ9;:[iI$څBR(mI$ cnTy2N&bҔYpy|))8{oWd74 q]V7J][5Ium%9{Gz[;ڮnrN(2,% 4?w\ukMNͯfI;Fc KVѥ\૕w+,dg&Y1'բ:RXDT6fwwזd'TGTʤ+%r$o=; B(%lG|LfF[}JJaḱ=2Nc@%1ɓuiDuԆ0.ʊT sRI QnJh5X]KRX4HXC\ޅ JՠM/hӒ3%=D2UO1ZhƟ@ň%8HXJK4/)icƟ:@z"#jŭU2iCGjÂRF2ƒ||gyiYɹ2R.!)'VHݵ.#XN]jA-[l-Y)aRly; ;7Cĥ\H]m6bjL¹ R#heuy{0ĩ)\䣊 \W>b8\s ͕/![dcGvz`L勇G%yw/?R^K/.n s+S}-Lyd3Umd i=Pct&sPxYj|e_J+r ) Lhxk5: ;Ցa\NPNwPSrܦ.VҸZ^]4XZS<5fB$)8WvZVűKfR^QRwsI9NI'2aaNڸOjZ-9i6iKiϷy$I;I$ɇb*ZXOiO7M^^JVI8 䓐m$&'~J`jo5Θey S~(i6Tjv,6ky4qFTg꘣k qO\P!0K`ՌU*mUX7/&9҇#Q.,r$o~MVq0\RZ8ʜ#bOO/Jb>b =Y-9[)|͞NVߑ"kY-F?(>v= DQn4NO} [b fio {XS%Y|dk4O \=bg@~s\==)Ru̼ҵ]eԝd8r)*@󍹌D>*a c]V X2VޣUS/WEƁǏ6XA]줶JIm]On$!c$ĈbXk'Ph=e<3}9έS2MHMi #' BNѮ3 ;Fm'hVOkYoI)Đ[ DuQ$Ilj}qZכzb--{SP3iSU@ݪ^J />SA%l͹'?fޔPMGj@.%CCUY6扝cl=/>Bu(BT)Y#;P4lTD2693#g#$jjk,@ ʒmCy;#vohKtNO} [bC_bSCzL_ޥkʷ8+ <^mW̿3(gQJ-:L(,x'HXY|d>DCf*#t=0PU$y%&ck@>0EU"* f<a4PHhN+a!ꓲYslˤ}6]s3Mami5qb1TԴgJ>|4ث<%;uYrqO!Jw9̍X"gdNM6U[ը2e27>IJctz\\<̤\Hs %(T W2 YJTN _M21QnyJ=s[әqd\$ `IJ *;W*S=|mǵ~<ʜqa#]ŭDfWvfeI>(v\KH3$I*ZԢj%kZ)DA (,x'HXt.\x偶Tl]s 锄bM&cZC8dYԩ T)x[N<*'tTKne+@ڏ'iOi_т"H^^PeiNҟӊj? ܝ?էF<T@ڏ'iOi_т"Ae01JL[%IRR@H<;)860SZqWmG`t셴jXQ`+YkbsK/09ܚ^䱠tz\\<̤\Hs %(T W2 YJTNM{Wh{12SX'QmԷԗR]DZ֝cPmk*٥[Y-~֧R䛔c]jZl% ZԣڥvVfeI>(v\KH3$I*ZԢj%kZ)DA (PArst2pdf-0.93/rst2pdf/pygments2style.py0000664000175000017500000000506311351701171017647 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms ''' Creates a rst2pdf stylesheet for each pygments style. ''' import sys import os import dumpstyle from pygments.token import STANDARD_TYPES from pygments import styles as pstyles # First get a list of all possible classes classnames=set() for name in list(pstyles.get_all_styles()): css=os.popen('pygmentize -S %s -f html'%name, 'r').read() for line in css.splitlines(): line = line.strip() sname = "pygments-" + line.split(' ')[0][1:] classnames.add(sname) def css2rl(css): dstyles = {} # First create a dumb stylesheet for key in STANDARD_TYPES: dstyles["pygments-" + STANDARD_TYPES[key]] = {'parent': 'code'} seenclassnames=set() styles = [] for line in css.splitlines(): line = line.strip() sname = "pygments-" + line.split(' ')[0][1:] seenclassnames.add(sname) style = dstyles.get(sname, {'parent': 'code'}) options = line.split('{')[1].split('}')[0].split(';') for option in options: option = option.strip() option, argument = option.split(':') option=option.strip() argument=argument.strip() if option == 'color': style['textColor'] = argument.strip() if option == 'background-color': style['backColor'] = argument.strip() # These two can come in any order if option == 'font-weight' and argument == 'bold': if 'fontName' in style and \ style['fontName'] == 'stdMonoItalic': style['fontName'] = 'stdMonoBoldItalic' else: style['fontName'] = 'stdMonoBold' if option == 'font-style' and argument == 'italic': if 'fontName' in style and style['fontName'] == 'stdBold': style['fontName'] = 'stdMonoBoldItalic' else: style['fontName'] = 'stdMonoItalic' if style.get('textColor', None) is None: style['textColor']='black' styles.append([sname, style]) # Now add default styles for all unseen class names for sname in classnames-seenclassnames: style = dstyles.get(sname, {'parent': 'code'}) style['textColor']='black' styles.append([sname, style]) return dumpstyle.dumps({'styles': styles}) for name in list(pstyles.get_all_styles()): css=os.popen('pygmentize -S %s -f html'%name, 'r').read() open(name+'.style', 'w').write(css2rl(css)) rst2pdf-0.93/rst2pdf/svgimage.py0000664000175000017500000000542712060333157016447 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms import os from reportlab.platypus import Flowable, Paragraph from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT from log import log from opt_imports import LazyImports class SVGImage(Flowable): @classmethod def available(self): if LazyImports.svg2rlg: return True return False def __init__(self, filename, width=None, height=None, kind='direct', mask=None, lazy=True, srcinfo=None): Flowable.__init__(self) ext = os.path.splitext(filename)[-1] self._kind = kind # Prefer svg2rlg for SVG, as it works better if LazyImports.svg2rlg: self._mode = 'svg2rlg' self.doc = LazyImports.svg2rlg.svg2rlg(filename) self.imageWidth = width self.imageHeight = height x1, y1, x2, y2 = self.doc.getBounds() # Actually, svg2rlg's getBounds seems broken. self._w, self._h = x2, y2 if not self.imageWidth: self.imageWidth = self._w if not self.imageHeight: self.imageHeight = self._h else: self._mode = None log.error("SVG support not enabled," " please install svg2rlg.") self.__ratio = float(self.imageWidth)/self.imageHeight if kind in ['direct','absolute']: self.drawWidth = width or self.imageWidth self.drawHeight = height or self.imageHeight elif kind in ['bound','proportional']: factor = min(float(width)/self.imageWidth,float(height)/self.imageHeight) self.drawWidth = self.imageWidth*factor self.drawHeight = self.imageHeight*factor def wrap(self, aW, aH): return self.drawWidth, self.drawHeight def drawOn(self, canv, x, y, _sW=0): if _sW and hasattr(self, 'hAlign'): a = self.hAlign if a in ('CENTER', 'CENTRE', TA_CENTER): x += 0.5*_sW elif a in ('RIGHT', TA_RIGHT): x += _sW elif a not in ('LEFT', TA_LEFT): raise ValueError("Bad hAlign value " + str(a)) canv.saveState() canv.translate(x, y) canv.scale(self.drawWidth/self._w, self.drawHeight/self._h) self.doc._drawOn(canv) canv.restoreState() if __name__ == "__main__": import sys from reportlab.platypus import SimpleDocTemplate from reportlab.lib.styles import getSampleStyleSheet doc = SimpleDocTemplate('svgtest.pdf') styles = getSampleStyleSheet() style = styles['Normal'] Story = [Paragraph("Before the image", style), SVGImage(sys.argv[1]), Paragraph("After the image", style)] doc.build(Story) rst2pdf-0.93/rst2pdf/uniconvsaver.py0000664000175000017500000002661411062216443017367 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Copyright (C) 2007-2008 by Igor Novikov # Copyright (C) 2000, 2001, 2002 by Bernhard Herzog # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library 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. See the GNU # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ###Sketch Config #type = Export #tk_file_type = ("Portable Document Format (PDF)", '.pdf') #extensions = '.pdf' #format_name = 'PDF-Reportlab' #unload = 1 ###End from math import atan2, pi import PIL from app import _,Bezier, EmptyPattern, Rotation, Translation, _sketch from app.Graphics.curveop import arrow_trafos import reportlab.pdfgen.canvas import app def make_pdf_path(pdfpath, paths): for path in paths: for i in range(path.len): type, control, p, cont = path.Segment(i) if type == Bezier: p1, p2 = control pdfpath.curveTo(p1.x, p1.y, p2.x, p2.y, p.x, p.y) else: if i > 0: pdfpath.lineTo(p.x, p.y) else: pdfpath.moveTo(p.x, p.y) if path.closed: pdfpath.close() return pdfpath class PDFDevice: has_axial_gradient = 0 has_radial_gradient = 0 has_conical_gradient = 0 gradient_steps = 100 def __init__(self, pdf): self.pdf = pdf def PushTrafo(self): self.pdf.saveState() def Concat(self, trafo): apply(self.pdf.transform, trafo.coeff()) def Translate(self, x, y = None): if y is None: x, y = x self.pdf.translate(x, y) def Rotate(self, angle): self.pdf.rotate(angle) def Scale(self, scale): self.pdf.scale(scale, scale) def PopTrafo(self): self.pdf.restoreState() PushClip = PushTrafo PopClip = PopTrafo def SetFillColor(self, color): self.pdf.setFillColor(tuple(color)) def SetLineColor(self, color): self.pdf.setStrokeColor(tuple(color)) def SetLineAttributes(self, width, cap = 1, join = 0, dashes = ()): self.pdf.setLineWidth(width) self.pdf.setLineCap(cap - 1) self.pdf.setLineJoin(join) if dashes: dashes = list(dashes) w = width if w < 1.0: w = 1.0 for i in range(len(dashes)): dashes[i] = w * dashes[i] self.pdf.setDash(dashes) def DrawLine(self, start, end): self.pdf.line(start.x, start.y, end.x, end.y) def DrawLineXY(self, x1, y1, x2, y2): self.pdf.line(x1, y1, x2, y2) def DrawRectangle(self, start, end): self.pdf.rectangle(start.x, start.y, end.x - start.x, end.y - start.y, 1, 0) def FillRectangle(self, left, bottom, right, top): self.pdf.rect(left, bottom, right - left, top - bottom, 0, 1) def DrawCircle(self, center, radius): self.pdf.circle(center.x, center.y, radius, 1, 0) def FillCircle(self, center, radius): self.pdf.circle(center.x, center.y, radius, 0, 1) def FillPolygon(self, pts): path = self.pdf.beginPath() apply(path.moveTo, pts[0]) for x, y in pts: path.lineTo(x, y) path.close() self.pdf.drawPath(path, 0, 1) def DrawBezierPath(self, path, rect = None): self.pdf.drawPath(make_pdf_path(self.pdf.beginPath(), (path,)), 1, 0) def FillBezierPath(self, path, rect = None): self.pdf.drawPath(make_pdf_path(self.pdf.beginPath(), (path,)), 0, 1) class PDFGenSaver: def __init__(self, file, filename, document, options): self.file = file self.filename = filename self.document = document self.options = options # if there's a pdfgen_canvas option assume it's an instance of # reportlab.pdfgen.canvas.Canvas that we should render on. This # allows multiple documents to be rendered into the same PDF # file or to have other python code outside of Sketch such as # reportlab itself (more precisely one of its other components # besides pdfgen) render into to too. # # The code here assumes that the canvas is already setup # properly. if options.has_key("pdfgen_canvas"): self.pdf = options["pdfgen_canvas"] else: self.pdf = reportlab.pdfgen.canvas.Canvas(file) self.pdf.setPageSize(document.PageSize()) def close(self): if not self.options.has_key("pdfgen_canvas"): self.pdf.save() def set_properties(self, properties, bounding_rect = None): pattern = properties.line_pattern if not pattern.is_Empty: if pattern.is_Solid: c, m, y, k =pattern.Color().getCMYK() self.pdf.setStrokeColorCMYK(c, m, y, k) self.pdf.setLineWidth(properties.line_width) self.pdf.setLineJoin(properties.line_join) self.pdf.setLineCap(properties.line_cap - 1) dashes = properties.line_dashes if dashes: dashes = list(dashes) w = properties.line_width if w < 1.0: w = 1.0 for i in range(len(dashes)): dashes[i] = w * dashes[i] self.pdf.setDash(dashes) active_fill = None pattern = properties.fill_pattern if not pattern.is_Empty: if pattern.is_Solid: c, m, y, k =pattern.Color().getCMYK() self.pdf.setFillColorCMYK(c, m, y, k) elif pattern.is_Tiled: pass elif pattern.is_AxialGradient: active_fill = self.axial_gradient else: active_fill = self.execute_pattern return active_fill def axial_gradient(self, properties, rect): pattern = properties.fill_pattern vx, vy = pattern.Direction() angle = atan2(vy, vx) - pi / 2 center = rect.center() rot = Rotation(angle, center) left, bottom, right, top = rot(rect) trafo = rot(Translation(center)) image = PIL.Image.new('RGB', (1, 200)) border = int(round(100 * pattern.Border())) _sketch.fill_axial_gradient(image.im, pattern.Gradient().Colors(), 0, border, 0, 200 - border) self.pdf.saveState() apply(self.pdf.transform, trafo.coeff()) self.pdf.drawInlineImage(image, (left - right) / 2, (bottom - top) / 2, right - left, top - bottom) self.pdf.restoreState() def execute_pattern(self, properties, rect): device = PDFDevice(self.pdf) properties.fill_pattern.Execute(device, rect) def make_pdf_path(self, paths): return make_pdf_path(self.pdf.beginPath(), paths) def polybezier(self, paths, properties, bounding_rect, clip = 0): pdfpath = self.make_pdf_path(paths) active_fill = self.set_properties(properties, bounding_rect) if active_fill: if not clip: self.pdf.saveState() self.pdf.clipPath(pdfpath, 0, 0) active_fill(properties, bounding_rect) if not clip: self.pdf.restoreState() if properties.HasLine(): self.pdf.drawPath(pdfpath, 1, 0) else: if clip: method = self.pdf.clipPath else: method = self.pdf.drawPath method(self.make_pdf_path(paths), properties.HasLine(), properties.HasFill()) # draw the arrows if properties.HasLine(): # Set the pdf fill color to the line color to make sure that # arrows that are filled are filled with the line color of # the object. Since lines are always drawn last, this # shouldn't interfere with the object's fill. c, m, y, k = properties.line_pattern.Color().getCMYK() self.pdf.setFillColorCMYK(c, m, y, k) arrow1 = properties.line_arrow1 arrow2 = properties.line_arrow2 if arrow1 or arrow2: for path in paths: t1, t2 = arrow_trafos(path, properties) if arrow1 and t1 is not None: self.draw_arrow(arrow1, t1) if arrow2 and t2 is not None: self.draw_arrow(arrow2, t2) def draw_arrow(self, arrow, trafo): path = arrow.Paths()[0].Duplicate() path.Transform(trafo) pdfpath = self.make_pdf_path((path,)) if arrow.IsFilled(): self.pdf.drawPath(pdfpath, 0, 1) else: self.pdf.drawPath(pdfpath, 1, 0) def mask_group(self, object): mask = object.Mask() if not mask.has_properties: # XXX implement this case (raster images) return if mask.is_curve: self.pdf.saveState() prop = mask.Properties().Duplicate() prop.SetProperty(line_pattern = EmptyPattern) self.polybezier(mask.Paths(), prop, mask.bounding_rect, clip = 1) self.save_objects(object.MaskedObjects()) if mask.has_line and mask.Properties().HasLine(): prop = mask.Properties().Duplicate() prop.SetProperty(fill_pattern = EmptyPattern) self.polybezier(mask.Paths(), prop, mask.bounding_rect, clip = 1) self.pdf.restoreState() def raster_image(self, object): self.pdf.saveState() apply(self.pdf.transform, object.Trafo().coeff()) self.pdf.drawInlineImage(object.Data().Image(), 0, 0) self.pdf.restoreState() def simple_text(self, object, clip = 0): properties = object.Properties() active_fill = self.set_properties(properties, object.bounding_rect) fontname = properties.font.PostScriptName() if fontname not in self.pdf.getAvailableFonts(): fontname = 'Times-Roman' if active_fill and not clip: self.pdf.saveState() pdftext = self.pdf.beginText() if active_fill: pdftext.setTextRenderMode(7) elif clip: pdftext.setTextRenderMode(4) pdftext.setFont(fontname, properties.font_size) apply(pdftext.setTextTransform, object.FullTrafo().coeff()) pdftext.textOut(object.Text()) self.pdf.drawText(pdftext) if active_fill: active_fill(properties, object.bounding_rect) if not clip: self.pdf.restoreState() def path_text(self, object, clip = 0): properties = object.Properties() active_fill = self.set_properties(properties, object.bounding_rect) fontname = properties.font.PostScriptName() if fontname not in self.pdf.getAvailableFonts(): fontname = 'Times-Roman' if active_fill and not clip: self.pdf.saveState() pdftext = self.pdf.beginText() if active_fill: pdftext.setTextRenderMode(7) elif clip: pdftext.setTextRenderMode(4) pdftext.setFont(fontname, properties.font_size) trafos = object.CharacterTransformations() text = object.Text() for i in range(len(trafos)): apply(pdftext.setTextTransform, trafos[i].coeff()) pdftext.textOut(text[i]) self.pdf.drawText(pdftext) if active_fill: active_fill(properties, object.bounding_rect) if not clip: self.pdf.restoreState() def Save(self): self.document.updateActivePage() masters=self.document.getMasterLayers() count=0 pagenum=len(self.document.pages) interval=int(97/pagenum) for page in self.document.pages: count+=1 app.updateInfo(inf2=_('Composing page %u of %u')%(count,pagenum),inf3=count*interval) layers=page+masters for layer in layers: if not layer.is_SpecialLayer and layer.Printable(): self.save_objects(layer.GetObjects()) #self.pdf.showPage() def save_objects(self, objects): for object in objects: if object.is_Compound: if object.is_MaskGroup: self.mask_group(object) else: self.save_objects(object.GetObjects()) elif object.is_SimpleText: # self.simple_text(object) obj=object.AsBezier() self.polybezier(obj.Paths(), obj.Properties(), obj.bounding_rect) elif object.is_PathTextText: self.path_text(object) elif object.is_Image: self.raster_image(object) elif object.is_Bezier or object.is_Rectangle or object.is_Ellipse: self.polybezier(object.Paths(), object.Properties(), object.bounding_rect) def save(document, file, filename, options = {}): app.updateInfo(inf1=_('PDF generation.'),inf2=_('Start document composing'),inf3=3) saver = PDFGenSaver(file, filename, document, options) saver.Save() saver.close() app.updateInfo(inf2=_('Document generation is finished'),inf3=100) rst2pdf-0.93/rst2pdf/styles.py0000664000175000017500000011271212040314506016157 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/styles.py $ #$Date: 2012-10-19 15:17:42 -0300 (Fri, 19 Oct 2012) $ #$Revision: 2531 $ import os import sys import re from copy import copy from types import * from os.path import abspath, dirname, expanduser, join import docutils.nodes import reportlab from reportlab.platypus import * import reportlab.lib.colors as colors import reportlab.lib.units as units from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.fonts import addMapping from reportlab.lib.styles import * from reportlab.lib.enums import * from reportlab.pdfbase import pdfmetrics import reportlab.lib.pagesizes as pagesizes import reportlab.rl_config from rst2pdf.rson import loads as rson_loads import findfonts from log import log from opt_imports import ParagraphStyle, wordaxe, wordaxe_version HAS_WORDAXE = wordaxe is not None unit_separator = re.compile('(-?[0-9\.]*)') class StyleSheet(object): '''Class to handle a collection of stylesheets''' @staticmethod def stylepairs(data): ''' Allows pairs of style information to be expressed in canonical reportlab list of two-item list/tuple, or in a more human-readable dictionary. ''' styles = data.get('styles', {}) try: stylenames = styles.keys() except AttributeError: for style in styles: yield style return # Traditional reportlab styles are in ordered (key, value) # tuples. We also support dictionary lookup. This is not # necessarily ordered. # The only problem with dictionary lookup is that # we need to insure that parents are processed before # their children. This loop is a little ugly, but # gets the job done. while stylenames: name = stylenames.pop() parent = styles[name].get('parent') if parent not in stylenames: yield name, styles[name] continue names = [name] while parent in stylenames: stylenames.remove(parent) names.append(parent) parent = styles[names[-1]].get('parent') while names: name = names.pop() yield name, styles[name] def __init__(self, flist, font_path=None, style_path=None, def_dpi=300): log.info('Using stylesheets: %s' % ','.join(flist)) # find base path if hasattr(sys, 'frozen'): self.PATH = abspath(dirname(sys.executable)) else: self.PATH = abspath(dirname(__file__)) # flist is a list of stylesheet filenames. # They will be loaded and merged in order. # but the two default stylesheets will always # be loaded first flist = [join(self.PATH, 'styles', 'styles.style'), join(self.PATH, 'styles', 'default.style')] + flist self.def_dpi=def_dpi if font_path is None: font_path=[] font_path+=['.', os.path.join(self.PATH, 'fonts')] self.FontSearchPath = map(os.path.expanduser, font_path) if style_path is None: style_path=[] style_path+=['.', os.path.join(self.PATH, 'styles'), '~/.rst2pdf/styles'] self.StyleSearchPath = map(os.path.expanduser, style_path) self.FontSearchPath=list(set(self.FontSearchPath)) self.StyleSearchPath=list(set(self.StyleSearchPath)) log.info('FontPath:%s'%self.FontSearchPath) log.info('StylePath:%s'%self.StyleSearchPath) findfonts.flist = self.FontSearchPath # Page width, height self.pw = 0 self.ph = 0 # Page size [w,h] self.ps = None # Margins (top,bottom,left,right,gutter) self.tm = 0 self.bm = 0 self.lm = 0 self.rm = 0 self.gm = 0 #text width self.tw = 0 # Default emsize, later it will be the fontSize of the base style self.emsize=10 self.languages = [] ssdata = self.readSheets(flist) # Get pageSetup data from all stylessheets in order: self.ps = pagesizes.A4 self.page={} for data, ssname in ssdata: page = data.get('pageSetup', {}) if page: self.page.update(page) pgs=page.get('size', None) if pgs: # A standard size pgs=pgs.upper() if pgs in pagesizes.__dict__: self.ps = list(pagesizes.__dict__[pgs]) self.psname = pgs if 'width' in self.page: del(self.page['width']) if 'height' in self.page: del(self.page['height']) elif pgs.endswith('-LANDSCAPE'): self.psname = pgs.split('-')[0] self.ps = list(pagesizes.landscape(pagesizes.__dict__[self.psname])) if 'width' in self.page: del(self.page['width']) if 'height' in self.page: del(self.page['height']) else: log.critical('Unknown page size %s in stylesheet %s'%\ (page['size'], ssname)) continue else: #A custom size if 'size'in self.page: del(self.page['size']) # The sizes are expressed in some unit. # For example, 2cm is 2 centimeters, and we need # to do 2*cm (cm comes from reportlab.lib.units) if 'width' in page: self.ps[0] = self.adjustUnits(page['width']) if 'height' in page: self.ps[1] = self.adjustUnits(page['height']) self.pw, self.ph = self.ps if 'margin-left' in page: self.lm = self.adjustUnits(page['margin-left']) if 'margin-right' in page: self.rm = self.adjustUnits(page['margin-right']) if 'margin-top' in page: self.tm = self.adjustUnits(page['margin-top']) if 'margin-bottom' in page: self.bm = self.adjustUnits(page['margin-bottom']) if 'margin-gutter' in page: self.gm = self.adjustUnits(page['margin-gutter']) if 'spacing-header' in page: self.ts = self.adjustUnits(page['spacing-header']) if 'spacing-footer' in page: self.bs = self.adjustUnits(page['spacing-footer']) if 'firstTemplate' in page: self.firstTemplate = page['firstTemplate'] # tw is the text width. # We need it to calculate header-footer height # and compress literal blocks. self.tw = self.pw - self.lm - self.rm - self.gm # Get page templates from all stylesheets self.pageTemplates = {} for data, ssname in ssdata: templates = data.get('pageTemplates', {}) # templates is a dictionary of pageTemplates for key in templates: template = templates[key] # template is a dict. # template[´frames'] is a list of frames if key in self.pageTemplates: self.pageTemplates[key].update(template) else: self.pageTemplates[key] = template # Get font aliases from all stylesheets in order self.fontsAlias = {} for data, ssname in ssdata: self.fontsAlias.update(data.get('fontsAlias', {})) embedded_fontnames = [] self.embedded = [] # Embed all fonts indicated in all stylesheets for data, ssname in ssdata: embedded = data.get('embeddedFonts', []) for font in embedded: try: # Just a font name, try to embed it if isinstance(font, unicode): # See if we can find the font fname, pos = findfonts.guessFont(font) if font in embedded_fontnames: pass else: fontList = findfonts.autoEmbed(font) if fontList: embedded_fontnames.append(font) if not fontList: if (fname, pos) in embedded_fontnames: fontList = None else: fontList = findfonts.autoEmbed(fname) if fontList is not None: self.embedded += fontList # Maybe the font we got is not called # the same as the one we gave # so check that out suff = ["", "-Oblique", "-Bold", "-BoldOblique"] if not fontList[0].startswith(font): # We need to create font aliases, and use them for fname, aliasname in zip( fontList, [font + suffix for suffix in suff]): self.fontsAlias[aliasname] = fname continue # Each "font" is a list of four files, which will be # used for regular / bold / italic / bold+italic # versions of the font. # If your font doesn't have one of them, just repeat # the regular font. # Example, using the Tuffy font from # http://tulrich.com/fonts/ # "embeddedFonts" : [ # ["Tuffy.ttf", # "Tuffy_Bold.ttf", # "Tuffy_Italic.ttf", # "Tuffy_Bold_Italic.ttf"] # ], # The fonts will be registered with the file name, # minus the extension. if font[0].lower().endswith('.ttf'): # A True Type font for variant in font: location=self.findFont(variant) pdfmetrics.registerFont( TTFont(str(variant.split('.')[0]), location)) log.info('Registering font: %s from %s'%\ (str(variant.split('.')[0]),location)) self.embedded.append(str(variant.split('.')[0])) # And map them all together regular, bold, italic, bolditalic = [ variant.split('.')[0] for variant in font] addMapping(regular, 0, 0, regular) addMapping(regular, 0, 1, italic) addMapping(regular, 1, 0, bold) addMapping(regular, 1, 1, bolditalic) else: # A Type 1 font # For type 1 fonts we require # [FontName,regular,italic,bold,bolditalic] # where each variant is a (pfbfile,afmfile) pair. # For example, for the URW palladio from TeX: # ["Palatino",("uplr8a.pfb","uplr8a.afm"), # ("uplri8a.pfb","uplri8a.afm"), # ("uplb8a.pfb","uplb8a.afm"), # ("uplbi8a.pfb","uplbi8a.afm")] faceName = font[0] regular = pdfmetrics.EmbeddedType1Face(*font[1]) italic = pdfmetrics.EmbeddedType1Face(*font[2]) bold = pdfmetrics.EmbeddedType1Face(*font[3]) bolditalic = pdfmetrics.EmbeddedType1Face(*font[4]) except Exception, e: try: if isinstance(font, list): fname = font[0] else: fname = font log.error("Error processing font %s: %s", os.path.splitext(fname)[0], str(e)) log.error("Registering %s as Helvetica alias", fname) self.fontsAlias[fname] = 'Helvetica' except Exception, e: log.critical("Error processing font %s: %s", fname, str(e)) continue # Go though all styles in all stylesheets and find all fontNames. # Then decide what to do with them for data, ssname in ssdata: for [skey, style] in self.stylepairs(data): for key in style: if key == 'fontName' or key.endswith('FontName'): # It's an alias, replace it if style[key] in self.fontsAlias: style[key] = self.fontsAlias[style[key]] # Embedded already, nothing to do if style[key] in self.embedded: continue # Standard font, nothing to do if style[key] in ( "Courier", "Courier-Bold", "Courier-BoldOblique", "Courier-Oblique", "Helvetica", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Oblique", "Symbol", "Times-Bold", "Times-BoldItalic", "Times-Italic", "Times-Roman", "ZapfDingbats"): continue # Now we need to do something # See if we can find the font fname, pos = findfonts.guessFont(style[key]) if style[key] in embedded_fontnames: pass else: fontList = findfonts.autoEmbed(style[key]) if fontList: embedded_fontnames.append(style[key]) if not fontList: if (fname, pos) in embedded_fontnames: fontList = None else: fontList = findfonts.autoEmbed(fname) if fontList: embedded_fontnames.append((fname, pos)) if fontList: self.embedded += fontList # Maybe the font we got is not called # the same as the one we gave so check that out suff = ["", "-Bold", "-Oblique", "-BoldOblique"] if not fontList[0].startswith(style[key]): # We need to create font aliases, and use them basefname=style[key].split('-')[0] for fname, aliasname in zip( fontList, [basefname + suffix for suffix in suff]): self.fontsAlias[aliasname] = fname style[key] = self.fontsAlias[basefname +\ suff[pos]] else: log.error("Unknown font: \"%s\"," "replacing with Helvetica", style[key]) style[key] = "Helvetica" #log.info('FontList: %s'%self.embedded) #log.info('FontAlias: %s'%self.fontsAlias) # Get styles from all stylesheets in order self.stylesheet = {} self.styles = [] self.linkColor = 'navy' # FIXME: linkColor should probably not be a global # style, and tocColor should probably not # be a special case, but for now I'm going # with the flow... self.tocColor = None for data, ssname in ssdata: self.linkColor = data.get('linkColor') or self.linkColor self.tocColor = data.get('tocColor') or self.tocColor for [skey, style] in self.stylepairs(data): sdict = {} # FIXME: this is done completely backwards for key in style: # Handle color references by name if key == 'color' or key.endswith('Color') and style[key]: style[key] = formatColor(style[key]) # Yet another workaround for the unicode bug in # reportlab's toColor elif key == 'commands': style[key]=validateCommands(style[key]) #for command in style[key]: #c=command[0].upper() #if c=='ROWBACKGROUNDS': #command[3]=[str(c) for c in command[3]] #elif c in ['BOX','INNERGRID'] or c.startswith('LINE'): #command[4]=str(command[4]) # Handle alignment constants elif key == 'alignment': style[key] = dict(TA_LEFT=0, LEFT=0, TA_CENTER=1, CENTER=1, TA_CENTRE=1, CENTRE=1, TA_RIGHT=2, RIGHT=2, TA_JUSTIFY=4, JUSTIFY=4, DECIMAL=8, )[style[key].upper()] elif key == 'language': if not style[key] in self.languages: self.languages.append(style[key]) # Make keys str instead of unicode (required by reportlab) sdict[str(key)] = style[key] sdict['name'] = skey # If the style already exists, update it if skey in self.stylesheet: self.stylesheet[skey].update(sdict) else: # New style self.stylesheet[skey] = sdict self.styles.append(sdict) # If the stylesheet has a style name docutils won't reach # make a copy with a sanitized name. # This may make name collisions possible but that should be # rare (who would have custom_name and custom-name in the # same stylesheet? ;-) # Issue 339 styles2=[] for s in self.styles: if not re.match("^[a-z](-?[a-z0-9]+)*$", s['name']): s2 = copy(s) s2['name'] = docutils.nodes.make_id(s['name']) log.warning('%s is an invalid docutils class name, adding alias %s'%(s['name'], s2['name'])) styles2.append(s2) self.styles.extend(styles2) # And create reportlabs stylesheet self.StyleSheet = StyleSheet1() # Patch to make the code compatible with reportlab from SVN 2.4+ and # 2.4 if not hasattr(self.StyleSheet, 'has_key'): self.StyleSheet.__class__.has_key = lambda s, k : k in s for s in self.styles: if 'parent' in s: if s['parent'] is None: if s['name'] != 'base': s['parent'] = self.StyleSheet['base'] else: del(s['parent']) else: s['parent'] = self.StyleSheet[s['parent']] else: if s['name'] != 'base': s['parent'] = self.StyleSheet['base'] # If the style has no bulletFontName but it has a fontName, set it if ('bulletFontName' not in s) and ('fontName' in s): s['bulletFontName'] = s['fontName'] hasFS = True # Adjust fontsize units if 'fontSize' not in s: s['fontSize'] = s['parent'].fontSize s['trueFontSize']=None hasFS = False elif 'parent' in s: # This means you can set the fontSize to # "2cm" or to "150%" which will be calculated # relative to the parent style s['fontSize'] = self.adjustUnits(s['fontSize'], s['parent'].fontSize) s['trueFontSize']=s['fontSize'] else: # If s has no parent, it's base, which has # an explicit point size by default and % # makes no sense, but guess it as % of 10pt s['fontSize'] = self.adjustUnits(s['fontSize'], 10) # If the leading is not set, but the size is, set it if 'leading' not in s and hasFS: s['leading'] = 1.2*s['fontSize'] # If the bullet font size is not set, set it as fontSize if ('bulletFontSize' not in s) and ('fontSize' in s): s['bulletFontSize'] = s['fontSize'] # If the borderPadding is a list and wordaxe <=0.3.2, # convert it to an integer. Workaround for Issue if 'borderPadding' in s and ((HAS_WORDAXE and \ wordaxe_version <='wordaxe 0.3.2') or reportlab.Version < "2.3" )\ and isinstance(s['borderPadding'], list): log.warning('Using a borderPadding list in '\ 'style %s with wordaxe <= 0.3.2 or Reportlab < 2.3. That is not '\ 'supported, so it will probably look wrong'%s['name']) s['borderPadding']=s['borderPadding'][0] self.StyleSheet.add(ParagraphStyle(**s)) self.emsize=self['base'].fontSize # Make stdFont the basefont, for Issue 65 reportlab.rl_config.canvas_basefontname = self['base'].fontName # Make stdFont the default font for table cell styles (Issue 65) reportlab.platypus.tables.CellStyle.fontname=self['base'].fontName def __getitem__(self, key): # This 'normalizes' the key. # For example, if the key is todo_node (like sphinx uses), it will be # converted to 'todo-node' which is a valid docutils class name. if not re.match("^[a-z](-?[a-z0-9]+)*$", key): key = docutils.nodes.make_id(key) if self.StyleSheet.has_key(key): return self.StyleSheet[key] else: if key.startswith('pygments'): log.info("Using undefined style '%s'" ", aliased to style 'code'."%key) newst=copy(self.StyleSheet['code']) else: log.warning("Using undefined style '%s'" ", aliased to style 'normal'."%key) newst=copy(self.StyleSheet['normal']) newst.name=key self.StyleSheet.add(newst) return newst def readSheets(self, flist): ''' Read in the stylesheets. Return a list of (sheetdata, sheetname) tuples. Orders included sheets in front of including sheets. ''' # Process from end of flist flist.reverse() # Keep previously seen sheets in sheetdict sheetdict = {} result = [] while flist: ssname = flist.pop() data = sheetdict.get(ssname) if data is None: data = self.readStyle(ssname) if data is None: continue sheetdict[ssname] = data if 'options' in data and 'stylesheets' in data['options']: flist.append(ssname) newsheets = list(data['options']['stylesheets']) newsheets.reverse() flist.extend(newsheets) continue result.append((data, ssname)) return result def readStyle(self, ssname): # If callables are used, they should probably be subclassed # strings, or something else that will print nicely for errors if callable(ssname): return ssname() fname = self.findStyle(ssname) if fname: try: return rson_loads(open(fname).read()) except ValueError, e: # Error parsing the JSON data log.critical('Error parsing stylesheet "%s": %s'%\ (fname, str(e))) except IOError, e: #Error opening the ssheet log.critical('Error opening stylesheet "%s": %s'%\ (fname, str(e))) def findStyle(self, fn): """Find the absolute file name for a given style filename. Given a style filename, searches for it in StyleSearchPath and returns the real file name. """ def innerFind(path, fn): if os.path.isabs(fn): if os.path.isfile(fn): return fn else: for D in path: tfn = os.path.join(D, fn) if os.path.isfile(tfn): return tfn return None for ext in ['', '.style', '.json']: result = innerFind(self.StyleSearchPath, fn+ext) if result: break if result is None: log.warning("Can't find stylesheet %s"%fn) return result def findFont(self, fn): """Find the absolute font name for a given font filename. Given a font filename, searches for it in FontSearchPath and returns the real file name. """ if not os.path.isabs(fn): for D in self.FontSearchPath: tfn = os.path.join(D, fn) if os.path.isfile(tfn): return str(tfn) return str(fn) def styleForNode(self, node): """Return the right default style for any kind of node. That usually means "bodytext", but for sidebars, for example, it's sidebar. """ n= docutils.nodes styles={n.sidebar: 'sidebar', n.figure: 'figure', n.tgroup: 'table', n.table: 'table', n.Admonition: 'admonition' } return self[styles.get(node.__class__, 'bodytext')] def tstyleHead(self, rows=1): """Return a table style spec for a table header of `rows`. The style will be based on the table-heading style from the stylesheet. """ # This alignment thing is exactly backwards from # the alignment for paragraphstyles alignment = {0: 'LEFT', 1: 'CENTER', 1: 'CENTRE', 2: 'RIGHT', 4: 'JUSTIFY', 8: 'DECIMAL'}[self['table-heading'].alignment] return [ ('BACKGROUND', (0, 0), (-1, rows - 1), self['table-heading'].backColor), ('ALIGN', (0, 0), (-1, rows - 1), alignment), ('TEXTCOLOR', (0, 0), (-1, rows - 1), self['table-heading'].textColor), ('FONT', (0, 0), (-1, rows - 1), self['table-heading'].fontName, self['table-heading'].fontSize, self['table-heading'].leading), ('VALIGN', (0, 0), (-1, rows - 1), self['table-heading'].valign)] def adjustFieldStyle(self): """Merges fieldname and fieldvalue styles into the field table style""" tstyle=self.tstyles['field'] extras=self.pStyleToTStyle(self['fieldname'], 0, 0)+\ self.pStyleToTStyle(self['fieldvalue'], 1, 0) for e in extras: tstyle.add(*e) return tstyle def pStyleToTStyle(self, style, x, y): """Return a table style similar to a given paragraph style. Given a reportlab paragraph style, returns a spec for a table style that adopts some of its features (for example, the background color). """ results = [] if style.backColor: results.append(('BACKGROUND', (x, y), (x, y), style.backColor)) if style.borderWidth: bw = style.borderWidth del style.__dict__['borderWidth'] if style.borderColor: bc = style.borderColor del style.__dict__['borderColor'] else: bc = colors.black bc=str(bc) results.append(('BOX', (x, y), (x, y), bw, bc)) if style.borderPadding: if isinstance(style.borderPadding, list): results.append(('TOPPADDING', (x, y), (x, y), style.borderPadding[0])) results.append(('RIGHTPADDING', (x, y), (x, y), style.borderPadding[1])) results.append(('BOTTOMPADDING', (x, y), (x, y), style.borderPadding[2])) results.append(('LEFTPADDING', (x, y), (x, y), style.borderPadding[3])) else: results.append(('TOPPADDING', (x, y), (x, y), style.borderPadding)) results.append(('RIGHTPADDING', (x, y), (x, y), style.borderPadding)) results.append(('BOTTOMPADDING', (x, y), (x, y), style.borderPadding)) results.append(('LEFTPADDING', (x, y), (x, y), style.borderPadding)) return results def adjustUnits(self, v, total=None, default_unit='pt'): if total is None: total = self.tw return adjustUnits(v, total, self.def_dpi, default_unit, emsize=self.emsize) def combinedStyle(self, styles): '''Given a list of style names, it merges them (the existing ones) and returns a new style. The styles that don't exist are silently ignored. For example, if called with styles=['style1','style2'] the returned style will be called 'merged_style1_style2'. The styles that are *later* in the list will have priority. ''' validst = [x for x in styles if self.StyleSheet.has_key(x)] newname = '_'.join(['merged']+validst) validst = [self[x] for x in validst] newst=copy(validst[0]) for st in validst[1:]: newst.__dict__.update(st.__dict__) newst.name=newname return newst def adjustUnits(v, total=None, dpi=300, default_unit='pt', emsize=10): """Takes something like 2cm and returns 2*cm. If you use % as a unit, it returns the percentage of "total". If total is not given, returns a percentage of the page width. However, if you get to that stage, you are doing it wrong. Example:: >>> adjustUnits('50%',200) 100 """ if v is None or v=="": return None v = str(v) l = re.split('(-?[0-9\.]*)', v) n=l[1] u=default_unit if len(l) == 3 and l[2]: u=l[2] if u in units.__dict__: return float(n) * units.__dict__[u] else: if u == '%': return float(n) * total/100 elif u=='px': return float(n) * units.inch / dpi elif u=='pt': return float(n) elif u=='in': return float(n) * units.inch elif u=='em': return float(n) * emsize elif u=='ex': return float(n) * emsize /2 elif u=='pc': # picas! return float(n) * 12 log.error('Unknown unit "%s"' % u) return float(n) def formatColor(value, numeric=True): """Convert a color like "gray" or "0xf" or "ffff" to something ReportLab will like.""" if value in colors.__dict__: return colors.__dict__[value] else: # Hopefully, a hex color: c = value.strip() if c[0] == '#': c = c[1:] while len(c) < 6: c = '0' + c if numeric: r = int(c[:2], 16)/255. g = int(c[2:4], 16)/255. b = int(c[4:6], 16)/255. if len(c) >= 8: alpha = int(c[6:8], 16)/255. return colors.Color(r, g, b, alpha=alpha) return colors.Color(r, g, b) else: return str("#"+c) # The values are: # * Minimum number of arguments # * Maximum number of arguments # * Valid types of arguments. # # For example, if option FOO takes a list a string and a number, # but the number is optional: # # "FOO":(2,3,"list","string","number") # # The reportlab command could look like # # ["FOO",(0,0),(-1,-1),[1,2],"whatever",4] # # THe (0,0) (-1,-1) are start and stop and are mandatory. # # Possible types of arguments are string, number, color, colorlist validCommands={ # Cell format commands "FONT":(1,3,"string","number","number"), "FONTNAME":(1,1,"string"), "FACE":(1,1,"string"), "FONTSIZE":(1,1,"number"), "SIZE":(1,1,"number"), "LEADING":(1,1,"number"), "TEXTCOLOR":(1,1,"color"), "ALIGNMENT":(1,1,"string"), "ALIGN":(1,1,"string"), "LEFTPADDING":(1,1,"number"), "RIGHTPADDING":(1,1,"number"), "TOPPADDING":(1,1,"number"), "BOTTOMPADDING":(1,1,"number"), "BACKGROUND":(1,1,"color"), "ROWBACKGROUNDS":(1,1,"colorlist"), "COLBACKGROUNDS":(1,1,"colorlist"), "VALIGN":(1,1,"string"), # Line commands "GRID":(2,2,"number","color"), "BOX":(2,2,"number","color"), "OUTLINE":(2,2,"number","color"), "INNERGRID":(2,2,"number","color"), "LINEBELOW":(2,2,"number","color"), "LINEABOVE":(2,2,"number","color"), "LINEBEFORE":(2,2,"number","color"), "LINEAFTER":(2,2,"number","color"), # You should NOT have span commands, man! #"SPAN":(,,), } def validateCommands(commands): '''Given a list of reportlab's table commands, it fixes some common errors and/or removes commands that can't be fixed''' fixed=[] for command in commands: command[0]=command[0].upper() flag=False # See if the command is valid if command[0] not in validCommands: log.error('Unknown table command %s in stylesheet',command[0]) continue # See if start and stop are the right types if type(command[1]) not in (ListType,TupleType): log.error('Start cell in table command should be list or tuple, got %s [%s]',type(command[1]),command[1]) flag=True if type(command[2]) not in (ListType,TupleType): log.error('Stop cell in table command should be list or tuple, got %s [%s]',type(command[1]),command[1]) flag=True # See if the number of arguments is right l=len(command)-3 if l>validCommands[command[0]][1]: log.error('Too many arguments in table command: %s',command) flag=True if l 1 and sourcelist[1].startswith('#'): i = 1 while len(sourcelist) > i and not sourcelist[i].startswith('\n'): i += 1 offset -= len(next()) # Preallocate the list self.append(None) self *= len(sourcelist) / 2 + 1 index = 0 # Create all the tokens for token in sourceiter: whitespace = next() t0 = token[0] if t0 not in delimiterset: if t0 == '\n': linenum += 1 indentation = token offset -= len(token) linestart = offset continue else: t0 = 'X' self[index] = (offset, t0, token, whitespace, indentation, linenum, self) index += 1 offset -= len(token) + len(whitespace) # Add a sentinel self[index] = (offset, '@', '@', '', '', linenum + 1, self) self[index+1:] = [] # Put everything we need in the actual object instantiation self.reverse() self.source = source self.next = self.pop self.push = self.append return self return newstring def peek(self): return self[-1] def lookahead(self, index=0): return self[-1 - index] @staticmethod def sourceloc(token): ''' Return the source location for a given token ''' lineno = token[5] colno = offset = -token[0] + 1 if lineno != 1: colno -= token[-1].source.rfind('\n', 0, offset) + 1 return offset, lineno, colno @classmethod def error(cls, s, token): ''' error performs generic error reporting for tokens ''' offset, lineno, colno = cls.sourceloc(token) if token[1] == '@': loc = 'at end of string' else: text = token[2] loc = 'line %s, column %s, text %s' % (lineno, colno, repr(text[:20])) err = RSONDecodeError('%s: %s' % (s, loc)) err.pos = offset err.lineno = lineno err.colno = colno raise err def make_hashable(what): try: hash(what) return what except TypeError: if isinstance(what, dict): return tuple(sorted(make_hashable(x) for x in what.iteritems())) return tuple(make_hashable(x) for x in what) class BaseObjects(object): # These hooks allow compatibility with simplejson object_hook = None object_pairs_hook = None array_hook = None # Stock object constructor does not cope with no keys disallow_missing_object_keys = True # Stock object constructor copes with multiple keys just fine disallow_multiple_object_keys = False # Default JSON requires string keys disallow_nonstring_keys = True class default_array(list): def __new__(self, startlist, token): return list(startlist) class default_object(dict): ''' By default, RSON objects are dictionaries that allow attribute access to their existing contents. ''' def __getattr__(self, key): return self[key] def __setattr__(self, key, value): self[key]=value def append(self, itemlist): mydict = self value = itemlist.pop() itemlist = [make_hashable(x) for x in itemlist] lastkey = itemlist.pop() if itemlist: itemlist.reverse() while itemlist: key = itemlist.pop() subdict = mydict.get(key) if not isinstance(subdict, dict): subdict = mydict[key] = type(self)() mydict = subdict if isinstance(value, dict): oldvalue = mydict.get(lastkey) if isinstance(oldvalue, dict): oldvalue.update(value) return mydict[lastkey] = value def get_result(self, token): return self def object_type_factory(self, dict=dict, tuple=tuple): ''' This function returns constructors for RSON objects and arrays. It handles simplejson compatible hooks as well. ''' object_hook = self.object_hook object_pairs_hook = self.object_pairs_hook if object_pairs_hook is not None: class build_object(list): def get_result(self, token): return object_pairs_hook([tuple(x) for x in self]) self.disallow_multiple_object_keys = True self.disallow_nonstring_keys = True elif object_hook is not None: mydict = dict class build_object(list): def get_result(self, token): return object_hook(mydict(self)) self.disallow_multiple_object_keys = True self.disallow_nonstring_keys = True else: build_object = self.default_object build_array = self.array_hook or self.default_array return build_object, build_array class Dispatcher(object): ''' Assumes that this is mixed-in to a class with an appropriate parser_factory() method. ''' @classmethod def dispatcher_factory(cls, hasattr=hasattr, tuple=tuple, sorted=sorted): self = cls() parser_factory = self.parser_factory parsercache = {} cached = parsercache.get default_loads = parser_factory() def loads(s, **kw): if not kw: return default_loads(s) key = tuple(sorted(kw.iteritems())) func = cached(key) if func is None: # Begin some real ugliness here -- just modify our instance to # have the correct user variables for the initialization functions. # Seems to speed up simplejson testcases a bit. self.__dict__ = dict((x,y) for (x,y) in key if y is not None) func = parsercache[key] = parser_factory() return func(s) return loads class QuotedToken(object): ''' Subclass or replace this if you don't like quoted string handling ''' parse_quoted_str = staticmethod( lambda token, s, unicode=unicode: unicode(s, 'utf-8')) parse_encoded_chr = unichr parse_join_str = u''.join cachestrings = False quoted_splitter = re.compile(r'(\\u[0-9a-fA-F]{4}|\\.|")').split quoted_mapper = { '\\\\' : u'\\', r'\"' : u'"', r'\/' : u'/', r'\b' : u'\b', r'\f' : u'\f', r'\n' : u'\n', r'\r' : u'\r', r'\t' : u'\t'}.get def quoted_parse_factory(self, int=int, iter=iter, len=len): quoted_splitter = self.quoted_splitter quoted_mapper = self.quoted_mapper parse_quoted_str = self.parse_quoted_str parse_encoded_chr = self.parse_encoded_chr parse_join_str = self.parse_join_str cachestrings = self.cachestrings triplequoted = self.triplequoted allow_double = sys.maxunicode > 65535 def badstring(token, special): if token[2] != '"""' or triplequoted is None: token[-1].error('Invalid character in quoted string: %s' % repr(special), token) result = parse_quoted_str(token, triplequoted(token)) if cachestrings: result = token[-1].stringcache(result, result) return result def parse(token, next): s = token[2] if len(s) < 2 or not (s[0] == s[-1] == '"'): token[-1].error('No end quote on string', token) s = quoted_splitter(s[1:-1]) result = parse_quoted_str(token, s[0]) if len(s) > 1: result = [result] append = result.append s = iter(s) next = s.next next() for special in s: nonmatch = next() remap = quoted_mapper(special) if remap is None: if len(special) == 6: uni = int(special[2:], 16) if 0xd800 <= uni <= 0xdbff and allow_double: uni, nonmatch = parse_double_unicode(uni, nonmatch, next, token) remap = parse_encoded_chr(uni) else: return badstring(token, special) append(remap) append(parse_quoted_str(token, nonmatch)) result = parse_join_str(result) if cachestrings: result = token[-1].stringcache(result, result) return result def parse_double_unicode(uni, nonmatch, next, token): ''' Munged version of UCS-4 code pair stuff from simplejson. ''' ok = True try: uni2 = next() nonmatch2 = next() except: ok = False ok = ok and not nonmatch and uni2.startswith(r'\u') and len(uni2) == 6 if ok: nonmatch = uni2 uni = 0x10000 + (((uni - 0xd800) << 10) | (int(uni2[2:], 16) - 0xdc00)) return uni, nonmatch2 token[-1].error('Invalid second ch in double sequence: %s' % repr(nonmatch), token) return parse @staticmethod def triplequoted(token): tokens = token[-1] source = tokens.source result = [] start = 3 - token[0] while 1: end = source.find('"""', start) if end < 0: tokens.error('Did not find end for triple-quoted string', token) if source[end-1] != '\\': break result.append(source[start:end-1]) result.append('"""') start = end + 3 result.append(source[start:end]) offset = bisect.bisect(tokens, (- end -2, )) tokens[offset:] = [] return ''.join(result) class UnquotedToken(object): ''' Subclass or replace this if you don't like the unquoted token handling. This is designed to be a superset of JSON: - Integers allowed to be expressed in octal, binary, or hex as well as decimal. - Integers can have embedded underscores. - Non-match of a special token will just be wrapped as a unicode string. - Numbers can be preceded by '+' as well s '-' - Numbers can be left-zero-filled - If a decimal point is present, digits are required on either side, but not both sides ''' use_decimal = False parse_int = staticmethod( lambda s: int(s.replace('_', ''), 0)) parse_float = float parse_unquoted_str = staticmethod( lambda token, unicode=unicode: unicode(token[2], 'utf-8')) special_strings = dict(true = True, false = False, null = None) unquoted_pattern = r''' (?: true | false | null | # Special JSON names (?P [-+]? # Optional sign (?: 0[xX](_*[0-9a-fA-F]+)+ | # Hex integer 0[bB](_*[01]+)+ | # binary integer 0[oO](_*[0-7]+)+ | # Octal integer \d+(_*\d+)* | # Decimal integer (?P (?: \d+(\.\d*)? | # One or more digits, # optional frac \.\d+ # Leading decimal point ) (?:[eE][-+]?\d+)? # Optional exponent ) ) ) ) \Z # Match end of string ''' def unquoted_parse_factory(self): unquoted_match = re.compile(self.unquoted_pattern, re.VERBOSE).match parse_unquoted_str = self.parse_unquoted_str parse_float = self.parse_float parse_int = self.parse_int special = self.special_strings if self.use_decimal: from decimal import Decimal parse_float = Decimal def parse(token, next): s = token[2] m = unquoted_match(s) if m is None: return parse_unquoted_str(token) if m.group('num') is None: return special[s] if m.group('float') is None: return parse_int(s.replace('_', '')) return parse_float(s) return parse class EqualToken(object): ''' Subclass or replace this if you don't like the = string handling ''' encode_equals_str = None @staticmethod def parse_equals(stringlist, indent, token): ''' token probably not needed except maybe for error reporting. Replace this with something that does what you want. ''' # Strip any trailing whitespace to the right stringlist = [x.rstrip() for x in stringlist] # Strip any embedded comments stringlist = [x for x in stringlist if x.startswith(indent) or not x] # Strip trailing whitespace down below while stringlist and not stringlist[-1]: stringlist.pop() # Special cases for single line if not stringlist: return '' if len(stringlist) == 1: return stringlist[0].strip() # Strip whitespace on first line if stringlist and not stringlist[0]: stringlist.pop(0) # Dedent all the strings to one past the equals dedent = len(indent) stringlist = [x[dedent:] for x in stringlist] # Figure out if should dedent one more if min((not x and 500 or len(x) - len(x.lstrip())) for x in stringlist): stringlist = [x[1:] for x in stringlist] # Give every line its own linefeed (keeps later parsing from # treating this as a number, for example) stringlist.append('') # Return all joined up as a single unicode string return '\n'.join(stringlist) def equal_parse_factory(self, read_unquoted): parse_equals = self.parse_equals encoder = self.encode_equals_str if encoder is None: encoder = read_unquoted def parse(firsttok, next): tokens = firsttok[-1] indent, linenum = firsttok[4:6] token = next() while token[5] == linenum: token = next() while token[4] > indent: token = next() tokens.push(token) # Get rid of \n, and indent one past = indent = indent[1:] + ' ' bigstring = tokens.source[-firsttok[0] + 1 : -token[0]] stringlist = bigstring.split('\n') stringlist[0] = indent + stringlist[0] token = list(firsttok) token[1:3] = '=', parse_equals(stringlist, indent, firsttok) return encoder(token, next) return parse class RsonParser(object): ''' Parser for RSON ''' disallow_trailing_commas = True disallow_rson_sublists = False disallow_rson_subdicts = False @staticmethod def post_parse(tokens, value): return value def client_info(self, parse_locals): pass def parser_factory(self, len=len, type=type, isinstance=isinstance, list=list, basestring=basestring): Tokenizer = self.Tokenizer tokenizer = Tokenizer.factory() error = Tokenizer.error read_unquoted = self.unquoted_parse_factory() read_quoted = self.quoted_parse_factory() parse_equals = self.equal_parse_factory(read_unquoted) new_object, new_array = self.object_type_factory() disallow_trailing_commas = self.disallow_trailing_commas disallow_missing_object_keys = self.disallow_missing_object_keys key_handling = [disallow_missing_object_keys, self.disallow_multiple_object_keys] disallow_nonstring_keys = self.disallow_nonstring_keys post_parse = self.post_parse def bad_array_element(token, next): error('Expected array element', token) def bad_dict_key(token, next): error('Expected dictionary key', token) def bad_dict_value(token, next): error('Expected dictionary value', token) def bad_top_value(token, next): error('Expected start of object', token) def bad_unindent(token, next): error('Unindent does not match any outer indentation level', token) def bad_indent(token, next): error('Unexpected indentation', token) def read_json_array(firsttok, next): result = new_array([], firsttok) append = result.append while 1: token = next() t0 = token[1] if t0 == ']': if result and disallow_trailing_commas: error('Unexpected trailing comma', token) break append(json_value_dispatch(t0, bad_array_element)(token, next)) delim = next() t0 = delim[1] if t0 == ',': continue if t0 != ']': if t0 == '@': error('Unterminated list (no matching "]")', firsttok) error('Expected "," or "]"', delim) break return result def read_json_dict(firsttok, next): result = new_object() append = result.append while 1: token = next() t0 = token[1] if t0 == '}': if result and disallow_trailing_commas: error('Unexpected trailing comma', token) break key = json_value_dispatch(t0, bad_dict_key)(token, next) if disallow_nonstring_keys and not isinstance(key, basestring): error('Non-string key %s not supported' % repr(key), token) token = next() t0 = token[1] if t0 != ':': error('Expected ":" after dict key %s' % repr(key), token) token = next() t0 = token[1] value = json_value_dispatch(t0, bad_dict_value)(token, next) append([key, value]) delim = next() t0 = delim[1] if t0 == ',': continue if t0 != '}': if t0 == '@': error('Unterminated dict (no matching "}")', firsttok) error('Expected "," or "}"', delim) break return result.get_result(firsttok) def read_rson_unquoted(firsttok, next): toklist = [] linenum = firsttok[5] while 1: token = next() if token[5] != linenum or token[1] in ':=': break toklist.append(token) firsttok[-1].push(token) if not toklist: return read_unquoted(firsttok, next) s = list(firsttok[2:4]) for tok in toklist: s.extend(tok[2:4]) result = list(firsttok) result[3] = s.pop() result[2] = ''.join(s) return read_unquoted(result, next) json_value_dispatch = {'X':read_unquoted, '[':read_json_array, '{': read_json_dict, '"':read_quoted}.get rson_value_dispatch = {'X':read_rson_unquoted, '[':read_json_array, '{': read_json_dict, '"':read_quoted, '=': parse_equals} if self.disallow_rson_sublists: rson_value_dispatch['['] = read_rson_unquoted if self.disallow_rson_subdicts: rson_value_dispatch['{'] = read_rson_unquoted rson_key_dispatch = rson_value_dispatch.copy() if disallow_missing_object_keys: del rson_key_dispatch['='] rson_value_dispatch = rson_value_dispatch.get rson_key_dispatch = rson_key_dispatch.get empty_object = new_object().get_result(None) empty_array = new_array([], None) empty_array_type = type(empty_array) empties = empty_object, empty_array def parse_recurse_array(stack, next, token, result): arrayindent, linenum = stack[-1][4:6] linenum -= not result while 1: thisindent, newlinenum = token[4:6] if thisindent != arrayindent: if thisindent < arrayindent: return result, token if result: stack.append(token) lastitem = result[-1] if lastitem == empty_array: result[-1], token = parse_recurse_array(stack, next, token, lastitem) elif lastitem == empty_object: result[-1], token = parse_recurse_dict(stack, next, token, lastitem) else: result = None if result: stack.pop() thisindent, newlinenum = token[4:6] if thisindent <= arrayindent: continue bad_unindent(token, next) bad_indent(token, next) if newlinenum <= linenum: if token[1] in '=:': error('Cannot mix list elements with dict (key/value) elements', token) error('Array elements must either be on separate lines or enclosed in []', token) linenum = newlinenum value = rson_value_dispatch(token[1], bad_top_value)(token, next) result.append(value) token = next() def parse_one_dict_entry(stack, next, token, entry, mydict): arrayindent, linenum = stack[-1][4:6] while token[1] == ':': tok1 = next() thisindent, newlinenum = tok1[4:6] if newlinenum == linenum: value = rson_value_dispatch(tok1[1], bad_top_value)(tok1, next) token = next() entry.append(value) continue if thisindent <= arrayindent: error('Expected indented line after ":"', token) token = tok1 if not entry: error('Expected key', token) thisindent, newlinenum = token[4:6] if newlinenum == linenum and token[1] == '=': value = rson_value_dispatch(token[1], bad_top_value)(token, next) entry.append(value) token = next() elif thisindent > arrayindent: stack.append(token) value, token = parse_recurse(stack, next) if entry[-1] in empties: if type(entry[-1]) is type(value): entry[-1] = value else: error('Cannot load %s into %s' % (type(value), type(entry[-1])), stack[-1]) elif len(value) == 1 and type(value) is empty_array_type: entry.extend(value) else: entry.append(value) stack.pop() length = len(entry) if length != 2 and key_handling[length > 2]: if length < 2: error('Expected ":" or "=", or indented line', token) error("rson client's object handlers do not support chained objects", token) if disallow_nonstring_keys: for key in entry[:-1]: if not isinstance(key, basestring): error('Non-string key %s not supported' % repr(key), token) mydict.append(entry) return token def parse_recurse_dict(stack, next, token, result): arrayindent = stack[-1][4] while 1: thisindent = token[4] if thisindent != arrayindent: if thisindent < arrayindent: return result.get_result(token), token bad_unindent(token, next) key = rson_key_dispatch(token[1], bad_top_value)(token, next) stack[-1] = token token = parse_one_dict_entry(stack, next, next(), [key], result) def parse_recurse(stack, next, tokens=None): ''' parse_recurse ALWAYS returns a list or a dict. (or the user variants thereof) It is up to the caller to determine that it was an array of length 1 and strip the contents out of the array. ''' firsttok = stack[-1] value = rson_value_dispatch(firsttok[1], bad_top_value)(firsttok, next) # We return an array if the next value is on a new line and either # is at the same indentation, or the current value is an empty list token = next() if (token[5] != firsttok[5] and (token[4] <= firsttok[4] or value in empties) and disallow_missing_object_keys): result = new_array([value], firsttok) if tokens is not None: tokens.top_object = result return parse_recurse_array(stack, next, token, result) # Otherwise, return a dict result = new_object() if tokens is not None: tokens.top_object = result token = parse_one_dict_entry(stack, next, token, [value], result) return parse_recurse_dict(stack, next, token, result) def parse(source): tokens = tokenizer(source, None) tokens.stringcache = {}.setdefault tokens.client_info = client_info next = tokens.next value, token = parse_recurse([next()], next, tokens) if token[1] != '@': error('Unexpected additional data', token) # If it's a single item and we don't have a specialized # object builder, just strip the outer list. if (len(value) == 1 and isinstance(value, list) and disallow_missing_object_keys): value = value[0] return post_parse(tokens, value) client_info = self.client_info(locals()) return parse class RsonSystem(RsonParser, UnquotedToken, QuotedToken, EqualToken, Dispatcher, BaseObjects): Tokenizer = Tokenizer loads = RsonSystem.dispatcher_factory() rst2pdf-0.93/rst2pdf/tenjin.py0000664000175000017500000011244011354533243016131 0ustar ralsinaralsina# -*- coding: utf-8 -*- ## ## $Rev: 137 $ ## $Release: 0.6.2 $ ## copyright(c) 2007-2008 kuwata-lab.com all rights reserved. ## ## Permission is hereby granted, free of charge, to any person obtaining ## a copy of this software and associated documentation files (the ## "Software"), to deal in the Software without restriction, including ## without limitation the rights to use, copy, modify, merge, publish, ## distribute, sublicense, and/or sell copies of the Software, and to ## permit persons to whom the Software is furnished to do so, subject to ## the following conditions: ## ## The above copyright notice and this permission notice shall be ## included in all copies or substantial portions of the Software. ## ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ## MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ## LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ## OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## """Very fast and light-weight template engine based embedded Python. pyTenjin is similar to PHP or eRuby (embedded Ruby). * '' represents python statement. * '#{...}' represents python expression. * '${...}' represents python expression with escaping. And it provides the following features. * Layout template and nested template * Including other template files * Template caching * Capturing See help of tenjin.Template and tenjin.Engine for details. """ __revision__ = "$Rev: 137 $"[6:-2] __release__ = "0.6.2" __license__ = "MIT License" __all__ = ['Template', 'Engine', 'helpers', 'html', ] import re, sys, os, time, marshal ## ## utilities ## try: import fcntl def _lock_file(file, content): fcntl.flock(file.fileno(), fcntl.LOCK_EX) except ImportError, ex: try: import msvcrt def _lock_file(file, content): msvcrt.locking(file.fileno(), msvcrt.LK_LOCK, len(content)) except ImportError, ex: def _lock_file(file, content): pass def _write_file_with_lock(filename, content): f = None try: f = open(filename, 'wb') _lock_file(f, content) f.write(content) finally: if f: f.close() def _create_module(module_name): """ex. mod = _create_module('tenjin.util')""" import new mod = new.module(module_name.split('.')[-1]) sys.modules[module_name] = mod return mod ## ## helper method's module ## def _create_helpers_module(): def to_str(val): """Convert value into string. Return '' if val is None. ex. >>> to_str(None) '' >>> to_str("foo") 'foo' >>> to_str(u"\u65e5\u672c\u8a9e") u'\u65e5\u672c\u8a9e' >>> to_str(123) '123' """ if val is None: return '' if isinstance(val, str): return val if isinstance(val, unicode): return val return str(val) def generate_tostrfunc(encoding): """Generate 'to_str' function which encodes unicode to str. ex. import tenjin from tenjin.helpers import escape to_str = tenjin.generate_tostrfunc('utf-8') engine = tenjin.Engine() context = { 'items': [u'AAA', u'BBB', u'CCC'] } output = engine.render('example.pyhtml') print output """ def to_str(val): if val is None: return '' if isinstance(val, str): return val if isinstance(val, unicode): return val.encode(encoding) return str(val) return to_str def echo(string): """add string value into _buf. this is equivarent to '#{string}'.""" frame = sys._getframe(1) context = frame.f_locals context['_buf'].append(string) def start_capture(varname=None): """ start capturing with name. ex. list.rbhtml
  • ${item}
ex. layout.rbhtml Capture Example #{itemlist} """ frame = sys._getframe(1) context = frame.f_locals context['_buf_tmp'] = context['_buf'] context['_capture_varname'] = varname context['_buf'] = [] def stop_capture(store_to_context=True): """ stop capturing and return the result of capturing. if store_to_context is True then the result is stored into _context[varname]. """ frame = sys._getframe(1) context = frame.f_locals result = ''.join(context['_buf']) context['_buf'] = context.pop('_buf_tmp') varname = context.pop('_capture_varname') if varname: context[varname] = result if store_to_context: context['_context'][varname] = result return result def captured_as(name): """ helper method for layout template. if captured string is found then append it to _buf and return True, else return False. """ frame = sys._getframe(1) context = frame.f_locals if context.has_key(name): _buf = context['_buf'] _buf.append(context[name]) return True return False def _p(arg): """ex. '/show/'+_p("item['id']") => "/show/#{item['id']}" """ return '<`#%s#`>' % arg # decoded into #{...} by preprocessor def _P(arg): """ex. '%s' % _P("item['id']") => "${item['id']}" """ return '<`$%s$`>' % arg # decoded into ${...} by preprocessor def _decode_params(s): """decode <`#...#`> and <`$...$`> into #{...} and ${...}""" from urllib import unquote dct = { 'lt':'<', 'gt':'>', 'amp':'&', 'quot':'"', '#039':"'", } def unescape(s): #return s.replace('<', '<').replace('>', '>').replace('"', '"').replace(''', "'").replace('&', '&') return re.sub(r'&(lt|gt|quot|amp|#039);', lambda m: dct[m.group(1)], s) s = re.sub(r'%3C%60%23(.*?)%23%60%3E', lambda m: '#{%s}' % unquote(m.group(1)), s) s = re.sub(r'%3C%60%24(.*?)%24%60%3E', lambda m: '${%s}' % unquote(m.group(1)), s) s = re.sub(r'<`#(.*?)#`>', lambda m: '#{%s}' % unescape(m.group(1)), s) s = re.sub(r'<`\$(.*?)\$`>', lambda m: '${%s}' % unescape(m.group(1)), s) s = re.sub(r'<`#(.*?)#`>', r'#{\1}', s) s = re.sub(r'<`\$(.*?)\$`>', r'${\1}', s) return s mod = _create_module('tenjin.helpers') mod.to_str = to_str mod.generate_tostrfunc = generate_tostrfunc mod.echo = echo mod.start_capture = start_capture mod.stop_capture = stop_capture mod.captured_as = captured_as mod._p = _p mod._P = _P mod._decode_params = _decode_params mod.__all__ = ['escape', 'to_str', 'echo', 'generate_tostrfunc', 'start_capture', 'stop_capture', 'captured_as', '_p', '_P', '_decode_params', ] return mod helpers = _create_helpers_module() del _create_helpers_module generate_tostrfunc = helpers.generate_tostrfunc ## ## module for html ## def _create_html_module(): to_str = helpers.to_str _escape_table = { '&': '&', '<': '<', '>': '>', '"': '"' } _escape_pattern = re.compile(r'[&<>"]') _escape_callable = lambda m: _escape_table[m.group(0)] def escape_xml(s): """Escape '&', '<', '>', '"' into '&', '<', '>', '"'. """ return _escape_pattern.sub(_escape_callable, s) #return s.replace('&','&').replace('<','<').replace('>','>').replace('"','"') def tagattr(name, expr, value=None, escape=True): """return empty string when expr is false value, ' name="value"' when value is specified, or ' name="expr"' when value is None. ex. >>> tagattr('size', 20) ' size="20"' >>> tagattr('size', 0) '' >>> tagattr('checked', True, 'checked') ' checked="checked"' >>> tagattr('checked', False, 'checked') '' """ if not expr: return '' if value is None: value = to_str(expr) else: value = to_str(value) if escape: value = escape_xml(value) return ' %s="%s"' % (name, value) def checked(expr): """return ' checked="checked"' if expr is true.""" return expr and ' checked="checked"' or '' #return attr('checked', expr, 'checked') def selected(expr): """return ' selected="selected"' if expr is true.""" return expr and ' selected="selected"' or '' #return attr('selected', expr, 'selected') def disabled(expr): """return ' disabled="disabled"' if expr is true.""" return expr and ' disabled="disabled"' or '' #return attr('disabled, expr, 'disabled') def nl2br(text): """replace "\n" to "
\n" and return it.""" if not text: return '' return text.replace('\n', '
\n') def text2html(text): """(experimental) escape xml characters, replace "\n" to "
\n", and return it.""" if not text: return '' return nl2br(escape_xml(text).replace(' ', '  ')) mod = _create_module('tenjin.helpers.html') mod._escape_table = _escape_table mod.escape_xml = escape_xml mod.escape = escape_xml mod.tagattr = tagattr mod.checked = checked mod.selected = selected mod.disabled = disabled mod.nl2br = nl2br mod.text2html = text2html return mod helpers.html = _create_html_module() del _create_html_module helpers.escape = helpers.html.escape_xml ## ## Template class ## class Template(object): """Convert and evaluate embedded python string. Notation: * '' means python statement code. * '#{...}' means python expression code. * '${...}' means python escaped expression code. ex. example.pyhtml
${item}
ex. >>> filename = 'example.pyhtml' >>> import tenjin >>> from tenjin.helpers import escape, to_str >>> template = tenjin.Template(filename) >>> script = template.script >>> ## or >>> #template = tenjin.Template() >>> #script = template.convert_file(filename) >>> ## or >>> #template = tenjin.Template() >>> #input = open(filename).read() >>> #script = template.convert(input, filename) # filename is optional >>> print script >>> context = {'items': ['','bar&bar','"baz"']} >>> output = template.render(context) >>> print output
<foo>
bar&bar
"baz"
""" ## default value of attributes filename = None encoding = None escapefunc = 'escape' tostrfunc = 'to_str' indent = 4 preamble = None postamble = None # "_buf = []" smarttrim = None # "print ''.join(_buf)" args = None def __init__(self, filename=None, encoding=None, escapefunc=None, tostrfunc=None, indent=None, preamble=None, postamble=None, smarttrim=None): """Initailizer of Template class. filename:str (=None) Filename to convert (optional). If None, no convert. encoding:str (=None) Encoding name. If specified, template string is converted into unicode object internally. Template.render() returns str object if encoding is None, else returns unicode object if encoding name is specified. escapefunc:str (='escape') Escape function name. tostrfunc:str (='to_str') 'to_str' function name. indent:int (=4) Indent width. preamble:str or bool (=None) Preamble string which is inserted into python code. If true, '_buf = []' is used insated. postamble:str or bool (=None) Postamble string which is appended to python code. If true, 'print "".join(_buf)' is used instead. smarttrim:bool (=None) If True then "
\\n#{_context}\\n
" is parsed as "
\\n#{_context}
". """ if encoding is not None: self.encoding = encoding if escapefunc is not None: self.escapefunc = escapefunc if tostrfunc is not None: self.tostrfunc = tostrfunc if indent is not None: self.indent = indent if preamble is not None: self.preamble = preamble if postamble is not None: self.postamble = postamble if smarttrim is not None: self.smarttrim = smarttrim # if preamble is True: self.preamble = "_buf = []" if postamble is True: self.postamble = "print ''.join(_buf)" if filename: self.convert_file(filename) else: self._reset() def _reset(self, input=None, filename=None): self._spaces = '' self.script = None self.bytecode = None self.input = input self.filename = filename if input != None: i = input.find("\n") if i < 0: self.newline = "\n" # or None elif len(input) >= 2 and input[i-1] == "\r": self.newline = "\r\n" else: self.newline = "\n" def before_convert(self, buf): #buf.append('_buf = []; ') if self.preamble: buf.append(self.preamble) buf.append(self.input.startswith('>> import tenjin >>> from tenjin.helpers import escape, to_str >>> template = tenjin.Template() >>> filename = 'example.html' >>> input = open(filename).read() >>> script = template.convert(input, filename) # filename is optional >>> print script """ if self.encoding and isinstance(input, str): input = input.decode(self.encoding) self._reset(input, filename) buf = [] self.before_convert(buf) self.parse_stmts(buf, input) self.after_convert(buf) script = ''.join(buf) self.script = script return script def compile_stmt_pattern(pi): return re.compile(r'<\?%s( |\t|\r?\n)(.*?) ?\?>([ \t]*\r?\n)?' % pi, re.S) STMT_PATTERN = compile_stmt_pattern('py') compile_stmt_pattern = staticmethod(compile_stmt_pattern) def stmt_pattern(self): return Template.STMT_PATTERN def parse_stmts(self, buf, input): if not input: return rexp = self.stmt_pattern() is_bol = True index = 0 for m in rexp.finditer(input): mspace, code, rspace = m.groups() #mspace, close, rspace = m.groups() #code = input[m.start()+4+len(mspace):m.end()-len(close)-(rspace and len(rspace) or 0)] text = input[index:m.start()] index = m.end() ## detect spaces at beginning of line lspace = None if text == '': if is_bol: lspace = '' elif text[-1] == '\n': lspace = '' else: rindex = text.rfind('\n') if rindex < 0: if is_bol and text.isspace(): lspace = text text = '' else: s = text[rindex+1:] if s.isspace(): lspace = s text = text[:rindex+1] #is_bol = rspace is not None ## add text, spaces, and statement self.parse_exprs(buf, text, is_bol) is_bol = rspace is not None if lspace: buf.append(lspace) if mspace != " ": #buf.append(mspace) buf.append(mspace == "\t" and "\t" or "\n") # don't append "\r\n"! if code: code = self.statement_hook(code) self.add_stmt(buf, code) self._set_spaces(code, lspace, mspace) if rspace: #buf.append(rspace) buf.append("\n") # don't append "\r\n"! rest = input[index:] if rest: self.parse_exprs(buf, rest) def statement_hook(self, stmt): """expand macros and parse '#@ARGS' in a statement.""" ## macro expantion #macro_pattern = r'^(\s*)(\w+)\((.*?)\);?\s*$'; #m = re.match(macro_pattern, stmt) #if m: # lspace, name, arg = m.group(1), m.group(2), m.group(3) # handler = self.get_macro_handler(name) # return handler is None and stmt or lspace + handler(arg) ## arguments declaration if self.args is None: args_pattern = r'^ *#@ARGS(?:[ \t]+(.*?))?$' m = re.match(args_pattern, stmt) if m: arr = (m.group(1) or '').split(',') args = []; declares = [] for s in arr: arg = s.strip() if not s: continue if not re.match('^[a-zA-Z_]\w*$', arg): raise ValueError("%s: invalid template argument." % arg) args.append(arg) declares.append("%s = _context.get('%s'); " % (arg, arg)) self.args = args return ''.join(declares) ## return stmt #MACRO_HANDLER_TABLE = { # "echo": # lambda arg: "_buf.append(%s); " % arg, # "include": # lambda arg: "_buf.append(_context['_engine'].render(%s, _context, layout=False)); " % arg, # "start_capture": # lambda arg: "_buf_bkup = _buf; _buf = []; _capture_varname = %s; " % arg, # "stop_capture": # lambda arg: "_context[_capture_varname] = ''.join(_buf); _buf = _buf_bkup; ", # "start_placeholder": # lambda arg: "if (_context[%s]) _buf.push(_context[%s]); else:" % (arg, arg), # "stop_placeholder": # lambda arg: "#endif", #} # #def get_macro_handler(name): # return MACRO_HANDLER_TABLE.get(name) EXPR_PATTERN = re.compile(r'([#$])\{(.*?)\}', re.S) def expr_pattern(self): return Template.EXPR_PATTERN def get_expr_and_escapeflag(self, match): return match.group(2), match.group(1) == '$' def parse_exprs(self, buf, input, is_bol=False): if not input: return if self._spaces: buf.append(self._spaces) self.start_text_part(buf) rexp = self.expr_pattern() smarttrim = self.smarttrim nl = self.newline nl_len = len(nl) pos = 0 for m in rexp.finditer(input): start = m.start() text = input[pos:start] pos = m.end() expr, flag_escape = self.get_expr_and_escapeflag(m) # if text: self.add_text(buf, text) #if text[-1] == "\n": # buf.append("\n") # if self._spaces: # buf.append(self._spaces) self.add_expr(buf, expr, flag_escape) # if smarttrim: flag_bol = text.endswith(nl) or not text and (start > 0 or is_bol) if flag_bol and not flag_escape and input[pos:pos+nl_len] == nl: pos += nl_len buf.append("\n") if smarttrim: if buf and buf[-1] == "\n": buf.pop() rest = input[pos:] if rest: self.add_text(buf, rest, True) self.stop_text_part(buf) if input[-1] == '\n': buf.append("\n") def start_text_part(self, buf): buf.append("_buf.extend((") def stop_text_part(self, buf): buf.append("));") _quote_rexp = re.compile(r"(['\\\\])") def add_text(self, buf, text, encode_newline=False): if not text: return; if self.encoding: buf.append("u'''") else: buf.append("'''") #text = re.sub(r"(['\\\\])", r"\\\1", text) text = Template._quote_rexp.sub(r"\\\1", text) if not encode_newline or text[-1] != "\n": buf.append(text) buf.append("''', ") elif len(text) >= 2 and text[-2] == "\r": buf.append(text[0:-2]) buf.append("\\r\\n''', ") else: buf.append(text[0:-1]) buf.append("\\n''', ") _add_text = add_text def add_expr(self, buf, code, flag_escape=None): if not code or code.isspace(): return if flag_escape is None: buf.append(code); buf.append(", "); elif flag_escape is False: buf.extend((self.tostrfunc, "(", code, "), ")) else: buf.extend((self.escapefunc, "(", self.tostrfunc, "(", code, ")), ")) def add_stmt(self, buf, code): if self.newline == "\r\n": code = code.replace("\r\n", "\n") buf.append(code) #if code[-1] != '\n': # buf.append(self.newline) def _set_spaces(self, code, lspace, mspace): if lspace: if mspace == " ": code = lspace + code elif mspace == "\t": code = lspace + "\t" + code #i = code.rstrip().rfind("\n") #if i < 0: # i == -1 # i = 0 #else: # i += 1 i = code.rstrip().rfind("\n") + 1 indent = 0 n = len(code) ch = None while i < n: ch = code[i] if ch == " ": indent += 1 elif ch == "\t": indent += 8 else: break i += 1 if ch: if code.rstrip()[-1] == ':': indent += self.indent self._spaces = ' ' * indent def render(self, context=None, globals=None, _buf=None): """Evaluate python code with context dictionary. If _buf is None then return the result of evaluation as str, else return None. context:dict (=None) Context object to evaluate. If None then new dict is created. globals:dict (=None) Global object. If None then globals() is used. _buf:list (=None) If None then new list is created. ex. >>> import tenjin >>> from tenjin.helpers import escape, to_str >>> template = tenjin.Template('example.pyhtml') >>> context = {'items': ['foo','bar','baz'], 'title': 'example'} >>> output = template.evaluate(context) >>> print output, """ if context is None: locals = context = {} elif self.args is None: locals = context.copy() else: locals = {} if context.has_key('_engine'): context.get('_engine').hook_context(locals) locals['_context'] = context if globals is None: globals = sys._getframe(1).f_globals bufarg = _buf if _buf is None: _buf = [] locals['_buf'] = _buf if not self.bytecode: self.compile() exec self.bytecode in globals, locals if bufarg is None: s = ''.join(_buf) #if self.encoding: # s = s.encode(self.encoding) return s else: return None def compile(self): """compile self.script into self.bytecode""" self.bytecode = compile(self.script, self.filename or '(tenjin)', 'exec') ## ## preprocessor class ## class Preprocessor(Template): STMT_PATTERN = Template.compile_stmt_pattern('PY') def stmt_pattern(self): return Preprocessor.STMT_PATTERN EXPR_PATTERN = re.compile(r'([#$])\{\{(.*?)\}\}', re.S) def expr_pattern(self): return Preprocessor.EXPR_PATTERN #def get_expr_and_escapeflag(self, match): # return match.group(2), match.group(1) == '$' def add_expr(self, buf, code, flag_escape=None): if not code or code.isspace(): return code = "_decode_params(%s)" % code Template.add_expr(self, buf, code, flag_escape) ## ## template engine class ## class Engine(object): """Engine class of templates. ex. >>> ## create engine >>> import tenjin >>> from tenjin.helpers import * >>> prefix = 'user_' >>> postfix = '.pyhtml' >>> layout = 'layout.pyhtml' >>> path = ['views'] >>> engine = tenjin.Engine(prefix=prefix, postfix=postfix, ... layout=layout, path=path, encoding='utf-8') >>> ## evaluate template(='views/user_create.pyhtml') with context object. >>> ## (layout template (='views/layout.pyhtml') are used.) >>> context = {'title': 'Create User', 'user': user} >>> print engine.render(':create', context) >>> ## evaluate template without layout template. >>> print engine.render(':create', context, layout=False) In template file, the followings are available. * include(template_name, append_to_buf=True) : Include other template * _content : Result of evaluating template (available only in layout file). ex. file 'layout.pyhtml':
#{_content}
""" ## default value of attributes prefix = '' postfix = '' layout = None templateclass = Template path = None cache = False preprocess = False def __init__(self, prefix=None, postfix=None, layout=None, path=None, cache=None, preprocess=None, templateclass=None, **kwargs): """Initializer of Engine class. prefix:str (='') Prefix string used to convert template short name to template filename. postfix:str (='') Postfix string used to convert template short name to template filename. layout:str (=None) Default layout template name. path:list of str(=None) List of directory names which contain template files. cache:bool (=True) Cache converted python code into file. preprocess:bool(=False) Activate preprocessing or not. templateclass:class (=Template) Template class which engine creates automatically. kwargs:dict Options for Template class constructor. See document of Template.__init__() for details. """ if prefix: self.prefix = prefix if postfix: self.postfix = postfix if layout: self.layout = layout if templateclass: self.templateclass = templateclass if path is not None: self.path = path if cache is not None: self.cache = cache if preprocess is not None: self.preprocess = preprocess self.kwargs = kwargs self.templates = {} # template_name => Template object def to_filename(self, template_name): """Convert template short name to filename. ex. >>> engine = tenjin.Engine(prefix='user_', postfix='.pyhtml') >>> engine.to_filename('list') 'list' >>> engine.to_filename(':list') 'user_list.pyhtml' """ if template_name[0] == ':' : return self.prefix + template_name[1:] + self.postfix return template_name def find_template_file(self, template_name): """Find template file and return it's filename. When template file is not found, IOError is raised. """ filename = self.to_filename(template_name) if self.path: for dirname in self.path: filepath = dirname + os.path.sep + filename if os.path.isfile(filepath): return filepath else: if os.path.isfile(filename): return filename raise IOError('%s: filename not found (path=%s).' % (filename, repr(self.path))) def register_template(self, template_name, template): """Register an template object.""" if not hasattr(template, 'timestamp'): template.timestamp = None # or time.time() self.templates[template_name] = template def load_cachefile(self, cache_filename, template): """load marshaled cache file""" #template.bytecode = marshal.load(open(cache_filename, 'rb')) dct = marshal.load(open(cache_filename, 'rb')) template.args = dct['args'] template.script = dct['script'] template.bytecode = dct['bytecode'] def _load_cachefile_for_script(self, cache_filename, template): s = open(cache_filename).read() if s.startswith('#@ARGS '): pos = s.find("\n") args_str = s[len('#@ARGS '):pos] template.args = args_str and args_str.split(', ') or [] s = s[pos+1:] else: template.args = None if template.encoding: #s = s.decode(template.encoding) s = s.decode('utf-8') template.script = s template.compile() def store_cachefile(self, cache_filename, template): """store template into marshal file""" dct = { 'args': template.args, 'script': template.script, 'bytecode': template.bytecode } _write_file_with_lock(cache_filename, marshal.dumps(dct)) def _store_cachefile_for_script(self, cache_filename, template): s = template.script if template.encoding and isinstance(s, unicode): s = s.encode(template.encoding) #s = s.encode('utf-8') if template.args is not None: s = "#@ARGS %s\n%s" % (', '.join(template.args), s) _write_file_with_lock(cache_filename, s) def cachename(self, filename): return os.path.join(os.path.expanduser('~'),'.rst2pdf', os.path.basename(filename) + '.cache') def create_template(self, filename, _context, _globals): """Read template file and create template object.""" template = self.templateclass(None, **self.kwargs) template.timestamp = time.time() cache_filename = self.cachename(filename) getmtime = os.path.getmtime if not self.cache: input = self.read_template_file(filename, _context, _globals) template.convert(input, filename) #template.compile() elif os.path.exists(cache_filename) and getmtime(cache_filename) >= getmtime(filename): #Tenjin.logger.info("** debug: %s: cache found." % filename) template.filename = filename self.load_cachefile(cache_filename, template) if template.bytecode is None: template.compile() else: #Tenjin.logger.info("** debug: %s: cache not found." % filename) input = self.read_template_file(filename, _context, _globals) template.convert(input, filename) template.compile() self.store_cachefile(cache_filename, template) return template def read_template_file(self, filename, _context, _globals): if not self.preprocess: return open(filename).read() if _context is None: _context = {} if not _context.has_key('_engine'): self.hook_context(_context) if _globals is None: _globals = sys._getframe(2).f_globals preprocessor = Preprocessor(filename) return preprocessor.render(_context, globals=_globals) def get_template(self, template_name, _context=None, _globals=None): """Return template object. If template object has not registered, template engine creates and registers template object automatically. """ template = self.templates.get(template_name) t = template if t is None or t.timestamp and t.filename and t.timestamp < os.path.getmtime(t.filename): filename = self.find_template_file(template_name) # context and globals are passed only for preprocessing if _globals is None: _globals = sys._getframe(1).f_globals template = self.create_template(filename, _context, _globals) self.register_template(template_name, template) return template def include(self, template_name, append_to_buf=True): """Evaluate template using current local variables as context. template_name:str Filename (ex. 'user_list.pyhtml') or short name (ex. ':list') of template. append_to_buf:boolean (=True) If True then append output into _buf and return None, else return stirng output. ex. #{include('file.pyhtml', False)} """ frame = sys._getframe(1) locals = frame.f_locals globals = frame.f_globals assert locals.has_key('_context') context = locals['_context'] # context and globals are passed to get_template() only for preprocessing. template = self.get_template(template_name, context, globals) if append_to_buf: _buf = locals['_buf'] else: _buf = None return template.render(context, globals, _buf=_buf) def render(self, template_name, context=None, globals=None, layout=True): """Evaluate template with layout file and return result of evaluation. template_name:str Filename (ex. 'user_list.pyhtml') or short name (ex. ':list') of template. context:dict (=None) Context object to evaluate. If None then new dict is used. globals:dict (=None) Global context to evaluate. If None then globals() is used. layout:str or Bool(=True) If True, the default layout name specified in constructor is used. If False, no layout template is used. If str, it is regarded as layout template name. If temlate object related with the 'template_name' argument is not exist, engine generates a template object and register it automatically. """ if context is None: context = {} if globals is None: globals = sys._getframe(1).f_globals self.hook_context(context) while True: # context and globals are passed to get_template() only for preprocessing template = self.get_template(template_name, context, globals) content = template.render(context, globals) layout = context.pop('_layout', layout) if layout is True or layout is None: layout = self.layout if not layout: break template_name = layout layout = False context['_content'] = content context.pop('_content', None) return content def hook_context(self, context): context['_engine'] = self #context['render'] = self.render context['include'] = self.include rst2pdf-0.93/rst2pdf/pygments2json.py0000664000175000017500000000372011351247653017470 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms ''' Creates a rst2pdf stylesheet for each pygments style. ''' import sys import os import simplejson from pygments.token import STANDARD_TYPES from pygments import styles as pstyles def css2rl(css): dstyles = {} # First create a dumb stylesheet for key in STANDARD_TYPES: dstyles["pygments-" + STANDARD_TYPES[key]] = {'parent': 'code'} styles = [] for line in css.splitlines(): line = line.strip() sname = "pygments-" + line.split(' ')[0][1:] style = dstyles.get(sname, {'parent': 'code'}) options = line.split('{')[1].split('}')[0].split(';') for option in options: option = option.strip() option, argument = option.split(':') option=option.strip() argument=argument.strip() if option == 'color': style['textColor'] = argument.strip() if option == 'background-color': style['backColor'] = argument.strip() # These two can come in any order if option == 'font-weight' and argument == 'bold': if 'fontName' in style and \ style['fontName'] == 'stdMonoItalic': style['fontName'] = 'stdMonoBoldItalic' else: style['fontName'] = 'stdMonoBold' if option == 'font-style' and argument == 'italic': if 'fontName' in style and style['fontName'] == 'stdBold': style['fontName'] = 'stdMonoBoldItalic' else: style['fontName'] = 'stdMonoItalic' if style.get('textColor', None) is None: style['textColor']='black' styles.append([sname, style]) return simplejson.dumps({'styles': styles}, indent=2) for name in list(pstyles.get_all_styles()): css=os.popen('pygmentize -S %s -f html'%name, 'r').read() open(name+'.json', 'w').write(css2rl(css)) rst2pdf-0.93/rst2pdf/genpdftext.py0000664000175000017500000002071012062653277017017 0ustar ralsinaralsina# -*- coding: utf-8 -*- #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/genpdftext.py $ #$Date: 2012-12-14 13:41:35 -0300 (Fri, 14 Dec 2012) $ #$Revision: 2621 $ # See LICENSE.txt for licensing terms import os from xml.sax.saxutils import escape from log import log, nodeid from basenodehandler import NodeHandler import docutils.nodes from urlparse import urljoin, urlparse from reportlab.lib.units import cm from opt_imports import Paragraph from image import MyImage, missing from flowables import MySpacer class FontHandler(NodeHandler): def get_pre_post(self, client, node, replaceEnt): return self.get_font_prefix(client, node, replaceEnt), '' def get_font_prefix(self, client, node, replaceEnt): return client.styleToFont(self.fontstyle) class HandleText(NodeHandler, docutils.nodes.Text): def gather_elements(self, client, node, style): return [Paragraph(client.gather_pdftext(node), style)] def get_text(self, client, node, replaceEnt): text = node.astext() if replaceEnt: text = escape(text) return text class HandleStrong(NodeHandler, docutils.nodes.strong): pre = "" post = "" class HandleEmphasis(NodeHandler, docutils.nodes.emphasis): pre = "" post = "" class HandleLiteral(NodeHandler, docutils.nodes.literal): def get_pre_post(self, client, node, replaceEnt): if node['classes']: pre = client.styleToFont(node['classes'][0]) else: pre = client.styleToFont('literal') post = "" if not client.styles['literal'].hyphenation: pre = '' + pre post += '' return pre, post def get_text(self, client, node, replaceEnt): text = node.astext() text = escape(node.astext()) text = text.replace(' ', ' ') return text class HandleSuper(NodeHandler, docutils.nodes.superscript): pre = '' post = "" class HandleSub(NodeHandler, docutils.nodes.subscript): pre = '' post = "" class HandleTitleReference(FontHandler, docutils.nodes.title_reference): fontstyle = 'title_reference' class HandleReference(NodeHandler, docutils.nodes.reference): def get_pre_post(self, client, node, replaceEnt): pre, post = '', '' uri = node.get('refuri') if uri: # Issue 366: links to "#" make no sense in a PDF if uri =="#": return "", "" if uri.startswith ('#'): pass elif client.baseurl: # Need to join the uri with the base url uri = urljoin(client.baseurl, uri) if urlparse(uri)[0] and client.inlinelinks: # external inline reference if uri in [node.astext(),"mailto:"+node.astext()]: # No point on repeating it post = u'' elif uri.startswith('http://') or uri.startswith('ftp://'): post = u' (%s)' % uri elif uri.startswith('mailto:'): #No point on showing "mailto:" post = u' (%s)' % uri[7:] else: # A plain old link pre += u'' %\ (uri, client.styles.linkColor) post = '' + post else: uri = node.get('refid') if uri: pre += u'' %\ (uri, client.styles.linkColor) post = '' + post return pre, post class HandleOptions(HandleText, docutils.nodes.option_string, docutils.nodes.option_argument): pass class HandleSysMessage(HandleText, docutils.nodes.system_message, docutils.nodes.problematic): pre = '' post = "" def gather_elements(self, client, node, style): # FIXME show the error in the document, red, whatever # log.warning("Problematic node %s", node.astext()) return [] class HandleGenerated(HandleText, docutils.nodes.generated): pass # def get_text(self, client, node, replaceEnt): # if 'sectnum' in node['classes']: # # This is the child of a title with a section number # # Send the section number up to the title node # node.parent['_sectnum'] = node.astext() # return node.astext() class HandleImage(NodeHandler, docutils.nodes.image): def gather_elements(self, client, node, style): # FIXME: handle alt target = None if isinstance(node.parent, docutils.nodes.reference): target = node.parent.get('refuri', None) st_name = 'image' if node.get('classes'): st_name = node.get('classes')[0] style=client.styles[st_name] uri = str(node.get("uri")) if uri.split("://")[0].lower() not in ('http','ftp','https'): imgname = os.path.join(client.basedir,uri) else: imgname = uri try: w, h, kind = MyImage.size_for_node(node, client=client) except ValueError: # Broken image, return arbitrary stuff imgname=missing w, h, kind = 100, 100, 'direct' node.elements = [ MyImage(filename=imgname, height=h, width=w, kind=kind, client=client, target=target)] alignment = node.get('align', '').upper() if not alignment: # There is no JUSTIFY for flowables, of course, so 4:LEFT alignment = {0:'LEFT', 1:'CENTER', 2:'RIGHT', 4:'LEFT'}[style.alignment] if not alignment: alignment = 'CENTER' node.elements[0].image.hAlign = alignment node.elements[0].spaceBefore = style.spaceBefore node.elements[0].spaceAfter = style.spaceAfter # Image flowables don't support valign (makes no sense for them?) # elif alignment in ('TOP','MIDDLE','BOTTOM'): # i.vAlign = alignment return node.elements def get_text(self, client, node, replaceEnt): # First see if the image file exists, or else, # use image-missing.png imgname = os.path.join(client.basedir,str(node.get("uri"))) try: w, h, kind = MyImage.size_for_node(node, client=client) except ValueError: # Broken image, return arbitrary stuff imgname=missing w, h, kind = 100, 100, 'direct' alignment=node.get('align', 'CENTER').lower() if alignment in ('top', 'middle', 'bottom'): align='valign="%s"'%alignment else: align='' # TODO: inline images don't support SVG, vectors and PDF, # which may be surprising. So, work on converting them # previous to passing to reportlab. # Try to rasterize using the backend w, h, kind = MyImage.size_for_node(node, client=client) uri=MyImage.raster(imgname, client) return ''%\ (uri, w, h, align) class HandleFootRef(NodeHandler, docutils.nodes.footnote_reference,docutils.nodes.citation_reference): def get_text(self, client, node, replaceEnt): # TODO: when used in Sphinx, all footnotes are autonumbered anchors='' for i in node.get('ids'): if i not in client.targets: anchors+='' % i client.targets.append(i) return u'%s%s'%\ (anchors, '#' + node.get('refid',node.astext()), client.styles.linkColor, node.astext()) class HandleTarget(NodeHandler, docutils.nodes.target): def gather_elements(self, client, node, style): if 'refid' in node: client.pending_targets.append(node['refid']) return client.gather_elements(node, style) def get_text(self, client, node, replaceEnt): text = client.gather_pdftext(node) if replaceEnt: text = escape(text) return text def get_pre_post(self, client, node, replaceEnt): pre = '' if node['ids'][0] not in client.targets: pre = u'' % node['ids'][0] client.targets.append(node['ids'][0]) return pre, '' class HandleInline(NodeHandler, docutils.nodes.inline): def get_pre_post(self, client, node, replaceEnt): r = client.styleToTags(node['classes'][0]) if r: return r return '', '' rst2pdf-0.93/rst2pdf/findfonts.py0000664000175000017500000003207211724540434016637 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms """ Scan a list of folders and find all .afm files, then create rst2pdf-ready font-aliases. """ import os import sys from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont, TTFontFile, TTFError, FF_FORCEBOLD, FF_ITALIC from reportlab.lib.fonts import addMapping from log import log flist = [] afmList = [] pfbList = {} ttfList = [] # Aliases defined by GhostScript, so if you use Palatino or whatever you # may get **something**. They are family name aliases. Alias = { 'itc bookman': 'urw bookman l', 'itc avant garde gothic': 'urw gothic l', 'palatino': 'urw palladio l', 'new century schoolbook': 'century schoolbook l', 'itc zapf chancery': 'urw chancery l'} # Standard PDF fonts, so no need to embed them Ignored = ['times', 'itc zapf dingbats', 'symbol', 'helvetica', 'courier'] fonts = {} families = {} fontMappings = {} def loadFonts(): """ Search the system and build lists of available fonts. """ if not afmList and not pfbList and not ttfList: # Find all ".afm" and ".pfb" files files def findFontFiles(_, folder, names): for f in os.listdir(folder): ext=os.path.splitext(f)[-1] if ext in ['.ttf','.ttc']: ttfList.append(os.path.join(folder, f)) if ext=='.afm': afmList.append(os.path.join(folder, f)) if ext=='.pfb': pfbList[f[:-4]] = os.path.join(folder, f) for folder in flist: os.path.walk(folder, findFontFiles, None) for ttf in ttfList: '''Find out how to process these''' try: font = TTFontFile(ttf) except TTFError: continue #print ttf, font.name, font.fullName, font.styleName, font.familyName family=font.familyName.lower() fontName=font.name baseName = os.path.basename(ttf)[:-4] fullName=font.fullName fonts[fontName.lower()] = (ttf, ttf, family) fonts[fullName.lower()] = (ttf, ttf, family) fonts[fullName.lower().replace('italic','oblique')] = (ttf, ttf, family) bold = (FF_FORCEBOLD == FF_FORCEBOLD & font.flags) italic = (FF_ITALIC == FF_ITALIC & font.flags) # And we can try to build/fill the family mapping if family not in families: families[family] = [fontName, fontName, fontName, fontName] if bold and italic: families[family][3] = fontName elif bold: families[family][1] = fontName elif italic: families[family][2] = fontName # FIXME: what happens if there are Demi and Medium # weights? We get a random one. else: families[family][0] = fontName # Now we have full afm and pbf lists, process the # afm list to figure out family name, weight and if # it's italic or not, as well as where the # matching pfb file is for afm in afmList: family = None fontName = None italic = False bold = False for line in open(afm, 'r'): line = line.strip() if line.startswith('StartCharMetrics'): break elif line.startswith('FamilyName'): family = ' '.join(line.split(' ')[1:]).lower() elif line.startswith('FontName'): fontName = line.split(' ')[1] # TODO: find a way to alias the fullname to this font # so you can use names like "Bitstream Charter Italic" elif line.startswith('FullName'): fullName = ' '.join(line.split(' ')[1:]) elif line.startswith('Weight'): w = line.split(' ')[1] if w == 'Bold': bold = True elif line.startswith('ItalicAngle'): if line.split(' ')[1] != '0.0': italic = True baseName = os.path.basename(afm)[:-4] if family in Ignored: continue if family in Alias: continue if baseName not in pfbList: log.info("afm file without matching pfb file: %s"% baseName) continue # So now we have a font we know we can embed. fonts[fontName.lower()] = (afm, pfbList[baseName], family) fonts[fullName.lower()] = (afm, pfbList[baseName], family) fonts[fullName.lower().replace('italic','oblique')] = (afm, pfbList[baseName], family) # And we can try to build/fill the family mapping if family not in families: families[family] = [fontName, fontName, fontName, fontName] if bold and italic: families[family][3] = fontName elif bold: families[family][1] = fontName elif italic: families[family][2] = fontName # FIXME: what happens if there are Demi and Medium # weights? We get a random one. else: families[family][0] = fontName def findFont(fname): loadFonts() # So now we are sure we know the families and font # names. Well, return some data! fname=fname.lower() if fname in fonts: font = fonts[fname.lower()] else: if fname in Alias: fname = Alias[fname] if fname in families: font = fonts[families[fname][0].lower()] else: return None return font def findTTFont(fname): def get_family(query): data = os.popen("fc-match \"%s\""%query, "r").read() for line in data.splitlines(): line = line.strip() if not line: continue fname, family, _, variant = line.split('"')[:4] family = family.replace('"', '') if family: return family return None def get_fname(query): data = os.popen("fc-match -v \"%s\""%query, "r").read() for line in data.splitlines(): line = line.strip() if line.startswith("file: "): return line.split('"')[1] return None def get_variants(family): variants = [ get_fname(family + ":style=Roman"), get_fname(family + ":style=Bold"), get_fname(family + ":style=Oblique"), get_fname(family + ":style=Bold Oblique")] if variants[2] == variants[0]: variants[2] = get_fname(family + ":style=Italic") if variants[3] == variants[0]: variants[3] = get_fname(family + ":style=Bold Italic") if variants[0].endswith('.pfb') or variants[0].endswith('.gz'): return None return variants if os.name != 'nt': family = get_family(fname) if not family: log.error("Unknown font: %s", fname) return None return get_variants(family) else: # lookup required font in registry lookup, alternative approach # is to let loadFont() traverse windows font directory or use # ctypes with EnumFontFamiliesEx def get_nt_fname(ftname): import _winreg as _w fontkey = _w.OpenKey(_w.HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts") fontname = ftname + " (TrueType)" try: fname = _w.QueryValueEx(fontkey, fontname)[0] if os.path.isabs(fname): fontkey.close() return fname fontdir = os.environ.get("SystemRoot", u"C:\\Windows") fontdir += u"\\Fonts" fontkey.Close() return fontdir + "\\" + fname except WindowsError, err: fontkey.Close() return None family, pos = guessFont(fname) fontfile = get_nt_fname(fname) if not fontfile: if pos == 0: fontfile = get_nt_fname(family) elif pos == 1: fontfile = get_nt_fname(family + " Bold") elif pos == 2: fontfile = get_nt_fname(family + " Italic") or \ get_nt_fname(family + " Oblique") else: fontfile = get_nt_fname(family + " Bold Italic") or \ get_nt_fname(family + " Bold Oblique") if not fontfile: log.error("Unknown font: %s", fname) return None family, pos = guessFont(fname) variants = [ get_nt_fname(family) or fontfile, get_nt_fname(family+" Bold") or fontfile, get_nt_fname(family+" Italic") or \ get_nt_fname(family+" Oblique") or fontfile, get_nt_fname(family+" Bold Italic") or \ get_nt_fname(family+" Bold Oblique") or fontfile, ] return variants def autoEmbed(fname): """Given a font name, does a best-effort of embedding said font and its variants. Returns a list of the font names it registered with ReportLab. """ log.info('Trying to embed %s'%fname) fontList = [] variants=[] f = findFont(fname) if f : # We have this font located if f[0].lower()[-4:]=='.afm': #Type 1 font family = families[f[2]] # Register the whole family of faces faces = [pdfmetrics.EmbeddedType1Face(*fonts[fn.lower()][:2]) for fn in family] for face in faces: pdfmetrics.registerTypeFace(face) for face, name in zip(faces, family): fontList.append(name) font = pdfmetrics.Font(face, name, "WinAnsiEncoding") log.info('Registering font: %s from %s'%\ (face,name)) pdfmetrics.registerFont(font) # Map the variants regular, italic, bold, bolditalic = family addMapping(fname, 0, 0, regular) addMapping(fname, 0, 1, italic) addMapping(fname, 1, 0, bold) addMapping(fname, 1, 1, bolditalic) addMapping(regular, 0, 0, regular) addMapping(regular, 0, 1, italic) addMapping(regular, 1, 0, bold) addMapping(regular, 1, 1, bolditalic) log.info('Embedding as %s'%fontList) return fontList else: # A TTF font variants = [fonts[f.lower()][0] for f in families[f[2]]] if not variants: # Try fc-match variants = findTTFont(fname) # It is a TT Font and we found it using fc-match (or found *something*) if variants: for variant in variants: vname = os.path.basename(variant)[:-4] try: if vname not in pdfmetrics._fonts: _font=TTFont(vname, variant) log.info('Registering font: %s from %s'%\ (vname,variant)) pdfmetrics.registerFont(_font) except TTFError: log.error('Error registering font: %s from %s'%(vname,variant)) else: fontList.append(vname) regular, bold, italic, bolditalic = [ os.path.basename(variant)[:-4] for variant in variants] addMapping(regular, 0, 0, regular) addMapping(regular, 0, 1, italic) addMapping(regular, 1, 0, bold) addMapping(regular, 1, 1, bolditalic) log.info('Embedding via findTTFont as %s'%fontList) return fontList def guessFont(fname): """Given a font name like "Tahoma-BoldOblique", "Bitstream Charter Italic" or "Perpetua Bold Italic" guess what it means. Returns (family, x) where x is 0: regular 1: bold 2: italic 3: bolditalic """ italic = 0 bold = 0 if '-' not in fname: sfx = {"Bold":1, "Bold Italic":3, "Bold Oblique":3, "Italic":2, "Oblique":2} for key in sfx: if fname.endswith(" "+key): return fname.rpartition(key)[0], sfx[key] return fname, 0 else: family, mod = fname.rsplit('-', 1) mod = mod.lower() if "oblique" in mod or "italic" in mod: italic = 1 if "bold" in mod: bold = 1 if bold+italic == 0: #Not really a modifier return fname, 0 return family, bold + 2*italic def main(): global flist if len(sys.argv) != 2: print "Usage: findfont fontName" sys.exit(1) if os.name == 'nt': flist = [".", os.environ.get("SystemRoot", "C:\\Windows")+"\\Fonts"] else: flist = [".", "/usr/share/fonts", "/usr/share/texmf-dist/fonts"] fn, pos = guessFont(sys.argv[1]) f = findFont(fn) if not f: f = findTTFont(fn) if f: print f else: print "Unknown font %s" % sys.argv[1] if __name__ == "__main__": main() rst2pdf-0.93/rst2pdf/__init__.py0000664000175000017500000000037111206605673016403 0ustar ralsinaralsina# See LICENSE.txt for licensing terms try: import pkg_resources try: version = pkg_resources.get_distribution('rst2pdf').version except pkg_resources.ResolutionError: version = None except ImportError: version = None rst2pdf-0.93/rst2pdf/opt_imports.py0000664000175000017500000000575112060333157017224 0ustar ralsinaralsina# -*- coding: utf-8 -*- #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/opt_imports.py $ #$Date: 2012-12-07 06:27:11 -0300 (Fri, 07 Dec 2012) $ #$Revision: 2544 $ # See LICENSE.txt for licensing terms ''' opt_imports.py contains logic for handling optional imports. ''' import os import sys from log import log PyHyphenHyphenator = None DCWHyphenator = None try: import wordaxe from wordaxe import version as wordaxe_version from wordaxe.rl.paragraph import Paragraph from wordaxe.rl.styles import ParagraphStyle, getSampleStyleSheet # PyHnjHyphenator is broken for non-ascii characters, so # let's not use it and avoid useless crashes (http://is.gd/19efQ) #from wordaxe.PyHnjHyphenator import PyHnjHyphenator # If basehyphenator doesn't load, wordaxe is broken # pyhyphenator and DCW *may* not load. from wordaxe.BaseHyphenator import BaseHyphenator try: from wordaxe.plugins.PyHyphenHyphenator \ import PyHyphenHyphenator except: pass try: from wordaxe.DCWHyphenator import DCWHyphenator except: pass except ImportError: # log.warning("No support for hyphenation, install wordaxe") wordaxe = None wordaxe_version = None BaseHyphenator = None from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.platypus.paragraph import Paragraph try: import sphinx except ImportError: sphinx = None try: import psyco except ImportError: class psyco(object): @staticmethod def full(): pass try: import aafigure import aafigure.pdf except ImportError: aafigure = None try: from reportlab.platypus.flowables import NullDraw except ImportError: # Probably RL 2.1 from reportlab.platypus.flowables import Flowable as NullDraw try: from matplotlib import mathtext except ImportError: mathtext = None class LazyImports(object): ''' Only import some things if we need them. ''' def __getattr__(self, name): if name.startswith('_load_'): raise AttributeError value = None if not os.environ.get('DISABLE_' + name.upper()): func = getattr(self, '_load_' + name) try: value = func() except ImportError: pass # Cache the result once we have it setattr(self, name, value) return value def _load_pdfinfo(self): try: from pyPdf import pdf except ImportError: import pdfrw as pdf return pdf def _load_PILImage(self): try: from PIL import Image as PILImage except ImportError: import Image as PILImage return PILImage def _load_PMImage(self): from PythonMagick import Image return Image def _load_gfx(self): import gfx return gfx def _load_svg2rlg(self): import svg2rlg return svg2rlg LazyImports = LazyImports() rst2pdf-0.93/rst2pdf/image.py0000664000175000017500000004346312062466541015737 0ustar ralsinaralsina# -*- coding: utf-8 -*- import os from os.path import abspath, dirname, expanduser, join import sys import tempfile from copy import copy from reportlab.platypus.flowables import Image, Flowable from log import log, nodeid from reportlab.lib.units import * import glob import urllib from opt_imports import LazyImports from svgimage import SVGImage # This assignment could be overridden by an extension module VectorPdf = None # find base path if hasattr(sys, 'frozen'): PATH = abspath(dirname(sys.executable)) else: PATH = abspath(dirname(__file__)) missing = os.path.join(PATH, 'images', 'image-missing.jpg') def defaultimage(filename, width=None, height=None, kind='direct', mask="auto", lazy=1, srcinfo=None): ''' We have multiple image backends, including the stock reportlab one. This wrapper around the reportlab one allows us to pass the client RstToPdf object and the uri into all our backends, which they can use or not as necessary. ''' return Image(filename, width, height, kind, mask, lazy) class MyImage (Flowable): """A Image subclass that can: 1. Take a 'percentage_of_container' kind, which resizes it on wrap() to use... well, a percentage of the container's width. 2. Take vector formats and instantiates the right "backend" flowable """ warned = False @classmethod def support_warning(cls): if cls.warned or LazyImports.PILImage: return cls.warned = True log.warning("Support for images other than JPG," " is now limited. Please install PIL.") @staticmethod def split_uri(uri): ''' A really minimalistic split -- doesn't cope with http:, etc. HOWEVER, it tries to do so in a fashion that allows a clueless user to have '#' inside his filename without screwing anything up. ''' basename, extra = os.path.splitext(uri) extra = extra.split('#', 1) + [''] fname = basename + extra[0] extension = extra[0][1:].lower() options = extra[1] return fname, extension, options def __init__(self, filename, width=None, height=None, kind='direct', mask="auto", lazy=1, client=None, target=None): # Client is mandatory. Perhaps move it farther up if we refactor assert client is not None self.__kind=kind if filename.split("://")[0].lower() in ('http','ftp','https'): try: filename2, _ = urllib.urlretrieve(filename) if filename != filename2: client.to_unlink.append(filename2) filename = filename2 except IOError: filename = missing self.filename, self._backend=self.get_backend(filename, client) srcinfo = client, self.filename if kind == 'percentage_of_container': self.image=self._backend(self.filename, width, height, 'direct', mask, lazy, srcinfo) self.image.drawWidth=width self.image.drawHeight=height self.__width=width self.__height=height else: self.image=self._backend(self.filename, width, height, kind, mask, lazy, srcinfo) self.__ratio=float(self.image.imageWidth)/self.image.imageHeight self.__wrappedonce=False self.target = target @classmethod def raster(self, filename, client): """Takes a filename and converts it to a raster image reportlab can process""" if not os.path.exists(filename): log.error("Missing image file: %s",filename) return missing try: # First try to rasterize using the suggested backend backend = self.get_backend(filename, client)[1] return backend.raster(filename, client) except: pass # Last resort: try everything PILImage = LazyImports.PILImage if PILImage: ext='.png' else: ext='.jpg' extension = os.path.splitext(filename)[-1][1:].lower() if PILImage: # See if pil can process it try: PILImage.open(filename) return filename except: # Can't read it pass # PIL can't or isn't here, so try with Magick PMImage = LazyImports.PMImage if PMImage: try: img = PMImage() # Adjust density to pixels/cm dpi=client.styles.def_dpi img.density("%sx%s"%(dpi,dpi)) img.read(str(filename)) _, tmpname = tempfile.mkstemp(suffix=ext) img.write(tmpname) client.to_unlink.append(tmpname) return tmpname except: # Magick couldn't pass elif PILImage: # Try to use gfx, which produces PNGs, and then # pass them through PIL. # This only really matters for PDFs but it's worth trying gfx = LazyImports.gfx try: # Need to convert the DPI to % where 100% is 72DPI gfx.setparameter( "zoom", str(client.styles.def_dpi/.72)) if extension == 'pdf': doc = gfx.open("pdf", filename) elif extension == 'swf': doc = gfx.open("swf", filename) else: doc = None if doc: img = gfx.ImageList() img.setparameter("antialise", "1") # turn on antialising page = doc.getPage(1) img.startpage(page.width,page.height) page.render(img) img.endpage() _, tmpname = tempfile.mkstemp(suffix='.png') img.save(tmpname) client.to_unlink.append(tmpname) return tmpname except: # Didn't work pass # PIL can't and Magick can't, so we can't self.support_warning() log.error("Couldn't load image [%s]"%filename) return missing @classmethod def get_backend(self, uri, client): '''Given the filename of an image, returns (fname, backend) where fname is the filename to be used (could be the same as filename, or something different if the image had to be converted or is missing), and backend is an Image class that can handle fname. If uri ensd with '.*' then the returned filename will be the best quality supported at the moment. That means: PDF > SVG > anything else ''' backend = defaultimage # Extract all the information from the URI filename, extension, options = self.split_uri(uri) if '*' in filename: preferred=['gif','jpg','png'] if SVGImage.available(): preferred.append('svg') preferred.append('pdf') # Find out what images are available available = glob.glob(filename) cfn=available[0] cv=-10 for fn in available: ext=fn.split('.')[-1] if ext in preferred: v=preferred.index(ext) else: v=-1 if v > cv: cv=v cfn=fn # cfn should have our favourite type of # those available filename = cfn extension = cfn.split('.')[-1] uri = filename # If the image doesn't exist, we use a 'missing' image if not os.path.exists(filename): log.error("Missing image file: %s",filename) filename = missing if extension in ['svg','svgz']: if SVGImage.available(): log.info('Backend for %s is SVGIMage'%filename) backend=SVGImage else: filename = missing elif extension in ['pdf']: if VectorPdf is not None and filename is not missing: backend = VectorPdf filename = uri # PDF images are implemented by converting via PythonMagick # w,h are in pixels. I need to set the density # of the image to the right dpi so this # looks decent elif LazyImports.PMImage or LazyImports.gfx: filename=self.raster(filename, client) else: log.warning("Minimal PDF image support "\ "requires PythonMagick or the vectorpdf extension [%s]", filename) filename = missing elif extension != 'jpg' and not LazyImports.PILImage: if LazyImports.PMImage: # Need to convert to JPG via PythonMagick filename=self.raster(filename, client) else: # No way to make this work log.error('To use a %s image you need PIL installed [%s]',extension,filename) filename=missing return filename, backend @classmethod def size_for_node(self, node, client): '''Given a docutils image node, returns the size the image should have in the PDF document, and what 'kind' of size that is. That involves lots of guesswork''' uri = str(node.get("uri")) if uri.split("://")[0].lower() not in ('http','ftp','https'): uri = os.path.join(client.basedir,uri) else: uri, _ = urllib.urlretrieve(uri) client.to_unlink.append(uri) srcinfo = client, uri # Extract all the information from the URI imgname, extension, options = self.split_uri(uri) if not os.path.isfile(imgname): imgname = missing scale = float(node.get('scale', 100))/100 size_known = False # Figuring out the size to display of an image is ... annoying. # If the user provides a size with a unit, it's simple, adjustUnits # will return it in points and we're done. # However, often the unit wil be "%" (specially if it's meant for # HTML originally. In which case, we will use a percentage of # the containing frame. # Find the image size in pixels: kind = 'direct' xdpi, ydpi = client.styles.def_dpi, client.styles.def_dpi extension = imgname.split('.')[-1].lower() if extension in ['svg','svgz'] and SVGImage.available(): iw, ih = SVGImage(imgname, srcinfo=srcinfo).wrap(0, 0) # These are in pt, so convert to px iw = iw * xdpi / 72 ih = ih * ydpi / 72 elif extension == 'pdf': if VectorPdf is not None: xobj = VectorPdf.load_xobj(srcinfo) iw, ih = xobj.w, xobj.h else: pdf = LazyImports.pdfinfo if pdf is None: log.warning('PDF images are not supported without pyPdf or pdfrw [%s]', nodeid(node)) return 0, 0, 'direct' reader = pdf.PdfFileReader(open(imgname, 'rb')) box = [float(x) for x in reader.getPage(0)['/MediaBox']] iw, ih = x2 - x1, y2 - y1 # These are in pt, so convert to px iw = iw * xdpi / 72.0 ih = ih * ydpi / 72.0 size_known = True # Assume size from original PDF is OK else: keeptrying = True if LazyImports.PILImage: try: img = LazyImports.PILImage.open(imgname) img.load() iw, ih = img.size xdpi, ydpi = img.info.get('dpi', (xdpi, ydpi)) keeptrying = False except IOError: # PIL throws this when it's a broken/unknown image pass if keeptrying and LazyImports.PMImage: img = LazyImports.PMImage(imgname) iw = img.size().width() ih = img.size().height() density=img.density() # The density is in pixelspercentimeter (!?) xdpi=density.width()*2.54 ydpi=density.height()*2.54 keeptrying = False if keeptrying: if extension not in ['jpg', 'jpeg']: log.error("The image (%s, %s) is broken or in an unknown format" , imgname, nodeid(node)) raise ValueError else: # Can be handled by reportlab log.warning("Can't figure out size of the image (%s, %s). Install PIL for better results." , imgname, nodeid(node)) iw = 1000 ih = 1000 # Try to get the print resolution from the image itself via PIL. # If it fails, assume a DPI of 300, which is pretty much made up, # and then a 100% size would be iw*inch/300, so we pass # that as the second parameter to adjustUnits # # Some say the default DPI should be 72. That would mean # the largest printable image in A4 paper would be something # like 480x640. That would be awful. # w = node.get('width') h = node.get('height') if h is None and w is None: # Nothing specified # Guess from iw, ih log.debug("Using image %s without specifying size." "Calculating based on image size at %ddpi [%s]", imgname, xdpi, nodeid(node)) w = iw*inch/xdpi h = ih*inch/ydpi elif w is not None: # Node specifies only w # In this particular case, we want the default unit # to be pixels so we work like rst2html if w[-1] == '%': kind = 'percentage_of_container' w=int(w[:-1]) else: # This uses default DPI setting because we # are not using the image's "natural size" # this is what LaTeX does, according to the # docutils mailing list discussion w = client.styles.adjustUnits(w, client.styles.tw, default_unit='px') if h is None: # h is set from w with right aspect ratio h = w*ih/iw else: h = client.styles.adjustUnits(h, ih*inch/ydpi, default_unit='px') elif h is not None and w is None: if h[-1] != '%': h = client.styles.adjustUnits(h, ih*inch/ydpi, default_unit='px') # w is set from h with right aspect ratio w = h*iw/ih else: log.error('Setting height as a percentage does **not** work. '\ 'ignoring height parameter [%s]', nodeid(node)) # Set both from image data w = iw*inch/xdpi h = ih*inch/ydpi # Apply scale factor w = w*scale h = h*scale # And now we have this probably completely bogus size! log.info("Image %s size calculated: %fcm by %fcm [%s]", imgname, w/cm, h/cm, nodeid(node)) return w, h, kind def _restrictSize(self,aW,aH): return self.image._restrictSize(aW, aH) def _unRestrictSize(self,aW,aH): return self.image._unRestrictSize(aW, aH) def __deepcopy__(self, *whatever): # ImageCore class is not deep copyable. Stop the copy at this # class. If you remove this, re-test for issue #126. return copy(self) def wrap(self, availWidth, availHeight): if self.__kind=='percentage_of_container': w, h= self.__width, self.__height if not w: log.warning('Scaling image as % of container with w unset.' 'This should not happen, setting to 100') w = 100 scale=w/100. w = availWidth*scale h = w/self.__ratio self.image.drawWidth, self.image.drawHeight = w, h return w, h else: if self.image.drawHeight > availHeight: if not getattr(self, '_atTop', True): return self.image.wrap(availWidth, availHeight) else: # It's the first thing in the frame, probably # Wrapping it will not make it work, so we # adjust by height # FIXME get rst file info (line number) # here for better error message log.warning('image %s is too tall for the '\ 'frame, rescaling'%\ self.filename) self.image.drawHeight = availHeight self.image.drawWidth = availHeight*self.__ratio elif self.image.drawWidth > availWidth: log.warning('image %s is too wide for the frame, rescaling'%\ self.filename) self.image.drawWidth = availWidth self.image.drawHeight = availWidth / self.__ratio return self.image.wrap(availWidth, availHeight) def drawOn(self, canv, x, y, _sW=0): if self.target: offset = 0 if self.image.hAlign == 'CENTER': offset = _sW / 2. elif self.image.hAlign == 'RIGHT': offset = _sW canv.linkURL(self.target, ( x + offset, y, x + offset + self.image.drawWidth, y + self.image.drawHeight), relative = True, #thickness = 3, ) return self.image.drawOn(canv, x, y, _sW) rst2pdf-0.93/rst2pdf/sinker.py0000664000175000017500000000170511363056323016135 0ustar ralsinaralsina# -*- coding: utf-8 -*- from reportlab.platypus.flowables import _listWrapOn, _FUZZ, Flowable class Sinker(Flowable): '''A flowable that always takes the rest of the frame. It then draws its contents (a list of sub-flowables) at the bottom of that space''' def __init__(self, content): self.content = content def wrap (self, aW, aH): self.width, self.height = _listWrapOn(self.content, aW, None) return self.width, aH def draw (self): canv = self.canv canv.saveState() x = canv._x y = canv._y y += self.height aW = self.width for c in self.content: w, h = c.wrapOn(canv, aW, 0xfffffff) if (w < _FUZZ or h < _FUZZ) and not getattr(c, '_ZEROSIZE', None): continue y -= h canv.saveState() c.drawOn(canv, x, y, _sW=aW - w) canv.restoreState() canv.restoreState() rst2pdf-0.93/rst2pdf/utils.py0000664000175000017500000002405412060441637016005 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/utils.py $ #$Date: 2012-12-07 16:29:35 -0300 (Fri, 07 Dec 2012) $ #$Revision: 2556 $ import shlex from flowables import * import rst2pdf.flowables from styles import adjustUnits from log import log, nodeid def parseRaw(data, node): """Parse and process a simple DSL to handle creation of flowables. Supported (can add others on request): * PageBreak * Spacer width, height """ elements = [] lines = data.splitlines() for line in lines: lexer = shlex.shlex(line) lexer.whitespace += ',' tokens = list(lexer) if not tokens: continue # Empty line command = tokens[0] if command == 'PageBreak': if len(tokens) == 1: elements.append(MyPageBreak()) else: elements.append(MyPageBreak(tokens[1])) elif command == 'EvenPageBreak': if len(tokens) == 1: elements.append(MyPageBreak(breakTo='even')) else: elements.append(MyPageBreak(tokens[1],breakTo='even')) elif command == 'OddPageBreak': if len(tokens) == 1: elements.append(MyPageBreak(breakTo='odd')) else: elements.append(MyPageBreak(tokens[1],breakTo='odd')) elif command == 'FrameBreak': if len(tokens) == 1: elements.append(CondPageBreak(99999)) else: elements.append(CondPageBreak(float(tokens[1]))) elif command == 'Spacer': elements.append(MySpacer(adjustUnits(tokens[1]), adjustUnits(tokens[2]))) elif command == 'Transition': elements.append(Transition(*tokens[1:])) elif command == 'SetPageCounter': elements.append(flowables.PageCounter(*tokens[1:])) else: log.error('Unknown command %s in raw pdf directive [%s]'%(command,nodeid(node))) return elements from reportlab.lib.colors import Color, CMYKColor, getAllNamedColors, toColor, \ HexColor HAS_XHTML2PDF = True try: from xhtml2pdf.util import COLOR_BY_NAME from xhtml2pdf.util import memoized from xhtml2pdf.context import pisaContext from xhtml2pdf.default import DEFAULT_CSS from xhtml2pdf.parser import pisaParser,pisaGetAttributes from xhtml2pdf.document import pisaStory from reportlab.platypus.flowables import Spacer from reportlab.platypus.frames import Frame from xhtml2pdf.xhtml2pdf_reportlab import PmlBaseDoc, PmlPageTemplate from xhtml2pdf.util import pisaTempFile, getBox, pyPdf import xhtml2pdf.parser as pisa_parser except ImportError: try: from sx.pisa3.pisa_util import COLOR_BY_NAME memoized = lambda *a: a from sx.pisa3.pisa_context import pisaContext from sx.pisa3.pisa_default import DEFAULT_CSS from sx.pisa3.pisa_parser import pisaParser,pisaGetAttributes from sx.pisa3.pisa_document import pisaStory from reportlab.platypus.flowables import Spacer from reportlab.platypus.frames import Frame from sx.pisa3.pisa_reportlab import PmlBaseDoc, PmlPageTemplate from sx.pisa3.pisa_util import pisaTempFile, getBox, pyPdf import sx.pisa3.pisa_parser as pisa_parser except ImportError: HAS_XHTML2PDF = False if HAS_XHTML2PDF: COLOR_BY_NAME['initial'] = Color(0, 0, 0) @memoized def getColor2(value, default=None): """ Convert to color value. This returns a Color object instance from a text bit. """ if isinstance(value, Color): return value value = str(value).strip().lower() if value == "transparent" or value == "none": return default if value in COLOR_BY_NAME: return COLOR_BY_NAME[value] if value.startswith("#") and len(value) == 4: value = "#" + value[1] + value[1] + value[2] + value[2] + value[3] + value[3] elif rgb_re.search(value): # e.g., value = "", go figure: r, g, b = [int(x) for x in rgb_re.search(value).groups()] value = "#%02x%02x%02x" % (r, g, b) else: # Shrug pass return toColor(value, default) # Calling the reportlab function #import xhtml2pdf.util #xhtml2pdf.util.getColor = getColor2 import cgi import logging from xml.dom import Node def pisaPreLoop2(node, context, collect=False): """ Collect all CSS definitions """ data = u"" if node.nodeType == Node.TEXT_NODE and collect: data = node.data elif node.nodeType == Node.ELEMENT_NODE: name = node.tagName.lower() # print name, node.attributes.items() if name in ("style", "link"): attr = pisaGetAttributes(context, name, node.attributes) print " ", attr media = [x.strip() for x in attr.media.lower().split(",") if x.strip()] # print repr(media) if (attr.get("type", "").lower() in ("", "text/css") and ( not media or "all" in media or "print" in media or "pdf" in media)): if name == "style": for node in node.childNodes: data += pisaPreLoop2(node, context, collect=True) #context.addCSS(data) return u"" #collect = True if name == "link" and attr.href and attr.rel.lower() == "stylesheet": # print "CSS LINK", attr context.addCSS('\n@import "%s" %s;' % (attr.href, ",".join(media))) # context.addCSS(unicode(file(attr.href, "rb").read(), attr.charset)) #else: # print node.nodeType for node in node.childNodes: result = pisaPreLoop2(node, context, collect=collect) if collect: data += result return data pisa_parser.pisaPreLoop = pisaPreLoop2 HTML_CSS = """ html { font-family: Helvetica; font-size: 7px; font-weight: normal; color: #000000; background-color: transparent; margin: 0; padding: 0; line-height: 150%; border: 1px none; display: inline; width: auto; height: auto; white-space: normal; } b, strong { font-weight: bold; } i, em { font-style: italic; } u { text-decoration: underline; } s, strike { text-decoration: line-through; } a { text-decoration: underline; color: blue; } ins { color: green; text-decoration: underline; } del { color: red; text-decoration: line-through; } pre, code, kbd, samp, tt { font-family: "Courier New"; } h1, h2, h3, h4, h5, h6 { font-weight:bold; -pdf-outline: true; -pdf-outline-open: false; } h1 { /*18px via YUI Fonts CSS foundation*/ font-size:138.5%; -pdf-outline-level: 0; } h2 { /*16px via YUI Fonts CSS foundation*/ font-size:123.1%; -pdf-outline-level: 1; } h3 { /*14px via YUI Fonts CSS foundation*/ font-size:108%; -pdf-outline-level: 2; } h4 { -pdf-outline-level: 3; } h5 { -pdf-outline-level: 4; } h6 { -pdf-outline-level: 5; } h1, h2, h3, h4, h5, h6, p, pre, hr { margin:1em 0; } address, blockquote, body, center, dl, dir, div, fieldset, form, h1, h2, h3, h4, h5, h6, hr, isindex, menu, noframes, noscript, ol, p, pre, table, th, tr, td, ul, li, dd, dt, pdftoc { display: block; } table { } tr, th, td { vertical-align: middle; width: auto; } th { text-align: center; font-weight: bold; } center { text-align: center; } big { font-size: 125%; } small { font-size: 75%; } ul { margin-left: 1.5em; list-style-type: disc; } ul ul { list-style-type: circle; } ul ul ul { list-style-type: square; } ol { list-style-type: decimal; margin-left: 1.5em; } pre { white-space: pre; } blockquote { margin-left: 1.5em; margin-right: 1.5em; } noscript { display: none; } """ def parseHTML(data, node): dest=None path=None link_callback=None debug=0 default_css=HTML_CSS xhtml=False encoding=None xml_output=None raise_exception=True capacity=100*1024 # Prepare simple context context = pisaContext(path, debug=debug, capacity=capacity) context.pathCallback = link_callback # Build story context = pisaStory(data, path, link_callback, debug, default_css, xhtml, encoding, context=context, xml_output=xml_output) return context.story else: # no xhtml2pdf def parseHTML(data, none): log.error("You need xhtml2pdf installed to use the raw HTML directive.") return [] rst2pdf-0.93/rst2pdf/tests/0000775000175000017500000000000012064144446015432 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/migrate_checksums.py0000775000175000017500000000476311327716352021520 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- #$HeadURL: http://rst2pdf.googlecode.com/svn/trunk/rst2pdf/tests/parselogs.py $ #$LastChangedDate: 2009-10-31 00:53:18 -0500 (Sat, 31 Oct 2009) $ #$LastChangedRevision: 1271 $ # See LICENSE.txt for licensing terms ''' This program is designed to migrate checksums to new versions of software, when it is known that all the checksum changes are irrelevant to the visual aspects of the PDF. An example of this is when the PDF version number is incremented from 1.3 to 1.4 for no good reason :-) Usage: 1) Clean the output directory -- rm -Rf output/* 2) Run autotest with the old version of the software, to populate the output directory with known good, known bad, etc. versions. 3) Run parselogs and save the results: ./parselogs.py > oldlog.txt 4) Make the change to the software which is known not to affect the output visually. 5) Run this script. It should rerun autotest, updating checksums to the same as they were previously. 6) Re-clean the output directory -- rm -Rf output/* 7) Re-run autotest for all the files --same as in step 2, but with new software version. 8) Run parselogs and save the results: ./parselogs.py > newlog.txt 9) Check the logs to make sure no files moved to a different category: tkdiff oldlog.txt newlog.txt 10) Check in the fixed checksums ''' import os import glob import subprocess def getchecksuminfo(): for fn in sorted(glob.glob(os.path.join('old', '*.log'))): f = open(fn, 'rb') data = f.read() f.close() fn = os.path.splitext(os.path.basename(fn))[0] data = data.rsplit('\n', 2)[1] if data.startswith('File'): yield fn, 'fail', None else: yield fn, data.rsplit(' ', 1)[-1][:-1], data.split("'")[1] def getcategories(): mydict = {} for fn, category, checksum in getchecksuminfo(): myset = mydict.get(category) if myset is None: mydict[category] = myset = set() myset.add((fn, checksum)) return mydict def dumpinfo(): mydict = getcategories() if not mydict: print '\nNo log files found' migrate = set('good bad incomplete'.split()) for checksum_result, values in sorted(mydict.iteritems()): if checksum_result not in migrate: continue names = ' '.join('input/%s' % x[0] for x in values) cmd = './autotest.py -f -u %s %s' % (checksum_result, names) subprocess.call(cmd.split()) if __name__ == '__main__': dumpinfo() rst2pdf-0.93/rst2pdf/tests/setmd5.py0000775000175000017500000000325511724555370017221 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- #$HeadURL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/tests/setmd5.py $ #$LastChangedDate: 2012-03-04 00:01:12 -0300 (Sun, 04 Mar 2012) $ #$LastChangedRevision: 2459 $ ''' Copyright (c) 2009, Patrick Maupin, Austin, Texas See LICENSE.txt for licensing terms setmd5 takes a result code and a list of tests, and changes the test results to that code. ''' import sys import os import autotest def showhelp(): raise SystemExit(''' usage: setmd5 code test [test ...] Sets the MD5 code for all given tests to 'code' if the code has not been set. Valid codes are good, bad, incomplete, unknown, deprecated. 'test' can be specified as either the base name of the test, or the filename of the test, the pdf, the md5, etc. setmd5 will strip everything except the base name. ''') def setcode(testname, code): testname = os.path.split(testname) if not testname[1]: testname = os.path.split(testname[0]) testname = os.path.splitext(testname[1])[0] pdfpath = os.path.join(autotest.PathInfo.outdir, testname + '.pdf') md5path = os.path.join(autotest.PathInfo.md5dir, testname + '.json') return autotest.checkmd5(pdfpath, md5path, [], code) def main(args=None): if args is None: args = sys.argv[1:] if len(args) < 2: return showhelp() code = args.pop(0) if code not in 'good bad incomplete unknown deprecated'.split(): return showhelp() for testname in args: if code != setcode(testname, code): raise SystemExit('\nCould not update %s; checksum already marked %s\n' % (testname, repr(code))) if __name__ == '__main__': main() rst2pdf-0.93/rst2pdf/tests/pythonpaths.py0000664000175000017500000000147011274602077020370 0ustar ralsinaralsina# -*- coding: utf-8 -*- import os import sys def setpythonpaths(execfn, rootdir=None): ''' There is probably a cleaner way to do this. maybe have buildout give us a json or something. This imports everything and takes awhile, but it is a useful side-effect for the -f option (and would have to be done anyway for that). We only need the paths themselves when we are setting up for sphinx execution. ''' pathlen = len(sys.path) f = open(execfn, 'rb') exec f in {'__name__':'testing'} f.close() newpaths = sys.path[:len(sys.path)-pathlen] ppath = os.environ.get('PYTHONPATH') if ppath is not None: newpaths.append(ppath) if rootdir is not None: newpaths.append(rootdir) os.environ['PYTHONPATH'] = ':'.join(newpaths) rst2pdf-0.93/rst2pdf/tests/md5/0000775000175000017500000000000012064144446016117 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/md5/test_image_units_pdf.json0000664000175000017500000000071012061407437023203 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '045700a88ebf9e1abc524bce6da9d22f', '133e31468d7fdf7be27c7b78ea4ce0ed', '28f58af40b24ac0caf9f8364e593aa8e', '42c2d0088c1ed35f5e9979cf04e6ad4b', '92c3492883329dce432805ab50e680e2', 'c97310bcf8b3d79634829f319839f27b', 'sentinel' ] incomplete_md5 = [ '301234b9dd4cd1a51426070423208c48', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_list_table.json0000664000175000017500000000050712060755565022203 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '37e7160a1d64cc9d922ae78dbe59e9c4', '7c74c8cd6be77543ca95a6bfd4895974', '8bfa11ffc6848be81f9f861f41281aea', 'c907e376be790801e662ac3977eafd75', 'e0a0fca3d3c011bad76a6dc6e129f747', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_356.json0000664000175000017500000000031112060653474021573 0ustar ralsinaralsinabad_md5 = [ 'e772a0afba363d31cc8895a4ad3aefb8', 'sentinel' ] good_md5 = [ '121dd59a253292e91cd7b252adfea6c0', '4610ca8411897918d31cb2a7e5260023', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_309.json0000664000175000017500000000036512060651413021571 0ustar ralsinaralsinabad_md5 = [ 'ff2ad38cdc23818c875b99bc4e94b568', 'sentinel' ] good_md5 = [ '8292d12740530ab085118ab48ddf07ed', '9d3b8e2325a2b4f3cd9e76d0823714fe', 'f2226634cbaba5a7a9c6933691691143', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_301.json0000664000175000017500000000044112060511545021555 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '04f426ace8235de2e68a2f46cd3c5ec0', '56d6f26233902c7f3be26c4697dc0de9', '99188b7dee69c3ffb152547a3b08d4fc', 'a3ed079f415fe09e5aa7060cafa6cb5d', 'd2a56011bebdf2266767d825074b010c', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_preprocessor.json0000664000175000017500000000036512060755565022611 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '02a7c5dca3bb255b01c779d0076ea9e8', '34df4d0aad0828318aac97e785175050', '4bb9587e2798ea4b498926dda5a5093b', '68fcffc2dac5c560cceebb0043594679', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_394_png.json0000664000175000017500000000016111760041002022424 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '952066b4a9cda16bbb872c0de763dd87', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_265_2.json0000664000175000017500000000072112061407015022005 0ustar ralsinaralsinabad_md5 = [ '93b821e02d1d96d77724ea4316a8d0aa', 'sentinel' ] good_md5 = [ '5194bccae93d76b633b72b9afb138e28', '5f25b674ffa287ea89fca47923f3a3ea', '61e433448adf28effc4bd89c8b47c4f2', '654affc9fa40733b65c15b6b4a360e46', '6a1a787381924a233bdb987a44dc4c73', '6cee0f5d20bff477e5c27f19a0eff85b', '9b2c1126a47a72a37316fd75c5022bc1', 'd4a36d2937c1a7687c10da5465899b57', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue172.json0000664000175000017500000000016111347531456021705 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '339470299f8e3c2f0ec1a4bed32fe3f3', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_84.json0000664000175000017500000000035712060657456021527 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'd538d7d5585bcba0520a0acc15554300', 'f7ea8d7ce5f614c2601aecb1723c7253', 'fd01e118ad902d780600f04ca1bb9c6b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_csv_table.json0000664000175000017500000000050712060453044022006 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '37e7160a1d64cc9d922ae78dbe59e9c4', '7c74c8cd6be77543ca95a6bfd4895974', '8bfa11ffc6848be81f9f861f41281aea', 'c907e376be790801e662ac3977eafd75', 'e0a0fca3d3c011bad76a6dc6e129f747', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_image_alignment.json0000664000175000017500000000050712060466534023174 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '288d58f3af99cb9b86865999ef4e5245', '91392c707d3f70c08b7a1645d734decf', '987e6e368219cb1547ce508021d03a4e', 'a13c45a3058d262fb65480034cb516c3', 'e3c30988d4075d65bbb54a66c7ad857e', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_203.json0000664000175000017500000000076712060502731021566 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '15f6e3c50cd94e7c93349d0352ca6fec', '39fdbcaaff2a4f8e911ecbc9963bfb72', '79482248495266034f559b185a7c1659', '86265dd392275188e16ba977799ec851', 'a4fb0e3cfcb59b85c746070576a4b681', 'a8f83e2a5b0f3f21bf400cb4a4ee6090', 'bff5329dde2580bb298206a6285a405e', 'c403ea8fa469f501ddc11389efeb5914', 'ed01ac0a96093c2a958815bf2b67b3f5', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_replacement_text.json0000664000175000017500000000035712060755565023427 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'a49cdd33bb5dda4ede57c1e27289e376', 'd65fb63df1c0c17a5dc19c1dae2c4770', 'e65f6047db5983f4222c7bd613c718e6', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_inline_colors.json0000664000175000017500000000043312060467075022712 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '6a0cb20f54757fa568dc07c78ee151ba', '78a2bbef427696c63f6eb111da8cc50a', 'a7657a445e82d269ada89eb14471b1c6', 'e6b1735af84d6c692274d17770ec9cdf', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_118.json0000664000175000017500000000050712061407437021573 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1ef445beabcbe8f08725f652144d8e4a', '5e154ad0560da3adc55763e1481191b6', 'cba27cfec6a5066efee1d4c0e8165e22', 'e9e67aab8d333a6fae6f308addd1df3c', 'fc7ca2041d8ce030ee3f6d7e80a948b7', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_110.json0000664000175000017500000000057112060471363021562 0ustar ralsinaralsinabad_md5 = [ '6a66dfb86c44014cec6cdca50a7c4f2e', '766b507ad852b8fe86af0ff5d906aef4', 'sentinel' ] good_md5 = [ '127bd8e25e68f08f9627e27b1e107276', '40d466a513702099d3105282c0687f68', '4a7dd5266c9478e1dda7acd41c17d463', '6e0bd777033944b0fc469d1097c81ff1', 'd243a20156bf4f15999acc4550aaa257', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_186.json0000664000175000017500000000036512061407015021572 0ustar ralsinaralsinabad_md5 = [ '66babefbaefb5a733e99fd3b22e7df84', 'sentinel' ] good_md5 = [ '755defbb91e3c8144bae05cdefcb2965', '900e4ea1752e975f5c9ddcb4093a1f77', '9805f5079c3820d6ba5f3cc52a4ea3d6', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_391.json0000664000175000017500000000031112060655013021561 0ustar ralsinaralsinabad_md5 = [ '0699f4ce18e9e23f8103c04b419bd8fd', 'sentinel' ] good_md5 = [ '67f12c6cbe25e70aa77a66bdf9f9ec60', 'b421019932258a86a588d6fc5b0dec64', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_248.json0000664000175000017500000000064512060505127021574 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0fadb0d918248ea5f9656bd7cabeec96', '160ab212a961734f1e8860fef4cb6873', '262ea4cb840c73a1aa418c2a94a04458', '3d9831dab79e3a6e30a36cc752edc301', '40d74f89f108d2c8dc13ea75bc99d141', '4c6223023d83e7c57d8295fe1c4919a5', '75638ff8450b46aed9f824a79d1b63c5', 'db553546515bc46a50873373cc71e3cb', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/styled_literal.json0000664000175000017500000000031112060453044022016 0ustar ralsinaralsinabad_md5 = [ '4a8ee22229dbd04fe36d01cdbe901f45', 'sentinel' ] good_md5 = [ '979f8ae305dec6a4c9c40d008343ae18', 'afa33c1a8a168dff4e513c83ca1e374f', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_312.json0000664000175000017500000000044112061406363021561 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4e0304714cea9532306c94960a94a6ac', '6cfa2049debe325e7558c901f3fd909e', '778ae18b823c7193b88e2baf5e112067', '9a1882af4794be8ec1c8cdb5b579e790', 'e5f806a05752e7f2e1258d1567c1f072', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_286.json0000664000175000017500000000051512060506720021572 0ustar ralsinaralsinabad_md5 = [ '0a1cdc3f7affcb77d1a39b3bee24da1d', '0d96a396e61c64b0dfd6b921b0f2ef27', '13b7a7e16089df651e5a0545d8c90197', '8d8cbb04dce466bd1552c2e966453d54', '985e67183617a4b8d0f7152748d9936f', 'sentinel' ] good_md5 = [ 'e71122705d1c06c63ccdf7a8972192c8', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_69.json0000664000175000017500000000056312060656752021527 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '07a3842236336492a8a55c7299f82823', '0c3211aad9b9b31f0d8dc87241b1766b', '7bfdf5c3be3ea3f08474a768d5360077', 'a94a39ab5ad11fffe2f1ad56eb7105fb', 'ca7b0191c6bfedd7b305499d443b525c', 'df838aae004694c838a0c50820fc3397', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_104.json0000664000175000017500000000031112060471363021555 0ustar ralsinaralsinabad_md5 = [ '8e83ce7c92054b183d02e671dc4a5ea6', 'sentinel' ] good_md5 = [ '36d9ed47df2cd5683a2a06721c6a8d23', 'e260c4721c03e20aac2b27ceba273277', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_176.json0000664000175000017500000000023512060476533021577 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4f6cf63092a7ac3ce16758876e824d47', '632f323c40d9d38cdc25189dfe470676', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_109.json0000664000175000017500000000043312060471363021567 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '9eb226180e88fb8127238ec599244fcf', 'd4b135eb1cc97177964c1804bab9ec53', 'e44a6dd59968c80acb84a6250bab117d', 'eb8400815962166d6875cab1070a4040', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_468.json0000664000175000017500000000031112061406363021571 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '02fc5385c72dce0d3e389d5ad611c256', '098dafddff2106e50bf843c6977f1135', '613c82dcfba152913471f798d55f0e9b', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_127.json0000664000175000017500000000063412060472254021572 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '03b4b9df0b1b0c5d9895ba9c8c44f172', '1ba1b4d8cf599892aa6449a2de13fae8', '2b862495bda1c7178adad80103582e93', '8173b4e8dce21a5d5b32932f18676a3b', '9294cd8d30fedd2031a71f8ab992f0f5', 'sentinel' ] incomplete_md5 = [ '43d6258d6f3248b793e793103a9a7191', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_107.json0000664000175000017500000000043312060471363021565 0ustar ralsinaralsinabad_md5 = [ 'd700a5469aded582cb8438daa39b89eb', 'sentinel' ] good_md5 = [ '9d2bfe4d943169d12cca4f96d93a30ab', 'c168c4480154c1b881501bc6c6607e8b', 'ccac66366dfa45a03217b0505d879c54', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_186_3.json0000664000175000017500000000036512060477037022026 0ustar ralsinaralsinabad_md5 = [ '50fec6923e5f1eb1585144841550c1ff', 'e3b2f6eb20db72367a5d393af58b0d02', 'sentinel' ] good_md5 = [ '469bfe3670fe4333d327f08f304df4c4', '627f4d9d623dbe1c42d7e0494c88aadd', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_152.json0000664000175000017500000000063712060474362021575 0ustar ralsinaralsinabad_md5 = [ '324325e0c7100bfcdd43a8fdcb95b362', '415f3b10ca28af14ccbe3bea416acfef', 'f6c004681a3d62dcc63968107f42133d', 'sentinel' ] good_md5 = [ '16b82610b56f8fdbeb7bfa195b665f3f', '3899da02d7fbd37bc86e6be360b3e6b5', '3ac1089af12322f854652a573ac77470', '3eb62408ea862bf50c486fc145112ab1', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_265.json0000664000175000017500000000112512061407015021563 0ustar ralsinaralsinabad_md5 = [ '93b821e02d1d96d77724ea4316a8d0aa', 'd84fe8efe2ab1c51b10484afd33ab52e', 'sentinel' ] good_md5 = [ '1def5ac6beb3e8906ab71c786a555800', '5194bccae93d76b633b72b9afb138e28', '5f25b674ffa287ea89fca47923f3a3ea', '654affc9fa40733b65c15b6b4a360e46', '6a1a787381924a233bdb987a44dc4c73', '6cee0f5d20bff477e5c27f19a0eff85b', '8cb54b94ab0ecb9d3fa676381e079478', '9b2c1126a47a72a37316fd75c5022bc1', 'a2c3ebd88b734605b34166e3935c7fcc', 'd4a36d2937c1a7687c10da5465899b57', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_slides.json0000664000175000017500000000173012060660747021340 0ustar ralsinaralsinabad_md5 = [ '780857b73a03b227fb8f0fd7cb776f32', 'sentinel' ] good_md5 = [ '0465a6c12ff865ea483be0e1d2940170', '0b6bb07229e261aab26734c15bca5dca', '225a7b3ba0c1160487e51ab7f092e2f7', '468859c6356396a0a62447b77ba41826', '5432990d8c87443d90967acf4f41d27c', '6000904fce1cfafb271bcc13877a61a9', '6a791e9aceaf659e64202fc5022dc20e', '6d078f6e9c404d9cf2f9e323d5a3ac23', '8745d7019003688abc3a0cfaaf05616e', '9935b55c17c9d43a9fdb7ef3984bb5c6', '9cca0a12669a5f8962032667a5c9a2ed', 'a1484e969a9a6acd60a1a59d533ea925', 'abf9c719b5390fab69a04a5703cb4290', 'bcfd80bf55c60b903d1d8ebcdbbd4644', 'sentinel' ] incomplete_md5 = [ '35956d208e8a13ac31f72ad915712030', '6dc336bb6e2a1e972c7dd1228cb6e660', 'c2d8a87dc72a66ff613af2883a482932', 'ca1541d7323372e117eaa9a0894b6c41', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_310_2.json0000664000175000017500000000031112060651413021771 0ustar ralsinaralsinabad_md5 = [ '29fa13efa75ca8b6b029f3553cece3db', 'sentinel' ] good_md5 = [ '695db00f6942d31d888f2d978db50a15', '7b64f87cdb240e673bdbfc7582bf8b55', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_strip_elements.json0000664000175000017500000000023512060660747023111 0ustar ralsinaralsinabad_md5 = [ '3df1d1bc102012a91122937aa0d9bb59', 'sentinel' ] good_md5 = [ '7d126c2e2eebce368abf048461519533', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_231.json0000664000175000017500000000056312060504367021570 0ustar ralsinaralsinabad_md5 = [ 'a89a7ad960aec74df5c0c6d4b4516eb1', 'db404520e20fc2b339e89b50d5e380d1', 'e3c43620158c8f0a3e11e0f541677b1e', 'sentinel' ] good_md5 = [ '02d182fd3f0681c2d6407bc28595d388', '6216a091cf744aed49f21484816b725e', 'b5cec31528deb328b4fe279fb19474bd', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_216.json0000664000175000017500000000050712060504367021571 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '3af37bf2cfc8e5250e5820aa2c96be43', '7d852245b2f1500a310443039b9c2f43', '93e83c5ff3fd80688383171e007f7397', 'a0c94c7490e3eccd41f8674b876247d8', 'e67de09f228504067ff9aa81ad0c2c04', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_470.json0000664000175000017500000000036512062466541021600 0ustar ralsinaralsinabad_md5 = [ '9b41cb6f49cd95a10eaae8025823c84b', 'cf202effc8bc13cf61a566c255c072a1', 'fac01e8e18d40fb2590ba0585c019efd', 'sentinel' ] good_md5 = [ 'eed5fc787ce6a45afb23e9f7b84175cf', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_83.json0000664000175000017500000000035712060657456021526 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '6241dd76ef875655fa95969036011955', 'ebba39ed8c64bdcd85967b897892b670', 'f4681efb6259445bcdb5f49cba34da3f', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue284.json0000664000175000017500000000023511350166421021701 0ustar ralsinaralsinabad_md5 = [ '0da1ec62ea76817c379d1e3c15d8dc4d', 'sentinel' ] good_md5 = [ '7843dd2d023d9220ad83fde1280563d1', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_img_header.json0000664000175000017500000000043312060467075022137 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '762c4bd45d25337aaf4036b418741c7d', '8f4cb8f1239b2c55cb149b4838c84261', '9769a4736c068e318ee85ea13da70263', 'bb07b0e4ab4847a7e8c706f832699685', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_119.json0000664000175000017500000000035712060472254021575 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '14d660a1bd50f6564b07b0295e781004', '3a51961f8fc1218b0c0356ccc76ad5d8', '5c3241d26ec50c18cdfa749c69ddeb44', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_298.json0000664000175000017500000000031112060511203021557 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0986bfc21caa214ebc64335a5ecf6fa5', '85c999d90fd517fff2c622ac5375e53b', '8bc64fad6950c829531a3540c645a48c', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_48.json0000664000175000017500000000056312060656470021521 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '32d419d61b1fd541d02fd20f114fb67e', '58c81d51ebae84517190ddac2b67746e', '6891e26ad80c2a82fb131d95c5f836fb', 'ae474ce5d7c8c85dac9bbf2fecf1dc99', 'f02fed58d49ab4099633fb42bbc76143', 'ff58730d6596eadc771a58afb660067a', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_background_svg.json0000664000175000017500000000076712060453044023052 0ustar ralsinaralsinabad_md5 = [ 'c07f1a24d8c1513e6437d8954cc55211', 'sentinel' ] good_md5 = [ '10975d9924c8cbfacd4200914797fd83', '1318d0ea2e0f24352ff8f5ce95700f4b', '4b2b8759d4e5e9072bd5446f6168206a', '52ae8b10f658beeb79606c0c6e821964', '626d5569fc82828c97a5c9be909f972a', 'cad0e45e8c2a05d3ec2e34f092ccfe9b', 'd6af8349f51b8b94b66cdd5f4d7cf48f', 'e3bc429070c1b3bcb7c00a0e8a517fff', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue196.json0000664000175000017500000000016111347510024021677 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1827035629da7e515c67cd7a9408d132', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_239.json0000664000175000017500000000056011345575264021606 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'a1e0026e048cb1865e461308e0eba7d0', 'b23c595f3ccb684f6dc48feaa3a5ec00', 'e55b3e1a196ebadd8b2d8c0d35312a33', 'sentinel' ] incomplete_md5 = [ '4e94758631e8def47ff9d1d741d14d27', 'd97d3732eb0715482be7e571d695d022', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_vectorpdf.json0000664000175000017500000000051512061406363022042 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0bc0cfe37d2bab4ce8bef6ecc268aac9', '35e0bb01497247f41f23c0750a129599', '35fd3ad15a8ecad9c9b50b16f0118e14', '9cfb3ed74abc18de8bb3e71bdff9bcab', 'ab5d63118c5cdc948c2876e319dbb2bf', 'd435a6425cf9622d70f78f1c752850b7', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_232.json0000664000175000017500000000050712060504367021567 0ustar ralsinaralsinabad_md5 = [ '43a9e39a0cb081e6764faac10b352efa', 'd1c0a45ef8f81babefabaaa83342ba03', 'sentinel' ] good_md5 = [ '86af07a5e4eae44e6686a5f2e6c92bc1', 'acb0ce9e3922b6e8e18f4d64e91b3a3a', 'f489baa4d057022fb30efb42074b6903', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_202.json0000664000175000017500000000050712060502731021555 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '02f3caa125384eb2909e91fa5237a35d', '0e9e5d9038bfb55bac63729c5884f751', '9852870a99307db4145b47ac7db44da9', 'd4e1ecf7fe56d4db28daf56d532a3c75', 'ff48d55b8b5447225f9ff92e653acf81', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_116.json0000664000175000017500000000043312060472006021560 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '7074acffffaa59b2c00b4ef452349fc0', '94e4742d9574cde6336e60cdd8b01747', 'baf409a2a8992ccc77dd976299c416a6', 'cb62dcd2ffa1e3dfb37a261201de8a18', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_svg.json0000664000175000017500000000076712061406363020656 0ustar ralsinaralsinabad_md5 = [ 'dc3d9232d60fd8de23a84dd60d31096b', 'sentinel' ] good_md5 = [ '0d66d57f494504e11d009005c8f235e9', '28c67543843fbc947af83bc15eef9751', '7431e632bcb1d337e8f25b557b1fadb0', '7caa470ed96254f041d8fe0e9968d587', '898507dbe582124ce1cd3a9e030c2e10', 'cc3c4720f3a9b26aedd24ca63d1523c1', 'd1a9f3894e7d857c82ca73434133542e', 'e697552e5ce85665e109c45115b2334b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue252.json0000664000175000017500000000016111351244503021671 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '368034f0d71e6236d1425409222db99c', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_173.json0000664000175000017500000000071312060474566021601 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2cee2c625fb832f806514df49638b807', '4e3df682804d3f7e9992da403115765c', '5be4c9a60b2064847aed5b41a5a8f4f3', '6a12c89747beabd45f935fedf1cb8d6a', '977795f89fc7c169ccbc65af7a414f77', 'c9efd074973e5a90ba65eae40c06a6a5', 'de2037d02ba4f21095764369efe1855e', 'ff136c789a8095ce156ac77f881d97d9', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_68_1.json0000664000175000017500000000035712060656752021747 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '30b631e67d901963e15764820af4c79a', '49f107c92a485ce7fad5291b6e4aa5a1', '7981260a1267db1fb29ca59fe0334e8e', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_math2.json0000664000175000017500000000023512060755565021072 0ustar ralsinaralsinabad_md5 = [ '6f893e99868b27501cc9e2e447787a45', 'cb79f95f901e6692bd04e3a131951033', 'sentinel' ] good_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_header_footer.json0000664000175000017500000000050712060465673022665 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '04b57bdf1d4dd8e676d7918d50beb58f', '29328768d8a96114cc321e5a4ba67087', '4540742623e18488fd9a2b94c7420441', 'e3d3cf87d09901be68a60a60a7154e38', 'fe2eb3cd7015a8791e0a66e83b1f9eb5', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_450.json0000664000175000017500000000016111760032757021572 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2dcc106f379fc77d33d92e542bda9b25', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_118_2.json0000664000175000017500000000050712061407437022014 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '81f58c9ccd21690dcd261ddb8c0b25fb', '9c8cfc81d4daf9d6cbf3adc32e15b25f', 'a3833919d9f85c75d23b7b124d02d2d0', 'dcb0209dea51831018d5b008e4731e05', 'e75a57e6777fd6d1b780a1031d0c9747', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_landscape.json0000664000175000017500000000031112060755565022004 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '83b71b38adf53232b8cb9aef41511ada', '8a01506fffdab10940224ce7133e5e58', '8c398761294bdf39590240105bc60a70', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_239_2.json0000664000175000017500000000023512060504367022015 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1bc00cf68b98e469afd7a12f1e7b157f', 'e28c84694ed5cbf8fda591e1b32c7a90', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_144.json0000664000175000017500000000035712060473574021601 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '12d31e21e95cbe533735b2cc05c1d8b5', '3a0d202f90ccae154fbcdf9816ab6871', '53df18d15c64c206f208eca854c221bd', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_137.json0000664000175000017500000000050712060473445021575 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '36c50153b8012a59a3e54141d63bc2c0', '397c1b3abd1ac53710e941a34c29df25', '475e97512559dad6ce9052481cb2064d', '9627e6b9eedbb5670f99510c25058758', '9c4149e9cf9c4402c7fd0b943462d283', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_410.json0000664000175000017500000000023512060655013021556 0ustar ralsinaralsinabad_md5 = [ 'a7f00dc98808f6d832c41753caf50b15', 'sentinel' ] good_md5 = [ 'b5c09e189dac6a35f298ec447da0dc2e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_180_1.json0000664000175000017500000000063712060476533022020 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '04c7edb98a1a62cefc30bf5a2e8f24b9', '085b51b8798c9ae1222e69c2ffb12ad8', 'a36bef52bbc4528d92f38f78edd07f30', 'aa48a5e0ec28ebf3d0699e0d1bcccd8e', 'b70fac7a5ffed5f7ffb03a87e53d8b4e', 'c30255eaeab6997b953de77d99b18a7e', 'd9d363dbd3dfbab050cee1df24012261', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue183.json0000664000175000017500000000023511351243071021675 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '50d0736b73ace461b7969df994cc1ef9', '7bb3cf77bc868e7d745488a7afa6095a', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_stylesheet_includes.json0000664000175000017500000000056012062354156024130 0ustar ralsinaralsinabad_md5 = [ 'dd5deb327f566599e9ca34350a65944a', 'sentinel' ] good_md5 = [ '34acd719336816f04c91ca4c269812c9', '5a81eb431b3edcdcfd66dc95042f9798', 'abc117894ff21be8afdf61562eebcded', 'sentinel' ] incomplete_md5 = [ 'b7ae14ce1353e8326da0291f3b35ba65', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_238.json0000664000175000017500000000056312060504367021577 0ustar ralsinaralsinabad_md5 = [ 'd8c8c68b457f21bf30581f13db08ecfb', 'sentinel' ] good_md5 = [ '150f68d9835542d22b1f512dc77674aa', '65dd859ff35e2db5cf2ed0a28ee64b5d', '7f71d1b4222b997ae2d021e827fe8377', '92abca15ff654c5663ccc33b4b3d9bae', '94a238d7f0d6154059ef7628929b39bb', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_485_2.json0000664000175000017500000000023512061111602022003 0ustar ralsinaralsinabad_md5 = [ '0ea8ccf08c5afa94f127c0d940048f53', 'sentinel' ] good_md5 = [ '92e29501bb921415a9427c784048c4ed', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_70_2.json0000664000175000017500000000050712060657157021736 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4029d7be653cac05ca9076bdba93c629', '7373b2465d64162897829d092361f369', 'b46f525eea5275f5ddaff7e494c5c9ae', 'ec2015f109152640cafeafcaf2889c29', 'f1299252ed2fda9692a920e7be71fa48', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_figure_alignment.json0000664000175000017500000000036512061407437023373 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1510b793d36744dfdb035aff6f9c0631', '20286c269b552b258189c14560e46542', '7fce16d01763b1a25c09154a3d90f000', 'e72bc35411b8e36b6dd90dc8ab8676da', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_233.json0000664000175000017500000000031111362111716021555 0ustar ralsinaralsinabad_md5 = [ '528725f28036780a755e29ef7b18ee3a', '9f52d9a4ebb267942718117e51fbb778', 'e8ae8a8fa77dca677b0016d55a0589b4', 'sentinel' ] good_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_295.json0000664000175000017500000000051512060511203021562 0ustar ralsinaralsinabad_md5 = [ '474e21599c87c6f158e496bcffb853eb', '4afc9d0fad435e92d8f63ec2494af144', 'sentinel' ] good_md5 = [ '4d005c274e56ac0321c7cdf4a27102e6', '7b2294c434a6486f2d84d15afd107053', '82e1e4bbb5bcd7098dab5037e8201fe0', '83bf367dc068c42c2c28421dd6151fee', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_kerning.json0000664000175000017500000000063412060755565021517 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '32d0163fa9fe5d62bdeb1a9f045c5422', '6981170c03fe57a813cb7191e6d290ae', '8363acd847d323ad49cefb3876d2464c', 'cb4b21bd8a9a8e1cbaf200d311646559', 'sentinel' ] incomplete_md5 = [ '638a96a615203f5417f7ef54fe17e190', '7af31898f4695a5abebbe19b2b77edd3', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_328_2.json0000664000175000017500000000036512060652615022020 0ustar ralsinaralsinabad_md5 = [ '69d3f01c7f097c881c77ff1ef760be27', 'sentinel' ] good_md5 = [ '3435bc6a26f39f41e5fbe7427545362c', '6c37d4e21d514f4b9ddcc4f548b90b6d', '8dd639567738e695c7cdae4f14ac83fd', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue319.json0000664000175000017500000000016111403056254021677 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'aa62eab9dc91e6427aa0bdd871fd0335', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_134.json0000664000175000017500000000043312060473445021570 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '690515f7bd90eed9cb5a8b38f5f43cba', 'a0a9cc5af6b0d858cb920003023fd09d', 'e98eabfa950180160ab59208a900353d', 'fc504be67858a3e9c15cdeeddf6bca9c', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_292.json0000664000175000017500000000036512060511041021562 0ustar ralsinaralsinabad_md5 = [ 'f01764b73bfd18db888a51c3a9b0547b', 'sentinel' ] good_md5 = [ '0220442d05c234cb1b421ebfad0f7fd5', '64790a3a3d4b0e9b26560455e80a61c6', 'd35b9ed3476121d2274673a81f2cc2ad', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_field_widths.json0000664000175000017500000000043312060456300022505 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4d6143e24c974b1c1740fac430b7b413', '5eaedf1d8b3a283455bd7ff028b3ce64', '994dfee133e55f241695122107f55c82', 'f376ff956950e72aa9155dd4a01cfc9c', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_138.json0000664000175000017500000000071312061407437021574 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1a5bdaf100fdbde8f3269efaf3b51bdf', '2a5f8681ffc64bd4539a383e0c691a7a', '3902e2a572b4950e151851efb2662cc4', 'bd533d8c97ea897b27ed5137f3fd20f7', 'bd723427e3a4b6d691a295970ed80d88', 'bfd59d8da628e5231514c702ed625988', 'd1cff0c300cce973f21c405655c5e66d', 'ee4222d64e54fb4870153cc0a7b7b064', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_autoembedding_type1.json0000664000175000017500000000050712060453044023775 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '3a79d1604db56d150baa165b2fed4e44', '68f024d9c7e62966d7ee8d153c717f54', '8abc82b50940b7687980a70dbc8ae31e', 'a8a7fe07c638a01cae97caf3f9ea59f5', 'b702b8b16ef4012954779515474cef3b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_extensions.json0000664000175000017500000000023512060456300022237 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '04d1584992e5a28ac3a1f27174c3daae', '9852870a99307db4145b47ac7db44da9', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_331.json0000664000175000017500000000044112061406363021562 0ustar ralsinaralsinabad_md5 = [ '3f9f3793cd263b13f2abd77e17af7757', 'cc4e9743e15dc6237a660a720662af4c', 'sentinel' ] good_md5 = [ '7b210259e4bccbfd12adb9e9525856dd', '7b29a9838ec49713152a4ceaf7e16108', 'd1cf2ce10b05ca12eda1b810b7dd2886', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_394.json0000664000175000017500000000031112060655013021564 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4b9501be31c0c060322168cab432bdeb', '895648f5144e105d7aac5c109c8e91e3', 'e6718567b1eabb990f3473bf7f4d8526', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_64_2.json0000664000175000017500000000043312060656470021734 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '11328258308a15fa896acbbbba64ebfc', '87421a264d32477d67a5c9526d430852', '97b2a45af6cbcd137f6036addc5da898', '99e52f8ff0c0a1b8c55b136a32458ac6', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue280.json0000664000175000017500000000016111347472140021677 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0336fbb0a14a715014761fa807f2733a', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_322.json0000664000175000017500000000023512060651413021560 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'c8b6075e5429f6e568c1aa483cfc6a33', 'e939229ce80f5b582e34fa28bc425e14', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_blockquotes_in_table.json0000664000175000017500000000016112062640232024227 0ustar ralsinaralsinabad_md5 = [ 'ebb373f4ec6f019eb9746f5988560c30', 'sentinel' ] good_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_154.json0000664000175000017500000000035712060474362021576 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1215fad6197dec644bb3d9aef6f56e29', '739769684e525ca529a3d2462328e0da', 'b6bc4565080ac9b996f62d9b607a9d1d', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_inline_image.json0000664000175000017500000000050712060467075022475 0ustar ralsinaralsinabad_md5 = [ '1c6aec016fd5e4d97f225c4fac037d5e', 'sentinel' ] good_md5 = [ '389179df0adf18135445fa7f2d70f3db', '4ae33d30d7f6460d888fd8bfecfd8c3b', '5cce67f86b9f3cd21948308ad8babfcc', 'ae080a4b1ca04f7e66c3b76d6218ec38', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue229.json0000664000175000017500000000023511351243250021675 0ustar ralsinaralsinabad_md5 = [ '5dbc9ec86a27f61faa1fc168d5722a2b', 'e2669e18a594cc8ee87498a7500feb49', 'sentinel' ] good_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_186_2.json0000664000175000017500000000023512060477037022021 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '3c97bc4d312dbf72b1624252d976a34c', '9a9ceeb47007fbcb8551218736122484', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_266_2.json0000664000175000017500000000057112061407015022011 0ustar ralsinaralsinabad_md5 = [ 'e45bc439f836d5c2862d1c52e188fa6e', 'sentinel' ] good_md5 = [ '0a449d7b79a95b44328d90d7af47962b', '0cc582e2a2d8017e16f22cd6135c9e79', '5aded4b403b6e8156f12ec9abc0c318b', '778799a52e13a4f77106c6b45a97b6b8', '94e089113d8102122fcc1bbbd4cf8a99', '989f1fcca06a9041486947a640b9c820', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_302.json0000664000175000017500000000044112060511545021556 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0217a765b78f50628abc1621c528cc23', '0ee9b6bf1ec9db392c65495f115759f7', '29d31fac86895bf4676fffed2b3fbba2', '549df30e21f2183101b373992131fb66', '6b86493317a243bc65c51f9b7d117e38', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_461.json0000664000175000017500000000016112062705451021566 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '403b2e4569c6ca65918e04be71172221', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_339.json0000664000175000017500000000031112060653247021572 0ustar ralsinaralsinabad_md5 = [ '99c8884bc516b1f1ee2354953e10c841', 'sentinel' ] good_md5 = [ '75e08bdee0a0f951e780820228e7a052', 'a4c0c9f71892b584e87f8858ccd080aa', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_249.json0000664000175000017500000000044112060505127021567 0ustar ralsinaralsinabad_md5 = [ 'd6f09c3c0b627ae3916af0c04d55db3f', 'sentinel' ] good_md5 = [ '1df2217b3a5d96f5aa64c72c1bf30259', '701364fd46b7867bcfec430342494e1e', '75a23f7b550a98b704ce809f7028e2e5', 'f626af3f18d4d08b508efb7bc0c6f6ed', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_91.json0000664000175000017500000000043312060657456021520 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1ae76e9d28fe94ceece6454f5bb28489', '6f291a93ceb9fce7a0f835be5b2b54f3', '7a51e58650b80e9e123e378f08f13b8d', 'f09dd70741b77dd428702da598b19a19', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_266_3.json0000664000175000017500000000057112061407015022012 0ustar ralsinaralsinabad_md5 = [ '0bf81537f1d831b39ff64eab7e4532f0', 'sentinel' ] good_md5 = [ '0b921e5a9ed301a596b7e50d9371547c', '2a2f90cfcb2ac306691f23de318d17d5', '4e819076233fdf7e062ca751164790b3', '5841d2d09cdb18d006350a4ed9cc1fe7', '5ede36b85dcffe5ba32cd7b2b227ea68', '67bc8632435455c3e0ba6bb3de81b97d', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_313.json0000664000175000017500000000031112060651413021553 0ustar ralsinaralsinabad_md5 = [ '38d7676e56b338696b8376dc62670243', 'sentinel' ] good_md5 = [ '053cd7d15cd0072880177ab14b75ddf4', 'da2163a30fb5aeebf9faf730d271241d', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_cover.json0000664000175000017500000000031112060453044021153 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0bce9a10a543c03209e021d500e289b8', '931a03f18a34680e5e04f54ce5c7bcf5', 'f20ea8c568b42d726c459bf2d502595a', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_65.json0000664000175000017500000000043312060656752021517 0ustar ralsinaralsinabad_md5 = [ 'f1ce8e9cbea68138132a79d9c0287017', 'sentinel' ] good_md5 = [ '2760a50bce2a083772a3d0458d35eee9', '8a9026a3fd1c48460bbac8d4a42de9c9', 'e581114aa5d51c08cd3f629777d76840', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_fancytitles.json0000664000175000017500000000044112064140633022367 0ustar ralsinaralsinabad_md5 = [ '10d67f799b8c8372136274b013034f64', 'f8f99fbb7b687340b1440ab610be382f', 'sentinel' ] good_md5 = [ '83470d0795d86a50c85337bc3ee015f6', 'a217398fa299ae19259fbcaf41f8e585', 'f1151ed4005455a522620dd156a7e79a', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/numbered_links.json0000664000175000017500000000023512060453044022004 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '80d98fac64c38665c9f7309eac7a6630', 'acd27fe880468c001e385c021cd0dfee', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_419.json0000664000175000017500000000023512060655204021571 0ustar ralsinaralsinabad_md5 = [ '194a3ca345fae65727ce0eec0efc9432', 'ba9909d3bf5807ab3826283d7b2d1331', 'sentinel' ] good_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_361.json0000664000175000017500000000036512062472537021601 0ustar ralsinaralsinabad_md5 = [ '62f0b7a2f9183b065a122c37d27bbad3', 'c8cb5f7e5528c4f6b976f06ef89ed130', 'sentinel' ] good_md5 = [ '0cfd186968102d9e3860502d20f3e4c5', 'b5cd5b9426c463971320ee426abe1065', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_style_width.json0000664000175000017500000000050712060660620022403 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '69de21f87739db620ad44ec33e2d5cd6', '895412762959a1401b418f9a205dd6ac', 'a9286cdc3b4dce351e79db3b9c10c09d', 'd3d5c72c4b5846f5d45c20a678ff9cd4', 'f7e50105bfdfb3a8bbfd263f22119c19', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_dict_styles.json0000664000175000017500000000056312060456300022372 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0e0d0a2d819d481083fd58e1b04b2936', '821be9880f2397d1680b740e628c2655', '84b9249b80ca4f5ebdf47f3cc8799312', 'd4281c08a738928d114564038434258f', 'd4730984bb32ca87bc14ec744b7e6e71', 'fa1b8f4e91404cc1550a5b8402770179', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_126.json0000664000175000017500000000076712061407437021602 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '223cd5d2926d45165e2837a16dbd1907', '3493a8bc1e41cc0882d7d043083a94df', '46af66147162c8d10418d1beccd0de59', '820d5609fb877aa9f0afa929f3c5eae7', '9b63ab39bfaa1c04a3b091b1f40e1709', 'ab9d5557661ecda1c458f71ee2b4c240', 'b776c504dfa4303461d7abd8cea559ad', 'e5de0608ec5379ba181ceae93fd9824c', 'f8fcec8cb96c47485079184495a85992', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_181.json0000664000175000017500000000050712060476533021575 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1b813c1a33ef3af3036832babf21c458', '327b228c5b852fa25ff079d6398ea793', '5bbce6fe6d290332848278a77f4b0d4b', '634eba6509cebb85c91d417c3653cffc', 'f639f9b09303e4eeba0b153ecf6c5a80', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_471.json0000664000175000017500000000031112062472537021572 0ustar ralsinaralsinabad_md5 = [ '71541c45deb04039253591bbed657b6e', 'e9b837d06e518d9baf13405ff50d7ea7', 'sentinel' ] good_md5 = [ '55a49b05c94d26ef9ba01b40902fc933', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_image_units_svg.json0000664000175000017500000000076712061407437023245 0ustar ralsinaralsinabad_md5 = [ '1ee989f2c15ee9f6fcd07a984718486a', 'fdddcbe6c776c2509cd3267e27c0486b', 'sentinel' ] good_md5 = [ '20fdffdab5ffc537f36d42ed62be91f3', '39583387e2ad7f15d183c57cda104aa8', '4b36c02f066717b679c0530f727ce39f', 'be02db3a8ad03e13f9d4733fdeef5e44', 'c73c0edb829df4c65f1d8521ad5f73d6', 'c7af74120d9211916229264e3099322c', 'fce950bf83a4daab4d2d9422a18d593d', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_110_2.json0000664000175000017500000000057112060471363022003 0ustar ralsinaralsinabad_md5 = [ '5d182bf3d611b288a38ecdaa7b4aa756', '6313aa56915f3cf906db4daf90304133', 'dda49c1cb43d42eaacd67c6f504248c1', 'e5eefabbc6d4dee3433e14a16dc3394b', 'sentinel' ] good_md5 = [ 'a045f367e2cf3586f6349e4cbda62259', 'ce24fbe9eba6293bbb5714b8ee16253c', 'fea9a97ddcae3b7654d2778f5824c1ef', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-markup.json0000664000175000017500000000023211347532751021620 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'sentinel' ] incomplete_md5 = [ 'a8784086674f70e8050ab155826be40a', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_304.json0000664000175000017500000000031112060511545021554 0ustar ralsinaralsinabad_md5 = [ '4f2665a5306a1b9a9fc70a2fc1f84a89', 'sentinel' ] good_md5 = [ '824628dd2c629dab0fbec3b1ee98abd3', 'c3ac5d708b286dd12288710a7b4f6c8a', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_bullet_chars.json0000664000175000017500000000071312060453044022512 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '05bee47b328edff14a1d536b17d3e1cf', '0dec77ce92f34d7cce0f9aa00c7dafd8', '1050994b342f74875f638c046e145a85', '1aad79ad4363401791700f0564412340', '5a481f5b091a497bc66dc61238e2785b', '776f337a14f272e3215661a277d98c8b', '7aa4e4301e9404a251f34c6e1c0d8fb8', 'b01bb7d1d7bc313e0619ef23dea17205', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_363.json0000664000175000017500000000031112060654276021572 0ustar ralsinaralsinabad_md5 = [ '515c9c7e2d24e52bd20bdde5fa6cf963', 'sentinel' ] good_md5 = [ '2918b07c99140d47ff08dbb0727a2161', '2ceb29ab15d761b8b8036514e0917ef0', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_math.json0000664000175000017500000000111412060755565021005 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0e0bbe2a00634055ffc9d1f1c11d1ec0', '17be6dd4fc33477203480023b516e872', '454b897b6a3671b2efba6a8e053ce38d', '48dc2e0e80c875b8117e8210598d75bc', '61b78f9333f3629d1fb74246e398afea', '8748ca044bde38ea86825079135b4ca9', 'd0c8cd54f4db431b52b57386bfe5fa7f', 'sentinel' ] incomplete_md5 = [ 'a77cd83d1fd4f980771ea809e819b034', 'e93d0c0bdff1eb84ab930a05717aaced', 'ed8a047d86b95962cafaf89763789780', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_266.json0000664000175000017500000000077512061407015021576 0ustar ralsinaralsinabad_md5 = [ '6f1d00889a7f626ea9c7c3b2d10324ed', '74fa38e6fc975d90ee6c1793885b2355', '928a31e6ad530af81cf646ae5914366f', 'sentinel' ] good_md5 = [ '527ad8477b8d4b732342410c96f24b53', '5e067d2e1c591ba5d4647521d4e5a993', '86ce287a0d4e33b65e28bcff8a615418', 'ba387c0b99acfd7899462e7d9768437e', 'ec6324d53d5cf6a9c473155e25409771', 'f2e9b7d93a81692a16b7040df5e76e02', 'f59711a126224a503705bc05f1d46ff0', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_349.json0000664000175000017500000000023512060653247021600 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '72f6ab14d026be3d00e0a219c9d4b053', 'b737c0ed22e6ec12a78035bbc0169722', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_lineno.json0000664000175000017500000000043312060755565021343 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '3895aada824383084a53955a5107a9e9', '404484d79853e0333aaa847846e4fc07', '7c1713677676f715ee654c095aef2864', 'b10434da6c6f28062503e5c0924ac805', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue168.json0000664000175000017500000000023511350511032021672 0ustar ralsinaralsinabad_md5 = [ '9779b16377276941061278506537a8d2', 'sentinel' ] good_md5 = [ 'c87041f0dc2d254e9c64fbd46e426e48', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_146.json0000664000175000017500000000071012060474362021570 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4aca1eb059d66ca4d2e3afc41647a499', '671c39f916df47ce5eb0c6457a62f992', '77612c0a1cb2bcfe5d952caf417928a4', 'cb0ef280f0c6580b52ed02569717cf96', 'dcc6cb5a69e46429e4ee54f7814b9636', 'sentinel' ] incomplete_md5 = [ '0c8faccf22f8d26dfddc9227998f838e', '213cdfd6b2852de27a55f5ba5ccd4cb0', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_74.json0000664000175000017500000000056312060657157021523 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '38a79d8b753e10674f5d549fbb883987', '5cf5f36c1e4a27029371829f99e1958f', '5feed884a7c3c1c1877ad9cae67bc365', '801c8bc8e34db29ab1348fc3043ab936', 'ad882eba6fff3dbe765f479b3cbbbf18', 'f6a5257ac1ab3a0f5c45a95a6c72d1b5', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_199.json0000664000175000017500000000043312060477037021604 0ustar ralsinaralsinabad_md5 = [ '652bcc41c78303588f6aeec1836667c9', 'sentinel' ] good_md5 = [ '0aef27a6511f43b92c8e1be897b5eaf1', '35be04ff624aba62cf0d6900d06f9953', 'd31825585637997885f58eef0706831d', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_337.json0000664000175000017500000000035712060652615021600 0ustar ralsinaralsinabad_md5 = [ '0d709b205f6557b10ab52689f85ba010', 'sentinel' ] good_md5 = [ 'a4cef8ecb51783428f5929332793549d', 'sentinel' ] unknown_md5 = [ '6d81bac3495980f4cad693e67bdc07e0', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_351.json0000664000175000017500000000036512060653247021575 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '170b27f90a4a972f55ba876193204a3c', '6f64d4b64aa268518b11eccee54e70cd', '82d22fe37b77288863b7661bfd01b832', 'fb6943943679a6507c5df51c9f1ba582', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_464.json0000664000175000017500000000023512062653277021603 0ustar ralsinaralsinabad_md5 = [ 'e49696f79153aedfe9a3ef86b0b97d2b', 'sentinel' ] good_md5 = [ 'b823c29d60c2d37e2e0b1526d7523f9e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_277.json0000664000175000017500000000044112060506720021570 0ustar ralsinaralsinabad_md5 = [ 'adc542a6305ead23877bc68f976486fd', 'sentinel' ] good_md5 = [ '0468e9d2b8aa511acda37dfdcb8aaf15', '782bdf60beac9f042e53098fc747d343', 'b3b8e3f5d49552e8c7ac18974664a994', 'c51e93430ab94d832aa2af9f38b5d4ac', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_340.json0000664000175000017500000000044112060653247021566 0ustar ralsinaralsinabad_md5 = [ '84237421455ef0b8d7eb0cf115724bbb', 'sentinel' ] good_md5 = [ '1149aeb982553dd6274433b9772ad975', '1b4c10cc3726441dc565726355d0df99', '8f02c93573a4bbc38dc99ebb90859115', 'b3a4cb510fc75d02bfb3aef2dae967f6', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_split_notes.json0000664000175000017500000000043312060660747022417 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0049f0bb110beb07d130dfde91d43ff6', '8e43a3589a7f622d8ad63c7ec4dbd52b', '93afa08e70f2d3bb31910b397f3d2f78', 'f1a655f963804057941b8783ea3c8485', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_base_url.json0000664000175000017500000000043012060453044021633 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0c0c27f2b19e02304d9a063766215433', 'a0fd95063c8906845817ecf5f6ffe814', 'f1652e5d7e1d4ca5151ddd171e62cb0e', 'sentinel' ] incomplete_md5 = [ 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_264.json0000664000175000017500000000105112060505612021561 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '404937b03fa7f02eaf20ebd4cece2fb0', '4e403219843e3fd71ea073e00474d096', '76affdcff4b7481c06147b22d8d9cfee', '851882559c891ea599e7d29c0f2454f4', '9b940ccd6f7003973e6f54fbad932913', '9e60bb1a994931df8086c6de8f162bdd', 'a125d11c28a67301b32600e35638b9ed', 'a71c652c1b29afd9f359050298345d3d', 'abc9e15110c3f97f310a1a09ccabee5f', 'd29c083862cfd6e73a6a3280c6b81a31', 'f8759b1ab68a4220ec2d7c5657b6a0fa', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/numbered_sections.json0000664000175000017500000000016111450524574022522 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'c7948591f9596781d0594f2e63dc45e9', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_225.json0000664000175000017500000000043312060504367021567 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'a3503431a35d3f6c77ab6fdc4943aa16', 'a748736538a26cabbd8812a631a97446', 'dc61dc468ab6eb584d22587598c35e3e', 'ed08011b6af5d3aa1a34fd13c7d1aade', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_codeblock_tabs.json0000664000175000017500000000023512060453044023000 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '77dd2ba7bfd71c5c70ea57cd741f8cb1', 'a143a4ea1913fdac024ab2b50370e97c', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_241.json0000664000175000017500000000035712060504367021572 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '458f8c98f114748bc1270953349cf985', '4b6d87cf9edbbd7cb4ac50173420b06b', '88f4fee433491fe62d82538cf36e8df7', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_title_ref.json0000664000175000017500000000050712060660620022021 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0d983339d7fb8f8d933f007381b5b5ca', '3de9817093d2bd6cbf2518e0d468e8e7', '8793e886402c93572d205d47991df0c3', 'a95b136d8d53cb67d44560cbc837705d', 'acc4ac19ca47019b7b5e45455323c79a', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_291.json0000664000175000017500000000031112060511041021550 0ustar ralsinaralsinabad_md5 = [ 'd9c86f78519681e6d09ce7bf0ac3fd01', 'sentinel' ] good_md5 = [ '3e43db50600869aaf8f49f22f8bde5b7', 'd6f73a14eb2af2d0d0163b8fc591d219', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_197.json0000664000175000017500000000043312060477037021602 0ustar ralsinaralsinabad_md5 = [ '304ba8ee0245e6d268c01e4724c50310', 'sentinel' ] good_md5 = [ '25bd695d6a7e854a86a192aa0e574d76', '37f10d42145c578c0469e1fc9a27d975', 'd05f40c1d97a162abccaa1e90a7a7fa1', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_math_default_role.json0000664000175000017500000000036512060755565023541 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0e78bfb65ca1791b2dd5a33e55ae10f3', '614de5c150bc91da2667df9956a98629', 'df0da088eec7ed9d09b2c29ae2c4a66b', 'f5f19401b655a15dc06d20bc5963c02f', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_113.json0000664000175000017500000000035712060472006021562 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '9a143f3210c3e19341c23f45d26829dc', 'ba6a41d047eb9eb4f99b7e644bdef6f8', 'd4242e10b6f39066d90ceb3079f5e1d9', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_230.json0000664000175000017500000000056312060504367021567 0ustar ralsinaralsinabad_md5 = [ '9cc69413cd1e31dddc3078a14a38a8fa', 'sentinel' ] good_md5 = [ '176af4b979454917bece9b29966fa659', '2ec94191e967289646e1d2fe729b1707', '549137921592924cb7f254e4ab07b93e', '6f67747fcf8fedf8ac761da73af115dd', 'dd0a1e3a23d935fa51200f2176fd500b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_147.json0000664000175000017500000000035712060474362021600 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '02a6bf7b6695396cc5b2664965a56799', '23b80a94c42a8cf83fa14400d9fc62a4', '5082962e3508e49eb71fa9af853be34b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_485.json0000664000175000017500000000031112061406363021570 0ustar ralsinaralsinabad_md5 = [ 'afe87d693c90bb7596a18ecff9f25d07', 'sentinel' ] good_md5 = [ '47fe9d498588f853378a77125804a963', '5da26704ddcf3dc36a1c9644add5e8fe', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_aafigure.json0000664000175000017500000000213412060453044021625 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0f87f776b8f61ee3ebbf69e49ca990c6', '136639903c59cbddbc25ec36fdeb0c25', '1e4668aa525c6dca2773934da9544448', '1f4c204838f6c7a666aaf426b862993f', '2185f5069ff14aa0e234d7a413379d16', '26ed22ce40416d808153d8996735bd6b', '318c0a61cd72af2bcdbd49bd5892d3ee', '34a7b4efcf67f95f21270d155ce36c8e', '4f9bc8f2b868c87cb84ad07b67e7979f', '52092ebf592cdf412864eabd365bf7c2', '5e55bb791963cf2c46359a57200279a6', '6cbd59137425e0fe65180f874e4e9bc5', '755d6e3bff7d8cda0fedca4e8d97c2ea', '8aca75224922d0c827560fa46703a358', 'b0cce54480b76f3791dcf32c609c8506', 'b4262cdf43a5645827beb1a52b6669fb', 'bcd8854c58735595655c9b94aff056d8', 'c71fabd6f6f89a1fb19031bd14321e98', 'cb3c7356f6c7f234285aa97ea5f28a26', 'd3f2535b858130da2a26e88d62319b05', 'sentinel' ] incomplete_md5 = [ '1ad9bbaea07cec663b322489e6f39ed6', '599b3d53146833db8bd927681d1b1655', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_383.json0000664000175000017500000000023511724564001021571 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '7c83eb3cb2817fd34b0f6c6184ebca78', 'df2128b6559013de2f0cc4924091c11b', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_46.json0000664000175000017500000000035712060656116021515 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '75b8bfcc21d6a35428642381d4b56997', '89bc644e1fa77400a1dd8530b8968b99', '8e387667bca1036de5c652a855cc04dc', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_297.json0000664000175000017500000000031112060511203021556 0ustar ralsinaralsinabad_md5 = [ 'acd1a44159c025f7c188ec53308a657e', 'sentinel' ] good_md5 = [ '215fe3bc0382a0447236ca820c45c26c', '6d93849206731058d33896c8c363d9f5', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_274_2.json0000664000175000017500000000077212060505766022026 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '02555d139c7466c0c625475a67f541fc', '199ae443bcd0a8eb47620abe6b6df0d1', '22794d8d0a75d66c30bd63728a986a91', '4098553fcca0b754324b4d2ebce43199', '693010eabe77a83afbfab2c915ed6b7d', '701d4a63644443fd411687aac87fbb8a', 'cbc604bea61a367290b6fb035e3ef1b4', 'f97a22207e8b86529727301ef1ab67e4', 'sentinel' ] incomplete_md5 = [ '897b494a52f27e5ce848d4eb8507ac55', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_358.json0000664000175000017500000000023512060653516021577 0ustar ralsinaralsinabad_md5 = [ 'b6816b274b2d57678bb7fa79aa963b2b', 'sentinel' ] good_md5 = [ '3abfeda63ad1efdd9a162786e1376265', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_99.json0000664000175000017500000000035712060657456021535 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2c197b518366f077f9e8c79d33a3fc78', '5aa18ca9503af072f157a25d0db434ee', 'ef0aca7de9b6e1e646ce2d851d46082a', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_132.json0000664000175000017500000000043312060473445021566 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '049ad4dd7a91a3bd7eba184efb3bdecb', '856c1426273d0a51c9c9b9c04b83dc0c', '945faf051c2137bdbc153c5ce54aa98a', 'cb3a02348ddd601ef84058bbb337c5fb', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_fontsizeunits.json0000664000175000017500000000050712060460613022770 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1f7cd39529127f18dd750b7689b3f41b', 'bae7424bcfef4cd3c9fb511625f0d0b0', 'c065c537a7de1090068276f8e394fad3', 'c69bceabfff161e959ffac5e21b49383', 'cd72b071b57d03cba4ebd2bc71a7d197', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_305.json0000664000175000017500000000036512060651413021565 0ustar ralsinaralsinabad_md5 = [ '0e1bee18b2525ea449f6cfb173cb1c4d', 'ede900750e93d07143a925b3da6dab1e', 'sentinel' ] good_md5 = [ '418e6974876d9a76f60e85343c77378a', 'c91b08fdeeb5f55e2599d656c34b3a34', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_320.json0000664000175000017500000000023512060651413021556 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4542fab3fac2e16c23cef40bda899b7f', '8cdc0c9f3270163ee339659c4d628987', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_118_3.json0000664000175000017500000000050712060472006022006 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '243c85820fe6014d0eb8941dd28a1aed', '4a63734ccf45d4a6ad618535ef7f2097', '9bd2dc10654392e02beec6359fe57a83', 'bda33c7475770a150926ebd3b5830a4c', 'df7c154bfcd784208dc22f545b84545e', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_261.json0000664000175000017500000000077512060505127021573 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '191c2dae00a7e85b38f332e7122f1e44', '1c9f498ef9484acbca580ef64b93fe6a', '1d4c1f4bd62929acf9d0ec131508ad62', '35190722b2e72565489144ae9647e87a', '3f90dc78088cfab959b141861a5ab293', '48740df28492c177a09f92661ba0ae72', '52245ed25b9517e7009707b9df9255cc', '576d91cf0b22041b96668617e8b4b471', '6f786e2c2c198261353cf40179545883', 'de625e6d27da7ea67daabac4ee0aae30', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_452.json0000664000175000017500000000023512060656116021571 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '20d9d0d408cbea6c046fbb737310c933', 'e17633a2d8d88a8c9d815688290259c7', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_raw.json0000664000175000017500000000035712060755565020655 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '3d76deda442946dd86d65b5d47d34c3e', '5eba381e90fbb1495bb5fd47677219b5', 'a419162a0a904ae0688aed9f21459835', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_321.json0000664000175000017500000000031112060651413021552 0ustar ralsinaralsinabad_md5 = [ 'd20942efc0e4413353aa08c13bbfe6cb', 'sentinel' ] good_md5 = [ '1cf4da651c6bbeb8c62eafe986ae17eb', 'ce7ab98896d28dc739afbb4523bfc486', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_467.json0000664000175000017500000000016112062705042021570 0ustar ralsinaralsinabad_md5 = [ '81c0a90c03c76b6b06d939042cb4583d', 'sentinel' ] good_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_294.json0000664000175000017500000000051512061407015021567 0ustar ralsinaralsinabad_md5 = [ '0b04465f774ae5d6ce38e0c412e1e401', 'b943ae4fe88c0de515ddcb6d31969326', 'sentinel' ] good_md5 = [ '18ece42853c0cdc21266c7bb5aaeb5ae', '6f4ad9fb9d65cf6e1b70ecde3d6cd7b0', '775e3ca7a907131ae30d3736e3441f95', 'f3af9f42a0722e58f9eae27148171bb1', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue158.json0000664000175000017500000000016111347503531021702 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'ad9896713ba40f980c97bc9e59065ffc', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_463.json0000664000175000017500000000031112061406363021564 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '3332a769c2808a47a23b7d65b6cca95d', 'ba2c3560f1f3329dbc48b39c47f07711', 'e86bb8dc746ffe432b8bae6955621785', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_background.json0000664000175000017500000000050712060453044022163 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '76581b62441f9d032ad54aa455bc3ce9', '89a8a2cc82dc4729b991a777bf527482', 'b9b18de20db8e7b7a3e50249c4db86ad', 'dbfc4a607365d67c367f12d8611448ee', 'e68bf373f66f72e2cb3d607d93a54d95', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_243.json0000664000175000017500000000063712060504367021575 0ustar ralsinaralsinabad_md5 = [ '1377ff95a8792eeac9a45d17b5b83492', 'sentinel' ] good_md5 = [ '4c16b8939a1bbddf9eea0293f4f6d6a8', '79563a7c6e1857e313988acdebd97086', '864be543dfd293ec3b6499d47d841915', 'bd18e3abd5530025483732998268937a', 'c2e0025b93ddc2fcbc1286cda1514e68', 'f7995bf2dd7dd36725159f2a22bcbbfa', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_72.json0000664000175000017500000000063712060657157021523 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '03606f67ed56f67665c20f108e9cf5f0', '1cccf3758290b29a44690a9dbfcdd111', '457a7fb72840384d3863509af376107d', '93d3fd1d286f913ce51d2f2af3ffef3b', 'd6d2a9f78765b9284616db24474ff95b', 'd8fd775b3c2a786bd9fadfa37beaecf7', 'ecac52d47ba4dfbb0e2c70e16bac7c0a', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_345.json0000664000175000017500000000023512060653247021574 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '70cb2f31c0746bbec2c8de5415d8358b', 'ec03efa4bb45890424ac9a120723195c', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/source.json0000664000175000017500000000056012060453044020304 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '736ea47c60f30d47824119ddb099d124', '774d9a48df9bb1c893ee6c98e76f2c69', '8620f076b4e5ab6971897612de6c73f6', 'b7badc40893e917de87d1a14a325ce9b', 'cc0506ba438e726445768d5a9dd8e3e6', 'sentinel' ] incomplete_md5 = [ 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_155.json0000664000175000017500000000035712060474362021577 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '40a16aaed53624e306f6ae8641ea0009', 'a8f59a41a30e1c321ba80e649b522950', 'faa483f59d919aad2acc6192ceae65dc', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_288.json0000664000175000017500000000072112060506720021573 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2d92c7772eb6078b22dc737ecfe13794', '4e9e206a8128cb656099f6c71750e58b', '62961454151470e946767a0d63e3929d', '7954b2fc03e05cb0d6cae4c69cbc3c91', '8c6f40c6f9a0e32897ffd890885b8921', '8e23d10ce90c4b6e39346ceae22c8dfd', '9297c6435de30930f44ae694b6870a9e', 'da46306fb9c7485bac97334b6a281cb0', 'feb17996ac96c6d342705e53d5afef56', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_custom_cover.json0000664000175000017500000000036512060456300022554 0ustar ralsinaralsinabad_md5 = [ '931a03f18a34680e5e04f54ce5c7bcf5', 'sentinel' ] good_md5 = [ '131f55d31062d1b968a2a7d033598c59', '52d0f2cd8f8de07aa6c369b049b7fbc7', 'c6fbece530c545d48cce0bd0d9ff1ddc', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_266_4.json0000664000175000017500000000105112061407015022005 0ustar ralsinaralsinabad_md5 = [ '3e5fa265e291d2513d53fe7c4d9d90c4', 'sentinel' ] good_md5 = [ '05a71e5f686277c73dc2f58fb54bd387', '24fdf0d2bdf01b5b49c62e3b289136b9', '48ae7686da917c1efb755eeba6fb4aa8', '502a1f854a56dd8c386d50ad0fdab9a3', '5c32ea260e4000fbad9d524cae70b09f', '6434f82c5f405e3aee823ff456e61815', '9afe656b0c294b464970487c08ea050b', 'a851a9c9babb32baab9f6c7ddc8b8e98', 'ca83e4c62df55a220e9ebae9bd3b5741', 'fd3e823126ca47bba7d950ea55b31bda', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_366.json0000664000175000017500000000023512060654276021602 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '15ce83bf3fac05dcbfcb55343f962960', '47f5ab541b08d61cce8d96e9fbe414b3', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_68_2.json0000664000175000017500000000035712060656752021750 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2b7295005cc747851393cebbb8bb23e5', '3eb3abe1ca3fcf272c6e84cd5dfaadba', 'da5be53e10b8d91a206666acda995906', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_greek.json0000664000175000017500000000104012060465673021145 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0adc3f2438da02ea3cfe089a27b360c1', '48d910ce8f293b901f887b488c6dcb11', '7017a882c66bf06cb3cd2425fdb4e882', '75976e02b4b5c2adabddb84479204b83', '91938e02f1d23cc2880126481bd3fad7', 'aadfa1c379297aa403a5c115f6a46d84', 'd7594cea1621cc3e2e924fb5458c282d', 'eb7bede0923eb3534d325f20ba0c4bde', 'sentinel' ] incomplete_md5 = [ '8225a185b2154a02d2ba87a69974a1f8', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_274.json0000664000175000017500000000112212060505766021573 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '037f545929b9c2c711ad60fac2c7131b', '0d3d827e9588281ae992b1544e091c51', '16caf6cfa1475852f024f3cec3c1fc08', '5259a73c4323f099ce387871c2ecf982', '600a9931366194b4f7767a572887fe95', '634ee9a35c5edbc551a6c4d5cfffb072', '7f3793b3723945802c0e97c3fe95f03a', 'c2ab05d59ffebb1e0ad85739e2a76e16', 'f805acbeba0507224161c7ec34674440', 'fd94c0c9f44cc59bcc9e6ac4a04c9bd3', 'sentinel' ] incomplete_md5 = [ '73a4f2a6b5938118299c3b19ea223987', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_335.json0000664000175000017500000000023512060652615021571 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2caf157e394b9049d1eca7ce31995d25', '832b03100976d9e1d6bb43e63fecd314', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_nested_lists_page_layout.json0000664000175000017500000000036512060755565025154 0ustar ralsinaralsinabad_md5 = [ 'd655160202480ddaa899dc3bca982363', 'd818d8ad3ff7c637a2acd7ef5c63cd71', 'sentinel' ] good_md5 = [ 'd2ccf5a85e34cfa2eac1eaf5536fb26f', 'f80f83c0811d1eaee467b966871bc2d5', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_263.json0000664000175000017500000000064512062472537021603 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '53d20c7f65e1cd5e5aba2d63ab872db4', '90c0618e4d438d4af73b03d71719da58', '9182bcf92b185906baf62918c213d1f6', '9db2a49650df71c8cee741f573c053fa', 'b34d82916857eeed34756fa1229ff847', 'da84666f9b9f33f5bd7fd4b49c6b4ce8', 'dda00d7c498627e3f0b110bdb458ee57', 'e05dbedcdc679fb8ecbe500755b81570', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_175.json0000664000175000017500000000043312060476533021576 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2af00095a79c75330bf03e189893b618', '4ee7f6d4d89e5e134df2eee6b9cb5f38', '7a735f9b19057be9ef6e3fab9557a195', 'eab5471ed409ea77a311de2bc1b1b896', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_smarty.json0000664000175000017500000000043312060660747021373 0ustar ralsinaralsinabad_md5 = [ '06c0f9408c564fe1213682225a225f26', 'sentinel' ] good_md5 = [ '07063ceaba4432670a0e9a6a7d6db999', '0d722f4d2bc1cffdf6860d0de9a5c912', 'cef433d78a398c74300de324793a3786', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_70.json0000664000175000017500000000050712060656752021515 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '05ef8025cfa6c10789b3d82762d4574c', '1493eacce95ca79cfe1196ef4e3d99dc', '24ba6b04c78a41cf08337e166597ab4a', '5e534f3c12a3d8becec04b2659a23fad', 'be17b9db5fab0c94808aca3ec9f58aa0', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_244.json0000664000175000017500000000043611345354040021567 0ustar ralsinaralsinabad_md5 = [ 'dea2afdb51d1d9190c025e82da87510a', 'sentinel' ] good_md5 = [ 'sentinel' ] incomplete_md5 = [ 'a1ae8a59b07b4af440a15abe420a088c', 'b367a360655b7a85b7dd360b7713f981', 'f952b0bb5d1f2045594bab43b73c26c9', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_374.json0000664000175000017500000000036512060654276021605 0ustar ralsinaralsinabad_md5 = [ '7278298f75b48439fb2f0e44cc9f3db2', '8878833c458afb88576588fb24808d68', 'a07af1428599c12a74e4c52073ac1b57', 'sentinel' ] good_md5 = [ 'bd4ab34bc77e630ca22fe14c14e2c73f', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_330.json0000664000175000017500000000031112060652615021557 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '06b2878428d2ba1ada53400186f4e2ca', '6006416f8daa0b5860296a8da4923b3a', 'f5f58ea3cdcc5113d654ac2ed3d8df60', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_95.json0000664000175000017500000000071312060657456021525 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0adccfd91d1cf09fcfc3e114518e9799', '386eec37979b10fd6fae48c5426ccf34', '54c6aafc3ab110dbe5ef392505d692d8', '59f286219f13979a7f512d96a0ff7daa', '703f87ab9de3a02464a39c0a2ba82d13', 'e5a1aed6ec90750edc7e727627fc3d87', 'efe7a43f613bdcbbaaeb4d36e4ccfecc', 'f31b6bcec9cac8332c020ecadaddfc3b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_73.json0000664000175000017500000000056012060657157021517 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '9094a706f2544da23e53cab5b5a2e334', '9a5889d3978c23903ce22d941c89077c', 'f0cc330456a7d40ddf4d699245d24915', 'fb53e256d4a07ab01d077a7effba91a5', 'sentinel' ] incomplete_md5 = [ '39bc86828300368a82ac9f12d956b59a', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_cover_2.json0000664000175000017500000000031112060453044021374 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '40eb4d5011bf1985ca3faf4b911ae19f', '8af85b3d54925017afeaad05ffd99047', 'b0a40615e57fc1eb736bb98c40f426d9', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue254.json0000664000175000017500000000031111351245255021675 0ustar ralsinaralsinabad_md5 = [ 'b586748f911d39ada52925ac322bb003', 'sentinel' ] good_md5 = [ '0279760157feade6fb76f533369a9bfc', '7a6bd17b1802682f589415012519419e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_223.json0000664000175000017500000000043312060504367021565 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1226fac7a7628e201daebd852e2b6365', '47a95c48b483ef04c5725a5cf69ff440', '7d0ef854c2c813ae2f6bd15daca4c2c7', 'a86b017d3149ce53d0061694b2e5c7d8', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_svg_alignment.json0000664000175000017500000000076712061406363022714 0ustar ralsinaralsinabad_md5 = [ '08cedb4a21aa9c88d4331ee044f4d9aa', '3fe071530f90e961b3e818508b311122', 'sentinel' ] good_md5 = [ '162de236969f148907ae300257585a7d', '330271f43f7f472b813b01d187f11af0', '3ad80477825a36659c7552346aaf3151', 'ce3c440d7cb5a8ecf6f2284405c857fc', 'e27c7d952590d5497cf973e1019e4ca1', 'eeb0bf178bc059bff9bfa7d7b801dc7b', 'fe25516e8e15446fe7eb7fe6c703182a', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_289.json0000664000175000017500000000057112060506720021577 0ustar ralsinaralsinabad_md5 = [ 'bf4efef2667c7e37ae805f8883b7ff54', 'db316fab20cc6c98494bf8affd8c08a1', 'sentinel' ] good_md5 = [ '37789edc624e427082a2a85130d39dfc', '43da9cf7c4985789b9981c009e1390f1', '7624ca9c3ab73a4adcb56adc49cb97de', 'c2530919040693a6c90c143195589c0e', 'e41823398a0a5088f41110ffe0742465', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_page_counter.json0000664000175000017500000000035712060755565022537 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '43b1b7aefeecfc5a658b380d90b9e2b0', '5041293889011e905ac80ede65d1446f', '841717f280660166aeb79ec9cc332b77', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue166.json0000664000175000017500000000023511350222700021671 0ustar ralsinaralsinabad_md5 = [ '45496fce964da9d713cd5595092e4e66', 'sentinel' ] good_md5 = [ '794149bc23992d6cf908e15594e83af0', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue251.json0000664000175000017500000000023511351243332021671 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4924b81d38bfc85603b217d5b77382a9', 'ab84771971b7d4182744457a4707edde', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_table_space.json0000664000175000017500000000050712060660620022306 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '24314a457a5f2fe057ba30e251c06c35', '338056600db2b475e8dc68590ba52fb2', '5059d196af0d8df343ef34045b426aca', '509d2fef818a3a5bdf37922ab309627a', '792a0197116e1dc7d16bb76cca3f102e', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_234.json0000664000175000017500000000071312060504367021570 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0b235feefc99a0dfd35bd83019d74999', '0ba566afc6ad5a06f42ca527c756831c', '178df0402c6696c85045110d07464e2b', '797ec0c417a91abbe07d08a3ead4b0c7', 'a51b3f03d3f96e1f02a7203b96ef4c8b', 'd419cbfc9bce59307058a3a015b52f95', 'dc4b7a4e8fdb88ee48f828d7145efb01', 'f0367b2eaf6cbe7f002e665c0226342b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_image_directive.json0000664000175000017500000000050712062466541023174 0ustar ralsinaralsinabad_md5 = [ '89ff80edb58a0eb846fe17656dd5ed6d', 'sentinel' ] good_md5 = [ '0df84713a21303821036cd76508872ae', '5f08008e54aef0c820ab19acc8ebe71b', 'ae5c263652af93adf0c19c9ed96f03d4', 'f4d47d5b0fb3fd8997b396c9ed818188', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_footnotes.json0000664000175000017500000000076712060460613022074 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0484c21aa91bf083176d8c5723c68d75', '0699bd55a93a4fcf0bcc17468f846d6d', '2a010e14dd1423ac91f71b4cb37ff81e', '3fe3c3d33e144c9927cba5cac91982ed', '6ca5bd26aedeb45aed9e667e6b644af9', 'a09d062deb96cc9d015c6388216b4be2', 'a76b35273c2e2e7f7f9f5f6b2dfd7a79', 'dd872c9f484bde660bff0f3127d10107', 'e235d401573056170ea55c245e5c67d5', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_unicode_headings.json0000664000175000017500000000035712060660620023337 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '9e3d3517a03fcdcf136c54b10223f109', 'a78b7da33d1283819a3263b0deb1887d', 'caca4f9743412d5b214b6f38d5ed40b7', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_50.json0000664000175000017500000000104312060656470021504 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '078123f9425cce65a54e5f3548081b23', '4074114c94bd385989c791731991b9e3', '47f8298b4b0f86e260b28de575318f13', '50f774fd728df5e97b1b00181f6bd2ae', '7721bf23c7d87d1fd1568dc1ad27c88c', '87583a33a7c7ba096609630d7b3e9cfd', '9541f5ed3f1a89f9d8ea3ac7311e1491', 'b1ac8c4d20aac542949e76c5abc10ad6', 'b31e3e51fb24efb9d69144b056d4d701', 'e185e8098b5a4c7e19a9136058baf143', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_table_1.json0000664000175000017500000000050712060660620021353 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '49117e615e3939e3eb3fc3e806398901', '50210f7d91032bfc919920d590b359b7', '8570b9585541206d5e5ce1bf23ac31f4', '8ac93979d41d4bd9de5831922a5bee7b', 'a02d6773cef8517f744eaca4cbcb515b', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_311.json0000664000175000017500000000051512060651413021557 0ustar ralsinaralsinabad_md5 = [ 'a4b613931a4436e2d0244737d4b27bd4', 'sentinel' ] good_md5 = [ '4c305a8981095dd4b0b6f913232e6c2f', '50a5ae0f9ed172cc9773e809749fb2bc', '748f66b9b27c2ce8803c3886eeca46fe', 'b8f4b77f0198336834ecf6bf40718960', 'e36637fc041e0ee7a0f6a243d334490e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_raw_html.json0000664000175000017500000000036212060755565021675 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '6aca0c4b66b1be17c177a7e3983e31c2', 'bf103e38f2933f65c7fa79811a755c8e', 'sentinel' ] incomplete_md5 = [ '03d4ab97c205d1659e142e6f5f176a20', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_67.json0000664000175000017500000000063712060656752021527 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0ad8829148f1da69029788a54d558316', '3c71362eac14e482a326d584283c7f9f', '597a9e81b4e10e3bee2edd7bb0fa2ed6', '818b827d34d7ca459bcccb50272b820c', '9dbf90c5601cb20f01acbdda0293852a', 'cc9396dafc7075940e78cf94921542a7', 'e7b93f65ec54a8fe334c1dd7aa76d17f', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_140.json0000664000175000017500000000035712060473445021572 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '30b36689a046985e8f94404edbe30b9f', '6194c917a15e6e7af16f6a9168e1bc19', 'ca8f5932665ba1a554be3059635890cd', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_200.json0000664000175000017500000000035712060502731021556 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '18ddbd8353ea04f947106d89a59a1f7c', '9cc91fc48f782763b0d6a00823b2cff8', 'ee08842d292d53f117fe141a1d5e77b3', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_143.json0000664000175000017500000000063712060473574021601 0ustar ralsinaralsinabad_md5 = [ '2cc651f45e5d4ad8e166b7b1cd3b533d', 'sentinel' ] good_md5 = [ '490d637766ab4d2a002323bd150cab8f', '4dfebf77fcfcb503bc68a72ac1814fb1', '8dbcc4cd98e689fc187eb262ddd505fe', 'a34e6544375c12ad205636b4dbb6e707', 'a5236c858fd1c50bc67c27bafb27915a', 'fe77a601ca4bab5a302ada7e64e4a6d6', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_128.json0000664000175000017500000000056312060472305021571 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '00d73ca5373c49f9d57bb71ce37a43a7', '16a2703e3afd8dba13b1fd8250655f96', '22a16751fdbaf3155398367dad62cc81', '62a0103ae98aa9033c63a2170e0c276d', '962414df27ab9749f296289d356df6cb', 'db9962f70ece095f3674bb4992b0d977', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_autoleading.json0000664000175000017500000000035712060453044022343 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'dcf740e0b13a7065b04c8e5c7c251fb4', 'ef55be2e52a50a058a6ea2e1353aba88', 'f9dd926c2a13b83917863eba70d6e7be', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_110_3.json0000664000175000017500000000057112060471363022004 0ustar ralsinaralsinabad_md5 = [ '005a0259d4c35441250dd7d0e65f93db', '0968c0aedb325c148b6b47dd2a8b86ae', '3c9a9e282e3d7a4e3c6793dd8014b478', '60afc0a5e1ce1f170f039b64b9e1533f', '70645d7dc07f356b868050dda1af87fb', '8754314cca3ec5b30d9997bd61649495', 'sentinel' ] good_md5 = [ '95d5c0a6a8321d7d9be68f78ccf45682', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_290.json0000664000175000017500000000023512060511041021554 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '8ecc87eaecb29913c6ae8bdab50bc606', 'eb42d04af9af18595fea3fa4c2e4dfc2', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_tableofcontents.json0000664000175000017500000000056312060660620023240 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0a9bf45d8187b9d3fe6fb7c244685f92', '25c1b538f069cecdba6c0cd53ced2f14', '5402272cad5da763602484c5583b5666', '9282a59a75c0495c6d173635a92d935f', 'b805b6108530e11d3052a4315700ffdc', 'd2e12901a52cad28490efffa5663c969', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_cover_3.json0000664000175000017500000000023512060453044021402 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '36cdf7c484be8d9693710686820857d5', 'fed4c527d5c0fe321bb19293282c45a9', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue169.json0000664000175000017500000000016111347504046021706 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '051ea2bb09dabecf8cc9ac2f2e8f97a6', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue187.json0000664000175000017500000000016111347507700021706 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '7e9e267510899d36f9bb2aff606bf5e1', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_internal_link.json0000664000175000017500000000035712060467075022711 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '5cf04d8f3629a9c66142dd91753399de', 'b2c8019ba476c734254aee1b6c183154', 'bcaa6a2df94615439bbce72702c5723e', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_217.json0000664000175000017500000000063712060504367021576 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0af411654a4f15562d166e132c7bd6a8', '274d2e161c2a581e50259b175a0e8e05', '4ec1d465e8fef6eefbbb3c71a36adc83', '66abe52b70d608911b68d98b5ef21a27', 'a81bd63861cead837fad82e2a20fe09c', 'af37437d99d6cef88e5015a6cae28f1d', 'c82527e80838ac2f99ba37cbb080e2c1', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_option_list.json0000664000175000017500000000043312060755565022422 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '089acaf4b1c85d0d9c3d17742355b220', '203658f549a98b6ad31169963748189e', '838cc6941c808ac30675fa8cd04b07bf', 'f2c03d7431d319b1aa5b2e79cbd1ac7f', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue320.json0000664000175000017500000000023511403164711021667 0ustar ralsinaralsinabad_md5 = [ '152ccedc78b716360c9d1ee2a84b3ae7', 'sentinel' ] good_md5 = [ '8a8fb67b8fa67fc491382be4e974cdc4', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_bullet_widths.json0000664000175000017500000000063712060453044022721 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '00bfef5d100648dffe3e3173678dfcce', '082b880bc952e0cd6d9d7eda06b6c76e', '1bdf6d00d45b651837997bf16cfdae8b', '2230374b94c266352caa9ef5d24f5c2e', '298ac40c6389eb0c8457757b5d662a10', '3a6001edddde149ff160b81632a40917', '63ee449373f3f5773d7f71f845d5fdef', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_328.json0000664000175000017500000000036512060652615021577 0ustar ralsinaralsinabad_md5 = [ '22df1cec316e949c070b89fddde2911c', 'sentinel' ] good_md5 = [ '511710993e03c55825635054cb0dd592', 'cba4706cb25807e9a80edcc3673016a2', 'd2593f51466c33fe9f0f847d715da9e6', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_uml_extension.json0000664000175000017500000000016112060765726022746 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'd39b9a5def68faaddeeb43e50af04c3e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_473.json0000664000175000017500000000031112060656470021572 0ustar ralsinaralsinabad_md5 = [ '5b0d2e5f9feff00e00147d911b8258a5', 'sentinel' ] good_md5 = [ '146b5e96ece57a46bf57be4c24f61d57', '5abb59c842f95ceecf1e478f36162ae6', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-brokenlinks.json0000664000175000017500000000022211347650413022635 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '5f3175a12affc176238cc85487427b09 90d81394791dd2d393f7f3737f3a2dc5', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_279.json0000664000175000017500000000016111450525234021574 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '03269b52dff37fd70636d65ebff828c0', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_379.json0000664000175000017500000000031112060654276021601 0ustar ralsinaralsinabad_md5 = [ 'e7d45a710431227ee1145197fc9bee08', 'sentinel' ] good_md5 = [ '946ba911ece5c39066b00a1ada24ab72', 'e44141dae43093a621cebb58004d9205', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_201.json0000664000175000017500000000050712060502731021554 0ustar ralsinaralsinabad_md5 = [ '15eed31308ca9bbbef564ead7a1feed4', '4fbb0b1e8b576883032e5e9e2345d52f', 'cc6f7895da2ff551cd52cd6d8730bd68', 'cfc632a2f930f9a2c733a68ce7090bda', 'f7944cf84f20e83716f879540057d62d', 'sentinel' ] good_md5 = [ 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_inkscape.json0000664000175000017500000000051512061407437021646 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2f04bbc9cf4badb09e8b8af05271b16d', '684ea23b890f57d1801a87e2be82eccf', '92ecd87547473bf16c166d97b4fcc597', '93914800fc5b9e1a19ca3c6bd2cfe984', 'd28530485e5312b734f67be3c3332594', 'd7746bda599559f2596535890db615e5', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_oddeven.json0000664000175000017500000000031112060755565021476 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1b25580f6bfa12cea96ecf62f0c56775', '5dd1deb51e2ec7fdd87fcee9c5e99ad0', 'c300e35c1a0aa8598afb6a62dc49a675', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_header_separator.json0000664000175000017500000000036512060466534023366 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1177959c10c95fe80b078f4313d8f727', '21ed745709bdef4372d1781df414c08a', '25787220282d4f7313cb57febc1d3e48', '3c48430036ab15ab346fb1035c3ea084', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_174.json0000664000175000017500000000063712062472537021605 0ustar ralsinaralsinabad_md5 = [ 'dc8b6b1402449a9ecfe2b9e5d1312273', 'sentinel' ] good_md5 = [ '2c390d27cb8494398dc52b5580fd8bcd', '88a567f00970139de7fab4c78d109a41', '933197be88f351f5906633c4c8c836f6', '989ac82a86e5d637dbaec81c664c71ae', 'c77116a08458694e81edca15ef174b66', 'cab8cca1e76c5ee5187ed1e05a7a3d88', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_156.json0000664000175000017500000000035712060474566021606 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '3ef77d26e5fbdb0c2dfd9e176db325d3', '5cec5e02e1258f8edef0388016843874', 'c033deaf318e1203ea72dcf62c1d1a5c', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_64.json0000664000175000017500000000043312060656470021513 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '128a3f914b8f2a592a0e2e464604d60f', '3cceb49b212a495257cef19406c87c84', '6ad02985de3ed36672e7eb5731a5ec15', '8dd75f46de808960f0cc9847e52becbc', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_180_2.json0000664000175000017500000000056312060476533022017 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2e77604f65ee4af308893ed6ded7239e', '3f4f3e917bdf1dd7cb05a9605c1989ef', '6fa984019e6027b5c761555aca76b1a2', '93eb8cbf66f5b5c1f7eb0f34bac3fd17', 'b9d9bd2257cb48f8940737b2026f7848', 'fa6a393adb9a4fabb6adf200dbc524c6', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_box_widths.json0000664000175000017500000000071312060453044022215 0ustar ralsinaralsinabad_md5 = [ '3285254eef7d4165f32b8b284ebb0722', '474e13c2230f2629500edb7e8abf81a1', 'fd224da9caf8bdff84bf3429a0a8de9d', 'sentinel' ] good_md5 = [ '3034e3b30f13b795e279a85dc7147115', '6c83b967856738fe3e82d629b6cfbaee', 'a59b82c234ef8c2ce6ccc6f5ede16aaf', 'c61000452057f36b7c56db57d6e02e3b', 'ecfd8a560ca863bdcb9472494529e4bf', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_315.json0000664000175000017500000000036512060651413021566 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '08e34654dfc51ad18ada4d610de0024e', '5076802214a82a6385ccd7fbf87d1361', '6de8ec59190338e1fcf3355a5c635e87', 'd4c1daef6f239c6aaf61b4388f68ac16', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_117.json0000664000175000017500000000056312060472006021565 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '023c18d831df76f1d6d2a360140ab4d4', '3a8c05ae42a7d895665b18b4d941e2f8', 'cd90867733be6636a216ecbf86afedcb', 'd3b606ad8e206c41c206c58ef7b32292', 'e589bdfe721570c1f39b4137180440be', 'e689d6707d3ec0cd6fa8412381383ca3', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/numbered_links_2.json0000664000175000017500000000031112060453044022220 0ustar ralsinaralsinabad_md5 = [ '7f13e0ce14e02f0be1f06034e0811d58', 'sentinel' ] good_md5 = [ '09d2e1c8ce047acc91211b809c08c6e2', 'f3e51cf7febfa9d7c57853242f645868', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue170.json0000664000175000017500000000023511347531331021675 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0540b0898357567545625531de86ad5e', '475debde18908253c3f851b34b25782e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_transitions.json0000664000175000017500000000035712060660620022424 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '6abbe3a0761c54dc7bbaed199039bb6a', '701393c4d5aed0577810debd84433c1d', 'b52ba4ca34df31e424c5a7159c0504a3', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_65_2.json0000664000175000017500000000044112060656752021737 0ustar ralsinaralsinabad_md5 = [ '8e14a07ebe13305808da26fcea24b5f1', 'a032eaab96122e31c2d6fe086bee8164', 'sentinel' ] good_md5 = [ '1a6c6e9a1bf03517342c4dfec278b356', '22fc42a514dd5f3b9e0f05441413fce7', 'e52b5119fc8fea521cac90b3f839aa36', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_159.json0000664000175000017500000000050712060474566021606 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1a1a9cc71b485b651d5f53e5b966cb46', '5fdff8d8cf5b898f3fc8ed0f35d2b863', '7a406279a393ea343b3a0302f1dd8210', '7bfa9f5a688b37d1045127bf0421ba6d', 'f490800341cc949419c58db41f98e257', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_293.json0000664000175000017500000000023512060511041021557 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0c7037479f1753e58ec57417dc3f7fce', '6c9bc951ff14822dd3a217648f470448', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_foreground.json0000664000175000017500000000044112060460613022213 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '9565137ed93eeeba86a4edf2e5e668d7', '9969f6b5d9c32b433fddd81e1f8cf6e0', 'd3068eaf57ac6501863f14f8cc3e1cbb', 'e99e1ed179a609b1dfcd67dfacaaa3a7', 'ef4aa12365e1cfc074e2aa862328cd99', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_310.json0000664000175000017500000000051512061407015021554 0ustar ralsinaralsinabad_md5 = [ '79307b17d2301ad69bba2b6d29d24168', '8830746f5d2f6a900d4d60fbc82264c4', 'c67d411560cb9e226df5029417089368', 'sentinel' ] good_md5 = [ '500d4acf6d33ac6958b916b47964bb0c', 'ce103e35ace464fbc9ad923e02633433', 'd2a9e42f125f8a2f411541f110de0b19', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_no_raw_html.json0000664000175000017500000000023512060755565022370 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '03d4ab97c205d1659e142e6f5f176a20', '6866215f46599ef9d19c01f9aa15677c', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_multiline_header.json0000664000175000017500000000023512060755565023371 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '328eddc5118681d457525344b84a45b5', '51d74bf74d7ebd85e4774546d20ad1be', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_definition_lists.json0000664000175000017500000000104312060456300023404 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0161294dede349cb48d6f88bcd5e2097', '0fb6e926c8ec0772cdfbcc5fafefd3fa', '220685ed7b08fe23470a918ee5c26fe5', '29cb0cbc275ac40f5a4bedd946060037', '2b8a448419504070c47e0d1fac2e66ee', '4635a5ffd101f5ba6e6a16d04532e762', '652c24ae444f1c3d669e1b51088f8698', '8348720d44c4dc367d3581293efc4c9b', 'a1af13e4f373badcbc8a8b40dcfc0fb3', 'e26c437ebedba63451775223143dc49e', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_303.json0000664000175000017500000000036512060511545021564 0ustar ralsinaralsinabad_md5 = [ '0075e0758f17c038bb111fe5c24110ff', 'dccab04533f7cfe14aab0e5f954effae', 'eaff73fcfcfb1bca2ba9ed7ffd60a54a', 'sentinel' ] good_md5 = [ '6a00123b26e00b79d17d0b64d3a8572e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_299.json0000664000175000017500000000036512060511545021602 0ustar ralsinaralsinabad_md5 = [ 'a1e80e897a4aed31add99230cce8642c', 'sentinel' ] good_md5 = [ '2b7d6c7489bc27540abf5d2c088f2eb4', '436696cb1ad9d7a5efbaa2516aa9eceb', '92c2318a225ba18dbb1c1a42d7e34d25', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_427.json0000664000175000017500000000031112060655204021563 0ustar ralsinaralsinabad_md5 = [ '5de954dac61d3111b272254a1147df98', 'sentinel' ] good_md5 = [ 'ad196a4f3b84ded67530693e4ae2bf23', 'b92299d87fd1a9081549b5183929e365', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_103.json0000664000175000017500000000035712061407437021570 0ustar ralsinaralsinabad_md5 = [ '93a84b96a10eb7710badbf383c2b5927', 'sentinel' ] good_md5 = [ '66930368590c6048e884948e46a34bc1', 'b7097fe39829f3844898997e65685ba0', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_277_2.json0000664000175000017500000000036512060506720022016 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '5c8d66737e4df738be102c7a761b1c2a', '71b8492c1d20e22982565f04c11c2f15', 'b1b7e58f486ee167e297318d8630bfd2', 'd56f2beb38ed7c653b50f2c738fefe2d', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_png_dpi.json0000664000175000017500000000050712061406363021467 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '1a49c27ef3f791592364cba0853a6e27', '48f535b4c6c47b5129a92026d6fe1a48', '864cb8702d62e63e0363f7924d02cc41', 'ab0ca73ecae064926c73cf39714a3c57', 'f3cf4efa84fc2d94776449a03ede7539', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_span_cells.json0000664000175000017500000000016112062647474022201 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'd176dd591fb6569718ae4bbe0c16e432', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_tabwidth.json0000664000175000017500000000031112060660620021643 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '2946f754df45f7c485b9e1518f30fd60', 'b35d8678c9314dc49f7c576db31d7fd2', 'c1dda33e419ba406582ad1935a50805e', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_image_units.json0000664000175000017500000000056312061407437022360 0ustar ralsinaralsinabad_md5 = [ '987d3ca02e4ef3b6a6e16b49739c9929', 'sentinel' ] good_md5 = [ '3e033d150a1eccb0c4614963574eab7d', '7d9e14f3ec68afd235da0b3127793619', '9a4b1d1ee5584a55cb371dabab1716b7', 'aac5d0de95f97524dd510d5993fe96a4', 'f323c68ec86f855d52a0af5fbde0f0bb', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_314.json0000664000175000017500000000016111366072241021563 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'dc4b7a4e8fdb88ee48f828d7145efb01', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_114.json0000664000175000017500000000035712060472006021563 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '014fca7222dc66e0fe1b7b3a5f291a8a', '1504e20b114d01a4621bf1f71a18685e', '6295a3ac997735ead25d8c11ccfbc1cf', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_378.json0000664000175000017500000000023511470477647021616 0ustar ralsinaralsinabad_md5 = [ 'a0e93916cbc2634a0f3e1ec81c4e4750', 'sentinel' ] good_md5 = [ '68072c43c25ee62e993f172bb3f984c8', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_226.json0000664000175000017500000000043312060504367021570 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '4bbe5f77b5210c9f1507958ee2370e9f', '75ae7e0265117a292b485c86519ae90f', 'a4b2355ff987d03da3094d7f047559bd', 'de45957a2b29b5c6443730baa5f87adf', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue257.json0000664000175000017500000000043611351245340021703 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '19b3c0398e372cf6fefd482e9a451806', '8a3b31e14c60e8361b676eac66c93958', 'a00500e1df9c92a221db7bce08cad512', 'sentinel' ] incomplete_md5 = [ '945a33ed9252e65984777d2eecb539e4', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_framebreak.json0000664000175000017500000000023512060465673022154 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '75ecc52fa5a2f6b1160091c8c1ca0fe6', 'a430ba1c14fd1a7c42efd5af45639d23', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_261_2.json0000664000175000017500000000051512060505127022004 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '04096f2d46badb64403007ddd950dfcf', '0a47c62c09bd0aede42e64ba2e8a2512', '29a0ac64b28969b282e7bf5a1ec1eb13', '3f73a6f2e1af7e8f89bc0615ace0dd6d', '6fa69968ea81f53058fc1bf0fae050b6', 'c4158ecfa8bfea0b45f4d8554e963334', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-multidoc.json0000664000175000017500000000033711351245563022144 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'd045f68a955b789418b968f2be449951 aef6de93413a57fdc816f4a16171ee31', 'ef595008a34e2d89293d1ad8d48c1547 aea485c3962639bc6e31be6a1e490a8c', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_224.json0000664000175000017500000000063712060504367021574 0ustar ralsinaralsinabad_md5 = [ '9a50cf2c5e6dd7f07892189f5052500f', 'bde80bad99907ab51e27bb35c2c38528', 'sentinel' ] good_md5 = [ '4d626c7aa1872bbc12f213faa1212a0c', '88c29fa2b7ce095c72742229db0fbc2c', 'a547f7f3342d0b42494676574c111ed3', 'e0568f215441fb0da026d54508198dd0', 'f52050dcfcb74ed1655869875365edcf', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_112.json0000664000175000017500000000056312060472006021560 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '07e143723a29341f32d1732ff327eed3', '6ecd82b7fba8f38e9234da7509642850', '99703b54036a2a5488d0f0363b7e02d1', 'c83951594d3afcd0b585c9e0b763b5fc', 'db919056677d861a27eba7d9d3879187', 'fe5d3c62afd621b7d0dc7e730c1f5fda', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_sidebar_literal.json0000664000175000017500000000035712060755565023211 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'bde4467c8a36ef93a3bd4a783b1d759b', 'f4ab727f7afaf654c9ca91d18f88b7da', 'fc336aa409a8c5ff35e20d4c7952f551', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_table_classes.json0000664000175000017500000000056312060660620022652 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0e0d0a2d819d481083fd58e1b04b2936', '821be9880f2397d1680b740e628c2655', '84b9249b80ca4f5ebdf47f3cc8799312', 'd4281c08a738928d114564038434258f', 'd4730984bb32ca87bc14ec744b7e6e71', 'fa1b8f4e91404cc1550a5b8402770179', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_151.json0000664000175000017500000000063712060474362021574 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '220c4c564b8707c8abe76c6510c7c0a2', '42cd92edf43f4e1000f5f91af697f5dc', '5eec06c4c3a5669e7a932129fcd1485b', '6c6cd6303610f6f23cee3d9d0559329a', '9398453f2562e8e0aad1d410526e26a5', 'ea2746162b6626c8f89c63b3e5e7032a', 'fab286d02455d2f701e40976fc616824', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/foo.json0000664000175000017500000000022711274035420017567 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ 'sentinel' ] unknown_md5 = [ 'f7ea8d7ce5f614c2601aecb1723c7253', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_sidebar_literal2.json0000664000175000017500000000063712060755565023274 0ustar ralsinaralsinabad_md5 = [ 'd4977db2bb4dfdb0f873f8749dadd942', 'sentinel' ] good_md5 = [ '200f0a1a2ad9fcda5fa8fa5fbf42e87c', '982ee132c2160fc2fb17ee277c0e9ba1', 'a78e2f68d8a4547ada5269368a325575', 'd66fd599caddf1d76488081aa477bac1', 'dee3d3c4d090ff511ea0789da044a26d', 'f30d87725b53d92a3c80054b68425a0a', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_196.json0000664000175000017500000000050712060477037021603 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '07a3aa3d18bb535bf1f9d2ca564dbc85', '3bed062208af9bcc17af4526b22f7260', '786be0464284e2b7ea635ba1bac3bf16', 'ba8b8b13fd503098248ddc98ebca06a3', 'dfcbde5f42bc9514573f16f98f136759', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_aafigure_extra.json0000664000175000017500000000111412060453044023025 0ustar ralsinaralsinabad_md5 = [ '03200ed2d9cd95767f4d5fae0ca9c4d7', '86c524d9bcb63dd3b77270ee851d03bb', 'aad114e4b4bbb91608faec52ea0ed199', 'sentinel' ] good_md5 = [ '1430e87ba0e62c01414ebdde33b9b8fa', '23c99b1070cb2c304277246bf91d41bc', '28ed393c1f27466ad45e2866a4d75111', '4d9f2e4ba2c22201d261b437c9d4a48e', '5879a651eabb6c6bdbb3a314649d9c6c', 'b525aa7092ebc139a2aee3762002ef05', 'sentinel' ] incomplete_md5 = [ '153c2f2b1b72e263261dd47f71fd4952', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_165.json0000664000175000017500000000063712060474566021607 0ustar ralsinaralsinabad_md5 = [ 'c4aee3b1c73f030d93ca2671de7c46ce', 'f9a3160f2e44d3f3c33e2d1c3094d4b8', 'sentinel' ] good_md5 = [ '4826ddc10734ea15d933fd7d2c6c9d9c', '6e4fb7307a3e24a16abed78583a3fdf5', '7488495e5f5bcc7fbb50c3fca0f170e9', 'b5c79c607fc7b0fd34b7bba994d507f7', 'f4b7288ae61819a2e9ed1128187de17d', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_lists.json0000664000175000017500000000063712060755565021223 0ustar ralsinaralsinabad_md5 = [ 'c558dc2646c647f1d0aac375b098b25a', 'e8a16287b2e57600ddaebd7839818e0b', 'sentinel' ] good_md5 = [ '1c6615443cc2fbe7f95944cd0b473ce3', '8712e553c36476f8ad747f8c340c1d77', 'b578573fced3e5a2e899b5cb6f963e28', 'c4d58b94c392c6a09c7dec43f8831ca5', 'e9f7bbf8759fe2593798e2982c25a301', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_page_labels.json0000664000175000017500000000035712060755565022322 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '40a5eea23f322a7d2e34a4f7d470d827', '7dcda895a3040d6dd3df101cd9403dc6', 'feb68cbb199f9294845b4a226793cb84', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/sphinx-issue162.json0000664000175000017500000000016111347503670021701 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '553f112cec2d15ffece1545fe9a913bf', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_227.json0000664000175000017500000000035712060504367021576 0ustar ralsinaralsinabad_md5 = [ 'sentinel' ] good_md5 = [ '0ee92fb35a4091e9aeef408739db9c1f', '5430c3cb69467fcbab7900659ed9bafb', '8490204bb232415f21a8242463f8d004', 'sentinel' ] unknown_md5 = [ 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_307.json0000664000175000017500000000044112060651413021562 0ustar ralsinaralsinabad_md5 = [ '4ff21f16b7813b0a1a067b620187076a', '578eec965c8e6c6db90944aacbc3c00a', 'c2dd75ba85647f702a96cf8ed8e7ea5a', 'sentinel' ] good_md5 = [ '6754e965bab1860e8bbab7300deff75d', 'c901fcf3e609421368e92cdcbd4124a7', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/md5/test_issue_267.json0000664000175000017500000000077512061407015021577 0ustar ralsinaralsinabad_md5 = [ '2d922ee4c59b79963bdad6471d00bf0e', 'sentinel' ] good_md5 = [ '2432d63f22747221c4521754eed93ada', '829afc6b5fa7bd0e249ff44be96c012c', '83404fdd5514e6dbb99cb5ed5903566c', '836de4efeda19a56cb92b73dc799bc63', '8be28e747843d6f9cfdedf75c1f3b8ef', 'bfe502771519d6bc2a4aabcc28f4d7cb', 'e4f9a0be27642bd3cba8eb9604ef254e', 'fc67862a4b9bb870bb4dad8b6cea31f7', 'fee5fdfc0969d31f71883c89e4fd5c93', 'sentinel' ] rst2pdf-0.93/rst2pdf/tests/autotest.py0000775000175000017500000003552512020766122017662 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- #$HeadURL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/tests/autotest.py $ #$LastChangedDate: 2012-09-02 20:31:30 -0300 (Sun, 02 Sep 2012) $ #$LastChangedRevision: 2528 $ ''' Copyright (c) 2009, Patrick Maupin, Austin, Texas Automated testing for rst2pdf See LICENSE.txt for licensing terms ''' import os import sys import glob import shutil import shlex from copy import copy from optparse import OptionParser from execmgr import textexec, default_logger as log from pythonpaths import setpythonpaths # md5 module deprecated, but hashlib not available in 2.4 try: import hashlib except ImportError: import md5 as hashlib description = ''' autotest.py reads .txt files (and optional associated .style and other files) from the input directory and generates throw-away results (.pdf and .log) in the output subdirectory. It also maintains (with the help of the developers) a database of unknown, good, and bad MD5 checksums for the .pdf output files in the md5 subdirectory. By default, it will process all the files in the input directory, but one or more individual files can be explicitly specified on the command line. Use of the -c and -a options can cause usage of an external coverage package to generate a .coverage file for code coverage. ''' def dirname(path): # os.path.dirname('abc') returns '', which is completely # useless for most purposes... return os.path.dirname(path) or '.' def globjoin(*parts): # A very common pattern in this module return sorted(glob.glob(os.path.join(*parts))) class PathInfo(object): ''' This class is just a namespace to avoid cluttering up the module namespace. It is never instantiated. ''' rootdir = os.path.realpath(dirname(__file__)) bindir = os.path.abspath(os.path.join(rootdir, '..', '..', 'bin')) runfile = os.path.join(bindir, 'rst2pdf') inpdir = os.path.join(rootdir, 'input') outdir = os.path.join(rootdir, 'output') md5dir = os.path.join(rootdir, 'md5') assert os.path.exists(runfile), 'Executable not found -- Use bootstrap.py and buildout to create it.' runcmd = [runfile] @classmethod def add_coverage(cls, keep=False): cls.runcmd[0:0] = ['coverage', 'run', '-a'] fname = os.path.join(cls.rootdir, '.coverage') os.environ['COVERAGE_FILE'] = fname if not keep: if os.path.exists(fname): os.remove(fname) @classmethod def load_subprocess(cls): import rst2pdf.createpdf return rst2pdf.createpdf.main class MD5Info(dict): ''' The MD5Info class is used to round-trip good, bad, unknown information to/from a .json file. For formatting reasons, the json module isn't used for writing, and since we're not worried about security, we don't bother using it for reading, either. ''' # Category to dump new data into new_category = 'unknown' # Categories which always should be in file mandatory_categories = 'good bad'.split() # Sentinel to make manual changes and diffs easy sentinel = 'sentinel' # An empty list is one which is truly empty or which has a sentinel empty = [[], ['sentinel']] # Suffix for file items suffix = '_md5' def __str__(self): ''' Return the string to output to the MD5 file ''' result = [] for name, value in sorted(self.iteritems()): if not name.endswith(self.suffix): continue result.append('%s = [' % name) result.append(',\n'.join([" '%s'"%item for item in sorted(value)])) result.append(']\n') result.append('') return '\n'.join(result) def __init__(self): self.__dict__ = self self.changed = False for name in self.mandatory_categories: setattr(self, name + self.suffix, [self.sentinel]) def find(self, checksum, new_category=new_category): ''' find() has some serious side-effects. If the checksum is found, the category it was found in is returned. If the checksum is not found, then it is automagically added to the unknown category. In all cases, the data is prepped to output to the file (if necessary), and self.changed is set if the data is modified during this process. Functional programming this isn't... A quick word about the 'sentinel'. This value starts with an 's', which happens to sort > highest hexadecimal digit of 'f', so it is always a the end of the list. The only reason for the sentinel is to make the database either to work with. Both to modify (by moving an MD5 line from one category to another) and to diff. This is because every hexadecimal line (every line except the sentinel) is guaranteed to end with a comma. ''' suffix = self.suffix new_key = new_category + suffix sentinel = set([self.sentinel]) # Create a dictionary of relevant current information # in the database. oldinfo = dict((key, values) for (key, values) in self.iteritems() if key.endswith(suffix)) # Create sets and strip the sentinels while # working with the dictionary. newinfo = dict((key, set(values) - sentinel) for (key, values) in oldinfo.iteritems()) # Create an inverse mapping of MD5s to key names inverse = {} for key,values in newinfo.iteritems(): for value in values: inverse.setdefault(value, set()).add(key) # In general, inverse should be a function (there # should only be one answer to the question "What # key name goes with this MD5?") If not, # either report an error, or just remove one of # the possible answers if it is the same answer # we give by default. for value, keys in inverse.iteritems(): if len(keys) > 1 and new_key in keys: keys.remove(new_key) newinfo[new_key].remove(value) if len(keys) > 1: raise SystemExit('MD5 %s is stored in multiple categories: %s' % (value, ', '.join(keys))) # Find the result in the dictionary. If it's not # there we have to add it. result, = inverse.get(checksum, [new_key]) if result == new_key: newinfo.setdefault(result, set()).add(checksum) # Create a canonical version of the dictionary, # by adding sentinels and sorting the results. for key, value in newinfo.iteritems(): newinfo[key] = sorted(value | sentinel) # See if we changed anything if newinfo != oldinfo: self.update(newinfo) self.changed = True # And return the key associated with the MD5 assert result.endswith(suffix), result return result[:-len(suffix)] def checkmd5(pdfpath, md5path, resultlist, updatemd5, failcode=1, iprefix=None): ''' checkmd5 validates the checksum of a generated PDF against the database, both reporting the results, and updating the database to add this MD5 into the unknown category if this checksum is not currently in the database. It updates the resultlist with information to be printed and added to the log file, and returns a result of 'good', 'bad', 'fail', or 'unknown' ''' if not os.path.exists(pdfpath): if not failcode and os.path.exists(iprefix + '.nopdf'): log(resultlist, "Validity of file %s checksum '(none generated)' is good." % os.path.basename(pdfpath)) return 'good' log(resultlist, 'File %s not generated' % os.path.basename(pdfpath)) return 'fail' if os.path.isdir(pdfpath): pdffiles = globjoin(pdfpath, '*.pdf') else: pdffiles = [pdfpath] # Read the database info = MD5Info() if os.path.exists(md5path): f = open(md5path, 'rb') exec f in info f.close() # Generate the current MD5 md5s = [] for pdfpath in pdffiles: f = open(pdfpath, 'rb') data = f.read() f.close() m = hashlib.md5() m.update(data) md5s.append(m.hexdigest()) m = ' '.join(md5s) new_category = (updatemd5 and isinstance(updatemd5, str) and updatemd5 or info.new_category) # Check MD5 against database and update if necessary resulttype = info.find(m, new_category) log(resultlist, "Validity of file %s checksum '%s' is %s." % (os.path.basename(pdfpath), m, resulttype)) if info.changed and updatemd5: print "Updating MD5 file" f = open(md5path, 'wb') f.write(str(info)) f.close() return resulttype def build_sphinx(sphinxdir, outpdf): def getbuilddirs(): return globjoin(sphinxdir, '*build*') for builddir in getbuilddirs(): shutil.rmtree(builddir) errcode, result = textexec('make clean pdf', cwd=sphinxdir) builddirs = getbuilddirs() if len(builddirs) != 1: log(result, 'Cannot determine build directory') return 1, result builddir, = builddirs pdfdir = os.path.join(builddir, 'pdf') pdffiles = globjoin(pdfdir, '*.pdf') if len(pdffiles) == 1: shutil.copyfile(pdffiles[0], outpdf) elif not pdffiles: log(result, 'Output PDF apparently not generated') errcode = 1 else: shutil.copytree(pdfdir, outpdf) return errcode, result def build_txt(iprefix, outpdf, fastfork): inpfname = iprefix + '.txt' style = iprefix + '.style' cli = iprefix + '.cli' if os.path.isfile(cli): f = open(cli) extraargs=shlex.split(f.read()) f.close() else: extraargs=[] args = PathInfo.runcmd + ['--date-invariant', '-v', os.path.basename(inpfname)]+extraargs if os.path.exists(style): args.extend(('-s', os.path.basename(style))) args.extend(('-o', outpdf)) return textexec(args, cwd=dirname(inpfname), python_proc=fastfork) def run_single(inpfname, incremental=False, fastfork=None, updatemd5=None): use_sphinx = 'sphinx' in inpfname and os.path.isdir(inpfname) if use_sphinx: sphinxdir = inpfname if sphinxdir.endswith('Makefile'): sphinxdir = dirname(sphinxdir) basename = os.path.basename(sphinxdir) if not basename: sphinxdir = os.path.dirname(sphinxdir) basename = os.path.basename(sphinxdir) else: iprefix = os.path.splitext(inpfname)[0] basename = os.path.basename(iprefix) if os.path.exists(iprefix + '.ignore'): return 'ignored', 0 oprefix = os.path.join(PathInfo.outdir, basename) mprefix = os.path.join(PathInfo.md5dir, basename) outpdf = oprefix + '.pdf' outtext = oprefix + '.log' md5file = mprefix + '.json' if incremental and os.path.exists(outpdf): return 'preexisting', 0 for fname in (outtext, outpdf): if os.path.exists(fname): if os.path.isdir(fname): shutil.rmtree(fname) else: os.remove(fname) if use_sphinx: errcode, result = build_sphinx(sphinxdir, outpdf) checkinfo = checkmd5(outpdf, md5file, result, updatemd5, errcode) else: errcode, result = build_txt(iprefix, outpdf, fastfork) checkinfo = checkmd5(outpdf, md5file, result, updatemd5, errcode, iprefix) log(result, '') outf = open(outtext, 'wb') outf.write('\n'.join(result)) outf.close() return checkinfo, errcode def run_testlist(testfiles=None, incremental=False, fastfork=None, do_text= False, do_sphinx=False, updatemd5=None): if not testfiles: testfiles = [] if do_text: testfiles = globjoin(PathInfo.inpdir, '*.txt') testfiles += globjoin(PathInfo.inpdir, '*', '*.txt') testfiles = [x for x in testfiles if 'sphinx' not in x] if do_sphinx: testfiles += globjoin(PathInfo.inpdir, 'sphinx*') results = {} for fname in testfiles: key, errcode = run_single(fname, incremental, fastfork, updatemd5) results[key] = results.get(key, 0) + 1 if incremental and errcode and 0: break print print 'Final checksum statistics:', print ', '.join(sorted('%s=%s' % x for x in results.iteritems())) print def parse_commandline(): usage = '%prog [options] [ []...]' parser = OptionParser(usage, description=description) parser.add_option('-c', '--coverage', action="store_true", dest='coverage', default=False, help='Generate new coverage information.') parser.add_option('-a', '--add-coverage', action="store_true", dest='add_coverage', default=False, help='Add coverage information to previous runs.') parser.add_option('-i', '--incremental', action="store_true", dest='incremental', default=False, help='Incremental build -- ignores existing PDFs') parser.add_option('-f', '--fast', action="store_true", dest='fastfork', default=False, help='Fork and reuse process information') parser.add_option('-s', '--sphinx', action="store_true", dest='sphinx', default=False, help='Run sphinx tests only') parser.add_option('-e', '--everything', action="store_true", dest='everything', default=False, help='Run both rst2pdf and sphinx tests') parser.add_option('-p', '--python-path', action="store_true", dest='nopythonpath', default=False, help='Do not set up PYTHONPATH env variable') parser.add_option('-u', '--update-md5', action="store", type="string", dest='updatemd5', default=None, help='Update MD5 checksum files') return parser def main(args=None): parser = parse_commandline() options, args = parser.parse_args(copy(args)) if not options.nopythonpath: setpythonpaths(PathInfo.runfile, PathInfo.rootdir) fastfork = None do_sphinx = options.sphinx or options.everything do_text = options.everything or not options.sphinx if options.coverage or options.add_coverage: assert not options.fastfork, "Cannot fastfork and run coverage simultaneously" assert not do_sphinx, "Cannot run sphinx and coverage simultaneously" PathInfo.add_coverage(options.add_coverage) elif options.fastfork: fastfork = PathInfo.load_subprocess() updatemd5 = options.updatemd5 if updatemd5 is not None and updatemd5 not in 'good bad incomplete unknown deprecated'.split(): raise SystemExit('Unexpected value for updatemd5: %s' % updatemd5) run_testlist(args, options.incremental, fastfork, do_text, do_sphinx, options.updatemd5) if __name__ == '__main__': main() rst2pdf-0.93/rst2pdf/tests/compare_pdf.sh0000664000175000017500000000110511362034041020227 0ustar ralsinaralsina#!/bin/bash # Given two PDF files in the command line, create a visual diff of them in another PDF f1=$1 f2=$2 flag=0 tmpdir=/tmp/comppdf-$$ mkdir $tmpdir convert -density 96x96 $f1 $tmpdir/page.png convert -density 96x96 $f2 $tmpdir/bpage.png pushd $tmpdir >/dev/null 2>&1 for page in page*.png do result=`compare -metric PSNR $page b$page diff$page 2>&1` if [ "$result" = "inf" ] then #echo "$page is OK" true else echo "$page has ERRORs, see $tmpdir/diff$page" flag=1 fi done popd >/dev/null 2>&1 exit $flag rst2pdf-0.93/rst2pdf/tests/output/0000775000175000017500000000000012064144444016770 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/profilerun.py0000664000175000017500000000204511345716526020177 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- '''Run all tests under a profiling environment''' import os import cProfile from rst2pdf.createpdf import RstToPdf def run(): inpdir=os.path.abspath('./input') outdir=os.path.abspath('./tmp') # Discard output, this is not about whether things # work or not, that's testing ;-) for f in os.listdir(inpdir): if f.endswith('.txt'): # Test case print 'Running: ', f sheet=os.path.join(inpdir, f[:-4]+'.style') if os.path.exists(sheet): sheet=[sheet] else: sheet=[] r2p=RstToPdf(stylesheets=sheet) try: fname=os.path.join(inpdir, f) r2p.createPdf( text=open(fname).read(), output=os.path.join(outdir,f+'.pdf'), source_path=fname, ) except: print 'FAIL' cProfile.runctx( "run()", globals(), locals(), filename="rst2pdf.profile" ) rst2pdf-0.93/rst2pdf/tests/input/0000775000175000017500000000000012064144444016567 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/test_issue_274.txt0000664000175000017500000000227511352000245022106 0ustar ralsinaralsina====================== HHHHHHHHHHHHHHHHHHHHHH ====================== :TTTTT: 01 Jan 2010 :KKKKKKKKKK: XX .. contents:: Contents Dddddddddd ---------- Aaaaaaaaaa ~~~~~~~~~~ * Hh - aaaaaaa - bbbbbbb * Jj Dddddddddddd ------------ Ggggg ~~~~~ * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxxxxxxxxxxxxxxx xxxxxxxxxssssssssssssssssss * CCCCCCCCCCCCCCCCCCCCCCCcaaaaaaaas das dklajsd kljas dljas ldkja lskdjaskljdkasj dj aksj Jjj ~~~ * asdasdj adhssss djhas kdjahs dkja hskdjha sdhkas dkajhsdkjahskjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj * as dklajsdklaj skldjajsdjaklsjdkjaksjddddddddddddddddddddddddddddddddddddddddddddddddd * rssssssssssd ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd * a skdlak slkdlaskldklaskdlkalskdlakslda:: - PSPSPPPPPPPPPPPPP + plannnnnnnnnnnnnnnnnn + taaaaaaaaaaaaaaaa + sssssssssssssssssssss askllllllllllllllllll - asdddddddddddddddddd + dddddddddddddddddddd + akasd asdasdadss ssssssss ssss sssssssssssss sss ssssssssssss ssssssssss. * asdsd asdasdasdd asd asdasdaasdasdasdasdasasdasdasd asd asd asd * asdas asdasd asd asd asdasdasdasdasdasd asdasdasdasd asd as asd as as das da sda sda rst2pdf-0.93/rst2pdf/tests/input/test_issue_217.txt0000664000175000017500000000024611265746674022131 0ustar ralsinaralsinaThis paragraph should not be very far from the list * These items * Should be very far apart * From one another This paragraph should not be very far from the list rst2pdf-0.93/rst2pdf/tests/input/test_issue_104.txt0000664000175000017500000000015111350504756022103 0ustar ralsinaralsina.. header:: Page ###Page### of ###Total### This is page 1 .. raw:: pdf PageBreak This is page 2rst2pdf-0.93/rst2pdf/tests/input/test_issue_159.txt0000664000175000017500000000032211242666102022107 0ustar ralsinaralsina.. admonition:: X ============= ========================================================== A B ============= ========================================================== rst2pdf-0.93/rst2pdf/tests/input/test_issue_68_1.txt0000664000175000017500000000124611146570571022263 0ustar ralsinaralsinaUsing test_issue_68_1.style the paragraphs whould have normal leading. Using test_issue_68_2.style they should have double spacing. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus magna. Aliquam sit amet orci eu urna luctus faucibus. Cras eu enim. Donec eu ligula. Aliquam velit mi, sollicitudin id, elementum id, cursus in, dolor. Mauris vel sapien. Pellentesque hendrerit eros nec diam. Mauris sagittis pede eu dui. Mauris sit amet velit. Vestibulum tristique ipsum ut nulla. Maecenas ac turpis. Vivamus vel mauris sed purus tristique convallis. Fusce porta, eros sollicitudin faucibus tincidunt, libero urna dapibus tellus, vel mattis lacus purus at sem. rst2pdf-0.93/rst2pdf/tests/input/test_issue_320.txt0000664000175000017500000000134711401011304022066 0ustar ralsinaralsina==================== rl_toc demonstration ==================== .. contents:: Table of Contents :depth: 2 .. section-numbering:: Section 1 ========== Subsection 1.1 --------------- Subsubsection 1.1.1 ````````````````````` Subsubsection 1.1.2 ````````````````````` Subsection 1.2 --------------- Subsubsection 1.2.1 ````````````````````` Subsubsubsection 1.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Section 2 ========== .. contents:: :local: Subsection 2.1 --------------- .. contents:: :local: Subsubsection 2.1.1 ````````````````````` Subsubsection 2.1.2 ````````````````````` Subsection 2.2 --------------- .. contents:: :local: Subsubsection 2.2.1 ````````````````````` Subsubsubsection 2.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ rst2pdf-0.93/rst2pdf/tests/input/test_lists.txt0000664000175000017500000000254511210115733021522 0ustar ralsinaralsina1. Arabic numerals. a) lower alpha (i) lower roman A. upper alpha. I) upper roman 2. Lists that don't start at 1: 3. Three 4. Four C. C D. D iii. iii iv. iv #. List items may also be auto-enumerated. #. An item with more than one paragraph The second paragraph #. And now a list item with lots of text in more than one paragraph: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." This is not part of a list (so you can see how paragraphs ook compared to lists): Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. And a list with different item lengths: 9. The 9th 10. The 10th * And some bullets for good measure * And some bullets for good measure rst2pdf-0.93/rst2pdf/tests/input/test_base_url.txt0000664000175000017500000000013011106027542022150 0ustar ralsinaralsinaThis is a relative link_ it only works if you set a base url. .. _link: ../target.html rst2pdf-0.93/rst2pdf/tests/input/test_issue_110_3.txt0000664000175000017500000000157511363114507022330 0ustar ralsinaralsinaparagraph in page 1, with footnote [#]_ .. [#] The footnote from page 1 * A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item A long list item rst2pdf-0.93/rst2pdf/tests/input/test_issue_196.txt0000664000175000017500000000025111254237644022121 0ustar ralsinaralsinaSection 1 --------- Section 2 --------- .. contents:: :local: The TOC above should only contain subsections. SubSection A ============ SubSection B ============ rst2pdf-0.93/rst2pdf/tests/input/test_table_classes.style0000664000175000017500000000201211351764226023513 0ustar ralsinaralsinastyles: bigsmall: colWidths: [80%, 20%] parent: table justgrid: commands: [] [INNERGRID, [0, 0], [-1, -1], 1, black] [ROWBACKGROUNDS, [0, 0], [-1, -1], [white,#E0E0E0]] [BOX, [0, 0], [-1, -1], 0, white] parent: table onesmall: colWidths: [20%] parent: table smallbig: colWidths: [20%, 80%] parent: table thick: commands: [] [INNERGRID, [0, 0], [-1, -1], 2, black] [ROWBACKGROUNDS, [0, 0], [-1, -1], [white,#E0E0E0]] [BOX, [0, 0], [-1, -1], 2, black] parent: table thin: commands: [] [INNERGRID, [0, 0], [-1, -1], 0.1, black] [ROWBACKGROUNDS, [0, 0], [-1, -1], [white,#E0E0E0]] [BOX, [0, 0], [-1, -1], 0.1, black] parent: table toomany: colWidths: [30%, 30%, 30%] parent: table twosmall: colWidths: [20%, 20%] parent: table rst2pdf-0.93/rst2pdf/tests/input/test_issue_292.txt0000664000175000017500000000021411351150602022077 0ustar ralsinaralsina.. class:: nobox .. code-block:: python :linenos: # The line numbers look too much like the code if Issue 292 is not fixed 2 + 2 rst2pdf-0.93/rst2pdf/tests/input/thanks.png0000664000175000017500000003717611200536753020602 0ustar ralsinaralsinaPNG  IHDRqVVPLTE~fffJJJeEBBBL9:::i666#2I0!"*:I.fᚚ&&& )^^_epVFbvvv""%NKN>nc 2]ZH`v5Jmu>;l@>AZ!!&D5*r0-N R1Lh>Z~":FFFf`1?>D1>V~&f\v,*z VB0B nJR0&GXP1?R2fhUN.TR'5=nUv e/{pv7Nr.D\PTx#1v VRrhV^ &S*:T" {04XXXl"":  =Lv"E (/Ba2?4o>*pIf<=FrR[>UP$1n ZNZD,X;2[X]:) &<)E~z.zt6,^2Ff2 t~.zi \3"FV fNn&j(*H'G&6P:Rx: r^ b2=]w*>Zr Y)2W3"*FjvR e> o9z* yT=2 v.>\V\Jd 82,!*J jVbT:=lR=>Z b(#&t#+G(0/2>&_=YCBFO"">Nf bYjv{v84F l& z*:%CCN|b5v"04Kj6%"&fF&Vh`rjBBC^. t*,L&*PPPN i>> ~ ~C;mFFvCJ{Bvvvj&:O>" !3FkD;^rb `6 r bKGDK ;2IDATx}}\T癶4B!|4'! 6EFe!n邱C'tP,]݂ӼkAe 0qN(1d7"ɀK`$k1/cg>pΙ3gs\9I!£: "M>mUz7| ӂ(Oc Q\$%%`KIuEͯ5cHr&gx S|G<\9!uŭ6.x>.ƉE^^q< R)2^(>~G~p#B[R2\ԡ}_W|L .bbQXOI.8ʕ["beW{)q²l5)7$K [ЬH$~+W0$ǃ!͛[P:pBTEC(~L$nI 9޿u'4[$i0n6UP'=@~_u@rM! }>&z?sD(͏ y6CE4k<V}^IHFq!|9l4_IJpj4 vzP*뒒BpS -Ȭ lP hL~z@[ЂMg.^<лW.YH-GGS^Q]-Rvu*i2lgQG!!L&ZKSR|g7|ŅnBCM*R&ܸH`L>AVKG4}7#!ؐLBqVp'1rurBsv.z/LQG>z't;FG[z1ᨆֵKn:5xZ|a^`:C& b L7K;@i\XY@|lh(PdYeb*>:NϦ̦1K{+yy/+1#SO WG \L~)cIKѬ~ :!=T)!-,u4a2n*,&q¿+WBTS{w39g_)kc؊'/@ܯRlq=}}) : AmY>D{Q/r!V=2۲ʯZm9NDtlWi0^=|q7L*8skB[ 9fS|<@q78KY,ŝ0*4nIqn. үH$(>VְqBL9v#v W1I).U|!p' hZ:gLN&[_-o$[u$Ge6 .:Ù"4")NE?ξ`='>XpU N!*~E1\,FE$ҨB&6Ȭ{u|h2iq8q8>8 YY}`??0iQ 6?U$Iwu~oKZWT0T.$,)-E^R_"K^zTqF]Fe|GnD jw()W #^^nQQtI 97|C}qsiϣ [DRJϋ}ˇ8!@ܢ&O?n)ɸ@aחv\v9Nmef(E_^rO/8ѻ=@6/^u0\8/G yssvn6pKXFdbEVk.?x96g3+vp\E y@\jJ|S.Jhao#U(B~^av2ν}Oq"~_%F-ϱIŻIdz})#2PR{JLdk}MJK !]oUI .t 6>.2}RqP8^i1O6qudLK{c!,7D(9Nqpj g`ae+CtxuZFOōܔUWV<ɉ(ϱ~JcJHCV&*g(??ņ\g?Z~*.h7DOڀR([ e_R3r'^.T3HAglFǁfhN}Mv,.lC$- |(`p~Q\qǁ8ULkg[$ccchf[/%3Sa>sRݒNB"9n";i%aIeXm{@WF_5NC~e;grmޖN> U}&,oa/6ɂP&*q iL9;ƈc2q}r gLxLNÌ^#l Q[_1qp_o)bWY YYVxFPF<,9Q!~O(KoM ]-J[wot^S9ui^7 QFXmm.~z x ٤o:}ի^u3d{5CY0t/5/ }3*5LgLV"ȱdpֈz'sPR18tW/8Q(Y_!H1ӳ|#Nr7bI̮Dq\qEbΌBoO_ĸ%#&ͳ2.8NAݑoBƣ(MITo"ďgC~ eFM)/כ&0Ѫ2Vj-C)d2.[^pCZm~~~ywYselʪyao/jXWܛjk}.:&7ׅBOk{-<;, cx̟} A7oF  1S1btD(=Y&&6r,zn X%Dž pirtMY r|:kJH[RR cx*ZSZԷ9T7p 9xSOKQPV[ tڴi跓y 4jW!ȇjv M78ӆ!P8>@׾=͕DdK!) t7 $+9558[à'~q?U')Br ~?Ĵ^L_ ^8%q?L`m >E'4/WxDo#S䀮 w(jOZMG\rW;H>,}YOjY!ON&ubP$(>gHTPcv] 5)ۺZ*Tv8~]u^:JKهv i|D/ cc٪lEqFX><Ù b6CQlk[Fd'&6d &`LB WLC}qp> 9Yr1a9騝d j琠?tCCT:P} 8TJ1tlܵr8BJ4oFl<wJu2(aVVPCݻwwڲc߾\@x(EqTkX/$x$*:9|&*-«O-[VwTRmkZrzδؕP涒~]UV괁7jȊrtg:"d= |N8gגAòS̀lJEMRA6=-S{?s4q $8kNx_EV/.vŭ2ZG_8KQQG 87SOc8sݩO>ڔ/Oygjj;*\ڇYm/N 6iĔ{͝ӄ_qyz10q %U)ٔ52򍦆7NqPxY9.(ӯ) ,]g#odB`S]0$* xB%KXU5|bEcaБK}'Q<2ˏ-y_#:j8jgp዗ &WJQ t<3|qPl&# .$S<݆WZ_׫{5"rzVrGx! T%DbzO-ZNj5G&):q5UXx rg2L&?]&S|?"gcj!nsr1KRvݻs9o'Igq7y:NpL۽"j)x*O0]q;v 7sEQvV[oA$ i1)D@U}Y%ݕ Vzs N"IZ^0Ƀ[Uψ?$gI,,y%%8XM".A\je'_m%\1(ֱSL|$S\r>CUd!*u<#Ei9i_E-Ĕ=6s604 ߓTs"-g,f)Ըm}sx y $D?'uG hI@-1&3D%Hq1 UѓARG?|)ye9oҥI *~E^O ̏su,!ap˂v@i$D*"w)w9 6hsBGp|JURo'fEqEpn9 077\Zqs0q_Grj +o r*1|(w'ݓ\"1mG+-qD|W&/$4ϏsvY3ꢀg\8 %l < TbD/f!r~B&z-9pPumD9> U,wqu[NC9rEqqb8IW(*G#1A9NQ*r>yi'mǥ8.{z?37qp\Upz xcHیtf)z>yyÏU^E$''hߐVހ[F[L*D H_qI ^rSSլ*gIUxDWa K @ȧ@b"Ў,TY,/LE" {we{[ =ɯ򕲘Wq-gkNXh8?Bt<9N Pj]&nb GONܛaHe"8y5QpXtvA%6g[#ӲKb ҡ+|Q0 G˹~Px\jR\p|^l1"P|Ga0^ZȁynE.Ø_c)Q?!:.nW*d'M!>^ck^>EzT㼯S«TWym~U‹¡)=N{84E>,^AǎUꢜB $O~W|jVsuYQV:*qvbx͛7-3;~[c+_eῠ}"{n_gBܠ!ċms݄ɯ\%~+Lγ\%kYyeVq!_ akJ0O_r/=GeqMڒK,:E4[CIsƕ t/ϻ|{<#Snq݁6hʹ:mf߽u/x:AF<}'Lf7_?_T4e{x79m%(eɐs~ΚUIxu꩕x]ɓiQXg~vdUqH8Q; pu~%_g4_M̯W`5Vt-T%o.+1=qײGbcȎ{姄8-Y$qūpB1Y9I^/e(5r0k''C6kN]8ľzyR "XS0lfɊNt+ӓMbO<_߷mKVt|>O@<Iưb9lVyIF f_*<Qp]ik_KTc%j_B!ߎAVà 9]@Q}Dt|W,j˔yUL%6fhhcvTLʾ24^-~2b 9tDvAhzq#;ǂF8!V`QK vuj }˟-a2.HQyHO׉ojqL';؏8Sq+++ѫY?KX'!9^~70 SkO`(\XR_FF܆6Κged*"#s`QY侠n T1nIDM9 L@'rC{1g&r FM 2fijG@\̓Q85j@Y.溡q=Tr=Og^'Z/B8ໜ? h(PRVɒUF7U7&"#Η晗1ɢR>M"fÄxW U_G'r?=vB}']9 |Ǒx kR[~uhn[߻p<,z`K1Sƫ *mj(tE+{bFo< Q< &_oK#HBѝ x奛, d'U]  o'Wisz\]zmyZF'O >ԶE۵mrxQmP1EAJΎ__6F?-8.[0%NBt3ǛyI hW==fYy>~=O;OD?;^eI@v q|eJ7quÕAw oQ|Ar\h_{fZ>eLV_ZRʸq0##Å7MTgJ^/Tg}ee:Az55oYr& } ;x{CFfsoʃШQy'~*6F.͛z팃oMwdA6y[Ÿ-:6L)W&^ody%' e_kbx2]/n#bIK?{ߐs^mlQmHMsKK\ų2R4ESjϭ{zNO`/kG<j(D!w`EEF#5 YO9}S(j{\!S6\h4hƛ7#s#{bRlږgjXȓU,Ka~p10^,_mB\:(U2/wcclȧ'"[@_gNawIOgeiS$Fڃ>_ j$bF|'V^-ٴ 0)wѫZ;֫}ua >j(os۶M}ZLaB+hϾT= ک0b76<|ïP7W&( {NU1&9C5[U8XL/U8e>w4}KG$WDuq ʏQ㙙ˆ[,%^rTW/[z ;^^}oaNJ*U)4q=!N|Q.~c!]L ʴ۷ک C bwa.nY~0\ȍ`Q'ćSr3`f>C> Tt䗛E@^;HL4|jsjjC| yd-gsP]~`dDTJF܃_ڸqyE`8JV6pn d쁩WIkc侥UrоȊb?SSn?g>/c Հ'AÇPoEgQ|+}?g>w]OJĈ?FOyÏChٱs£8xnSOfn{➻y}qߗMB}m ";O(q}';s|ǭ{˯q_p=8C~P8J^<Cٻ}>җ>x|K_}xm-xC`CzzލO~6M;ΐ.5nqX_ٻ?[%L}S|mG;8߹t|w>&8Nn;h]=XH? [< n%c_6N.C;;օ{8/xG ZH ޹7k!V@B(? 1g-rmIENDB`rst2pdf-0.93/rst2pdf/tests/input/test_issue_180_1.txt0000664000175000017500000002006511247041514022326 0ustar ralsinaralsina* First a short item * Then a very very very long item, which will make this fail because it can't be split over two pages. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. rst2pdf-0.93/rst2pdf/tests/input/test_greek.style0000664000175000017500000000004111351252072021773 0ustar ralsinaralsinafontsAlias: stdFont: DejaVu Sans rst2pdf-0.93/rst2pdf/tests/input/test_oddeven.txt0000664000175000017500000000054111351413705022010 0ustar ralsinaralsinaTest for the oddeven directive. The next construct prints "odd" on odd pages and "even" on even pages: So, this page is... .. oddeven:: .. container:: odd odd .. container:: even even .. raw:: pdf PageBreak And this page is... .. oddeven:: .. container:: odd odd .. container:: even even rst2pdf-0.93/rst2pdf/tests/input/test_issue_328.txt0000664000175000017500000000113611407501451022107 0ustar ralsinaralsina First line correctly indented. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur facilisis consequat tortor, vitae faucibus enim mollis sed. Praesent auctor sem vestibulum sem volutpat id pharetra diam vehicula. Curabitur vulputate tellus at dolor gravida consectetur. Sed non leo neque, ut sollicitudin ipsum. Curabitur commodo semper luctus. Sed facilisis interdum bibendum. Fusce luctus cursus feugiat. Nulla ut mi sapien. Duis volutpat tortor porttitor risus pretium aliquet. * too much indent * too much indent * too much indent * too much indent #. too much also #. too much also rst2pdf-0.93/rst2pdf/tests/input/test_issue_304.style0000664000175000017500000000015011352754111022417 0ustar ralsinaralsinastyles: code: fontSize: 100% code-bigger: parent: code fontSize: 170% rst2pdf-0.93/rst2pdf/tests/input/test_base_url.cli0000664000175000017500000000006311275122410022102 0ustar ralsinaralsina--baseurl=http://lateral.netmanagers.com.ar/static rst2pdf-0.93/rst2pdf/tests/input/test_issue_305.txt0000664000175000017500000000007711354143127022110 0ustar ralsinaralsina.. image:: images/biohazard.* That should be a PDF biohazard. rst2pdf-0.93/rst2pdf/tests/input/test_issue_266_3.txt0000664000175000017500000000105411345461420022333 0ustar ralsinaralsinaPDF partial image scaling test =============================== This test combines something that test_vectorpdf (reading a partial page) was doing with something that test_isue_266 (scale so large that it has to be scaled back down) was doing, using the vectorpdf extension ("-e vectorpdf"). Basic image: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 Scaled up a bit: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 :scale: 150% Scaled up a lot: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 :scale: 300% rst2pdf-0.93/rst2pdf/tests/input/test_issue_165.txt0000664000175000017500000000021111244414241022076 0ustar ralsinaralsina.. note:: Term Definition Term Definition The bug is that the definition is not indented when used in the note.rst2pdf-0.93/rst2pdf/tests/input/test_issue_328.style0000664000175000017500000000052511423562064022436 0ustar ralsinaralsina styles: bodytext: parent: normal firstLineIndent: 24 bullet-list: parent: bodytext firstLineIndent: 0 bullet-list-item: parent: bodytext firstLineIndent: 0 item-list: parent: bodytext firstLineIndent: 0 item-list-item: parent: bodytext firstLineIndent: 0 rst2pdf-0.93/rst2pdf/tests/input/charter.pfb0000664000175000017500000010445611272600476020724 0ustar ralsinaralsina%!PS-AdobeFont-1.0 %%CreationDate: Fri Nov 2 19:03:54 1990 % Bitstream Type 1 Font Program % Copyright 1990 as an unpublished work by Bitstream Inc., Cambridge, MA. % All rights reserved. % Confidential and proprietary to Bitstream Inc. % U.S. GOVERNMENT RESTRICTED RIGHTS % This software typeface product is provided with RESTRICTED RIGHTS. Use, % duplication or disclosure by the Government is subject to restrictions % as set forth in the license agreement and in FAR 52.227-19 (c) (2) (May, 1987), % when applicable, or the applicable provisions of the DOD FAR supplement % 252.227-7013 subdivision (a) (15) (April, 1988) or subdivision (a) (17) % (April, 1988). Contractor/manufacturer is Bitstream Inc., % 215 First Street, Cambridge, MA 02142. % Bitstream is a registered trademark of Bitstream Inc. 11 dict begin /FontInfo 9 dict dup begin /version (2.0-1.0) readonly def /Notice (Copyright 1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.) readonly def /FullName (Bitstream Charter Italic) readonly def /FamilyName (Bitstream Charter) readonly def /Weight (Normal) readonly def /ItalicAngle 11.0000 def /isFixedPitch false def /UnderlinePosition -109 def /UnderlineThickness 61 def end readonly def /FontName /CharterBT-Italic def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding StandardEncoding def /FontBBox {-226 -236 1174 980} readonly def /UniqueID 15530649 def currentdict end currentfile eexec #@A3.+v|u N6sIg7 Lɔ_t^I@l ZUƕj3υS\ kb.sʒּ]Vp}NrX~ 8vUuz\+͂qY;ypr0cs-X;hxL-4bATWO޿j;$&Ie"5蒶 bl '!)Fts36NAt8o,+JL=^2qHvqT ?;cxY`El/eco2gdcnd]ҙQP +HME/]{YX25}_,2SS(hsCrJ0'PczelGS2pа:xX%S,gEŹ!WWi.9*UoFe&4Kyks%ﴰqMˋʨ)y6r2/!7J@n`/ƸtP1D(#Yqۅf7hVY<3UnV]Os㰋J]{U|6IoJƶuѻ:Tr0}C>Gw'!n!1<"@*0 DauN\DXm쑝2#.Ng+iPSФMf rwۜHnyެDv z!Zv}qTҨ6qq[v Os#HyHNh Cr*t;PIP0:3^I24YdzHLO1AH#|27ëm§BEC(r??nu@tAmX؄sV#PC+rT,ʑ*PبWY.˜g )'u—tBD 'Kxʧ Yɭa'I\Yn3X\P]Cv+@mZ;5L"# )ɩݐev>Ķ9dA||RsՎ00v3$C,{4 d);,Ƿ7#[|`SW@db6wَByCX!r\KcOGWvXH P! Kb&$į,\4^kkc~ P絰paNn].9BrKۣAcEgತA=b/ps9|rJ>oG)$ga v͐Ǯ}1^A4iR{+zY|~8* @~&o& HXJRXԔ 89U"p)C@k<0>rd'.( =P(axrܣ򜴩3QqkŀRr+}?6eQJe`*)9_pZ;V{Y'$W'*js#4l'#ݰ~D 4% kq+w(,̿A8.9mr(+0CV׺gHGsM䏂oY0m22͈ E:8&}7ٹWi>͢ߊdCQ'S+ aInHu qN/T{|6;ʟ[~r]θ# nyvElagp`A\oJ eE^vOӟkt oK޸0RmDXӗAK> gI/9C0QI Z ѓ$ʍT-}v>/bPލ /HzȩmҺLo &{]~5ݹbU@U31K~;849TݭZM.)4/J4 k䤓ɾxUQM#  $HneXuީ*{)¯,h#:x`)\Ï"{ !PfC&*eVOwVJ'쒭=% ޢwU\5aTqNBh);pϦVkQ@V{4IFp,p?&j' ([) _)%jN*DX0M$%۸t l5EA̕-@z#w3T0/|?EǴr/{3E3AGIcYSfp EL~Ohp&/NĆ>7pVGYc#/nM-"Oԋ倳EU8r$¼%gmGQ_Sfjث)u7\ysͻnγ%0}\+"sGkKvk޴'|-: ţK;isS2QSg>) ؽ+8*^<=n j+Iz &q&*Ѥӆ?/|A%L-ȕJS9x2%x;bX2/M:Mfl+4?LF/t ;rݦ T^톈]?&цQjN0}.oX05VPn".owZd ,bD%$5#1zLte֢&,`7M\4N4՞,-} L]U95`곏%=mEɅbusȢ7ϡME)R^4TC0^0(0:esKaK95UQnʟVۉz%P >mKK.,&s)-_*3gCWad ̿P>ܱM K6L0&V+TS4AwƈͣDcYw"@fP<xC1h\>z0khUCVی9'% 30얭Qyx4ROUs>-JGuthH֙r뛻c% L:M`[v⌖o;8ߵWr&rMzVKU}m}U֧By3]W@ԥb;1Z2s+hB4>|:O+9Fή`T.j*)NnmUbIQ 43Л֜=wI?k ivk5xL-SZ%W[$rh>I{aIڬx-e^]ҧ&a͕ "֘%p&g hvdӹ1D>2l*|!61.ODIM89vz}[ʁOPxY[m*Pxh_STCRv1N$/d*BjYEM|#;6š?&FkC!MAf!]9,;WYܟڄ`RڜҾl';lȬ}oixuF4DpLtGN? <))˒;nG#"s=5z~cw<@ \5mPx&6왭p6Aŏ櫸exYh#J;w^LJBjN-UG.CC2!Ǡ1i{_HZ%]x2D)W}k I }|(޾vUc) IdKZj "c)P]~lj}ނnv_\YjKWU M↖Y5 nW>zT{U5)7onPEˬۃӚGle+<At]sWȊv/3PAWb6x\]KJJB\XxP W X£X+zoPmQЫ`3_dES>S߹_],֪ %+SQ:nٙ d.IBIð)6~T2*4@/RIwzSm61)}LhpOwSM1n#5|ކo#0 UN&?# %u%؄-#<,"4Pũ'bj%ݷu8Bì(q"YZ-d3-9䍮$+m8ت M&?vSJ;L(za\O wb]Qmxh0#-5&xG]ӊ!+sY)Z<NHD _0v`gpRWR$BpT$g&9@e^'

ъo!hL_-Q>|?[:+wȻ0?L3ߠӜɄ{%O;|ztvջ^y!X?%(G6 8g |xZ`_B\D*GV^Chuq {($VWGTy<`nk7p/-Bs]g&8;@z <)ӮEN|.Ru i7oSL|qn1/0?@%n?.b^9`4"AiZ􉋶݁ԓ]l"_oKn4Ajc]J^OnD&\.7"ryXE߽kWcPEh"f߿S/WExj?6M<,s_wNm}mפ_!&w T&|0xǛi'rP 8Hvľ\&ki brZ n"gt`~3;5!΂ śƯ}bV8DClM%b-FGʏдnm6dB6ȗpql70"h#d0ʠ>OsVI|ԾGӕ:|qKϾzdG~ H%ɬDsgăj~^gk㒝>qgьOeDW! b1DW3iȯ8+pTTg175{0+X,ES j4: C(FRtsmœy4h$} 8Dpdɥ9\lx+G~&E(`[GgJ\GL4Ɨ}ܽu~$(d|@C#HnE5{нk li(Hs#ScP6'vJ…֍3-IR&G|KY`d44'< zbHlݢԁ d7?O~m@Yv]'RW @* d-!o+`mbVh2.coz7J4z:=z{=nɑL@0'^ Bn4,)p)̺*ͮk%:pB:}S3D M %0M.fRb$+GQNq,""ߕƢnX6QU쇨`MNd &F.zZbpmNIFANo^/4ϲGhF[a;>vEußGzC1YƲ2&HzȺ[c Ek?"Ou"[>FVs  _/L˪,ҍaoNaȉ\"823"/ljp<]-$f2Yax(_7=O\[ 'W}g>RoVuK)(q zدAxךsDV|V\ԕ@;TL 7,(5UwKbB),]zp[c~og# YnaAi6Uλi,:ȐiE*GUT$GLw NQ%qcIldOuȑtr9 Cs N7$u6ڶ6D;*?]%w-b}f~a)$pT&\K@`ŹR1Wt娃PgdO)r۬~ !`4şMʉL ͼTNKvFEBxv#Rpk\ȧKö'=vm!i zڮXxta UgOw|nB{ȱO HuȌg&5iV] Ǿ-wܳ{Ѹ0 nDNv#X]}!t;w$XW}!՛ ,L6|h\ `&˝ET^'E}Ta[IyƧbh2"SGڣ^Ds>^ oL;//w"=50!.IoC&@@!$[nj#|&&R :0XUUJ"NZz@* cC kڳ30rTYO]? nW>zT{U5)&Qqvv0ͳ߷c@Cވo\:n ӗPa]vXO ~8aw"芎v=bWD_fְiß6fQ `J 9QDNñ@ =uP3pFx읭pk] Atql3uHectk+^0jW682ް0ez黨_Xmv{&fj* C"LL_"\)ᘂ3? &Y=cΪ#8;Ax@l~8h1mN<"G7] -qd{>)JcWn¾@e킌j h-w)ALxk3oRѠw&C^rdGfDAkxM ]1.FҮgu~3It]zsD/1cH(asDD|=ape;4ÀUw;@qk78M bBO.˱Dؔ0n6[LjZ^ʏ{R5Xc:S[xl]a"w23asC7p$<^!@]ք_-3K *8 6K6Qhur8_6EiVNuv[،4d0jS,%f/ztu-(ؼ* {Zvry䴲쟗΁k0z\U7&k,iZQ'!C'[eK#cXvzZsj_.luU-o^>XQ6'_Q?Njb _YҨ89Yt0kw?sPӞ*a!*v1<(2+'Bpɧ!#1Hwv7S]j' 9g٤ 1c-gc9P[眃zJJ'?VqYHu}6u@:4r/Y̍b;Ի}8ߢ ;Q8Nw 38+[XgŽ28/(ͮY[ɝOG~'U,\)π#'d[h4%<#XsMyF,5L|6dVз#;f͟ M{ REx<߆:?vW{.KdAR7?v[+X`lՒʷ@605'I@egsE)U%S04`aO!l<7*3)sWIl5JSR&K9IRodnM`HWOŷV$[_g<<5ڡk,8ZA)l6<~fPlZ %G>Cy*]I1,4 ewzs_g_;$v4:sn>۷M21Nҹ62 vA DS{ (~w8X7@sҪbTz;ʣLQ|JfAaH6qȮBd|*zm'߻(v` G4ylt r''J.)`? w=ZZNN_Ū"J=%JچgX5 h#'/njYY]&w+I8p#7p>*Bm#8cX< 0 E ιOr0dw$D#'Y&,]&Uu>8AG?oDצ]!u+L7Ta dNx!Vk%ҟ3GZ26Y4A&23mqPSt͙),JbG&ye,QXt@y蠉CǪ?}%a>C5nqyI~)#X709P %vssz úsIpOrtBv7O_UJ4j9@ks94&\pc?~tݚe%,ANmGquٻ8I>aè_{ bZd+Z+ 0Lܺ5شa$zzך`w,RoE{gҞVHfU|Ç/9$o݅/ ('KIpf&Ί<#"[y ZR̐CI1ཤÒ>:K aK'.Wk Jʭ_5ם<`i~:VK\i50"!ѱ+^ιKtd'JH9K~/UU#U[qo5c!2k5+NCkߍS5AZ(TGKy۞On-hƦ2]&W:~dm 2N**C"Dž(gZa,1\"108&k#%spO,V[T7[h&SZiMQ5|}WP\Pj 0}j -LK^AC?^s{<7%L ǩcP ,#[gm힛#CA])ʰF;ij{fcJ*^[5pvLz0m4|֢F"Ť-%;H8U)ӿ!A9M<^ M_ZrBX"?h~JN.-d9<?v?v% Yw1 M$`^LZ$\7*G4kv k`+7TAD^S:@!b~!fZâTlq1]X 0t i҉~]$o{Nl<| -14!P1YlK oן)̛oz"M9hX wvaid]mXA":hX&C,`Tv8xq+|Ov} 'R]ɜZF'ʃ F1 WZK({t $6sR_ %Z.C%Ƕt)b6zT!PҾ|DEzE9qW>,pX,#% 'KP\>A*!AZF'UR`eo|E^L>۠wGtU^wVe.i/jk`SQ_BR8A`pɗj.)mL§ TDZD+wCA JuQ0 >U#rCs+@NfЌHNʥJP{Ɲu=ζPȊ/DQczO^.Тn$ }m]xQw(v4Fѝ^#L2q&"'852WƔ?'ɲ$(3U@|8M \]frZ>ԇ6TH^'O}c`CǑ;oxh$/yf[qJ7V`x.O@=8뜔1H@.t euشhc^W}HǍY󘌺 eΈ1G|.pPXWeߨ]) 5Ual}'ywS\~`]9.d!+ ni-I+Yq~밬buDdUD%n"\;e4Cp1f9=BFiD H*XKʉH;ZeD,AGdh ֓d *F'O%(H^xCX4H_;y?$ߦ` '3\Df477JeRUܠT[5+1c4g5ǢXm\“ 5XoLO-n@NEME9@Bnh Ze_}>umO h4w9@=[Y~ _ ?pסbEz!}sw밀K7V~n@FJՉI p we7>`jCQZS0\%"LKnC3YeLj Wg3X4v@`D0u2G8s4Y|I]gMm46)%/_ k 1y9e|+]Zԥ8UOY\7`i߲M2˓ZJ<[L[S,"<ҝתckhsC*fdJ?obUIqTk% .b:xK:a1%C( 'ӡ\XCsJՋufbd.9GX? 9W8BM_rsyvlYv-߯J>ZsDƢّ(8ї)58XjXGnpyJT6Bp%`S԰sYZ&&"GXǘ3'X8Tdo'szUV&_~6WUl"cTTtcɦ$uӃ(eI_RH%hR>ډ[~_,mݍdU_& pT:qEIecqWu ., ՠtVt/{0+硪s&){4To:P5 צVJ!NJ8 K^0hT7 y sBO?Hn,y7+L).6#1FќxVb&>ik("Qy=[ Ob1BY-}?i^}`E/"FGrf}Xxz_[˿\N[;YaMB&:&JQgaRzY|,"NoWZ<ZC~HN5Y3&MR:WMHFpāg_ wWkuPLF [w>AiX -mwKFr c }ObY=ɉ//*5PC&Qy৯D 䆧_|Na_ Aފt5c/2댾]L(A&o 3 K\}eJ/\ <.8i *ϵ0H^.;Ƀ^Eȳ%TZZBVk'JE_9>B K 8 ̬ 6H5MoHdKQRV/߁-g3՚~YڗYLϫᵶc]z0c7*_۝Mg0_rkih훧2`dJG{_' n?dI-sL`1VȮŚ/S / P iK/fg?G2}^;]J7J3l#7"_V벡b7!JUK1}V${.Ҭ57t{tRѫUkһ/M`o݇4swk`]#ɱ˧_@әvE1 W\# ^.LҮFco$#TCkYq7*'![Ii=[ ߣspX9B/ǡ(:l-Y[ЀlvOܒP8w\ *2Ō 8&58gRԑb>Mqܷ}ʺڜ5(}`PHGA 쯙`Ψ`usT;V!EHDI ]{:a$QmGঔ*ُBwG EgXw-?C+`4# To\Wn"+3yN֞(CYAbaŃZ%{tk݌ͅ P'}~`7H[_:>mI➪-oūmU*ۅY}Av^y ;t2׉qzB[6N]vի-伟Ŵ1O7y]jb0;"GXIQ ZùK7b+ۺ"X-9ȈVvhT_Ͼ 0dqa:QEܓn& A4* 4>@ F)K,ω l| *+\y[ FӀ;#"$$ׯGZ)d,2K-)u*s/X4IxCbj6C'?F~|ē7HljlDm|o{Y-YTN]&.\v*CxĜM Z)@!X-N?lGJPDGT- Bqz1'?d8JoPFs_MXVEv[F|2xM3gBق8݉LY;^|oѧR#DȲJI -:c46?YA [[Y=XϚ4-@E}c%E8Fu8{T$ [V7lX_⺵uWuff_ܯg.-k\ý<6B `isY} l;D {l%nuR{w XHۀs?o jo lVO( 'mZMq_WU80ֵdΗ4VkM4@au*\.פWџ{̡kD3CzlI1^9so2}.g0A'($GG_&)uK߱{⹟cu7q z zC:t9!)5ݐ z)MD0qb:b`=?xrU{I`xELT4It{ hlM',heޢ:-IAUi$̽΅z=)}\h:RrDuQ-uxL!<†zE8[|gl]{.Tڧ 'd},(;ta1|mxW-s:R36{m 06+xnA!Il.\Fzoh>[NT33TL19T߱pc7PF#C~>~Ќ{!M tiB;)YJZže*MЋ>HivjI $?9^G2{3sZbYueZՋf9 ԟ0ùhD=bMDLJI42:urz!{vfZ輂 px(&kw-WM.B!@\07#FGIwLޠ^B6J/rf=8 U0DRWjgcιhz#1"?b^WVtq ^M$g3*vI_CO`4CԶR%6ra__E- l0Ss"|-΁M]/!)Ows,{@aŠ-$Z^+ۢ+E:J Q3d=]kk8{a%@Xu G-ʴx;D zqQ4L2mr>T]Ȣ8$'$6i!fS@rwo@xl+\m5pK5(*U$hhIAƐ2Qis}@oU;>h XpE$AB =ا ,dvy]k`}5ҍ0Bb9=ԔMo@:`$X5-T~M@F~XAah\R|^m)EeJȄRbLpj `a8΀0qs ;,ZxsVA7S>¹஡eS;l?Nyl..ؚaH|܏W}Ghe]%R3e37*=eJ &h4 [93[Rn:9qI)]aPy@kYNTD5/ܶe]w3䗱rizTWs,5qot=k4o5τ!:Zv23 &Eĭ2;hwwV6H%%e\7dеL:EkY%bo"+N/0GcBZzipu-Oeu W61 1,[[ʦD\.e.϶3.܌fOLCh!2և{sۆmq\:i "3a4LОa5Ed>gg٬%4T]W_wj#)E ෢;#ېjGfmuFa41:oW NQ̒ $@v/UAAM/yN R 5+/H&F #jiQ B6!`!2Z%آMDhHHq>ݧke3J2i_B-7)qs`a'IdBw0  G!Vm>5=hvg&L׊ZT]U6Ǣ3CVOْV9,J"4tsȅa"PU"5l3ノ1"ڼ@@ &`AZm|+$y &+MGKGd ~khNs"1@u({@ s]Ct;CI}v:.Q9}>-b kg$Ĵ\|-e)_Z ^܁ d3 ˻ J# 2 MgP s`3Z>YGU3N?-z$\qU!?_:FoNnΗwZК} CP'1>Vb7x&fmɝreZY%:5QѻB}Lz*Yw3 ]*"w[:!m̡?\8,!j}[LlGN@K RKpo PӤS$Nc0fN*m|'kt$y^с=fB.,ŠM%tn6?VW*FaSCdԲ/ kռ$*~ ti<˘B$0h"s;%)w&`Y~ I~ i=T#<-.8KA9I u@5;F4 DNb>&>yj{ŗE>'Tgi徑2īdS W,:]>TU4hg:.Pԅ2r%X賵SŘ 5'ϖnhPǪ<$U8G۴[BgYbp:A ,a݆N<_ Hb Gm0д:V鏕K3Pʘ"Ī*;ib$c оNj[PeΠYj4̓3D]CP5Xqk:L[6B85yS2G9iE٨@c'"e^̭߄o>ΒZl&7֤kSG[PC{ʋ~k?%91G惰(>^"$G]BTdr9[TKh#8ٻ:kEr6 9t6rww4Q 4GS0{}7ZURZ>Ёq"_Ifnp_~Zه*^e#Ǩ|Bq(jA~ll!@f}xK{f?7F/(IDi  o^L>5r4!w1ɡI@^9;MrT@1v]A|tCNG%-efhI=e%D+xZ!/΂[H]opKglUN锚'h 2WΞ FaU)3s[׬Ȯau+UHzzT#MJ@fV\;>/38~{+q.w"*aTu{_;z˖/̓?@s1@#3:¿fv:Ѫ5:.b-n뷸xBSYͲ@3Բ}=^]j-|rjH DN&oOqux3<I8h憽|2_=[b1TUT09` jm.d^ ?r+\ꢂk,Oo~1@c2eG=Q7[G+з/Y,zQJJ; 行s7֘h+MUppұGcPx/~G{J\^r%W`Ty31Tb$!~[ ٖ^%`Dbv| ~ LA[E&cig~RX_?j(*|Wydf" D75ey&of)?h=A:p7[gG{jBҁvRWk)hr_qm /f-^w69^-G(KBRZV@$`ؕNm18)K; KGY[F=q%a vl[}]kh rQ$k $x $ c^I{ڐ Ww"R֮Bm2.^UB*rM᫈k0O5AX _M[5No[sXf@ 4ϱR)´6k;79hCJ7VҡVG" il6'O& 󔄭`8ɂl$f1}  v_$ޛՇO(AIV"I(?0_me'yHt$")zuf 7l{2x+/y>3zl>Mi/F[,EWNherU$JKN`?TM4{7ifH]۱Nsu\ls޿|ugp.C+\nK7J$)6WeZq25F,~UJM8'߅(6ʙ? '?|~k~ 5o]`r1K#,> jj-_J=P{̊DMVl8yI7ǴQ͚p]\|oLӸc=Xiv<(;5JǏzdTαuoVO8fMQ8?*"H=4%Df!l"% c.kE,PoXMZ,(odG eP1,!'c3i9CgU($w;4^,zwW^KG6zj0Ycf=i;(cd%~({w⼮P5M0dҷ(S B% ˜$+!Bs,o8CsLhyn?=z4}nekl7zȾIr _Ll<'vu8Ϻ`(?fSAio2qwuWѡi R[yF\ loa& mT8:PoIA jukHc%X3 m_؎F)?A߽_ {g]&r2Wѫ&Q ( -t:fdS}0CsQIUg!Bh;,cDCۋTʲ$>_s)$"DZ @;\)FI;Iats½}>rj3Hqyp8(dl5 #v_tM!ɪp1*r?gjgg {wy|xɞ N<Yg[os#K"_Z秊ֲer(C$!e%#ab2!nԇ:F p7!Xҫ28oCX^ܮ3l0xn8)L-L3__=?Cmg<]p΂IW1A'ަ޻v"3qQ#2*5;IGET|m_Ʉ Yy=ް))~IZo2M o9|W[zY;y.J`{~4>rܒVV:q%w* tyy<6pYoC]s KX+yZv˵\L.ރb˔½}IhIΒ'Y5c ہN\F/Z1i^PVc/;bĮHdz:a(ˀ+ %Yt@R5 ˜aN fĨB5\d#8<۩X#^l/=404` !+ṶGsbɟ@sW.Q7HM@w.nuzxpCR?r 9vvqg SJc?tZu`XnkH P ^y#A u_[Pk"Fbk_*V,DQ5d @Av w^"YAy:`\d*2d2w1YZFھ3' vscL[jF ,[g S׍o(x_Wѝw<u@\~PyiTlMQj@`ѯa@ im xz>^j7AzMOp&tjIF>F;d?H6 9zE" icd[ޏ3rv TFY!2ذ씕 @O DQB"DSu`=7NLvnSӚƄfkbrn&GaHuM39_ߟ_}YB]D^ݾaS kn{״QªJ?P-T =Xs2HPL=}g޴0{ʮb)j>Rw3}teepF"퐓ǃǜⶥٜ($$90(sC}@aGX0I"gT_\ ,U4>'y=B8l *ǨPL_Ltt,8?aѿBY^YWVC5&i}܄+AgSéW+Ƕҭ"-ݪEYW(8Ϣkt%Z尊w&!B1 Dzh.!(Z6L@xj5ʥ&)vm_ dM@7tvɿ7i ?IeɣPk+hĒB܇l oXʧ<` K*j%_St֙/D 'Η۫,jH _ޑK+ -F6ښӣnP)zQ@_ʆbg< |*A#(29.MTڬsƊ5]z4\>%h+Hv+ #>yI֙pBm hBy{`05t~X^VSh NH lU]F.PQͩhfCJZхw-@fzJ6L]gޢ Yc(   q2|ZJ0ζ݅G АqQ;JaP5~@̼۪KVRvi\7hޔU_%"es^aJ;p'2DcqS'*KT?GێJX=D4\mHm# POܟcs|J[րP."ȒmR`o;Ԃ>mCUs:KkPS҉҅dɝ́w´JsIL#["w=L:?gte)5#^e)>f=Vd_/*6Z-ʥ_Vk@Z$3($s(G/[V۔w[[]GA]Nnm԰F])jY-eDR?)aQDIPC72C;Vl˭+G6leg;N'9o{1aTN 'gh$QYoQ:>D6|$ tn1?}<ZOwH_bd/̕ SjWj`̉j3//k :s5gCtiwUO%cN'6r9Ѝے> Be;J\W5䄋!pT&u㞌)wm{ `leabo4=zW,J/oZY}bsb1^ӃЊBvb,LW31_^T1ͯ?1l6]nNubb %xЉa˲MA:~Tj>^XB4o_D < Zj'h}wڬAb%L::6ˣl%m`=praQ@;@2} ߴ\7tJCgQ:l˟8=lEmzօ|aQr/,U;9 zxH\,!]> XAz>~j ,nIo֢~ralٖ.6Ϙ<}l_kd0=m}b0$n<,x/cĊ\}3CRs>gm:@c'(F =g{v@h*ؽeƿzT,֖`{jBү%^15fC ܢ :Bisۺh-]"[rաx7^v$k>G! *WF%W{eTTj ф@1gvKsfͲ MP~hfKӉqlk?43< boi{e&kjX"7 zNF^$A K ˺8B&eG9 dsa(r1*h7\ǪFcZzXDg ͔i}@85X@VHCY!ucm,.P ?8[ya !^ AAVs*_dӦ7H8dcQ1댳iJPzU@ 0 f Gꉋʮq rsZ GOdBp#swйC^Bc/vN ü ?{њs̋2BRܤHܤ ` where ^ is one of echo. html to make standalone HTML files echo. pdf to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "pdf" ( %SPHINXBUILD% -b pdf %ALLSPHINXOPTS% %BUILDDIR%/pdf echo. echo.Build finished. The PDF pages are in %BUILDDIR%/pdf. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\germantest.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\germantest.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/Makefile0000664000175000017500000001120211452336032023116 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/germantest.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/germantest.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/germantest" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/germantest" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf @echo @echo "Build finished. The pdfs are in $(BUILDDIR)/pdf." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/0000775000175000017500000000000012064144442022764 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/misc.rst0000664000175000017500000000014111452336032024443 0ustar ralsinaralsinaMisc - Übersicht ================ .. toctree:: :glob: :maxdepth: 2 misc* rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/_substitutions.txt0000664000175000017500000000375611452336032026634 0ustar ralsinaralsina.. |prodname| replace:: "Das Weinkellerbuch" .. |vinoXML| replace:: vinoXML .. _vinoXML: http://www.vinoxml.org/ .. |GWS| replace:: Global Wine Stocks (GWS) .. _GWS: http://www.globalwinestocks.com/ .. |GWSafil| replace:: Global Wine Stocks (GWS) .. _GWSafil: http://www.globalwinestocks.com/customerSignin.asp?id_customerType=1&membership=PE2?affiliate=5672005530 .. |xmlimportdir| replace:: "C:\\TheWineCellarBook\\xmlImport" .. |xmlexportdir| replace:: "C:\\TheWineCellarBook\\xmlExport" .. |imagedir| replace:: "C:\\TheWineCellarBook\\images" .. |imagerecdir| replace:: "C:\\TheWineCellarBook\\imagesRecipe" .. |backupdir| replace:: "C:\\TheWineCellarBook\\backup" .. |basedatadir| replace:: "C:\\TheWineCellarBook\\" .. |baseprogdir| replace:: "C:\\Program Files\\TheWineCellarBook\\prog" .. |logdir| replace:: "C:\\Users\\user name\\TheWineCellarBook" .. |configdir| replace:: "C:\\TheWineCellarBook\\config" .. |downloadpage| replace:: download page .. _downloadpage: http://www.thewinecellarbook.com/enigma/index.php?module=Downloads .. |emailsuggestion| replace:: email .. _emailsuggestion: mailto:wbruhin@thewinecellarbook.com?subject=Suggestion: .. |emailregistration| replace:: email für Registrierung .. _emailregistration: mailto:wbruhin@thewinecellarbook.com?subject=Registration%20gekauft%20von%20Wiederverkäufer: .. |emailsupportbackup| replace:: Support email .. _emailsupportbackup: mailto:support@thewinecellarbook.com?subject=Backup%20problem: .. |emailsupportrecipe| replace:: Support email .. _emailsupportrecipe: mailto:support@thewinecellarbook.com?subject=Recipe%20import: .. |registration| replace:: Registrations Seite .. _registration: http://www.thewinecellarbook.com/html/de/registrierung.html .. |whatsnew| replace:: Neuigkeiten .. _whatsnew: http://www.thewinecellarbook.com/html/de/neuigkeiten.html .. |imagecaption| replace:: *Click on the image to see an enlarged version, and use the browser's back button to return to this page* rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/conf.py0000664000175000017500000002235611452365513024277 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # german test documentation build configuration file, created by # sphinx-quickstart on Wed Sep 15 19:32:20 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os import pkg_resources pkg_resources.require("rst2pdf") # get latest version import rst2pdf # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'german test' copyright = u'2010, Werner' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1' # The full version, including alpha/beta/rc tags. release = '1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. language = 'de' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'germantestdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'germantest.tex', u'german test Documentation', u'Werner', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'germantest', u'german test Documentation', [u'Werner'], 1) ] # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', u'twcb-de', u'Das Weinkellerbuch', u'Werner F Bruhin'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx', 'sphinx-mine'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True pdf_compressed = True # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language = "de_DE" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled pdf_break_level = 1 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' #pdf_breakside = 'any' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 #pdf_verbosity = 0 # If false, no index is generated. #pdf_use_index = True # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = True # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False pdf_default_dpi = 300 pdf_page_template = 'customPage' rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/_static/0000775000175000017500000000000012064144442024412 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/sphinx-mine.json0000664000175000017500000000045711452336032026122 0ustar ralsinaralsina{ "pageTemplates" : { "customPage": { "frames": [ ["0%", "0%", "100%", "100%"] ], "showHeader" : true, "showFooter" : true, "defaultHeader" : "###Section###", "defaultFooter" : "Seite ###Page### von ###Total###" } } } rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/misc010.rst0000664000175000017500000000103711452336032024671 0ustar ralsinaralsina.. include:: _substitutions.txt Kontext sensitive Hilfe ======================= Kontext sensitive Hilfe ist seit der ersten Version von |prodname| verfügbar in allen unterstützten Sprachen. Überall im System wo Sie die obige Taste sehen (entweder auf der Symbolleiste oder auf den Dialogen neben den anderen Tasten) können Sie sie anklicken und dann das Feld/Kontrolle/Widget anklicken für das Sie Hilfe anfragen wollen. Diese Hilfe gibt eine kurze Beschreibung der Funktionalität von allen Feldern und Tasten im System. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/_templates/0000775000175000017500000000000012064144442025121 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue367/source/index.rst0000664000175000017500000000072311452336032024625 0ustar ralsinaralsina.. german test documentation master file, created by sphinx-quickstart on Wed Sep 15 19:32:20 2010. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to german test's documentation! ======================================= Contents: .. toctree:: :maxdepth: 2 misc Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` rst2pdf-0.93/rst2pdf/tests/input/test_issue_292.style0000664000175000017500000000034211351252072022426 0ustar ralsinaralsinastyles: linenumber: {fontName: stdMonoBold, textColor: #00FF00} nobox: backColor: white borderColor: null borderPadding: 0 borderRadius: null borderWidth: 0 parent: code rst2pdf-0.93/rst2pdf/tests/input/test_issue_239_2.txt0000664000175000017500000000007011347773475022351 0ustar ralsinaralsina.. |warning| image:: warning.svg Inline SVG: |warning| rst2pdf-0.93/rst2pdf/tests/input/test_issue_263.cli0000664000175000017500000000001511326502576022041 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/test_issue_374.txt0000664000175000017500000000215511464313566022125 0ustar ralsinaralsina.. -*- mode: rst -*- h1h1h1 ------ h2h2h2h2 -------- :: #!-*- coding: utf8 -*- """Cliente serie para la balanza nc3m""" import struct import serial import decimal def decimal_from_nc3m(nc3m_num): """Toma un numero en el formato NC3M y lo convierte a decimal""" nc3m_num = nc3m_num.replace(',', '.') return decimal.Decimal(nc3m_num) def main(): #definimos el string de formato fcn = 'c8sc7s2c' #creamos una conexión serie ser = serial.Serial('vserial2') totalizador = 0 #Adquirimos los datos while True: a = ser.readline() #Leemos una linea del buffer if len(a) == 19: stx, neto, status, tara, cr, lf = struct.unpack(fcn, a) if status == ' ': #Chequeamos que la balanza esté en equilibrio neto = decimal_from_nc3m(neto) totalizador += neto print "Peso Neto: %s Peso Acumulado: %s" % ( neto, totalizador) if __name__ == "__main__": print "Cliente serie para balanza NC3M" main() rst2pdf-0.93/rst2pdf/tests/input/test_strip_elements.cli0000664000175000017500000000004412057517776023370 0ustar ralsinaralsina--strip-elements-with-class=missing rst2pdf-0.93/rst2pdf/tests/input/test_issue_114.txt0000664000175000017500000000011611203267266022104 0ustar ralsinaralsinaA&B === To notice the bug, you need to look at the PDF reader's TOC C&D === rst2pdf-0.93/rst2pdf/tests/input/test_issue_226.txt0000664000175000017500000000030411274054001022074 0ustar ralsinaralsinaThis line should be helvetica. The rest should be bitstream charter italic. .. role:: charter1 .. role:: charter2 .. role:: charter3 :charter1:`Role 1` :charter2:`Role 2` :charter3:`Role 3` rst2pdf-0.93/rst2pdf/tests/input/test_issue_328_2.txt0000664000175000017500000000113611407501641022331 0ustar ralsinaralsina First line correctly indented. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur facilisis consequat tortor, vitae faucibus enim mollis sed. Praesent auctor sem vestibulum sem volutpat id pharetra diam vehicula. Curabitur vulputate tellus at dolor gravida consectetur. Sed non leo neque, ut sollicitudin ipsum. Curabitur commodo semper luctus. Sed facilisis interdum bibendum. Fusce luctus cursus feugiat. Nulla ut mi sapien. Duis volutpat tortor porttitor risus pretium aliquet. * too much indent * too much indent * too much indent * too much indent #. too much also #. too much also rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/0000775000175000017500000000000012064144444021463 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/conf.py0000664000175000017500000001426711403056167022774 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue 319 documentation build configuration file, created by # sphinx-quickstart on Sun Jun 6 17:09:58 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue 319' copyright = u'2010, Roberto Alsina' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.0.0' # The full version, including alpha/beta/rc tags. release = '0.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue319doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue319.tex', u'issue 319 Documentation', u'Roberto Alsina', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/_static/0000775000175000017500000000000012064144444023111 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/make.bat0000664000175000017500000000600311403000576023060 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\issue320.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\issue320.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/contents.rst0000664000175000017500000000005111403056167024046 0ustar ralsinaralsinaStuff ===== .. note:: Just a note. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/_templates/0000775000175000017500000000000012064144444023620 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/Makefile0000664000175000017500000000627611403000576023127 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf @echo @echo "Build finished. The PDF files are in $(BUILDDIR)/pdf." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/issue320.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/issue320.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue319/index.rst0000664000175000017500000000053711403000576023322 0ustar ralsinaralsina.. issue 320 documentation master file, created by sphinx-quickstart on Sun Jun 6 17:09:58 2010. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to issue 320's documentation! ===================================== Contents: .. toctree:: :maxdepth: 2 contents rst2pdf-0.93/rst2pdf/tests/input/test_math_default_role.txt0000664000175000017500000000014011367513160024040 0ustar ralsinaralsinaThese two should produce the same output: .. default-role:: math :math:`abcdefgh` `abcdefgh` rst2pdf-0.93/rst2pdf/tests/input/test_issue_461.style0000664000175000017500000000031012062705451022423 0ustar ralsinaralsinastyles: custom: parent: bullet-list commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [RIGHTPADDING, [ 0, 0 ], [ 1, -1 ], 0 ] colWidths: ["200", null] rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue257/0000775000175000017500000000000012064144441021461 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue257/conf.py0000664000175000017500000002075411347476406023004 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Foobar documentation build configuration file, created by # sphinx-quickstart on Wed Nov 11 10:37:39 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.graphviz', 'rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. source_encoding = 'utf-8' # The master toctree document. master_doc = 'foobar' # General information about the project. project = u'Foobar' copyright = u'2009, Jason S' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0.1' # The full version, including alpha/beta/rc tags. release = '1.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'Foobardoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('foobar', 'Foobar.tex', u'Foobar Documentation', u'Jason S', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True graphviz_dot='C:/appl/graphics/graphviz/2.24/bin/dot.exe' # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', u'index', u'index', u'lorenzo'), ] # A comma-separated list of custom stylesheets. Example: # pdf_stylesheets = ['sphinx','kerning','a4'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled #pdf_break_level = 0 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' #pdf_breakside = 'any' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 pdf_verbosity = 0 # If false, no index is generated. #pdf_use_index = True # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. #pdf_use_coverpage = True # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue257/foobar.rst0000664000175000017500000000043211347527300023464 0ustar ralsinaralsinaSphynx example document ----------------------- And now for the figure! .. aafig:: ---> | ^| | +++ <--- | || --+-- +++ <--> | |V | +++<- __ __ ^ | |__ +---+ |__| | |box| .. +---+ Xenophon rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue257/Makefile0000664000175000017500000000606011307603030023114 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue257/index.rst0000664000175000017500000000043111323432344023317 0ustar ralsinaralsinaSphynx example document ----------------------- And now for the figure! .. aafig:: ---> | ^| | +++ <--- | || --+-- +++ <--> | |V | +++<- __ __ ^ | |__ +---+ |__| | |box| .. +---+ Xenophon rst2pdf-0.93/rst2pdf/tests/input/test_extensions.py0000664000175000017500000000022011303037724022366 0ustar ralsinaralsinaimport sys print """ This test should print the message from the sample extension, and then this message, and then generate an empty PDF. """ rst2pdf-0.93/rst2pdf/tests/input/test_issue_110_2.cli0000664000175000017500000000004711363054067022254 0ustar ralsinaralsina--real-footnotes --show-frame-boundary rst2pdf-0.93/rst2pdf/tests/input/test_extensions.cli0000664000175000017500000000004011303040505022474 0ustar ralsinaralsina-e sample -e test_extensions.py rst2pdf-0.93/rst2pdf/tests/input/test_nested_lists_page_layout.cli0000664000175000017500000000003411432345511025401 0ustar ralsinaralsina--show-frame-boundary -s a6 rst2pdf-0.93/rst2pdf/tests/input/test_kerning.style0000664000175000017500000000010211351252072022331 0ustar ralsinaralsinafontsAlias: stdFont: DejaVu Sans styles: bodytext: kerning: true rst2pdf-0.93/rst2pdf/tests/input/warning.svg0000664000175000017500000001637411062305764020771 0ustar ralsinaralsina Part of the Flat Icon Collection (Thu Aug 26 14:31:40 2004)

  • </Agent> </publisher> <creator id="creator24"> <Agent about="" id="Agent25"> <title id="title26">Danny Allen Danny Allen image/svg+xml en image/svg+xml rst2pdf-0.93/rst2pdf/tests/input/images/0000775000175000017500000000000012064144443020033 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/images/biohazard.svg0000664000175000017500000001205311216224561022516 0ustar ralsinaralsina image/svg+xml rst2pdf-0.93/rst2pdf/tests/input/images/text_and_vectors_001.pdf0000664000175000017500000004052611303135150024456 0ustar ralsinaralsina%PDF-1.4 % 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xZK$ ׯs*@@NfzQR=zբ)>Q??|V(fgnh??_3m l$64۠fad=ǷL:&f B~;׭OO޽ZPnC̲IBEɷ΍`MD5u$6-'3'fmp`b a@ԩJFwQ/AQsQ84'XO{)gMBZNrkJx_^nJDLַm,AaY-:(xQԋF'0V?R1)s@TʷBq`SsJC#l[G<;Y !1†Asp.xX>_r}R'4]wlk4+/l0i]*+D/o B8Y6+/ZS#r,ë>qs&el`.S)&gaR`0D rPyԿ]/^&/=TNAovPrj_+34N,_*qV%E` 'oOHO0`~Nn>ZnsxsfD8kgY!ĕ/rLN9.qE1X'#GNgF}Tx`6]O(j2=Cڳ*a 4M1<] ^/Lwx:ͳ\!QrW o!qnW[.=)ђW}F?Dtz8-Xd8 鬼ǎS`I:S:F&j_^oy>iV4{k9s6),֗5($})lC:> {'7gpHFKLe] J" GeU*qPۀ?mu--_y3aiKXoz'f~E7'D&*^,*D)$R~RkS׽z|1' !Rm?~cñEшNoZEvDDd(w;[osIbFMgNg2n+?25JΖ4NT!JYPRuM$: Әn!oh"Zy "Í; c3{Ƞc'BćC8뵁SjcνN(pf鮰=Pիi<.E/Æ·e>Gtu¿D}T2gSQ'4fLC@#Z>'1;XnL=zompGH1/vHVXbbc4S,66&lnJܿsmO{b̖H􉌰>I fѽNͭg^2Nm_c1OM(.XAmlrz}P@vv> 91bvB:]Nv߬0>z[SÒD̹QV w\=O{}_ārϘQGf;r\ڑ3 qg70~fo'|ÉN BpLtF̪.bM:5!꧰$Lp`bˀK{*~o=Y~P2,&F"T1LZ\r"S;ߺű1n{m* Ni&vSq/˗ o\R^e9]&uH::t GtU1$hkϥ 2+hhLo0䰐Q3>h) 9qq@)uV`ALı$8s 'nnYeBDl<9ʣ7Hѻ\A!zcCTAM], zq/R/KD%AMLq14l/KNeGv@j`O s۰MK]Oc6,|II@oe6ii@hzM'}5k6~}4#"!ү9~sm[1D<+eໂ- A~߲AB}Pe'a Q 84엛3LS J؂zR ]uˉ[0˓rXɺkoߡ8>ZZ_3^ oܷb@_Mh<r N46 iwh~3{2悀y r nOݓXBKڱ _yiy#_ k{#A>["^1gRo3z?8#Ãm>y"JHRjRsZRj+ -%}:R.1H~ ۏo;zt[;uȶo ÕsZx엻囲U~-Av\E Umzuf2.ĤYF%CQM$B75B>RQX3@agWW`̢|SqH2ȴN[/SQo'u֍Qn529BGFՀ ^ÚmxlCA/9/z~wۣEɣy,ϝ)Rt-ݔjGyl{^`j&v6O奝5 /9;}ƻɛΫTcϮUocbQnr[jV0E|Cp@.e(~|< 5N> 'NcbN\}kCo|5P Ƶ3SEȎ[dQLFp*gfdD,RI"fIm;3@̂PhBlB;UO?@;yoY b2SU{=p^qu>Jn2Ouֹ+u^Hͦj># |\3 mߵٿks$47eGZRCLCC,C8G$s3ݕ7qyeu]@cYB` ţMySK˒7'KnO`<,oaøCUTLߞ>g8O.>%%M;琢ݵϫ99S;׿zј%{I/T5;5{ЛKYa\GN6;ۂj5kGzS9tK }t34.BlL׍&8^(i_e'=o($HwP/?&(U17aZl;U(bTǃv0p]rHi0MbGZ}%Pm, eqf9ièRB>ܤqc2 <>:/|! B$qAp90%u YHNn#W&q7Jr..:JΊ d^C/v'Dvgڄv5J X1Ǻw&j& ǹ!M4vR3O$:ťzpcUF0,ZhR($8.RLUbΖBz| 8i"8{-*&^Ѧ!t-TFk4GPWՄ̃2K%!iPE*q=?C+&=#H2)mkA"8{5]TrܛSRgWequ]]'H1ZDUW^gԱ'UFudMEb֍fF7oSC~Gb OԷ"+du.Vse4!S^av˭OoD_LΉI !\\,#v^m6rN,D؞X" q>>v_VG'C ﯀Kwp.^(H JxG.T[1- 1p>I8Vgt4HxC,5 W$pR yEO: /Oe^Q[ZKCHxIB%+lpW-#;yT8$9 %<~&~ m"؇쫂 x^QY>6Iظ(aC-P"*\1::/7֬ uX%LB_+J +V"(%^e`a_uxt| $R9z30{J$̐0]´PX@/$<$adL$A| .&.S/a0^'^;#a,0nㄻCvwIU#`;YO'ab ~64TCP% 0pK v19k d@Vda@FEd@D; 5RyEJKv~^Hv@RW$ D/$x-"!+#O(ģ+Ab :ЃQ";w>D`%BBxBO"-%)/8$hZ6 !0"o["l _$.Pc#G 킥@hM4Ç_+~ g8 endstream endobj 9 0 obj 5058 endobj 10 0 obj << /Length 11 0 R /Filter /FlateDecode >> stream x]Mn0b"; !UET=$HX,}JZ8T/g?ܨjv8nݳ[~(~w]oتf$*K^ Lq+/kL2@Kj> endobj 13 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /BitstreamVeraSans /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 12 0 R /W [0 [ 600 770 731 610 634 684 862 603 557 631 787 751 694 774 655 390 392 611 317 633 615 411 579 634 520 390 ]] >> endobj 5 0 obj << /Type /Font /Subtype /Type0 /BaseFont /BitstreamVeraSans /Encoding /Identity-H /DescendantFonts [ 13 0 R] /ToUnicode 10 0 R >> endobj 14 0 obj << /Length 15 0 R /Filter /FlateDecode /Length1 6892 >> stream xX{|յ^{g漒䜄w'!@LH z<@AD$4 `GT6*RJ1"ZbmQm# ]3 z3ٳ^k}k}kn3m.ru?uҺ%S uTνcΙ_~FksaeNʦwfΘVO࿏ڊfR9R:e3ܷ`&T10λoV\&@L[0WLІPis1w%3CJvCB+.vr 0x`o;ޖk[t+R@G&v|"zw_ݫee<A( 'nK4į&A-ߞ moNLM䬜4LH/'*,u ŃydV~!NMTR'ۦ+-el&>Ddp@̖ !X*XNh#N]yxk`Vz aǎ){is>%5[&RpKJQbH/4Ʉf$[-V11-?8o܄2_{1~wqc Er1W7;|^-U7.1K7^Gh}"Q$B=;b ka=읎SLy^-zV{7Vmos-~'+!mtKgVd,8,[;WҎ۝ Gu]z€!#5@w}^L $"\1y6Sc<+߶vFolٺn\ۋշ%ǫ-FUV:Uf "VVX?R`t !%b]X#kޞdftC.ٌm Y:Q3x5MXzߩ6Z8:0m9ex8X .Yd,8 ̒B] Po`,k@%xKbz@D]?aC*kCjH4| kAǂ|+!|{Ecx13r(m^203uT'USVʨ jaKRǺ>'uҺ,Iyti<6n{bo4ar*W[Oǂ+LfTt]s]]r$72tM<{lmjo9Onvq\8P7ʥ:4T- !Z:ln˿`.R޴~UCWYo4F ^>(ݒ!~ffc;v4R;8,ƓpV0!{%)F_F3wRZAQW]h!bgovMen[hɎ!o$}X$'u"(DLkKZ+%.KzIȐ!] ff+YA5]q Okrʱ}#o MMMl9TGJ~~wsߺ`,x W[v6|t=}AEo9_3rԪ?WϾy:Ӗ{?ٿB@,\]QL܌pexFo:r -mV Iwjsjz)ֈK/jkom۷NL5\7 ynS0!n;i[8&\;˓a9^Nrln0N=7 )8DeԘΓDNKi;dvYaTr`gJsibc2m-VY1 -s6P[dTq=GJBX"pĺWRW6| ZRcچSqI`RfTMGG>WOϚEu7e;> ٗ|U2-uZZEVOWJ>쉿޵aSMxުC?eG0ڲïB/Ϗ?ذznUe{gA8;pLqiH83`؆Ҹ.’rmOW8 d*pۦ&<'Q<2lo73|7X3Y6b1&8׽#a,NmPFWv|Yvo`m8G#:uCfoy|'_:}0v!!'BzP>PQ ꒡z/dq,2Y}X% f7, ˰ 5ř*T:ohG3M}[O&.$~Ff@i %@[RCIqQ *;+b;Sl_T F*Y$H&u8!,-S42]i)EbL9O̓ձUcczj rl{Dqߎ]a{;WG=f%靫e{zx?l+lT 'K})f^7|ޒ ( &`0`\$' >t')eYsNN'O2b g UGyP6-F5OԧJV=ͦiuڦ:#v;!rYned l{AO$-d:'aۍq{'7ܠcBЈdY|Qg[JSW{VZ^'+<:In5"Dh躋R@:6ĻL_&ó1Sѳ\ٞ4_! dp {򕺮yf 6g9b6Ku{.RصĽS N(B>h,:ޤ5<}/ve[zUy'TV5}s: :5+0d(Љۢn-`x͓:,xʖ)uZ-g,jDHJLj)vkof 1د_;LWn{}ͯÇ BMhu_Ҏ\o˖}evdc(a9gA}0ǎ)E.Q4x1%,Z1O(gPAdsȿ'br$+<DKa9glҌ@g9>L RF1bMIZ%%fE0) B9O5MZ6!)9vy`yrx V9@ʈҨ3#j9EO2gCG{Zu_3<>hҝ1~@sB35h-l'*i{0Z^gG(Υ1YG3 pM4G1b:N7fqFAJSE+'$b|?B33T~ !xZEGv@ %H-QLn?[ ^ X+u8/^I?Hs7C)AjZӝg2V:Kh剰Ckzbkl'{ix~V (n T7hl!n_5ZLeM𹘪O߰%5IJ8@wfLC \M;{>V i}1I p7lz]r14#6H~C_nHz0J+Y5A`&z4s7,sfian´殮etj[&Ɛ[2NSƍ/K9rDϬ# ejרGF2xEDR _:씿cZsj N(ںPj5\"UzWuZ6 wS:BTVz8]Ua_s.(Mx`F]aOZ:}~ZΘٽokGK[D@$eͼ6uQa~_+BU~!# aS 6v|FTt PԓQ||2 F mm zqAlǃğ1">Iać QC7n(|ׯ{YW\{ՊGB>pr5!zG*QC]$M T|%+\fR ( w=x|@xL Ț.RP(|7Sx_;VxO;Ux»ޙ?U8*',3TT8CaNW8mNmۼX7+\斓۱̍? ʟ$77N` o cc {z]k^k5 Q8cǘrl,I1&pQ v,yð«^yEҏW Wడ>9,C}8Darp;*2 ?zd>̿#^Mua|97;F av >1+!̌Ɛ/Sw41VB"T`HI 1T *UxqQ\ cЀEIJ\獓>^CB. 3~*({1 ZQQ6%Ef"(dͬb,7֏ endstream endobj 15 0 obj 5108 endobj 16 0 obj << /Length 17 0 R /Filter /FlateDecode >> stream x]j0>]NF Pu1Dg7)4ܟܤ1zMmy9UD䤴\";>] SRU~xq^J'5Q;mjof,kRБA5 JP"JW,rW ]Dp.^}bx>azܴ ݲ ­~ endstream endobj 17 0 obj 327 endobj 18 0 obj << /Type /FontDescriptor /FontName /BitstreamVeraSans /Flags 4 /FontBBox [ -183 -235 1287 928 ] /ItalicAngle 0 /Ascent 928 /Descent -235 /CapHeight 928 /StemV 80 /StemH 80 /FontFile2 14 0 R >> endobj 19 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /BitstreamVeraSans /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 18 0 R /W [0 [ 600 698 557 655 636 770 684 610 636 636 634 633 294 748 636 610 636 694 787 685 837 636 317 684 ]] >> endobj 6 0 obj << /Type /Font /Subtype /Type0 /BaseFont /BitstreamVeraSans /Encoding /Identity-H /DescendantFonts [ 19 0 R] /ToUnicode 16 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 7 0 R ] /Count 1 >> endobj 20 0 obj << /Creator (cairo 1.8.6 (http://cairographics.org)) /Producer (cairo 1.8.6 (http://cairographics.org)) >> endobj 21 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 22 0000000000 65535 f 0000015955 00000 n 0000002897 00000 n 0000000015 00000 n 0000002874 00000 n 0000009418 00000 n 0000015795 00000 n 0000003025 00000 n 0000003238 00000 n 0000008389 00000 n 0000008412 00000 n 0000008826 00000 n 0000008849 00000 n 0000009087 00000 n 0000009578 00000 n 0000014781 00000 n 0000014805 00000 n 0000015210 00000 n 0000015233 00000 n 0000015472 00000 n 0000016020 00000 n 0000016146 00000 n trailer << /Size 22 /Root 21 0 R /Info 20 0 R >> startxref 16199 %%EOF rst2pdf-0.93/rst2pdf/tests/input/images/biohazard.png0000664000175000017500000000026311055045562022506 0ustar ralsinaralsinaPNG  IHDR%=m"gAMAܲ pHYs+PLTEU~tRNS@f6IDATxb`Q``` cB.y3L! @P A5IENDB`rst2pdf-0.93/rst2pdf/tests/input/images/biohazard_16dpi.png0000664000175000017500000000031211207105754023503 0ustar ralsinaralsinaPNG  IHDR%=m"sRGBPLTEctRNS@fbKGDH pHYsvv`OtIME"{{0IDATc`Q``` cB.y3L! @P |‘IENDB`rst2pdf-0.93/rst2pdf/tests/input/images/rotated.pdf0000664000175000017500000001514012020550555022166 0ustar ralsinaralsina%PDF-1.3 % 1 0 obj <> endobj 2 0 obj <> endobj 3 0 obj <> /MediaBox [0 0 432 288] /Parent 2 0 R /Resources 6 0 R /Rotate 0 /Type /Page>> endobj 4 0 obj <> stream xUˊ\G ߯hYR ,x:&L/&^sT}8+Ju$6nS{'O_t鰈')toϩݖú3E8cw֪COfgfRw3^0ß41ğ?Kپ(y=!+Ztv:oJ:{㵞[b 4̛ %Q4hғ&4LC\@%s^\{&X$;If+?c.u Bi^~l "VNodE=́@|DRl֪W9FO!6VVV1'SvU:~s"2:*pW*wۊ$v3|*#ڋE"&MΆp}3JxBu]I _tA[cُݮwtzW\_?!'wvLL'%ywipM2OEpS䃆"No Qx0/Vw@Ѹ6ɻA1(`kE{9w _w*V{c#[M eUC*O8sLD8` =Sx ٸA ˘re>#u+rC\àhŊ2ȬuKn9aw4!j\,6w`SRY('4iȸw^nK. endstream endobj 5 0 obj 882 endobj 6 0 obj <>>> /Font <>>> endobj 7 0 obj <> endobj 8 0 obj <> /FontDescriptor 9 0 R /Subtype /CIDFontType2 /Type /Font /W [0 [600 732 674 715 678 348 695 695 695 695]]>> endobj 9 0 obj <> endobj 10 0 obj <> stream x6iXTWn=bznbJ1\0(H[Fmb :$ӍHLڈmI5BvmfbL93}s[{{YUϪ_^"g>A%iJYSӥuDoYsf0< K>J:AxK̕w0<]2 wbSg=Wa`GFՊs*VͪF8o|$(rC2K!AKE [Cj (~%We2t-h}s7\10027`Sd"Jo ):}*;?Y3%#}PVfJ!i Kd9kڶ+*x﾿{7,O..ZX^Ig`gO<(}ΰz^Q$J>l7Cc-ZCRHPzrOήΐ7nȎVӂz9=ǩEjпZ]QߩUtoo7{;W-Vyjo{}"VĒ N aşeeI)Y=I2eT[h9<6|l,/^YǗ| `v /w/][WVt Oߟ) }2CVy9$@/$g]]щoG61*h6E,;6.^F>ϒX[-]([zT dY͢`mejuz :ADFb96+\-l:[Ȧ 1~<k?!Q沛b9<[lQ;d':9X#\NoER~eJᇀGܥXnv~}j H>>nDyM$wRldbGBk+"iΆN(9.ǎ޴lg++^}ŋ,]:w^ո6om\O|lଏ6g7վcwvx`R.9|jR ^۵jBϼL_)}Y?k_)%-h{W]S \,7`t-`=4lEOӛũGG_x^QdPH`U߂#ZQpS$3 !V{WP֡AߋH$_P4Qb 6kVt0;5@-!f>f *25tDvwn;ܗ0WMz2p!"T2XQMgZyBcLK5rˀٰfy;*^61|& %YϖP.sZy?I,H0[ W^(4cZǒFar8?հ! ?m&d=<+ v.BV݂[GXnkv5EvZHp+`3oRD06j.'\ao38~L !T'ݦE3ys& y=q;L H34 jH+2FIǥdLv iTY;Hc rq5nh R ce@% X1c ߘgjg|,|~^#C"T=M]*-)gmc`%Zbb. U7JIɩ~ UF&6Z'|j#Oh@DH?1K͟X`ɽ#ŹD|Fd?SycՒsӫD*8;y?/BOs~`qq9$ꊠ\$?.)r_C AˡP:E7VFz3P?IkH-"SF*Wiv\O1x ρAM+~](TE>08a’lGK92UJ &[YN0VntdҮNbym ķ6Gza#,:GjfQ0h V- h QE+#th$hP[az>"te] u$tJB`םT%N*tQS%~ -?oMxS 7/x=dL gߧw&6luo^ _x~-_^0^/X[^R*_ E??wgmvz1x1 ?%OxdgxT?-"~ OU''d 'b;ox</ Gx`g_hh^4Wo:IX'MGZ+-֊Amra|]4 d S7o7*fsaMPia7؍T|Ռۈ-I/n%?lu;n+7 (eҋ <_X5&\-R*+ø">LV3uli<_ƥ$+qSө0a\Ɵ /p%f>7XsJM|R&^b&U䳪)؉Op"A_8}Z<.paq0'v?!qS'OaDI8'qxOxy |捵<ZqL:q c(+ϵ(+#8p >ʇpsZx ZpH)>fe:xVf3M*9#380F3~y0:[`/'t+ST xG29o/&+F AYuτ^/&&xxbl1< *[0Γ*Cz1V[A h:J1Fh @{)ڬvnAQjGkl!%t"Ӣ\U%,h ʑ#r,KpIeLA ;Jmb}Z_";Cy> endstream endobj 11 0 obj 3417 endobj 12 0 obj <> stream x]j0 E -yLf:eɢ[I mgc)T`ñtŕoskt08KGmX^2n9 xwpj`Y]9Oy^_ŹXӀ!{UL> /MediaBox [0 0 432 288] /Parent 2 0 R /Resources 6 0 R /Rotate 90 /Type /Page>> endobj 15 0 obj <> /MediaBox [0 0 432 288] /Parent 2 0 R /Resources 6 0 R /Rotate 180 /Type /Page>> endobj 16 0 obj <> /MediaBox [0 0 432 288] /Parent 2 0 R /Resources 6 0 R /Rotate 270 /Type /Page>> endobj xref 0 17 0000000000 65535 f 0000000015 00000 n 0000000062 00000 n 0000000138 00000 n 0000000310 00000 n 0000001264 00000 n 0000001283 00000 n 0000001360 00000 n 0000001500 00000 n 0000001729 00000 n 0000001937 00000 n 0000005442 00000 n 0000005463 00000 n 0000005803 00000 n 0000005823 00000 n 0000005997 00000 n 0000006172 00000 n trailer <> startxref 6347 %%EOF rst2pdf-0.93/rst2pdf/tests/input/images/tall_image.png0000664000175000017500000000154611363205036022642 0ustar ralsinaralsinaPNG  IHDR ]!sRGB pHYs  tIME2)6IDATx10VCD"'{ sHTTHh(Bb)[< س_ ~UUzazJ,Q;z0 $$8Fd2`fEQs$>A0}'(Ȳjq,կ Ryw`Zje6W_,EQ$I"cF)պe%(rv;b 0 a.q>4( y^Qit&EeaD^,Znw\O"MS~$IQmG\.qj[ZW'O[FJ_V̦*Ș㸳x1W_M OL }[ }z-p8~_`V6^tj+t0@3Ɣe)/ZO"%$$$:}n NObX2/.-.6^.6ַbP蚱 (aRUU%I!Cp(ʾHX D@X D@X DJ)1C}@}@_E_E6^_EEvEy(E?~|9}@}@}@}@}@}@}@}@}@}@}@}@""= 2IENDB`rst2pdf-0.93/rst2pdf/tests/input/images/background.svg0000664000175000017500000003052411253564656022712 0ustar ralsinaralsina image/svg+xml rst2pdf-0.93/rst2pdf/tests/input/images/foreground.svg0000664000175000017500000000643111336347706022742 0ustar ralsinaralsina image/svg+xml CONFIDENTIAL rst2pdf-0.93/rst2pdf/tests/input/images/biohazard.pdf0000664000175000017500000000361511216157434022500 0ustar ralsinaralsina%PDF-1.4 1 0 obj << /Pages 2 0 R /Type /Catalog >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /Parent 2 0 R /Resources << /XObject << /Im0 8 0 R >> /ProcSet 6 0 R >> /MediaBox [0 0 11.9985 11.9985] /CropBox [0 0 11.9985 11.9985] /Contents 4 0 R /Thumb 11 0 R >> endobj 4 0 obj << /Length 5 0 R >> stream q 11.9985 0 0 11.9985 0 0 cm /Im0 Do Q endstream endobj 5 0 obj 39 endobj 6 0 obj [ /PDF /Text /ImageC ] endobj 7 0 obj << >> endobj 8 0 obj << /Type /XObject /Subtype /Image /Name /Im0 /Filter [ /FlateDecode ] /Width 16 /Height 16 /ColorSpace 10 0 R /BitsPerComponent 8 /SMask 15 0 R /Length 9 0 R >> stream xu[ @vFdS*"Cmf U0zZ؋҇ oc endstream endobj 9 0 obj 61 endobj 10 0 obj /DeviceGray endobj 11 0 obj << /Filter [ /FlateDecode ] /Width 16 /Height 16 /ColorSpace 10 0 R /BitsPerComponent 8 /Length 12 0 R >> stream xu[ @vFdS*"Cmf U0zZ؋҇ oc endstream endobj 12 0 obj 61 endobj 13 0 obj endobj 14 0 obj 61 endobj 15 0 obj << /Type /XObject /Subtype /Image /Name /Ma0 /Filter [ /FlateDecode ] /Width 16 /Height 16 /ColorSpace /DeviceGray /BitsPerComponent 8 /Length 16 0 R >> stream xu[ @gFdS*"Cmf U0zZ؋҇ oU@a endstream endobj 16 0 obj 61 endobj 17 0 obj << /Title (biohazard.pdf) /CreationDate (D:20090617083312) /ModDate (D:20090617083312) /Producer (ImageMagick 6.5.3-2 2009-06-06 Q16 OpenMP http://www.imagemagick.org) >> endobj xref 0 18 0000000000 65535 f 0000000010 00000 n 0000000059 00000 n 0000000118 00000 n 0000000316 00000 n 0000000407 00000 n 0000000425 00000 n 0000000463 00000 n 0000000484 00000 n 0000000739 00000 n 0000000757 00000 n 0000000785 00000 n 0000000986 00000 n 0000001005 00000 n 0000001021 00000 n 0000001040 00000 n 0000001288 00000 n 0000001307 00000 n trailer << /Size 18 /Info 17 0 R /Root 1 0 R >> startxref 1494 %%EOF rst2pdf-0.93/rst2pdf/tests/input/images/title.png0000664000175000017500000000222311055045562021662 0ustar ralsinaralsinaPNG  IHDR1#gAMAܲPLTEU~tRNS@f+IDATxOn7F1YQK/T l 9Jhte .Ȣ,:HSDFO}oW(!Ob8T::\0MɎn.k=0v; =D&޿P'jOPԅbLHam5bOo}@,cqE>J;F˫$G X&FP  /OtCxrLɨLK=]]")&l(ʀZh*ſ* |o ,fO6ڞ3D{FkԗTAe.H4 8,I]F^B44DB5 oq)**_DZ: ޡ5~#)UXsǻΤ0 h]gR8\nǐ/λ;?J6u5mI>`q5E(> Na&+Ach=!xE*H+P_Lay&*'ԑ8V۴f~Ã,BQQ Ik"n8H}F|AUF|+IPU;R.q(d+(*&R$ܢip9 '\}5F!w_co^rZ"`V}Kݲ +2o&y6sZ!4 Z^z1B߄=^kς= I&X *ooaGB!!mU̮‡Ude!kOE'Acaʕ|mŠtpE Yn U1a\T0dIh O04A1X^Us$ f"ȋ HeIZ”G :5xzQpg{"pV'; .ܐ(Ev~}wг$;i_ΖSp?IrTi=~D,p~|FdC؄M SI>~Dly-;/AĬޒ;-&ל .0YȻ?Z$Ғ/*ġ.uǀB>$xIENDB`rst2pdf-0.93/rst2pdf/tests/input/images/middleware.png0000664000175000017500000015575511245040567022702 0ustar ralsinaralsinaPNG  IHDR`:y>..Qbhh C¨v]\Wf`U$h66c ϔAYozQ^Mx6F ~K#z Hu3@wvM $0;?7&HM#g)J \.M˞Z s*@hߜ4@ܼ |jNr R85b_ ߞ7ϼhd 5ec1>cepH ĉOitX_rS J;Wv?cڮQsIA&Uc=$B鲙~', -:Gl۱;9::0rqNp?I#z||Ou =bBA +FnqܾxcF EX;>ǧS.fE335gp2.ί=u6/,WT\Qb~Q\iKYr]D\eۥaU 5j^R[Os[Û}7ܪk]Мvhw]hUﯵ=i/HxiP QWw'O~G%)Aa^!6P#TN6>1:U˘᣽-qE1\K'$.$DsrɬS1)i̶Ԝ\:y?~s玜7+/0ȧXUHc^ŶJKcTUUׄ^qռ*ruۺeoWo>u)A3O;-E1w]ioC}nCZ#nzN?r$il/ _: ϽOܟ?.`~,f-%/y~ @B"gįJ4H>*[#=V@ءȥK]KvG3ڤvLTEcXD+D#׭_cprm&v S}?=pEg =6lڏ:T88i8Ӄ.>ʮ=wxýㄧ8UDr!;80XOѠ?rN] 9u*Z5}LQB,6?B|1>II/H9ᒬ|̩yiQj2erO˿xsi+ #ԊK/j](}XVn[_1ZYzzuuCM敀ZW=Ͼ}ù-ݷ j-p]afNZ]ڏ4U>U0bf{A7qç8:` p@\' ܶJr 0h1ȁrhNx;l "V'BF)2B$P(T" ՏZFKѱ+Q L2301 b94l wdb$11n0Y3302_aa`!caac3ek`dz`Hsqssq4q^7 ?Y!n&>*K%$Ǥd4 o[}$]^V~Ni EG%ŝvxW5UQߩ!)%-#aQqI> 3ؿE媵 ٶ\[eftrp$ΐԽO}C)GD!pфeS?f&e?]tV<_Me-.W G21(y’bۋ M—zkW':7ܸz~SW3Eu^QCSƣ+OYd׿Q#Gkdr~Uf6̂" eu|>QD@ !a #1D"%2EPWhNt ÇqTc~23fbgqzF!Ɠ+Ld,,㬞آk9l99r{xyey  E?\"AkI$HݖOVUlAQJ;sv]V=GPFS/m}$>}1 f&LEMp5dlg&s88D4r?vOX%x>D~K!aql ]Jϡw0S(T8 7xYYo0UZ=8N[M41QD9 X {6C -fdH!FK༕E sd8bnUkٛl (0"PȠ` &[+c@S*V9$Pe) @P!? -c |E}c@P 09[@͓= >(N~Y F ccF1`t0ju6{d*!"79`9 :񟅑)T_0ahhY?S 8kclH pHYs   IDATxwTSB/"mX)D6X֮Vւkػ"HB?ZWK|Ɂ'̝;AAAAAQ `@7߫p8FjjjRT M.d2ٛo.RTS.rhhhHե7555_Er\VT]]]PYYR&( # Fp86VWW7DZ,Ituuezzzjt}}}.ttt 6 :׷g0dD"Auu5b1b7***PZZU%%%(++S+++ B:,/<$@./S D=D ;A|_,Ђ9f022233C&MM6e5lo.PSR/_DNNrss+yϫsss Yjjj+ɒ***x srjAAʥ Zx<Zںukvfhhڴ)MٳgHKKǏ>i3\ IeeewPSȥ61A(7R 8wx>LFV$Zblmmaee6Mu:I  --MNNN&&&2ryFWVVvm(KJv޽و ##gΜFFF333it: ?113mڴZԯ]///8pB'N2Ԧ07O~oԩS1n8/_烏yf}p[\\l8wAAAŋxwxS4@Kjp& ,vjj?Ǐnj30eƬYƍ\ N A=~%%%`XΟ?OE|8^~8+n;uw:u*bbjz߿} /X,VܯӦMCǎ?#33󃯧X,ƪUlذrC~~>P(T\_x"?֭[c~'ɓ'1rH.\]]v4i^zl?wr׬Y< rHa'~u#8Nv˖-o߾ɵk״|}}΅'Om۶PW_AMM Ǐ ;w.MD@ZZ0rH,]7oFPPϟ˗#44DHHH@TT֬YvaȑHIIAxx8:t(n_`L8;v@ff&vءȯ''w> DEEW^ d@$aРAhժn H(0|dggcÆ _Ǎ7?Xv-QYY?fngϞaҥC޽SbԨQ SJ:zX7XYYp8QPmߛ/Mߴg .hyyyQIsGFF˅/<<<Ϙ1c4l;|}}ѰaC<}Tq˗ L&ìYТE 0@q/ĉGGGmrzɓ' 8;;Ƃaҥhժ]R/_ƢEбcG :>>>=FUU/̛7Ì3p1G">>D\\r9bccѹsgH$=z4x<5j> ~z쉹s۷oG޽1`4lGVV>;7nhMwsdnTg#T9N|/p8e˖quFu[>ĉEff&ִiS)7lP=⺺[[]]&&&:uuu{MMMdodp8ot ,Wݻ3ƵkбcGu:mTWWM6펎p;Dɓ'+d2HR@ΝpBCOOzBhh(RRR t/_D&͛8w6555}yRZ-/^|:O&/DZDm3rG\nܹs;޹suhժRSS CVV;۟|r:u  L8pPN/:Ha'tӣGqqqy=1J]۷C,M6hٲ%+V0}tƄ `jjr>PRR={~'Oƀ7@Mڸq#:~;Psk6m 77(--UtA$@h~8::cǎx ?ptt.]m۶71O]e˖1nܸbXF'!E.ήaHHʨyyy`ax5Ѵi-?z(++{ߕȀ;T*ӧO ++ @.^^`cc&U+TH:\Ha'6Y6dʕ~#e{W핕 D(T_ fX~6`mۖuZn6dZff}vvD 2zMR\.wQ?)GA|_>}:6 ?D[N|dkjj={v721 רQ#9.%$$LRSSdda!-vS:]]]V^y3 AB`` ?)))Bu&n!-vC4L c{XXٳ5Pu8p @͛e2Y''b'=޺uk͛7sdXQW`ر4>s3#-v 5MM_t%K/[pD'x< :N ܹ3^.EP 0p8,--omܸ1y>}1cDP؉q TPPo Bc*$d`]DZ011ޱc֖<AԒ`رH@0LďC {Ԃfѣ~hh(FQ2 %%%x5JKKQZZeeeH$DŨD"\.FNFF& 8ttt]]]:::Ӄg%ꆪ*L4Ix֭@@ՙgܺzjf@@yC*++ "77999V\/**˅6xRUZf'۷ݦM/^͛~:n޼ }}}4o-Z@V`mm MMMcIbHJJBJJ ?~r+. 6:JØ1cBpUuu2vp8֝:֦:(..FLLD"888NNN044:RG||<ܹwBKK pww+ry/ˋ?:Q;HaW=r.]7lTQzYYY8s Μ9gϞM6ppp,,,r9={xܽ{<@Vн{w|- ?~0>>@ PLu&ۑ®ZڲXKӧOך1c99<~gΜAtt4 ///8::R>2H$իWq [nڵ+96 r9-[&ڳgOP(Ju&ې®:~b26oڵ+~'Oȑ#D"`oo_uR^WBKK =z@@@EJ͟?_XUU+T!)*Naٿ>|mooOuR\\(**B^rrIII+Wsss 4?x<є۷1|paee/2O_vFp8;vӠA(D . ""@=wRqqq8}4Aˋ|ϟݕ3ȨD7]Lyq\vڵ glyYYYصk; t>>> jqaȐ!9r$+++СCO>VQQdļR!]9p8kݻwYnD>ƍرcݻ~ ͽFDDqɉXuD"1cqqq|!ՙ/C 1f16TB!"""uuu 0]v% sBQQQ8rl6Ǝ>}d>}zSR3G r1gX'O6 "}@~~>lق#G @E1roƑ#GaÆa„ ק:Z#˱pBQDDDP(tPHu&HaW,+f:G&'RKNN6n܈'Oo߾ ձ%9sɓallLu:gڵ[n- C|)ʡɼ߿?9ϟ#,, ΝC1dPPBEEEطoN:}bʔ)033:VsNʕ+K+++@&HaܘL-[pRg<}ׯ1` <\.X (--qqtӧOG&MUg9rD6o޼JGiT!G {fCђGwww:K+V֭[4h@֗'r:tǎ?̙###c gΜA``k>@%ywcu}ixzzRreee ٳ䄕+WC  @пJKϋ/ޟ/99ǏG߾}n:/mݻ7sNr;w-R/88\ub_oe IDATIpJr^˜1cgAddd|tTPSSÐ!Cpa<|~:%Y6tPXxd1 N,+.88X>N>aÆaƒ%K(`FSSXz5-ZSN!;;,Z ݻI&A..\ 4 ۷o]8vz @&A$Çsa޽XjN< sssB, ի1zh޽Ϟ=SF۶mE)]tLVƔ)S`gg+VZSmÆ s.]+Wիؾ};pETUUA,ҥKV?*b՘5k0aֿWnjnHu:ƈf.^XoСjL&֭[f͚СC?C,YիWCCC۷oG>}0rH<~~G011iӐT/^ -Z#GB.PSSC}vE}#""ݻwttt0edee!%%bn4n}9222?/ѥKEw|jj*ڵkmBB\.~!((HemoD8vL֭[ GFtt4$yxx)ѤIB"`„ 8p \.LMM! fYfw=zFFF޽{M:6uTcs @L!>K\5j#UQN uuuݻTGPS WWW5]ׯqqdeeݻt:u*BBBPVVGGGL8&&&Xx1ХK" ?;;Amt:x5v6w!!!(..ŋ퍏-·)-[~vrss!H`šLT ݿС k\ 2~o?-Z &MBnݰh"DGGcÆ j@zvvvӧOG$TgOHazjcŊ=z4 Buwa޼y|245k50j(L><ޘ8q^| }}}G:t(={cժUضmׯ_իXz5:ty< Ѷm[~ߏ˗/ҥKXxGKӑmϟ?nݪ!/uhWWW:t?~<^zsΡ3gP)44;wD- J%ؽ{7}:n]g'+,+}ӦM,(2dvލ;wֹԴ 544躮akk MMMxr9.^AA,޽{_QYY +++x{{C(B"`̄.bAsիWj7k?9ҥ vލ*nsqqGp]˗?mCdd$QYY+WbÆ GGGӧhٲ%j ###4k @57n6n܈5k`ܸquC={p1E FѦ>tLy_~Xj5\hkk#$$ؿ?QZZ ;;;\0do߾=FI&:::prr[d ~W\|"͚5òe.h֬444 4hY<==qApuu ,YkUvvv8plOOO]>>>Tl6oܪtTS(S[[ ؍5:w' 1w\$$$ 88X"$ rrr  acc"()) vL/^@.7۫WPXX5.ˑ Hss!|>bmoJx9455z%f+=Gcɒ%ŋziii֭[P(p<ź?=*={ѣG ,o^/^bڵ^ÇWTUU9xBuUVFcS Ŋٺu֛ɓ;v,FI&2t:|}}!;;o^/kܸ1LMMiׯ_(HPIUwf,Ybطo_X]] bϞ=ذaGG6Qmڴ9sk|ʪEjrb8@9OQ_Ppux*!*++ =z@VV#RǁH̙3;v`[΢Hat zimnBѥK֫< 6`ӦMhӦ ?Pںu+[GGgQTgQE*݊Q8y!$$}xjjjh߾=,--1u.*t:]$9/ΤJHa>2{~hNU `֭ j\\\0w\B8;;SׇKH$pTgR>:ù5s*yC(bر-[`ddDu$P)zzzŦM:;ӷQ+--LMM 5,<<l6ZZZPWWWq td2EŐJJ@UU\.x<x<add4h&&&*U7oDpp0vܩv! y,ڀL^TQfosN6Yj[dd$,YףyTQyUUUHOOϑtddd(D144;s8hii~eR|>|>(**Baa!ؔ%,,,ФI0Z~Ew͛0\!O> UUU ΢HavzzzlUHw^[6mRy Jd$%%!99/_DÆ Ѹqc4j5z36qd2򐕕,dgg#''033=Zl-[iӦ*=E*U=z@,]}:N*,,:2"Xgر#Yjƍo>lݺNe&J#Ν;x`mm *u!|A%-- iiiHMMEii)Zl '''8::Vi_]S_~Qϟɓ+++mTPGِ \Ç-Z{++V ::[lzėALL n߾ZBv`ccU<{mHMMCCpvv LLLrss1i$?~5:N9sf3gN TgQ6%uu/_h4ԚUVaƍppe\zeeeh߾=Zn֭[C[[x*))s*M#|={Ē%K0~xP777A~~HǨΣLHa:6L& .RkpQlܸǏ#::W^8;;͚58YD\\b퍮]B~E||<._ ===]vєBnn.&L9s`Tǩ5֭o۶-绀L9EHatoNNN"""Tfm={`ӦMؾ};SI$\zNBRRѹsghтh*C&Çr Ѿ}{Opww'>#++ &LҥKѻwo___Gd-TgQ7L&7fffTgFHHoNFBII "##qQ`0TjdSYY[n(**€ЧOF'cʔ)Xz5vJuZ???H$Yn9?w\3///h6X|9n UR=z7"$$ژ0a&M~KKKyuBCC N% 룪 =>@uؿhkk밫WrU;֭[4iO4i҄8uΝ;wc|]v/\9p9;wVVV?~Ѹ8Ţ:7 ի0j( Xn|> '''R̕L&í[p!"00TǪ6l؀49rt:8ߤ NNNnS."`aXwmNuo"J1|pbTǡ\NN!CLJt!JqYDDDSLqr̙3<[(cN/\(S!]b;M֯_P899!((666uuuXj***`ooUPSS;ۇ\Q"66K5TzYɶmpQرC鏱}gbpqqAEqq18D̞=TGLEEF 08$'':uD 綿? P۷h"l޼Tǡċ/0gܾ}AAAp6 '''XXX`ƍG֭Eu`AAA􄑑ՑCyyǍbq$yb0/{qyIAA|}}xbz_vѣG1p@tl}&Hpq8qÇDC/^ĦMpEm۶]}\.bhh2%1x`gϞTJ;ƄNCWWW#>>ޡzy R7ֶ_pp6,X"gVگ!J :Cͦ:Qp\xzzB"`hhٲe_qttDdd$Ju֪U+xBu.9~2OQyQ]{WӠfffb…`29s&}#c|ׯҥKѠA#0_ưa.]PݼyF C5b Xq̘1J{NLrr2N?^{ ,Xz„ H+bZZZܹ3^~+WA:bкuk[nJ;111dXP_c$..ebbBuRUU7N?}UUUX|9RRRpz"j_ff&/_N:_~7;v gΜAtt0}t"DC%2\iӦi*kQŋygffbذaDXn)7kҤ 6l؀l5 TG!P|5+++ 2Df: HaL.O8Qi?_x/_ƯJuܹs=z4z@0 @aa!bbb ޽ڊAHMM y1bbb  3Ġ{G˗/C@bbw+ Æ í[C,^;w~T*!YD ;--UӧO)q٢"/Vrraaaؼy3-[??w>|V•+W1?0 O>o"''o[Ӹx"֮]#""jժkbժU"##mwƣG9лwo̟?˖-Cxx8q;===,Z'OFEr#GTg)@3Le̘1J;Kѻwoiӆ(UUUp}lذM6}o[бcG\z Om}OBB|>`ܻ/^5j(7o|o_办_]֬Y3lذϟoXqss ΝKu6uTT*ޮݫ$jViܔCNxx8tRիW8q"1w\Ey͛73f`Ϟ=pwwPӺ}6Zn f˗yXf q]!::zzz@xx8RRRо}{rXngŋ 066ҥKxk֬}#ف~2#\v ͚5Cll,S>}x9!_jj*֮]G%%%hҤ ,--!i&ڵ PWWGii)<==q94k H$ؿ?6oތgϢ-Z@yy9Ν l\~6l'455qu\x۷8H$ݻhѢGoc2•+Wpqxxx:t͛ahh;;;gl6Tby4d>cƌQ8O>ڵk|rѣG6l\]]1cƌ>K.|^RRBuH aٳϞ=]b(((ɓ')))Xv-w5k@WW .\.X,FRR.]ya8r2331a0 1(**Rt_rǎìYl۷sNm[lAnݰi&BxzzM6pttDϞ=Q]]'Ojv"##1gܹfffX,d7ТE )ny& b,Z={6ЁE 0sL8::"::p}:LMM333dee{wYvvvhԨ&N+++HR :=z͆1*++. 6*ugΜ7,--0b* |,r:uRtgdd@(e˖|=p0vXXZZbܸqTwbԨQhٲ%cTWW#::#FP +Ѿ}{pヤ$r$%%C|ԩ.MMM #F1qď!PP.kp8X6>L&f̘cê?[d {Erm[kYOefVZQ*S˽1Q S}@#8狼3}زe }LdȐ%_χvڅ?5kVѼLCC***Z4 ׯ_GTTx6r(m+((P'Q]]l@3#T7mڤH$JussCee%ܻw7oބΝ;j>ˎƺu㣏>3޹\.>FW!SSS,^w ӓNWWI[_n}Y :i)c*ExN ѣGJ@NN*++!pYl6$I o ???\~i׮]իUʖfDOWJQQQ"O9={2Lʕ+lj';"44GD"A{}}}Dו>>z*v,XKb͚5ؿ?^z=NPPjkk]f}U~I^Ν#q1ϟo3'y{ś8SSSE}}=BCC'yr$}a۶mسg̺=Я_'a4zTTT28U k(+++ qr}AWW4M hFii)b1{wUUB!X(..erfw:),9~ʕ>}z^Cx"vڅ .t1EAAFY/t%%Ax<3g 9s&qc7n33Q|8VZŴx(Ϙ]< F6ϯ|הmݺ裏zmPSSk׮͛ȀI0 ***䠦... Un4!{aرXd r4B^^-[[n=QJcDM0ذavZhc֭oN  q \r򂯯/9NA\\RRR憰0vio6nkV׭[Yi)j+,))_t }Gc,Xi#""jO_~7nrG$͛r ___xxx_bAvv61j(i|ػwoUҥKCT˷mvD(c jۍ}OIIMѺP(… 1{^׉K]o޼Wh^RVOO /-ƍǴ.ƍxdT#,YrY !!!ŏ?,_~Lq ;vܜ)cccdggAAALQ}}}˗Lk49b477?@FP9rgZNK/?WuR,ڵ ʹMm{ň1p@\ bZV7Wܻw/2nݺELҧL&Kc}}'h^ ˗/ "&T`iic2-Kd2^3f̀/rz*ܹĉpB S,X$wEZZ֯_WWW%=5`ݺu~:֯_*%u ֘6ml´.1c \pgZ̚5K瓳2lԩS~g̙3=cǎA&aʔ)LK.^7xXfS LMM[oaРAXz5nܸnaŋi3_i6}t.yiT RD";v ӦMcZJ رcV\ɴna߾}8t^u7&aX:u*^yܹ'Ӓ4Ɗ+_B"0-L6 Ĕyxx@WWWZ4A /^H_2̚5i)fǎ066&z+5r9mۆ;wM"00Cii) ֫. TTTT`ذaL8w1dDii)krt" PE(B܌3X9x OδNSXX .dZFDذao?ݵ]iii!JQ/^{LK4ӦM#γ>xd֛}1֖i*QPP45i)f۶m1cFTV]]{zzzXjSޔDC$P_{o8cƌϴN3a\zdG`0JN1v5a„ Ĝ:I&4T̘1i)o6ܰh"X,dgg#--!55ou?477Dט;w >>"ݻxB@zzz'Lz_yy92334-Q޽{WC5 Ųe0`]Wypeb;cȑSQF3c744|n|uB@DDyto/bhf;SNU.m۶^QQ p8ؽ{7ZMصk222P]]ݻwkL?]v!..Ӣ?@nnnsdeez_VVΜ9Mٳ;#(̛7>>>شiIg"0w\|wLK4< >̴ 0aYutbzB3$$i*8880-SܼyUUU1bR4BYY[# ޽{w^8::bȑӃ'bcc[<ݻBPP,,,4گ_'޳BֺuV&O \ߎ8q"ӑNPHLQF1'-yxxL_x1741c b]ۣ&O1cƴGGG\v ALL ^u.ӧOcp8σ(?ؾ}B(11{ɓ'|ohll B! /8#>>FRKЯ_?"((سgпb8u***P]] kkkڢCdd$222bP[[@ܹs\.DZ~\zpppP􄎎nݺ_p8u_7778z(RSS)rϞ=d8v***j OOO466 #v6 6iUUU""H  ""2Bt^M}:áC$L>1c=^1o|&&&޽{k?((_~%VǸ"##CM_puuM())AVV2"BFF^y5l0:tO\pttT?QnB&aĄr4M+W<<>>-UVV, nnnHHH@}}='''DGGC"rqqA\\/7p8'JJJJI$@S_k7߄(@SdVUU8899EEEHLLT6#""k׮P(f͚6uw:fcժUضm݋^xh+SLaѣ~z[i)3}^O`hh̤I֡ 8p ,--6HNN&v($$$`*zMM ߏiӦ̙3QH$m&Fzxx >>ՠiذar.\PFe8{lӧOC">^ZZZ.\T*EeeeYFFFիW!J!qDFFh2ggg?NNNxV*⭷Bpp0˜*ҲGKjjjss'H$ܼ 8BlXXXtJGyy9 Q[[ۢq4qNɓ',VҰq6+. DCJe21 d_M-$==|>8Sk@{SSS0u011Azκ.WeX,:m`ff)jɓ'C&СC~ #N>ʹqvvFYY2Cxkϴ@Dԯ_|AAAL'&N$ƍuS}tKOdĉy $bHD#F@F; uuuG7j `X=_(--۱lٲ}/Ɨ_~IlYi` ˗&bڛ#Ba۽R[ʺXZZ6p8'A0L\\q:4^t„ LPhTTT<1 iC$DCGG:::033ÀnUNO>psscZZ7,ŵ[)ĩɅ̈@VSS3=FŨND;ܘ,XijQ]]t|LKQbĶ RCVVRRRP\\ Db޺BP&lX,X,4 DXYY}j\.&OC?r"((wH$R>xxxXbE1L%-!1u(f~ӎҘw{r===vL.#)) }R%.}6D"3L&Czz:hw[{ÁB'''^oAAA8qrrr0tP娌!q &/c>-,~P蚢"^g=]Hcpvv,==00 뭒WY &PSSgڵk( "QӨTחd踸8(cرbP6qȑ#ĭTիD5R)Ucj|A)^" ?М)ruui7֐H$.L萸6hk+2 qqq QQTTD*TTT`Ϟ=qebw4MC$ΝûヒA #F@rr2Æ Ctt42j=C2A/,XnR?zW! b-::$&&ĹXXXה&""ǏuK;>SĴ{T L}o⺞uGxx8=ʴhǬ5qwwW؛R܄q9v} /n j a555R7nW^PP41i)peH$V{\DӧO?Dzz:Ӓ4Jxx8_TVV2-E-|}}q eRSS"d%iDۣD "K2L<↏DGG 1cR{Ş={  !H555رc=@ `Ĉ?vvv0V߁a>%A:A3rBg<Q3x޽ |P(Dnn.Q"ѽ&Zrٝ\W^ŦMPQQ˗/C~ذaHLL$j{_~i}]08@c$@_}X[[k:|FFjXCO}MWywg} B"6mBaa!r̀`jjD ,CmD L⿅na(YMmmm;EQC!鰳#k_RRqCS[ߒNRRD""fU?B@CC 0-3ggg"ڴ>233=2/8K~ٚ5xcfRRRow^D"ؐi>hР>c ʞEoNc?5֛䣰X,KSSSetHAAȴ  Àx 8؈U8|02UUU)bDYZZ"??iC$Ů'?BioDB0566fZFe9994h1sSRR Gqqq*mS\noFiX,>߿?QMH^<Њ@(ow?I j\nlbEEED{AAlll2IIIpt$ &c;x`OkD}70樝y)Q8 mSX]qTlBE?Sy-6חhob29He .z!-b'M/iɸeVp*i*C;d$5!e)BPu)h4j?/׀<%<=vmUδ+i2[7CSR(hM hzh&=1N4Er\.'Iۼ O +(!'ji4QU(KXI{( Zބ2 S/ar?bW(@VNV]eC &0$esm8)PEDFw9&@_7ӿ̋c4 ~ $ld?ҎRa,\4Mc֭m>fi1g4cv}{Dܲ:e ",I2vJNoRt0doÿwiZ bΒ fQ,i&*b'I/iƞZP&&矨ǬYfϞ ir\qq1N8r(eZʰX," K+d$dXYov çлwdDYo){ Oڱ͹h'Gxx8(L>]~ qYfIQ6Cʱ(KLzVaˤ'H8MzIIث5Eo>9so̙`DŽ 22-\͙3N½{pI,YDy;N:s*oũSph":u Ω#i$c'BےԂ6"Vл?bΒr7etIF 77!Ffc/\{Ⳛ={6 <s=bDDD@WWG.vލ;vܹAAA8q",X+++ .B j h0INV cgQEO@\p9]у!,i""v k]!coneeÇ+oׯqE\|kb̘1믱rJW\# EUU`ȑ >O" fH0fH9Ţ=<:$Њ_7ѻzh6Aa$%@^]"Cr9~̙p8eXjX,o߾gΜ3CCCq1*@.iɼʲ1vR>\Y[x=ZAϴ !I/Iˋ< ׄb֬Yx7P(0{l444?hyNNNJxWO*bСӧO믿Fhh(rssiQQQxW(t=T(Ĕt> $$Ej{@S1<(c'ʳҌ\> ;߿}FT=Giw ROw $$$QPP#F %%W\L&ŋѿŋm%I+F0fHMi͢%N5OF$ʥ2v(HH+j(fկ[W~l޼sABBBWWW,_--O>0"??yyyJ( cƌAHH֮]Ĝ1RiM(0 Q* ˭^ՓDD$EYzIcf'2x0o<ܿΝk9111`X7n\CCC!|rmgΜf͚+W~zzz_|^wBYb͐WPRZ^S2@݅B f IrV fuk.p_-w$w$I+:A%_Y\T2-EIXOtZH2KF+ PnHul~$T'8-@Q;I0@xGDBսu?ty͌MX@p\1K.B etMӚNEEBL^> cp8=P ) ( \.RԎijA Kk3,rMCp{g#.r m)h2vT96>&~?d<2-C-Hc'5bvcd`XUa`52;GSS=)rDeΝ;QWW 2-E%-Zkעrjo޼@,3-Q|>^y1-Ee~رi)*sNbܹLKQ:<3hq鍍 )jH$q*͎p d8Cx<^]uu52څf_~(++cZXYYLPwwwdee1-C-CCC0-C- %2TR\6e7*cH-pR[L lvuUU2: %%%LP[[[3-Ce<==3v6 x<,Z<(a" IDATfɴ )(( 2TfZFd2Y &XԲKvgZg!bh{D=ݻGL+\wwwdgg3-Cm|||`iiIT`prrRBP ;;X DRlܕëGݤ^|zR"Ӓڃ(cW(EL]__l@"}̢E(4l6cZdmIjNN Dj+3C|nu&ӚT(c׺eDZQ;)#3X 0eʔjaܹD%;6I{0tPei>mQg;wbqT(cW(ywm`ZGGX[[{7鉜"~cO0aUuWWV;wŴ w%%%ZǮ!Q5l Fo0͝;w8Iej}15(,,dZ#!!.Pe˖D:  /0-SD"ۛi)*SXX;;3n2}Kgk%ɚ>ci}ckkRL:RmfAZZR:1|^$oӊq}}}MHKK;RTF(B&_~x(j^@ːsi;:3n!z>‚!Cvy&2:-VZk7߄99^֭[gZqrrrz~bA5^e>d:|Jmm-  @AK|~]ii)::weZPwww#F 99nn...Xr%243-"//LKQ &c渚EM3 s Ҍ<`'''Ⓕ<==2vCCCLKx{E޼NB'A@@QyYYYD5wٹ[߃ hӜ> گQXX6M,qNQ݂et Q;@fGpܺui]otttl`bw}L2111D-M{)&54ZpWBHRbN{CCCzaaַHsvv&.b@NNQI{.ꘖeDE<Xn͚ < ̭eee]TeggkeKf{gK~~T({w!H2vvv())D5s:D__C AJJ RTFGGAAAbZFL20ȑ#n:"дƵkFTxyyiGEQ033IQ/Cb~dff &R#&&&j}Hp0d1-E- ={6Ο?OET{p\,ZK,@ Vٳ̙3oFHH2ݻ]OXys9\@f4X#'-- [^ טz==#5 88Z= kfeiylx233B\.Gs+f6 !H+++xxx>̍70h 3-E-jkkA\Ğ2|BȌILLl@N5v)ZMSȒ2vccc`oЊd|8c;x"jOzz:޽I&NJk׮aذaS>Ybb"z $QLWٽ{s޽{ˤ;у]*ߺu2uQG:<==ѹsgNRTؿ? ĈWɅ Jb`OHHvw;ڶm T\)lȑHLLDii)jQRR7nNƌC:޼yL 0t'{),--ammM:?d2xyO^+x 4/3ʎ)fxbDGGפs:x,X[ ={#Gd;t|||HgTIJJ x<+"-ܿGWW!C0 m???\p2tJ`ƌػw/$ TVV;w.#7yO  >>'իWg@RRJP Q]g;K.G^^OִiS8::S>K|8\r{A~L: S>Yzz:Ѷm[)US)bIwT;KzL8bLJ?NN&٦O.J%v܉Mbs>B@ll,#N;LZKR$''s0=_M,){<puFFF'Ytuu`D"ΡjZ1sL9… hӦ ZnM:Z^ʘoݻ tKui`Rq#^ݺuëW[)2uT8q+]6e˖!;;ϟ'Cհ'OB,c…2r9N:iӦNgϞAR1ëWʄBaϡ],czzz8p cwsҥ LMMq-)a͚5{_ΝCvv6-[6M:]pppp R-W\aextDP\ 94bcHČ7F fڴi8y$W`bbu!..N#>h#>>W#r9Z/bĈ3z`i`;wIPQZZgϞN!!!tJDPP=GΡ)66W\].\m2v|F7o˽GBj`GEEEԵkפ;bgϞ%RmfÇ^Y[[ȑ#ȠFV#""IIIصk8! ~tJ={Q;]tIP^^~tҘR.^x1SqqqqpqqAq)57oǏqՠr9ߏ|1rIZ"R-7/ITZu\$4fH*++SztG4iڵ͛7IT[@@~WF!1SSSB `׮]sEBD"l۶ Xf I'՘|\zӧO'Rm/^DϞ=_jj*ttt0c M`XQgϞe̽cܹs3Ç׸+V96oL{*++6m`…:tǏG HT[tt469}L&i3BXddtGU 55޽#Rm=߿/_NQ3g:w 6Ѓcꑬ,[ ɓC:F{9޽{ǘ#Z]#vb +G$-=z1z ...sE__FFF8z(5|>v ;;;d JDEEaƌׯT*f㏌aaapssCϞ=ITIJJ ;V,n byiҤIgCt0|p!6g&>}`֭HIIAhh(**$c`˖-xoߎ.]Nhڴ)zM:Ξ=otJEGG q5EV‚a&L`;/uJ%cс֬Y///c|>/[[[XXX IIIرc 3fNرcn >O:"""РANٳg'R4m^|gΟɓq8?,6oؽ{7Zo ,@XXN> 1j2\.DZcpiZ F j۷oǔ)S`eeE:ڔJ%1e)UJ [j&vݻ7J% DB:qB!N8[W^ EHg:R7bĉ~ ?~" 0tJeeeD閚+vJӆvҥ #>A ޽{ڵ+p( F}r.vڡo߾HJJ‰'`ll [[['\ST*{nj K,Ab1gDEE-Z+>|8HTYHH,99yRD&1oҿ󰲲3Ң"tט0a6l؀&MΩSسg OOOR)p`ڴih֬:իWĉ+|wDB@۶mB 3b7yxx4nܘtKx<~cFFFطof cagg[n!""r'GTEEp!p8L:sjUI$Ϙ?Frؼy3|||! \t /_~"JבnibŚ;tЕ;wd֭̋F`Μ9055ŤIH(ܹs]tAs0FMy.]W^9r$IgeaٲeS>[vv1c*g8Di``i``:--̀IVZR̛7tg 󃯯/C:R={.\1L(Aa`vϵ̙3HHH5͑Kf"Repwwd2 9_4R< {Z[[ttt$Re:tE0h F};ҥ VX[˅3 ѣxtttаaC2D"ÇqYDFF isaصkF~Ʈ]k.Ff_?%On b!ڵ;zF-V^b̟gʕ+fv5M(Ν;y&222WWWjՊ1ߧ deeÇHKKC:1g^sjĒ%Kꊙ3gN$:uii`500(rq˖-IT{'O%ObٲeZ0]U#!!x)`ooVZ޾ޜ]TTgϞ!++ Ϟ=@ @۶mѥKt֍1HB 퍉'Ω/_ɓq}F xa`˄ f,_9׊[Xt)T*1k,XXX0j/iT*^|Ǐ#55O<F6m`mm XZZҲ.J$ݻwx-޽{OBV}pttDѬY3ƿ]6o ]]]N1Cn0}t)d֬YӧOQTImhghhe=>@]b֭ppp S#B![xyyaĈs%77?FNNPPPhذ!p```/. JT T D QTTwA$5-7n:ƆQS޽[c1xV^۷o3zyy9RlMHԑ,Sz׌01o<cϞ=sj!BCC1aXXX{qxOZ"#??o߾X,Fii)b1$ɇ_oupr? {Ό5bŋq>|XcJ¦MrJF u8|fJ;Y@o[[sg @J///L:^^^sjLff&M%Km۶s(=|!!!8t| c_/_ƙ3gH|BGGGQyy'=I`^QQ;> ڵk \N:ƴnWƆ G:jԋ/M6iPDؽ{7VZE:哝;wj: >/d2Y7o3QĚ5kx2ҤI4lk׮EΝaddD:>˗/|r\;w&S݋Fa„ S>ԩS+g$R۴i'UϞ1o+W_~AYY5p@L>K.ŻwHPg˱xb{~QQQXx1Ov=U!Rj@˩0`jР޾}[nGsjl6ѭ[7FKQ_㙎UC IDAT/HԸ+WbȐ!ׯOpBAffrn ڶbL&qY)l…suVoI055źu'QǏj*,]T#W_~a;AAAr閺+vhghhѣG\&>u1>|U_kF֭IPشi֯_q'燥KbРAs>YII :u$JrI%m]@!`٭<<<7q)boߞtNhѢZn˗M4!DQz*ك`Ω5 L=::((HvL.%R״y0|3 >\㶬ؓ'O?bȐ!5jJKj9r ضmZhA:ddd`̙|2#)..X"^ _"$$C K0`݋ tIc_I*bӦMݻ9J"`ƌX|9HTKPPT[W]@[CCÇL]رcѲeKL6tJH$XhJJJl2 U'˱b cٲe`'[~=j5oN:Z&JZZpb.8p@A:mۆ3g 99tJp8زe \]]/_N4\zz:Я_?^Z[דNP1hP=U˗h"?~|>N .`ƍ?~>>Zsߔ{rgΜ3g|ؾ};._ SSS9&" ]hF{ٺ2X|>\\\0gx{{keFՅ;sΎ{RXz5j5ѣGܚŋXp!?M,6l*wnOs8G2}޽طo8b]b̘1011!DՁb=z)))?VO*++1~x̙3@NNz)Jv H'tJlUNN#_{ ?FDD맕Lj##$$JZK@$ɓضm<<<կBJR̘1ԩSI|)SrssJe,f:tȢgϞ[>R?̰d9"44=رcOT"..ڵ+f̘+++YDj,Xعs'v9̙3H$jz? S\.tgD:t(0qD9BZZl@???xxxP* 8q5jQWuVdff"""L~ =QEEE_{#z)eX,^^^ffѿhРZjE:8KKK 6  CLL |>4iB$"""pEDFFАtg[`8##\.E? F۷'2220rHՕtN _~%zM|=T*qe:u 7ƤIF:^qy4i҄tgKLL_]"$S_џXU7uۮ]f ݺu ӧOǞ={l~þ}/Ъy볲2\p.\=&O &o][1k,?~NNNs>T*`,s{3z)~H$#x|8ӯ_?Azz|JE:?,Y7|1?eكCa޽hذ!F(**BLL !.]g)++ z*4h!C`GySL ܟmٲE{+5&zZs8/]ӤWBBB={̌t#66׮]B.]鉶mےNJ%Yڹs'֭[gƆtΝ;HLLDRR,,,бcGM6aȿDFF#􄵵5DF{ MŋcȑsjT@@8&&P(#4t\.7رc&vyhh(9;v֖tFP*HOOǽ{p=lmmѴiSڢYfhڴizQR!//_ׯqر#:t:0J}c̙3Vˆ#HԨwޡ[nbPt/jx^^^_߿GEEEaŊFvHh>_AT*! PQQP"ݻw~_RR ١e˖hٲ%мysp8P{-Zx{{ΩQj#G>zhD"YJ`tƍMGq˗/# 7n $QPP+??(,,Dyy9***PQQ@afCWWl6j Jr$ |>all XZZ666Eϰ'֭[Xj߯1;پ}AAAO %Ҹ!D3K|a-HԸwbҤIXd zE:jD\.{Z 6/===Xll,BBBpQciii:thD"qEU7 5?~~~EWjwƥKpQ}Zc7Zf4###Y*.$ݢ)`y2P˖-„-ԩN( &;w>Z +CHh z{T*wccc}Gִ@GG^^^x;w..bU1g]V}سg_bq_/Hh:k+k<5;gφ.I'Q#T*߿{AXXF}"0daiiLq{4 HTޖH$] 8PsNHӦM1dڵ^:PVV~ o߾ExxƟn7qDrJ-ceB/&&#G4z&Mhڴ)ƍLI=<<|???4k Z13337߈%`С^R*{kIXl6>>>ܹs!)d2l۶ GPP&M]][ F.Ν 6My4Rāyf,]%U'J%ƍ'|yX,t6\7J Ck:v숡CbΝ+HgQTF@@D"?wwwIujܹ[n= @SZ3P!\.JMMoffsrrҚ"&&&3f ˱h"(J8::{FJطo6n܈3f`cMppرcBaob=چvD ۷6lرL6cذa8y$ߏVZƆtEU۷1{lڵ+:* }+(%ݣ{}h2zhK 055%DQUVXXM6ٳg }ׯ/ŝVZ9Dbsj1$ 4 ŗ_~_jV~+(Q8~8ƌ;͛Z;ԏ=\~}X,:ԉ+ő޽{_|At̟?bpuu%DQ %6n;;;IDFF.\X&A`%ùqAΜ95k֠e˖5kZhA:S˖-CI'2HPtW\.#G ?d_uV'OFÆ IgQZ;v1w\|ZsܿĂ *$I7i{?{]X/y&1ydܽ{Ş={ HHQZB("$$cǎ1~xgΜٳ!Hzz뷎mڴ cǎ%R/bݺuHHHF CCCY'p) 0 ,%z!&&ӦM*;tnΝ;  @xqM|W3f 8vN>Aa֬Yh޼9z#""BhѢJX t`gs#00_'Kŋ5jƎK߁GAtt4F~{OL,w}Pޢ9p܄ŋ}w}sob۶mưaW_ښt999@LL |}}1}tXYYΪw6m$۽{wH$t`gf<δi,~'8S`׮]|}}ѩS'YT=Vp<~cǎԩSannN:QXlɓBawH7QvxǎxժUc+H8p, _}C:"H$!::x4iN^Jq\\3P @&L7lyf.=c߾}x /6e^~Ƣ{4i<<y߾}<G{58SN>>>iJ\x111χ&L@?UAYYƍ'Ȉ H7QUG;\/666"## Q(tq >>>pwwg3Rݻwqyܽ{^^^󃗗/_b²Cbx6&re܎;ab>}(,,Đ!Cзo_nݚtUEj?f͚a̘16lI1Jbb"EGRtU=tky Ր?* ^^^ݻ7:vHW{RDRRnܸׯ>>>/qIŋEdk{@p+f2={6}3}hvvvh޼9Zl-ZI& x9^x/_˗FFо}CcǎrFii)&O,LNN~& }njڃchhx ۴iCGkD"dee!##x)233QTTVVV'  >|۷xj' IDAT- FuhӦ ڴi֭[ޞNPrr2E"hX, tU{`>gw`` ^H$z o޼Ann7o //޽χ LLL`ddp8``{6 }}}j|) BDyy9!PVVkkk4nhܸ_~ߴiSг꓃*W^-J%C>:صS{waAAA\6* %%%(--EYYهR~L&L&RZ0K9 O C^2Lvɓ}Y:ubzTr6m͟?_TZZ\._ @I[8 Ola޽M(eff<~ H7Qd;r|qq,,,nǎ>bZݻw+O....#Jgȡ?93NNNonheeEI& ?!FxI">J}@ íݻw?tEQɓ^z?~J u;ox<^T׮] mllHP{̙#HMM#<&D/;or}tinnD2[]TCWTU0KK۶m㻺(q̚5KPQQqW | tUN}*?.sذa˗/)aɒ%+WbwΑn?z)Ti bwvv;}6jH]v"Eհ0ŋ{bi(f?щoӦM bG᧟~|s@08N}.Śf:ةh's^vAHPT˗ e2m@0@&&JsNն~|>eˌvJvVZUZ L@S(E;UX| 6Xx_|AjJ~|@Y'ݩZF;E|>?zɒ%|п)JX~ 8]?I)|-Y?tP )Q(PRizEEHwQڇv666ޠ0eθqtH7Q*,,ÇTʅnT}CUO:۶m[M?sNKXl6;B(H'EQtS46кuk~h2=E\.Gtt4BCC+srrdJtEG;UibbbO2`񺦦(-R\\8 ZQQy*i?`.ѣߟ߻wo-k peU޻wOf OHQԿb"&&&?(Vcƌa{TMx;&~ZyyvQ(*`^__;]]ﭭ| ԨQ,sss] 22RyaQYYH&V("FQvJSJ!]vWF022"FCeeetNW^6ѣ,--IQ[nʕ+7n蔫 B<8xt#EB;EVMLLF 777]OOOCmۖ^#rO$%[LQF;E.`jjV;D"[caa!mҤy͛77 X,T*\ylqvv,''UXXёs7Rx z9jE)hf|~ͥRi#Tjre 333NÆ u6lojj SSSf˯l6PՐd~&!PVV᫨HV\\,+,,TKKKYz"HTx)*^^$(-D;E_,4KOO!˵ӳ1WF* RjRJJSTzjVuX,b)X,BWWW`XrbIuttjH&y*@|=((jwVIENDB`rst2pdf-0.93/rst2pdf/tests/input/images/demo.pdf0000664000175000017500000037253611345461420021470 0ustar ralsinaralsina%PDF-1.3 % ReportLab Generated PDF document http://www.reportlab.com % 'BasicFonts': class PDFDictionary 1 0 obj % The standard fonts dictionary << /F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 6 0 R /F5 73 0 R /F6 74 0 R >> endobj % 'F1': class PDFType1Font 2 0 obj % Font Helvetica << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> endobj % 'F2': class PDFType1Font 3 0 obj % Font Helvetica-Bold << /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font >> endobj % 'F3': class PDFType1Font 4 0 obj % Font Times-Roman << /BaseFont /Times-Roman /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER1': class PDFDictionary 5 0 obj << /A << /S /URI /Type /Action /URI (mailto:goodger@python.org) >> /Border [ 0 0 0 ] /Rect [ 153.7323 662.5936 526.5827 674.5936 ] /Subtype /Link /Type /Annot >> endobj % 'F4': class PDFType1Font 6 0 obj % Font Helvetica-BoldOblique << /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> endobj % 'Page1': class PDFPage 7 0 obj % Page dictionary << /Annots [ 5 0 R ] /Contents 181 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER2': class LinkAnnotation 8 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 72 0 R /XYZ 62.69291 150.0236 0 ] /Rect [ 62.69291 726.5936 171.0629 738.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER3': class LinkAnnotation 9 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 72 0 R /XYZ 62.69291 150.0236 0 ] /Rect [ 527.0227 726.5936 532.5827 738.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER4': class LinkAnnotation 10 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 72 0 R /XYZ 62.69291 117.0236 0 ] /Rect [ 82.69291 708.5936 159.9529 720.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER5': class LinkAnnotation 11 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 72 0 R /XYZ 62.69291 117.0236 0 ] /Rect [ 527.0227 708.5936 532.5827 720.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER6': class LinkAnnotation 12 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 82.69291 690.5936 153.8329 702.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER7': class LinkAnnotation 13 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 690.5936 532.5827 702.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER8': class LinkAnnotation 14 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 670.6772 0 ] /Rect [ 62.69291 672.5936 148.8329 684.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER9': class LinkAnnotation 15 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 670.6772 0 ] /Rect [ 527.0227 672.5936 532.5827 684.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER10': class LinkAnnotation 16 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 637.6772 0 ] /Rect [ 82.69291 654.5936 156.6229 666.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER11': class LinkAnnotation 17 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 637.6772 0 ] /Rect [ 527.0227 654.5936 532.5827 666.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER12': class LinkAnnotation 18 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 589.6772 0 ] /Rect [ 102.6929 636.5936 193.2929 648.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER13': class LinkAnnotation 19 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 589.6772 0 ] /Rect [ 527.0227 636.5936 532.5827 648.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER14': class LinkAnnotation 20 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 334.6772 0 ] /Rect [ 82.69291 618.5936 153.2829 630.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER15': class LinkAnnotation 21 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 334.6772 0 ] /Rect [ 527.0227 618.5936 532.5827 630.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER16': class LinkAnnotation 22 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 82.69291 600.5936 182.7429 612.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER17': class LinkAnnotation 23 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 600.5936 532.5827 612.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER18': class LinkAnnotation 24 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 447.0236 0 ] /Rect [ 82.69291 582.5936 169.9529 594.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER19': class LinkAnnotation 25 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 447.0236 0 ] /Rect [ 527.0227 582.5936 532.5827 594.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER20': class LinkAnnotation 26 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 319.0236 0 ] /Rect [ 82.69291 564.5936 149.9429 576.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER21': class LinkAnnotation 27 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 319.0236 0 ] /Rect [ 527.0227 564.5936 532.5827 576.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER22': class LinkAnnotation 28 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 205.0236 0 ] /Rect [ 82.69291 546.5936 157.7329 558.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER23': class LinkAnnotation 29 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 90 0 R /XYZ 62.69291 205.0236 0 ] /Rect [ 527.0227 546.5936 532.5827 558.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER24': class LinkAnnotation 30 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 91 0 R /XYZ 62.69291 629.2236 0 ] /Rect [ 82.69291 528.5936 164.3929 540.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER25': class LinkAnnotation 31 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 91 0 R /XYZ 62.69291 629.2236 0 ] /Rect [ 527.0227 528.5936 532.5827 540.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER26': class LinkAnnotation 32 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 91 0 R /XYZ 62.69291 422.8236 0 ] /Rect [ 82.69291 510.5936 156.0629 522.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER27': class LinkAnnotation 33 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 91 0 R /XYZ 62.69291 422.8236 0 ] /Rect [ 527.0227 510.5936 532.5827 522.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER28': class LinkAnnotation 34 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 82.69291 492.5936 164.4029 504.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER29': class LinkAnnotation 35 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 492.5936 532.5827 504.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER30': class LinkAnnotation 36 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 651.0236 0 ] /Rect [ 82.69291 474.5936 176.6229 486.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER31': class LinkAnnotation 37 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 651.0236 0 ] /Rect [ 527.0227 474.5936 532.5827 486.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER32': class LinkAnnotation 38 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 551.8236 0 ] /Rect [ 82.69291 456.5936 140.5029 468.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER33': class LinkAnnotation 39 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 551.8236 0 ] /Rect [ 527.0227 456.5936 532.5827 468.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER34': class LinkAnnotation 40 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 233.8236 0 ] /Rect [ 82.69291 438.5936 154.9629 450.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER35': class LinkAnnotation 41 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 233.8236 0 ] /Rect [ 527.0227 438.5936 532.5827 450.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER36': class LinkAnnotation 42 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 203.8236 0 ] /Rect [ 82.69291 420.5936 149.3929 432.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER37': class LinkAnnotation 43 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 203.8236 0 ] /Rect [ 527.0227 420.5936 532.5827 432.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER38': class LinkAnnotation 44 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 155.8236 0 ] /Rect [ 82.69291 402.5936 144.3929 414.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER39': class LinkAnnotation 45 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 155.8236 0 ] /Rect [ 527.0227 402.5936 532.5827 414.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER40': class LinkAnnotation 46 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 705.0236 0 ] /Rect [ 102.6929 384.5936 246.6429 396.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER41': class LinkAnnotation 47 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 705.0236 0 ] /Rect [ 527.0227 384.5936 532.5827 396.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER42': class LinkAnnotation 48 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 648.0236 0 ] /Rect [ 102.6929 366.5936 246.6429 378.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER43': class LinkAnnotation 49 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 648.0236 0 ] /Rect [ 527.0227 366.5936 532.5827 378.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER44': class LinkAnnotation 50 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 591.0236 0 ] /Rect [ 82.69291 348.5936 154.3829 360.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER45': class LinkAnnotation 51 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 591.0236 0 ] /Rect [ 527.0227 348.5936 532.5827 360.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER46': class LinkAnnotation 52 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 399.0236 0 ] /Rect [ 102.6929 330.5936 210.5229 342.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER47': class LinkAnnotation 53 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 399.0236 0 ] /Rect [ 527.0227 330.5936 532.5827 342.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER48': class LinkAnnotation 54 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 342.0236 0 ] /Rect [ 102.6929 312.5936 171.6229 324.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER49': class LinkAnnotation 55 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 342.0236 0 ] /Rect [ 527.0227 312.5936 532.5827 324.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER50': class LinkAnnotation 56 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 159.3036 0 ] /Rect [ 102.6929 294.5936 193.8529 306.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER51': class LinkAnnotation 57 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 159.3036 0 ] /Rect [ 527.0227 294.5936 532.5827 306.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER52': class LinkAnnotation 58 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 498.0236 0 ] /Rect [ 102.6929 276.5936 272.2129 288.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER53': class LinkAnnotation 59 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 498.0236 0 ] /Rect [ 527.0227 276.5936 532.5827 288.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER54': class LinkAnnotation 60 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 274.6236 0 ] /Rect [ 102.6929 258.5936 214.9829 270.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER55': class LinkAnnotation 61 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 274.6236 0 ] /Rect [ 527.0227 258.5936 532.5827 270.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER56': class LinkAnnotation 62 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 247.6236 0 ] /Rect [ 102.6929 240.5936 219.9729 252.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER57': class LinkAnnotation 63 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 247.6236 0 ] /Rect [ 527.0227 240.5936 532.5827 252.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER58': class LinkAnnotation 64 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 202.6236 0 ] /Rect [ 102.6929 222.5936 237.2129 234.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER59': class LinkAnnotation 65 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 202.6236 0 ] /Rect [ 527.0227 222.5936 532.5827 234.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER60': class LinkAnnotation 66 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 62.69291 741.0236 0 ] /Rect [ 82.69291 204.5936 212.2029 216.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER61': class LinkAnnotation 67 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 62.69291 741.0236 0 ] /Rect [ 521.4627 204.5936 532.5827 216.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER62': class LinkAnnotation 68 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 62.69291 675.0236 0 ] /Rect [ 82.69291 186.5936 158.8329 198.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER63': class LinkAnnotation 69 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 62.69291 675.0236 0 ] /Rect [ 521.4627 186.5936 532.5827 198.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER64': class LinkAnnotation 70 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 62.69291 609.0236 0 ] /Rect [ 62.69291 168.5936 146.6029 180.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER65': class LinkAnnotation 71 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 62.69291 609.0236 0 ] /Rect [ 521.4627 168.5936 532.5827 180.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Page2': class PDFPage 72 0 obj % Page dictionary << /Annots [ 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R ] /Contents 182 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'F5': class PDFType1Font 73 0 obj % Font Helvetica-Oblique << /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> endobj % 'F6': class PDFType1Font 74 0 obj % Font Courier << /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER66': class PDFDictionary 75 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org) >> /Border [ 0 0 0 ] /Rect [ 233.4736 548.2472 330.1836 560.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER67': class PDFDictionary 76 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org/) >> /Border [ 0 0 0 ] /Rect [ 442.9442 548.2472 474.0742 560.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER68': class LinkAnnotation 77 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 303.8043 0 ] /Rect [ 481.6545 548.2472 486.1025 560.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER69': class LinkAnnotation 78 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 136.6436 0 ] /Rect [ 147.4589 536.2472 185.2489 548.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER70': class PDFDictionary 79 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org) >> /Border [ 0 0 0 ] /Rect [ 404.3747 536.2472 483.3567 548.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER71': class LinkAnnotation 80 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 453.8043 0 ] /Rect [ 207.3064 524.2472 211.7544 536.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER72': class LinkAnnotation 81 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 387.8043 0 ] /Rect [ 343.0478 524.2472 347.4958 536.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER73': class LinkAnnotation 82 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 423.8043 0 ] /Rect [ 459.3392 524.2472 463.7872 536.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER74': class LinkAnnotation 83 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 375.8043 0 ] /Rect [ 523.3607 524.2472 526.4727 536.2472 ] /Subtype /Link /Type /Annot >> endobj % 'FormXob.c8d097da4771654d12a9611e9af76669': class PDFImageXObject 84 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 16 /Length 99 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 16 >> stream Gatmt9+h4I#XZ*%V/<(u@uBmr=V8?K0\Z^q/;*/(FTbVb3Ll+WIX_`d$OKqrhCOVS4K[m&h"\hN?W/1;46b`nm1lVendstream endobj % 'Annot.NUMBER75': class LinkAnnotation 85 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 327.8043 0 ] /Rect [ 156.3279 512.2472 194.6779 524.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER76': class LinkAnnotation 86 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 163.0536 0 ] /Rect [ 495.9027 512.2472 528.2802 524.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER77': class PDFDictionary 87 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org/dev/peps/pep-0287) >> /Border [ 0 0 0 ] /Rect [ 111.268 446.2472 150.9631 458.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER78': class PDFDictionary 88 0 obj << /A << /S /URI /Type /Action /URI (http://www.faqs.org/rfcs/rfc2822.html) >> /Border [ 0 0 0 ] /Rect [ 246.3336 446.2472 292.1287 458.2472 ] /Subtype /Link /Type /Annot >> endobj % 'Page3': class PDFPage 89 0 obj % Page dictionary << /Annots [ 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 85 0 R 86 0 R 87 0 R 88 0 R ] /Contents 183 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.c8d097da4771654d12a9611e9af76669 84 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page4': class PDFPage 90 0 obj % Page dictionary << /Contents 184 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page5': class PDFPage 91 0 obj % Page dictionary << /Contents 185 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER79': class LinkAnnotation 92 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 327.8043 0 ] /Rect [ 210.7929 171.3936 249.1429 183.3936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER80': class LinkAnnotation 93 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 595.7022 0 ] /Rect [ 508.6827 123.3936 530.4777 135.3936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER81': class LinkAnnotation 94 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 595.7022 0 ] /Rect [ 62.69291 111.3936 96.03291 123.3936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER82': class LinkAnnotation 95 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 353.1429 525.4972 0 ] /Rect [ 134.3929 111.3936 237.2129 123.3936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER83': class LinkAnnotation 96 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 163.0536 0 ] /Rect [ 352.9003 93.39362 386.8003 105.3936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER84': class LinkAnnotation 97 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 679.1122 0 ] /Rect [ 509.7927 93.39362 531.0739 105.3936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER85': class LinkAnnotation 98 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 62.69291 679.1122 0 ] /Rect [ 62.69291 81.39362 104.3729 93.39362 ] /Subtype /Link /Type /Annot >> endobj % 'Page6': class PDFPage 99 0 obj % Page dictionary << /Annots [ 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R ] /Contents 186 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER86': class PDFDictionary 100 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org/) >> /Border [ 0 0 0 ] /Rect [ 350.8129 756.5936 381.9429 768.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER87': class LinkAnnotation 101 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 303.8043 0 ] /Rect [ 384.7229 756.5936 389.1709 768.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER88': class LinkAnnotation 102 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 163.0536 0 ] /Rect [ 271.6729 738.5936 323.3629 750.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER89': class LinkAnnotation 103 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 62.69291 163.0536 0 ] /Rect [ 417.2929 738.5936 453.9729 750.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER90': class LinkAnnotation 104 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 399.0236 0 ] /Rect [ 62.69291 555.5936 175.5129 567.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER91': class LinkAnnotation 105 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 399.0236 0 ] /Rect [ 527.0227 555.5936 532.5827 567.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER92': class LinkAnnotation 106 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 342.0236 0 ] /Rect [ 62.69291 537.5936 133.2929 549.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER93': class LinkAnnotation 107 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 342.0236 0 ] /Rect [ 527.0227 537.5936 532.5827 549.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER94': class LinkAnnotation 108 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 159.3036 0 ] /Rect [ 62.69291 519.5936 159.9429 531.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER95': class LinkAnnotation 109 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 159.3036 0 ] /Rect [ 527.0227 519.5936 532.5827 531.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER96': class LinkAnnotation 110 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 498.0236 0 ] /Rect [ 62.69291 501.5936 242.2129 513.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER97': class LinkAnnotation 111 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 498.0236 0 ] /Rect [ 527.0227 501.5936 532.5827 513.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER98': class LinkAnnotation 112 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 274.6236 0 ] /Rect [ 62.69291 483.5936 180.5029 495.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER99': class LinkAnnotation 113 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 274.6236 0 ] /Rect [ 527.0227 483.5936 532.5827 495.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER100': class LinkAnnotation 114 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 247.6236 0 ] /Rect [ 62.69291 465.5936 184.4129 477.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER101': class LinkAnnotation 115 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 247.6236 0 ] /Rect [ 527.0227 465.5936 532.5827 477.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER102': class LinkAnnotation 116 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 202.6236 0 ] /Rect [ 62.69291 447.5936 203.8429 459.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER103': class LinkAnnotation 117 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 62.69291 202.6236 0 ] /Rect [ 527.0227 447.5936 532.5827 459.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER104': class PDFDictionary 118 0 obj << /A << /S /URI /Type /Action /URI (http://docutils.sourceforge.net/docs/ref/rst/directives.html) >> /Border [ 0 0 0 ] /Rect [ 62.69291 414.5936 312.7929 426.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER105': class LinkAnnotation 119 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 62.69291 439.8436 0 ] /Rect [ 491.4527 369.5936 529.2527 381.5936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER106': class LinkAnnotation 120 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 72 0 R /XYZ 62.69291 773.4586 0 ] /Rect [ 312.8329 357.5936 386.2129 369.5936 ] /Subtype /Link /Type /Annot >> endobj % 'FormXob.3214b96a331e44bc5d44c2adc18563e6': class PDFImageXObject 121 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 49 /Length 2432 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 516 >> stream Gb"/$96/iB%.!jFSM&X\F=un\Z`hs4['#*[pTt4(jnN/+7-WD1u9(irX`TZG[kGP%C;hI!<-TpT6'^)^jS7-'D.X\EJRtBOlX3hr>a%Ac9ou`5^uAN\7#/goN==#'P\):60NfM&j"a6F+9@9@6DYB%_cGo5780D\bq[RRKT8#.N.Jd9D#k*V)pAX5_^,)CBg!Pq\=R-L4-RZmJHj`P6c$/=A0fqE/o+ot%`^^5UEh$RpK#'CiNfM&ih?)!)P#9`gKS!>O5L)WTU_%l?OA_ds&;fn=^kU.-GF2s:gZth6:JKT%BeB7Ud-Y8R!M+2k`$OWI\RtJr@+Jf/eHVsiZ"K,j362hJTZ%Hnh\KHU:i-l[O[U!L4]EO90W.A:.&RDXk+)'W4"1Q2dD^^X3PMh,`l4b0i[TMWh#VQ2u9GtPbaY"e'-Q=i\%IYRcaWW/[HJl0o>.?"S.%N9Yf7R]RJhoj+B]bP4(dSa&S61"qU%RkFf_&TZ&>F>1cAq)=$uYhu+CTob,`l$Re[&FO-cAPi+tp\DS7(!?WJdW-K+^YIPTk!7,b]p8j1"`*CnM6KkMX,@+6.D$J9VfR?>qgAR0"P*l__&-6E1E0OJiH10jL/Za%4"i9lZGH?[E8:#b8e`ou2HB%N\YOPFo%dJ0I%!m]k'VmTkp5?+f,F*ZYieu]F*o>059\@It&%JoTLDSli(/;MM/7hPQWtE7mIn@auA%$MOCV"X2kTYj0T+ADg@Zq!`$l<'_Rl[EqmPY_kfqB+_&UKj`K'1uQun>Wb0V79TsaB;."r,$#kFI=j=pRLeML2-0X)8ZXTI>r-(7JkV1qN6]/L'hI(R7I7Yj`@[Zd9J%+Uema]2&4,l;f&9M@peBTm?.K0%bkG_IpnpYUm'C)E`8VMG!)+e0]TGFfUT-7>Zu2co`o_[%]1QY^)R+N4X%OD:LOLM2Gu)Zk.u;6uCA-"TMlMA?,=';>!3%!l:]"&=af(`X33SC_7MpFS^N9n[gIsg;A3q"W>c%UUe9bTQ#TYa4)TgUYBMkSZpe.(6YE,Ol,0NJQ]TBB:"%M@2aspQ8EJYM_/RT!prS[IK,(`r'J6s\V.:0,4&VG!BCY8+Pn[OMA@t[?%SR$\#I87'^[;qEbFO#TrkT.mEe2Ql3P[i5m#ph>g`t?m\-@?bH9\nZ;]\,9-P@cgj8N(`->"^CJj-fL?dL(lr&XGh(M;k=;/QXMJ"7?1PO?J(B%E>qi^h7/NP_YN`&A"\!i!MoR==f_,E4I9@UH>H=TK*TQ4ZE\@Y1pT)U"tqZSPBff&ZH?AGRB.UDCfQj;$!)uU4dWSMKVu3+W`0I[<,(UfdeYRB/&Z15=,*\70]!k\dU6gM**9"iQ+-RLt,3g/)b8;C^gCUJF0<9o>W&eGX/@'V"X:f?ZIW/,oE^N@h`SUW=1$lU7;b4P.Jendstream endobj % 'Page7': class PDFPage 122 0 obj % Page dictionary << /Annots [ 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R ] /Contents 187 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.3214b96a331e44bc5d44c2adc18563e6 121 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page8': class PDFPage 123 0 obj % Page dictionary << /Contents 188 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER107': class PDFDictionary 124 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org/) >> /Border [ 0 0 0 ] /Rect [ 156.6129 218.1936 306.7129 230.1936 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER108': class LinkAnnotation 125 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 303.8043 0 ] /Rect [ 309.4929 218.1936 313.9409 230.1936 ] /Subtype /Link /Type /Annot >> endobj % 'Page9': class PDFPage 126 0 obj % Page dictionary << /Annots [ 124 0 R 125 0 R ] /Contents 189 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER109': class LinkAnnotation 127 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 206.6329 537.4972 0 ] /Rect [ 77.58291 440.5543 83.14291 452.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER110': class LinkAnnotation 128 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 384.9423 423.8043 0 ] /Rect [ 88.70291 440.5543 94.26291 452.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER111': class LinkAnnotation 129 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 457.3189 537.4972 0 ] /Rect [ 77.58291 410.5543 83.14291 422.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER112': class LinkAnnotation 130 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 319.3823 399.8043 0 ] /Rect [ 88.70291 410.5543 94.26291 422.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER113': class LinkAnnotation 131 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 453.8043 0 ] /Rect [ 406.3039 410.5543 410.7519 422.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER114': class LinkAnnotation 132 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 423.8043 0 ] /Rect [ 319.3823 386.5543 323.8303 398.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER115': class LinkAnnotation 133 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 153.7323 423.8043 0 ] /Rect [ 462.2203 386.5543 483.3403 398.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER116': class LinkAnnotation 134 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 341.7009 537.4972 0 ] /Rect [ 68.69291 374.5543 74.25291 386.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER117': class LinkAnnotation 135 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 520.6669 537.4972 0 ] /Rect [ 68.69291 362.5543 72.58291 374.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER118': class LinkAnnotation 136 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 68.69291 351.8043 0 ] /Rect [ 217.1123 350.5543 221.5603 362.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER119': class LinkAnnotation 137 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 144 0 R /XYZ 217.1123 363.8043 0 ] /Rect [ 68.69291 338.5543 74.25291 350.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER120': class LinkAnnotation 138 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 150.5029 525.4972 0 ] /Rect [ 110.3729 314.5543 115.9329 326.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER121': class LinkAnnotation 139 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 99 0 R /XYZ 208.0129 184.6436 0 ] /Rect [ 121.4929 314.5543 127.0529 326.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER122': class LinkAnnotation 140 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 89 0 R /XYZ 448.0529 561.4972 0 ] /Rect [ 77.58291 290.5543 83.14291 302.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER123': class LinkAnnotation 141 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 122 0 R /XYZ 384.7229 769.8436 0 ] /Rect [ 88.70291 290.5543 94.26291 302.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER124': class LinkAnnotation 142 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 126 0 R /XYZ 309.4929 231.4436 0 ] /Rect [ 99.82291 290.5543 105.3829 302.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER125': class PDFDictionary 143 0 obj << /A << /S /URI /Type /Action /URI (http://www.python.org/) >> /Border [ 0 0 0 ] /Rect [ 153.7323 290.5543 253.2223 302.5543 ] /Subtype /Link /Type /Annot >> endobj % 'Page10': class PDFPage 144 0 obj % Page dictionary << /Annots [ 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R ] /Contents 190 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 180 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.c8d097da4771654d12a9611e9af76669 84 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'R145': class PDFCatalog 145 0 obj % Document Root << /Outlines 147 0 R /PageLabels 191 0 R /PageMode /UseNone /Pages 180 0 R /Type /Catalog >> endobj % 'R146': class PDFInfo 146 0 obj << /Author (David Goodger; Me; Myself; I) /CreationDate (D:20100309115851+03'00') /Keywords () /Producer (ReportLab http://www.reportlab.com) /Subject (\(unspecified\)) /Title (reStructuredText Demonstration) >> endobj % 'R147': class PDFOutlines 147 0 obj << /Count 37 /First 148 0 R /Last 179 0 R /Type /Outlines >> endobj % 'Outline.0': class OutlineEntryObject 148 0 obj << /Count 2 /Dest [ 72 0 R /XYZ 62.69291 150.0236 0 ] /First 149 0 R /Last 150 0 R /Next 151 0 R /Parent 147 0 R /Title (\376\377\0001\000\240\000\240\000\240\000S\000t\000r\000u\000c\000t\000u\000r\000a\000l\000 \000E\000l\000e\000m\000e\000n\000t\000s) >> endobj % 'Outline.33.0': class OutlineEntryObject 149 0 obj << /Dest [ 72 0 R /XYZ 62.69291 117.0236 0 ] /Next 150 0 R /Parent 148 0 R /Title (\376\377\0001\000.\0001\000\240\000\240\000\240\000S\000e\000c\000t\000i\000o\000n\000 \000T\000i\000t\000l\000e) >> endobj % 'Outline.33.1': class OutlineEntryObject 150 0 obj << /Dest [ 89 0 R /XYZ 62.69291 765.0236 0 ] /Parent 148 0 R /Prev 149 0 R /Title (\376\377\0001\000.\0002\000\240\000\240\000\240\000T\000r\000a\000n\000s\000i\000t\000i\000o\000n\000s) >> endobj % 'Outline.1': class OutlineEntryObject 151 0 obj << /Count 27 /Dest [ 89 0 R /XYZ 62.69291 670.6772 0 ] /First 152 0 R /Last 178 0 R /Next 179 0 R /Parent 147 0 R /Prev 148 0 R /Title (\376\377\0002\000\240\000\240\000\240\000B\000o\000d\000y\000 \000E\000l\000e\000m\000e\000n\000t\000s) >> endobj % 'Outline.34.0': class OutlineEntryObject 152 0 obj << /Count 1 /Dest [ 89 0 R /XYZ 62.69291 637.6772 0 ] /First 153 0 R /Last 153 0 R /Next 154 0 R /Parent 151 0 R /Title (\376\377\0002\000.\0001\000\240\000\240\000\240\000P\000a\000r\000a\000g\000r\000a\000p\000h\000s) >> endobj % 'Outline.35.0': class OutlineEntryObject 153 0 obj << /Dest [ 89 0 R /XYZ 62.69291 589.6772 0 ] /Parent 152 0 R /Title (\376\377\0002\000.\0001\000.\0001\000\240\000\240\000\240\000I\000n\000l\000i\000n\000e\000 \000M\000a\000r\000k\000u\000p) >> endobj % 'Outline.34.1': class OutlineEntryObject 154 0 obj << /Dest [ 89 0 R /XYZ 62.69291 334.6772 0 ] /Next 155 0 R /Parent 151 0 R /Prev 152 0 R /Title (\376\377\0002\000.\0002\000\240\000\240\000\240\000B\000u\000l\000l\000e\000t\000 \000L\000i\000s\000t\000s) >> endobj % 'Outline.34.2': class OutlineEntryObject 155 0 obj << /Dest [ 90 0 R /XYZ 62.69291 765.0236 0 ] /Next 156 0 R /Parent 151 0 R /Prev 154 0 R /Title (\376\377\0002\000.\0003\000\240\000\240\000\240\000E\000n\000u\000m\000e\000r\000a\000t\000e\000d\000 \000L\000i\000s\000t\000s) >> endobj % 'Outline.34.3': class OutlineEntryObject 156 0 obj << /Dest [ 90 0 R /XYZ 62.69291 447.0236 0 ] /Next 157 0 R /Parent 151 0 R /Prev 155 0 R /Title (\376\377\0002\000.\0004\000\240\000\240\000\240\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000 \000L\000i\000s\000t\000s) >> endobj % 'Outline.34.4': class OutlineEntryObject 157 0 obj << /Dest [ 90 0 R /XYZ 62.69291 319.0236 0 ] /Next 158 0 R /Parent 151 0 R /Prev 156 0 R /Title (\376\377\0002\000.\0005\000\240\000\240\000\240\000F\000i\000e\000l\000d\000 \000L\000i\000s\000t\000s) >> endobj % 'Outline.34.5': class OutlineEntryObject 158 0 obj << /Dest [ 90 0 R /XYZ 62.69291 205.0236 0 ] /Next 159 0 R /Parent 151 0 R /Prev 157 0 R /Title (\376\377\0002\000.\0006\000\240\000\240\000\240\000O\000p\000t\000i\000o\000n\000 \000L\000i\000s\000t\000s) >> endobj % 'Outline.34.6': class OutlineEntryObject 159 0 obj << /Dest [ 91 0 R /XYZ 62.69291 629.2236 0 ] /Next 160 0 R /Parent 151 0 R /Prev 158 0 R /Title (\376\377\0002\000.\0007\000\240\000\240\000\240\000L\000i\000t\000e\000r\000a\000l\000 \000B\000l\000o\000c\000k\000s) >> endobj % 'Outline.34.7': class OutlineEntryObject 160 0 obj << /Dest [ 91 0 R /XYZ 62.69291 422.8236 0 ] /Next 161 0 R /Parent 151 0 R /Prev 159 0 R /Title (\376\377\0002\000.\0008\000\240\000\240\000\240\000L\000i\000n\000e\000 \000B\000l\000o\000c\000k\000s) >> endobj % 'Outline.34.8': class OutlineEntryObject 161 0 obj << /Dest [ 99 0 R /XYZ 62.69291 765.0236 0 ] /Next 162 0 R /Parent 151 0 R /Prev 160 0 R /Title (\376\377\0002\000.\0009\000\240\000\240\000\240\000B\000l\000o\000c\000k\000 \000Q\000u\000o\000t\000e\000s) >> endobj % 'Outline.34.9': class OutlineEntryObject 162 0 obj << /Dest [ 99 0 R /XYZ 62.69291 651.0236 0 ] /Next 163 0 R /Parent 151 0 R /Prev 161 0 R /Title (\376\377\0002\000.\0001\0000\000\240\000\240\000\240\000D\000o\000c\000t\000e\000s\000t\000 \000B\000l\000o\000c\000k\000s) >> endobj % 'Outline.34.10': class OutlineEntryObject 163 0 obj << /Dest [ 99 0 R /XYZ 62.69291 551.8236 0 ] /Next 164 0 R /Parent 151 0 R /Prev 162 0 R /Title (\376\377\0002\000.\0001\0001\000\240\000\240\000\240\000T\000a\000b\000l\000e\000s) >> endobj % 'Outline.34.11': class OutlineEntryObject 164 0 obj << /Dest [ 99 0 R /XYZ 62.69291 233.8236 0 ] /Next 165 0 R /Parent 151 0 R /Prev 163 0 R /Title (\376\377\0002\000.\0001\0002\000\240\000\240\000\240\000F\000o\000o\000t\000n\000o\000t\000e\000s) >> endobj % 'Outline.34.12': class OutlineEntryObject 165 0 obj << /Dest [ 99 0 R /XYZ 62.69291 203.8236 0 ] /Next 166 0 R /Parent 151 0 R /Prev 164 0 R /Title (\376\377\0002\000.\0001\0003\000\240\000\240\000\240\000C\000i\000t\000a\000t\000i\000o\000n\000s) >> endobj % 'Outline.34.13': class OutlineEntryObject 166 0 obj << /Count 2 /Dest [ 99 0 R /XYZ 62.69291 155.8236 0 ] /First 167 0 R /Last 168 0 R /Next 169 0 R /Parent 151 0 R /Prev 165 0 R /Title (\376\377\0002\000.\0001\0004\000\240\000\240\000\240\000T\000a\000r\000g\000e\000t\000s) >> endobj % 'Outline.36.0': class OutlineEntryObject 167 0 obj << /Dest [ 122 0 R /XYZ 62.69291 705.0236 0 ] /Next 168 0 R /Parent 166 0 R /Title (\376\377\0002\000.\0001\0004\000.\0001\000\240\000\240\000\240\000D\000u\000p\000l\000i\000c\000a\000t\000e\000 \000T\000a\000r\000g\000e\000t\000 \000N\000a\000m\000e\000s) >> endobj % 'Outline.36.1': class OutlineEntryObject 168 0 obj << /Dest [ 122 0 R /XYZ 62.69291 648.0236 0 ] /Parent 166 0 R /Prev 167 0 R /Title (\376\377\0002\000.\0001\0004\000.\0002\000\240\000\240\000\240\000D\000u\000p\000l\000i\000c\000a\000t\000e\000 \000T\000a\000r\000g\000e\000t\000 \000N\000a\000m\000e\000s) >> endobj % 'Outline.34.14': class OutlineEntryObject 169 0 obj << /Count 7 /Dest [ 122 0 R /XYZ 62.69291 591.0236 0 ] /First 170 0 R /Last 176 0 R /Next 177 0 R /Parent 151 0 R /Prev 166 0 R /Title (\376\377\0002\000.\0001\0005\000\240\000\240\000\240\000D\000i\000r\000e\000c\000t\000i\000v\000e\000s) >> endobj % 'Outline.37.0': class OutlineEntryObject 170 0 obj << /Dest [ 122 0 R /XYZ 62.69291 399.0236 0 ] /Next 171 0 R /Parent 169 0 R /Title (\376\377\0002\000.\0001\0005\000.\0001\000\240\000\240\000\240\000D\000o\000c\000u\000m\000e\000n\000t\000 \000P\000a\000r\000t\000s) >> endobj % 'Outline.37.1': class OutlineEntryObject 171 0 obj << /Dest [ 122 0 R /XYZ 62.69291 342.0236 0 ] /Next 172 0 R /Parent 169 0 R /Prev 170 0 R /Title (\376\377\0002\000.\0001\0005\000.\0002\000\240\000\240\000\240\000I\000m\000a\000g\000e\000s) >> endobj % 'Outline.37.2': class OutlineEntryObject 172 0 obj << /Dest [ 122 0 R /XYZ 62.69291 159.3036 0 ] /Next 173 0 R /Parent 169 0 R /Prev 171 0 R /Title (\376\377\0002\000.\0001\0005\000.\0003\000\240\000\240\000\240\000A\000d\000m\000o\000n\000i\000t\000i\000o\000n\000s) >> endobj % 'Outline.37.3': class OutlineEntryObject 173 0 obj << /Dest [ 126 0 R /XYZ 62.69291 498.0236 0 ] /Next 174 0 R /Parent 169 0 R /Prev 172 0 R /Title (\376\377\0002\000.\0001\0005\000.\0004\000\240\000\240\000\240\000T\000o\000p\000i\000c\000s\000,\000 \000S\000i\000d\000e\000b\000a\000r\000s\000,\000 \000a\000n\000d\000 \000R\000u\000b\000r\000i\000c\000s) >> endobj % 'Outline.37.4': class OutlineEntryObject 174 0 obj << /Dest [ 126 0 R /XYZ 62.69291 274.6236 0 ] /Next 175 0 R /Parent 169 0 R /Prev 173 0 R /Title (\376\377\0002\000.\0001\0005\000.\0005\000\240\000\240\000\240\000T\000a\000r\000g\000e\000t\000 \000F\000o\000o\000t\000n\000o\000t\000e\000s) >> endobj % 'Outline.37.5': class OutlineEntryObject 175 0 obj << /Dest [ 126 0 R /XYZ 62.69291 247.6236 0 ] /Next 176 0 R /Parent 169 0 R /Prev 174 0 R /Title (\376\377\0002\000.\0001\0005\000.\0006\000\240\000\240\000\240\000R\000e\000p\000l\000a\000c\000e\000m\000e\000n\000t\000 \000T\000e\000x\000t) >> endobj % 'Outline.37.6': class OutlineEntryObject 176 0 obj << /Dest [ 126 0 R /XYZ 62.69291 202.6236 0 ] /Parent 169 0 R /Prev 175 0 R /Title (\376\377\0002\000.\0001\0005\000.\0007\000\240\000\240\000\240\000C\000o\000m\000p\000o\000u\000n\000d\000 \000P\000a\000r\000a\000g\000r\000a\000p\000h) >> endobj % 'Outline.34.15': class OutlineEntryObject 177 0 obj << /Dest [ 144 0 R /XYZ 62.69291 741.0236 0 ] /Next 178 0 R /Parent 151 0 R /Prev 169 0 R /Title (\376\377\0002\000.\0001\0006\000\240\000\240\000\240\000S\000u\000b\000s\000t\000i\000t\000u\000t\000i\000o\000n\000 \000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000s) >> endobj % 'Outline.34.16': class OutlineEntryObject 178 0 obj << /Dest [ 144 0 R /XYZ 62.69291 675.0236 0 ] /Parent 151 0 R /Prev 177 0 R /Title (\376\377\0002\000.\0001\0007\000\240\000\240\000\240\000C\000o\000m\000m\000e\000n\000t\000s) >> endobj % 'Outline.2': class OutlineEntryObject 179 0 obj << /Dest [ 144 0 R /XYZ 62.69291 609.0236 0 ] /Parent 147 0 R /Prev 151 0 R /Title (\376\377\0003\000\240\000\240\000\240\000E\000r\000r\000o\000r\000 \000H\000a\000n\000d\000l\000i\000n\000g) >> endobj % 'R180': class PDFPages 180 0 obj % page tree << /Count 10 /Kids [ 7 0 R 72 0 R 89 0 R 90 0 R 91 0 R 99 0 R 122 0 R 123 0 R 126 0 R 144 0 R ] /Type /Pages >> endobj % 'R181': class PDFStream 181 0 obj % page stream << /Length 5515 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 741.0236 cm q BT 1 0 0 1 0 9.64 Tm 81.03488 0 Td 24 TL /F2 20 Tf 0 0 0 rg (reStructuredText Demonstration) Tj T* -81.03488 0 Td ET Q Q q 1 0 0 1 62.69291 711.0236 cm q BT 1 0 0 1 0 7.23 Tm 122.4149 0 Td 18 TL /F2 15 Tf 0 0 0 rg (Examples of Syntax Constructs) Tj T* -122.4149 0 Td ET Q Q q 1 0 0 1 62.69291 686.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 36.93937 0 Td (Author:) Tj T* -36.93937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (David Goodger) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 671.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 29.69937 0 Td (Address:) Tj T* -29.69937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (123 Example Street Example, EX Canada A1B 2C3) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 656.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 32.48937 0 Td (Contact:) Tj T* -32.48937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (goodger@python.org) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 605.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 31.37937 0 Td (Authors:) Tj T* -31.37937 0 Td ET Q Q q 1 0 0 1 91.03937 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Me) Tj T* ET Q Q q 1 0 0 1 91.03937 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Myself) Tj T* ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (I) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 590.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 8.58937 0 Td (Organization:) Tj T* -8.58937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (humankind) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 575.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 48.03937 0 Td (Date:) Tj T* -48.03937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (2006-05-21) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 560.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 39.14937 0 Td (Status:) Tj T* -39.14937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is a "work in progress") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 545.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 28.02937 0 Td (Revision:) Tj T* -28.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (4564) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 530.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 33.02937 0 Td (Version:) Tj T* -33.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (1) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 479.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 22.48937 0 Td (Copyright:) Tj T* -22.48937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL 1.326693 Tw (This document has been placed in the public domain. You may do with it as you) Tj T* 0 Tw .700036 Tw (wish. You may copy, modify, redistribute, reattribute, sell, buy, rent, lease, destroy,) Tj T* 0 Tw .291569 Tw (or improve it, quote it at length, excerpt, incorporate, collate, fold, staple, or mutilate) Tj T* 0 Tw (it, or do anything else to it that your or anyone else's heart desires.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 464.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 20.24937 0 Td (field name:) Tj T* -20.24937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is a generic bibliographic field.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 431.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 11.90937 0 Td (field name 2:) Tj T* -11.90937 0 Td ET Q Q q 1 0 0 1 91.03937 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Generic bibliographic fields may contain multiple body elements.) Tj T* ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Like this.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 404.0236 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Dedication) Tj T* ET Q Q q 1 0 0 1 62.69291 386.0236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (For Docutils users & co-developers.) Tj T* ET Q Q q 1 0 0 1 62.69291 359.0236 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Abstract) Tj T* ET Q Q q 1 0 0 1 62.69291 329.0236 cm q 0 0 0 rg BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL (This document is a demonstration of the reStructuredText markup language, containing examples of all) Tj T* (basic reStructuredText constructs and many advanced constructs.) Tj T* ET Q Q endstream endobj % 'R182': class PDFStream 182 0 obj % page stream << /Length 8924 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 744.0236 cm q BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Table of Contents) Tj T* ET Q Q q 1 0 0 1 62.69291 162.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 0 561 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (1 Structural Elements) Tj T* ET Q Q q 1 0 0 1 397.8898 561 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 543 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (1.1 Section Title) Tj T* ET Q Q q 1 0 0 1 397.8898 543 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 525 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (1.2 Transitions) Tj T* ET Q Q q 1 0 0 1 397.8898 525 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 507 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2 Body Elements) Tj T* ET Q Q q 1 0 0 1 397.8898 507 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 489 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.1 Paragraphs) Tj T* ET Q Q q 1 0 0 1 397.8898 489 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 471 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.1.1 Inline Markup) Tj T* ET Q Q q 1 0 0 1 397.8898 471 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 453 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.2 Bullet Lists) Tj T* ET Q Q q 1 0 0 1 397.8898 453 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 435 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.3 Enumerated Lists) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.4 Definition Lists) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.5 Field Lists) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.6 Option Lists) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.7 Literal Blocks) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.8 Line Blocks) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.9 Block Quotes) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.10 Doctest Blocks) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.11 Tables) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.12 Footnotes) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.13 Citations) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.14 Targets) Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.14.1 Duplicate Target Names) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.14.2 Duplicate Target Names) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15 Directives) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15.1 Document Parts) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15.2 Images) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15.3 Admonitions) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15.4 Topics, Sidebars, and Rubrics) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15.5 Target Footnotes) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15.6 Replacement Text) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.15.7 Compound Paragraph) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.16 Substitution Definitions) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.17 Comments) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (3 Error Handling) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 62.69291 129.0236 cm q BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (1 Structural Elements) Tj T* ET Q Q q 1 0 0 1 62.69291 99.02362 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (1.1 Section Title) Tj T* ET Q Q q 1 0 0 1 62.69291 81.02362 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (That's it, the text just above this line.) Tj T* ET Q Q endstream endobj % 'R183': class PDFStream 183 0 obj % page stream << /Length 7726 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 747.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (1.2 Transitions) Tj T* ET Q Q q 1 0 0 1 62.69291 729.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Here's a transition:) Tj T* ET Q Q q 1 0 0 1 62.69291 700.6772 cm n 0 14.17323 m 469.8898 14.17323 l S Q q 1 0 0 1 62.69291 682.6772 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (It divides the section.) Tj T* ET Q Q q 1 0 0 1 62.69291 649.6772 cm q BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (2 Body Elements) Tj T* ET Q Q q 1 0 0 1 62.69291 619.6772 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.1 Paragraphs) Tj T* ET Q Q q 1 0 0 1 62.69291 601.6772 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (A paragraph.) Tj T* ET Q Q q 1 0 0 1 62.69291 574.6772 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.1.1 Inline Markup) Tj T* ET Q Q q 1 0 0 1 62.69291 472.6772 cm q q 12 0 0 12 259.2349 38.82 cm /FormXob.c8d097da4771654d12a9611e9af76669 Do Q BT 1 0 0 1 0 88.82 Tm 4.289069 Tw 12 TL /F1 10 Tf 0 0 0 rg (Paragraphs contain text and may contain inline markup: ) Tj /F5 10 Tf (emphasis) Tj /F1 10 Tf (, ) Tj /F2 10 Tf (strong emphasis) Tj /F1 10 Tf (, ) Tj /F6 10 Tf (inline) Tj T* 0 Tw 4.80022 Tw (literals) Tj /F1 10 Tf (, standalone hyperlinks \() Tj 0 0 .501961 rg (http://www.python.org) Tj 0 0 0 rg (\), external hyperlinks \() Tj 0 0 .501961 rg (Python) Tj 0 0 0 rg ( ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (5) Tj /F1 10 Tf 0 0 0 rg 0 Ts (\), internal) Tj T* 0 Tw 4.195976 Tw (cross-references \() Tj 0 0 .501961 rg (example) Tj 0 0 0 rg (\), external hyperlinks with embedded URIs \() Tj 0 0 .501961 rg (Python web site) Tj 0 0 0 rg (\), footnote) Tj T* 0 Tw .22448 Tw (references \(manually numbered ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (1) Tj /F1 10 Tf 0 0 0 rg 0 Ts (, anonymous auto-numbered ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (3) Tj /F1 10 Tf 0 0 0 rg 0 Ts (, labeled auto-numbered ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (2) Tj /F1 10 Tf 0 0 0 rg 0 Ts (, or symbolic ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (*) Tj /F1 10 Tf 0 0 0 rg 0 Ts (\),) Tj T* 0 Tw 1.52248 Tw (citation references \() Tj ([) Tj 0 0 .501961 rg (CIT2002) Tj 0 0 0 rg (]\), substitution references \( ) Tj 271.2349 0 Td (\), and ) Tj (inline hyperlink targets \(see ) Tj 0 0 .501961 rg (Targets) Tj T* -271.2349 0 Td 0 Tw .614269 Tw 0 0 0 rg (below for a reference back to here\). Character-level inline markup is also possible \(although exceedingly) Tj T* 0 Tw 2.584524 Tw (ugly!\) in ) Tj /F5 10 Tf (re) Tj /F6 10 Tf (Structured) Tj /F5 10 Tf (Text) Tj /F1 10 Tf (. Problems are indicated by ) Tj 1 0 0 rg (|problematic| ) Tj 0 0 0 rg (text \(generated by processing) Tj T* 0 Tw (errors; this one is intentional\).) Tj T* ET Q Q q 1 0 0 1 62.69291 430.6772 cm q BT 1 0 0 1 0 28.82 Tm .178221 Tw 12 TL /F1 10 Tf 0 0 0 rg (The default role for interpreted text is ) Tj /F5 10 Tf (Title Reference) Tj /F1 10 Tf (. Here are some explicit interpreted text roles: a PEP) Tj T* 0 Tw .22511 Tw (reference \() Tj 0 0 .501961 rg (PEP 287) Tj 0 0 0 rg (\); an RFC reference \() Tj 0 0 .501961 rg (RFC 2822) Tj 0 0 0 rg (\); a ) Tj /F1 8 Tf -5 Ts (subscript) Tj /F1 10 Tf 0 Ts (; a ) Tj /F1 8 Tf 5 Ts (superscript) Tj /F1 10 Tf 0 Ts (; and explicit roles for ) Tj /F5 10 Tf (standard) Tj /F1 10 Tf T* 0 Tw /F2 10 Tf (inline) Tj /F1 10 Tf ( ) Tj /F6 10 Tf (markup) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 364.6772 cm q BT 1 0 0 1 0 52.82 Tm 4.339982 Tw 12 TL /F1 10 Tf 0 0 0 rg (Let's test wrapping and whitespace significance in inline literals: ) Tj /F6 10 Tf (This is an example of) Tj T* 0 Tw 9.472441 Tw (--inline-literal --text, --including some-- strangely--hyphenated-words.) Tj T* 0 Tw 3.23622 Tw (Adjust-the-width-of-your-browser-window to see how the text is wrapped. --) Tj T* 0 Tw 1.15748 Tw (---- -------- Now note the spacing between the words of this sentence \(words) Tj T* 0 Tw (should be grouped in pairs\).) Tj T* ET Q Q q 1 0 0 1 62.69291 346.6772 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (If the ) Tj /F6 10 Tf (--pep-references ) Tj /F1 10 Tf (option was supplied, there should be a live link to PEP 258 here.) Tj T* ET Q Q q 1 0 0 1 62.69291 316.6772 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.2 Bullet Lists) Tj T* ET Q Q q 1 0 0 1 62.69291 304.6772 cm Q q 1 0 0 1 62.69291 304.6772 cm Q q 1 0 0 1 62.69291 244.6772 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 45 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 45 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (A bullet list) Tj T* ET Q Q q 1 0 0 1 23 39 cm Q q 1 0 0 1 23 39 cm Q q 1 0 0 1 23 21 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Nested bullet list.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Nested item 2.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 62.69291 244.6772 cm Q q 1 0 0 1 62.69291 244.6772 cm Q q 1 0 0 1 62.69291 106.6772 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 123 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 123 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Item 2.) Tj T* ET Q Q q 1 0 0 1 23 105 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Paragraph 2 of item 2.) Tj T* ET Q Q q 1 0 0 1 23 99 cm Q q 1 0 0 1 23 99 cm Q q 1 0 0 1 23 81 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Nested bullet list.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 81 cm Q q 1 0 0 1 23 81 cm Q q 1 0 0 1 23 21 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 45 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 45 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Nested item 2.) Tj T* ET Q Q q 1 0 0 1 23 39 cm Q q 1 0 0 1 23 39 cm Q q 1 0 0 1 23 21 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Third level.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Item 2.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Nested item 3.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 62.69291 106.6772 cm Q q 1 0 0 1 62.69291 106.6772 cm Q endstream endobj % 'R184': class PDFStream 184 0 obj % page stream << /Length 8667 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 747.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.3 Enumerated Lists) Tj T* ET Q Q q 1 0 0 1 62.69291 735.0236 cm Q q 1 0 0 1 62.69291 735.0236 cm Q q 1 0 0 1 62.69291 621.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 99 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 99 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Arabic numerals.) Tj T* ET Q Q q 1 0 0 1 23 93 cm Q q 1 0 0 1 23 93 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 75 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (a.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 75 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (lower alpha\)) Tj T* ET Q Q q 1 0 0 1 23 69 cm Q q 1 0 0 1 23 69 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 51 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 9 0 Td (i.) Tj T* -9 0 Td ET Q Q q 1 0 0 1 23 51 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (\(lower roman\)) Tj T* ET Q Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 27 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 4.55 0 Td (A.) Tj T* -4.55 0 Td ET Q Q q 1 0 0 1 23 27 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (upper alpha.) Tj T* ET Q Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 8.44 0 Td (I.) Tj T* -8.44 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (upper roman\)) Tj T* ET Q Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 62.69291 621.0236 cm Q q 1 0 0 1 62.69291 621.0236 cm Q q 1 0 0 1 62.69291 477.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 129 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 129 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Lists that don't start at 1:) Tj T* ET Q Q q 1 0 0 1 23 123 cm Q q 1 0 0 1 23 123 cm Q q 1 0 0 1 23 105 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Three) Tj T* ET Q Q q Q Q q 1 0 0 1 23 105 cm Q q 1 0 0 1 23 105 cm Q q 1 0 0 1 23 87 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Four) Tj T* ET Q Q q Q Q q 1 0 0 1 23 87 cm Q q 1 0 0 1 23 87 cm Q q 1 0 0 1 23 81 cm Q q 1 0 0 1 23 81 cm Q q 1 0 0 1 23 63 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 4 0 Td (C.) Tj T* -4 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (C) Tj T* ET Q Q q Q Q q 1 0 0 1 23 63 cm Q q 1 0 0 1 23 63 cm Q q 1 0 0 1 23 45 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 4 0 Td (D.) Tj T* -4 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (D) Tj T* ET Q Q q Q Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 39 cm Q q 1 0 0 1 23 39 cm Q q 1 0 0 1 23 21 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 4.56 0 Td (iii.) Tj T* -4.56 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (iii) Tj T* ET Q Q q Q Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 21 cm Q q 1 0 0 1 23 3 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 4 0 Td (iv.) Tj T* -4 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (iv) Tj T* ET Q Q q Q Q q 1 0 0 1 23 3 cm Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 62.69291 477.0236 cm Q q 1 0 0 1 62.69291 477.0236 cm Q q 1 0 0 1 62.69291 459.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (List items may also be auto-enumerated.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 459.0236 cm Q q 1 0 0 1 62.69291 459.0236 cm Q q 1 0 0 1 62.69291 429.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.4 Definition Lists) Tj T* ET Q Q q 1 0 0 1 62.69291 411.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL (Term) Tj T* ET Q Q q 1 0 0 1 72.69291 399.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Definition) Tj T* ET Q Q q 1 0 0 1 62.69291 383.0236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 0 rg (Term : ) Tj /F4 10 Tf (classifier) Tj T* ET Q Q q 1 0 0 1 72.69291 371.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Definition paragraph 1.) Tj T* ET Q Q q 1 0 0 1 72.69291 359.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Definition paragraph 2.) Tj T* ET Q Q q 1 0 0 1 62.69291 343.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL (Term) Tj T* ET Q Q q 1 0 0 1 72.69291 331.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Definition) Tj T* ET Q Q q 1 0 0 1 62.69291 301.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.5 Field Lists) Tj T* ET Q Q q 1 0 0 1 62.69291 289.0236 cm Q q 1 0 0 1 62.69291 262.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 46.92937 0 Td (what:) Tj T* -46.92937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.532338 Tw (Field lists map field names to field bodies, like database records. They are often) Tj T* 0 Tw (part of an extension syntax. They are an unambiguous variant of RFC 2822 fields.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 217.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 33 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 1.90937 0 Td (how arg1 arg2:) Tj T* -1.90937 0 Td ET Q Q q 1 0 0 1 91.03937 33 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (The field marker is a colon, the field name, and a colon.) Tj T* ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .071457 Tw (The field body may contain one or more body elements, indented relative to the field) Tj T* 0 Tw (marker.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 187.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.6 Option Lists) Tj T* ET Q Q q 1 0 0 1 62.69291 169.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (For listing command-line options:) Tj T* ET Q Q q 1 0 0 1 62.69291 153.8236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (-a) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (command-line option "a") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 138.6236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (-b file) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (options can have arguments and long descriptions) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 123.4236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (--long) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (options can be long also) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 108.2236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (--input=file) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (long options can also have arguments) Tj T* ET Q Q q Q Q endstream endobj % 'R185': class PDFStream 185 0 obj % page stream << /Length 7032 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 720.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 32.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (--very-long-option) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 33 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (The description can also start on the next line.) Tj T* ET Q Q q 1 0 0 1 240.9449 3 cm q 0 0 0 rg BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 7.240976 Tw (The description may contain multiple body) Tj T* 0 Tw (elements, regardless of where it starts.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 704.8236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (-x, -y, -z) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Multiple options are an "option group".) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 689.6236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (-v, --verbose) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Commonly-seen: short & long options.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 674.4236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (-1 file, --one=file, --two file) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Multiple options with arguments.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 659.2236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 5.71 Tm /F6 10 Tf 12 TL (/V) Tj T* ET Q Q Q Q Q q 1 0 0 1 240.9449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (DOS/VMS-style options too) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 641.2236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (There must be at least two spaces between the option and the description.) Tj T* ET Q Q q 1 0 0 1 62.69291 611.2236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.7 Literal Blocks) Tj T* ET Q Q q 1 0 0 1 62.69291 581.2236 cm q BT 1 0 0 1 0 16.82 Tm 1.202485 Tw 12 TL /F1 10 Tf 0 0 0 rg (Literal blocks are indicated with a double-colon \("::"\) at the end of the preceding paragraph \(over there) Tj T* 0 Tw /F6 10 Tf (--) Tj (>) Tj /F1 10 Tf (\). They can be indented:) Tj T* ET Q Q q 1 0 0 1 62.69291 512.0236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 41.71 Tm /F6 10 Tf 12 TL (if literal_block:) Tj T* ( text = 'is left as-is') Tj T* ( spaces_and_linebreaks = 'are preserved') Tj T* ( markup_processing = None) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 492.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Or they can be quoted without indentation:) Tj T* ET Q Q q 1 0 0 1 62.69291 434.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q BT 1 0 0 1 0 29.71 Tm 12 TL /F6 10 Tf 0 0 0 rg (>) Tj (>) Tj ( Great idea!) Tj T* (>) Tj T* (>) Tj ( Why didn't I think of that?) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 404.8236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.8 Line Blocks) Tj T* ET Q Q q 1 0 0 1 62.69291 392.8236 cm Q q 1 0 0 1 62.69291 380.8236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is a line block. It ends with a blank line.) Tj T* ET Q Q q 1 0 0 1 62.69291 374.8236 cm Q q 1 0 0 1 62.69291 362.8236 cm q 0 0 0 rg BT 1 0 0 1 20 4.82 Tm /F1 10 Tf 12 TL (Each new line begins with a vertical bar \("|"\).) Tj T* ET Q Q q 1 0 0 1 62.69291 350.8236 cm q 0 0 0 rg BT 1 0 0 1 20 4.82 Tm /F1 10 Tf 12 TL (Line breaks and initial indents are preserved.) Tj T* ET Q Q q 1 0 0 1 62.69291 350.8236 cm Q q 1 0 0 1 62.69291 338.8236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Continuation lines are wrapped portions of long lines; they begin with a space in place of the vertical bar.) Tj T* ET Q Q q 1 0 0 1 62.69291 332.8236 cm Q q 1 0 0 1 62.69291 320.8236 cm q 0 0 0 rg BT 1 0 0 1 20 4.82 Tm /F1 10 Tf 12 TL (The left edge of a continuation line need not be aligned with the left edge of the text above it.) Tj T* ET Q Q q 1 0 0 1 62.69291 320.8236 cm Q q 1 0 0 1 62.69291 320.8236 cm Q q 1 0 0 1 62.69291 314.8236 cm Q q 1 0 0 1 62.69291 302.8236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is a second line block.) Tj T* ET Q Q q 1 0 0 1 62.69291 302.8236 cm Q q 1 0 0 1 62.69291 290.8236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Blank lines are permitted internally, but they must begin with a "|".) Tj T* ET Q Q q 1 0 0 1 62.69291 290.8236 cm Q q 1 0 0 1 62.69291 272.8236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Take it away, Eric the Orchestra Leader!) Tj T* ET Q Q q 1 0 0 1 62.69291 266.8236 cm Q q 1 0 0 1 62.69291 104.8236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 0 5 Tm T* ET q 1 0 0 1 23 153 cm Q q 1 0 0 1 23 141 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (A one, two, a one two three four) Tj T* ET Q Q q 1 0 0 1 23 141 cm Q q 1 0 0 1 23 129 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Half a bee, philosophically,) Tj T* ET Q Q q 1 0 0 1 23 123 cm Q q 1 0 0 1 23 111 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (must, ) Tj /F5 10 Tf (ipso facto) Tj /F1 10 Tf (, half not be.) Tj T* ET Q Q q 1 0 0 1 23 111 cm Q q 1 0 0 1 23 99 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (But half the bee has got to be,) Tj T* ET Q Q q 1 0 0 1 23 93 cm Q q 1 0 0 1 23 81 cm q BT 1 0 0 1 20 4.82 Tm 12 TL /F5 10 Tf 0 0 0 rg (vis a vis ) Tj /F1 10 Tf (its entity. D'you see?) Tj T* ET Q Q q 1 0 0 1 23 81 cm Q q 1 0 0 1 23 81 cm Q q 1 0 0 1 23 69 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (But can a bee be said to be) Tj T* ET Q Q q 1 0 0 1 23 63 cm Q q 1 0 0 1 23 51 cm q 0 0 0 rg BT 1 0 0 1 20 4.82 Tm /F1 10 Tf 12 TL (or not to be an entire bee,) Tj T* ET Q Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 33 cm q 0 0 0 rg BT 1 0 0 1 40 4.82 Tm /F1 10 Tf 12 TL (when half the bee is not a bee,) Tj T* ET Q Q q 1 0 0 1 23 27 cm Q q 1 0 0 1 23 15 cm q 0 0 0 rg BT 1 0 0 1 60 4.82 Tm /F1 10 Tf 12 TL (due to some ancient injury?) Tj T* ET Q Q q 1 0 0 1 23 15 cm Q q 1 0 0 1 23 15 cm Q q 1 0 0 1 23 15 cm Q q 1 0 0 1 23 15 cm Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Singing...) Tj T* ET Q Q q 1 0 0 1 23 3 cm Q q Q Q q 1 0 0 1 62.69291 104.8236 cm Q endstream endobj % 'R186': class PDFStream 186 0 obj % page stream << /Length 11495 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 747.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.9 Block Quotes) Tj T* ET Q Q q 1 0 0 1 62.69291 729.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Block quotes consist of indented body elements:) Tj T* ET Q Q q 1 0 0 1 62.69291 723.0236 cm Q q 1 0 0 1 62.69291 663.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 0 5 Tm T* ET q 1 0 0 1 23 21 cm q 0 0 0 rg BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.934985 Tw (My theory by A. Elk. Brackets Miss, brackets. This theory goes as follows and begins now. All) Tj T* 0 Tw .542765 Tw (brontosauruses are thin at one end, much much thicker in the middle and then thin again at the far) Tj T* 0 Tw (end. That is my theory, it is mine, and belongs to me and I own it, and what it is too.) Tj T* ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 373.8798 0 Td (Anne Elk \(Miss\)) Tj T* -373.8798 0 Td ET Q Q q Q Q q 1 0 0 1 62.69291 663.0236 cm Q q 1 0 0 1 62.69291 633.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.10 Doctest Blocks) Tj T* ET Q Q q 1 0 0 1 62.69291 563.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q BT 1 0 0 1 0 41.71 Tm 12 TL /F6 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( print 'Python-specific usage examples; begun with ") Tj (>) Tj (>) Tj (>) Tj ("') Tj T* (Python-specific usage examples; begun with ") Tj (>) Tj (>) Tj (>) Tj (") Tj T* (>) Tj (>) Tj (>) Tj ( print '\(cut and pasted from interactive Python sessions\)') Tj T* (\(cut and pasted from interactive Python sessions\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 533.8236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.11 Tables) Tj T* ET Q Q q 1 0 0 1 62.69291 515.8236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Here's a grid table followed by a simple table:) Tj T* ET Q Q q 1 0 0 1 62.69291 509.8236 cm Q q 1 0 0 1 62.69291 359.8236 cm 1 1 1 rg n 0 150 469.8898 -30 re f* .878431 .878431 .878431 rg n 0 120 469.8898 -18 re f* 1 1 1 rg n 0 102 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 84 469.8898 -33 re f* 1 1 1 rg n 0 51 469.8898 -33 re f* .878431 .878431 .878431 rg n 0 18 469.8898 -18 re f* 1 1 1 rg n 0 150 469.8898 -30 re f* .878431 .878431 .878431 rg n 0 120 469.8898 -18 re f* 1 1 1 rg n 0 102 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 84 469.8898 -33 re f* 1 1 1 rg n 0 51 469.8898 -33 re f* .878431 .878431 .878431 rg n 0 18 469.8898 -18 re f* .960784 .960784 .862745 rg n 0 150 469.8898 -30 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 123 cm q .960784 .960784 .862745 rg n 0 0 189.3813 24 re f* Q q 0 0 0 rg BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 15.22066 0 Td (Header row, column 1 \(header rows) Tj T* 60.295 0 Td (optional\)) Tj T* -75.51566 0 Td ET Q Q q 1 0 0 1 207.3813 123 cm q .960784 .960784 .862745 rg n 0 0 88.69066 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 23.78033 0 Td (Header 2) Tj T* -23.78033 0 Td ET Q Q q 1 0 0 1 308.072 123 cm q .960784 .960784 .862745 rg n 0 0 71.90889 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 15.38944 0 Td (Header 3) Tj T* -15.38944 0 Td ET Q Q q 1 0 0 1 391.9809 123 cm q .960784 .960784 .862745 rg n 0 0 71.90889 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 15.38944 0 Td (Header 4) Tj T* -15.38944 0 Td ET Q Q BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 105 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (body row 1, column 1) Tj T* ET Q Q q 1 0 0 1 207.3813 105 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (column 2) Tj T* ET Q Q q 1 0 0 1 308.072 105 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (column 3) Tj T* ET Q Q q 1 0 0 1 391.9809 105 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (column 4) Tj T* ET Q Q q 1 0 0 1 6 87 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (body row 2) Tj T* ET Q Q q 1 0 0 1 207.3813 87 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Cells may span columns.) Tj T* ET Q Q q 1 0 0 1 6 69 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (body row 3) Tj T* ET Q Q q 1 0 0 1 207.3813 57 cm q 0 0 0 rg BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL (Cells may span) Tj T* (rows.) Tj T* ET Q Q q 1 0 0 1 308.072 75 cm Q q 1 0 0 1 308.072 75 cm Q q 1 0 0 1 308.072 57 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Table cells) Tj T* ET Q Q q Q Q q 1 0 0 1 308.072 57 cm Q q 1 0 0 1 308.072 57 cm Q q 1 0 0 1 308.072 39 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (contain) Tj T* ET Q Q q Q Q q 1 0 0 1 308.072 39 cm Q q 1 0 0 1 308.072 39 cm Q q 1 0 0 1 308.072 21 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (body elements.) Tj T* ET Q Q q Q Q q 1 0 0 1 308.072 21 cm Q q 1 0 0 1 308.072 21 cm Q q 1 0 0 1 6 36 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (body row 4) Tj T* ET Q Q q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (body row 5) Tj T* ET Q Q q 1 0 0 1 207.3813 3 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Cells may also be empty: ) Tj /F6 10 Tf (--) Tj (>) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 120 m 469.8898 120 l S n 0 102 m 469.8898 102 l S n 0 84 m 469.8898 84 l S n 0 51 m 201.3813 51 l S n 0 18 m 469.8898 18 l S n 201.3813 0 m 201.3813 150 l S n 302.072 18 m 302.072 84 l S n 302.072 102 m 302.072 150 l S n 385.9809 0 m 385.9809 18 l S n 385.9809 102 m 385.9809 150 l S n 0 150 m 469.8898 150 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 150 l S n 469.8898 0 m 469.8898 150 l S n 0 120 m 469.8898 120 l S n 0 102 m 469.8898 102 l S n 0 84 m 469.8898 84 l S n 0 51 m 201.3813 51 l S n 0 18 m 469.8898 18 l S n 201.3813 0 m 201.3813 150 l S n 302.072 18 m 302.072 84 l S n 302.072 102 m 302.072 150 l S n 385.9809 0 m 385.9809 18 l S n 385.9809 102 m 385.9809 150 l S n 0 150 m 469.8898 150 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 150 l S n 469.8898 0 m 469.8898 150 l S Q Q q 1 0 0 1 62.69291 359.8236 cm Q q 1 0 0 1 62.69291 353.8236 cm Q q 1 0 0 1 62.69291 245.8236 cm 1 1 1 rg n 0 108 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 90 469.8898 -18 re f* 1 1 1 rg n 0 72 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 54 469.8898 -18 re f* 1 1 1 rg n 0 36 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 18 469.8898 -18 re f* 1 1 1 rg n 0 108 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 90 469.8898 -18 re f* 1 1 1 rg n 0 72 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 54 469.8898 -18 re f* 1 1 1 rg n 0 36 469.8898 -18 re f* .878431 .878431 .878431 rg n 0 18 469.8898 -18 re f* .960784 .960784 .862745 rg n 0 108 469.8898 -36 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 93 cm q .960784 .960784 .862745 rg n 0 0 281.6811 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 127.2206 0 Td (Inputs) Tj T* -127.2206 0 Td ET Q Q q 1 0 0 1 299.6811 93 cm q .960784 .960784 .862745 rg n 0 0 164.2087 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 67.09433 0 Td (Output) Tj T* -67.09433 0 Td ET Q Q q 1 0 0 1 6 75 cm q .960784 .960784 .862745 rg n 0 0 134.8406 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 64.08528 0 Td (A) Tj T* -64.08528 0 Td ET Q Q q 1 0 0 1 152.8406 75 cm q .960784 .960784 .862745 rg n 0 0 134.8406 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 64.08528 0 Td (B) Tj T* -64.08528 0 Td ET Q Q q 1 0 0 1 299.6811 75 cm q .960784 .960784 .862745 rg n 0 0 164.2087 12 re f* Q q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 68.20933 0 Td (A or B) Tj T* -68.20933 0 Td ET Q Q BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 57 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (False) Tj T* ET Q Q q 1 0 0 1 152.8406 57 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (False) Tj T* ET Q Q q 1 0 0 1 299.6811 57 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (False) Tj T* ET Q Q q 1 0 0 1 6 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (True) Tj T* ET Q Q q 1 0 0 1 152.8406 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (False) Tj T* ET Q Q q 1 0 0 1 299.6811 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (True) Tj T* ET Q Q q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (False) Tj T* ET Q Q q 1 0 0 1 152.8406 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (True) Tj T* ET Q Q q 1 0 0 1 299.6811 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (True) Tj T* ET Q Q q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (True) Tj T* ET Q Q q 1 0 0 1 152.8406 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (True) Tj T* ET Q Q q 1 0 0 1 299.6811 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (True) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 90 m 469.8898 90 l S n 0 72 m 469.8898 72 l S n 0 54 m 469.8898 54 l S n 0 36 m 469.8898 36 l S n 0 18 m 469.8898 18 l S n 146.8406 0 m 146.8406 90 l S n 293.6811 0 m 293.6811 108 l S n 0 108 m 469.8898 108 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 108 l S n 469.8898 0 m 469.8898 108 l S n 0 90 m 469.8898 90 l S n 0 72 m 469.8898 72 l S n 0 54 m 469.8898 54 l S n 0 36 m 469.8898 36 l S n 0 18 m 469.8898 18 l S n 146.8406 0 m 146.8406 90 l S n 293.6811 0 m 293.6811 108 l S n 0 108 m 469.8898 108 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 108 l S n 469.8898 0 m 469.8898 108 l S Q Q q 1 0 0 1 62.69291 245.8236 cm Q q 1 0 0 1 62.69291 215.8236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.12 Footnotes) Tj T* ET Q Q q 1 0 0 1 62.69291 185.8236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.13 Citations) Tj T* ET Q Q q 1 0 0 1 62.69291 167.8236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Here's a reference to the above, ) Tj ([) Tj 0 0 .501961 rg (CIT2002) Tj 0 0 0 rg (], and a ) Tj 1 0 0 rg ([nonexistent]_ ) Tj 0 0 0 rg (citation.) Tj T* ET Q Q q 1 0 0 1 62.69291 137.8236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.14 Targets) Tj T* ET Q Q q 1 0 0 1 62.69291 107.8236 cm q BT 1 0 0 1 0 16.82 Tm 2.104985 Tw 12 TL /F1 10 Tf 0 0 0 rg (This paragraph is pointed to by the explicit "example" target. A reference can be found under ) Tj 0 0 .501961 rg (Inline) Tj T* 0 Tw (Markup) Tj 0 0 0 rg (, above. ) Tj 0 0 .501961 rg (Inline hyperlink targets ) Tj 0 0 0 rg (are also possible.) Tj T* ET Q Q q 1 0 0 1 62.69291 77.82362 cm q BT 1 0 0 1 0 16.82 Tm 1.508735 Tw 12 TL /F1 10 Tf 0 0 0 rg (Section headers are implicit targets, referred to by name. See ) Tj 0 0 .501961 rg (Targets) Tj 0 0 0 rg (, which is a subsection of ) Tj 0 0 .501961 rg (Body) Tj T* 0 Tw (Elements) Tj 0 0 0 rg (.) Tj T* ET Q Q endstream endobj % 'R187': class PDFStream 187 0 obj % page stream << /Length 6935 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 753.0236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Explicit external targets are interpolated into references such as ") Tj 0 0 .501961 rg (Python) Tj 0 0 0 rg ( ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (5) Tj /F1 10 Tf 0 0 0 rg 0 Ts (".) Tj T* ET Q Q q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Targets may be indirect and anonymous. Thus ) Tj 0 0 .501961 rg (this phrase ) Tj 0 0 0 rg (may also refer to the ) Tj 0 0 .501961 rg (Targets ) Tj 0 0 0 rg (section.) Tj T* ET Q Q q 1 0 0 1 62.69291 717.0236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Here's a ) Tj 1 0 0 rg (`hyperlink reference without a target`_) Tj 0 0 0 rg (, which generates an error.) Tj T* ET Q Q q 1 0 0 1 62.69291 690.0236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.14.1 Duplicate Target Names) Tj T* ET Q Q q 1 0 0 1 62.69291 660.0236 cm q 0 0 0 rg BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 3.793828 Tw (Duplicate names in section headers or other implicit targets will generate "info" \(level-1\) system) Tj T* 0 Tw (messages. Duplicate names in explicit targets will generate "warning" \(level-2\) system messages.) Tj T* ET Q Q q 1 0 0 1 62.69291 633.0236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.14.2 Duplicate Target Names) Tj T* ET Q Q q 1 0 0 1 62.69291 603.0236 cm q BT 1 0 0 1 0 16.82 Tm .196235 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since there are two "Duplicate Target Names" section headers, we cannot uniquely refer to either of them) Tj T* 0 Tw (by name. If we try to \(like this: ) Tj 1 0 0 rg (`Duplicate Target Names`_) Tj 0 0 0 rg (\), an error is generated.) Tj T* ET Q Q q 1 0 0 1 62.69291 573.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.15 Directives) Tj T* ET Q Q q 1 0 0 1 62.69291 441.0236 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 0 111 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2.15.1 Document Parts) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2.15.2 Images) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2.15.3 Admonitions) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2.15.4 Topics, Sidebars, and Rubrics) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2.15.5 Target Footnotes) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2.15.6 Replacement Text) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (2.15.7 Compound Paragraph) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET Q Q q Q Q q 1 0 0 1 62.69291 411.0236 cm q BT 1 0 0 1 0 16.82 Tm 6.090751 Tw 12 TL /F1 10 Tf 0 0 0 rg (These are just a sample of the many reStructuredText Directives. For others, please see) Tj T* 0 Tw 0 0 .501961 rg (http://docutils.sourceforge.net/docs/ref/rst/directives.html) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 384.0236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.15.1 Document Parts) Tj T* ET Q Q q 1 0 0 1 62.69291 354.0236 cm q BT 1 0 0 1 0 16.82 Tm .542339 Tw 12 TL /F1 10 Tf 0 0 0 rg (An example of the "contents" directive can be seen above this section \(a local, untitled table of ) Tj 0 0 .501961 rg (contents) Tj 0 0 0 rg (\)) Tj T* 0 Tw (and at the beginning of the document \(a document-wide ) Tj 0 0 .501961 rg (table of contents) Tj 0 0 0 rg (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 327.0236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.15.2 Images) Tj T* ET Q Q q 1 0 0 1 62.69291 309.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (An image directive \(also clickable -- a hyperlink reference\):) Tj T* ET Q Q q 1 0 0 1 235.7178 297.2636 cm q 123.84 0 0 11.76 0 0 cm /FormXob.3214b96a331e44bc5d44c2adc18563e6 Do Q Q q 1 0 0 1 62.69291 279.2636 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (A figure directive:) Tj T* ET Q Q q 1 0 0 1 62.69291 171.3036 cm q n 0 0 469.6898 101.76 re n Q q q 1 0 0 1 0 0 cm q 1 0 0 1 173.0249 90.1 cm q 123.84 0 0 11.76 0 0 cm /FormXob.3214b96a331e44bc5d44c2adc18563e6 Do Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 72.1 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F5 10 Tf 12 TL 121.1749 0 Td (A figure is an image with a caption and/or a legend:) Tj T* -121.1749 0 Td ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 18.1 cm 1 1 1 rg n 0 54 469.6898 -18 re f* .878431 .878431 .878431 rg n 0 36 469.6898 -18 re f* 1 1 1 rg n 0 18 469.6898 -18 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (re) Tj T* ET Q Q q 1 0 0 1 101.5301 39 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Revised, revisited, based on 're' module.) Tj T* ET Q Q q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Structured) Tj T* ET Q Q q 1 0 0 1 101.5301 21 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Structure-enhanced text, structuredtext.) Tj T* ET Q Q q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Text) Tj T* ET Q Q q 1 0 0 1 101.5301 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Well it is, isn't it?) Tj T* ET Q Q q 1 J 1 j 0 0 0 RG .25 w n 0 36 m 469.6898 36 l S n 0 18 m 469.6898 18 l S n 95.53012 0 m 95.53012 54 l S n 0 54 m 469.6898 54 l S n 0 0 m 469.6898 0 l S n 0 0 m 0 54 l S n 469.6898 0 m 469.6898 54 l S Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 143.9649 0 Td (This paragraph is also part of the legend.) Tj T* -143.9649 0 Td ET Q Q Q Q Q q 1 0 0 1 62.69291 144.3036 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.15.3 Admonitions) Tj T* ET Q Q q 1 0 0 1 62.69291 126.3036 cm Q endstream endobj % 'R188': class PDFStream 188 0 obj % page stream << /Length 5406 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 694.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Attention) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Directives at large.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 688.0236 cm Q q 1 0 0 1 62.69291 676.0236 cm Q q 1 0 0 1 62.69291 605.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Caution) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Don't take any wooden nickels.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 599.0236 cm Q q 1 0 0 1 62.69291 587.0236 cm Q q 1 0 0 1 62.69291 516.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Danger) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Mad scientist at work!) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 510.0236 cm Q q 1 0 0 1 62.69291 498.0236 cm Q q 1 0 0 1 62.69291 427.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Error) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Does not compute.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 421.0236 cm Q q 1 0 0 1 62.69291 409.0236 cm Q q 1 0 0 1 62.69291 338.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Hint) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (It's bigger than a bread box.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 332.0236 cm Q q 1 0 0 1 62.69291 320.0236 cm Q q 1 0 0 1 62.69291 189.0236 cm .960784 .960784 .862745 rg n 0 131 469.8898 -131 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 105 Tm T* ET q 1 0 0 1 16 100 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Important) Tj T* ET Q Q q 1 0 0 1 16 88 cm Q q 1 0 0 1 16 88 cm Q q 1 0 0 1 16 70 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Wash behind your ears.) Tj T* ET Q Q q Q Q q 1 0 0 1 16 70 cm Q q 1 0 0 1 16 70 cm Q q 1 0 0 1 16 52 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Clean up your room.) Tj T* ET Q Q q Q Q q 1 0 0 1 16 52 cm Q q 1 0 0 1 16 52 cm Q q 1 0 0 1 16 34 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Call your mother.) Tj T* ET Q Q q Q Q q 1 0 0 1 16 34 cm Q q 1 0 0 1 16 34 cm Q q 1 0 0 1 16 16 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 3 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Back up your data.) Tj T* ET Q Q q Q Q q 1 0 0 1 16 16 cm Q q 1 0 0 1 16 16 cm Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 131 m 469.8898 131 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 131 l S n 469.8898 0 m 469.8898 131 l S Q Q q 1 0 0 1 62.69291 183.0236 cm Q q 1 0 0 1 62.69291 171.0236 cm Q q 1 0 0 1 62.69291 100.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Note) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is a note.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 94.02362 cm Q q 1 0 0 1 62.69291 82.02362 cm Q endstream endobj % 'R189': class PDFStream 189 0 obj % page stream << /Length 4837 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 694.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Tip) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (15% if the service is good.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 688.0236 cm Q q 1 0 0 1 62.69291 676.0236 cm Q q 1 0 0 1 62.69291 605.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Warning) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Strong prose may provoke extreme mental exertion. Reader discretion is strongly advised.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 599.0236 cm Q q 1 0 0 1 62.69291 587.0236 cm Q q 1 0 0 1 62.69291 516.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F3 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (And, by the way...) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (You can make up your own admonition too.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 510.0236 cm Q q 1 0 0 1 62.69291 483.0236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.15.4 Topics, Sidebars, and Rubrics) Tj T* ET Q Q q 1 0 0 1 62.69291 349.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q .5 w .662745 .662745 .662745 RG .960784 .960784 .862745 rg n 0 0 400.8898 110 re B* Q q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 86.6 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Sidebar Title) Tj T* ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 62.6 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F4 10 Tf 12 TL (Optional Subtitle) Tj T* ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 44.6 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is a sidebar. It is for text outside the flow of the main text.) Tj T* ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 26.6 cm q .545098 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 123.0349 0 Td (This is a rubric inside a sidebar) Tj T* -123.0349 0 Td ET Q Q Q q 1 0 0 1 0 0 cm q 1 0 0 1 8.6 8.6 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Sidebars often appears beside the main text with a border and background color.) Tj T* ET Q Q Q Q Q Q Q Q q 1 0 0 1 62.69291 322.6236 cm q 0 0 0 rg BT 1 0 0 1 0 6.025 Tm /F4 12.5 Tf 15 TL (Topic Title) Tj T* ET Q Q q 1 0 0 1 62.69291 304.6236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is a topic.) Tj T* ET Q Q q 1 0 0 1 62.69291 286.6236 cm q .545098 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 202.4399 0 Td (This is a rubric) Tj T* -202.4399 0 Td ET Q Q q 1 0 0 1 62.69291 259.6236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.15.5 Target Footnotes) Tj T* ET Q Q q 1 0 0 1 62.69291 232.6236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.15.6 Replacement Text) Tj T* ET Q Q q 1 0 0 1 62.69291 214.6236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (I recommend you try ) Tj 0 0 .501961 rg (Python, ) Tj /F5 10 Tf (the ) Tj /F1 10 Tf (best language around) Tj 0 0 0 rg ( ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (5) Tj /F1 10 Tf 0 0 0 rg 0 Ts (.) Tj T* ET Q Q q 1 0 0 1 62.69291 187.6236 cm q BT 1 0 0 1 0 6.025 Tm 15 TL /F4 12.5 Tf 0 0 0 rg (2.15.7 Compound Paragraph) Tj T* ET Q Q q 1 0 0 1 62.69291 169.6236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This paragraph contains a literal block:) Tj T* ET Q Q q 1 0 0 1 62.69291 112.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 29.71 Tm /F6 10 Tf 12 TL (Connecting... OK) Tj T* (Transmitting data... OK) Tj T* (Disconnecting... OK) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 80.42362 cm q BT 1 0 0 1 0 16.82 Tm .70936 Tw 12 TL /F1 10 Tf 0 0 0 rg (and thus consists of a simple paragraph, a literal block, and another simple paragraph. Nonetheless it is) Tj T* 0 Tw (semantically ) Tj /F5 10 Tf (one ) Tj /F1 10 Tf (paragraph.) Tj T* ET Q Q endstream endobj % 'R190': class PDFStream 190 0 obj % page stream << /Length 5651 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 753.0236 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (This construct is called a ) Tj /F5 10 Tf (compound paragraph ) Tj /F1 10 Tf (and can be produced with the "compound" directive.) Tj T* ET Q Q q 1 0 0 1 62.69291 723.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.16 Substitution Definitions) Tj T* ET Q Q q 1 0 0 1 62.69291 705.0236 cm q q 12 0 0 12 77.25 2.82 cm /FormXob.c8d097da4771654d12a9611e9af76669 Do Q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (An inline image \( ) Tj 89.25 0 Td (\) example:) Tj T* -89.25 0 Td ET Q Q q 1 0 0 1 62.69291 687.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (\(Substitution definitions are not visible in the HTML source.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 657.0236 cm q BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (2.17 Comments) Tj T* ET Q Q q 1 0 0 1 62.69291 639.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Here's one:) Tj T* ET Q Q q 1 0 0 1 62.69291 621.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (\(View the HTML source to see the comment.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 588.0236 cm q BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (3 Error Handling) Tj T* ET Q Q q 1 0 0 1 62.69291 570.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Any errors caught during processing will generate system messages.) Tj T* ET Q Q q 1 0 0 1 62.69291 552.0236 cm q 1 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (|*** Expect 6 errors \(including this one\). ***|) Tj T* ET Q Q q 1 0 0 1 62.69291 534.0236 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (There should be six messages in the following, auto-generated section, "Docutils System Messages":) Tj T* ET Q Q q 1 0 0 1 62.69291 477.3307 cm Q q 1 0 0 1 62.69291 448.9843 cm n 0 14.17323 m 469.8898 14.17323 l S Q q 1 0 0 1 62.69291 418.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 18 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (1\() Tj 0 0 .501961 rg (1) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (2) Tj 0 0 0 rg (\)) Tj T* ET Q Q q 1 0 0 1 91.03937 18 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (A footnote contains body elements, consistently indented by at least 3 spaces.) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q 0 0 0 rg BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (This is the footnote's second paragraph.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 382.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 24 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (2\() Tj 0 0 .501961 rg (1) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (2) Tj 0 0 0 rg (\)) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 28.82 Tm 2.670199 Tw 12 TL /F1 10 Tf 0 0 0 rg (Footnotes may be numbered, either manually \(as in ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (1) Tj /F1 10 Tf 0 0 0 rg 0 Ts (\) or automatically using a) Tj T* 0 Tw 1.860028 Tw ("#"-prefixed label. This footnote has a label so it can be referred to from multiple) Tj T* 0 Tw (places, both as a footnote reference \() Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (2) Tj /F1 10 Tf 0 0 0 rg 0 Ts (\) and as a hyperlink reference \() Tj 0 0 .501961 rg (label) Tj 0 0 0 rg (\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 370.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (This footnote is numbered automatically and anonymously using a label of "#" only.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 346.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 12 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (*) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 16.82 Tm .4536 Tw 12 TL /F1 10 Tf 0 0 0 rg (Footnotes may also use symbols, specified with a "*" label. Here's a reference to the) Tj T* 0 Tw (next footnote: ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (\206) Tj /F1 10 Tf 0 0 0 rg 0 Ts (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 334.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (\206) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (This footnote shows the next symbol in the sequence.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 322.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (4) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (Here's an unreferenced footnote, with a reference to a nonexistent footnote: ) Tj 1 0 0 rg ([5]_) Tj 0 0 0 rg (.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 298.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 12 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (CIT2002\() Tj 0 0 .501961 rg (1) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (2) Tj 0 0 0 rg (\)) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 16.82 Tm .367039 Tw 12 TL /F1 10 Tf 0 0 0 rg (Citations are text-labeled footnotes. They may be rendered separately and differently) Tj T* 0 Tw (from footnotes.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 286.9843 cm 0 0 0 rg BT /F3 10 Tf 12 TL ET q 1 0 0 1 6 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 0 rg (5\() Tj 0 0 .501961 rg (1) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (2) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (3) Tj 0 0 0 rg (\)) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (http://www.python.org/) Tj T* ET Q Q q Q Q endstream endobj % 'R191': class PDFPageLabels 191 0 obj % Document Root << /Nums [ 0 192 0 R 1 193 0 R 2 194 0 R 3 195 0 R 4 196 0 R 5 197 0 R 6 198 0 R 7 199 0 R 8 200 0 R 9 201 0 R ] >> endobj % 'R192': class PDFPageLabel 192 0 obj % None << /S /D /St 1 >> endobj % 'R193': class PDFPageLabel 193 0 obj % None << /S /D /St 2 >> endobj % 'R194': class PDFPageLabel 194 0 obj % None << /S /D /St 3 >> endobj % 'R195': class PDFPageLabel 195 0 obj % None << /S /D /St 4 >> endobj % 'R196': class PDFPageLabel 196 0 obj % None << /S /D /St 5 >> endobj % 'R197': class PDFPageLabel 197 0 obj % None << /S /D /St 6 >> endobj % 'R198': class PDFPageLabel 198 0 obj % None << /S /D /St 7 >> endobj % 'R199': class PDFPageLabel 199 0 obj % None << /S /D /St 8 >> endobj % 'R200': class PDFPageLabel 200 0 obj % None << /S /D /St 9 >> endobj % 'R201': class PDFPageLabel 201 0 obj % None << /S /D /St 10 >> endobj xref 0 202 0000000000 65535 f 0000000113 00000 n 0000000271 00000 n 0000000436 00000 n 0000000611 00000 n 0000000792 00000 n 0000001023 00000 n 0000001210 00000 n 0000001526 00000 n 0000001767 00000 n 0000002008 00000 n 0000002250 00000 n 0000002492 00000 n 0000002734 00000 n 0000002976 00000 n 0000003218 00000 n 0000003461 00000 n 0000003704 00000 n 0000003947 00000 n 0000004190 00000 n 0000004433 00000 n 0000004676 00000 n 0000004919 00000 n 0000005162 00000 n 0000005405 00000 n 0000005648 00000 n 0000005891 00000 n 0000006134 00000 n 0000006377 00000 n 0000006620 00000 n 0000006863 00000 n 0000007106 00000 n 0000007349 00000 n 0000007592 00000 n 0000007835 00000 n 0000008078 00000 n 0000008321 00000 n 0000008564 00000 n 0000008807 00000 n 0000009050 00000 n 0000009293 00000 n 0000009536 00000 n 0000009779 00000 n 0000010022 00000 n 0000010265 00000 n 0000010508 00000 n 0000010751 00000 n 0000010995 00000 n 0000011239 00000 n 0000011483 00000 n 0000011727 00000 n 0000011971 00000 n 0000012215 00000 n 0000012459 00000 n 0000012703 00000 n 0000012947 00000 n 0000013191 00000 n 0000013435 00000 n 0000013679 00000 n 0000013923 00000 n 0000014167 00000 n 0000014411 00000 n 0000014655 00000 n 0000014899 00000 n 0000015143 00000 n 0000015387 00000 n 0000015631 00000 n 0000015875 00000 n 0000016119 00000 n 0000016363 00000 n 0000016607 00000 n 0000016851 00000 n 0000017079 00000 n 0000017949 00000 n 0000018131 00000 n 0000018306 00000 n 0000018547 00000 n 0000018790 00000 n 0000019034 00000 n 0000019276 00000 n 0000019518 00000 n 0000019762 00000 n 0000020006 00000 n 0000020250 00000 n 0000020521 00000 n 0000020917 00000 n 0000021161 00000 n 0000021403 00000 n 0000021661 00000 n 0000021903 00000 n 0000022380 00000 n 0000022662 00000 n 0000022960 00000 n 0000023204 00000 n 0000023447 00000 n 0000023690 00000 n 0000023933 00000 n 0000024176 00000 n 0000024419 00000 n 0000024646 00000 n 0000025018 00000 n 0000025262 00000 n 0000025507 00000 n 0000025751 00000 n 0000025995 00000 n 0000026240 00000 n 0000026485 00000 n 0000026730 00000 n 0000026975 00000 n 0000027220 00000 n 0000027465 00000 n 0000027710 00000 n 0000027955 00000 n 0000028200 00000 n 0000028446 00000 n 0000028692 00000 n 0000028938 00000 n 0000029184 00000 n 0000029429 00000 n 0000029712 00000 n 0000029958 00000 n 0000030229 00000 n 0000032946 00000 n 0000033518 00000 n 0000033817 00000 n 0000034062 00000 n 0000034291 00000 n 0000034623 00000 n 0000034868 00000 n 0000035114 00000 n 0000035359 00000 n 0000035605 00000 n 0000035851 00000 n 0000036097 00000 n 0000036343 00000 n 0000036588 00000 n 0000036833 00000 n 0000037079 00000 n 0000037325 00000 n 0000037570 00000 n 0000037815 00000 n 0000038060 00000 n 0000038306 00000 n 0000038551 00000 n 0000038780 00000 n 0000039313 00000 n 0000039477 00000 n 0000039749 00000 n 0000039878 00000 n 0000040221 00000 n 0000040500 00000 n 0000040766 00000 n 0000041096 00000 n 0000041404 00000 n 0000041677 00000 n 0000041967 00000 n 0000042277 00000 n 0000042587 00000 n 0000042872 00000 n 0000043162 00000 n 0000043462 00000 n 0000043747 00000 n 0000044037 00000 n 0000044343 00000 n 0000044609 00000 n 0000044890 00000 n 0000045171 00000 n 0000045485 00000 n 0000045825 00000 n 0000046166 00000 n 0000046496 00000 n 0000046796 00000 n 0000047072 00000 n 0000047373 00000 n 0000047764 00000 n 0000048090 00000 n 0000048416 00000 n 0000048737 00000 n 0000049094 00000 n 0000049351 00000 n 0000049608 00000 n 0000049803 00000 n 0000055421 00000 n 0000064448 00000 n 0000072277 00000 n 0000081047 00000 n 0000088182 00000 n 0000099781 00000 n 0000106819 00000 n 0000112328 00000 n 0000117268 00000 n 0000123026 00000 n 0000123248 00000 n 0000123327 00000 n 0000123406 00000 n 0000123485 00000 n 0000123564 00000 n 0000123643 00000 n 0000123722 00000 n 0000123801 00000 n 0000123880 00000 n 0000123959 00000 n trailer << /ID % ReportLab generated PDF document -- digest (http://www.reportlab.com) [(\011#\013\235\016\300\220u\277\017\217\025\241\3261\304) (\011#\013\235\016\300\220u\277\017\217\025\241\3261\304)] /Info 146 0 R /Root 145 0 R /Size 202 >> startxref 124008 %%EOF rst2pdf-0.93/rst2pdf/tests/input/images/middleware.jpg0000664000175000017500000010712011327456036022660 0ustar ralsinaralsinaJFIF,ICC_PROFILEapplmntrRGB XYZ  4acspAPPL-applrXYZ,gXYZ@bXYZTwtpthchad|,rTRCgTRCbTRCvcgtndin>desc,ddscm>mmod(cprt$XYZ `|9 XYZ or_XYZ &XYZ Rsf32 B&lcurvcurvcurvvcgti_  <n}? s!#|$&u')U*,)-.0b13H46778:V;<>5?v@AC=DEFH"IKJjKLMNOPR S)TRU|VWY Z5[Y\s]^_`sabcefTghik/lbmnopgqDr+stuvwx(y/z4{<|C}G~FB8* ևɈyaK8(ߔȕmK+ לvKRt[E1Ѯ|Eܳδ{d?s4€`A"ȣ|Q#̼͆NХg'ӣ^֔T٣c!ܕM޻t0s2Z hu'T%bE  *`PiY~ } mC; "<#$&Y')&*+-Z.0%124>56849x:;=,>[?@ACD E@FVGjHzIJKLMNOPQRSTVWX(Y3Z>[G\O]V^^_c`navbcdefghijkltmbnPo>p-qrsstuvwxyz{|}~zZ=# ߄̅zgO7nV;ߖqHŜf5ϠqU=%ݧèpT8ޯdE#˶l?zY:¸ÞĈsZ9ɷʓoM, Яэg>կw;٭ښۇqW;s? Y\!WOANm0cc^x l :  l)Lk{ !"#$%&'(|)a*E+*,,-./01y2Q3"3456F7 789n:E;!<<=>?@`A0ABC{DRE7FGGHIJKLMgNDNOP3PQRPSSTUnV7WWXYfZ0Z[\{]=]^_`Laabc^ddefRgghi]j jklWmmn~o7opqqr6rstpu$uvw2wxy4yz{E||}~j; فf!ׄY0 ΉxW5؏$^j$ᕠ_䘬s7w5u9ŢQۥi6کjDӯxdWOH>1 ԻgRA84469:82&-ΩH ch}ndin6[PTV'`P T9\(!GE8Ri ,<N`t>_"O| AvYM Jc O Q  a  z F   }~B=i!Hp  !=!"#N$8%%&'(^)&)*+,U-$-./01t2b3S4F5;6.7$89:;"<-=;>I?T@^AgBnC}DEFHI1JeKLMO)PeQSTZUW&XY[`\^_^`ac6degKhj\km,n~oqrnsuvtwyEz|~E0T厃+ߓl>ϞæϨҪӬʮİԲCv'hȼ#͌_Ժ_:jPbr\sa-"B]v"4EWi|=^8k<tYO\6 ! u " ~ <  j @ #.MuEuUIM U!!"c#"#$%&w'O()))*+,~-^.=//01234y5~6789:;<=>?@BC*DEEhFGHJK=LgMNP QIRSU0VWYHZ\]^`iacdTefhViklwmoDprsuvzwykz|~2΁l 9̉^z!BΗhݜQjͨE±ƹr&۾c7 $N{԰,:Ev\$~ oN9m,C\wFsJ^C:K o e ` ` xQay&~-e9g'o 9!!"#%&4'H(Q)X*^+j,x-./0134E5s679:>;<>?h@ACHDF GwHJZKM0NPQSTVSXY[^]^_anbd[egsijlkmoQpr,su vxy{f}}Q'aA*ϝ}lYB ĮT$ȷaоyp&ȴʊd:Ӷy/ڏ;ߟ[$C|Uv9@JP$e&f?jH#Zdesc Color LCDmluc nbNOptPTsvSEfiFI daDK0zhCN LfrFRXjaJPjenUSxplPLptBResESzhTWruRU$koKR deDEnlNLitIT*Farge-LCDLCD a CoresFrg-LCDVri-LCDLCD-farveskrm_ir LCDcran LCD000 LCDColor LCDKolor LCDLCD ColoridoLCD color_irmfvoy:Vh&25B=>9 -48A?;59 LCDFarb-LCDKleuren-LCDLCD colorimmodhtextCopyright Apple, Inc., 2008C       C "  \ !1A"2QRa BTq#b3CSWr$%5Us4DctE6Fde:S!1QAqa"#R$234Brb ?U)J)J)J)J)J)J)J)J)J)J)J*j1kۤΙ%aciN8rRIWtSoam ļ 8 ۷$ꖪo+Tb٢ ޒ-'wצ^ý)6]xlT\?-f v+]o3wDk/};ZhZt3#<>5m)-lCnhElFe-6J@4Î|oH(YV7aqS2l5iSq>!8jxw({?$}YճZPk ꄟ&׸.UEn4|G\+Li=(4l&|}7d%׵b쳰kL1w} EorJ1)ݔ7KD ,Έ wXZ+njޡnbψ$[X@XO:5KPRx{ '/YЫjP9$h4!Jڞ|9:Y׋:[V涢{o$zVvגuOSMmt*6LySrܬӞ]!KHiMzTAU54[v &aimiLq۫d''~%xA=+f ) ֙./plS z8w$tׯ3L0Մ/&BB9i;w#|,]9v$$}$-s5:( WyѬ{){ԫ +}촎Smiz- B`wyOu#Ip .o橹^ްڮ_Z %Re7{FGaQSuS?(f>Ա%? ʸIs\u.p3Fe ڸڗHLNus*,:C֫ȴ\l_"BJW@)$x_wu3Irwfb]Ɇqй+ kb7U\'X&0ƣܕs*Ž<އt/cjuWv@qQR)$=Jl}h6W}Yb4kDfm֡1kO16sU:Ofq)̚ ^}IKYPqICm`=Jf.䚗*Ip]ZgHf+hn0VI[^ӠjA05?O,-"D8e4om!1_&rAb%䓾mnGܞq$lPjޮh?k-I4'X-<оs@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@+-vvŪ] urI6|V=xPT`٬|`˹\fcDʝyvJTz9{࢓,D̻KTv5A6Ah&+m%i7uR a{iA,0VB]p ڹҔ R R _2^3S"KC# An_^e٦RNNww_WmC+`|[@-v\oV'T̘SO2NBР T 7U%oc #=kqem3˅i>P> y JMݡ3jfXޠY>Tu0+=(tBRwI QJRJRJRJRJRJRJRJRJRJRJRJRJRJRJW|5ap5Z-CҤk/v޼87d ]f'3^=sx8d\ԓ6RH)I?+JH8Fc,[z8; VԵ-DG$ {]i GLP @)@)@*řgX~Z 5ȡYqKE8BQTKo~zE2 ɔZiJZ kMMR kMV;B UfSR;I[JmPl} g\jwya\ƦdN&CqG4sM4mޣA#CΖ}e1kT.X.զE۴Uc8EUw!R}J;u  3^^ysGzy[>EI;â#,ەndm^)@)@)@)@6Iao"˱K=>r0ZE^iAcF. q>lwT7ɫ{hNۍxɴݠǛ cKbLi %ƞiCe!hP!I AkQ>F]ћ{󰕩OܭǬʇy\|ǝA*R R R R R R R R R R R R Rv%%oQiݒ@ *II=ᤝOJIZӭ6ueAEBJM`uz0=mZa6iBq,񣶖e!$l#@)@)@2cBɒb;SP7*R@j-靺<$θ8X`Οr| L5* uR@󖤤1L_,i ݵl7jB<. wJ9AI$:Bt̋>Zos++6Ԏ` W=^-$OZ%)BBl+JRkƣdx4b+8Ŋjd,\Ye%$%q[s6@{ZZfkT;‹o&W Kro@RVJjUbj4s~ #-ta4R cЭRA 5ό1tѐO$&"Ma^h@/q6)*)aiRW)%CdDz;i:0X[yN KQ(ueFWVٍðX64mm0 bBK*Xh5'em vi7a.XS ivǒ&DyL&8ʢ:)!j*NeKgog+s[ebUql` a(!nԂSqAO\:o1ϐWHk5]쀝-eNjjR['{{MC̴CǵI>>haeM\pZ 0Fot[2yWIwKhDas]@QRԥ=im63gV; n™E \djj}">ؗv@0_ 8Ѿホ'}NXխ5"?Y|.s:yۃYIgs#M]e&|[o+m+R!xB|M3*E׋\kfW nFn*[IAdVZTWdNMhc2ێ1OY<@mԲ}iqEBW8ieSm.W86rEnM \Kq\IQq ؄|Z;lnŐoj}76`9uJ<*. y{ս=mR˄?/Go :ՊreNaȞ؄wi8lyEIPh:+U2;#ZQ2|>B:zeq)z=h2 Yem2am,2%O6$e(lv3;tXS#npЈ \y܏R#8▢Ҏ@%1-193YUOp16ȊDnQqm <Gٶo]mSYrW ˵3 sTyT5mĄ8H>sj-[N"5uraJl$T´(I)ZH$T+It2^Yfp-T$[씥Oֵ .דX.l!(M̴!ԧD()MB;z”^k4x3Xw5T J[%Y<.#K:ڂRHApEcš!M#j˴.2_jv^1\7;P.bz*.%*'zjebd{s\ߕ!wAۨP NBe R 4›!M:Ө CPIROB${붔A;;rFZV% 6gzbOwd葷~l(woYSJe@[nBIB ibiw5 ;H<7ZUgylpu)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JaxnGY] mo\oMĉrz;ʉI h2d^9j-Pc_[x%dD#q6I<6)BNwV(Vðoŭx^!jffFDHqZkmxJ'rTw*$I$;Ѥ?W'c6jPBv@JFqQ9vJRJRXS5qxżfY5NE0@9)HJJP=SKza ǛLi/L9iR j! q@RTmVnz4'͝=.t仌n)JRQcI2;_sl7>%rGF贃K+YR̶RRR%)*RnI=c{YO[1ٓ -8vʽκ:~X{a^˸IʋQ"=WՒkU)W%_cH & r[ҏMqF= {329-@T8AyB7ΰzͯ']sG_-$i|Go(3O29:~rUΰ_5:OY㲿BAuAD%UG⬞ d{HPgVkԻ>5э}ROcPðT}'3JW|-:3%k&ĮO6<"s{C4#An)@)@)A˰$ޮQbw0[zS{cop$QQ+=\9M5#^~+=BL.9̒FEA.$n+GL&כ@aR$[WXK ˶; I IR%E$35+i\.O!y8}k*ʇAH(沯9e/')JP*˚֡w\#15rc.,- uJIPإ@Akٓ$콪21L`-lȻ*#5V NN=1:KpVwcu5)<$rwrRF G"Z޷]23e6ApA $,(((((((((Lqљ~eQlFz9'cܧHIX$kݍ@)J$MBs\mdkZCXO!z/KxRR!8FVtf|9 Vge<JQ%3DK[^km*6"º|ƴdΙ--+VI:nV(l~bw䈶{_:6(:aBm tFba! 2aBGR:JP)JP)JP)JP)JPtN (lKJeÍ>$#NQN6*/a8x['S*>MiAf:pxjy@)@)Apnmkj`̈́f[.p*- >ʈ (nA*R)&zq\gGXJJE'PI<-9ą8ڊg|܅7bݫ-ǝTi%-Fa:;lЅ$3*ڍRtL-hž@TG6RVmhXS )JkTh*t3LCkRkp唒BZ5 ۠]7Hl˅5ǓKIJФ$=|Rol.s7kuKN(e`($*l6vH'm%@)@)@)@)@)@)@)@D% z)^) h{=u$c]wĨeCfxq6+Q79;=#D43g!ĭ8rX#V{z`)@)@kf˼] &CmJ=BA$*~\Nlh5qXm)wVGO;gs! v NIʎxB Wn(փȔRT6[;yJP)JP)JP+:}ͮR%a׌ZT _K 5آ˲]%a]8|W~CRxWTېZv%5Pa#am#d)ƒ fYr^mYs:bǕ)PQ[RO`25TuDg)8D.[I%M-8Gۮ`v{Uyp2)+7!i 0Z%[p|Cm£Ymjd5㐬wN؋fd4|VB$t׼%Tciv|- 뷭 t0 -x%k;"BeM#5dOP.R#Ee JȾkW5&ިny)*)e]ߦ{L2 ר_lI)q.$BGFyƝ=ɯ7 kBG2/M<q mhq|;lH$&6Rّļoe> T} #!hw~RG®78%VEx6`0eǐmQ;)D(,}ǰ%-vV[y<wq*A!CbM3K DF.yf"U * t$$ JU宐ٷ]<#\Y̾ژGir-hO7[%.w\ 1-ۂl`c7 Gm4HxbQpIwnW䧋jc=ئC#%MvMd&wM)8 B+kEj^E`&,xS5^mwCJ PznnxAU,zjql^o]B~R]w#(5ZXjNm2|2S?O 6E}JGO}obv^%le9-[z2J}jƼJYJ$6 G,-!Cpt R R[UlfAfd@RmCe%@ [t*aI^̄-XJʜĨ/RZ@%*=]i%GuWʳeش k_-)- +清{lAr\~[jd[eqL8[uDnԶA}=$-JUO((ԌVcw<%c=[q%l{N7ve>sF}q>PTBw𯒽D8|Imկ*ƭ1w/{c[͔,{Ju*OK$ӻYEń[!ăׅ@X" R R R R R R$tezxٱҸ=TΖ};OxkoNFمC@JnnAE+>Nq49ڽ@)@VYZp^_[l_smYik xzUְhI_=Kg9EOkp{ZW#ȘP)!hk%׈7uy,oD$-LQa?*gJP)JP+|v2.WMFΨ% 6T( ']qn]xr-iacf!&GɃ*fctjN@Yy%*fJAIߞ҃i54 ((Y3 ӄX%$4h$K}^,uZGA:@fo7 [љArD2c+cY"ӑj$n KKqW9tRIOcDey^ըm햡Bc+vz^Z $b5'#U'=۰fs]gla׈+d>iQ.uݣ'}N[PuH$9 jjފPfį,3{"vr>88t+>wPg*Vy[Tg$Ÿ!Klf\yċS(t%ĴөJ ;oQ'ssJӋ.-<ʌT*mTGQ|jH2 ,EAcÓpR$}a, pu(T?fss[Xce뎦sm&B*+![Ҫ_ÏLdwW%dۢbŎ@PG0ӷT>q=H3+ \u7faaǼi]_eOOED}*JVu RDšՁvЦNux<HRxҀp*4wkVE2iPũ'u."H%\Cj2*_m,|\CDOwIP~.du c*}";inpmpZB\->΅JQ plWf32ox1![~#yշTq VovK6O1z]VkI;T+(aم9Xs>⾃<8n ~Ѹ ҔRK®uî=bhǽi%JfR#d=9.0ظ@܈қK̼҂jI#AVmqrw֮G;x5\)@)A ջ=~"o܏Ce@;e\c_Ufl_#8է-I-L\!>{.- RPڲvx"r)pN6T䱷(uRx&0((4iPuש0CέSқ%@cyRÕkN_ٛvPeWxWn0}M3)JP)JP)JP)JP)JP+MPwj  uqc9h82# SjFmԸѡT(iƔa c8VHRxaJ>RRJRX)*u3 ㍊…C> }Hf)?! g7mJT(y&jr0Rdf2e >B4eƛ  JRJR$`9r7W|fgT q 346veBN=Yn e(>Kk!}6]oL> LDK7{w듊ٓI<6t*O!QfдRڍ mwH[^CiR\۫KV>&ͻ9R)Z8{[эkxV<)\iJTPjNi! S1/|'쯜6{H5_<1\Q4x9$62R5"RRRRRW ݫȵU2ӷ>ոO%(6JRJRKhfq*n{Y0 w\?uGiDڡ٠6;q@!)pME(|wOғ9CwoWJ)J)J Aoyv;vF})[vw抾TZ1ƕ DM J ԓ_ito}lξU.cȎ\O qNoM+wmKJʥ-m"SS{G!u,PۡoYi] R Rj]s 3K|b+AAQPYFiıVeJGF໷!I繆} y~kcBB% uYeJ:SfrD)םueKqj;J'$I5@)@:wwE %`TҴ(61˵]XO&eVVʐR%O@H$ d9ٟKq.K([kI*JPA+euk. wu?),C`x Ht[RU(3=)J)Js(,V1(*rϵRīPAnJSĺAl^-j[j*IH]ޟf/%7zA~|h't((,bĚc[}%`zG~/Vɧ拗Ƹ!Xn{5((E{Ŀ٧خqGm}m()tf/!\NqQg}R;;TS>Xwę>HO1 %vKZ,l#7{ r&2<>xw-][nG%Ӿi'{bW`8FUq_?o(K?5ݭUu|nK4U7>a$,'t>5CV*Vy< Fc*p R˂?L` N_2gz.,.vǥho1gaO6/vu:3YQGlzP_6/vu( O3jƓ),ۄ)/ ۋʻ1xh?J[;m>=gX_WjKtFVƜvǒfw|{{lT4o-24<ܢ\.]Sˢ3E\.;(j}5V[ձ>HW@o-24<_;y|樂Ck5%]FVƜvǓ}5O/HmtRFKӎGlٸKa6 $8GzBzW5G 7[rQo-24<k\iL#R[elily9q?}Y2S-QEfHbB6@_ЂqZצGִ7Ԗu[qGE3_)~ 3xInQHFk7lYr=;b) 6OeÔNf|MlRl{abӫVUl]OiV_;ڌ^z@R_OTFKӎw|樂CiS7Ԗu[qN/Hm ܎KN8-fq% mSZqR0C]Ư 5`vkS&U<%\1ӛqNܙM~ҥz:DYe}+y!LH(RO #GcJڻn)rԩ(ʴ+JIj2+NUzRB1~[';:7 )^)JPY/s$ʩ{ZʿE~qFj8c8׋rd#u{~JRV}/h>S?m]jrXN-?_))@)Aho\t9A[q-w*+֛w̦!Ө(Z7 I~.at?sт6.6x'Cj܋z¿z(^6o|"_wq-N=#&ƚw,2>S B"-0:]z ,SZ#1oDm+fg-5,)Wew|9oD C=tм˓hgJv9ݟ #ǎf a6RR-2pJ-P:כY1i 3M7m49()R/&T$w3j@ܶP.9%J>X\PyR}YۄNknAz٤MJ ^Xq')1}⥵Ŧa0HBH`rv9Oֵֵݶp=)J})J~)J]Pk?k8sBgJ? )J)J +[k֤b`(9oW)J)J kO[5g+Zoi*W)JX2O~SjQμjJXPb|,v?7 R骝4CNzdetCNʤ.JK)WMJxV@I=+YξTc\)O:QĚڧD^[rlG9/4BVJB55XLPklZmKR9 qsiZ_"WGS)ӎ.l=PcYӀml#(KI*(B͐Ҁ=8]<Иu:.Aɸۦ35g}h 2}8I-?BccS яUS3W%\AL~~y11*a=&jK c+z6qxV7" ZcIrC} mJx쏺3&ǯ\EJ< t aq 2}8I-G>p#u~ҙL>vǤ_Ԗs~p#ucmze0%?+RCNq'|/oI)m`Y %ݕcvǤ_Ԗsv\W+.yS)ӎ.n+<׌wkHt{ ٲw};Op@kjT9m)yHu Ђ VpjxJRjQ]NkOֵ޵i>}/ZWp)âȸtm|J=>yDRRW;F_#-=|x-6 0^W^gEeAŻnxzS!ZǶb5$F 44FJ@+F SҵxҼ*_Iw)lzLIn5=Sa=&jKd}Je0q5R[ȖN训 |z\ġDqŏJP/ӭfO &?F?ebvǤ_ԖsS11)~쪊S)ӎ.j &?F?e<ИQ_RR{S3W%\э|[(|Hnm.$+XoA!+aRy&Uó ';U`d1u?H~pRE[^ջX4SkJS_(>XYʵ*yֵ~JڮGyP"8 y=¦:m<.$KGa_C־qݭ>~>ӟ*,9S Ckݵ{G}ٙţ< %酶q)I.6 F'8!FmzuOߵ [cnn3 T!mW|r_OG~SqN_)^TU5R\Iesm춴ЏgNoy%crOJU KXxR1”O^\D)WZ)*t)J)J)Jgsx_k}5.GM6_W۱ W\O!bYE)g=q~ U%[r;SWX͌iP RXb1; miڿRa4ݏM6֢F`rdyYy΢` -]*VtpqR;R8b㌢ZjC_} iςq(ZO"}\cʲd6IbpCGGD6/eQ)>rTHiJP)JPqqmM:VIP(G:jbM7vH^'qp)!,pzdףiA\X)[mzdFtw ڊ?k|?մZPkCwǀ[w:rH,o}t}Z˓G(nR}^CHKM!(BJRw+)@)@*;.0YaZDZX(^ۮC<á Ts-:U9CwѳupoIpwY0Jۃc1{Zqm7;!(ל>+q)j>*Q]np1'mܻ@6;Jܷ*RiwoJW䴪 grApo"\U Z#|k)շz׋Xفa%"T R kMuJry6msornوηSZqR`)MJz%!+otPf~5džFo+meOFvҁ}U-t1=^D?cNʾ8KRb_Ym=Ps+JR4O'Jƾeh?6\׵]H;>F~{-+]rVxOϒi5&o[(Ȯ-t۬Ǧsqŕ(.R R R R R R?5?\ ecҐlW-|B^ez;ѹvR9%6bQf R گ侰ay L4BB@ZInsc~IH=sMB5 ieZ66W5s_}sMzT; *ɄPBϗۛ[L]5--86[%IMx- *$UJRX_.Wٻc<~kWZ;whΣ1;-P<N1#H(uVBh,Tl4[ryn"dORvZZܡR*)JcN 1s-S*vO-]PWD/pvJ׾A&;nSjnkSJi^Am ˨=P TE]+$RH̗$ⶥnE4 #vm:Ũ?PLpkyfC&4 ݮ:BA(KK]#7.+q}tRRZkVX, l-;:{$(`!BBРn;=uaL9K(y[qH=#ՂGHusubESQP@*6V~r aGT+ )J)JCs1|-&I \K4hFA_dө)(V*P`=tC[[6 !.=+ΈnvK5(ed4㺇Zq!HZ$Gxmښu Z T x}{wqEkbޔnyGm;Mr|Th;)V%7LBU=ұHE?͐ bJ2fnۃT#JȠRA m9jrܙp£WOmwư~=;}VRBlnٽΑrePȄc ^2G5DQH`PK3ȐikPJRI=$xZf%ocUReHň:Bzv}ffrPZQ 4H=B,x*/ &gNUkf̆omL)S:klPji yԩo^9y9i~SIk 6QRQi m%@ JR6rRRW !N8JRIU bdŌNNY5@ <2:j9|^.y5H-QT$VGTR]_m`riM4âmM]j˭ԄqߐTvOr e)J)Ji]C4-$L+`l(!^k'T:Үh5nѺj5>[ȥ=$saR *ۨBV .=_f2uْ;QR֣J'h()JP)JP)JP)JP)JP)JP)JP)JP{(:ԇ?(f%v8J_߉+K l7)@y1Kw JPAⷿ؟.:76C)|2H $$7ރ((1a%ݭi-͹ۣ 2wrkJ-?:Trm*u|dhY mńI%nZX* e:9J퍨R_# n1ٮulxDud^HNi\P8ڂ TXT R ٭ UlqNiLɋ)͞*m(0ʹma75=xʔwGsj-D>AWV'b9-Ո꺭tKhHKZD GՂMiV0 sܷ\oJ}1̆ɖ-F7rfjFnd9L.$)*X#W&g]G% I8ח`q[ߠmӶ.(JWwWZYYbN;X9$w- 寎;*RQjmq4ŶlÑݾ= JG U]~M#{|ymJS*2?yogT琟!P AYJw#q;*{Y_O~ *46{]VWU܎X[̇7z'*jSqmqNC`k7P?9d Xd`dz [\z*Ek²%Et.6=7ǣ%USZ 1nc6 rr{q=X= \lܲ)l/aǎ{ȔRRRW N8$)J;y&Km&yGJ~LeԵ)]jdoZ }2-t)8{Ja Cg*iSq*t+Yk=PzTRyA]#,Gi!HJR6 1Fe mBR\((-6IcñW\m\2Sd2Twu #z7i!HlVCB Pb+YV;zk7{wƜ\CH9 \3zGN4pͥJq[;{nFk]Իwf\77RHԅV$nR-;lJ*:e()+IAAJbڸiY8D{vqJg6\q쓷OARP)JP)JPa\H|De\󡘓ķ$JO]QrշRz%#QJA"4u1tFd#.%_A2RB z4R<8NHӭ tD_aCs)\Ӿp2Jy[K<6uRGQ*ՇvxŎ$@ťh(((ᯄWm]3g7VXhz2I@Д<^ٛ^3wZmͨ%>=1#Q.5nCȟrr8VέEJZzI$렡$;JRJRJRJRJRJRJRJRJRJRJRJRf9> Iޭ/L9ղXD) A+u={n1ȖD3rOSA$Hܩ~\_Ul}2"Km\I)*Eҝ+}{]K&~HK߀-6kG;J)J)JĦ%:˨(q)+IAAz'uw= 7Q[ƕ"=A C`TfJPyS8ZǎHaJx?fv@m$]>=;mm2V$qVC4ęyZuHZHإ@ X:&Ȯz}%dö=hqGڷ (ıYUޕ a)|$PS2tv%ߢ{V2,_&5UryR%KqלQܩJ=Iރ-r\$eUuyR&L'Y>l4&^v;}ۍ'b>4ȇ*鰇x](}S  UaUmi6GC*oPs% >J~ԠvgӉ{/5ȯ/HBADC k-ȳ m^X[~ TRRRR;DvѮV=_"|p0vtQF4@;"8h2j%^(|rKLFZ֢RRIڵ'<_39ܨܙRbF߾IB6W;Ovӷ%ƾ6LQ8c]WcVo9C`wJ7"']qRֳ&Ҕ R R R R R R R R R R R R R R R _oX5̵ܡ82eV;$X; (61ٷdYDLSewii[c}}t *>5M9=qMumDoi{,%CWItR+i[sld)P  V4wj5.n H7Ǹq;D!DSj@lM{IGug 9m\۹`:r (((((((((cZnTs]Ƣ-Ӿ۷È'aR(2Eu#THqrJ˭ c@vSrׁJVwOjEmP(MEAk皥{(<'HS)ܐP{ǴǑ_DSv8*iyŴc}adWP 6Z^9%M!̹f].[y{Ե(Y;((((((((((((((((((((WjlSغnRMuSN6ܤ$})AmMKinȯQC\(,PW)(2CGp{Y^[ 5cw[f '}?=R +yyCBݾζ6l4}|ƕ*ȑK:ڂжRuYګNЖiv fn-#2Rvj R|/i1X@ v:^!gĕh0 ɭ \7 Ҽ|)] \l7z{}?))w QeFi4b{Xf}!H׌ ePڪ?ʓGAw3z J%K׌`u<ʣEݿ;T B{,?M*4#d _d{ +*ڱvYi$oKwQNb߷l*~+5+VC|QZ[?ey:ڧQje{1lq6斓Tl({A\XK)+KS 4 Ɖ_Okڧ";s1vJ>/w1ԗAo}iD2[:QZʔ$MuzX^~;ĀŅ*A= (BWn[{KL\."Kq{ԥ(Irst2pdf-0.93/rst2pdf/tests/input/images/notapng.png0000664000175000017500000000003211350420045022172 0ustar ralsinaralsinaThis is not really a png. rst2pdf-0.93/rst2pdf/tests/input/images/biohazard.jpg0000664000175000017500000000057611413125217022503 0ustar ralsinaralsinaJFIF&&C        #?WQ=ٽQ(( _9#h!x 3#ka;~Q~28ם}T-~:':EDh\ ƌ+٥U@ߕ_ tcz|`%[ Zh(HĒ}Ÿy,1#p~u1󥀕*|=BUjy9!Q$00dR7rst2pdf-0.93/rst2pdf/tests/input/test_issue_330.style0000664000175000017500000000040011423562064022417 0ustar ralsinaralsinastyles: bullet-list: spaceBefore: 50 spaceAfter: 0 bullet-list-item: spaceBefore: 0 spaceAfter: 0 item-list: spaceBefore: 15 spaceAfter: 0 item-list-item: spaceBefore: 0 spaceAfter: 0 rst2pdf-0.93/rst2pdf/tests/input/numbered_links_2.txt0000664000175000017500000000016011444203530022540 0ustar ralsinaralsina.. _general-introduction: Section ------- aaaaa Section ------- See `general-introduction`_ .. sectnum:: rst2pdf-0.93/rst2pdf/tests/input/test_issue_202.txt0000664000175000017500000000012611274030774022103 0ustar ralsinaralsina.. raw:: html iáéíóúñ If Issue 202 is fixed, you should only see this line. rst2pdf-0.93/rst2pdf/tests/input/test_png_dpi.txt0000664000175000017500000000007511204530365022005 0ustar ralsinaralsina.. image:: test_png_dpi_1.png .. image:: test_png_dpi_2.png rst2pdf-0.93/rst2pdf/tests/input/test_issue_249.txt0000664000175000017500000000010011302601424022072 0ustar ralsinaralsina.. image:: images/middleware.png :width: 502 :height: 417 rst2pdf-0.93/rst2pdf/tests/input/test_issue_321.txt0000664000175000017500000000015111401013152022062 0ustar ralsinaralsina.. role:: underline .. role:: strike This is :underline:`underlined`. This is :strike:`strikethrough`. rst2pdf-0.93/rst2pdf/tests/input/test_cover.txt0000664000175000017500000000017311354373763021517 0ustar ralsinaralsinaThis is the Title ================= This is the Subtitle -------------------- :author: Joe Writer This is the document. rst2pdf-0.93/rst2pdf/tests/input/test_issue_156.txt0000664000175000017500000000011111242601166022077 0ustar ralsinaralsina.. role:: tuffy Not TUFFY, l has no hook / :tuffy:`TUFFY, l has a hook` rst2pdf-0.93/rst2pdf/tests/input/test_issue_379.txt0000664000175000017500000000013711471467013022123 0ustar ralsinaralsinaParagraph 1 Paragraph 2 Definition 1 Paragraph 1.1 Paragraph 1.2 Paragraph 1.3 rst2pdf-0.93/rst2pdf/tests/input/test_issue_310.txt0000664000175000017500000000124511357105612022102 0ustar ralsinaralsinaIn the following code blocks, the line numbers always should match the numbers in the content. .. code-block:: text :linenos: :linenos_offset: :include: include .. code-block:: text :linenos: :include: include :linenos_offset: :start-at: Line 3 .. code-block:: text :linenos: :include: include :linenos_offset: :start-after: Line 2 .. code-block:: text :linenos: :include: include :linenos_offset: :start-after: Lin In the following, the line numbers always start at 1: .. code-block:: text :linenos: :include: include :start-at: Line 3 .. code-block:: text :linenos: :include: include :start-after: Line 2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_216.txt0000664000175000017500000000067111265512347022116 0ustar ralsinaralsinaFirst Section ------------- This test has to run with -b1. If Issue 216 is fixed, the second section should be in page 2. If it's not fixed, it will be in page 3. If you run with -b0 (the default), then, If Issue 216 is fixed, the second section is in this page, if it is not fixed, it's in page 2. Second Section -------------- :: bla bla bla bla bla bla bla bla rst2pdf-0.93/rst2pdf/tests/input/test_issue_119.style0000664000175000017500000000056411351252072022432 0ustar ralsinaralsinapageSetup: height: 9cm margin-bottom: 0cm margin-top: 0cm spacing-footer: 0cm spacing-header: 0cm width: 16cm styles: footer: alignment: TA_CENTER borderColor: black borderWidth: 1 parent: normal header: alignment: TA_CENTER borderColor: black borderWidth: 1 parent: normal rst2pdf-0.93/rst2pdf/tests/input/test_vectorpdf.txt0000664000175000017500000000067511345461420022370 0ustar ralsinaralsinaPDF Vector image test ======================= This tests reading PDFs using the vectorpdf extension ("-e vectorpdf"). This extension relies on `pdfrw`__. __ http://pdfrw.googlecode.com Here is page 6 from the demo manual: .. image:: images/demo.pdf#page=6 :scale: 25% Here is a portion of that same page: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 Here is a diagram: .. image:: images/text_and_vectors_001.pdf rst2pdf-0.93/rst2pdf/tests/input/test_issue_473.txt0000664000175000017500000000011012060342274022101 0ustar ralsinaralsina.. code:: python def my_function(): "just a test" print 8/2 rst2pdf-0.93/rst2pdf/tests/input/test_smarty.txt0000664000175000017500000000005311221027502021671 0ustar ralsinaralsinaA -- B A --- B "A B" A ... B \`\`A B'' rst2pdf-0.93/rst2pdf/tests/input/test_issue_452.txt0000664000175000017500000000160111760033133022101 0ustar ralsinaralsina.. class:: dummy * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item * Item .. class:: dummy2 #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item #. Item rst2pdf-0.93/rst2pdf/tests/input/test_issue_340.txt0000664000175000017500000000011311423575052022101 0ustar ralsinaralsinaSee footnote [#]_ .. [#] This is a footnote, it should have a larger font rst2pdf-0.93/rst2pdf/tests/input/test_split_notes.txt0000664000175000017500000000145411247246057022743 0ustar ralsinaralsina.. raw:: pdf Spacer 0 201mm Algo .. note:: This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. This is a note. rst2pdf-0.93/rst2pdf/tests/input/test_issue_315.txt0000664000175000017500000000004411366066422022110 0ustar ralsinaralsina.. class:: small * Item 1 * Item 2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_301.style0000664000175000017500000000057211423562064022427 0ustar ralsinaralsinastyles: smallbullet: bulletFontSize: 12 fontSize: 32 parent: bullet-list commands: [ [ TOPPADDING, [0,0],[0,0], 50], [ VALIGN, [0,0],[-1,-1], TOP], [ COLBACKGROUNDS, [0,0],[0,-1],["red"]], [ INNERGRID, [0,0], [-1,-1], 0.25, black], [ BOX, [0,0], [-1,-1], 0.25, black] ] rst2pdf-0.93/rst2pdf/tests/input/test_raw.txt0000664000175000017500000000021411055536175021162 0ustar ralsinaralsinaOne page .. raw:: pdf PageBreak Another page. Now some space: .. raw:: pdf Spacer 0,200 Spacer 0,200 And another paragraph. rst2pdf-0.93/rst2pdf/tests/input/test_issue_186_3.txt0000664000175000017500000000017111406362557022344 0ustar ralsinaralsina .. image:: images/biohazard.png :align: right .. image:: images/biohazard.png :align: left Test text. rst2pdf-0.93/rst2pdf/tests/input/test_issue_277.txt0000664000175000017500000000144511340143602022111 0ustar ralsinaralsina.. csv-table:: Table 1 :widths: 3, 10 "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" .. csv-table:: Table 2 :widths: 3, 10 "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" rst2pdf-0.93/rst2pdf/tests/input/test_issue_227.txt0000664000175000017500000000010611273066466022116 0ustar ralsinaralsinaThe background for this is missing. So this hould have no background. rst2pdf-0.93/rst2pdf/tests/input/test_aafigure.txt0000664000175000017500000004372511275330042022157 0ustar ralsinaralsina================= aafigure README ================= Overview ======== The original idea was to parse ASCII art images, embedded in reST documents and output an image. This would mean that simple illustrations could be embedded as ASCII art in the reST source and still look nice when converted to e.g. HTML. Since then the aafigure application also grew into a standalone application providing a command line tool for ASCII art to image conversion. Installation ============ The package ----------- To install aafigure, you need to have administrator rights on your system (be root). Type ``python setup.py install`` to install aafigure. This installs a package that can be used from python (``import aafigure``) and a command line script called ``aafigure``. The Python Imaging Library (PIL) needs to be installed when support for bitmap formats is desired and it will need ReportLab for PDF output. The docutils plugin ------------------- The docutils-aafigure extension depends on the aafigure package also requires ``setuptools`` (often packaged as ``python-setuptools``) and docutils itself (0.5 or newer) must be installed. After that, the ``aafigure`` directive will be available. Implementation ============== Files in the ``aafigure`` package: ``aafigure.py`` ASCII art parser. This is the main module. ``aa.py`` ASCII art output backend. Intended for tests, not for the end user. ``pdf.py`` PDF output backend. Depends on reportlab. ``pil.py`` Bitmap output backend. Using PIL, it can write PNG, JPEG and more formats. ``svg.py`` SVG output backend. Files in the ``docutils`` directory: ``aafigure_directive.py`` Implements the ``aafigure`` Docutils directive that takes these ASCII art figures and generates a drawing. The ``aafigure`` module contains code to parse ASCII art figures and create a list of of shapes. The different output modules can walk through a list of shapes and write image files. Usage ===== Command line tool ----------------- :: aafigure test.txt -t png -o test.png The tool can also read from standard in and supports many options. Please look at the command's help:: aafigure --help Within reStructured text ------------------------ :: ./rst2html.py README.txt >README.html This results in the ``README.html`` file and a ``.svg`` file for each ``aafigure``. Display the resulting ``README.html`` file in a SVG capable browser. It has been tested with Firefox 1.5, 2.0 and 3.0. Short introduction ================== This code in a reST document that is processed with the enhanced ``rst2html.py`` looks like this:: .. aafigure:: --> Which results in an image like this: .. aafigure:: --> The ``aafigure`` directive has the following options: - ``:scale: `` enlarge or shrink image - ``:line_width: `` change line with (svg only currently) - ``:format: `` choose backend/output format: 'svg', 'png', all bitmap formats that PIL supports can be used but only few make sense. Line drawings have a good compression and better quality when saved as PNG rather than a JPEG. The best quality will be achieved with SVG, tough not all browsers support this vector image format at this time. - ``:foreground: `` foreground color in the form ``#rgb`` or ``#rrggbb`` - ``:background: `` background color in the form ``#rgb`` or ``#rrggbb`` (*not* for SVG output) - ``:fill: `` fill color in the form ``#rgb`` or ``#rrggbb`` - ``:name: `` use this as filename instead of the automatic generated name - ``:aspect: `` change aspect ratio. Effectively it is the width of the image that is multiplied by this factor. The default setting ``1`` is useful when shapes must have the same look when drawn horizontally or vertically. However, ``:aspect: 0.5`` looks more like the original ASCII and even smaller factors may be useful for timing diagrams and such. But there is a risk that text is cropped or is draw over an object beside it. The stretching is done before drawing arrows or circles, so that they are still good looking. - ``:proportional: `` use a proportional font instead of a mono-spaced one. Lines ----- The ``-`` and ``|`` are normally used for lines. ``_`` and ``~`` can also be used. They are slightly longer lines than the ``-``. ``_`` is drawn a bit lower and ``~`` a bit upper. ``=`` gives a thicker line. The later three line types can only be drawn horizontally. :: ---- | ___ ~~~| | -- ___| | === ~~~ .. aafigure:: ---- | ___ ~~~| | -- ___| | === ~~~ It is also possible to draw diagonal lines. Their use is somewhat restricted tough. Not all cases work as expected. .. aafigure:: + | - + | - + | - + / - / / / / / / / / / / -- |/| / + | | | + + + - - - / / \ - \|/ |\ + + + +-+-+ | + | | | + + + - - - \ \ / - /|\ |/ \ \ \ \ \ \ \ \ \ \ -- |\| \ + | - + | - + | - + \ - + And drawing longer diagonal lines with different angles looks ugly... .. aafigure:: + | \ / \ / -- Arrows ------ Arrow styles are:: ---> | | | | | | ---< | | | | | | ---o ^ V v o O # ---O ---# .. aafigure:: ---> | | | | | | ---< | | | | | | ---o ^ V v o O # ---O ---# Boxes ----- Boxes are automatically draw when the edges are made with ``+``, filled boxes are made with ``X`` (must be at least two units high or wide). It is also possible to make rounded edges in two ways:: +-----+ XXX /--\ -- | | | XXX | | / / +-----+ XXX \--/ | -- .. aafigure:: +-----+ XXX /--\ -- | | | XXX | | / / +-----+ XXX \--/ | -- Fills ----- Upper case characters generate shapes with borders, lower case without border. Fills must be at least two characters wide or high. (This reduces the chance that it is detected as Fill instead of a string) .. aafigure:: A B C D E F G H I J K L M AA BB CC DD EE FF GG HH II JJ KK LL MM AA BB CC DD EE FF GG HH II JJ KK LL MM aa bb cc dd ee ff gg hh ii jj kk ll mm aa bb cc dd ee ff gg hh ii jj kk ll mm N O P Q R S T U V W X Y Z NN OO PP QQ RR SS TT UU VV WW XX YY ZZ NN OO PP QQ RR SS TT UU VV WW XX YY ZZ nn oo pp qq rr ss tt uu vv ww xx yy zz nn oo pp qq rr ss tt uu vv ww xx yy zz Complex shapes can be filled: .. aafigure:: CCCCC C dededede C CCCC CC dededede CC CCCCC dededede Text ---- The images may contain text too. There are different styles to enter text: *direct* By default are repeated characters detected as fill:: Hello World dd d d .. aafigure:: Hello World dd d d *quoted* Text between quotes has priority over any graphical meaning:: "Hello World" dd d d .. aafigure:: "Hello World" dd d d ``"``, ``'`` and ``\``` are all valid quotation marks. The quotes are not visible in the resulting image. This not only disables fills (see below), it also treats ``-``, ``|`` etc. as text. *textual option* The ``:textual:`` option disables horizontal fill detection. Fills are only detected when they are vertically at least 2 characters high:: Hello World dd d d .. aafigure:: :textual: Hello World dd d d Other ----- :: * { } .. aafigure:: * { } TODO ==== - Symbol detection: scan for predefined shapes in the ASCII image and output them as symbol from a library - Symbol libraries for UML, flowchart, electronic schematics, ... - The way the image is embedded is a hack (inserting a tag trough a raw node...) - Search for ways to bring in color. Ideas: - have an :option: to set color tags. Shapes that touch such a tag inherit it's color. The tag would be visible in the ASCII source tough:: .. aafigure:: :colortag: 1:red, 2:blue 1---> --->2 - ``:color: x,y,color`` but counting coordinates is no so fun drawback: both are complex to implement, searching for shapes that belong together. It's also not always wanted that e.g. when a line touches a box, both have the same color - aafigure probably needs arguments like ``font-family``, ... - Punctuation not included in strings (now a bit improved but if it has a graphical meaning , then that is chooses, even if it makes no sense), underlines in strings are tricky to detect... - Dotted lines? ``...`` - Group shapes that belong to an object, so that it's easier to import and change the graphics in a vector drawing program. - Path optimizer, it happens that many small lines are output where a long line could be used. Authors and Contact =================== - Chris Liechti: original author - Leandro Lucarella: provided many patches The project page is at https://launchpad.net/aafigure It should be used to report bugs and feature requests. License ======= BSD Tests ===== Simple tests ------------ Different arrow types: .. aafigure:: <--> >-> --> <-- >--< o--> -->+<-- o--o o=> Boxes and shapes: .. aafigure:: +---------------+ |A box with text| +---------------+ .. aafigure:: ---> | ^| | +++ <--- | || --+-- +++ <--> | |V | +++<- __ __ ^ | |__ +---+ |__| | |box| .. +---+ Xenophon Flow chart ---------- .. aafigure:: :textual: /---------\ | Start | \----+----/ | V +----+----+ | Init | +----+----+ | +<-----------+ | | V | +----+----+ | | Process | | +----+----+ | | | V | +----+----+ yes | | more? +-------+ +----+----+ | no V /----+----\ | End | \---------/ UML --- No not really, yet. But you get the idea. .. aafigure:: :scale: 0.8 +---------+ +---------+ +---------+ |Object 1 | |Object 2 | |Object 3 | +----+----+ +----+----+ +----+----+ | | | | | | X | | X----------->X | X X | X<-----------X | X | | X | | X------------------------>X | | X X----------->X X---+ X X X | | | X<--+ X<------------------------X X | | | | | | | | .. aafigure:: :scale: 0.8 +---------+ +---------+ +---------+ | Shape | | Line | | Point | +---------+ +---------+ 2 +---------+ | draw +<--------+ start +----O+ x | | move +<-+ | end | | y | +---------+ \ +---------+ +---------+ \ \ +---------+ +--+ Circle | +---------+ | center | | radius | +---------+ .. aafigure:: /-----------\ yes /----------\ -->| then this |--->*--->| and this | + / \-----------/ |no \----------/ /------------\ +-- | | First this |-->+ | \------------/ +-- | + \ /---------\ V /------\ -->| or that |----->*------->| Done | \---------/ \------/ Electronics ----------- It would be cool if it could display simple schematics. .. aafigure:: :fill: #fff Iin +-----+ Iout O->---+ R1 +---o-->-----O | +-----+ | | Vin| 100k ----- C1 | Vout | ----- 100n | v | v O---------------o--------O .. - Resistor should not be filled -> can be solved by symbol detection - Capacitor not good, would prefer ``--||--`` -> symbol detection .. aafigure:: |/| |\| | | +---+ e| ---+ +--- --+ +-- --+ +-- -+ +- b|/ |\| |/| | | +---+ --+ |\ | | | | c| -+- -+- -+- +++ / \ \ / | | - - -+- -+- -+- | | c\ /e | | | +++ -+- | |b - Diodes OK - Caps not optimal. Too far apart in image, not very good recognisable in ASCII. Space cannot be removed as the two ``+`` signs would be connected otherwise. The schematic below uses an other style. - Arrows in transistor symbols can not be drawn Here is a complete circuit with different parts: .. aafigure:: :fill: #fff :scale: 0.8 :textual: Q1 _ 8MHz || || +----+| |+----+ | ||_|| | | | +-----+-------------+-----+ | XIN XOUT | | | | P3.3 +--------------+ SDA/I2C O---+ P2.0 | | | | e| | MSP430F123 | +----+ b|/ V1 SCL/I2C O---+ P2.1 P3.4 +---+ R1 +---+ PNP | | +----+ |\ | IC1 | 1k c| +----+ | | o----+ R3 +---O TXD/RS232 | VCC GND | | +----+ +-----+---------------+---+ | 1k | | | +----+ | | +----+ R2 +---O RXD/RS232 | | +----+ | | 10k GND/I2C O---o-----+----o----------o-----------o--------------------O GND/RS232 | | | C1 | | C2 =+= | ----- 1u | ----- 10u | ----- 5V +---+---+ ----- 16V | | | GND | | D1|/| +----o------+out in+-------o----------o---+ +---O RTS/RS232 | 3V | | |\| +-------+ | IC2 | D2|/| +---+ +---O DTR/RS232 |\| Timing diagrams --------------- .. aafigure:: :aspect: 0.5 ^ ___ ___ ____ A |___| |___| |_________| |______ | ___ ___ __ B |_____| |______| |________XX XX__ | +-------------------------------------> t Here is one with descriptions: .. aafigure:: SDA edge start stop | | | | v v v v ___ __________ ___ SDA | | | | |____| |_____..._________| ______ _____ _..._ _____ SCL | | | | | | |____| |_____| |_____| ^ ^ ^ ^ ^ ^ | | | | | | | 'sh_in' | 'sh_in' | 'sh_in 'sh_out' 'sh_out' 'sh_out' SCL edge Statistical diagrams -------------------- Benfords_ distribution of the sizes of files on my hard drive: .. _Benfords: http://en.wikipedia.org/wiki/Benfords_law .. aafigure:: :name: benford :foreground: #ff1050 :aspect: 0.7 | 1 +------------------------------------------------------------> 31.59% 2 +-------------------------------> 16.80% 3 +-----------------------> 12.40% 4 +-----------------> 9.31% 5 +--------------> 7.89% 6 +-----------> 6.10% 7 +---------> 5.20% 8 +---------> 4.90% 9 +--------> 4.53% | + | + | + | +---------+---------+---------+---------+---------+---------+---> | + | + | + | 0 5 10 15 20 25 30 Just some bars: .. aafigure:: :fill: #00b ^ 2 | EE | 1 EE 4 |DD EE 3 HH |DD EE GG HH |DD EE GG HH +------------------> Schedules --------- .. aafigure:: "Week" | 1 | 2 | 3 | 4 | 5 | ------------+---------------------------------------- "Task 1" |HHHH "Task 2" | EEEEEEEEEEEE "Task 3" | GGGGGGGGZZZZZZZZZZ "Task 4" |DD DD DD DD rst2pdf-0.93/rst2pdf/tests/input/test_issue_321.style0000664000175000017500000000010411401015502022402 0ustar ralsinaralsinastyles: underline: {underline: true} strike: {strike: true} rst2pdf-0.93/rst2pdf/tests/input/GL-Antique.ttf0000664000175000017500000160451411243152305021220 0ustar ralsinaralsinaFFTMP OS/2Z`cmapvcvt +featTl,gaspdglyfbdEdlhead 6hheaeD$hmtxlA&locao(+hmaxph morxPCׁ@nameA m#9post3Q(I:propVbU_< ƎƎ7  7Zaz@.1CLP @  8Z  l!MVvk)\}l"niiX{fM2{m8oyr*$_PE6yF-jb-&[gVniVVVC<;f_[di]_ [xp,dPChx|IkqZ=hEZSmu|nv}xA65HHE~ttg0lqsa)oOeIQ5"D)))))))))))))))))))))))))))))))))))))))))))))))(D"MB\444<>>>$$N(N*N$<6-(4F:-,MBB*@F@ #hf@(3\$""$""$::?:?4 43P666:0llZIQQQK0)D  iiX?"lDK+6<egyOdBRW]Q[ Wql}egr$P6y-b&yOd?RW]Q[ Wql}5V*,Y%+=L 5(R*S!'?D5(R*S!'?Dcrqrpx9]hcZ)crIkq=EZSmunqrpx9]hcZ)eI[N<N<dt>2TKls`fd]t(DM^4<>NNFX-M4BPFBNLF;><@ h^$?4D68:0\`lPZ\9KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKdtrrQ1r3%&::aGTo-:U6(lh=HVT->}o>EsY^"6B\N>4D\4$*P6ZDD-<4F:B6B4M\@NBNX`\PhN4DF\\\N NMP$\\`D8v)?><z+B\F<&_Hl/I[#,R@P#*.x#lN3l?K+h,5EsT:g(:T*C2 , %#s h4K0h>J+l,5EsT:g(:M* B. & %#s h4K0h>Vd"DXHBRJ8:A,043QlBOa)5U/4S G"R17@E453:|T6A%-)"fhRR+SlBOa)5U/4S G"R17@E453:}U6A%-)"fhRR+Sl< 8<x h@(!? & = I#%%&& &#&)&7&h&&&'!'@...000050=000123WM)Kz'Zs0 ? % < G#%%&& &"&%&/&`&&&''?...000000;0A00123M 0P0`0aeHڛڔړڒڍeNJ?٦Һойждг"""""~"y"m"e"`"T#7 5 !?? % & < = G I ##%%%%&&& & &"&#&%&)&/&7&`&h&&&&&&''!'?'@......00000000050;0=0A000M00T112233WMMJ )0KPz'0Z`s4600789a:+y0 (08@HPX`hpx (08@HPX`hpxz@2@*@"@@@ @@@@@@@@@@@@@@@@@@z@r@j@b@Z@R@J@B@:@2@*@"@@@ @@@@@@@@@:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx (08@HPX`hpx (08@HPX`hpxz@2@*@"@@@ @@@@@@@@@@@@@@@@@@z@r@j@b@Z@R@J@B@:@2@*@"@@@ @@@@@@@@@:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx "yTTTT$x4$l08l\  $ D d  $ D d  < h  < d 8 d (LtDlDt4d8h,X$P|8dP$X@t,p$P|$@\x 4\$@\x4P"+p/////0000X0x00011T11278<9:$:t;;T<<<==D==>>\>>?p?@@@@ABCtDDEpFHG4GLGpGGGH4JKL<LdLLMMTMNNO`QQRRR\RS\SST\UUTUV(VVWXZ0Z[\\]^_aTbhcefgghjjkXl@mlmnopqssuvw0xy4yzz{`|(|}~0@x`(, (8@,L|||`L(t|tXp `8<$pHL(T`ĠPLȈ ʠ˄̠,Ͱ\4|Ќ Ҭ|ԬPռh ڜ ۤH4d\8x,`p (,0`LTLHd4 h H   h L`hTP0 !$"#%'(*,-/134p68:,;=?ADCpF0GJMlOQSVXY[4\_aXc`efTgi0j`kklmoq8suw,xTy|}d $ t$ D(L 4Th |  `T4$,4¤ØČt\PDȰ4ɸ0ʨ pxlHP@и0Ѡ҈ph|l0(ٸH`4,޼$lߴ` 4T$tx$$x   dP0`ld<T4 "4#$&<'')$*+-p./</1 12456$74789x:;=h??A4B`CE FG4HPI@J JKM$NOpPR@STUV4VWWXYZ[\\\]^_`bbcdexeg$hDi0jlkhl0lmTno(oprLspt(uvwhxz {`|}~H|\DL8(Dx$$DLxH 8l8 xX8Ŕɐ Tt,(DTH( pۜ4ސt@X<< XH<\D,8\t8|` @ D   T $ @<(Dx8L(t 4 !\"8##$$%&'()*+,d-8-//012|3p4`506 67|8,9::;D<,<=>?d@$@ABCDEFGHxI(JJLMMNOhPQQRSTUVXW X XYZ[X\<]]^_L` `abccdteefgh8hijklmn|oXp4pqrdstu`uv<vxvww\wxx0xPxxyTyzd{ {|}P}~ p`p<H lLp\|PX<(H0T$,H pфlthl\\"4(-|1\7`=`AEHhKLNNO|PPQRtSlST|U0UVWXYxZ0Z[\]^_`|a\bPc\defghh\ihjkmmnoqrLsuuwx(y`z|}`(ppdpphtL X (`@T4pDh`(dPx|4x(`8œXĨ Ű<Ơ@ǠDȬtdlH lHdߴ`\0@`|`0P0(`   p@@xhh!"$&l'*L+-.x/1H24579:<>8?AxBD$EGI\JhLN,P(QS`TV@X4YdZ\]_`aHaace`ikmp8swDyh{|}X}~ @LlXX|<PtTLtlt`Tp00PP< pxϼ($ӤtLdژ<d0 (D8d($8 XTptT LD`|    h     $P\P  dX0 < !"#$%(%&'|())*+T+--./X081P2P34<5 66789@:t;|?@`AXBHCTDDEFGTH$I IJKLPM MNO$OQQxR RST0UDUVW\X0YHZL[ \\]^_L`(`abcdl!*./<2<2/<2<23!'3#! f!XX462"462"&'&.@..@>7N7I  IE@..@.'77'  *462""&5462#"&54>54&".@..@H!.@.&8:0 &,&;T;E@..@.) .. UwwU.F7=jF ,E|Kd0*;;*X462"47>2"&.@..@>I  I7N7U@..@.   '77*"&462&5462"&54>7>32265H.@..@H!.@.&8:0 &,&;T;@..@.V) .. UwwU.F7=jF ,E|Kd0*;;*?}462"$462"/D//D/D//D D//D//D//D/V}462"$462"$462"/D//D/D//D/D//D D//D//D//D//D//D/L/462"462"&'&462"462"&'&.@..@>7N7I  I.@..@>7N7I  IE@..@.'77'  _@..@.'77'  4462""&5462"'5462>54&#".@..@\ &6&$670$-&6&  I32IE@..@.%&&RssR1F18iJ &&*$! 3IF*2U462""&5462#"&54>54&"462""&5462#"&54>54&".@..@H!.@.&8:0 &,&;T;&.@..@H!.@.&8:0 &,&;T;E@..@.) .. UwwU.F7=jF ,E|Kd0*;;*@..@.) .. UwwU.F7=jF ,E|Kd0*;;*LB462"462"&'&462""&5462#"&54>54&".@..@>7N7I  I.@..@H!.@.&8:0 &,&;T;E@..@.'77'  _@..@.) .. UwwU.F7=jF ,E|Kd0*;;*B462"462"&'&462""&5462#"&54>54&".@..@>7N7I  I.@..@H!.@.&8:0 &,&;T;E@..@.'77'  _@..@.) .. UwwU.F7=jF ,E|Kd0*;;*v8r ##4.4>4.4>53r/7//7/g/7//7//7//7/g/7//7SNI0>8>0I'>0INI0>8>0INI0>'I0>8>0@5!((T5!PP8 3(8 3P@ #53!5!#53XH(((((T #53!5!#53XHPPPPP8  #5##5(((((XH8  #5##5PPPPPXH@ #53#53#53#53#53VVVVV(((((((((T #53#53#53#53#53VVVVVPPPPPPPPP8  #57#57#57#57#5(((((((((rVVVV8  #57#57#57#57#5PPPPPPPPPrVVVV8@!! ( 8T!! P48@!!4( 8T!!4P48@5!#((8T#!5!( P8?#!5!P4'8T5!#PP 3!( ( 3!!( 4P 3!!P ( 3!P4P 3!5(@( !5! P !5! ( 3!5PTP8 3!!(  ( 8 3!!( 4P48 3!!##P ( ( 8 33!!(4 ( 8 3!!P4 ( 8 #3!!P 4P48 3!!#3(4P 4P48 3!!P44P48 3#!5(( @(8 3#!5(( TP8 !5!3# P( 8 #!5!33P4(( 8 3#!5PP4@(8 #!5!3#( PP8 3#!5!P4 4P8 3#!5PP4TP8@5!!# ((( 8T 5!!!# (P( 8T !#!5!5! ( 4(8T5!!# (PP48@5!!#3N(( 8T 5!!!#4PP( 8T !#!5!5!4P44(8T5!!#4PPP4 3!!5(@ (( !3!!!( T ( !5!5!3 (TP(4 3!!5(T4PP 3!!5P@ (( !3!!!P4T ( !5!5!34PTP(4 3!!5PT4PP8 3!!#!5( ( @ ( (8 #!5!3!!( ( P (8 !5!3!! ( (4P48 3!!#!5( ( T4P4P8 5!3!!#P (( ( 8 5!3!!#(4P( ( 8 3!!#!5P4P4@ ( (8 3!!##!5!P4(  (4P8 !!##5!5! (4 4P4(8 !5!33!!4(4P4( 8 #!5!533!!P4(4(4P8 3!!#!5!P (  4P4P8 !5!3!!4(4P4P48 3!!#!5!P4P4 ( P8 !!#!5!4P4 4P4(8 3!!#!5P4P4T4P4P@!!%!!VnX@(((T!!%!!WoXTPPP7 %##(((WW8 %##PPPWWh%!5!5!5!(((80 333(((8h %!#!!! ( H0((8@ ###!!0(((0H (8h !!3!!0(H0((H8h =!5!5!# ((((80@ !5!##H0((( 80h #!5!#!5!0(0P(H(( !!!3 (h(((0H !!330(( (   3!!3!!(P(  (0H( !3!5!5!( h((0 333!5!((( (0  !5!#!5!0(  ( (8 %!#3!!! (( HH((8  333!!(((H ( 8  33!!!3!((H ((HH8 =!5!5!3# (((((80  #3#!5!30((P(H((80  #3#!5!%5!30((P(H (((( 8i !5!#!5 ( i((Q(H(8@ !5!!##HH((((  8g %!#!5!5!!5!H(HH'((   %!5!5!5!3!(()(H 333!!5!(((  ((  !3!53!5! (( h(HP(( (8 %!#!5!5!5!3!!! (  ( H(((H((8 !5!333!!##H(((H(((  (  8  !33!5!!#!!5! (x( 0H(Hh(H (xH ( 8@ 3#"#546 t(@(tȅ8@ !#54&+532(tȅt( 26=3+5t(@tȅ( 53;#"&(tȅXt(8 53338 #53338 5 53 3 # ''''''''@!! @(, #( @!5! (8,#3((T!5! P, 3P, T!! TP8,#P, T!5!!5! @P8 3#3P T!!5!! P8 #3#P , !! 85!}}82%!528%!w8,!!, 8!q8&!&8!k8 !! 8k !!kk8 !!8q !!qq8 !!  8w !!ww8 3# 8} 3#}} 8 !!  d8 #'+/37;?CGKOSW[_cgkosw{ #'+/37;?CGKOSW[_cgkosw{53535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d118 #'+/37;?CGKOSW[_cgkosw{ #'+/37;?CGKOSW[_cgkosw{ #'+/37;?CGKOSW[_cgkosw{ 53535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353531111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111!111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d11R11d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d1111d11d11d11d11d11d11d11d11d11e8  #'+/37;?CGKOSW[_cgkosw{ #'+/37;?CGKOSW[_cgkosw{35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#35#!11111111111111111111d11111111111111111111d11111111111111111111d11111111111111111111d11111111111111111111d11111111111111111111d11111111111111111111d11111111111111111111d11111111111111111111d1111111111111111111121111111111S1111111111S1111111111S1111111111S1111111111S1111111111S1111111111S1111111111S1111111111S1111111111c 5!}}k8 3#k}} 8-! 8-! + !+ 8 !! 8 !!! + 8 !!!  8 !!  + !+ 8 !!!! + 8 !!!)a 6& 4>2"&QZ{{{Z{{{{ v !!7a&0m;ܺ v!7 & ܺR$9M%".'>32#"&547>73'"&547.54632632.54632-B"16 5 B:7 (2 !!7:B 5 61"B$".$:9$0 $'1H (6!% #, %LX83os,# %!6( H1'7#2B55C1#7\"(.39>]fw267>32#"&#"32632#".'&'"'#".=.54632327&5.#"#"&54>754>32&547.54>2>547"'&/627>54&54654'7654."654&5477676'4632#"&#&'"#"'67>5>54%2?7?7>?76?2?76?6?7?7>323272>'&/4&'./47#".5467>32"&54"5>?&'#"&%"'3'"''"''&'"'3/'&''&''&'&'.'&332632q63  =Nh   L))L   hN=  36P= $$ $&'  ' 4]z]4 '  '&H %  6-  :ie        O     Q7    21D6  %      ei5      D      `12    7(CB$-U    )5    , 88 ,    5)    U-$BC_/-0!48++84!0-/ !% @66/V.5%%5.V/66@ %!B 4 #(F)%.6!70)  f$$$##5      !#- )0(4 BF(# Na.  )07!6f$%#'' ! % (#T(0)}k{462"'!46727"'4'7,>,,>8fU@XX,8Uf>,,>,Bg2Z22EB2gl| 6Xf&"&'62.5472654'727327#"'#"&'7'4>7&5467.#"&>54'67&%4&#"'654&'5>54&'5'6W+p+ 778. 9H#Eb.cDL3"e7SEES7e"3mJ;wY;M]CL*Fb .8H9 ;bF+KC]M;Yw;J ##--m2Rf@ aF(&  &(Eb9,1661,9&LWZ  ]XX>#"53533#3#'#5'75#535TxPxx}bP}b7xx7F7H09H097F06#532#7'7'7'7'3#535'77''75#5;264&#7KllK<<77<<77P+<<+n(```lhrrhl((lhrrhl`(FhF53533#3###535JPP77U7\7UR'3?K53#!53#5!3#53!#53!53533##5!53533##553533##5!53533##57((77((K(KK(K(KK(MK(KK(K(KK(b((77((77(KK(KK(KK(KK^(KK(KK(KK(KKnz%66  462"$264&"4622654& nB#  ""ffff͋Bv  8  (IffffIX 35!5!5!xxxxxxX 75!%535!3#xxxx xxXxX 753'5!5!3#xxxx xxhxX 5373#535!3#xxxxxxxxxhxX 75!%5!5373#xxxxx xxxxX 75!5373#5373#xxxxxxxxxxxxX 753'5!3#5373#xxxxxxxxxxxX 5373#5373#5373#xxxxxxxxxxxxxxxZ67#"&546?#"'h"*2JgoaaogJ2*"u?pqP`eXXe`Pqp?og$7654&#""'.#"632'54632RC4(@ R @(4CR@oPtlltPoZۭME.)55).EMobttb[H  TT,KI/i%!67#"&4632&5462632#"M##82SuuSvvSuuS26k@@k&vv,6SuuS6,vvZ567#"&546?#"'%26323&5463232654&/h"*2JgoaaogJ2*"/ ,R, /(9hWWWWh9u?pqP`eXXe`Pqp?, II ,B/APPPPA/Bog632'54632@oPtlltPo@obttb[H HT,/i1Q%3&546323264&#"#"&54654&"#"&#"32632!67#"&4632&5462632#"R'5"1GG1 ".FdF." 1GG1"5'l##82SuuSvvSuuS26II+ FdF/!61GG16!/FdF +k@@k&vv,6SuuS6,vvX!:Sl"&54>3232654'&5432#>54&54>3#>54&54>3#>54&54>3)83  X̎X  38) <'+ <&+  <&+  <', <', <&+  kj)M0;OUyyUO;0M)j1>1Y-.*1>/Z.&!1>0Y.&!1>/Z..*1>/Z..*1>/Z.&!H'462"!2#!"&5463!2654&#!",>,,>);;) );;   >,,>,;) );;));d H/$462"462"'!2#!"&5463!2654&#!"N#2##2#2##2A);;) );;  }2##2#O2##2#;) );;));d H'7462"462"462"'!2#!"&5463!2654&#!"#2##2s#2##2#2##2A);;) );;  2##2#s2##2#O2##2#;) );;));d H/?$462"$462"462"$462"'!2#!"&5463!2654&#!""#2##2 #2##2##2##2#2##2A);;) );;  }2##2##2##2#O2##2##2##2#;) );;));d H'7G462"462"$462"462"$462"'!2#!"&5463!2654&#!"#2##2#2##2 #2##2##2##2#2##2A);;) );;  2##2#s2##2##2##2#O2##2##2##2#;) );;));d H'/?O462"$462"462"6462"462"$462"'!2#!"&5463!2654&#!":#2##2#2##2##2##2#2##2##2##2#2##2U);;) );;  2##2##2##2#2##2##2##2#w2##2##2##2#;) );;));d h75!xxh75373#xxxxxx5!5!hxxxxx 75!%5373#xxxxxxxxx 753'5!3#xxxxxxxx 5373#5373#xxhxxxxxxxx{m-7@FPY_ipv462"2#"'"&'#"&547&54632>26327&'&'267&'&'64#"6%67."&'%"6767&&477&'676764'&254'7&'667$$D8__8D1?IZI?1D8__8D1?IZI?\(@-.WX3:;:;:Y@ !\(@-.W3:;:;:Y@ !\W.-@!  .! f+\^)+\^\W.-@!  .! $$07$GbbG$7TaaT7$GbbG$7TaaTR9=6+WQISSI+")) k9=6+WQISSI+")) "932654#"3#327#"'.547#"&547327#53.#".54632&54>32>54#"#>54&'32654'#"/35'3.#"&5432##"'326**q@IQG6D: 81#((""((#18 :D6GQI@J'^#{5m "#00#"9 @"/ m5{#^'J/"@]L)%%)Lzvq**!'I]-S* ""#:[S6%C4l #53533##553533##5#33535#5FF܌ FFA܌܌*b 753533##5ܴܴҴܴ4l35#5!3!!#LLPPLNPP4l%35#53533##5ת 53533##PPwPPC'53533##''3335#5##"-P((P(((^-P((PW(|AW( #53533##53533###3335#5"FFȯhFFmAȯmYmW%%'7'7\____\3__\\__U  #%37'#'7#773'#7'373''YYY7#"'67&547632#"'>32.54767KU b  XH V@KwK#PKwK@|V#-4)!!)4J%!`!%Nb +\ ]\+Cb >"h;K<7#"'67&547632#"'>32.54767672327.>54'3263327.#"327&'654'&#"654'&'KU b  XH V@KwK#PKwK@|V#-4)!!)4B6j6BIjL.91_=u19\4 >_UIJ%!`!%Nb +\ ]\+Cb >"h;K<?62"&=7326H.@..@\ &6&$670$-&6&  I32I@..@.W%&&RssR1F18iJ 2&&*$! 3IF+"&462054&"#"&'.5462"&54H.@..@H;T;&,& 0:8&.@.@..@.*;;*0dK|E, Fj=7F.UwwU .. )f".'.'2>    | XbE$C ")K.#9Mu6462"&264&"MWzWWz#8P88PzWWzWP88P82j$@D7&54  '7326& 326=3#"&%&546;#"+532654'36t-s1!$4Q^B<\O)B/6)/+E1H;Z*-q@ - *3%B^O%1.BH.(20DHl:%!=!ܾ#$"."#52>22>23"."NI0>8>0I'>0INI0>8>0INI0>'I0>8>0/7//7/g/7//7//7//7/g/7//7&2>32#"'.#""&54>7W"d[w2*E.X3%t3%!Gu1T#/%cP]2B1<1"2 %@7.8= /' %&2>2>32#"'.#""&54>7%#".'632#".'632W"d[w2*E.X3%t3%!Gu1T#/%cP]2Bk 6)/DZ#  1% 0G 1<1"2 %@7.8= /' 6 &j*1&B""&54732>$J4\  Pj~ 6&!j~jBC,""&54732>$#".'632#".'632J4\  ? 8(6TY 8*1[Pj~ 6&!j~j 6 2!>! >R%"'.#52LN6b{]'*TnZCS`$$R`^3:P/,Y (1{m`-%#".'.54>7.'#".'"&#"m)   6#18h/! (::(A""  H@,tR>T#!  %%!&: N !!!D2DDD2D=47>3232632#".'&'.#"#".#". %*" N  "Q(  M &-' J7 '(!+5+W#4(EUT"8W:A!..-6- 9^_rz67>72#"'>54.'#"'#".'&'46?#"&54732764.'62>?2327&547 76 'Kt.AJ6 17@C,)"NI; mQ (48, 66  &B%A  &'M& hX4[:*'8X4'9 ng%&L ! $Ly%A& %6 * !  A!#3! ! 0' 5ibarz67>72#"'>54.'#"'#".'4'46?#"&547327654.'62>72327&54760+=mK)ALJ7 ?4@L>)!6+d aH   h #3BH#0 DF )7 '0#@F, U" ! >$2/ 1  6sM8eF9!9Bc82I$(40a*1b0T1' # ,%" 7 **  ^S(0C) (&54;!?#52#"&'.'6#".=4.'63>5g ! ; */ #;   HXN -5% zg.: 3kJc&*+,A!- &Emx3@2#"&'.'6#".54654.'63>B?) +  8)5=(!-L'1V4 $/:'"?!HB^T%1768T'    0X8o!4"'67654.#"#"&54732632>54&'2#"&#" Dg3$2h#&26w,FNb "&U&%() 072"Gf 7=#')<"'67>54&#"#"&54732632>54&'2#"&#"n  7 *-6"! $@ -'9*N (Zd}!& "+)'CLl?44%4"3 >(>4"CxL$GN.1  BU%32632#".54654#"#"&547>7"#"&5473267632'674&'2#"&#" 1% #892A  )?  5{H/ %# !2Jf"; Q0  4I  !$@ 1r8. DCI& .#4 ? %aK`32>32#".54654&#"#"&54>7>767"#"&5473267632'674.'#"&#"$#%, *,x8@T'4Q%  a32&#"%>32>32#"&54732654&#"#".'#"&54732?#"&54732754&'62a!m//B%&C  $i 0($;UWP52+327*8G   " f!(.  ",.>3.  &("h' bH8Gc8#+ % B3"&-@ '  2 D% n (*o %2654'67&#">32&#"32654&#"#".'#"&54732?#"&54732754&'63267632>32#"&5478$+$ '; V/0W7"B@G5G\)   #, &#+3; );<'(A . V#CLlofD@"# &N!! 24+'*TC+1$:'Q'2 &" @ X /!)35) 3'1]G\~G.8# yRf#".'&'32>54&#"#".547>7"&54>3327654&'632632.'#.'>sH # $$:.$:54&#"#".547>7"&54>3327654&'632632.'#.'>".'632'632#".lH # $$:.$:32654.'32#".#"3272#".54>323254'#"&547327&'#"&547327.#"'7>329-43  Q1+$3 +%L04@P8.HM0Km62I;/k3?GFV  3F #*.*6  !)"%  + 7 U  / ^  6!'!0+2-"#98.D S7&  A * K+  $$>32654.'32#".#"3272#".54>323254'#"&547327&'#"&547327.#"'7>32%#".'632#".'6329-43  Q1+$3 +%L04@P8.HM0Km62I;/k3?GFV  3F #*.*6  !)"%  +   D( /NP B/!/T7 U  / ^  6!'!0+2-"#98.D S7&  A * K+  $$&= .x.D /*ye%4>54&'632#".'.*CQC &/=V4W\$$>6'cQ^# G18S)H`dT!)+n1-X+.$ys%/94>54&'632#".'.2#".2#".$CQC &/=V4W\$$>NS 4>e36'cQ^# G18S)H`dT!)+n1-X+.52/#N9.& Ts ]".54654.'632>77>54&5".53274&54&'>32654&'H+E# *A1#+ %1@Q.4/7T+J68 ' %B/!1 DZM'&' F<#NTcl 0 H)EdP3 @V$q  ? P)  491 ? #! G(Uj ]iw".54654.'632>77>54&5".53274&54&'>32654&'#".'632#".'632$+E# *A1#+ %w1@Q.4/7R)J60 ' %B/!1  9( 7QL# 2$). MZM'&' F<$MTcl 0 H)EdP3 @V$q   ? P)  491 ? #! G(UC1p2 9 &/73267632#".54>"467"&54732632an[]Fh@g=)}CER 8/7z *? TZ!#%3 /<4&;_ DJ'%/;H73267632#".54>"467"&54732632#".'632#".'632an[]Fh@g=)}CER 8/7z *? <( 9QV% 3%;9 TZ!#%3 /<4&;_ DJ'%UG 3t3!=/NW%#".#"3272#".54632654&/#"&52327.5463232632654.2,F'DHMD!@M9'S.Y3FDEP/G6+G&%1  ,]*$ '.!!$=-n 6(H/N_ [&&$I' ;B $2> 74$+% "1[NWco%#".#"3272#".54632654&/#"&52327.5463232632654.%#".'632#".'6322,F'DHMD!@M9'S.Y3FDEP/G6+G&%1  ,]*$ '. 7)/CN# 3% /P!!$=-n 6(H/N_ [&&$I' ;B $2> 74$+% "1H5 &s*3,?#%#".54654.'>3232>?y'6@' #)9& !A0+RE/3l &D~Y;6 &(6LA!3*7A#0=%#".54654.'>3232>#".'632#".'632<y'6@' #)9& !A0+RE/3  9(6Wf 8*2]l &D~Y;6 &(6LA!3*7 6 2!>! >_w \4.5&#"326>7#"&54&546325"&547327654.'632>7#"&#"./5? )7 12b82K -Q ?0 &IO=N2-ERG G'?1 $)T5F-D AP/ >!'$((856 )   <1PDwO;Pp \hu%4.5&#"326>7#"&54&546325"&547327654.'632>7#"&#"#".'632#".'632./5? )7 12b82K -Q ?0 &IO=O1-ERGh >'(.!'$((856 )   <1PDwO;H4 *o%6$Eb".5#"&5467327654&'>327654&'4>3267#"&#"#".'23273267227L9 ?, M $$g-!U ( ,?_+D)N/&"7-#H(0.$3/[) "-T^IF( /B, A!B&*>-7, :V8 + $zJ. x%L7=-   6bnz".5#"&5467327654&'>327654&'4>3267#"&#"#".'232732672".'632#".'632#7L9 ?, M $$g-!U ( ,?_+D)N/&"7-#H(0.$3/[=+%-M5! =./0> "-T^IF( /B, A!B&*>-7, :V8 + $zJ. x%L7=-   |9 )&*+> +8N>7#"&#"32>3#"&5467"&547232?"&5473267632 0"5ttO E8Y>2 ( '%coQ'4T1 Y !jE@H" ?s &"n ./T3P" Y@u 1' m 22# & ANZf>7#"&#"32>3#"&5467"&547232?"&5473267632#".'632#".'632 0"5ttO E8Y>2 ( '%coQ'4T1 Y !jE@H" ? 4*-@N# 0$ 0Jq &"n ./T3P" Y@u 1' m 22# & AH8 +k*1(Y!S"'63267&272#"&547327654.'632654'327#"&547>7"#.Q O[6L.n* ,)]6."90+\o+c#/H!F 1( & !D $ -=@4#&L6 & QD74#6&"( !2-H&# HIg<= Z&y!S_j"'63267&272#"&547327654.'632654'327#"&547>7"#.%".'632%632#".yQ O[6L.n* ,)]6."90+\o+c#/H!F 1( & !D $ -= D.6*@((s J@4#&L6 & QD74#6&"( !2-H&# HIg<= Z&0#&V4Q$54&#"#"&54>7.547654.'632654.'327632#"CS<4\!+  )= J: *BM  4'",?$ae#GE+2LP,T:-EE>H;,8{C% g 3&.!   #7Ua=)M3>A0^Q]j$54&#"#"&54>7.547654.'632654.'327632#"#".'632#".'632xCS<4\!+  )= J: *BM  4'",?$ae#GE+2LP, 5*,IR 1&.TT:-EE>H;,8{C% g 3&.!   #7Ua=)M3>A0@ ? 9p 56.{ %4&#""&546732>32#"'67>KEr!E  ~=U \$BQ11B? ++`Rk  0MF*4&#""&546732>32#"'67> `X894;)6,+X  $ OE|S*v#BX?-B?TQ"773jG -6V-*6B4&#""&546732>32#"'67>".'632'632#".`X894;)6,+X  $ OE|S*v#BX?-D/5*A*&w  #L0?TQ"773jG -6V//#% W 4j`1"327#".54>7"&546332$7#"&au8`b/*?gAH|Q0:L(  J( 2"b1;F"327#".54>7"&546332$7#"&2#".2#".f ,1>au8`b/*?gAH|Q0:L(  J( 2"K2/#N9-&#C->#".5467&54654.'632676763232676320OH%0=2#="!LV #!/, LwP2&@0  'D+JT#".5467&54654.'63267676323267632#".'632#".'6320OH%0=2#="!LV #!/, LwP2&@0y B)#.LS#@*#/  'D+7&'6%327654.'>32>54'327#"&547>7"&"327&?s M"9 4!+"(@QIW-,(13H7+?4  (0 $7 nL. '! ]:_@$ ,L #9.%ny'0rH6+? B>Q#- G!="/)' ",M;=m>D%-A?G%I])N3267#"&546327#".54>7#"&5454.'632]5@`q8Uj *_!'@"[D#EF,?5A6 -80,')-(  "!C.*s G9k@,)X^&$U w^$ M[\fo{267654'632632#".'#"&54632654.#"#"'#".'.'47.327&'632>7&#"'7 BJ7' " s  =G;YQG9+ 'A*,5%  "   &)$%?/ '-#";#'."8C!)02& @/.0K4H89)]e%#  ?T8E!9CX=@&,2(c!gfr|67632#".'#"&54632654.#"#".'#".'467.54>7654&'632632>?"267&%6l39,:2 !W/?THME2 (-M %    %9%  &!!A  $.3$"*1+J2N>T+WJUG)11: "DH!4  v$B ;(  0 4$$#$~ #&NVr-:"#".'&'.'4>32#"'>54&32>54& -Jq=  &xz@`o^# *4O2;!k6 `L8,*32654'327#".'#"54632.="'#.54654&'632676"32>7&9'  E (56 D/NK$W=S@$/^9*5/"#8B: B'"&+ *$*  7:C , " % 5ls!;#1"D%B N220 L0L SsKh!)/A>G&,,  ,s#.54654&'632676"32>7&327654.'>32654'327#".'#"54632.="2#".'62#".'6E9*5/"#8B: B'"&+9'  E (46 D/NK$W=S@$//I :&+&,! 2# L0L SsKh!)/A>G&,,  *$*  7:C , " % 5ls!;#1"D%B N22p,$=M$/4 ,s{#.54654&'632676"32>7&327654.'>32654'327#".'#"54632.="264&"462"D9*5/"#8B: B'"&+9'  E (56 D/NK$W=S@$/,,PG&,,  *$*  7:C , " % 5ls!;#1"D%B N228,,_T<3232654.'>32Q"Z- Eb0G>/%7 6! / 3232654.'>322".#".'2?"Z- Eb0G>/%7 6! / W-!#+= b#Xq`-5UR+KD<% ;=Jg;!;9!]i\ * @8/-!N{$G$&iHPX#"&'!".5467#"&54732>3232654.'>326264&"462":"Z- Eb0G>/%7 6! / 7.54>7.'632&#"632#".#"#4'326~c?X^   6];0 Om%("! O"):='!Nc(Dm@+$$L6 .h,o=?8*7WCY^  K*=?/S/-&;F=*V%X 0:0$.2GF2+> $6MN6DVIR^i%#"'"&54732>7.54>7.'632&#"632#".#"#4'326#".'632#".'632~c?X^   6];0 Om%("! O"):='!Nc(Dm@+$$L6 .h,o=?8*7u  D( /NP B//TWCY^  K*=?/S/-&;F=*V%X 0:0$.2GF2+> $6MN6D= .z.D /VIRZb%#"'"&54732>7.54>7.'632&#"632#".#"#4'326264&"462"~c?X^   6];0 Om%("! O"):='!Nc(Dm@+$$L6 .h,o=?8*7,,P $6MN6D,,_T<32'$>{T%\/ZS +\ )-]l!#e<%l6"EM"c&\b<"PPO{!#<YZ +7%#"&'.#""&54732>32#".'632#".'632'$>{T%\/ZS +\ )-]k"#e<%l67=37Vd+ 8*1]"EM"c&\b<"PPO{!#O2!E 21=! >;YV (0%#"&'.#""&54732>32264&"462"'$>{T%\/ZS +\ )-]l!#e<%l6,,P&#"326#A1JK3!3Z  'VI  1#M %8,%'2$ H3VZ[>= aiT2|3(,Q EB,)+-%3E 9$0 # -" 1*' Rr"$+/A>38B r3< @=R 3_!$ 4%B>@",fTt327654'"&'32676322654'327#".'#"&54632&5"&'#"4654.'>&#"326#".'6322#".'6q#A1JK3!3Z  'VI  1#M %8,%'2$ H3VZ[>= aiL2|3(,Q E:,)+-%3 6%50>9 6 E 9$0 # -" 1*' Rr"$+/A>38B r3< @=R 3_!$ 4%B>@", 9-5C_T_327654'"&'32676322654'327#".'#"&54632&5"&&#"326#"4654.'>$264&"462"j#A1JK3!3Z  'VI  1#M %8,%'2$ H3VZ[>= ai,)+-%32|3(,Q E$,,P38B r3<",i @=R 3_!$ 4%B>@,,_T<32>32654'3263#".'#"&5463234'"&547.#"32NT "" "I 'MAJ/[!fY fR4_?P\SI rb   -@ 2/'PG,'",!/7#' M NF!;W@%D*,*?A80DfC/#   [QZ>7.'"'.'>7>7"&5473263654.'2#".'3267A-646[/&'1   ATH8(&fM* '4SNb 6Qi$3Pp<` 6M&+B,!# e3<5  4R,f$>"P2"J @  P1!/&"F? A=D 4$5;#6 V"/J3dix2654&54632#.'674&#"#".547.546327#"&547327654&'63267632&5465&#"36_Q @/6N,%$.)2dF+AI/0=@<-0%D  X 2?  %/*b 'TXj(_T_4%9(;4-X!)A)  9'!hBFR; 0  &+!*( *-4,/ k[  ") (0%)=@iERk.'&'47.'67654.'632#"'>54&##"''3267.'>  #*1^R  #<\vn3H  !. -E <  *4        (7}B\)!29$ "F/}L~N7 /ck!"$*'22)$" '/U8 v  3( (&# "BI2632#32654.'#"&547&5467&547365.'6322#'6"BKXE@FH(,>tdgjVI6Y 8(   F Bs7.54323254'632#"&'232654&#""67. )0E   "BX'-M+!EG>G7.543232654&'632#"&"67.6I:6,6Qy)", ;1= %Y  - ,T%r "C7 5-X\#H0Nc "n3%S<1$<Ѣ'9U8[.A(%" @2N3 0 >) kC24"M! 6 <C% ;GN%2654&'67.5#"&54654&'>32676322#"'654'7.#"6D;[<3 L?$,"-%> 8Z1I'4Rs[ K7:(%K!{ !$4#\KJQ%2654&'>7.5#"&54654&'>32>76322#"'654'7.#"6ZLuMA $d*.8,90P! H!T.>_1B iu_GJ30`+ # *.DeuaMn 3NW7#A}TX> h." >+1",k+O&xvnT%{-83" .;E#".'&'#"&54632&54&54.'63227632327&#"$ \M 2@;/1(< ?$^ "*D;E#"&'&'#"&54632&54&54.'>3227632327&#"1 td > RLMkjJ#9 % (!C` 7;%`/?,.:).H- &+.O54&#".54>7.'6325 (&. QmB?)?be.4E.)=)$%  -F,  !Sk!!) |N.R46U.,wI=64?: BK!2N:B*   V6(1"'>54&#"#"&54654&/632632 1G;-7 0%"G+A]OQ1CS9yGnjkkc: ,  kV4#"#J+n]ӔryeAAJ%#".54632>54&#""&54>7"&5473263>323274&#"7V`-4=%B1#I=BWA6Q+"&#h~l(% G+$5\|M$cw@ $;`9+ .;BC]4OV38N)+"$y @'6 2 N&+[X`i>323267#"54654#"#".'#"&54>7.54>76=4'>322676546_ ,R^%<)`kMz G4%#   ,$ "C-7 'D " ; 0?j  )F0,+_^ >#'\z5wC /4u.;. I' :' %$$$ 5 $C{;'0%1[J>32#"'>54#"#"&54>7>7&#""&547326K )8'90h.Kgh9= 5VdD-2P/')!OP4@8!=3 " vBr`@d>) -8U3-A@-)0J[;D"=)  2/Q^k".'#"&54>7.5467>54&'4632>32#"'>54.#""6?"&4654&54t    & H^B  97cEFk6NN Ok<.Sb !$B%|%*;6 0 O!;'  - 9% 97sV6_:"(tG!.5l- / !49! xR^j".'#"&54>7.5467654&'4632>32#"'>54.#""6?&4654&54P    /\yU  I%  FYZFcd# f%D0k~)/$T!/  g;04 %#:e)Mp(# : J/  ! HGoEzK+4[!0;&'$:)<!,CI*Y L Yd732>74>7>5#"&546732632632#"54632654&#"#.27654#"P!6+OB,*V9    *P;1-WL/)?UP)I4%FtN$@9%<%'0b" -"C*.W'2"$KC/5Q&  U9 P # v54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'632654&#"#".#""&54>"65p6", 23"C'4p& S!H30!oSB%".547327654&'632>72632>32#"'73272#"&5>7.#"#"5467>#1"E& ( #-!4>8$(/TE8S732~9PS9(7t3nB+9 "-/G*!$    FP#2UQ@98pD )o^49& O 83MnnM  -"  Rx)<GT"'67>54&#"#"&54732632>54&'2#"&#"".'632#".'632j  7 *-6"! $@ -'9*N (Zd}!& "+5*,IC 1&.T)'CLl?44%4"3 >(>4"CxL$GN.1  ? 9u 563L^%#".'&'&'32>54.#"#".5476767"&54>3327654&'632632.'#4.'6Wn9 H -  ,0A +_3/,  T9.0~-hV"(Fx ($5JBj   0  I # +CG %5#.G;- f.["&54654'632>7%>54&5".53274&54.'>32654&'6n2A !2& " 5&2@#  $+A#?%) 3%!* va^7 6/( &:\6X  2 ,% (-& 3$ 8C #".'632#".'632 A3$6S` 7&2X~"G2 A"8z264&"462",,P! >@4654.'632>32632#"'32654#"#"&YY  (C !& 7 0 ;"JDEPkDZx@jA  K>'Q   (uXNRd'jZl8''B"'>54.'>3267&#""&5<>732>3272 F  %-G0b= x-<  uxLb]   6E2!8   `$>qkuJ"'>54.'>32>5&#""&5464>732>3272 9zU/:# >~O :K   <^EO   E$ +'H       z/:W~*7>54'632#"&'4654'#" "2#5   By'nK7 ?5H% B2 `  #35>54&'4632>7#"5>74#"#".'6+ - D3 %> ]sr+-=_9. % %$  ! $/(7 Zc8+VRx@ L#"  (N4&'4632>75>4654&'4632>7#"'>7&#"#".'6$%9 P #B'2! P Sm{p+(7X=G- /    /.   .87  G ^xZ,&D>YYq; )a,-  5=26767"&#""&5463327654'"&54>7d0"S S='uB    F16 Iq W* Y%,  '     07$ e,/ . h#4726767"&# "&5463327654'"&54>7<=,j (kN2 SQ/ Z?E $b r%!5/8   V & =F.sG= ;' >7>7.54332754'632>32#"#"'.'265#"u'Gb54@k D ;#e#4&: ;1EzD+# a40!"Y~." 4. K_x@A7>7.54633274654'632>?2#"#"'.'265#"x2fr%+ CL* !W "(L-y5B0'KK?72#"&54.'6PA'\RU< L)#=%!3F+$%R  5# [ -vU*B6Yh];bD :&  \*%:7AH (@ GI@LW"##"'6.547327654'632>72#"&54.'6#".'632#".'632OA'\RU< L*#<& 2G+$&Q" 5# [,wU(>9[<  C(#/NM B//Th];bD :&  W/%:?9H )= G= -x.D 0^N747327&'.54673274.'>3267672#".'"&=;aC y "#C :A\ >=N^  ! _Q0/_  5. +3,+ &3(a :&=c+5:9j'#)J f#".'632#".'63247327&'.54673274.'>3267672#".'"& ;( 8RX%8.::K=;c@ "t " "C N^  ! _P~F 3u4M&0~0/_  5. +3,+ &2(a!:&=c+5:9j'#)J.("'>7##"'>54&'632272Pc`5 ZN=1t;8 e:a<]X*tm_> XlS' ]%> xPk(5A"'>7##"'>54&'632272#".'632#".'632Pc`5 ZN=1t;8 e:a<] 5%2GM' 6(5R\*tm_> XlS' ]%> xP1 0y/6 -K2>54'#"'>54.'632672#"#"O[6Dz(^  K10RpZ? &s|z4A%v  K>IA SH5 $dc4q K#".'632#".'632>54'#"'>54.'632672#"#" C(#.LD$E)#0V#OZ6Ey(^  J 2Qp[= &s}z4h; +~*A ,x&u  K>IB S )5  $dc438,7472$7>54'""&54>732$7# "&.D D5H  a:+O> إH0"-)J!   :$!" 54'""&54>732$7# "&2#".'62#".'6.D D5H  a:+O> إH1J ;&2&- =,t0"-)J!   :$!" 73274&'>3267>54&'632>3.#"#"'676#"'6HQC; ! 8L'  C #"= !L #( O*- :KZP$K!" w1 ] B'  [7 3R T(* 0)j "  fjJ)~Z&`=Q\h.54>73274&'>3267>54&'632>3.#"#"'676#"'6".'632#".'632+QC; ! 8L'  C #"= !L #( O*- :KZP$K!" w1 ?"-SY:+5XQ B'  [7 3R T(* 0)j "  fjJ)~Z&`oG7m! N%9dy"074732>7.#".'632632#".7.#".'632#".'632#".'632632#".,8PtxU ;( 9QJ% 3$:: I3*(:d%>01 S@&! BrcW-Yp F 34"=0Y$>@ +$!8h$r0"'>7.54>732672#".'@XmWc/v7   9$#V _Y#!=+E%9[g`+;'  $9 + q;";1Ed'V~1E0<G"'>7.54>732672#".'#".'632#".'632n@XmWc/v7    9$#V _Y#!=+E B01'GG! "I0&'.J1%9[g`+;'  $9 + q;";1Ed'V~13#&7)aF473274654.'632>7#"'67327632#".5465"&# $J gU 9- fD-,Q]+"9#!IY* \EFA7J &#& ,7#"'67327632#".5465"&#".'632#".'632Z# $J gU 9-fD-,Q]+"9#!IY* \EFs D(%0J=$ ?,#0S>7J &#& , ,+(2#*.'>54.'6".'632&WJ  e†Q D0&7z!M "B.@Q\:%' 2?2#".'62#".'62#"&"&'>54.'6".'63243K =&.'- ;-,&WJ  f…QC0'8z!$#;G$B HM "B .@P \:%'7;"'>54&'632272#"'#"'6767&'63267#W7 G {6LS7/%!6wY w@KM+V!: _F8=a @! %F Q-* "?Ad49-]yQbV NyS Y#".'632#".'632"'>54&'632272#"'#"'> 7&'63267# 5%2GM' 6(5R2W7 G {6KW4/-% 6wY )3!5(3)+J.T">ZJ81 0y/6 -=a@!%F M-*B?Ad4 # ,,7OhP Nyk?"&47327654'#"'6$54'632>72&#"#"'>8S#9C ,&'hW"9I2 -Ez$U r; E,lkp$( G@ - i  K4  ! 7 Im?JV"&47327654'#"'6$54'632>72&#"#"'>".'632#".'6328S#9C ,&'hW"9I2 -Ez$U r; E,lkp$?"-SP:+ 5X% G@ -  i  K4  ! 7 I G7v! N%9 !.%#".'63274'672#"'>%632#"., 1# ,Z"%O 1YmO Zc9 +a 1/"76dA$ilI!{V94':? $3#".'632%4'672#"'>%632#".| ?-"7u-, /#f $?OisItˀI9<(?x$,G E#S XnnjQ1 *m:#"#3Ku %<J#".'6322#".'6#".'632%4'672#"'>%632#". <)":4D> 2 ~ ?- 8t.- /#f ?re^zZ-NF? ?1<:$,G F#T -^ "u`C."$3JU$54732$7&#"#"'>7.2&547326 .QB^PF#Lj' ST]I qI@ K/-X4D,3$  XS6 2ә A) %:  $5@L4732$7&#"#"'>7.2&547326".'632#".'632 .QB^PF#Lj' ST]I qI@ K/-X4D<"-OP8* 6T,3$  XS6 2ә A) %:  E2v!K%4|"".'#"'64&'632#^&':# 0!'!<i,3$6V?"/;; Qs!6bN^R8n ;#".'632#".'632%".'#"'64&'632 9(7V]+ 8*1Z^&&9$ /!(!<[ 6 24!>! =:+4$7V?"/;; Qs!6bT^R8Q-4&'63267.#"#"'>7.5473276!'G:{8\ "!/u sL ~NRD2 "&+>7Q<\F  {zK{  8 & v7x#+%&#"&546732$#&547326#ZJ1'L 7.'6A*0A1S/!H5"r?;oF4 10/&/ F(? !hY)32%* B ?b4LM#HDd, &&20xB+8H%4'#"'$7.5473267#"&'62#".'6#".'632T3 @~vu1 /!S9S & 0:m 3  :( =E1NL2 7  *7JREx-%)([E+"-<*1@"?%p6$654&'632#"|,OQ~W&5J W 4zRAy 632#"."'>54'632L 4c# R T V |Ju7':"COm,.Q3uT6y %7#".'632#".'632632#"."'>54'632  D("/NM A//T 4c# !R UV {R= -x.D 0OJu7':"COm,.Q3uT5y0264&"462"'632#"."'>54'632,,P32>54'>323267#".' %O ?t>  !P=-R>?g-E0  <6G#Jb5) R83/ W34(&@4:FR%4654&'>32>54'>323267#".#".'632#".'632' %O ?t>  !P=-R>?g-E0   ?"-TW9+ 6V<6G#Jb5) R83/ W34(&@4 H8y!M%7:BJ%4654&'>32>54'>323267#".264&"462"' %O ?t>  !P=-R>?g-E0  ,,P7"&#".54>332$-Z 5: >4JA2 a > x<e2B  ''3>#"'>7"&#".54>332$%#".'632#".'632-Z 5: >4JA2 X C(#/KK# ?,0RU > x<e2B  'g; )|*> +'/7#"'>7"&#".54>332$6264&"462"-Z 5: >4JA2 ,,P x<e2B  'r,,_T<32".#""&H  in FT^~>B!32".#""&%#".'632#".'632H  in FT^~>B!! =ENO3264&"462"4732>32".#""&,,PB!7;~ &D\R23)(x.) 92Z*tR;.2'Y=/-Q( +,4A5;   p#t-D%N,J 5)#4|uE*3;R%3F)'!X;t MZf".'632#".'632274&'63267"&#"#".'3654&5.5472#".'6#"54>7?"$-ST8* 6V:~!&C[T13)(x.) 92Z*tR;. 7/ Y=/-Q(sG6n!L%6 TL A96  p#t-D%N,J 6(#4|uE*,Ag,3F)'!X;tFS_264&"462"274&'63267"&#"#".'3654&5.5472#".'6#"54>7,,P7&#".54732$7#".K8i6  ~J!hze2MG:+&R )4` D+)1;".311.Ep0 ,632#".632#".2#".'6)$WGQx +=?) # N!OV;% /iI0} A)#!/F3 !.>'H,"06D hn)#".'".54732754&'632$7&l]) o9'(   "/@(Iq;S") 3&_ 7#Dg O FQ"l(:%#".'#"'>7.'632654.'>32:  $4ZRp:PD_l72!1 ~X   1IJ,)#7 -'4H, $&AjE3#/)    ]  w=0Fq}jV32>7654'.54732$7672"32>3#"&547.54:j( >>: );*9FB K D#0  c J}VC:=U$  .. &  W/  K5)4 !O2! =#(L74732>7.'>32>7#"'>7#&#"#"&'.'. 6H   3./C0%E/{ P&6q2, (*  L /_!r/a4 5141/sG4732>7.'>32>7#"'>7&#"#"&'&'.s  F]  A; /X  <)%f '"$%2;@u" :$ 4'8 a  CB<8x.47326767.#".54732767&#".%&!>TU &/3),,F , #8K"+ 5 1%.t># /a-147326767.#".5472>767&#".!1$*P 'k(m&4;!B'@XD# 9"& 9 -H`,7 D>.U, =K&547326767#"&547326765#".473267&#"HJ *  !(M     "-E#I)"-4C+(  m ( L3+'0  6{.fP.5473267>7#"&547326765&#".54673267.#".2#6)"(*3c ("  -!;  X-] 4+  B1"" !2:$3 # f<8 2  ( E$&$'5.5473267"'67&#".54732$7|'04.V0" + /A!0 /G!"L @1 *  :/:) A:&54654.'632#"&%"'>54&54654'632B !@"`>ZcJ Ed7 8/!X  (_ /# G5f "`[gK!1fV`F,FE" $Bk)D94.'632>%.54>7654.'>32> )U -dcm|d$$   "V $ N _7"&5467654.'632t2YX9Z!c s^Z  'W21?*Sd Jw DL*/94.'632>72"&#"#"&'&67"6  *E"PC4% p .K ! Q3->! '0  ;k &%Z-'Qo$'"'$"#"&'4654&'632672P"0+6!/!QJ ^txdG o '! T.- ' (8jtA;("'$""&'4654&'632$72"s?8D(%+'8h_ Xn}wH!!3)l;8$3H mƌi3oiJW747327.'63267654.'>32>7"67&#"#"'467.7674654'o ) 4!7!TH  !;-2&8.=yqO-??]q%e"@X0" a)& :%1& =. $ 9c-5$'G3,3S  J%O DF27>7267&#".547327654&'7>3267&#".547 N[: U Iw U-G9{i~+I$&  7 "F&7= [N/:G  9 ( 6( ,r   g73&#F:"#"'$.547326765.5473267>76-h(zC#=!R4!;9.L  $3x o| { ) 0$R&,$$ .% ! }O 747327.".'632 :;,NN5$;J0'`'0{KY-G! 7'!NZe4&'4632>?<>54&'4632>7#"'>7&#"#".'6#".'632#".'632$%9 P #B'2! P Sm{p+(7X=G- /      D( /NC B/!/T/.   .87  G ^xZ,&D>YYq; )a,-  r< -.D /?"##"'67.547327654'632>72#"&54.'6>3%ZS?g<0*4! ? $G #]B  )4EdDQ - I-*49  270>54'#"'>54.'632672#"#"tx5_ Jv :& %@RK/ Za_(_85;093A7 *  NM) B#".'6322#".'6"'67"#"&'4654&'632$72 <)":4D> 1 $ 7F$,(7o_Xn}w ?2; :Z0! 3)l;8$ 6H mƌi3e cp2#".'6".'63247327.'63267654.'632>7"67&#"#"'467.7674654';+J &J(+4!L4$'2N  '"3#:UG A1*$&8.=yoR->A[s%4]/F "@7267&#".547327654&'7>3267&#".547%#".'632#".'632N[: U Iw U-G9{i~+I$&  7 "F&7=  D( /NN B//T [N/:G  9 ( 6( ,r   g73&#{= .w.D / R#".'6322#".'6"#"'$.547326765.5473267>7 <)":4D> 1 T6-h(zC#=!R4!;9.L  W ?2 ; : o| { ) 0$R&,$$ .% 4 c$462"A\AA\\AA\AQ2#&#""&546732$76"a*W:$L  M4$>* G)   5%".'632_'dJ473y],7AV& 0\4&8"e[ &#".'632#".'632".'632e:36Wb+ 7*1['dJ473y], D 21=! =7AV& 0\4&8(.54673267#"&'674'"&#"/$A 3(Q  **?*: m4#54)J%'"5>7##"'>54&'632272Ma: F=0&Z} /*N.L/tiiIq(o^?ETBI / e^>!.%4732$7"&#".'632632#".  LU?Z]C 9(".N.0* G ϔ Dfej#Fu1 2 %8-"'>7.54732672#".'@Se[.Ow, +C IEc0!NA$;_]$. - "X./&6Nak".'#"'64&'632 If,%  .&| D1%-.?Z+Lz J@,4267&5473267#".'#"'6767.'6h"h&5&@%8*Y 1.jV7a+GL77  VA!('! 3 1M(;<95N#3 5W&23Q 632#"."'>54'629A@RA *C!F@-4>U## @@:%4654&'>32>54'>2323267#".: ?2Z0>/n#@0q0N1C$/*8:K (! ?,(&C( ( <5 #"'>7"&#".547326#F"]_eU$ 0):3(0W^@O' 4 MX 74732>32".#""& SU7BJb04 9XL =QDGF'7A8X5?H'( ^#! ,'F!Z@.a#s +% E0%#@. ,+(3 %2VZ$5="8u*  (a[6!"3O#(7x E.)%#".'".547327654&'63267&RH|    Y+ %2"}9S zA ' J,P =:>7.5473267"'>7&#".54732$7%    )o$C%w" %3&  %; 1!   -d$ . 3 Dv 9%&54654.'632#"&%#"'>54&54654'632i 3 1EN: CW' , %E xK  $7*P KG}P:/`\F+7 6j 3 UU64.'632>%.54>7654.'>32>I B#OMn T`O   C $ =I/]C-  w   .* Q% %>7"&5467654.'632-X4[hYG   Cp'5"Qi:a5,5%4.'632>72"&#""&'&%67"6( !7C6) W$# 6 nqLI +5 % .S  A )aV 6& 4>2"&7"'>54.'>3267&#""&5<>732>3272QZ{{{g L  *0H 5kC1?   RZ{{{{"e   :E<$"<      i&C|)a? 6& 4>2"&7>54'632#"&'4654'#"QZ{{{]\ %6&8# # H+Z{{{{7& E;O( ">,#j #"&ARB7)a` 6& 4>2"&4.'46326754>454&'4632>7#"'>7&#"#".'6QZ{{{ 0 $?8 !+ D e}}.1Cg?2 'Z{{{{   '3+ < bk> /^YF#R&% )aN 6& 4>2"&267"67"&#""&5463327654'"&54>7QZ{{{Դ3&Z ![B* F$ ) L5; Rx _-Z{{{{(/  qH  ! 4;' f85  3! )aU 6& 4>2"&7>7.54633274654'632>?2#"#"'.'265#"QZ{{{+/ % :>|$ J"@&f.8("? ?6Z{{{{KJ' F!93%%}2 91!Rg)aO 6& 4>2"&"##"'6.547327654'632672#"&54.'6QZ{{{D8!NEH3r?%3 '@% E jM &eG $60LZ{{{{YO3S 1! P" 124 = "7<)aa 6& 4>2"&47327&'.5467327.'>3267672#".'"&QZ{{{, 43} S8 i : 27N .w y0CQ  pQEZ{{{{)+N  )% %*"( + 5@2!3U$-11Z!$@)a< 6& 4>2"&7"5>7##"'>54&'632272QZ{{{NDzTR-DK4*c 2/V2S3~ssOZ{{{{$c\wP5 K[G! O 4 nfD)aH 6& 4>2"&7>54&5#"'>54.'632672#"#"QZ{{{JC|M.:h"P ? (FZQ5 >`Z{{{{) wwd A4>8F! . )a> 6& 4>2"&747267>54'""&5473267#""&QZ{{{D '::->)S1%C  =Z{{{{) &# ?'1jD 3L)aa 6& 4>2"&.54>73274&'>3267654&'6267"&#"#"'6767"#"'6QZ{{{A=2  5;!  9 q:3 M"F$# EZX'D w v) Z{{{{  8!M0 +I ["#)%X  lZ,&kM6R)a!-C 6& 4>2"&632#".7#".'6324732>7.QZ{{{-6() M C8)1V%y0EbfHZ{{{{%<C 5\  9aT Hpns'L)aE 6& 4>2"&7"'>7.54>?32672#".'QZ{{{2F[ob2Z~/ 1I QKl3%UZ{{{{K(@he'2!  0 %a13*;U!iu)aY 6& 4>2"&473274654&'632>7#"'67327632#".5465"&QZ{{{  > XH0& V;%%EP$ 1>K$ P9<Z{{{{d/> <- %8\( ? ?nU` <2 V.$ 2"&".'63272#"'>54.'6QZ{{{ 9) /h K > VrEZ{{{{(6DN1"B8 )aN 6& 4>2"&"'>54&'632272#"'#"'6767&'63267#QZ{{{eJs. < h/AD1('.reM {IW4D"I1HD0Z{{{{W4R 6 ; tI("857V+::DTGSJ Bg)aR 6& 4>2"&"&547327654'#"'6$54'632>72&#"#"'>QZ{{{<>CJ9 & WL0@ &;hH `3;&dS`tlZ{{{{R < & X @ , . {=)a 6B 6& 4>2"&632#".4'672#"'>#".'632QZ{{{.j5& (V 5awVcm>0 6&/cZ{{{{P>9+?G 'ruP$e4%<:)a$H 6& 4>2"&2&5473264732$72&#"#"'>7.QZ{{{@''K +:(EPE?@[! [aR" `;7Z{{{{#  0  %+   \D+ 8)a5 6& 4>2"&".'#"'64&'632QZ{{{tPo !1) "3Z{{{{_6%?J5(21Eb.T|(QE0)a@ 6& 4>2"&4&'63267.#"#"'>7.5473276QZ{{{J <2m+O n d lz BF8 *  Z{{{{5/E1P :  @h 1  )a#7 6& 4>2"&#&547326&#"&54732$QZ{{{$=P'3M>*iANb%:AFZ{{{{1 " '+  4 3- ()aM 6& 4>2"&267&5473267#".'#"'>7.'6QZ{{{Ծ$r)8)G(>-a42s^<9 53%3;$2 Z{{{{[I#++$ 8 6T,AA<:T% '$3()a!.[ 6& 4>2"&%#".'6322#".'64'#"'$7.5473267#"&'6QZ{{{m 8)IH2\, >G, k*{#) (F4C !Z{{{{ .D@;%'3 C@ ' .$.DA: f&$"H)a) 6& 4>2"&7>54&'632#"QZ{{{'iن &B DkxJZ{{{{=-?I ,nhE)a$2 6& 4>2"&5"'>54'632632#".QZ{{{H I$SGFZ{{{{%' FE,F!19C])aN 6& 4>2"&4654&'>32>54'>323267#".QZ{{{ԅ! C6b5  D$u^P&F5z6Y-A) Z{{{{4-=?R -# F!- 4J+ ,  "<2)a8 6& 4>2"&#"'>7"&#".54>7326QZ{{{'L-{15,=7*Z{{{{]4vf3Vҡ+ 8  !)a5 6& 4>2"&4732>32".#""&QZ{{{$ Y]TVA8 3nYL8 CWJZ{{{{bLMBSV#9QQ9JY 8)a+` 6& 4>2"&#"54>7%2#".'6%274&'63267"&#"#".'3654&5.547QZ{{{ԾL4(#X*&'} /( 4j :PD+,# h'# 1*K%`H2Z{{{{?<"$S?c;#&7V&j G@ 8 ,4b'9!B%? -",)a; 6& 4>2"&>7&#".54732$7#".QZ{{{0Y0n k>XAV*B<1$ FZ{{{{4".~R 9& ")3'*+)';_)a"1? 6& 4>2"&%2".'6'632#".7632#".QZ{{{ DH3 ((X?* " F= :&I=DZ{{{{"=%(/: 3$#) 7#(;)a< 6& 4>2"&#".'".54732754&'632$7&QZ{{{O# _0!" (6!>P Z{{{{xG#9 R 0Y C:F)aJ 6& 4>2"&%#".'#"'>7.'632654.'>32QZ{{{01  '<_n=jBz9/@kK *> ?%@Z{{{{/ ( +7F$2(lI./(w"   O d5K)a\ 6& 4>2"&32>7654'.5473267672"327#"&547.54QZ{{{2Z" 451 #3$0;8 @D )<;TCijI02Z{{{{g!V   ''!   N# ?-# ,Cn*5)a` 6& 4>2"&4732>7.'>32>7#"&#>7#&#"#"&'.'.QZ{{{  2"&47326767.#".5472>767&#".QZ{{{n*#D 4] ]!+38 6K;l1Z{{{{ 1 6&. : 5& }F& 4)ab 6& 4>2"&7.547326767#"&547326765&#".5473267.#"QZ{{{ԕ(* " # !$+T  #  &1K&O.$  8Z{{{{<*  +S70 * " ;{!)a3I 6& 4>2"&7"'>7&#".54732$7.5473267QZ{{{~% (7) (B 6 !)    ,z'J)Z{{{{1m'1 #8# )a0M 6& 4>2"&"'>54&54654'632&54654.'632#"&QZ{{{5LU> I_*/ )K 7 Z{{{{uMW@3hdM/; ;t 8S!R  (<-X )a5I 6& 4>2"&.5467654.'>32>%4.'632>QZ{{{[gU  I I #H &USsZ{{{{3eJ1      2W BP)a6 6& 4>2"&7>7"&5467654.'632QZ{{{%H6B&AF bL   "JZ{{{{*'"4>F ?`:)aJ 6& 4>2"&%65"6%4.'632>72&#"#"&'&QZ{{{@$;A6,  _ )'M x|  Z{{{{&!Cbl/9! !( 2\!  !P)a: 6& 4>2"&7"'$""&'4654&'632672QZ{{{Ԥ;609" % 5"XP h~Z{{{{e y ,#[20* +=s~G)a l 6& 4>2"&674654'47327.'63267654.'63267"67&#"#"'467.QZ{{{:9  .O6 8(!O 0'8c\G'5*VY :RX7Z{{{{ @ ?  ;B6#! 1J 4' 0T &-n <, ,)aZ 6& 4>2"&27>7267&#".547327654&'7>3267#".547QZ{{{ԏ?N2 H >e M&=.k%> m . :!/4Z{{{{" NA)2;  00< -"&T  W., )aM 6& 4>2"&"#"'67.547326765.5473267>7&QZ{{{?,( g64 F,20&A J Z{{{{i$ ) C % ' 4 - (f"*6Gd%2#&#""&5473267264&"462"'72#"."'>54'632#".'#"'654&'632%"'>54.#63267&#""&54732>32721M,& %(**\)e -+c +s/A !  -W  )M (  Mb'   LLpa # ]0**Q*+Do ) (VS,%+)X90H/) p;  #($)$    <?Dv0P%#"'>7"&#".5473264.'632>%&54>7654.'632>"'>54.'63267&#""&54732>3272"'>54.#63267&#""&54732>3272T- MPH ]r8z G *h22FPUE3  +h#E $  >f   54.#63267&#""&54732>3272"'>54.#63267&#""&54732>3272X Kj: +" % ** eDa0"%R81V ,>-W  )M (  Mb'   LLp-W  )M (  Mb'   LLp(XP> / 8  **. Z=K  3<3^ !;  #($)$    <?;  #($)$    <?2M74.'632>%&54>7654.'632>2#&#""&5473267"'>54.#63267&#""&54732>3272 *h22FPUE3  +h1M,& %-W  )M (  Mb'   LLpt  ' Zh/} 'N) &mI x41 # ;  #($)$    <?Mn +<bmx473267&7".'632&#"&547326'#.547326"5>7##"'>54'632272".'632#".'632>54'632#"'4654'#"d Kj: +" %- &~9 "',9Z] \ 1S>%&._ :O  0 0$^V@z   #&  )R~  "    NCH(XP> / !   GS=(,6*c /  Pw9t =""/# ( $-  * >*R'1HBx U~473267&7".'632"&47327654'#"'>54'632672#"&#"#"'6>54'632#"'4654'#"X Kj: +" %%$)) ! X-3$# >*N# 74 j8yR~  "    NC(XP> /  $   4%   Ht@7/# ( $-  * >*R'1H\ T473267&7".'63267.54332754'632>32#"#"'.'265#"%4&'4632>?<54&'4632>7#"'>7#"#".'46d Kj: +" %a139 !T ,  &A!   %q C  (       ' > (;&v  H(XP> / JPV   >!"  c0=    # o65M) 2 A4f 1Tl%#".'632#".'632'#"&'#"'654&'632"567##"'>54'632272%2#&#""&54732676"'>7.54732672#".'26767"&#""&543327654'"&54767   \,    dD?'5  ! >:+ ! 3w     Sm7>A  g+""-?  2~Bx55'N' - p" 4DE  #C&L,O)X90H0( rN,6*c /  Pw9 # !0lp    H/9"2>E ^  #V  4~;Vq%"##"'67.547327654'632672#"&54.'62#&#""&54732672#&#""&547326726767"&#""&543327654'"&54767_ ( 95) WA& .  )? .;* -11M,& %1M,& %0x55'N' - p" 4DE  mA],6 +  $rm   !t #  # . ^  #V  4 T473267&7".'63267.54332754'632>32#"#"'.'265#""'>7.54732672#".'X Kj: +" %y139 !T ,  &A!   %q  Sm7>A  g+""-?  2~(XP> / PV   >!"  c0=0lp    H/9"2>E<:c~67.54332754'632>32#"#"'.'265#"#".'".547;654&'63267&2#&#""&5473267<139 !T ,  &A!   %q .P  7k  Q%7%1M,& %PV   >!"  c0=O)0  3'#t( T # >`U;d7&54654.'62#"&7"'>54&=4'632>54'632#"'4654'#"'"##"'67.547327654'632672#"&54.'6  -2%Q3,R~  "    NC ( 95) WA& .  )? .;* -"L0 #" 3 %-P3&9j< "i! /# ( $-  * >*R'1HsA],6 +  $rm   !>f *=]z7#".'63274'672#"'>'632#"..547327"'>7&#"&5473267#".'#"'654&'632"##"'67.547327654'632672#"&54.'6  .u'&;[1 Xr 0   =<+ca Mw (  '  N/A !  r ( 95) WA& .  )? .;* -$#1 !FM6 I 7   @   !  VS,%+)X90H/) cA],6 +  $rm   !>`;eq7&54654.'62#"&7"'>54&=4'632$".54.'632>72&#"767"#62#&#""&5473267"##"'67.547327654'632672#"&54.'6  -2%Q3,9  !'  8 & @P LH^|1M,& % ( 95) WA& .  )? .;* -"L0 #" 3 %-P3&9j< "i!E2$' V4 Ai )8w # A],6 +  $rm   !$ CO473267&7".'632".54.'632>72&#"767"#6%"#"'67.547327654'632672#"&54.'67#".'632#".'632d Kj: +" %  !'  8 & @P LH^B (-k( WB&  0 (@ -;+  !-" '&  *H(XP> / 4E2$' V4 Ai )8wyc31  #$rm  "  ;"$ @x473267&7".'632>7#".5473267#"."#"'67.547327654'632672#"&54.'67#".'632#".'632X Kj: +" %5 BA$ 42'  a# ) (-k( WB&  0 (@ -;+  !-" '&  *(XP> /  M0!   S#8Yyc31  #$rm  "  ;"N~7CNZe%"#"'67.547327654'632672#"&54.'67#".'632#".'632#".'632#".'63247327&'.54>33274.'>3267672#".'"&: (-k( WB&  0 (@ -;+  !-" '&  *2   (,  1J 6 4 ! .AF ( +Z  C/ 'myc31  #$rm  "  ;" ";&  ;          0  1  6%( ,=IT%2#&#""&5473267&#"&547326'#.547326%#".'632#".'63247327&'.54>33274.'>3267672#".'"&1M,& %- &~9 "',9Z] \   (,  1J 6 4 ! .AF ( +Z  C/ 'a # !   : ";&  ;          0  1  6%N`;i7&54654.'62#"&7"'>54&=4'63247326767.#".54732767&#".2#&#""&547326747327.'.5473274.#63267672#".'"&  -2%Q3,& X (*  L   Q 1M,& % J,& A ". A C! ' 2T  A0 )"L0 #" 3 %-P3&9j< "i!W   ;   3&- #    3     9  &;  4% *r J]}%#".'632#".'632"'>54'632272#"'#"'67&'63267#4.'632>%&54>7654.'632>2#&#""&5473267#".'632#".'63247327&'.54>33274.'>3267672#".'"& $'  )+D  # < & *2 9$ &2 d  *h22FPUE3  +h1M,& %f   (,  1J 6 4 ! .AF ( +Z  C/ ' ="J0    " G)! ==A]'3)'<@  ' Zh/} 'N) &mI x4I # s ";&  ;          0  1  6%N)5".54.'632>72&#"767"#647327.'.5473274.#63267672#".'"&  !'  8 & @P LH^J J,& A ". A C! ' 2T  A0 )\E2$' V4 Ai )8   3     9  &;  4% $n%JU`q%#".'".547;654'63267&"5>7##"'>54'632272#".'632#".'632.547327"'>7&#"&5473267".54.'632>72&#"767"#6%47327.'.5473274.#63267672#".'"&i5 m;  H  *2`%+H!?&5  ! >:+    (( BA3XP m i  !'  8 & @P LH^J J,& A ". A C! ' 2T  A0 ):O)7  3 'mR "oO9,6*c /  Pw9t ="    @   !  VE2$' V4 Ai )8   3     9  &;  4%f/A\w#".'#"'>7.'632654.'676324&/632>7&5467654.'6326%2#&#""&547326767#"&'#"'654&'632'".54.'632>72&#"7>7"#6%47327.'&5473274.#63267672#".'"&.!; '/  )  E"!/T" " ! 4w    ,    >       &   +4l20@0 2 * -.!8  .d.  ",*?* H.  ' Zh.~ 8^'mI RG k #  oX+ O)X90`.* E4$'  X2 R g Z  0     !# ':  4&'632#".".54.'632>72&#"767"#6%47327.'.5473274.#63267672#".'"&Q,      }0; Z  lF N  (7&#"&5473267"5>7##"'>54'632272".'632#".'6326.P  7k  Q%7W =<+ca Mw (  '  1S>%&._ :O  0 0$^V@z   #&  ):O)0  3'#t(    @   !  V GS=(,6*c /  Pw9t =" -f >Zm473267.6".'632#".'".547;654'63267&%#"&'#"'654&'632.547327"'>7&#"&5473267"5>7##"'>54'632272".'632#".'632  2eFH  5k<  H  *2_&,     =<+ca Mw (  '  1S>%&._ :O  0 0$^V@z   #&  )4 YP> %/;O) 6  3 'mR X+ O)X90`.*    @   !  V GS=(,6*c /  Pw9t =" e'2mx".54.'632>72&#"765"#62632#"&="&54732754&'632>7#"'67#".'632#".'632>54'632#"'4654'#"4.'632>%&54>7654.'632>"5>7##"'>54'632272       %  ,4l 20@h  : . 0  4" 6$;       Q6T   4,  *h22FPUE3  +h Al3%/_ :P  2 0%^V@\E3$'  V4 R`! Z:  7B!# 6$%2 $%A65#,3   B /# ( "/ H>*R'. Hn  ' Zh/} 'N) &mI x4"nR7,6*c /  Pw9(iDP{%2#&#""&5473267".54.'632>72&#"767"#64'#"'67.5473267#"&'62#".'6#".'632"5>7##"'>54'6322721M,& %  !'  8 & @P LH^!*_ >F/  m *!% 6  !J Al3%/_ :P  2 0%^V@a # <E2$' V4 Ai )8'&[c    *$ %<(Q" * (*c"nR7,6*c /  Pw94*Er"'>7.54732672#".'2#&#""&5473267>54'#"'>54.#632672#"#"H Sm7>A  g+""-?  2~1M,& %KoL?5 /K %z *A$ %8 r0lp    H/9"2>E # #"E$m! ) 0 anFr)<\74&'63267&#"#"'>7.54732764.'632>%&54>7654.'632>473267>=""&5473267#""&  $ 7".Pq; ?H')!  Z *h22FPUE3  +h# $  /( Q $)1 $]%=   ' Zh/} 'N) &mI x4C h%   ^( ,:|DQ\w$264&"462"274.'63267"&#"#".'36=.5472#".'6#"54>72#&#""&5473267473267>=""&5473267#""&v)**)3 ! 3$ 2+;)  J ,41M,& %# $  /( Q $/**'    S: ! ' 'g >;#!3#M1% # { h%   ^( ,-p$M`"5>7##"'>54'632272>54'632#"'4654'#"4.'632>%&54>7654.'632>.5473274&'62>74654'63267"&#"#"'6767"#"'6Z Al3%/_ :P  2 0%^V@R~  "    NC8 *h22FPUE3  +h!) # !5  $ &)54 47E"nR7,6*c /  Pw9/# ( $-  * >*R'1H  ' Zh/} 'N) &mI x4 "  . + '$ 3 ?b5>sG0 ,x ?|473267&7".'632#".'".547;654'63267&%"&547327654'#"'>54'632672#"&#"#"'6%2#&#""&54732676.5473274&'62>74654'63267"&#"#"'6767"#"'6X Kj: +" %5 m;  H  *2`% :! f 4 %#G% Q ! 3w    P!) # !5  $ &)54 47E(XP> / O)7  3 'mR ( #    4%   HtA #  "  . + '$ 3 ?b5>sG0 Mn 5U{473267&7".'632&54654.'62#"&7"'>54&=4'632"5>7##"'>54'632272".'632#".'632%473267"&7#".'632632#".d Kj: +" %  -2%Q3, 1S>%&._ :O  0 0$^V@z   #&  )  179rJ+ '!3#L.H(XP> / L0 #" 3 %-P3&9j< "i!GS=(,6*c /  Pw9t ="  _=SW, (W 2 #Bx U473267&7".'632"&47327654'#"'>54'632672#"&#"#"'62632#"&="&54732754&'63267672#"CX Kj: +" %%$)) ! X-3$# >*N# 74 j8yX")ZE',$ #  K %w + O 7\(XP> /  $   4%   Ht@  7B"# 7$:& $%A83#,3Bf 6w473267&7".'632#".'#"'654&'63272632#"&="&54732754&'63267672#"CX Kj: +" %O/A !  2")ZE',$ #  K %w + O 7\(XP> / xS,%+)X90H/)   7B"# 7$:& $%A83#,3**EP["'>7.54732672#".'2#&#""&5473267%#".'632#".'632"'>54'632272#"'#"'67&'63267#H Sm7>A  g+""-?  2~1M,& %g $'  )+D  # < & *2 9$ &2 dr0lp    H/9"2>E #  ="J0    " G)! ==A]'3)'<@ +L\gs473267"&7#".'632632#".4732672&#"#"'>7.72&547327".'632#".'632\  179rJ+ '!3#L. ). ) !#9 s1 8WO# & , J ((  +>  _=SW, (W 2 #   fZiM      ": 2=Hi%4.'632>%&54>7654.'632>#".'632#".'632'#".'#"'654&'632 *h22FPUE3  +h3  +.  -0B !  t  ' Zh/} 'N) &mI x4#C& %1, %+)X90V/)  6473267&7".'632#".'#"'654&'632X Kj: +" %O/A !  H(XP> / `S,%+)X90H/) F<>54'632#"4&'63267&#"#"'>7.54732764_ ';Rn5  $ 7".Pq; ?H')!  Zw(:+ "TZ<)1 $]%= @fo':GZ%#".'#"'654&'632#".'63274'672#"'>'632#".>54'632#"/A !    .u'&;[1 Xr 0  _ ';Rn5S,%+)X90H/) #1 !FM6 I (:+ "TZ< U *S_o7#".'63274'672#"'>'632".>54'632#"'4654'#"%72#"."'>54'62  :4 9Fa3 q>#R~  "    NC)e -+c+sX##@ * CRE/)]$" 1*R'1HQ*+Do ) (V f 4t473267&7".'632%#"&'#"'654&'6322632#"&5465"&5473274654&'632>72#"C2#&#""&5473267$264&"462"'72#"."'>54'632  2eF&   z,      ; .  1  6! 4" A1M,& %(**\)e -+c +sH(XQ> /lL,O)X90H.*   7B# %#? %  &@38$,3 # i0**Q*+Do ) (V *EMUar7#".'63274'672#"'>'632".2#&#""&5473267$264&"462"'72#"."'>54'632  :4 9Fa3 q>#1M,& %(**\)e -+c +sX##@ * CRE/)]$" 1 # i0**Q*+Do ) (V!<Oo{3>7"&5465654.'6322#&#""&54732674.'632>%&54>7654.'632>#".'632#".'6322632#"."'>54'632,.2 9; - * 1M,& % *h22FPUE3  +h9! '&! X *e  ,*c  ,t "/ 9n% 4   " n2 # $  ' Zh/} 'N) &mI x4 ',!?Q*+Do ) (V#f,Ws%4&/632>7&5467654.'6326"'>7.54732672#".'#"&'#"'654&'6327"'>54.#63267&#""&54732>3272%4654&'>32>54'6323267#".632654&"462" E"!/T" "7H%), D *  !U,    l-W  )M (  Mb'   LLp   (:  (0)H 3`'/ )**t  ' Zh.~ 8^'mI RG h0lp   I.9&B>EBX+ O)X90`.* p;  #($)$    <? `   % T  * , +  )( 0**2W74.'632>%&54>7654.'632>"5>7##"'>54'632272%4654&'>32>54'6323267#".632654&"462" *h22FPUE3  +h Al3%/_ :P  2 0%^V@   (:  (0)H 3`'/ )**t  ' Zh/} 'N) &mI x4@"nR7,6*c /  Pw9 `   % T  * , +  )( 0**h'Xbj473267>=""&5473267#""&4654&'>32>54'6323267#".632654&"462"L# $  /( Q $7   (:  (0)H 3`'/ )** h%   ^( ,5 `   % T  * , +  )( 0**f2dp{%4.'632>%&54>7654.'632>4654&'>32>54'6323267#".%#".'632#".'632 *h22FPUE3  +h  ( : (\F)H  4`'/J  *,  +t  ' Zh/} 'N) &mI x4 `  % V  *  +  )(#=& @f(3Oc#"'>7"&#".547326#".'632#".'632'#"&'#"'654&'632.547327"'>7&#"&5473267%#".'63274'672#"'>'632#".7"'>54.'63267&#""&54732>3272T- MPH ]r8z    \,    C )( AA 3YP m iR N  (f   7"&#".5473262#&#""&5473267>54'632#"'4654'#"#".'#"'654&'632T- MPH ]r8z S1M,& %@c    >2 /A !   Fl<3{_%   # v&p  #20 !?%8S,%+)X90H/)  3*5Gbu#"'>7"&#".5473267#".'632#".'6324&/632>7&5467654.'6326473267"#".'632632#"."67"&#""&543327654'"&5473267#".'63274'672#"'>'632#".D- MPH^qq&! "%% )I E"!/T" "!w%%M1 @   !o 3   ( R8 3 >   .u'&;[1 Xr 0   Fl<2|_   4  ?   ' Zh.~ 8^'mI RG H( _=SW(W 2 # I    "'  #1 !FM6 I \ 7Jj473267&7".'632#"'>7"&#".547326.547327"'>7&#"&5473267d Kj: +" %- MPH ]r8z y =<+ca Mw (  '  H(XP> / \ Fl<3{_%      @   !  V$r,_w%4&/632>7&5467654.'6326%#"'>54'632272#"'#"'67&'632672#&#""&54732676"5>7##"'>54'632272%4732632".#""& E"!/T" "+B)3  )  !V[) # ! 3w     Al3%/_ :P  2 0%^V@ fDa0!%R81(3 ,t  ' Zh.~ 8^'mI RG %>,f   " C-! ===a) < * # "nR7,6*c /  Pw9 Z=K  3<3,4!")1N$2#"'>54.'".'6323264&"462"4732632".#""&7&,%[CyB $ > ** eDa0"%R81V ,'  spz-$8.1  **. Z=K  3<3^ !"0BS]e74654&'>32>54'6323267#".&#"&547326'#.5473263264&"462"4732632".#""&   (:  (0)H 3`'/- &~9 "',9Z] \G ** eDa0"%R81V , `   % T  * , +  )(!!     **. Z=K  3<3^ !$ *=]{7#".'63274'672#"'>'632".4.'632>%&54>7654.'632>%4732632".#""&  :4 9Fa3 q># *h22FPUE3  +h fDa0!%R81(3 ,X##@ * CRE/)]$" 1  ' Zh/} 'N) &mI x4  Z=K  3<3,4!" DNVs473267&7".'632"'>7.54732672#".'3264&"462"4732632".#""&X Kj: +" % Sm7>A  g+""-?  2~ ** eDa0"%R81V ,(XP> / 60lp    H/9"2>E  **. Z=K  3<3^ ! "{*6A\fn473267.#".'632#".'632#".'632632#".2#&#""&5473267%3264&"462"4732632".#""&`  179rJ+D  )%  2  ( 2L-1M,& % ** eDa0"%R81V ,D  _ =SX,8 #@'3 ( V 2 #  # 4  **. Z=K  3<3^ !$r4Omy7"'>54'632272#"'#"'67&'63267#2#&#""&54732674732632".#""&%#".'632#".'632d,C  # < ' '2 9& '2 d1M,& % fDa0!%R81(3 ,  +/  -(J0    # 5;! ==A]) 7%'<- # , Z=K  3<3,4!u  A  :fl B_go473267&7".'632>54'632#"'4654'#"#".'#"'654&'632264&"462"274.'63267"&#"#".'36=.5472#".'6#"54>7d Kj: +" %rR~  "    NC/A !  )**)3 ! 3$ 2+;)  J ,4H(XP> / /# ( $-  * >*R'1HS,%+)X90H/) /**'    S: ! ' 'g >;#!3#M1%:f/O\g%#".'#"'654&'6324.'632>%&54>7654.'632>%#".'2632#".'632274.'63267"&#"#".'36=.5472#".'6#"54>7/A !   *h22FPUE3  +hC  **  +)3 ! 3$ 2+;)  J ,4S,%+)X90H/) j  ' Zh/} 'N) &mI x4#7&M    S: ! ' 'g >;#!3#M1%? R_j473267&7".'632274&'63267"&#"#".'354654&5.5472#".'6#"54>7X Kj: +" %*3 " 3$ 2*9) J -3H(XP> /  )(    9 : ! '  L>;#!3#M1% :f $/PX`473267&7".'632#".'632#".'632'#".'#"'654&'632264&"462"274.'63267"&#"#".'36=.5472#".'6#"54>7X Kj: +" %  +.  -0B !  u)**)3 ! 3$ 2+;)  J ,4(XP> / r#C& %1, %+)X90V/) /**'    S: ! ' 'g >;#!3#M1%2M74.'632>%&54>7654.'632>2#&#""&5473267%274&'63267"&#"#".'354654&5.5472#".'6#"54>7 *h22FPUE3  +h1M,& %*3 " 3$ 2*9) J -3t  ' Zh/} 'N) &mI x41 # )(    9 : ! '  L>;#!3#M1% ? 4mz473267&7".'6322#&#""&5473267%274&'63267"&#"#".'354654&5.5472#".'6#"54>7d Kj: +" %1M,& %*3 " 3$ 2*9) J -3H(XP> /  # )(    9 : ! '  L>;#!3#M1% 4p$Mw"5>7##"'>54'632272>54'632#"'4654'#"".54.'632>72&#"767"#6>7#".5473267#".Z Al3%/_ :P  2 0%^V@R~  "    NCQ  !'  8 & @P LH^5 BA$ 42'  a# )"nR7,6*c /  Pw9/# ( $-  * >*R'1HE2$' V4 Ai )8 M0!   S#8U2[74.'632>%&54>7654.'632>>54'632#"'4654'#"%>7#".5473267#". *h22FPUE3  +hR~  "    NC^5 BA$ 42'  a# )t  ' Zh/} 'N) &mI x4/# ( $-  * >*R'1H' M0!   S#8 o ':Gn%072#"."'>54'62#".'63274'672#"'>'632#".>7#".5473267#".&)e -+c+s`  .u'&;[1 Xr 0  5 BA$ 42'  a# )Q*+Do ) (V@#1 !FM6 I P M0!   S#84p$7W~"5>7##"'>54'6322724.'632>%&54>7654.'632>>7#".5473267#".Z Al3%/_ :P  2 0%^V@ *h22FPUE3  +h5 BA$ 42'  a# )"nR7,6*c /  Pw9  ' Zh/} 'N) &mI x4 M0!   S#8 3 $2EP[473267.6".'632473267&7".'632473267"#".'632632#".&5473267>7#"&547326765#"&5473267"&#">7#".5473267#".  2eFH   Kj: +" %!w%%M1 @   !o 3  p  ?  $"  2 L ?   +5 BA$ 42'  a# )4 YP> %/7(XP> / V( _=SW(W 2 #  &   )  DIy M0!   S#8P COt473267&7".'632".54.'632>72&#"767"#6"5>7##"'>54'632272632#".632#".2#".'6X Kj: +" %  !'  8 & @P LH^> Al3%/_ :P  2 0%^V@e B (<  @ &#[ :-H(XP> / E2$' V4 Ai )8n"nR7,6*c /  Pw9j& #dp/)*`T;HUb%&54654.'62#"&7"'>54&=4'632632#".632#".2#".'6  -2%Q3,u B (<  @ &#[ :-"L0 #" 3 %-P3&9j< "i!& #dp/)* ,7AP`x%4&/632>7&5467654.'6326%#".'632#".'6322>232#"."'>54'62%2#&#""&54732676&54654.'62#"&7"'>54&=4'632632#".632#".2#".'6 E"!/T" "      :C   B M ! 3w    A  -2%Q3,u B (<  @ &#[ :-t  ' Zh.~ 8^'mI RG ',!?Q*+Xo ) (V # L0 #" 3 %-P3&9j< "i! & #dp/)*6~7CN%"#"'67.547327654'632672#"&54.'67#".'632#".'632#".'#"'>7.'632654.'632: (-k( WB&  0 (@ -;+  !-" '&  *  1X/ =(G"  ?, $&&myc31  #$rm  "  ;". ",*?* F .=-6f 6nz473267&7".'632%#".'#"'654&'632"#"'67.547327654'632672#"&54.'67#".'632#".'632#".'#"'>7.'632654.'632X Kj: +" %O/A !  A (-k( WB&  0 (@ -;+  !-" '&  *  1X/ =(G"  ?, $&&H(XP> / lS,%+)X90H/) cyc31  #$rm  "  ;" ",*?* F .=-6f7Jj%#".'#"'654&'6322#&#""&54732674.'632>%&54>7654.'632>#".'#"'>7.'632654.'632/A !  1M,& % *h22FPUE3  +h  1X/ =(G"  ?, $&&S,%+)X90H/) W # $  ' Zh/} 'N) &mI x4 ",*?* F .=-:f 6Q%#".'632#".'632'#".'#"'654&'6322#&#""&54732674732>7.'632>7#'67&#"#"&'&'.  +.  -0B !  1M,& % #.  $6- O ." _  \ #C& %1, %+)X90V/) s #        0 =2>b%&54>7654.'632>2#&#""&54732674732>7.'632>7#'67&#"#"&'&'. *h22FPUE3  +h1M,& % #.  $6- O ." _  \ t  ' Zh/} 'N) &mI x41 #        0 =2>b54.#63267&#""&54732>327247326767&#".54732767&#".d Kj: +" %-W  )M (  Mb'   LLp s' 77:X!$hH(XP> /  ;  #($)$    <? "I  " M& f':GZz%#".'#"'654&'632#".'63274'672#"'>'632#".4.'632>%&54>7654.'632>&54654.'62#"&7"'>54&=4'632/A !    .u'&;[1 Xr 0  < *h22FPUE3  +h  -2%Q3,S,%+)X90H/) #1 !FM6 I   ' Zh/} 'N) &mI x4L0 #" 3 %-P3&9j< "i!z2Nn%.547327"'>7&#"&5473267&54654.'62#"&7"'>54&=4'632 =<+ca Mw (  '    -2%Q3,   @   !  VL0 #" 3 %-P3&9j< "i! KU]p%2#&#""&54732674654&'>32>54'6323267#".632654&"462"4.'632>%&54>7654.'632>1M,& %   (:  (0)H 3`'/ )** *h22FPUE3  +ha #  `   % T  * , +  )( 0**  ' Zh/} 'N) &mI x4|*5Pc%#"'>7"&#".5473267#".'632#".'6322#&#""&54732674.'632>%&54>7654.'632>4.'632>%&54>7654.'632>D- MPH^qq&! "%% )1M,& % *h22FPUE3  +h *h22FPUE3  +h Fl<2|_   4  ?  # $  ' Zh/} 'N) &mI x4D  ' Zh/} 'N) &mI x4l(J%#".'".547;654&'63267&>7"&5465654.'632*.P  7k  Q%7k,.2 9; - * :O)0  3'#t(  "/ 9n% 4   " n lf $2NYd473267.6".'632473267&7".'632#"&'#"'654&'632#".'632#".'632>54'#"'>54'632672#"#">7"&5465654.'632  2eFH   Kj: +" %,!         2I3)#3  O+ Y&,.2 9; - * 4 YP> %/7(XP> / x [+ O)X90P0( .  ? $"E%m )   bm "/ 9n% 4   " nZfo':Gi%#".'#"'654&'632#".'63274'672#"'>'632#"."'67""&'54&'632672/A !    .u'&;[1 Xr 0   IY 0 /S,%+)X90H/) #1 !FM6 I \FA # v 5!%5!5!%5!%5!5!<<<7N7I  I.@..@>7N7I  IE@..@.'77'  _@..@.'77'  *2U462""&5462#"&54>54&"462""&5462#"&54>54&".@..@H!.@.&8:0 &,&;T;&.@..@H!.@.&8:0 &,&;T;E@..@.) .. UwwU.F7=jF ,E|Kd0*;;*@..@.) .. UwwU.F7=jF ,E|Kd0*;;*LB462"462"&'&462""&5462#"&54>54&".@..@>7N7I  I.@..@H!.@.&8:0 &,&;T;E@..@.'77'  _@..@.) .. UwwU.F7=jF ,E|Kd0*;;*B462"462"&'&462""&5462#"&54>54&".@..@>7N7I  I.@..@H!.@.&8:0 &,&;T;E@..@.'77'  _@..@.) .. UwwU.F7=jF ,E|Kd0*;;*I/7G462"462"&'&462"462"&'&462"462"&'&.@..@>7N7I  I.@..@>7N7I  I.@..@>7N7I  IE@..@.'77'  _@..@.'77'  _@..@.'77'  Q462"4632#"&=Q.@..@i5()5 ;@..@.78& , 2462"4&#"#"&54632#"547>76.@..@ 8-"6 .!",u^b 7DHJ 254, ;@..@.(=)!!-05rV,:&,ZB  .7[=8E& Q/462"4632#"&=462"4632#"&=E.@..@i5()5 .@..@i5()5 ;@..@.78& , @..@.78& , 2:e462"4&#"#"&54632#"547>76462"4&#"#"&54632#"547>76.@..@ 8-"6 .!",u^b 7DHJ 254, .@..@ 8-"6 .!",u^b 7DHJ 254, ;@..@.(=)!!-05rV,:&,ZB  .7[=8E& @..@.(=)!!-05rV,:&,ZB  .7[=8E& 2:J462"4&#"#"&54632#"547>76462"4632#"&=.@..@ 8-"6 .!",u^b 7DHJ 254, .@..@i5()5 ;@..@.(=)!!-05rV,:&,ZB  .7[=8E& @..@.78& , Q2:J462"4&#"#"&54632#"547>76462"4632#"&=.@..@ 8-"6 .!",u^b 7DHJ 254, .@..@i5()5 ;@..@.(=)!!-05rV,:&,ZB  .7[=8E& @..@.78& , /7G462"4632#"&=462"4632#"&=462"4632#"&=K.@..@i5()5 .@..@i5()5 =.@..@i5()5 ;@..@.78& , @..@.78& , @..@.78& , K462"4632#"&=K.@..@i5()5 ;@..@.78& , 2462"4&#"#"&54632#"547>76.@..@ 8-"6 .!",u^b 7DHJ 254, ;@..@.(=)!!-05rV,:&,ZB  .7[=8E& #$"."#52>22>23"."NI0>8>0I'>0INI0>8>0INI0>'I0>8>0/7//7/g/7//7//7//7/g/7//7G'667&'5445rrss@@AA!!!!0g'667&' 4554ssrrAA@@!!!! )a7GWgw 6& 4>2"&4&54>32#"&#"#"&5432326"54632#"&#"2#"&"#"&546"&#"#"54632#.54634654.5432#"&'2>32#"&'432"&"3267&#"QZ{{{+2(j+'#'2 , 8 **@9.>, $# )  %$ 3H * 6" *0=0&#.Z{{{{7)1<Z+v !  ) & F  )*6!.0.   A"/' L+$P2 $ - D,'=N%4.#"'6326'32654'77327#".&#"&54>^> Q" c4V@U^=&6C6Z@T$ H69)\gF ;oRa=-^J(0f b/I   r&AF5Q+ &29[ BT   r %2654' "&547>X\\ !9&K ‰ K&9!\@\\@%uf Nd%2aa2%dN r"&547>!9&K ‰ K&9! Nd%2aa2%dNog$7654&#""'.#"632'54632RC4(@ R @(4CR@oPtlltPoZۭME.)55).EMobttbog632'54632@oPtlltPo@obttb[H  TT,KI/[H HT,/Z567#"&546?#"'%26323&5463232654&/h"*2JgoaaogJ2*"/ ,R, /(9hWWWWh9u?pqP`eXXe`Pqp?, II ,B/APPPPA/BZ67#"&546?#"'h"*2JgoaaogJ2*"u?pqP`eXXe`Pqp?i1Q%3&546323264&#"#"&54654&"#"&#"32632!67#"&4632&5462632#"R'5"1GG1 ".FdF." 1GG1"5'l##82SuuSvvSuuS26II+ FdF/!61GG16!/FdF +k@@k&vv,6SuuS6,vvi%!67#"&4632&5462632#"M##82SuuSvvSuuS26k@@k&vv,6SuuS6,vvX!:Sl"&54>3232654'&5432#>54&54>3#>54&54>3#>54&54>3)83  X̎X  38) <'+ <&+  <&+  <', <', <&+  kj)M0;OUyyUO;0M)j1>1Y-.*1>/Z.&!1>0Y.&!1>/Z..*1>/Z..*1>/Z.&!?~8EPk7274&'63267"&#"#".'354654&5.5472#".'6#"54>7%2#&#""&54732672#&#""&5473267473267>=""&5473267#""&*3 " 3$ 2*9) J -31M,& %1M,& %# $  /( Q $z)(    9 : ! '  L>;#!3#M1% - #  # { h%   ^( ,"~T;Ww%"##"'67.547327654'632672#"&54.'6&54654.'62#"&7"'>54&=4'6323264&"462"4732632".#""&_ ( 95) WA& .  )? .;* -F  -2%Q3,  ** eDa0"%R81V ,mA],6 +  $rm   !5L0 #" 3 %-P3&9j< "i!W  **. Z=K  3<3^ !lhLYf&3x".'#"&54>7.5467654&'4632>2#"'>54.#""6?"&4654&54%#"&#"3272#".54632254&/#"&5327.463232632'654.7#".'632#".'632%".'#"&54>7.5467654&'4632>2#"'>54.#""6?"&4654&54%#"&#"3272#".54632254&/#"&5327.463232632'654.7#".'632#".'632     .=*  % !@ZE;D3E'5?*    C "$G) !K)-E)9 &"( &$ 0.    "( =     .=*  % !@ZE;D3E'5?*    C "$G) !K)-E)9 &"( &$ 0.    "( @     3' *&$#I7-K"K-!D S   &g"  26 ('0 -%! /("  %   #,  b@     3' *&$#I7-K"K-!D S   &g"  26 ('0 -%! /(!  %   #,   Df2=Hi%4.'632>%&54>7654.'632>%#".'632#".'632'#".'#"'654&'63247326767&#".54732767&#".473267.#".'632#".'632#".'632632#". *h22FPUE3  +h3  +.  -0B !   Z +* "C  #f  J   179rJ+D  )%  2  ( 2L-t  ' Zh/} 'N) &mI x4#C& %1, %+)X90V/) Q  9   3&y  _ =SX,8 #@'3 ( V 2 #Ki:EQ#".54654.'63232>".#""&54732632'#".'632#".'632%67>72#"'2>54.'#"'#".'4'46?#"&5465327654&/632672327&5477"6 Y=!#  !/5'#M75 S. _2F7 *2 .w 0K*0#62-1 3!F4!& " ) ,   6O G7|   Qo8:'2;2_  P'>  "@   B8":%  D) + I@0 1M* *$ +zBKWb#"'"&54732>7.54>7.'632&#"632#".#"#4'3267#".'632#".'632"327#"&5467"&54633267#2".2#".#"&'#".5467#"&547326232654.'632?2-. .(6 ( !;(2*? +!  45!!" (( " *:R$ 0/G=) .&:!%Q C3  d-"2 $    1  +)!(23@ .8!-. %)    #"'+.# &-&%("  =";j7.5467654&'4632>2#"'>54.#""6?"&4654&54#67654.#"#"&54732632>54.'2#"&#" : !%s"%'\  " !'%  +P) ^%  + n    )7 *)5#A7C " %     .=*  % !@ZE;D3E'5?*   + 452  C #W43> (mr&& 4h& " b# Y"  ! ;5   !A!9  '!ֲ,  > &41$1'O @     3' *&$#I7-K"K-!D S   &g"  6v0 %)IR  ' d D|:EO473267.6".'63247326767&#".54732767&#".4'4326754654'463267#"5>5#"#"'6%4'4326754'463267#"5>7#"#"'46#".'632#".'63247327.'.5433274.#63267672#".'"&"'>7.54732672#".'#".'632#".'632  2eFH  6 <  ,\ E5    T!#( =     T!% <!    ! 0"  # (-<  ,7I%(- D  *  !T      (1 XP= &.   ;    :     Ws+]3   7 "    Ws8E'   4";&  1         ' '9  6%p.mq   I.9%B>Di  ? 6k4i"&#>54.'63267#&#""&54732>3272%"'>54'632272#"'#"'67&'63267##".'#"'>7.'632654.'632#".'#"'>7.'632654.'632#E  $ >f   32#"#"'.'265#"67.54332754'632>32#"#"'.'265#".547327"'>7&#"&5473267.547327"'>7&#"&5473267<139 !T ,  &A!   %q 139 !T ,  &A!   %q p =<+ca Mw (  '   =<+ca Mw (  '  FPV   >!"  c0=PV   >!"  c0=   @   !  V.   @   !  Vf x".'632'632#".%67>72#"'>54.'#"'#".'4'46?#"&547327654.'62>72327&5476 D.6*@((s J0+=mK)ALJ7 ?4@L>)!6+d aH   h #3BH#0 DF )7 '0#@F, U" ! >$2/0#&V4 1  6sM8eF9!9Bc82I$(40a*1b0T1' # ,%" 7 **  ^S(0C) (&54;!?e *W#".'632#".'6322#"&'.'6#".54654.'63> A( /GP >/!0LB?) +  8)5=(!-L'\: )x.B *Y1V4 $/:'"?!HB^T%1768T'    0Xx)<GT"'67>54&#"#"&54732632>54&'2#"&#"".'632#".'632j  7 *-6"! $@ -'9*N (Zd}!& "+5*,IC 1&.T)'CLl?44%4"3 >(>4"CxL$GN.1  ? 9u 56 dy#".'632#".'63232>32#".54654&#"#"&54>7>767"#"&5473267632'674.'#"&#" 6(7M\- 3*1L$#%, *,x8@T'4Q%  a32&#"32654&#"#".'#"&54732?#"&54732754&'63267632>32#"&547[[ #E+&50 !I3/:$+$ '; V/0W7"B@G5G\)   #, &#+3; );<'(A . V#CLlofD@?"! !_/)# &G!! 24+'*TC+1$:'Q'2 &" @ X /!)35) 3'1]G\~G.8# y H~2#".'62#".'62#"&#"#".'#"&546324&54>7&'6%327654.'>32>54'327#"&547>7"&"327&F): C+! 32 C2.H?s M"9 4!+"(@QIW-,(13H7+?4  (0 $7 nL. '! ]:_@$ ,L ##'T*+a9.%ny'0rH6+? B>Q#- G!="/)' ",M;=m>D%-A@F%I 'Af2#".'6632#".3267#"&546327#".54>7#"&5454.'632v(( >(2s *// =]5@`q8Uj *_!'@"[D#EF,{?5A6 -8(+X .3O,')-(  "!C.*s G9k@,)X^&$U w^$ MO v".'632#".'632%267654'632632#".'#"&54632654.#"#"'#".'.'47.327&'632>7&#" 3"%-F1$ 8$43'7 BJ7' " s  =G;YQG9+ 'A*,5%  "   &)$%?/ '-#";#+ %&.+1 , '."8C!)02& @/.0K4H89)]e%#  ?T8E!9CX=@&,2(c!d 2#".'62#".'>>32#".'#"&54632654.#"#".'#".'467.54>7654&'632632>?"267&%6I*8 :+(:2 5% 2 0+$:2 !W/?THME2 (\ %    %9%  &!!A  $.3$"*1+J2N>T+UG)11: "DH!4  v$B ;(  0 4$$#$~ #&NB FS".'632#".'632"#".'&'.'4>32#"'>54&32>54& 3"%-F1$ @. 43x -Jq=  &xz@`o^# *4O2;!k6 `L_+ %&.+> ,,*32>32654'3263#".'#"&5463234'"&547.#"32 (A 9)&/8+ 6*!NT "" "I 'MAJ/[!fY fR4_?P\SI rb   -@ 2/'P& ,2P0 ,,'",!/7#' M NF!;W@%D*,*?A80DfC/#   R hq#".'632#".'632>7.'"'.'>7>7"&5473263654.'2#".'3267 A( /G?":'!.GBA-646[/&'1   ATH8(&fM* '4SNb 6Qi$3Pp<` 6<: ).C,&+B,!# e3<5  4R,f$>"P2"J @  P1!/&"F? A=D 4$5;#6 V"/J3W #".'6322#".'62654&54632#.'674&#"#".547.546327#"&547327654&'63267632&54?&#"36 A,<0,8/ F0$_Q @/6N,%$.)2dF+AI/0=@<-0%D  X 2?  %/*b ' ''70.TXj(_T_4%9(;4-X!)A)  9'!hBFR; 0  %+!*( *-4,/ k[  ") 0%)=@] \i#".'6322#".'6.'&'47.'67654.'632#"'>54&##"''3267.'> @,;4*,F F0$  #*1^R  #<\vn3H  !. -E <  *4       r +&2$,4 (7}B\)!29$ "F/}L~N7 /ck!"$*'21,)$" '/U8 v  3( (&# "R \c#".'632#".'6322632#32654.'#"&547&5467&547365.'6322#'6R 9(6WW 8*2]"BKXE@FH(,>tdgj[M7Y 8(   F Bs! >"-TGnO8_ &\qu^ ">R(@-X'89 B,)(1RT)IQ `k2#".'62#".'632654&#"#"'.'"&54732>7.543232654&'632#"&"67.N[ #E+&50 !I3/6I:6,6Qy)", ;1= %Y  - ,T%r "C7 5-X\#H0Nc "n3%?"! !\+)<1$<Ѣ'9U8[.A(%" @2N3 0 >) kC24"M! 6 <C[  Uah2#".'62#".'62654&'>7.5#"&54654&'>32>76322#"'654'7.#"6]/?  "D%($0G B.LuMA $d*.8,90P! H!T.>_1B iu_GJ30`+ # *.D,6U,*+= uaMn 3NW7#A}TX> h." >+1",k+O&xvnT%{-83" . T^2#".'6#".'632#"&'&'#"&54632&54&54.'>3227632327&#"B&I  @) L ;)-84 td > RLMkjJ#9 % (!C` 7;%`/?,.#%1+/:).H- &+.O54&#".54>7.'632f" -! )/c% +$*W 8(&. QmB?)?be.4E.)=)$%  -F,  !Sk':#a6 D)4z(!!) |N.R46U.,wI=64?: BK!2N:B*   V6(k K#".'632#".'632"'>54&#"#"&54654&/632632k4+ :>Z .&+_ 1G;-7 0%"G+A]OQ1CS9'K$ ,u#E(>Gnjkkc: ,  kV4#"#J+n]ӔryeAu Zc#".'632#".'632#".54632>54&#""&54>7"&5473263>323274&#"u 7)-LQ 2&147V`-4=%B1#I=BWA6Q+"&#h~l(% G+$5\|M$cw@ $?/s07 +;`9+ .;BC]4OV38N)+"$y @'6 2 N&+W t|2#".'62#".'>>323267#"54654#"#".'#"&54>7.54>76=4'>322676546')7 9*%91 3$  ,R^%<)`kMz G4%#   ,$ "C-7 'D " ; 0?j *"2P3 , )F0,+_^ >#'\z5wC /4u.;. I' :' %$$$ 5 $C{;'0%1[g b2#".'62#".'6'>32#"'>54#"#"&54>7>7&#""&547326-7 =,*A 8(&U )8'90h.Kgh9= 5VdD-2P/')!OP4@8!=3 !K("0V'-%) vBr`@d>) -8U3-A@-)0J[;D"=)  2q jv632#".#".'6".'#"&54>7.5467654&'4632>32#"'>54.#""6?&4654&547/9 A*v# <,'d    /\yU  I%  FYZFcd# f%D0k~*.$T!/  %"-,N&*X;04 %#:e)Mp(# : J/  ! HGoEzK+4[!0;&'$:*<!,CI*Y v $q|2#".'2#".'632>74>7>5#"&546732632632#"54632654&#"#.27654#"V9 >+#' >0"P!6+OB,*V9    *P;1-WL/)?UP)I4%FtN$@9%<%'0b" -"q( /C"*8nC*.W'2"$KC/5Q&  U9 P # v54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'632654&#"#".#""&54>"65"F 9#/// 8) 6", 23"C'4p& S!H30!oSB4&#">%".547327654&'632>72632>32#"'73272#"&5>7.#"#"5467>$)7 :*#92 7.#1"E& ( #-!4>8$(/TE8S732B4+ :>] .&+_~9PS9(7t3nB+9 "-/G*!$    F'K$ ,s#E(>v#2UQ@98pD )o^49& O 83MnnM  -"  Rfq264&"462"%67>72#"'>54.'#"'#".'4'46?#"&547327654.'62>72327&5476,,P)!6+d aH   h #3BH#0 DF )7 '0#@F, U" ! >$2/ ,,_T<,,P54&#"#"&54732632>54&'2#"&#",,P(>4"CxL$GN.1 n[p264&"462"32>32#".54654&#"#"&54>7>767"#"&5473267632'674.'#"&#",,P32&#"32654&#"#".'#"&54732?#"&54732754&'63267632>32#"&547$,,P54&#"#".547>7"&54>3327654&'632632.'#.'>,,P32654.'32#".#"3272#".54>323254'#"&547327&'#"&547327.#"'7>32,,P54&'632#".'.,,P ,,_T<77>54&5".53274&54&'>32654&',,P"467"&54732632,,P 74$+% "1<3264&"462"#".54654.'>3232>,,P7#"&54&546325"&547327654.'632>7#"&#",,P!'$((856 )   <1PDwO;6r264&"462"".5#"&5467327654&'>327654&'4>3267#"&#"#".'232732672,,P-7, :V8 + $zJ. x%L7=-   ^264&"462"'>7#"&#"32>3#"&5467"&547232?"&5473267632,,P2 ( '%coQ'4T1 Y !jE@H" ?O,,_T<7"#.,,P7.547654.'632654.'327632#",,PH;,8{C% g 3&.!   #7Ua=)M3>A0-:264&"462"4&#""&546732>32#"'67>,,P7"&546332$7#"&,,Pau8`b/*?gAH|Q0:L(  J( 2"&VN264&"462"#".5467&54654.'63267676323267632,,P7&'6%327654.'>32>54'327#"&547>7"&"327&,,PQ#- G!="/)' ",M;=m>D%-A@F%I9^264&"462"3267#"&546327#".54>7#"&5454.'632,,,P7&#",,P32#".'#"&54632654.#"#".'#".'467.54>7654&'632632>?"267&%6,,P1+J2N>T+UG)11: "DH!4  v$B ;(  0 4$$#$~ #&N?=J264&"462"%"#".'&'.'4>32#"'>54&32>54&$,,P32>32654'3263#".'#"&5463234'"&547.#"32,,P7.'"'.'>7>7"&5473263654.'2#".'3267264&"462"A-646[/&'1   ATH8(&fM* '4SNb 6Qi$3Pp<` 6,,P"P2"J @  P1!/&"F? A=D 4$5;#6 V"/J3,,_T<54&##"''3267.'>$264&"462"  #*1^R  #<\vn3H  !. -E <  *4       ,,PtdgjVI6Y 8(   F Bs7.543232654&'632#"&"67.,,P) kC24"M! 6 <C[ >JQYa%2654&'>7.5#"&54654&'>32>76322#"'654'7.#"6$264&"462"VLuMA $d*.8,90P! H!T.>_1B iu_GJ30`+ # *.DI,,P h." >+1",k+O&xvnT%{-83" .v,,_T<3227632327&#",,P RLMkjJ#9 % (!C` 7;%`/?,.x,,_T<54&#".54>7.'632,,P54&#"#"&54654&/632632,,P54&#""&54>7"&5473263>323274&#",,P323267#"54654#"#".'#"&54>7.54>76=4'>322676546,,P#'\z5wC /4u.;. I' :' %$$$ 5 $C{;'0%1[pZ264&"462">32#"'>54#"#"&54>7>7&#""&547326,,P) -8U3-A@-)0J[;D"=)  2qbnz264&"462"".'#"&54>7.5467654&'4632>32#"'>54.#""6?&4654&54,,P74>7>5#"&546732632632#"54632654&#"#.27654#",,P54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'632654&#"#".#""&54>"65,,P%".547327654&'632>72632>32#"'73272#"&5>7.#"#"5467>,,P8$(/TE8S732,,P32654.'2#".#"3272#".54>32254'#"&547327'#"&547327.#"'4>32 -L( EB ' !;%)2>,%8<&;U)'9.%**(086D ((6$&!*      "   B    $  I  *&!'# -+$5 A * C! :"      VkL $%4>54&'632#".'.V4@4$/C)DG?N>J 8& ,B9JNB!V&*W(,%327632#".54>%"467"&54732632)7Q>\/@b46@ ,%*` 2($84 J5 : *JS%#".#"3272#".54632654&/#"&52327.5463232632654.3B&58p>5v!@G+kAX'665?%6,"7 #-  "H% $h&&0#U* @-=J G9 /3 &12.$P& ,%#".54654.'63232>_*3  --4H!A6$)UT}5cE.+1xWZ)-o" X%<&5&#"32>7#"&54&546325"&547327654.'63267#"&#"#%*1  +&'M ,'   =  "?{9 =0?%5LJ  72 B)7#4 3> %0  ,%    /&?An@#Ac".5#"&547327654&'>327654&'4>3267#"&#"#".'232532672$+;,1# < !G#C  "1D"5 =$+  #80: &$ )$HL $@J9 7$3# 33!0#+" .C, " _:% ^ <+0# J>7#"&#"327#"&5467"&547232?"&54673267632 &*ZZw;6, E1' MW@@VF R718 p  V %%iB(> fF2\*&U ''   O"'63267&272#"&547%327654.'632654'327#"&547>7"#.i? 7.47654.'632654'327632#"A/(H"  0 ] !4 < )  JP&I;:qM!n.#6618.#,_5#S(#   bGG0F4<:#-"327#".54>7"&546332$7#"&\9 $3M <9# 3*]H  '\#4-&]KM$&1\?8`@% -<  :'Y;#".5467&54654.'63267676323267632tD2:'/;F & # ;]>'2%A  =)/V&L!l  3*Y;$(   U.(. /bm2#"&#"#".'#"&546324&54>7&'6%327654.#632>54'327#"&547>7"&"327&y1Y <- '!  l2?9D!"''9 $/) %& * V;3( I-K";X,$ U(L!& Y8*"120@ #80 $   #<GHn3$22 9(K3267#"&546327#".54>7#"&54654.'632I*2KX,BS !L3G5&G=e 1" )3*", "#     )G clv|>32#".'#"&54632654.#"#".'".'467.54>3654'63226326?"267&%6*-T.& /Q1A8<7&!I   -   *4   0#(W".3* '?A% @0&!:'=54&32>54& 8o>  ѐ2KWI .8Q."kT*K;!"@#4r~6a@/9<[5Tg aL_FCgs327654.'>32654'327#".'#"54632&="'#.54654&'62>"32>7&,   5 ( * 4% =:D/A2* J,/*$ 6,3 3"` ,#  *-5    )TZ-&5f4 '&;%< y\Q $307" - ! "  'D%#"&'#".5467#"&4732>3232654.'632 G# 5M%70$+2" $ 043!?LPe  &/HEXJ$)C@!;5/( //9Q.:TyHSF! 21EN%#"'"&54732>7.54>7.'632&#"632#".#"#4'326`N1DJ *I /$>U "(>!./) =MAb0;+ $Q#X.2+!+4FJ ; 0 1%A##&27 0 " DD%70$'77'!1,>;*5TR%#"&'.#""&54732>32T0_CH% !I # ITNn/T+K5=N/?>=`Pny3274654'"&'3267632654'27#".'#"&54632&5"&'#"54654.'>&#"3263&9;#(FC9 &>  4/&(%  8(CFG08 KRB' a( )?? 5" "#(/" /%   #  %! &BW'  # %31',4 V+/ 20@ K +6301w"%cm%2735"&547327654.'>32>32654'3263#".'#"&5463234&5"&547&#"32 =A     9o9$F PEP@ *J1?G@9YM (4)'%>h#  # %*#<>7. E15! "!13,%5F5$   0IR>7&'"'.'>7>7"&5473263654.'2#".''32>D(7B %'  SN*P<"|)D:N *?R +x/K */h (>*)M).)  5LM1?': 2 Ak &% 62214( =PC%;M7fv>3232654&54632#.'674&#"#".547.546327#"&547327654&'632&54>5&#"36%!LAJ@ 2%*="%   &O6"38%%02/35  @(1P  $ >% TG BDRJBJ), .)"Ep 3 , R37@.%  "! & /.6:EX.'&'47.'67654.'632#"'>54&##"''3267&'7>  x /GCf/H\V' f9 4.$T6 /$ 1F   8{a3H&%% 8 7%mb;b=+ $eNS%%hB&" M|$@X\ ()   +@G%2632#32654.'#"&547&5467&547365./6322#'64;Dh78$0[pMPSC9*F , 7 4Z/> yV>,bKHX[eJ.C2#E,04"  &=>  2=<%4>7.'632#"&#"632#"'>54&#".= $=)  AT ,B@T7e1MN$ 1|c5$ 0 (J35   D* 3 ` =QM*C$"]90)(1- 4Lv,"'>54&#"#"&5464.'632632PS#!8 & 8#4G>?&5@,0TSH"TC(6 9"WGsY^N3 :C%#"54632>54&#""&54>7"&54732636323274&#"Jb04&8/4E2*?"')8!j)Fb-323267#"54654#"#".'#"&54>7.54>76=4'>3226765464i&o . JT<_8({    " :,+5   , &1S1Ew""JI1j}H_)]x3 %)[$.%9 + $) #(2^0$ 8GJ632#"'>54#"#"&54>7>7#""&5473268  o,3=Qh$;PQ,0 )CN5#|0H#)> =*1 "!(   \4YJ2N1 $+B(s5A5 &: F/4  0! ' OZ%2>747>5#"&54672632632#"54632654&#"#.27654#"   ?*!C-  q@1#Mz/KO(t9)6iZ=294$%#>4 !$D'Wm)@B- ?\ hd;W-F%5!" +kEU-icD ' %&54632232>54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'632654#"#".#""&54>7"654*# &(4)W  @8( & WA4/D?Y_'# 4 $#H/?Y G>"0%' %".547327654&'632>72632>32#"'73272#"&5>7.#"#"547>06 # 1(1f+ @B6+A+/W&&iN'!<[VZ6@ .)" 4)  e  ) - < +,% HDH1%  ,(A'2 :(2F-(22.D6323267#"&54654&#"#".5454./4>2632 _+?A-*[(V3?.#%8   7'B?1,,X5  VIH? > ,(72#"'>54.'#"'#".'&'46?#"&547327654.'62>72327&54776D 5$)!2 !Y:*Kt.AJ6 17@C,)"MK9 mQ (39# 66 + %B%B   )%U% C)% gY4[9*(8X4'9 of%%K ! $Ly%A&   + !!  ,@!$2" $2 2[ (N#".'632#".'6322#"&'.'6#".54654.'63>[  3$8?+%;5g  ! ; *0 $;    - ^$(!EXN-6$ {d0: 3kJB &*+,A / &D5o#&9DQ"'67>54.#"#"&54732632>54&'2#"&#"".'632#".'632  "84#2h#&2!=cFNb "p)!#95 ' #B7?lD&%() 072"4k^; 6=#' 1-[)*7 Zm#".'632#".'63232632#".54654#"#"&546?>7"#"&5473267632'674&'2#"&#"7  * +  1zM. %# 1Kf; R0  5'("e% .*%I  !$@ 1r8.  ?HI& .#4 ? %S 32#".'62#".'6254'67&#">2&#"%>32>32#"&54732654&#"#".'#"&54732?#"&54732754&'62 G 5")&:'%+o -  CJD  $ $j 0($;TVP52+328)9E7  # f"(-  ",.>3 1 J$  .. $')!u'\H8Hb8#+ % B3"&,@ = 2 D% n (*>H^ju%#".'&'32>54&#"".54767"&54>3327654&'632632.'#'.'>7".'632'632#".Ro8 F- $+R--b6+,  T 8/0~.iV" ' ] 5$+!2 "^ ;x*$5JB3#G 0 C! " .CG %5#.G;,  $ D )(},>32654.'32#".#"3272#".54>32254'#"&547 327'#"&547327.#"'4>32%#".'632#".'632-K' E " ( !;%(2>,#8<&;U*'9/$**(096C    '8%'!)    !  E 5%=> 4%%B B    $  I  *&!'# -+$5 E *  C! :"       / $^$5%Rk %.8%4>54&'632#".'.%2#".2#".R4?4 $/D)DH ?O~ )d0O 'N>J 8& ,A 8KOA$B*W(K=,$ A_c$Yer"&54654'632>7%7>54&5".53274&54&'>32654&'6#".'632#".'632R2A !2& " $&2?$ (%+@ ?%# 3$ * w - +?; ' ,,h^7 6/=CMT %8 Nw>( 2mCX  2 ? (-& 2 $ 8CF4&X', #/,8D%327632#".54>%"467"&54732632#".'632#".'6327Q>\/@a45@ ,%*` 2 . ,@C ,$--($84 J5 : C8(Z(; % (JS_i%#".#"3272#".54632254&/#"&52327.5463232632654.%#".'632#".'6323B&58o;4u"?G+kAX'846>$9("6 $-  #I $1 + $5= *% %f&'0#V* ?.=J G9 .3 (0*("P& 8 ) 8B1* ,8%#".54654.'>3232>#".'632#".'632_*2  .-4H!A5%',*DP!  +!&IUT}5cE.+ 1xWZ'!*4'*'d(0 1dG. Xdp%4.5&#"32>7#"&54&546325"&547327654.'63267#"&#"#".'632#".'632$ 8B +&' M +(   9"?{9 <0:*5LI  0$/= 1#"  81 'J58"4 3?%0 &$ +&    /%@An?# ( W* bZfq".5#"&547327654&'46327654&'4>3267#"&#"#".'23273272".'632#".'6324B,0# < Q#B "1F"4 >$"+  $8$w(R*">F 0!#<) /$>\ CRE 6%3# 22 0$+" -B, " _:$]1c.2,  !"0LMYe>7#"&#"327#"&5467"&547232?"&5473267632#".'632#".'632y &A(Zv<6, E~0' MW?)A&F U808p 1 ) #2= %%:9*$%iB(> gF2[  & U &' 29 +"S! & 5P\f"'63267&272#"&547%327654.'632654'327#"&547>7#&%".'632'632#".\? ?F*;$U! pI*#,rGW"!37 &    5 &SW 5$) 2  Z:$2)  * .@5,''! 'A 98hQ. 0G% C)ER_654&#"#"&54>7.547654.'632654'327632#"#".'632#".'632@/)H!  0 9-  4< ) LO&I;:rMg %"9@ ' #Bn.#6618.#+`4K($   b=Q0F4<:# &,W**X)5?%4&#""&546732>32#"'67>7".'632'632#".JE($+!*&!E  ~=T! \$AQ1{ 5%)!2  ]<1B   ? ++aQk  0M$  C)(+4>"327#"&54>7"&546332$7#"&2#".2#".\9 #4MHp 2*]H  ([#4-'} )i1O ']KM$&kw8`@% -<  :';L=,# BS:FR#".5467&54654.'6326767632327632#".'632#".'632tD1;'/; @% # ;]>(I &^ 3 $;A + $?A  =)/V&L!l  3*Y;$$  U.(. 0#d#)#I Gz2#".'62#".'62#"&#"#".'#"&546324&54>7&'6%327654.#632>54'327#"&547>7"&"327& - 3" (' 4'&:1Z <- '! i2?9D!"&'9 2) &% /  V;3( I-J":   B "K-$ U(L!& Y8*"130@ #70 $   #;GHn3!21 9_ &>b2#".'6632#".3267#"&546327#".54>7#"&54654.'632!0([#%$ 0I*2KX,BS $K2G5&G=` 1" )3* #+ "E $ (= ##    54'632632#".'#"&54632654.#"#"'#".'.'47&327&'7632>7&#"< -" #7& 1$((*49+  Zu  /8.F?8-! B5 %    g 3/&}" -x* #"1 "$4# ~u%&2%#&:&;+D529]7   & BnL,5DR#SP J 2#".'62#".'6>32#".'#"&54632654.#"#".'#".'467.54>3>54'6322632>?"267&%6!+/! .&-%  .' 0O1B8<8%  G   -  )3   $(U!.3 +  $;&(  E<% A1&!:%>0B"}B7e &c&.59)    * #3 .  " ) b" -b ?L".'632#".'632"#".'.'4632#"'>54&32>54&J ," #7& 2$C #:X/ Ґ2KWI &/G+,kT*K;* #"1 !#"!/{tP%5r~6a@/+-"32>7&327654.'67632654'327#".'#"54632&="2#".'62#".'6l-/*$ +34",  7  ) + 4% =:D/~@2# [%9 - #D +"<%<x\Q!$3089+7#  B !# +.4  $  *Q]-&5f4z'#/3232654.'63272".#".'2 G# 5M%70$+2" $ 043!?LPe  &/H 0D#!>0EXJ$)C@!;5/( //9Q.:TyHSF! 2$#<_ G!81ENZe%#"'"&54732>7.54>7.'632&#"632#".#"#4'326#".'632#".'632`N1DJ *I /$>U "(>!./) =MAb0;+ $Q#X.2+!+" 5 $=> 4$%A4FJ ; 0 1%A##&27 0 " DD%70$'77'!1,>;*52 / $_$5%N*6%#"&'.""&54732>32#".'632#".'632N1_BH$"FA !H"! ITNn/U*+1'+CN! ,!&HK6<MHM/?>=`'6'c'00`Qoz3274654'"&'3267632654'327#".'#"&54632&5"&'#"54654.'>&#"326#".'6322#".'63& 9;#(FC9 &; ,"&(%  8(CFG06 KR;' `' )?? 5" "$(, +)&0- * /" /%  #  %!  BW'  # %31',4 V+/20@ K +6301w" ,#)4! r2#".'62#".'635&547327654.'>32>32654'3263#".'#"&546324&5"&547".#"323 - %M +!~    8o:%G PEOA 2J1?HA9-YM (5  '%>"'?>  " h@ " $+#<<6. D26 -!12,&5 E4%   ; bl#".'632#".'632>7&'"'.'>7>7"&5473263654.'2#".''32>;  3$81 -%7e;D %&  SN(P<!}(D:N +?R 6o/K  - d$4"+ <<6+M).*   4LI />'9 1@k '% 612/6( &53C%(-3X #".'6322#".'6>3232654&54632#.'674&#"#".547.546327#"&547327654&'632&4>5&#"36X 4".&!q,% 6&%  !LBJ@ 2%*="#  'N7+=@"&/1/,5  @'1P  +%$# 3$ SG  BDRJBJ), .)"Ep 3 2&Q47@.&  ("!% 0.M Xcr#".'6322#".'.'.'47.'67654.'632#"'>54&##"''3267&'7>M 2".)!F67%n x!0HA f/H\V' f8 %T6 0$!4C   "("(+ |a4I'%' & 7%mb;b=+%eNR %*( M}%@W\ (% )(%' X_#".'632#".'6322632#32654.'#"&547&5467&547365./6322#'6 , *DD!  ,! &I4;Dh78$0[pMPSG<+F , 7 4Z/>'* (g)00 yV>,bKHX[eJ0A1#E,04"  &=>  2rI \h2#".'62#".'6".'"&54732>7.54323254'632#"&'232654&#""67.G 6!*%9(% (/ F $"AY&-M (%EG>G=M,8-*"*@_   R,j 1 G"  32676322#"'654'7.#"6$1 4!%7 4$<[<3 O;#,"-%> 8Z0J'4Rs[I89(&K!{ !$7"!* C"B/ h\Kq^\|WbAcax B( zc%O PZ2#".'6#".'632#"&'&'#"&54632&54&54.'63227632327&#"9 2 ; 2)!+) [M$2@;/1(< wL$^ "+D? V".'632#".'2632"&#"632#"'654&#".54767.'632  " %N " D,#>W31 2LO$(6$ / /+Q  @T  - L* 5 (`  `<#@)*B$>z0*(2- 3;B<   C* Dt$ H#".'632#".'632"'>54&#"#"&54654.'632632 )"-0F $"I4C,#!8 % 8 4H=?&5@,; #[ 60QmTSH,TC(:!RMtY^N3  S\#".'632#".'632#"54632>54&#""&54>7"&4732636323274&#"  + #;? '!Ka04&903D2*?"'*7!j) Cf->323267#"54654#"#".'#"&54>7.54>76=4'>322676546!*,!,',$  ;g&n . JS<_8({    " :,+5    - &1S  '>(+ 8Bv#!JI0j}H_)]x3 %)[$.$9 - $)  )1[3 . G a2#".'62#".'6'632#"'>54#"#"&54>7>7#""&547326#+ 0" 3+A  o,3=Qh$;PQ,0 )CN5#|0H#)> =*1+.(  &C$     ]3YJ2N1 $+B(s5A5 &: F/4  0! 'Q ht632#".#".'6".'#"&54>7.5467654&'4632>2#"'>54.#""6?&4654&54+%, 2!\/"   & H_B  9 5dk6NN Pk6%Tb $A "  ""< ! .d%(  0 P <P  - :% 88rW5`:"(tG%.l&. . $/>!3! "hs2".'62#".'62>747>5#"&546732632632#"54632654&#"#.27654#"", /"%" 0&   ?*!C-  q@/%Mz/KO)s9(6iZ>494$% $ %D!- 4 !$D'Wm)@B- ?\ hd;W-F%5!" +kEU-icD '" 2#".'62#".'6&54632232>54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'62654#"#".#""&54>7"6546 ,)> , *# 4.4)W  A~8( & WA4.D?Y_&# 5 $#H/?X G:>"0%' 4&#">%".547327654&'632>72632>32#"'73272#"&5467.#"#"547> + . -& ,#06 # 1(1f+  @B6+A+/W&&iN'!<[VY6@ .)"! '@&* 4)  e  ) - < +" HDH1%  ,(A'2 :(2F-(22. ]#".'632#".'632'6323267#"&54654&#"#".'454./> 32 )".0I #"J d+@A,+ZfK?-#%7   6c ; #Y 60\ 'B?1-+W67H? > ,(72#"'>54.'#"'#".'&'46?#"&547327654.'632>72327&547 76"&/ !//! /)Kt.AJ6 17@C,)"NK9 mQ (49# 6 + &B%B  )'\"!//! // )gY4[9*(8X4'9 ng%%K ! $Ly%A& $+ !!  @!$3! ! 0& 5K"H264&"4632#"2#"&'.'6#".54654.'63>""?/! // ![5g  ! ; *0 $;   ""JB..B/XN-6$ {d0: 3kJB &*+,A / &D5o8K264&"4632#""'67>54.#"#"&54732632>54&'2#"&#""">/ !//!   "84#2h#&2!=cFNb """JB//B/L7?lD&%() 072"4k^; 6=#' Tg264&"4632#"&32632#".54654#"#"&547>7"#"&5473267632'674&'2#"&#""">/ !//! /) 1% !"],2B  )?  1zM. %# !2Ke"; R0  5"") // !//%I  !$@ 1r8. ?HI& .#4 ? %Z/264&"4632#"254'67&#">2&#"%>32>32#"&54732654&#"#".'#"&54732?#"&54732754&'62"">/ !//! q+o -  CJD  $ $j 0($;TVP52+328)9E7  # f"(-  ",.>3""JB//B.z. $')!u'\H8Hb8#+ % B3"&,@ = 2 D% n (*.Zp264&"462"&#".'&'32>54&#"".54767"&54>3327654&'632632.'#'.'>""?/B..B/9o8 F- $+R--b6+,  T 8/0~.iV" ' "") // !//x*$5JB3#G 0 C! " .CG %5#.G;,  (}3264&"462"&>32654.'32#".#"3272#".54>32254'#"&547 327'#"&547327.#"'4>32"?/B..B/-K' E " ( !;%(2>,#8<&;U*'9/$**(096C    '8%'!)    !  ""*!//! // B    $  I  *&!'# -+$5 E *  C! :"      Rk 7264&"4632#"4>54&'632#".'.""?/! // !4?4 $/D)DH ?k""JB//B/DN>J 8& ,A 8KOA$B*W(XV"0l2654&"4632#""&54654'632>7%7>54&5".53274&54&'>32654&'6""?/! // !l2A !2& " $&2?$ (%+@ ?%# 3$ * w"JB//B.^7 6/( 2mCX  2 ? (-& 2 $ 8C &<264&"462"327632#".54>%"467"&54732632""?/B//Bl7Q>\/@a45@ ,%*` 2D""JB//B/O($84 J5 : 1 `i264&#"4632#"&#".#"3272#".54632654&/#"&52327.5463232632654."&/ !//! />3B&58o;4u"?G+kAX'665?$7*"6 $-  #I $" // !//&&/#V* @-=J G9 .3 '0*("O& *5264&#"4632#"&#".54654.'>3232>m"?/ !//! /_*2  .-4H!A5%'"") // !//T}5cE.+ 1xWZ'!*a6< n264&"4632#"&4.5&#"32>7#"&54&546325"&547327654.'63267#"&#"""?/! // !/$ $*1 +&'M +(   <  "? {9 <0?%5LI"") // !//  72 B)7#4 3> %0  &,*)    /'>Ao?#Sl264&"4632#"".5#"&547327654&'46327654&'4>3267#"&#"#".'23273272"">/ !//! 4B,0# < Q#B "1F"4 >$"+  $8$w(R*">F""JB//B/L CRE 6%3# 22 0$+" -B, " _:$]1c.2= a2654&#"4632#"'>7#"&#"327#"&5467"&547232?"&5473267632"?/! // !T &A(Zv<6, E~0' MW?)A&F U808p 1"JB..B/|9*$%iB(> gF2[  & U &' 2#4e264&"4632#"&"'63267&272#"&547%327654.'632654'327#"&547>7#&""&/ !//! /$? ?F*;$U! pI*#,rGW"!37 &    5 &S" // !//2)  * .@5,''! 'A 98hQ. 0GW264&"462"&654&#"#"&54>7.547654.'632654'327632#""">.B//B.@/)H!  0 9-  4< ) LO&I;:rMP""*!//! //s.#6618.#+`4K($   b=Q0F4<:#O ?2654&#"4632#"&4&#""&546732>32#"'67>"?/! // !/JE($+!*&!E  ~=T! \$AQ1") // !//1B   ? ++aQk  0M A264&#"4632#"&7"327#"&54>7"&546332$7#"&"&/ !//! /K\9 #4MHp 2*]H  ([#4-'" // !//]KM$&kw8`@% -<  :'SO2654&"4632#"&#".5467&54654.'6326767632327632""?/! // !/HtD1;'/; @% # ;]>(I &{"*!//! //u  =)/V&L!l  3*Y;$$  U.(.?At264&"462"&2#"&#"#".'#"&546324&54>7&'6%327654.#632>54'327#"&547>7"&"327&"">.B//B.61Z <- '! i2?9D!"&'9 2) &% /  V;3( I-J": ""*!//! //2-$ U(L!& Y8*"130@ #70 $   #;GHn3!21 9`*#<_264&"4632#"&3267#"&547327#".54>7#"&54654.'632""?/! // !/F*2KX,BS $K2G567"` 1" )3*","") // !//: ! #    4#$D`@"!f'Bt]J   <Rnw}2654&"4632#"%267>54'632632#".'#"&54632654.#"#"'#".'.'47&327&'7632>7&#"""?/! // !*49+  Zu  /8.F?8-! B5 %    g 3/&}" -"KB//B.4$4# ~u%&2%#&:&;+D529]7   & BnL,5DR#SP P}264&"4632#">32#".'#"&54632654.#"#".'#".'467.54>3>54'6322632>?"267&%6"">/ !//!   .' 0O1B8<8%  G   -  )3   $(U!.3 +  ""JB//B/H E<% A1&!:%>0B"}B7e &c&.59)    * #3 .  " ) b" -Z8E264&"4632#"'"##".'.'4632#"'>54&32>54&"">/ !//! 8o>  ѐ2KWI .8Q."kT*K;""JB//B/ ""@#4r~6a@/9<[5Tg aL_Fi&+qy#&54654&'632>"32>7&327654.'67632654'327#".'#"54632.="$264&"4632#"&k-Z%+34 #-  6 '* 4% =;E/~A2#D"">/ !//! /<%<Q $3089+7#  B !# +.5  %  *Q]-&5f4:('"") // !//_EMW%#"&'#".5467#"&4732>3232654.'>326264&"462"& F$ 5M%70$+2" " 043!?MOe .H""?/B..B/EXJ$)C@!;5/( //9Q.:TyIQI ! 2""*!//! //1ENV`%#"'"&54732>7.54>7.'632&#"632#".#"#4'326264&"4632#"`N1DJ *I /$>U "(>!./) =MAb0;+ $Q#X.2+!+"">/ !//! 4FJ ; 0 1%A##&27 0 " DD%70$'77'!1,>;*5:""JB//B/N (2%#"&'.#""&54732>32264&"4632#"N1_BH$FA !H # HTNn/U+""?/! // !K6<MHM/?>=` ""JB..B/^R]{327654'"&'32676322654'327#".'#"&54632&5"&&#"326#"54654.'>$264&"4632#"1' ::$(EC9  &; ,"&(%  8(CFG06LR "!#'' a( )?@ 5"">/ !//! /6+%  #  %!  <]'  " %31',4 `!/" 20@ K +6301w""JB//B/!'mz264&"462"&35&547327654.'>32>32654'3263#".'#"&546324&5"&547".#"32""?/B..B/~    8o:%G PEOA 2J1?HA9-YM (5  '%>"") // !//h@ " $+#<<6. D26 -!12,&5 E4%   1KU]e>7&'"'.'>7>7"&5473263654.'2#".''32>264&"462"e;D %&  SN(P<!}(D:N +?R 6o/K Z""?/B..Bj <<6+M).*   4LI />'9 1@k '% 612/6( &53C%(-3""JB..B/U 264&"4632#"%>3232654&54632#.'674&#"#".547.546327#"&547327654&'632&4>5&#"36""?/! // !%  !LBJ@ 2%*="#  'N7+=@"&/1/,5  @'1P ""JB//B.' 3$ SG  BDRJBJ), .)"Ep 3 2&Q47@.&  ("!% 0.CBM\eo.'.'47.'67654.'632#"'>54&##"''3267&'7>3264&"462"& x!0HA f/H\V' f8 %T6 0$!4C  "?/B..B/; |a4I'%' & 7%mb;b=+%eNR %*( M}%@W\ (% )(%""*!//! //'SZ264&"4632#"2632#32654.'#"&547&5467&5473654.'6322#'6m"">/ !//! 4;Dh78#0ZpMPSC9*F , 7 4Z*?""JB//B/ yV>,cJHX[eJ.C2#E,0 4"  &fg  8r> [g264&#"4632#"&".'"&54732>7.54323254'632#"&'232654&#""67."?/ !//! / (/ F $"AY&-M (%EG>G=M,8-*"*@_   R,j"") // !//32676322#"'654'7.#"6$264&#"462"@<[<3 O;#,"-%> 8Z0J'4Rs[I89(&K!{ !$7"?.B//B \Kq^\|WbAcax B( zc%[""JB..B/IMW264&"4632#"&#"&'&'#"&54632&54&54.'63227632327&#"""&/ !//! / [M$2@;/1(< wL$^ "+D? Q264&#"4632#"&"&#"632#"'654&#".54767.'632"&/ !//! /H,#>W31 2LO$(6$ / -*T  @T" // !//?  `<#@)*B$>z0*(2- 3;A?   C* Du" @32654&"462""'>54&#"#"&54654.'632632"?/B..B4C,#!8 % 8!4H=?&5@,"JB//B.QmTSH*TC(:"RLtY^N3NW3264&"4632#"&#"54632>54&#""&54>7"&4732636323274&#"">/ !//! /YKa04&903D2*?"'*7!j) Cf-323267#"54654#"#".'#"&54>7.54>76=4'>322676546""?/B..B/ ;g&n . JS<_8({    " :,+5    - &1S "") // !// 8Bv#!JI0j}H_)]x3 %)[$.$9 - $)  )1[3 . G[264&"462"&'632#"'>54#"#"&54>7>7#""&547326""?/B..B/I  o,3=Qh$;PQ,0 )CN5#|0H#)> =*1+.(\""*!//! //   ]3YJ2N1 $+B(s5A5 &: F/4  0! 'Peq}264&#"4632#"&".'#"&54>7.5467654&'4632>2#"'>54.#""6?&4654&54"?/ !//! /   & H_B  9 5dk6NN Pk6%Tb $A " "") // !//.d%(  0 P <P  - :% 88rW5`:"(tG%.l&. . $/>!3cn264&"4632#"2>747>5#"&546732632632#"54632654&#"#.27654#""">/ !//! X   ?*!C-  q@/%Mz/KO)s9(6iZ>494$% $""JB//B.4 !$D'Wm)@B- ?\ hd;W-F%5!" +kEU-icD ',264&#"4632#"&&54632232>54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'62654#"#".#""&54>7"654"?/ !//! /*# 4.4)W  A~8( & WA4.D?Y_&# 5 $#H/?X G:>"0%' %".547327654&'632>72632>32#"'73272#"&5467.#"#"547>""?/! // !/06 # 1(1f+  @B6+A+/W&&iN'!<[VY6@ .)""") // !// 4)  e  ) - < +" HDH1%  ,(A'2 :(2F-(22.S264&"462"'6323267#"&54654&#"#".'454./> 32g""?/B//Bv d+@A,+ZfK?-#%7   6`""JB//B. 'B?1-+W67H? > ,(54.'>32>5&#""&5464>732>3272+# 53c% (%)P 9zU/:# >~O :K   <^;'H# (i6 D)3O   E$ +'H       z/:W @#".'632#".'62654'632#"&'4654'#" 9)/LS :/22,e ,?-C))) U2?(z2B# (` GQE]/ U@)| )'-MaMBNZe4&'4632>?<>54&'4632>7#"'>7&#"#".'6#".'632#".'632$%9 P #B'2! P Sm{p+(7X=G- /      D( /NC B/!/T/.   .87  G ^xZ,&D>YYq; )a,-  r< -.D /c M".'632#".'63226767"&# "&5463327654'"&54>78+%-D7$ ;.t=,j (kN2 SQ/ Z?E $b r%!5<6 $&!+9 z/8   V & =F.sG= ;' r \632#".>32#".>7.54633274654'632>?2#"#"'.'265#",-/ 7.5473276  =)/2/08 A-!!'G:{8\ "!/u sL ~NRD2 "&+m .+(0'5L>7Q<\F  {zK{  8 & q3v 1A".'632#".'632&#"&546732$#&547326X8+%-D6$ ;.t7#ZJ1'L 7.'6 ?0.'ED! B0&'j*0A1S/!H5"r?;oF4 10/&/ F(? 2"&5!hY)32%* B ?b4LM#HDd, &&20pk BO_2#".'62#".'4'#"'$7.5473267#"&'62#".'6#".'632"F 9#=&.- ;)T3 @~vu1 /!S9S & 0:m 3  :( =E1#!-5 I '><NL2 7  *7JREx-%)([E+"-<*1@"?xv -#".'632#".'6326$654&'632#" 8 3CN$ /!(L |,OQ~W3E/s59 '5J W 4zR9 >2#".'62#".'>7&#".54732$7#".o"B :#9&.- ;)28i6  ~J!hze2MG:+&R#"-7 C '>)4` D+)1;".311.Ep %4D#".'6322#".'6%632#".632#".2#".'6 :'-)$J ;*)$WGQx,=?) # N!OV;% /iI0m+6 # &);  A)#!/F3 !.>'H,"06D qi @#".'632#".'632#".'".54732754&'632$7&q  D( /NC B/!/T]) o9'(   "/@(Iq< -.D /S") 3&_ 7#Dg O FQ"] R#".'632#".'632#".'#"'>7.'632654.'>32 3).CD 1&)E:  $4ZRp:PD_l72!1 ~X   1IJ,)#o:%/4&7 -'4H, $&AjE3#/)    ]  w=0Fh l".'632#".'63232>7654'.54732$7672"32>3#"&547.548+%-D<$ 9.q-:j( >>: );*9FB K D#0  c J}VC:^6 $&+8 U$  .. &  W/  K5)4 !O2! =#c _2#".'62#".'64732>7.'>32>7#"'>7&#"#"&'&'.i%= :*##,B 7'"^  F]  A; /X  <)%f '"$%2;@ %(-T")(" :$ 4'8 a  CB<Z' L632#".>32#".47326767.#".5472>767&#"./-/ =o 2- >&"1$*P 'k(m&4;!B'@XD# 9-%,;02W"& 9 -H`,7 D>.U, = j#".'632#".'632.5473267>7#"&547326765&#".54673267.#" 3"7FD% =-!"+.2#6)"(*3c ("  -!;  X-] 4+  B- ,r*< $u1"" !2:$3 # f<8 2  ( E$&$ ,M#".'6322#".'6.5473267"'67&#".54732$7  =)/2/08 A-!'04.V0" + /A!0 /G!"L @c .+(0'5& *  :/:) A 6T#".'632#".'632&54654.'632#"&%"'>54&54654'632 -"")X! -! ,G !@"Y>ZcJ Ed7 8/!X /5 %X69+k(_ /# G5f "`[gK!1fV`F,FE" $Bk) +Q#".'632#".'6324.'632>%.54>7654.'>32>b 8 3CN$ /!(L )U -dcm|d$$   "V $JE/s59 '} N _7"&5467654.'632@ >$5HZ%8* (V2YX9Z!c s^Z  'W\> (v5G$+21?*Sd Jw D  JT632#".>32#".4.'632>72"&#"#"&'&67"6/-/ =p 2- >  *E"PC4% p .K ! P-%,702->! '0  ;k &%Z-'Qo$} $3#".'632#".'63247327.".'632@ >$5HZ%8* (V :;,NN5$;J0'> (v5G$+'0{KY-G! 7'!xyZ264&"462""'>54.'>32>5&#""&5464>732>3272,,P~O :K   <^=,,_T<?<>54&'4632>7#"'>7&#"#".'6,,PYYq; )a,-  cG264&"462"26767"&# "&5463327654'"&54>7,,P7.54633274654'632>?2#"#"'.'265#",,P72#"&54.'6,,P9[d,,_T<3267672#".'"&,,PN^  ! _P,,_T<7##"'>54&'632272,,P XlS' ]%> xPqD264&"462">54'#"'>54.'632672#"#",,PIB S )5  $dc4<264&"462"472$7>54'""&54>732$7# "& ,,P إHu,,_T<73274&'>3267>54&'632>3.#"#"'676#"'6 ,,P7.#".'632632#".,,P01 S,,_T<@ +$!8E@264&"462""'>7.54>732672#".',,P7#"'67327632#".5465"&&,,P54.'6".'632,,P54&'632272#"'#"'> 7&'63267#,,PZJ8,,_T<72&#"#"'> ,,P%632#".,,P7.2&547326,,P7.5473276,,P7Q<\F  {zK{  8 & q3u+;264&"462"&#"&546732$#&547326,,P 7.'6,,P7&#".54732$7#".<,,P'H,"06D ci9264&"462"#".'".54732754&'632$7&,,P7.'632654.'>32,,P7654'.54732$7672"32>3#"&547.54,,P>: );*9FB K D#0  c J}VC:,,_T<7.'>32>7#"'>7&#"#"&'&'..,,P/X  <)%f '"$%2;@,,_T< CB<Z'A264&"462"47326767.#".5472>767&#".,,P.U, =`264&"462".5473267>7#"&547326765&#".54673267.#" ,,P54&54654'632,,PZcJ Ed7 8/!X ,,_T<%.54>7654.'>32>,,P7"&5467654.'632,,P72"&#"#"&'&67"6 ,,P! '0  ;k &%Z-'Qo$9264&"462""'67"#"&'4654&'632$72,,P7"67&#"#"'467.7674654' ,,PA[s%4]/F "@7267&#".547327654&'7>3267&#".547,,P7,,P3267672#".'"& /+vJ6 a  5 -3H 7_p+=H  hI?x&n   !   !&  ) K.<[).,S :)7473267>54'""&5473267#""& $5)8&K-!>3  9@& # 9$-  /F,M%.54>73274.'>3267>54'62>7.#"#"'6767"#"'6nF..  '@  4 `)6/ 9 = . ?SP$Aj!T'  3  ' " (? > : &!R   cS)$c F1KB7473274654&'632>7#"'67327632#".="& t  ; xQC,|# O6#"?J! -9E! F76  +: 7*"0X$9 :eMY 79O+! 7;45 6"2#"'&'>54.'".'632f54&'632272#"'#"'6767&'63267# Di+ 7 _+<D(%#N3 KA)> C-54'632672&#"#"'>,A/ 5 #LI :  #6_B 5$M[Wjd 82*   Q ; (  +p8"3473267&#"#"'>7.%2&5473260?J>59U SYKXt>2l:&#E (5x  #(   T}>'w 2  - ,4&'63267.#"#"'>7.54732767-_,H d \ cp FZ7=*DZ !%/ . /)%  $  -:H%4'#"'67.5473267#"&'62#".'6#".'632A'b&r&  %A.? &.U ( P 3&CBK =;$+!* <= 3 ^#!P5"$/4+?;>54&'632#"`{ "= ?bnDJ): D (ev_@%z'%>7&#".54732$7#".p,R+f _9P(O'<7-"@(vK3! '-$(&&$6W[} +632#".>32#".2#".'6!/i >^%A8=>C.$R9" ;/%6 /!$08"%+4 :%#".'#"'>7.'632654.'>232-  $7Wf8 @5JT+'&bD '8 +;Q+% '3?!2S6'$m  H %A$E'M732>7654'.5473267672"32>?#"&547.54-S )7- .!, 9\+475z& M8faC}1.  N  $$   D$(;)  '>d$1GP747327.'63267654.'632>7"67"&#"#"'467.7675 )*?: 4$ "),$.`RD#1 B^#W}2D&y iL  -D /$( ,N #)e ;8x' !(  ;|8D27>7267&#".547327654&'7>3267&#".547>BG{- C 9] =#8-_!9js + 8+/j G<%,: -, 6* "X Q+(;%"#"'>7.547326765.5473267>3&!%z , C1$0 >|(/,$;(!6g & ;# # E' %4732$7.".'62 -=w."= =*&.:% ~`; "8 ,, V%#".'632#".'632"'>54.'>3267&#""&5<>732>3272, " )(M   !>4 F  %-F1b> x-=  tyL 8R* 4 ']   6D3!8    _%>q~* @#".'632#".'62>54'632#"'4654'#"* , %;A )(&# "1#4 &By(41`') K7 @5H% B2 `  B374654&'4632>7#"'>7&#"#".'6#".'632#".'632 , B3 '>  BU`W!->^;- $3  5 %=5 3%%A   ! $). 8 I^F"-USw@ L"#   / #i$5%H N".'632#".'63226767"&#""&5463327654'"&54>71 ,! #5+ .$ZS/"S S='y>C F16 Iq X* * !-_%*  '   07$ PA/ . G ]632#".>32#".>7.54633274654'632>2672#"#"'.'265#""#%.T   '#-t'Ec ! 40{! D  ;#]+4 ; :2$"4%&lEzD$  A4/!".Y~." 4& K_I>JU"##"'67.547327654'632>72#"&54.'6#".'632#".'632j>3%ZS?h< /,2!? / H "]C &6G 5%=< 4%%AdDM - C%--19   / 7c /#]$4%H f#".'632#".'63247327.'.54673274.'>3267672#".'"&H . ,@E (  % 0/s P/\  5 /1H "u h3>K  kF>7([)/ %K  * %  !* $& .=./N!)--R:E'3="'>7##"'>54&'632272#".'632#".'632Ma: H;0&Z| 0*N.L/tiiIV /$&8< -( )t(o^?ETAI 0 e^>D0 &9J5X I#".'632#".'632>54'#"'>54.'632672#"#"X 4 $;5 7 &CPCw6_Iv 9 *> RL/9X . "b!3"&;093A  *  M(4@6473267>54'""&5473267#""2#".'62".'6 %5)8&K-!>1  &: . ((*/"0% # :$- / /93UOZf%.54>73274&'>32>7>54'62>7"&#"#"'6767"#"'6".'632#".'632W9:/  07  4 S)6/ 8@"#-;E?Bhd&  1#@E  -" )E  4 H+  '? > : &"Q  PS9$b F1K 7+U =, ,8E%4732>7"&#".'632#".'632#".'632632#"./:?[^B . ,?: +$-- =3"-O!,0* G UeDfej#F8(e(; %F> 2 &832>I"'>7.54>332672#".'#".'632#".'632@Se[.Ru+ -C JFc/!N>  4%'779% $:R$;_]#-  - #X..&6M`k4 ' d, eFR]7473274654&'632>7#"'67327632#".5465"&%#".'632#".'632  s  : yQB-|#R2$#?I! -.?$L26 5%:0 0# %A +: 7)#5R%::eRT 8 . O*!  53)" 7 .g!0"P" -:2#".'62".'62#"&"&'654.'6".'632'; 0 "E/# D :  4%,^"/7#48< 42o $2>H-J U#".'632#".'632"'>54&'632272#"'#"'2>7&'63267#J /$'8< -( *@ Dh+ 7  ^,:D(%$O3  '*( !7&B08H, 0&^$5#0tK 26r<#!31^_""+<OA=^R<GS%"&547327654'#"'>54'632672&#"#"'>".'632#".'6329=F5 #RC*: #6`B~5"M[Wjd 1#A>  -! )E 8*  Q ; ) " *q9G 7+\=,U# "8F#".'6322#".'6#".'63274'632#"'>%632#".U / -(50 , - 1#+[# $P 1YmO [d9 =6 2 1&.#80"76dA #ilI!{U4$(:]"3>J473267&#"#"'>7.%2&547326".'632#".'6320?J>59T SYK Xt>2l:'#D (5xE 0 #>>  ,! *B #(   T}?'w 2 -  6([;), 8#".'632#".'632'".'#"'64&'632,0(+CI! ,!&FIg-$  0'6 (g)00-1": D1%-.?Z*LuJ@,F C#".'6322#".'64&'63267.#"#"'>7.5473276F 0 $($|%, 3#8-]/H d \ cq =@4 (  $"%*;1+ ?.H 6;` ,  ! ):".'632#".'632&#"&54732$'#.547326 ,! #5* .$Z+FAa>FZ 6<+DZ !&/* ". /  /)&  $  5) J#".'632#".'632267&5473267#".'#"'6767.'65 1%$554% R` j%3%A$8)Y1-jW7a/EK6!/  ' d) QF!('! 3 1M(<;85N#3"5U% CO]2#".'62#".'4'#"'67.5473267#"&'62#".'6#".'6326 ,.$# . A( d&r& $A3;  &.T. O 3& CB$) 9 1 =;$+ !+ ?: 3 ^# P5")@4+?;G ,%#".'632#".'632>54&'632#"G + (5= ) <`{ #= ?bnD 6%Z)7): C (ev_@25 $5#".'632#".'632632#"."'>54'6325 5$=< 3%%AA@TB C" 0#^$5%>A-4>U"$ @@;=HS%4654&'>32>54'>262323267#".".'632#".'6329 >1Z1?/n#@0q1N1C$0#BD -! *C/*83"7 (! ?,(0C( ( <5P 8,^(<*I&2=#"'>7"&#".54>3326%#".'632#".'632g#F )y|q-0)92(  4%:; 0#&?0 l]/O( 3 P - a!0!M +774732>32".#""&%#".'632#".'632 SU7BJb04 9XL =QD{0(+CH" ,!&GGF'7"&#"#".'36=.5472#".'6#"54>7E 1 #AB  ,!*C7.a 5!4'( ^$ ,'G YB/a$s +$ E0% Q' 7*U;)z A; 3 )-XZ#5="<* )`[6"#3P"(7y  M:j =2#".'62#".'6>7#".54732$7#".4 - ; . {,R*g e:R'N'< 7-"@#*4 0 (wK5! &-#(&&$6WN- #1A#".'6322#".'6'632#".632#".2#".'6- ,8: -!"/h 7V%A8<>C.%Q9"!* " #.  ;/"+/!$08"%+4  @#".'632#".'632#".'".547327654&'63267& 5$=4 3$%AH|   V- %2"}9j] / $h$5%l zA ( J ,P =:>\ O%".'632#".'632#".'#"'>7.'632654.'>32\$$55 )% 6.  #8We8 >5JT+'&cD '9 :"< $b%3~+$ &4?!2S6'$k!  I \/FD d".'632#".'63232>7654'.5473267672"327#"&547.54- ,!#5.-$Y-S )7-  .!, 74<5&58M8faC&-* ",   P $$  G%:)! )>d$ 0c Z2#".'2#".'64732>7.'632>7#"'>74#"#"&'.'.:/ . #3 /' 6K   #2//D."D0z Q'I]2 #1 #)   , #)*  K 0^!q/`2604)/2 E632#".632#".47326767.#".54732767&#".%#$/W '# 1&!> /SU (.3.-$".%&C - 2t"+ 5 0#jI" 0I f#".'632#".'63&547326767#"&547326765&#".473267.#"I -" +75 0#%(/K *! !(M     #.E#H'!4 ,#X!0 ,( h ' P.+'0  6L ,M#".'6322#".'6.5473267"'>7&#".54732$7L 0 $($|%,3#%    )o$D&w" %2&  %<1 $!&*!  -d% . 4 54&54654'632B  # %&E #"7d 2  0FM: CW' , $E % *!J+-!xJ $7*P!KG}P:0_\G+6 6k4 VU ,O#".'632#".'6324.'632>%.5467654.'>32> + (4< ) 7"&5467654.'632 0*8F ,!*''EE,FM YF   E0])7 !'&2 AM :X5\ GP632#".7>32#".".54.'632>72&#"%67"6%#%0W &$ 0  !7C6) W $#HnqI $"+%'G"2P1+4 % -S   }\ >#".'6322#".'6"'$""&'4654&'632672\ / -(51 &"0+6 "/!SJ ^tx 0'." -H n '! T., ) )8jtAN `m2#".'6".'63247327.'6326754.'632>7"67&#"#"'465.7674654'!: 9!) ;) '=  (-@: 3& !,$.`SD"1* A` P1 ^#*0 $$!  jL  CD1% ( ,M $)e 8z) "'  ; : X EQ\27>7267&#".547327654&'4>3267&#".547%#".'632#".'632:BG{. B 7_ @"8-_!9it + 8+/2  5 $>= 4$%Aj G;&,: -, 6) "XQ+(` / $]$5%E M#".'6322#".'6"#"'>7.547326765.5473267>7&E / -)50 ,'#%z ,.0 @|).,$; D 1'/"76g#& B# $  =  ) ' #0#".'632#".'6324732$7&".'632 0*8F ,! *'X-=w."k C5!.9&0])7 !Y> ~` H#H +#M$264&"462""'>54.'>3267&#""&5<>732>3272"">.B//Ba F  %-F1b> x-=  tyL""JB//B.]   6D3!8    _%>q~:264&"462"&>54'632#"'4654'#"""?/B//B/e "1#4 &By(1"") // !//K7 @5H% B2 `  B374654&'4632>7#"'>7&#"#".'6""?/B..BK , B3 '>  BU`W!->^;- $""JB//B.]   ! $). 8 I^F"-USw@ L"#  @J264&"462"&26767"&#""&5463327654'"&54>7""?/B//B//"S S='y>C F16 Iq X* "") // !//A%*  '   07$ PA/ . K Y2654&#"4632#"&>7.54633274654'632>2672#"#"'.'265#""?/! // !/t'Ec ! 40{! D  ;#]+4 ; :2") // !//nEzD$  A4/!".Y~." 4& K_= T32654&"4632#"&"##"'67.547327654'632>72#"&54.'6"?/! // !/4>3%ZS?h< /,2!? / H "]C &6G"*!//! //fdDM - C%--19   / 7>^264&"4632#"47327.'.54673274.'>3267672#".'"&"">/ !//!  0/s P/\  5 /1H "u h3>K  kF>""JB//B.%K  * %  !* $& .=./N!)--R:=9264&"4632#""'>7##"'>54&'632272""?/! // !Ma: H;0&Z| 0*N.L/tiiI""JB//B/(o^?ETAI 0 e^>VF264&"4632#"&>54'#"'>54.'632672#"#"""?/! // !/0PCw6_Iv 9 *> RL/9X"") // !//&;093A  *  H<264&"4632#"&473267>54'""&5473267#""""?/! // !/< %5)8&K-!>1  ""*!//! //0% # :$- /Ga264&"4632#".54>73274&'>32>7>54'62>7"&#"#"'6767"#"'6""?/! // !9:/  07  4 S)6/ 8@"#-;E?Bhd& ""JB//B/  4 H+  '? > : &"Q  PS9$b F1K&2?264&"4632#"4732>7"&#".'632632#".~"">/ !//! ~/:?[^B =3"-O!,0* G""JB//B. UeDfej#Fu> 2 &8,+G3264&"4632#"&"'>7.54>332672#".'">/ !//! /7@Se[.Ru+ -C JFc/!N""*!//! //$;_]#-  - #X..&6M`k\X264&"462"&473274654&'632>7#"'67327632#".5465"&""?/B//B/  s  : yQB-|#R2$#?I! -.?$L26"") // !// +: 7)#5R%::eRT 8 . O*!  53)" 7N5+82654&"4632#"&2#"&"&'654.'6".'632""?/! // !/0D :  4%,^") // !//< 42o $2>H-?P264&"462"&"'>54&'632272#"'#"'2>7&'63267#"">.B//B.> Dh+ 7  ^,:D(%$O3  '*( !7&B08H,"") // !//0tK 26r<#!31^_""+<OA=^GN264&"4632#""&547327654'#"'>54'632672&#"#"'>""?/! // !9=F5 #RC*: #6`B~5"M[Wjd""JB//B. 8*  Q ; ) " *q9N,3A264&"462"&#".'63274'632#"'>%632#".""?/B//B/- 1#+[# $P 1YmO [d9 =6 2""*!//! //0"76dA #ilI!{U4$(:U4E264&"462"&473267&#"#"'>7.%2&547326""?/B//B/0?J>59T SYK Xt>2l:'#D (5x""*!//! // #(   T}?'w 2 - 62654&"4632#"&'".'#"'64&'632""?/! // !/eIg-$  0") // !//:1": D1%-.?Z*LuJ@,AA3264&"4632#"&4&'63267.#"#"'>7.5473276"?/! // !/8-]/H d \ cq =@4 (  ""*!//! //1+ ?.H 6;` ,   &72654&"4632#"&#"&54732$'#.547326""?/! // ! FAa>FZ 6<+DZ !&/"JB//B. /  /)&  $  16F264&"462"&267&5473267#".'#"'6767.'6""?/B..B/ j%3%A$8)Y1-jW7a/EK6!/ ""*!//! //QF!('! 3 1M(<;85N#3"5U%AM[264&#"4632#"&4'#"'67.5473267#"&'62#".'6#".'632"?/ !//! /A( d&r& $A3;  &.T. O 3& CB"") // !// =;$+ !+ ?: 3 ^# P5")@4+?;?'$264&"462"&>54&'632#""">.B//B.,`{ #= ?bnD "") // !//): C (ev_@2/0264&"4632#"'632#"."'>54'632""?/! // !A@TB C"""JB..B/A.4>U"$ @@6:BN%4654&'>32>54'>2323267#".264&"4632#"&: ?2Z0>/n#@0q0N1C$""?/! // !//*8:K (! ?,(&C( ( <5S""*!//! //N&'/9#"'>7"&#".54>732>264&"462"&g#G )y|q-0)92'""?/B//B/0 l]/O( 3  Y"") // !//J6264&"4632#"&4732>32".#""&"">/ !//! /: SU7AJb13 /eQE4 >PDb""*!//! //wGF'7"&#"#".'36=.5472#".'6#"54>7""?/B//B/.a 5!4'( ^$ ,'G YB/a$s +$ E0% Q'"") // !//m A; 3 )-XZ#5="<* )`[6"#3P"(7y  M:m:264&"4632#"&>7#".54732$7#"."">/ !//! /~,R*g e:R'N'< 7-"@""*!//! // (wK5! &-#(&&$6WN)!/?264&"4632#"&'632#".632#".2#".'6"">/ !//! /"/h 7V%A8<>C.%Q9"""*!//! //B ;/"+/!$08"%+4 ;264&"4632#"#".'".547327654&'63267&"">/ !//! NH|   V- %2"}9j]""JB//B/6 zA ( J ,P =:>VL$264&"4632#"&#".'#"'>7.'632654.'>32""?/! // !/.  #8We8 >5JT+'&cD '9 :"<"") // !//m+$ &4?!2S6'$k!  I \/FB d3264&"4632#"&32>7654'.5473267672"327#"&547.54"&/ !//! /0-S )7-  .!, 74<5&58M8faC&-"!//! //  P $$  G%:)! )>d$ 0b [264&#"4632#"&4732>7.'632>7#"'>74#"#"&'.'."&/ !//! / 6K   #2//D."D0z Q'I]2" // !//  , #)*  K 0^!q/`2604)/2@264&"462"&47326767.#".54732767&#"."">.B//B.&!> /SU (.3.-"") // !//? - 2t"+ 5 0#jI" 0G0^264&"462"&547326767#"&547326765&#".473267.#"""?/B//BmK *! !(M     #.E#H'!4""KB//B.%,( h ' P.+'0  6M)J264&"4632#"&%.5473267"'>7&#".54732$7"">/ !//! /%    )o$D&w" %2&  %<1""*!//! // !  -d% . 4 54&54654'632"&/ !//! / 2  0FM: CW' , $E "!//! //xJ $7*P!KG}P:0_\G+6 6k4 VU'J264&"4632#"4.'632>%.5467654.'>32>""?/! // ! B#NNm T`O   C ""JB//B/' <K/]C-   v  .* Q!62654&"4632#"&>7"&5467654.'632""?/! // !/'EE,FM YF   E"*!//! //'&2 AM :X5WBK264&"4632#"&".54.'632>72&#"%67"6""&/ !//! /  !7C6) W $#HnqI "!//! //E"2P1+4 % -S   }U+;3264&"4632#"&"'$""&'4654&'632672"?/! // !/"0+6 "/!SJ ^tx""*!//! //H n '! T., ) )8jtAFZg264&"462"47327.'6326754.'632>7"67&#"#"'465.7674654'"">.B//B  (-@: 3& !,$.`SD"1* A` P1 ^""JB//B/  jL  CD1% ( ,M $)e 8z) "'  ; : NY264&"4632#"&27>7267&#".547327654&'4>3267&#".547""?/! // !/BG{. B 7_ @"8-_!9it + 8+/""*!//! //9 G;&,: -, 6) "XQ+(@+J264&"4632#"&"#"'>7.547326765.5473267>7&""?/! // !/#%z ,.0 @|).,$; D""*!//! //6g#& B# $  =  ) ' "/264&#"4632#"&4732$7.".'632{"&/ !//! /-=w."= C5!.9&" // !// ~` ;"H +d".'.'2<    | XbE$ ")K.#9t462"&264&"tV|VV|"8P88P|VV|VP88P8E$2"&42"&42"&4D//D//D//D//D//D/0/D//D|/D//D|/D//DEw$2"&42"&4D//D//D//D//D//D#/D//DR462"462"&'&.@..@>7N7I  IE@..@.'77'  *462""&5462#"&54>54&".@..@H!.@.&8:0 &,&;T;E@..@.) .. UwwU.F7=jF ,E|Kd0*;;*>p,^462"&264&">FbFFb-@--@JbFFbF@--@-(!##"UF{2eT0!533TUFTt\ "'&'.'2MSP <t M2.R 462"&3J33J3,%33%$44K7"#"'6.547326765.5473267>7&zOj454.'63267&#""&54732>3272#E  $  [1   qsJ%7>54'632#"'4654'#"s@c    !< K7 ?:F% d= `  B354654'4632>7#"5>74#"#"'6  "   .:9 '6[ ($%  !##,+7 Zc8&=mO7!#7`=26767 "&#"".543327654'"&54>7^)) :!  #xX  %8, o%-  &    0-  e,). f| A767.5433274654'632>72#"#"'./265#"fi)/%  6 "   2   Xz ,# A40!"Y~." ('  K_dH4732>7.'4>32>7#"'67#&#"#"&'&'.d%  "  " ?*K   H 6 ($  L -acM/L 5=/] /47326767.#".54732767&#". Y ** H  r  O \,3s$) 5 1&.gK" /tC&547326767"&547326765#".5473267&#"% _  E& L x   "`$ X-+(  :H ' G8+'   6t{ (#".'63274'672#"'6'632". -u'&;[1 Xr 0  /"G 6dA/l@*94*M(2#&#""&54732671M,&   '7* @(% Du8"'654.'>3267&#""&54732>3272l-W  +s? (  Mb'   KM1UE( w  EQG+'G!#    y0O‘Ma(7654'632#"'4654'#"MR~  "   *N` GQE]/ T@)| )TMcMB^O4&'4632>7546<54&'4632>7#"'>7&#"#".'46y  (      ( ;JI %2F&u  /.   -/@ G t~H0Ne F*-  4#4926767"&#"".54>3327654'"&54>7x55'K*- r0H: /8   / ' =8 = ;' <;7>7.54332754'632>?2#"#"'.'265#"B"#"'6.547327654'>32>72#"&54.'6_ ( .)+UC& #  )  .;* "-h\<eA :&  T2& :;=H $/ ENG74727.'.5473274'&'63267672#".'".N7##"'>54'632272Z 2S>%,(_ :P 3 0KCD/X4{O XlT'+]%= xPF3654'"'>54.'63267672#"#"ZKoL%/K % h ) 8- %8 AGBE  (9 IA S ) 5 $X8'7473267>=""&5473267#""&X# $  0( Q $0"-)J!. :J'32674654'632>7.#"#"'676#"'6(" ' ! F   ( )54 *E=] B' [7 2WLJ0-f "  ~j4.#?`My"0747327.#".'632>32#".h  179rJ+  $3. .M$   z8Y %>?,9 F4r-"'>7.54732672#".'H )5A;7#"'67327632#".=".B L %O3 + O6Y)/Z( /!A 7mH4 ,;s0%J JngEVf6 + $CA5C&(8P!2#"'&'654.'6".'632V,%[d  $ >M CHo#]9%'F@"'>54&'632272#"'#"'>7&'63267#d?K  # = ' % D;-   & +2 eX$ ?" %F ],+B?Ad4'+2;QkM NyBA"&4727654'#".#>54'632>72&#"#"'6* ! &X3- $# =*9 #  746L$y( G@ ) i  K3  ! 7 ^jN +#".'63274'672#"'>'632#". #:4 9Fa3 M|;> #x=,[)E#S .] 7IC"6cL$5473267&#"#"'>7.2&547326L  )/$&5690 8VP" & , "M,+ lP$ 2ә @) %: x#".'#"'64&'632/A !  i+V?!KX Qs!6b`^RF-4&'63267.#"#"'>7.5473276  $ =.;:N&?H'("  W>7Q7aF   {zK{  9 % ;7#-%.#"&547326#&547326~-   &"  9 ',9^Y0 [<# <5% /A!) ."2% $&>v4267&5473267#".'#"'>7.'6D" ]* r $ 8  7,+ )M%#!nS*14%* AI  n **  6   # "NL . 8  *6JRKx-%(PE+4R99j+"?@p>54'632#"@>O ';Rn5&5JW Cx y 632#"."'>54'632& )e  )*d +sR(9"COm,.RRh874654&'>32>54'>323267#". (.J (D9.)H 3`'<6 G7OR'5 >W34%'G;^a#"'>7"&#".547326T- NOH ]rr& a >x<e2B  '$N 4732>32".#""&$ 5722N&!%R81(3 ,' ZZMce) ezeXhB?:FQ274&'632>7"&#"#".'3<654&5.5472#".'6#"54>7? "   < ,9) J  -3 RN A1?6  p#t-D^8'  5)$4|uE*C83F)*bJ4%>7&#".5473267#".5 B>$ 43@  b# , )3` C,)191"-5/1ER $632".>32#".2#".'6B,D @ + #[ :-} L<#2\?=4S^R"+>V! Dn(#".'".54732754'63267&6.P  7 k  Q%7;S") 3&_ 7#EfN!FQ69%#".'#"'>7.'632654.'>32t  -)8 =(G"  ?,$%&7 -'4H, ;/U3#/)   ]  w=Y8jS32>7654'.5473267672"32>7"&547.54E 4   W#"a%"[O  1%~+N!=f # .. &  W/  K4*3!O.! =!:C4732>7.'632>7#'674#"#"&'&'.: #/   (- O 0 b  \ u# :$,4' > a >xkv767&#".u s' 67X!-!Bh#& 9 B-6 D>,;O, =\fJ&5473267>7#"&5473267654#".5473267.#"0 {X1  ` ,z /    !r74" " *c$3  # f<8 2 ( E $& $`6.5473267"'67&#".5473267 H+ca Mv!  '  1 *   9.: ) A`4&54654.'632#"&7"'>54&=4'632  -2%8>, (_ /#-FDf *"`[gK!OwLF" $BbD14.'632>%&54>7654.'>32> *h22FPUE3   +hN^NSO ܐ   ;8gl^!7>7"&546564.'632,,-1; - * 21?*S c Jh DP*+54.'632>72.#"#".'&67"6w  !(! 8  % IG   ,^3IM'0  ;i& $Z+'Qo$Z%"'6"#"&'54&'632672 d"  4 / =JMH!?3):9$3H T\O 64732>7&".'632d g2j9 +" %8P)w{,\* 7'!9 #".'632#".'632."'8E ("#:)9$o,?#+K(264&"462"k!.!!.A3J33J.!!.!]J33J3*7APZ#!"&5463!2'!"3!2654&"&#327&#"27>34&74">326'>74&'63267&5"#"'>754&5>3272#"'.#"#".'##"&54'#"'67'67&'&654.#4###<4      Q"I"  `0   a)" '{1() $:  % U   OB  /  16C  !:#### :   _&  ;  #4   # & "&I " Y.8 C,"  ")IQ]#!"&5463!2'!"3!2654&">32#"32>7>54'&632'676'67654#"#"'>7.'#"'67&'".'&'7267.466767#"'>7654+67#"'>32>72#".'26#4###<4     #   #   *0,0    &*  0%I .  %  1 H   &   * :#### :   ;,"    &  > )     T ! &% $! 47 * 6  C&  +8DO#!"&5463!2'!"3!2654&3.54.5723>777>54&#"'&>7465"547.'>67&5432676?67&#"#"'>32#"&#">32#"&#"#4###<4    % 6 6 ! H&!"!!M4e  +D   F' :#### :   jE7 6  g(>:  )k    .U# 6*"   !     7;+#!"&5463!2'!"3!2654&4>7&'67#>7654&54.547>74654.'>7>54&563232632#"&54654&5"&54'#"#4###<4   H' #   5 #       ;') q!/#:#### :   E2    3! !"#    .QG   )  :  >" * #   ,.9#!"&5463!2'!"3!2654&23>54#"675#"7>32#"#"&'&54654&5"#"54&547267<.#4&54#4###<4     F&  *  & L F :#### :   0$ 0K 2      C> 4 C. E  B     (;H#!"&5463!2'!"3!2654&32654'74>76765"'632#"&#.7#"&#"##"&54>7#".'#"'3267&'#"'>765&#"67.'67#"'>7>2>767#"".'.'#65&'3263267654'3263226326#4###<4    2`' L*.# 5  !"    b 2  0&Q'1,  (        * . 1       :#### :   *? L"G 7 # ! # , $  &!A3/! "  L"(*$) 3'4M   /!#!"&5463!2'!"3!2654&#4###<4   :#### :    9CJRYeqx#!"&5463!2'!"3!2654&#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&'"54323263232#"&#"#4###<4     *e ]     %Y ,/# E     }v< )     ;6! 2#/g:#### :              4 &# + 8 N 1&       " #  .      <  '#*29EQX#%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&2632#"&#"#"'6727476767>32#";  *e ]     %Y ,/# E     }v< )     #4###<4   #C E$#6  0 V           4 &# + 8 N 1&       " #  .     :#### :   ; . U  (#*29EQX*?%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&"#"'467>7>32#"&'&'463232632#"&7463232>32#"&;  *e ]     %Y ,/# E     }v< )     #4###<4   p*%!"(0  + J! ~ i,& PB  k V           4 &# + 8 N 1&       " #  .     :#### :   '    *,( &Q#*29EQX %M%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&232654&''>767""7.54''63267>2.#"#".'.;  *e ]     %Y ,/# E     }v< )     #4###<4     <= b   l (n2 0.#0'<    V           4 &# + 8 N 1&       " #  .     :#### :   6<;%@  . ,    -  "  #*29EQX &u%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&767"#"27&54654#"'327654&#"'>54.'>7>72632#"&#">7#"&#"#"5465#"&54654;  *e ]     %Y ,/# E     }v< )     #4###<4    +.   GF+VmH" *  D >' V           4 &# + 8 N 1&       " #  .     :#### :    $.  q $ h*P  0 #   '    #*29EQXW%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&2.>7>7"#"'>76547"#"&546323276'&'4'>7>27>32#"&;  *e ]     %Y ,/# E     }v< )     #4###<4   %S Dc  e ?   0   VV           4 &# + 8 N 1&       " #  .     :#### :   3  D ! R.          ( #*29EQX/%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&4&'.5472>763232632#"&'&'">;  *e ]     %Y ,/# E     }v< )     #4###<4    , I/ :+"  - @5 ZV           4 &# + 8 N 1&       " #  .     :#### :    /  #"  @  /  !#*29EQX!%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&632#"&'.'.>7632#";  *e ]     %Y ,/# E     }v< )     #4###<4    "H3)d(4* RV           4 &# + 8 N 1&       " #  .     :#### :   -  3 %  #*29EQXE%#.'32>7>54&32>7&767&57674''6747'>7465"27'3747"&547>32#"#"&'#"'".'#"&54652;.54727467"#"'63232654&'4>7>3232654&'67>32&#!"&5463!2'!"3!2654&327654&52#"'&5464'"#"'>7.54674&54722363232632&#";  *e ]     %Y ,/# E     }v< )     #4###<4   %  4. s&5"  +   V           4 &# + 8 N 1&       " #  .     :#### :     % ; *- N'  1F'/6>FMT]ajqw~ !+4<DOW`hpx&5'3<G%4#"2#!"&5463!2'!"3!2654&2#"5442#"7#"542'2#"54#"54262#"5"54632&"4462#"7432#"&4323"542#"&"#"5464#"#"547>54&54327#"&#"#"5476#"#"54654.5&;2'"&543274#"324#"32674#"2"3263247"324"3254"3654254#"74#"324"74#"3263254#"&"325254#"7"32632543254#"2654#"&324&#"2543254#"%3254#"4#"326'3254.#"4#"32%"32544#"324#":'32654#"&"544#"326$4>32##%"&54327432#"&5423254&4>2'#"'.543>32#"'2#'&'&5474.'&54323254&54323254&5432324&5432324&543274&54323254&54323254&54323254&5432325432765>3226322632326323263226322763232632232632326323263232632326232632"3263232?22632#"32632#2>"#"&#"#"&'".5432254&5432254#&5423254.'.54323254.'.632324&542374&54323254.'&323272654#"'4&#"32632654#"4&#"3262>54&#"254&#"'3254&#"'"32654"3254&32654&#"4#"3274&#"32>"&#"#"&#"&546323254&542326323254&#"#"54654.54322>3237632"&#"&263254#"#"54624"#"547654#"#"767>54#"#"54654#"#"54654#""54654"z#4###<4    @   W . K `M l 8 ["% 3$^3     \3  [  ( ++- N^% m BW  u N 44  '  b  o    ' !C!< ! +  8T ):54/&   !%  %!AGL@ 3(1+>,  "-, 9   !   " )&& %,)0,,   5  f  /  l  N  *  `   H @     ;-8"      BF#" = .4). %%!  :#### :     " #      @  , A       =  #7|               z     &  d   7 f 8WF LC@(;6U]= U 4 1 ( P  !T Q <C  3()!! :@?/        &#  )2/6 9! 8   %     (         >  !   *= "  " $ %>.       $ 3;CSco%5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"7!"3!2654&#!"&5463!222635"&"#'42"5475&475&    -xxK4   /#4###    -xxXXXX&b ? ?  ? ? XXXX\ :   :####&b ? ?  ? ? 3;COgow%5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&%#!"&5463!2'!"3!2654&    -xx    -xx    -xx^#4###<4   XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? P:#### :   3;COgow%5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&%#!"&5463!2'!"3!2654&q    -xxK    -xx    -xxK    -xx#4###<4   XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? P:#### :   3;COgow#%5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&#!"&5463!2'!"3!2654&    -xxK    -xx    -xxK    -xx    -xx^#4###<4   XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? xXXXX&b ? ?  ? ? :#### :   3;COgow 7GW%5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&%#!"&5463!2'!"3!2654&    -xxK    -xx    -xxK    -xx    -xxK    -xx^#4###<4   XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? XXXX&b ? ?  ? ? P:#### :   3;COgow 7?GSk{%5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&'5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&75"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&%#!"&5463!2'!"3!2654&    +ttI    +tt    +ttI    +tt    +ttI    +ttI    +tt\#4###<4   ::::k&D ! !  ! ! q::::k&D ! !  ! ! U::::k&D ! !  ! ! q::::k&D ! !  ! ! U::::k&D ! !  ! ! q::::k&D ! !  ! ! G::::k&D ! !  ! ! +:#### :   SYfl|(.>FNZbjv%'&7'"5475&475&54267&767&542"5475&475'#"'#"54?75'.''67'6767>7'625&"5"'27"&"#2263%625&"5"'27"&"#2263'2757&'65&475&542"547''&7''"5475&475&5427&767&5432632&'77.'.'75'>7>7'5"'2'625&"22635"&"#5"'2'625&"22635"&"#%#!"&5463!2'!"3!2654&67'5&"7 %xx 9  9 xx%  ].2|9C        !!8 %xx 9  9 xx%  ].2|9C        #4###<4   !!g % ?  ? ?  9  9  ? ?  ? %    L -N 9&mXXXX&XXXX& ""  % ?  ? ?  9  9  ? ?  ? %    L -N 9&mXXXX&XXXX&:#### :    "" &3;COgow 7?GSks{%5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&5"'2'625&"22635"&"#'42"5475&475&%#!"&5463!2'!"3!2654&    +ttI    +ttI    +tt    +ttI    +ttI    +tt    +ttI    +ttI    +tt\#4###<4   ::::k&D ! !  ! ! q::::k&D ! !  ! ! G::::k&D ! !  ! ! q::::k&D ! !  ! ! q::::k&D ! !  ! ! G::::k&D ! !  ! ! q::::k&D ! !  ! ! q::::k&D ! !  ! ! G::::k&D ! !  ! ! +:#### :   .)2;CKValw#'/:HQZclw$462"264&"462"&264&"62&"''547'4'?&'?567777'7?737#'7''7''/#'#'5"''7"''7&''7&''7&''7&'?&5'7&5#7347'747'767'767'767'767/63'7635'2727'264&"!"3!2654&#!"&5463!242462"77'&'>7/?7/'757677#53''767/'?&/73767'7&/#'7'767'.'7''5'&'3'77'?'&'76?'x~~~6SvSSv]Y~YY~, > 5   &+ * !88%%<<%%88! *!+"+ * !88%%<<%%88! *!+"U"."".4   /#4### www    h    E   E   c      μ=~~~vSSvS~YY~Yl-   )8! *!+"+ * !88%%<<%%88! *!+"+ * !88%%<<%%8t.""."H :   :#### PwwwL          -      ]E   #+3;CSao}!2654&#!"'463!2#!"&$42&264&"6"&4624&"26"&462#764/'#67/7?&'2'5'67'7>"&''7&'7'467'7.5#542&264&"6"&4624&"26"&462#764/'#67/7?&'2'5'67'7>"&''7&'7'467'7.5#5  4 /###4#,m8P88PD?Z??ZQJhJJh !!" """ !! 6,m8P88PD?Z??ZQJhJJh !!" """ !! U   : ##:## P88P8Z??Z?hJJhJz  =& Z && H N  . P88P8Z??Z?hJJhJz  =& Z && H N   #+5AMYaiqy} !-$4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#%!"3!2654&#!"&5463!24&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#/B//B>8N88N):)):  '  =         (  /B//B>8N88N):)):  '  =         (  @4   /#4###/B//B>8N88N):)):  '  =         (  *B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  = :   :####cB//B/wN88N8B:)):)N    %  3=  =*#+5AMYaiqy} %-19CO[gw$4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#%#!"&5463!2'!"3!2654&/B//B>8N88N):)):  '  =         (  "/B//B>8N88N):)):  '  =         (  2/B//B>8N88N):)):  '  =         (  /B//B>8N88N):)):  '  =         (  |#4###<4   *B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  =}:#### :   4#+5AMYaiqy} %-19CO[gow$4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'#4&"26"&462"&4624&"26"467'75'&/74>7'#?36237'&"754'##!"&5463!2'!"3!2654&/B//B>8N88N):)):  '  =         (  "/B//B>8N88N):)):  '  =         (  2/B//B>8N88N):)):  '  =         (  /B//B>8N88N):)):  '  =         (  /B//B>8N88N):)):  '  =         (  #4###<4   *B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  =B//B/wN88N8B:)):)N    %  3=  =^:#### :   ;'/3;CKU`lw{ #-8DOs{ !1A%67/67'767/67'67/67'42&264&"&264&"462"7&/757754'#?'&"6267467'#42&264&"&264&"462"7&/757754'#?'&"6267467'#642&264&"&264&"462"7&/757754'#?'&"6267467'#42&264&"&264&"462"7&/757754'#?'&"6267467'#'4632>32#"&'#"&5467.67&'67467'#?'&"62754'#&/75&462"&264&"264&"4267467'#?'&"62754'#&/75&462"&264&"264&"424632>32#"&'#"%#!"&5463!2'!"3!2654&_            w  @):)):!,!!,     ,  x  @):)):!,!!,     ,   @):)):!,!!,     ,  x  @):)):!,!!,     ,  (2#, ,#22#, ,#2r%%%h  5     5!,!!,0):)):  u  5     5!,!!,0):)):  2#, ,#22#, ,##4###<4   1        C    ) :)):)\,!!,!  3  #   :)):)\,!!,!  3  #   :)):)\,!!,!  3  #   :)):)\,!!,!  3  #  #22#, ,#22#, ,5%%%%x    6  ,!!,!T:)):)@      6  ,!!,!T:)):)@  F22F2:#### :   C'2>IQ[cksw ".9AKS[cgks{ #-5@LW!"3!2654&#!"&5463!267&''67467'#?'&"62754'#67'&/75&462"&264&"264&"4267467'#?'&"62754'#67'&/75&462"&264&"264&"4267467'#?'&"62754'#67'&/75&462"&264&"264&"4267467'#?'&"62754'#67'&/75&462"&264&"264&"4242&264&"&264&"462"7&/75767/754'#?'&"6267467'#&42&264&"&264&"462"7&/75767/754'#?'&"6267467'#42&264&"&264&"462"7&/75767/754'#?'&"6267467'#4632>3&547#"&547#"&462632632##"&'#"&5467.4   /#4###%%%h  5     +  5!,!!,0):)):  u  5     +  5!,!!,0):)):   5     +  5!,!!,0):)):  u  5     +  5!,!!,0):)):  Z  @):)):!,!!,       ,  _  @):)): . .       ,  6  @):)): . .       ,  2#, ,#2#22F2#2#22#2#, ,#2 :   :####%%%%8    )    ,!!,!T:)):)@      )    ,!!,!T:)):)@      )    ,!!,!T:)):)@      )    ,!!,!T:)):)@   :)):)\,!!,!    $  #  Y :)):)\,!!,!    $  #   :)):)\,!!,!    $  #  #2& 2# 2F22# 2# 2F2&, ,#22#, ,N'/7?GR^is{ #3;?JVaks{ *6AKS[cgr~%67/67'767/67'767/67'767/67'67&''67467'#?'&"62754'#&/75&462"&264&"264&"4267467'#?'&"62754'#&/75&462"&264&"264&"4267467'#?'&"62754'#&/75&462"&264&"%#!"&5463!2'!"3!2654&264&"4267467'#?'&"62754'#&/75&462"&264&"264&"4267&''67467'#?'&"62754'#&/75&462"&264&"264&"4267467'#?'&"62754'#&/75&462"&264&"264&"4267467'#?'&"62754'#&/75&462"&264&"264&"4267467'#?'&"62754'#&/75&462"&264&"264&"424632>32#"&'#"&5467.467.467.&'6_                %%%h  5     5!,!!,0):)):  u  5     5!,!!,0):)):   5     5!,!!,0):)):#4###<4     u  5     5!,!!,0):)):  %%%h  5     5!,!!,0):)):  u  5     5!,!!,0):)):   5     5!,!!,0):)):  u  5     5!,!!,0):)):  2#, ,#22#, ,#2%%%1                B%%%%8    6  ,!!,!T:)):)@      6  ,!!,!T:)):)@      6  ,!!,!T:)):):#### :         6  ,!!,!T:)):)@  %%%%8    6  ,!!,!T:)):)@      6  ,!!,!T:)):)@      6  ,!!,!T:)):)@      6  ,!!,!T:)):)@  #22#, ,6, ,6, ,#22#, ,6, ,6, ,%%%%V #/;GS_kw#+/7AKW_gks} +3;?GQ[fq} %)1;EQaq%7054/474'06'7054/474'0677054/474'0677054/474'06'7054/474'0677054/474'0677054/474'06'7054/474'06264&"462"642&264&"&/7567/'6267'&"4632>2>32#"&'"&'#"6264&"462"642&264&"&/7567/'6267'&"264&"462"642&264&"&/7567/'6267'&"264&"462"642&264&"&/7567/'6267'&"4632>2>32#"&'"&'#"6264&"462"642&264&"&/7567/'6267'&"264&"462"642&264&"&/7567/7754/474'676267'&"264&"462"642&264&"&/7567/'6267'&"4632>2>32#"&'"&'#"6264&"462"642&264&"&/7567/'6267'&"264&"462"642&264&"&/7567/'6267'&"!"3!2654&#!"&5463!2 2  2  2  2  2  2  2  2 #2##2**          :,&&0&&,,&&0&&#2##2**          #2##2**          #2##2**          :,&&0&&,,&&0&&#2##2**          #2##2**         2    #2##2**          :,&&0&&,,&&0&&#2##2**          #2##2**          4   /#4###L                                `2##2#Q**(  ,     H  I>,,>,d2##2#Q**(  ,     H  2##2#Q**(  ,     H  2##2#Q**(  ,     H  I>,,>,d2##2#Q**(  ,     H  2##2#Q**(  ,     (    *  2##2#Q**(  ,     H  I>,,>,d2##2#Q**(  ,     H  2##2#Q**(  ,     H  W :   :####  ,8N^n@|?'77'??''7'73?3?7''7/77/'5?/?'77%!"3!2654&#!"&5463!22676767465&'#"'#"547&547&'#"5#"&547&54632&'#"432&'7632#"'2612&'#"5432&'#"547"'#"&547&5432'#"54747"5432'32#632#"'26327&543267&547&5437&5"&5432654'32632#"'2#"'.'##&'6143'#"43&'#"'#"547&547'&54326322267'#"547&'#"'&547&5432&'7632#2632#"'67465&5>7&'67&'6'632#"'632+&#'4&547.'#"5#"43243&'##"'#"547&5432632&53632"'47##"547&'673263>53632##.'"#"54 3 &      ' ,K  4   /#4###                           ).2=J)                     [  b    !                !/!h ,*   *  '"I2  0 # ,  :   :#### &     0( +] 5     4C&    k(  1    5   69>0#           1  '$"  '  ; g/  +       D         26:>BQ`s}77'77'577#7#'''7'77''?'735'3'75'757#'7//?'/?7/7'7?'77'&#"632#&'!"3!2654&#!"&5463!2&'.547&547>76767'&''67&&''&'#"#''.5432654&5432>7&'".543243267.54632&54326322>32>32#"'632632#&'>7&'67&5467632&#"654'"&#"#"54>32'.5432&5'"&'#".432o%5 $!  %&&((y%&'[ & # ! * 8   'X6,  .O+4   /#4###F SA1 B#) ,% C(8 2) C   VB% :                [.D8, == <='- %S  6    1  $     w !:)P  u*     / ',)# :   :####+ L1"*$C=T^L'% B$'( F%S>N7)0 6RZ G     " $ % !*   "8 VC )= E$<  ",17&;"5 3( :B     #3CGK~LPT7'7'7'77'7'7#7'7%!"3!2654&#!"&5463!2'73'267'7363>5'367#'&/&547&/57.=26?#'67632"''#'&'6326326747'77'3#&5'4&547'67>7&547&'>3>32&5'747&'632'7'2&747&3#'.547632'#"'67'67'767'767677&'#'&35')    < %   4   /#4### (%#    !yV ##f A8!   G*= $2( G 2T( b     %  % !+"0%%r  L%n(  U+c G < :   :####sD/AA(" 5( $')' dPk K0$% A<  -  # #A-2%S10 !  &/<   P#I0!B X%"?#B*:"  &2    "+ ""@'/ FMU]gw $2:3''??'?7/#'7/7?/?/7'577'7?'77'"'#"&547#"546?67632'">4327.'&#""&5476;632632363263276327>32632#"'#"'#"'"#"&7>54#"2654&"2654#"'327.#"327'.'&#"3254#"4&#"3'".#"327>54#"&3254#4#"3224#"'"3254654&#""654.#"#.#"#!"&5463!2'!"3!2654&4>327327#"'#"'#"&5467&2>54'&'.54636326226326322#"'#"'.#".547#"543&5467".4654#"67">54654&#"7654#"" DJ  " ,),3 0$!D *51 ,&    %Zp    C  {    &            )            ^   &  9    >",   r#4###<4   B," ! %        &       2      !   /    # . H  *$  2     * $    !  '        !S  B #r 3O% / 3 # #<   g#  - #!", 3& :#### :   &     ##:      ,"+$       ,7 0,RL 6P. $=Xx'7KVhz"&*%#"'.547#">7>7&547#"'67&'67"'>7.54&546772#"'.'#&5467.2632:2632#"''.'".5432&5474&'.5&547>3!"3!2654&#!"&5463!2>7>7#"'&'>7"#"'632'"654'"&'32767&'.'&#"&'&547'4732'632654#"23254.'.#"327>54.'7#"'67&547.#"74&#>362654.#"732654.#">54&#"'"327&7454&#?'?#7#/7#'?/?/?'7'/7575'7I "     !  ? &  )6   #   N,  "  !54   /#4###  %%;  +   !/ ` 1  u(   =U   R)     j B "4  - (     M  3 *  0, ! :#$)  0% 7 4 +,++ %'"            !   ' !  #      "77 %% ! >" :   :####     4  ? .9  '!%       ) & C   k6^    # Q .  C       " ,  bD> R  (PatEPb%67&#"#.#"32>2"&46326#"'.54632&5462#".''432"&5432.7432.547632"&#!"&5463!2'!"3!2654&+>7"'&''67654'4'6747.''632347&654'27&#"7263267#"&46767&'67&'63&'632&5476767632".'32632'&'&#"324632>32#"77'?7'7''7''7'?'77'7575757'#     * Y !&4"( u"  & **6*#4###<4    ; =%   1F< >&  A-&=:' '%   "  "   . ( D    %M &-  > % ",?D%C*) >====0 w  % $'     @  !,!!9:#### :      ]   /(   / "Z##  - * ,6+&    $ !  v     5  7   #9 !      / )8<?DHLPUZ^bejmqv{ 0N7'/?'7/77'/?'75'77/'7'/'7'7'//#'?7?7'7'''7/7'7"&'632632#"'&54!"3!2654&#!"&5463!2&'77&'632#"7.54>7>327#"'6327&547'632&'&632#"&5467>76"67654'2>7"67"#&5    !   5   #2!(K  %(  )    E   T  "   M  -*S"7$D 0A>4   /#4### N,#) 0$@!N M'ta (%-N' '@Y & @)'": '1?AQQ :   :####;PT EU YY' @ #C .% ;4"/)" 409:',T  '6F)%+  /6! $ +\fv#'57'77/37'?''?'2#"'&'/.'#654&54>77>76747&!"3!2654&#!"&5463!23254&".'7673654'67&#"4''632#.'.7#.Q! $  251)&% ]         C0~4   /#4###         ,  $F!>E3(L      e  +$"#&  p94su$2    +  c :   :#### 2 "    o)QAY:n?)zDV^JfNxS>:eB_ 'Rq~=!!!7#!"&5463!2'!"3!2654&72"&"#"'6323254'4>22654'6"'&7.5436632#"&"7&#"26;>'>'23274C6767#"5467&546?75"&72&#"#"'&#"#"'#'>7&5262632.'#"&#".'4'&3267#".'>4##"'623>32#"&##"5467&#"#"&76323276c"@#4###<4     (        )  _/       s8      !& " =  * 2U%  7 )     ::F:#### :   k         & R  )    #  6 # ; 5  Q    F#'+/37;?CGKOSW[#!"&5463!24'63#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3##4### A:####!  : KP !%)-159=AEIMQUY]aeio654'3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#37!2#!"&546p22222222222222222222222222###&## @ zzzzzzzzzzzzzzzzzzzzzzzzz#  &###@#KP#!2#!"&5463!2654&#!"3###&##   & |###@#<  @ ?KP'+462"!2#!"&5463!2654&#!"3#""##&##   & |  ###@#<  @ ?KP#+3!2#!"&5463!2654&#!"3#6462"462"##&##   & |d###@#<  @ ?ܻKP#+3;!2#!"&5463!2654&#!"3#6462"462"&462"##&##   & |dk###@#<  @ ?ܻkKP#+3;C!2#!"&5463!2654&#!"3#6462"462"6462"&462"##&##   & |d###@#<  @ ?ܻKP'7GK462"462"6462"&462"462"%!2#!"&5463!2654&#!"3#Ik##&##   & |yI###@#<  @ ? KP'/?OS462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3#zz##&##   & |oJ###@#<  @ ?KP#!2#!"&5463!2654&#!"3###&##   & |###@#<  @ ?KP/3462"$462"!2#!"&5463!2654&#!"3#""""##&##   & |    ###@#<  @ ?KP#+3;!2#!"&5463!2654&#!"3#6462"462"$462"##&##   & |d""###@#<  @ ?ܻh  KP#+3;C!2#!"&5463!2654&#!"3#6462"462"&462"$462"##&##   & |dkK""###@#<  @ ?ܻk  KP#+3;CK!2#!"&5463!2654&#!"3#6462"462"6462"&462"462"##&##   & |d""###@#<  @ ?ܻL   KP'7GKS462"462"6462"&462"462"%!2#!"&5463!2654&#!"3#&462"Ik##&##   & |""yI###@#<  @ ?^   KP'/?OS[462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3#&462"zz##&##   & |""oJ###@#<  @ ?^  KP/3462"462"!2#!"&5463!2654&#!"3###&##   & |yT###@#<  @ ?KP'+3;462"!2#!"&5463!2654&#!"3#$462"462"""##&##   & |  ###@#<  @ ?ܻKP#+3;C!2#!"&5463!2654&#!"3#6462"462"$462"462"##&##   & |d###@#<  @ ?ܻKP#+3;CK!2#!"&5463!2654&#!"3#6462"462"&462"$462"462"##&##   & |dk###@#<  @ ?ܻkk KP#+3;CKS!2#!"&5463!2654&#!"3#6462"462"6462"&462"$462"462"##&##   & |d###@#<  @ ?ܻ KP'7GKS[462"462"6462"&462"462"%!2#!"&5463!2654&#!"3#$462"462"Ik##&##   & |yI###@#<  @ ?ܻ KP'/?OS[c462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3#$462"462"zz##&##   & |oJ###@#<  @ ?ܻKP'7;462"462"&462"'!2#!"&5463!2654&#!"3#k##&##   & |yk###@#<  @ ?KP'+3;C462"!2#!"&5463!2654&#!"3#$462"462"&462"""##&##   & |k  ###@#<  @ ?ܻkKP#+3;CK!2#!"&5463!2654&#!"3#6462"462"$462"462"&462"##&##   & |dk###@#<  @ ?ܻk KP#+3;CKS!2#!"&5463!2654&#!"3#6462"462"&462"$462"462"&462"##&##   & |dkk###@#<  @ ?ܻkkk KP#+3;CKS[!2#!"&5463!2654&#!"3#6462"462"6462"&462"$462"462"&462"##&##   & |dk###@#<  @ ?ܻk KP'7GKS[c462"462"6462"&462"462"%!2#!"&5463!2654&#!"3#$462"462"&462"Ik##&##   & |kyI###@#<  @ ?ܻk KP'/?OS[ck462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3#$462"462"&462"zz##&##   & |koJ###@#<  @ ?ܻkKP/?C462"462"6462"&462"'!2#!"&5463!2654&#!"3###&##   & |y###@#<  @ ?KP'+3;CK462"!2#!"&5463!2654&#!"3#$462"462"6462"&462"""##&##   & |  ###@#<  @ ?ܻ KP#+3;CKS!2#!"&5463!2654&#!"3#6462"462"$462"462"6462"&462"##&##   & |d###@#<  @ ?ܻ KP#+3;CKS[!2#!"&5463!2654&#!"3#6462"462"&462"$462"462"6462"&462"##&##   & |dk###@#<  @ ?ܻkk KP#+3;CKS[c!2#!"&5463!2654&#!"3#6462"462"6462"&462"$462"462"6462"&462"##&##   & |d###@#<  @ ?ܻ KP'7GKS[ck462"462"6462"&462"462"%!2#!"&5463!2654&#!"3#$462"462"6462"&462"Ik##&##   & |yI###@#<  @ ?ܻ KP'/?OS[cks462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3#$462"462"6462"&462"zz##&##   & |oJ###@#<  @ ?ܻKP'7GK462"462"6462"&462"462"'!2#!"&5463!2654&#!"3#k##&##   & |yI###@#<  @ ? KP'+3;CKS462"!2#!"&5463!2654&#!"3#$462"462"6462"&462"462"""##&##   & |k  ###@#<  @ ?ܻI KP#+3;CKS[!2#!"&5463!2654&#!"3#6462"462"$462"462"6462"&462"462"##&##   & |dk###@#<  @ ?ܻI KP#+3;CKS[c!2#!"&5463!2654&#!"3#6462"462"&462"$462"462"6462"&462"462"##&##   & |dkk###@#<  @ ?ܻkkI KP#+3;CKS[ck!2#!"&5463!2654&#!"3#6462"462"6462"&462"$462"462"6462"&462"462"##&##   & |dk###@#<  @ ?ܻI KP'7GKS[cks462"462"6462"&462"462"%!2#!"&5463!2654&#!"3#$462"462"6462"&462"462"Ik##&##   & |kyI###@#<  @ ?ܻIKP'/?OS[cks{462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3#$462"462"6462"&462"462"zz##&##   & |koJ###@#<  @ ?ܻI KP'/?OS462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3# zz##&##   & |oJ###@#<  @ ? KP'+3;CKS[462"!2#!"&5463!2654&#!"3#&462"&462"462"6462"&462"462"""##&##   & |zz  ###@#<  @ ?ܱ KP#+3;CKS[c!2#!"&5463!2654&#!"3#6462"462"$462"&462"462"6462"&462"462"##&##   & |dzz###@#<  @ ?ܻ KP#+3;CKS[ck!2#!"&5463!2654&#!"3#6462"462"&462"$462"&462"462"6462"&462"462"##&##   & |dkUzz###@#<  @ ?ܻka KP#+3;CKS[cks!2#!"&5463!2654&#!"3#6462"462"6462"&462"$462"&462"462"6462"&462"462"##&##   & |dzz###@#<  @ ?ܻKP'7GKS[cks{462"462"6462"&462"462"%!2#!"&5463!2654&#!"3#&462"&462"462"6462"&462"462"Ik##&##   & |zzyI###@#<  @ ?ܱKP'/?OS[cks{462"&462"462"6462"&462"462"!2#!"&5463!2654&#!"3#&462"&462"462"6462"&462"462"zz##&##   & |zzoJ###@#<  @ ?ܱ !%)-159=AEIMQUY]aeio!3!27!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!5!!'!"!&#!"&5463!2 @ zzzzzzzzzzzzzzzzzzzzzzzzz#  &###@#P22222222222222222222222222#&######!"&5463!2'!"3!2654&#5###@#<  @ ?&#### &   '+$2"&4#!"&5463!2'!"3!2654&#5  ###@#<  @ ?܇"")&#### &   #+3#!"&5463!2'!"3!2654&#52"&42"&4###@#<  @ ?ܻ&#### &   d#+3;#!"&5463!2'!"3!2654&#52"&42"&462"&4###@#<  @ ?ܻk&#### &   dk#+3;C#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&4###@#<  @ ?ܻ&#### &   d'7GK$2"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#5AI###@#<  @ ?k-&#### &    '/?OS$2"&462"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#57J###@#<  @ ?}zz-&#### &   ##!"&5463!2'!"3!2654&#5###@#<  @ ?&#### &   /32"&42"&4#!"&5463!2'!"3!2654&#5    ###@#<  @ ?!""}"")&#### &   #+3;#!"&5463!2'!"3!2654&#52"&42"&42"&4###@#<  @ ?ܻh  &#### &   d""#+3;C#!"&5463!2'!"3!2654&#52"&42"&462"&42"&4###@#<  @ ?ܻk  &#### &   dk""#+3;CK#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&42"&4###@#<  @ ?ܻL  &#### &   d"" '7GKS$2"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#562"&4AI###@#<  @ ?^  k-&#### &   "" '/?OS[$2"&462"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#562"&47J###@#<  @ ?^  }zz-&#### &   ""/32"&42"&4%#!"&5463!2'!"3!2654&#5AT###@#<  @ ?q&#### &   '+3;$2"&4#!"&5463!2'!"3!2654&#52"&42"&4  ###@#<  @ ?ܻ"")&#### &   6#+3;C#!"&5463!2'!"3!2654&#52"&42"&42"&42"&4###@#<  @ ?ܻ&#### &   d_#+3;CK#!"&5463!2'!"3!2654&#52"&42"&462"&42"&42"&4###@#<  @ ?ܻkk&#### &   dk #+3;CKS#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&42"&42"&4###@#<  @ ?ܻ&#### &   d_ '7GKS[$2"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&42"&4AI###@#<  @ ?ܻk-&#### &   6 '/?OS[c$2"&462"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&42"&47J###@#<  @ ?ܻ}zz-&#### &   6'7;2"&42"&462"&47#!"&5463!2'!"3!2654&#5Ak###@#<  @ ?qk&#### &   '+3;C$2"&4#!"&5463!2'!"3!2654&#52"&42"&462"&4  ###@#<  @ ?ܻk"")&#### &   6k#+3;CK#!"&5463!2'!"3!2654&#52"&42"&42"&42"&462"&4###@#<  @ ?ܻk&#### &   d_k #+3;CKS#!"&5463!2'!"3!2654&#52"&42"&462"&42"&42"&462"&4###@#<  @ ?ܻkkk&#### &   dkk #+3;CKS[#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&42"&42"&462"&4###@#<  @ ?ܻk&#### &   d_k '7GKS[c$2"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&42"&462"&4AI###@#<  @ ?ܻkk-&#### &   6k '/?OS[ck$2"&462"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&42"&462"&47J###@#<  @ ?ܻk}zz-&#### &   6k/?C2"&4&2"&42"&462"&47#!"&5463!2'!"3!2654&#5A###@#<  @ ?q&#### &   '+3;CK$2"&4#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&4  ###@#<  @ ?ܻ"")&#### &   6 #+3;CKS#!"&5463!2'!"3!2654&#52"&42"&42"&4&2"&42"&462"&4###@#<  @ ?ܻ&#### &   d_ #+3;CKS[#!"&5463!2'!"3!2654&#52"&42"&462"&42"&4&2"&42"&462"&4###@#<  @ ?ܻkk&#### &   dk #+3;CKS[c#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&42"&4&2"&42"&462"&4###@#<  @ ?ܻ&#### &   d_ '7GKS[ck$2"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&4AI###@#<  @ ?ܻk-&#### &   6 '/?OS[cks$2"&462"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&47J###@#<  @ ?ܻ}zz-&#### &   6'7GK2"&4&2"&42"&462"&4&2"&47#!"&5463!2'!"3!2654&#5AI###@#<  @ ?qk&#### &    '+3;CKS$2"&4#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&4&2"&4  ###@#<  @ ?ܻI"")&#### &   6k #+3;CKS[#!"&5463!2'!"3!2654&#52"&42"&42"&4&2"&42"&462"&4&2"&4###@#<  @ ?ܻI&#### &   d_k #+3;CKS[c#!"&5463!2'!"3!2654&#52"&42"&462"&42"&4&2"&42"&462"&4&2"&4###@#<  @ ?ܻkkI&#### &   dkk #+3;CKS[ck#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&42"&4&2"&42"&462"&4&2"&4###@#<  @ ?ܻI&#### &   d_k '7GKS[cks$2"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&4&2"&4AI###@#<  @ ?ܻIk-&#### &   6k'/?OS[cks{$2"&462"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&4&2"&47J###@#<  @ ?ܻI}zz-&#### &   6k '/?OS2"&462"&4&2"&42"&462"&4&2"&4%#!"&5463!2'!"3!2654&#57J###@#<  @ ?zz&#### &    '+3;CKS[$2"&4#!"&5463!2'!"3!2654&#562"&462"&4&2"&42"&462"&4&2"&4  ###@#<  @ ?ܱ"")&#### &   zz #+3;CKS[c#!"&5463!2'!"3!2654&#52"&42"&42"&462"&4&2"&42"&462"&4&2"&4###@#<  @ ?ܻ&#### &   dzz #+3;CKS[ck#!"&5463!2'!"3!2654&#52"&42"&462"&42"&462"&4&2"&42"&462"&4&2"&4###@#<  @ ?ܻka&#### &   dkzz #+3;CKS[cks#!"&5463!2'!"3!2654&#52"&4&2"&42"&462"&42"&462"&4&2"&42"&462"&4&2"&4###@#<  @ ?ܻ&#### &   dzz'7GKS[cks{$2"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#562"&462"&4&2"&42"&462"&4&2"&4AI###@#<  @ ?ܱk-&#### &   zz'/?OS[cks{$2"&462"&4&2"&42"&462"&4&2"&4#!"&5463!2'!"3!2654&#562"&462"&4&2"&42"&462"&4&2"&47J###@#<  @ ?ܱ}zz-&#### &   zzEw$2"&42"&4D//D//D//D//D//D#/D//DE$2"&42"&42"&4D//D//D//D//D//D/0/D//D|/D//D|/D//Dd".'.'2<    | XbE$ ")K.#9t462"&264&"tV|VV|"8P88P|VV|VP88P8:3+3D:rKv&4'>32#".'.54>'/ aL 5?$ > 5?5C1 / - V0vE!&4t$>kJ52w[erK&&2>4'>32#".'.54>#".'632#".'632'/ aL 5?$ > 5?5  6)/DL#  0& /HC1 / - V0vE!&4t$>kJ52w[e6 &q*2)84>54&'632 j~j &5ƣU!\3^8V+4>54&'632 #".'632#".'632j~j &5ƣ 8(6TC 8*1[U!\3^ 6 2!>! >n #".'.530(#t*'Q25|`,#%`SH[}40i9Q_rz67>72#"'>54.'#"'#".'&'46?#"&54732764.'62>?2327&547 76Z 'Kt.AJ6 17@C,)"NI; mQ (48, 66  &B%A  &'& hX4[:*'8X4'9 ng%&L ! $Ly%A& %6 * !  A!#3! ! 0' 51852#"&'.'6#".=4.'63>5g ! ; */ #;   XN -5% zg.: 3kJc&*+,A!- &E!4"'67654.#"#"&54732632>54&'2#"&#" Dg3$2h#&26w,FNb " &U&%() 072"Gf 7=#'rDW32632#".54654#"#"&547>767"#"&5473267632'674&'2#"&#"Y 1% #892A  )? K/7./ %# !2Jf"; Q0  4"I  !$@ 1r8. ]3<+I& .#4 ? %3{%254'67&#">32&#"32654&#"#".'#"&54732?#"&54732754&'6267632>32#"&547!m//B%&C +327*8G   " f!(.  ",.>3 $i 0($;UWP52s.  &(" B3"&-@ '  2 D% n (* ' bH8Gc8#+ ] 4&#""&546732>32#"'67>LKEr!E  ~=U \$BQ1S1B? ++`Rk  0M%zDP232654&#"#"'&'"&54732>7.54323254'632#"&'"67.r*9-+#*B^ # G0E   "BX'-M+!EG>G32676322#"'654'7.#"6;[<3 L?$,"-%> 8Z1I'4Rs[ K7:(%K!{ !$4\K/1(< ?$^ "*D:Q^k%".'#"&54>7.5467>54&'4632>32#"'>54.#""6?"&4654&54    & H^B  97cEFk6NN Ok<.Sb !$B%%*;6 0 O!;'  - 9% 97sV6_:"(tG!.5l- / !49! :uL^#".'&'&'32>54.#"#".5476767"&54>3327654&'632632.'#4.'6n9 H -  ,0A +_3/,  T9.0~-hV"(FEx ($5JBj   0  I # +CG %5#.G;- a^%"&54654.'632>7%#>54&5".53274&54.'>32654&'62A !2& " 5*-1  $+A#8,) 3%!* v!] 6/54.'>3267&#""&5<>732>3272 F  %-G0b= x-<  uxL"]   6E2!8   `$>qT*%>54'632#"&'4654'#"T "2#5   By'K7 ?5H% B2 `  #35>54&'4632>7#"5>74#"#".'6 - D3 %> ]sr+-=_9. % %$  ! $/(7 Zc8+VRx@ L#"  -s=26767"&#""&5463327654'"&54>70"S S='uB    F16 Iq W* %,  '     07$ e,/ . :ee>%>7.54332754'632>32#"#"'.'265#":u'Gb54@k D ;#e#4&: ;1qEzD+# a40!"Y~." 4. K_U-dM !.#".'63274'672#"'>%632#"., 1# ,Z"%O 1YmO Zc9 +a 1}/"76dA$ilI!{V94':6]L4732>7.'>32>7#"'>7#&#"#"&'.'.6 6H   3./C0%E/{ P&6q2{, (*  L /_!r/a4 5141/({.47326767.#".54732767&#".&!>TU &/3),, , #8K"+ 5 1%.t># /lAW7K%&547326767#"&547326765#".473267&#"J *  !(M     "-E#I)"-4A+(  m ( L3+'0  6{h aV'%"'$"#"&'4654&'632672"0+6!/!QJ ^tx G o '! T.- ' (8jtA=)go?"##"'67.547327654'632>72#"&54.'6>3%ZS?g<0*4! ? $G #]B  )4EdDQ - I-*49  27H!nr0%>54'#"'>54.'632672#"#"itx5_ Jv :& %@RK/ Za_(%85;093A7 *  NM)M%64.'632#"& %S 6'HOQ O0Fe' bSVWp'%"5>7##"'>54&'632272iMa: F=0&Z} /*N.L/tiiI(o^?ETBI / e^>T/F!.%4732$7"&#".'632632#".  LU?Z]C 9(".N.0* G ϔ Dfej#Fu1 2 %8-CO@-%"'>7.54732672#".'M@Se[.Ow, +C IEc0!NC$;_]$. - "X./&6Nak'".'#"'64&'632 If,%  .9&| D1%-.?Z+Lz J@,>>4C4267&5473267#".'#"'6767.'6"h&5&@%8*Y 1.jV7a+GL77 VA!('! 3 1M(;<95N#3 5W& 632#"."'>54'62A@RA *C!@-4>U## @@}<QQ:4654&'>32>54'>2323267#". ?2Z0>/n#@0q0N1C$/*8:K (! ?,(&C( ( <5oX #"'>7"&#".547326#F"]_eU$ 0):3(0W^@O' 4  4732>32".#""& SU7BJb04 9XL =QD>GF'(|X7DP274.'63267"&#"#".'3654&5.5472#".'6#"54>78X5?H'( ^#! ,'F!Z@.a#s +% E0%#@ ,+(3 %2VZ$5="8u*  (a[6!"3O#(7x E.EL=)#".'".547327654&'63267&H|    Y+ %2"}9S N zA ' J,P =:>s#Qt7.5473267"'>7&#".54732$7%    )o$C%w" %3&  %; 1!   -d$ . 3 9&54654.'632#"&%#"'>54&54654'632 3 1EN: CW' , %E (xK  $7*P KG}P:/`\F+7 6j 3 UR64.'632>%.54>7654.'>32> B#OMn T`O   C  =I/]C-  w   .* QQ1 %>7"&5467654.'632-X4[hYG   C'5"Qi:a5Yen,54.'632>72"&#""&'&%67"6 !7C6) W$# 6 nqLI G+5 % .S  A f'3Da654.'632#"&264&"462"'72#"."'>54'632%#".'#"'654&'632%"'>54.#63267&#""&54732>3272   ) (**\)e -+c +s/A !  g-W  )M (  Mb'   LLpK((('$22)0**Q*+Do ) (VS,%+)X90H/) p;  #($)$    <?^Qd#"'>7"&#".547326"&#>54.#63267"&#""&54732>3272%4.'632>%&54>7654.'632>"'>54.#63267&#""&54732>3272T- MPH ]r8z w#C  #  54.#63267&#""&54732>3272"'>54.#63267&#""&54732>3272^ ** eDa0"%R81V ,6 KjC+" %-W  )M (  Mb'   LLp-W  )M (  Mb'   LLp  **. Z=K  3<3^ !(XP= . ;  #($)$    <?;  #($)$    <?`*J~654.'632#"&4.'632>%&54>7654.'632>"'>54.#63267&#""&54732>3272   )  *h22FPUE3  +h-W  )M (  Mb'   LLp\K((('$22)  ' Zh/} 'N) &mI x4;  #($)$    <?6n +<bmx473267&7".'632&#"&547326'#.547326"5>7##"'>54'632272".'632#".'632>54'632#"'4654'#"d Kj: +" %- &~9 "',9Z] \+ 1S>%&._ :O  0 0$^V@z   #&  )R~  "    NC(XP> / !   GS=(,6*c /  Pw9t =""/# ( $-  * >*R'1HB U~473267&7".'632"&47327654'#"'>54'632672#"&#"#"'6%>54'632#"'4654'#"X Kj: +" %%$)) ! X-3$# >*N# 74 j8ynR~  "    NCH(XP> /  $   4%   Ht@C/# ( $-  * >*R'1H\p T473267&7".'63267.54332754'632>32#"#"'.'265#"4&'4632>?<54&'4632>7#"'>7#"#".'46d Kj: +" %a139 !T ,  &A!   %q 7  (       ' > (;&v  (XP> / bPV   >!"  c0=    # o65M) 2 ANV 4Jm%#".'632#".'632'#"&'#"'654&'632'654.'632#""567##"'>54'632272"'>7.54732672#".'26767"&#""&543327654'"&54767  +.  -0B 0     ) e,(^ :P 2 0%^V@ Sm7>A  g+""-?  2~6x55'N' - p" 4DE  C  ,  5:' !8m f1n  j$ !X5$A   5O&0lp    H/9"2>E ^  #V  >`/k654.'632#"&%654.'632#"&"##"'67.547327654'632672#"&54.'6%26767"&#""&543327654'"&54767   )    )  ( 95) WA& .  )? .;* -Cx55'N' - p" 4DE  \K((('$22)K((('$22)A],6 +  $rm   ! ^  #V  4 T473267&7".'63267.54332754'632>32#"#"'.'265#""'>7.54732672#".'X Kj: +" %139 !T ,  &A!   %q  Sm7>A  g+""-?  2~H(XP> / JPV   >!"  c0=&0lp    H/9"2>ED`:R{67.54332754'632>32#"#"'.'265#"654.'632#"&#".'".547;654&'63267&0139 !T ,  &A!   %q   ) c.P  7k  Q%7PV   >!"  c0=K((('$22)O)0  3'#t( e;d&54654.'62#"&7"'>54&=4'632>54'632#"'4654'#""##"'67.547327654'632672#"&54.'6  -2%Q3,R~  "    NC ( 95) WA& .  )? .;* -L0 #" 3 %-P3&9j< "i!$/# ( $-  * >*R'1HgA],6 +  $rm   !f *=]z#".'63274'632#"'>'632"..547327"'>7&#"&5473267#".'#"'654&'632"##"'67.547327654'632672#"&54.'6 -v(,7L'Xs 0   =<+ca Mw (  '  Z/A !  Z ( 95) WA& .  )? .;* -N  2 5?6% I &   @   !  VVS,%+)X90H/) cA],6 +  $rm   !;eq&54654.'62#"&7"'>54&=4'632".54.'632>72&#"767"#6"##"'67.547327654'632672#"&54.'6  -2%Q3,9  !'  8 & @P LH^O ( 95) WA& .  )? .;* -L0 #" 3 %-P3&9j< "i!E2$' V4 Ai )8kA],6 +  $rm   !\ CO473267&7".'632".54.'632>72&#"767"#6"#"'67.547327654'632672#"&54.'67#".'632#".'632d Kj: +" %  !'  8 & @P LH^6 (-k( WB&  0 (@ -;+  !-" '&  *(XP> / LE2$' V4 Ai )8kyc31  #$rm  "  ;"4 @x473267&7".'632>7#".5473267#".%"#"'67.547327654'632672#"&54.'67#".'632#".'632X Kj: +" %5 BA$ 42'  a# )v (-k( WB&  0 (@ -;+  !-" '&  *H(XP> /  M0!   S#8eyc31  #$rm  "  ;"$~7CNZe%"#"'67.547327654'632672#"&54.'67#".'632#".'632#".'632#".'63247327&'.54>33274.'>3267672#".'"&F (-k( WB&  0 (@ -;+  !-" '&  *   (,  1J 6 4 ! .AF ( +Z  C/ 'myc31  #$rm  "  ;" ";&  ;          0  1  6%):FQ654.'632#"&&#"&547326'#.547326#".'632#".'63247327&'.54>33274.'>3267672#".'"&   ) - &~9 "',9Z] \   (,  1J 6 4 ! .AF ( +Z  C/ 'K((('$22)!   . ";&  ;          0  1  6%`+C_%47326767&#".54732767&#".654.'632#"&&54654.'62#"&7"'>54&=4'63247327.'.5473274.#63267672#".'"& [, + #A  "h  O    ) >  -2%Q3, J,& A ". A C! ' 2T  A0 )  8     EK((('$22)L0 #" 3 %-P3&9j< "i!   3     9  &;  4% *`"-bu654.'632#"&#".'632#".'632"'>54'632272#"'#"'67&'63267#4.'632>%&54>7654.'632>#".'632#".'63247327&'.54>33274.'>3267672#".'"&   )  $'  )+D  # < & *2 9$ &2 d  *h22FPUE3  +h9   (,  1J 6 4 ! .AF ( +Z  C/ '\K((('$22)I ="J0    " G)! ==A]'3)'72&#"767"#647327.'.5473274.#63267672#".'"&  !'  8 & @P LH^2 J,& A ". A C! ' 2T  A0 )\E2$' V4 Ai )8   3     9  &;  4% 6u #2Ou #".'"&47;654'63267&.547327"'>7&#".473267"5>7##"'>54'632272%#".'632#".'2632".54.'632>72&#"767"#647327.'.5473274.#63267672#".'"&6.P  \$ k  Q%B?:+7 Mw  &  1S>%E_ :O  2 0$^VA{ #&   !'  8 & @P LH^ J,& A ". A C! ' 2T  A0 )4  $ l"  M    [+  :XE07($B   5O&    E2$' V4 Ai )8   3     9  &;  4%u.Ja74.#632>%&54>7654.'6326#"&'#"'654&'632'654.'632#"&#".'#"'>7.'632654.'6324.'632672&#"#"&'&67"647327.'.5433274.#63267672"#".'"& *h22FP}03  +6E/A 0     *   /Y/ <(G"  ?, $%&  !"8 & MC ,dN1! ? " ..3A# ' (^  <5 (   '632#"&'"'67"#"&'54&'632672".54.'632>72&#"767"#647327.'.5473274.#63267672#".'"&/A 0     -v([Xs 0"x  KW   5 0  !'  8 & @P LH^ J,& A ". A C! ' 2T  A0 )H7 5:' !/v  ! )ld0%= /+ XqE2$' V4 Ai )8   3     9  &;  4%Dz(;[#".'".547;654&'63267&.547327"'>7&#"&5473267"5>7##"'>54'632272".'632#".'6326.P  7k  Q%7W =<+ca Mw (  '  1S>%&._ :O  0 0$^V@z   #&  ).O)0  3'#t(    @   !  VGS=(,6*c /  Pw9t =" Dn 5Yl473267.6".'632#"&'#"'654&'6327#".'"&47327654'63267&.547327"'>7&#"&5473267"5>7##"'>54'632272".'632#".'632d Kj&j+"  %0/A 0   <.P  Y$ k  ?KZ =<+ca Mw (  '  1S>%&._ :O  0 0$^V@z   #&  )ff:6r)s 75;' !0u 4 &  l"  G8 X   @   !  VGS=(,6*c /  Pw9t =" -)Q".54.'632672#"&#"767"6>54'632#"'4654'#"2632#"&5465"&54732754&'632672#"'677#".'632#".'6324.'632>%&54>7654.'632>"5>7##"'>54'632272  "8  !@P ,SR~  "   NC$*ZE'*' # K % +P 3"a" %  *h22FPUE3  +h Al3%/_ :P  2 0%^V@/#   7$ 6I % T _ ) 8!/$  %,   %  '  + ' "      ' Zh/} 'N) &mI x4@"nR7,6*c /  Pw972&#"767"#64'#"'67.5473267#"&'62#".'6#".'632"5>7##"'>54'632272   )   !'  8 & @P LH^*_ >F/  m *!% 6  !J Al3%/_ :P  2 0%^V@K((('$22)'E2$' V4 Ai )8'&[c    *$ %<(Q" * (*c"nR7,6*c /  Pw94`Bo654.'632#"&"'>7.54732672#".'>54'#"'>54.#632672#"#"   ) u Sm7>A  g+""-?  2~KoL?5 /K %z *A$ %8 \K((('$22)0lp    H/9"2>E#"E$m! ) 0 anF)<\4&'63267&#"#"'>7.54732764.'632>%&54>7654.'632>473267>=""&5473267#""&  $ 7".Pq; ?H')!  Z *h22FPUE3  +h# $  /( Q $)1 $]%=  ' Zh/} 'N) &mI x4 h%   ^( ,:`'\it654.'632#"&264&"462"274.'63267"&#"#".'36=.5472#".'6#"54>7473267>=""&5473267#""&   ) )**)3 ! 3$ 2+;)  J ,4# $  /( Q $\K((('$22)G/**'    S: ! ' 'g >;#!3#M1%W h%   ^( ,e$M`"5>7##"'>54'632272>54'632#"'4654'#"%4.'632>%&54>7654.'632>.5473274&'62>74654'63267"&#"#"'6767"#"'6Z Al3%/_ :P  2 0%^V@R~  "    NCD *h22FPUE3  +h!) # !5  $ &)54 47Ed"nR7,6*c /  Pw9/# ( $-  * >*R'1Hz  ' Zh/} 'N) &mI x4 "  . + '$ 3 ?b5>sG0 Bu =S473267&7".'632#".'"&47;654'63267&654.'632#""&54732764'#"'>54'632672#"&#"#"'6%.5473274&'62>74654'63267"&#"#"'6767"#"'6X Kj: +" %s.P  \$ k  Q%B  )"Y ! g<$"#&4* P# A* j8y!) # !5  $ &)54 47EH(XP> / 4  $ l"  M 1n  j$ !   $    0M+ "  . + '$ 3 ?b5>sG0 6` 5U{473267&7".'632&54654.'62#"&7"'>54&=4'632"5>7##"'>54'632272".'632#".'6327473267"&7#".'632632#".d Kj: +" %  -2%Q3, 1S>%&._ :O  0 0$^V@z   #&  )  179rJ+ '!3#L.(XP> / L0 #" 3 %-P3&9j< "i!GS=(,6*c /  Pw9t ="  _=SW, (W 2 #B U473267&7".'632"&47327654'#"'>54'632672#"&#"#"'6%2632#"&="&54732754&'63267672#"CX Kj: +" %%$)) ! X-3$# >*N# 74 j8yL")ZE',$ #  K %w + O 7\H(XP> /  $   4%   Ht@  7B"# 7$:& $%A83#,3 6w473267&7".'632#".'#"'654&'6322632#"&="&54732754&'63267672#"CX Kj: +" %O/A !  &")ZE',$ #  K %w + O 7\H(XP> / `S,%+)X90H/)   7B"# 7$:& $%A83#,34`BMX654.'632#"&"'>7.54732672#".'#".'632#".'632"'>54'632272#"'#"'67&'63267#   ) u Sm7>A  g+""-?  2~a $'  )+D  # < & *2 9$ &2 d\K((('$22)0lp    H/9"2>EP ="J0    " G)! ==A]'3)'<M +L\gs473267"&7#".'632632#".4732672&#"#"'>7.72&547327".'632#".'632h  179rJ+ '!3#L. ). ) !#9 s1 8WO# & , J ((  +>  _=SW, (W 2 #   fZiM      ": 2=Hi74.'632>%&54>7654.'632>#".'632#".'632'#".'#"'654&'632 *h22FPUE3  +h  +.  -0B !  t  ' Zh/} 'N) &mI x4#C& %1, %+)X90V/) \l 6473267&7".'632#".'#"'654&'632d Kj: +" %7/A !  H(XP> / `S,%+)X90H/) @<>54'632#"4&'63267&#"#"'>7.5473276@_ ';Rn5  $ 7".Pq; ?H')!  Zw(:+ "TZ<)1 $]%=  *GZ%#".'63274'632#"'>'632".#".'#"'654&'632>54'632#" -v(,7L'Xs 0  /A !  ;_ ';Rn5Z  2 5?6% I &S,%+)X90H/) (:+ "TZ<Ne *S_o#".'63274'672#"'>'632".>54'632#"'4654'#"72#"."'>54'62  :4 9Fa3 q>#R~  "    NC)e -+c+sL##@ * CRE/)]$" 1T/# ( $-  * >*R'1HQ*+Do ) (V BV 4n7473267.6".'632#"&'#"'654&'6322632#"&="&54732754&'632672#"'67654.'632#"&264&"462"'72#"."'>54'632d Kj&j+" F0/A 0  3&&ZE'." #  M % +P 6]   ) (**\)e -+c +s  e;5s*s 7 5:' !/v   %,   %  ' +#$"xK((('$22)00**Q*+Do ) (VN`#7BJR^o654.'632#"&#".'63274'672#"'>'632".$264&"462"'72#"."'>54'632   )   :4 9Fa3 q>#(**\)e -+c +s\K((('$22)##@ * CRE/)]$" 10**Q*+Do ) (V`9Llx654.'632#"&>7"&5465654.'6324.'632>%&54>7654.'632>#".'632#".'6322632#"."'>54'632   ) ,.2 9; - * . *h22FPUE3  +h!! '&! X *e  ,*c  ,t\K((('$22)k "/ 9n% 4   " n]  ' Zh/} 'N) &mI x4 ',!?Q*+Do ) (Vx.Jr74.#632>%&54>7654.'6326#"&'#"'654&'632'"'>7.54732672#".'"'>54.#63267&#""&54732>32724654&'>32>54'6323267#".632654&"462" *h22FP}03  +6E/A 0   Sm7C<  g+ $-? !2~-W  )M (  Mb'   LLp+   (:  (0)H 3`'/ )**   %&54>7654.'632>"5>7##"'>54'6322724654&'>32>54'6323267#".632654&"462" *h22FPUE3  +h Al3%/_ :P  2 0%^V@   (:  (0)H 3`'/ )**h  ' Zh/} 'N) &mI x4X"nR7,6*c /  Pw9 `   % T  * , +  )( 0**X'Xbj473267>=""&5473267#""&4654&'>32>54'6323267#".632654&"462"X# $  /( Q $   (:  (0)H 3`'/ )** h%   ^( ,5 `   % T  * , +  )( 0**2dp{74.'632>%&54>7654.'632>4654&'>32>54'6323267#".%#".'632#".'632 *h22FPUE3  +h  ( : (\F)H  4`'/J  *,  +t  ' Zh/} 'N) &mI x4 `  % V  *  +  )(#=& `V(3R^oy#"'>7"&#".547326#".'632#".'632'#"&'#"'654&'6327#".'63274'632#"'>'632#"&.547327"'>7&#"&5473267"&#>54.#63267"&#""&54732>3272H- MPH ]r8z   +.  -0B 0     -v([Xs 0"K;>+< M v!(  '  #C  #  7"&#".547326>54'632#"'4654'#"654.'632#"&#".'#"'654&'632H- MPH ]r8z @b    =5 7   ) 3/A !   Fl<3{_%  c&p  %30 !A&8K((('$22)S,%+)X90H/)  x*5Hd#"'>7"&#".5473267#".'632#".'6324.#632>%&54>7654.'6326#67"&#""&543327654'"&54>73267%473267.7#".'632632#".#".'63274'632#"'>'632".8- MPH^qq&! "%% ) *h22FP}03  +6C$'9#0#yU  A+ ^*  17(:c<+ '!3#L. -v(,7L'Xs 0   Fl<2|_   4  ? B  7"&#".547326.547327"'>7&#"&5473267d Kj: +" %y- MPH ]r8z { =<+ca Mw (  '  (XP> / h Fl<3{_%     @   !  Vp.D{74.#632>%&54>7654.'6326654.'632#""'>54&'632272#"'#"'67&'63267#"5>7##"'>54'6322724732632".#""& *h22FP}03  +6|  ),C  # > '  %2 6) '(*e Al3%/_ :P  2 0%^V@L fDa0!%R81(3 ,   54.'".'6323264&"462"4732632".#""&C&,%[CyB $ > ** eDa0"%R81V ,'  spz-$8.1  **. Z=K  3<3^ !h0BS]e4654&'>32>54'6323267#".&#"&547326'#.5473263264&"462"4732632".#""&   (:  (0)H 3`'/- &~9 "',9Z] \; ** eDa0"%R81V , `   % T  * , +  )(9!     **. Z=K  3<3^ !N *=]{#".'63274'672#"'>'632".4.'632>%&54>7654.'632>4732632".#""&  :4 9Fa3 q># *h22FPUE3  +h fDa0!%R81(3 ,L##@ * CRE/)]$" 1  ' Zh/} 'N) &mI x4 Z=K  3<3,4!4 DNVs473267&7".'632"'>7.54732672#".'3264&"462"4732632".#""&X Kj: +" % Sm7>A  g+""-?  2~ ** eDa0"%R81V ,H(XP> / 0lp    H/9"2>E  **. Z=K  3<3^ ! D`+7BNYck654.'632#"&473267.#".'632#".'632#".'632632#".%3264&"462"4732632".#""&   )   179rJ+D  )%  2  ( 2L- ** eDa0"%R81V ,\K((('$22)'  _ =SX,8 #@'3 ( V 2 #E  **. Z=K  3<3^ !F`Ljv654.'632#"&"'>54'632272#"'#"'67&'63267#%4732632".#""&%#".'632#".'632   ) ,C  # < ' '2 9& '2 d fDa0!%R81(3 ,  +/  -\K((('$22)J0    # 5;! ==A]) 7%'< Z=K  3<3,4!u  A  \e B_go473267&7".'632>54'632#"'4654'#"%#".'#"'654&'632264&"462"274.'63267"&#"#".'36=.5472#".'6#"54>7d Kj: +" %rR~  "    NC/A !  q)**)3 ! 3$ 2+;)  J ,4(XP> / /# ( $-  * >*R'1HS,%+)X90H/) /**'    S: ! ' 'g >;#!3#M1%/O\g#".'#"'654&'6324.'632>%&54>7654.'632>#".'2632#".'632274.'63267"&#"#".'36=.5472#".'6#"54>7/A !   *h22FPUE3  +h7  **  +)3 ! 3$ 2+;)  J ,4S,%+)X90H/)   ' Zh/} 'N) &mI x4#7&M    S: ! ' 'g >;#!3#M1%\ R_j473267&7".'632274&'63267"&#"#".'354654&5.5472#".'6#"54>7d Kj: +" %*3 " 3$ 2*9) J -3H(XP> /  )(    9 : ! '  L>;#!3#M1%  $/PX`473267&7".'632#".'632#".'632'#".'#"'654&'632264&"462"274.'63267"&#"#".'36=.5472#".'6#"54>7X Kj: +" %  +.  -0B !  i)**)3 ! 3$ 2+;)  J ,4H(XP> / Z#C& %1, %+)X90V/) /**'    S: ! ' 'g >;#!3#M1%`*J654.'632#"&4.'632>%&54>7654.'632>7274&'63267"&#"#".'354654&5.5472#".'6#"54>7   )  *h22FPUE3  +h*3 " 3$ 2*9) J -3\K((('$22)  ' Zh/} 'N) &mI x4V)(    9 : ! '  L>;#!3#M1% \` 1jw473267&7".'632654.'632#"&274&'63267"&#"#".'354654&5.5472#".'6#"54>7d Kj: +" %   ) X*3 " 3$ 2*9) J -3(XP> / LK((('$22))(    9 : ! '  L>;#!3#M1% Ne$Mw"5>7##"'>54'632272>54'632#"'4654'#"".54.'632>72&#"767"#6>7#".5473267#".Z Al3%/_ :P  2 0%^V@R~  "    NC]  !'  8 & @P LH^5 BA$ 42'  a# )d"nR7,6*c /  Pw9/# ( $-  * >*R'1HVE2$' V4 Ai )8 M0!   S#8e2[4.'632>%&54>7654.'632>>54'632#"'4654'#">7#".5473267#". *h22FPUE3  +hR~  "    NCR5 BA$ 42'  a# )h  ' Zh/} 'N) &mI x4/# ( $-  * >*R'1H M0!   S#8  *6Fm%#".'63274'632#"'>'632".72#"."'>54'62%>7#".5473267#". -v(,7L'Xs 0  /)e -+c+s;5 BA$ 42'  a# )Z  2 5?6% I &Q*+Do ) (VI M0!   S#8N$7W~"5>7##"'>54'6322724.'632>%&54>7654.'632>>7#".5473267#".Z Al3%/_ :P  2 0%^V@ *h22FPUE3  +h5 BA$ 42'  a# )d"nR7,6*c /  Pw9  ' Zh/} 'N) &mI x4 M0!   S#8 Mn %3m473267.6".'632473267&7".'632%&5473267>7#"&547326765#"&5473267&#"473267.7#".'632632#".>7#".5473267#".d Kj&j+"  %v Kj: +" %% _ .;'L "e$ #^ $B  17(:c<+ '!3#L.)5 BA$ 42'  a# )ff:6r)s S(XP> / y      ? C  X@ ,,-  :! x M0!   S#8Pp COt473267&7".'632".54.'632>72&#"767"#6"5>7##"'>54'632272632#".632#".2#".'6d Kj: +" %*  !'  8 & @P LH^> Al3%/_ :P  2 0%^V@Y B (<  @ &#[ :-H(XP> / 4E2$' V4 Ai )8"nR7,6*c /  Pw9^& #dp/)*`F;HUb7&54654.'62#"&7"'>54&=4'632632#".632#".2#".'6  -2%Q3,] B (<  @ &#[ :-"L0 #" 3 %-P3&9j< "i!& #dp/)* `T.:ERe{74.#632>%&54>7654.'6326#".'632#".'632632#"."'>54&/632654.'632#"&54654.'62#"&7"'>54&=4'632632#".632#".2#".'6 *h22FP}03  +6q! '&! + *e  ,*c ,t  )  -2%Q3, B (<  @ &#[ :-   7.'632654.'632F (-k( WB&  0 (@ -;+  !-" '&  *  1X/ =(G"  ?, $&&myc31  #$rm  "  ;". ",*?* F .=-\~ 6nz473267&7".'632#".'#"'654&'632"#"'67.547327654'632672#"&54.'67#".'632#".'632#".'#"'>7.'632654.'632d Kj: +" %C/A !  A (-k( WB&  0 (@ -;+  !-" '&  *:  1X/ =(G"  ?, $&&H(XP> / `S,%+)X90H/) {yc31  #$rm  "  ;". ",*?* F .=-`4Gg654.'632#"&#".'#"'654&'6324.'632>%&54>7654.'632>#".'#"'>7.'632654.'632   ) ?/A !  m *h22FPUE3  +h  1X/ =(G"  ?, $&&\K((('$22);S,%+)X90H/)   ' Zh/} 'N) &mI x4 ",*?* F .=-`"-N654.'632#"&#".'632#".'632'#".'#"'654&'6324732>7.'632>7#'67&#"#"&'&'.   )   +.  -0B !  - #.  $6- O ." _  \ \K((('$22)5#C& %1, %+)X90V/)        0 =2>b%&54>7654.'632>74732>7.'632>7#'67&#"#"&'&'.   )  *h22FPUE3  +h #.  $6- O ." _  \ \K((('$22)  ' Zh/} 'N) &mI x42       0 =2>b54.#63267&#""&54732>327247326767&#".54732767&#".d Kj: +" %-W  )M (  Mb'   LLp9 s' 77:X!$h(XP> / ";  #($)$    <? "I  " M&  *GZz%#".'63274'632#"'>'632".#".'#"'654&'6324.'632>%&54>7654.'632>&54654.'62#"&7"'>54&=4'632 -v(,7L'Xs 0  /A !  m *h22FPUE3  +h  -2%Q3,Z  2 5?6% I &S,%+)X90H/)   ' Zh/} 'N) &mI x4L0 #" 3 %-P3&9j< "i!`zT2Nn7.547327"'>7&#"&5473267&54654.'62#"&7"'>54&=4'632 =<+ca Mw (  '    -2%Q3,   @   !  VL0 #" 3 %-P3&9j< "i!HRZm654.'632#"&4654&'>32>54'6323267#".632654&"462"4.'632>%&54>7654.'632>   )    (:  (0)H 3`'/ )** *h22FPUE3  +hK((('$22) `   % T  * , +  )( 0**  ' Zh/} 'N) &mI x4`*5M`#"'>7"&#".5473267#".'632#".'632654.'632#"&%4.'632>%&54>7654.'632>4.'632>%&54>7654.'632>D- MPH^qq&! "%% )   )  *h22FPUE3  +h *h22FPUE3  +h Fl<2|_   4  ? K((('$22)  ' Zh/} 'N) &mI x4D  ' Zh/} 'N) &mI x4D(J%#".'".547;654&'63267&>7"&5465654.'6326.P  7k  Q%7S,.2 9; - * :O)0  3'#t(  "/ 9n% 4   " n 8n %3?Jr473267.6".'632473267&7".'632#".'632#".'632>54'#"'>54'632672#"#"#"&'#"'654&'632>7"&5465654.'632d Kj&j+"  %v Kj: +" % ! &"#*JnM>4 /L &| (J-$9 /A 0  ,.2 9; - * ff:6r)s S(XP> / 1  * k.I   AI875:'  0u   "/ 9n% 4   " n *Gi%#".'63274'632#"'>'632".#".'#"'654&'632"'67""&'54&'632672 -v(,7L'Xs 0  /A !   IY 0 /Z  2 5?6% I &S,%+)X90H/) z\FA # v8r ##4.4>4.4>53r/7//7/g/7//7//7//7/g/7//7SNI0>8>0I'>0INI0>8>0INI0>'I0>8>0g'667&'4554ssrsAA@@#!!")H'667&'5445rsss@@AA!"#!?`/hu654.'632#"&%654.'632#"&274&'63267"&#"#".'354654&5.5472#".'6#"54>7473267>=""&5473267#""&   )    ) *3 " 3$ 2*9) J -3# $  /( Q $\K((('$22)K((('$22))(    9 : ! '  L>;#!3#M1% S h%   ^( ,>`;Ww"##"'67.547327654'632672#"&54.'6&54654.'62#"&7"'>54&=4'6323264&"462"4732632".#""&_ ( 95) WA& .  )? .;* -F  -2%Q3, ** eDa0"%R81V ,aA],6 +  $rm   !ML0 #" 3 %-P3&9j< "i!  **. Z=K  3<3^ !7.5467654&'4632>2#"'>54.#""6?"&4654&54#"&#"3272#".54632254&/#"&5327.463232632'654.7#".'632#".'632".'#"&54>7.5467654&'4632>2#"'>54.#""6?"&4654&54#"&#"3272#".54632254&/#"&5327.463232632'654.7#".'632#".'632     .=*  % !@ZE;D3E'5?*    C "$G) !K)-E)9 &"( &$ 0.    "( =     .=*  % !@ZE;D3E'5?*    C "$G) !K)-E)9 &"( &$ 0.    "( @     3' *&$#I7-K"K-!D S   &g"  26 ('0 -%! /(!  %   #,  z@     3' *&$#I7-K"K-!D S   &g"  26 ('0 -%! /(!  %   #,   +>^it%47326767&#".54732767&#".4.'632>%&54>7654.'632>#".'632#".'632'#".'#"'654&'632473267.#".'632#".'632#".'632632#". [, + #A  "h  O  *h22FPUE3  +h'  +.  -0B !  S  179rJ+D  )%  2  ( 2L-  8     E  ' Zh/} 'N) &mI x4#C& %1, %+)X90V/)   _ =SX,8 #@'3 ( V 2 #z:EQ#".54654.'63232>".#""&54732632'#".'632#".'63267>72#"'2>54.'#"'#".'4'46?#"&5465327654&/632672327&5477"6 Y=!#  !/5'#M75 S. _2F7 *2 . 0K*0#62-1 3!F4!& " ) ,   6O G7|   Qo8:'2;2_  P'>  "@   B8":%  D) + I@0 1M* *$ +pBKWb#"'"&54732>7.54>7.'632&#"632#".#"#4'3267#".'632#".'632"327#"&5467"&54633267#2".2#".#"&'#".5467#"&547326232654.'632?2-. .(6 ( !;(2*? +!  45!!" (( " *:R$ 0/G=) .&:!%Q C3  X-"2 $    1  +)!(23@ .!-. %)    #"'+.# &-&%("  ="Sj7.5467654&'4632>2#"'>54.#""6?"&4654&54#67654.#"#"&54732632>54.'2#"&#" : !%s"%'\  " !'%  +P) ^%  + n    )7 *)5#A7C " %     .=*  % !@ZE;D3E'5?*    452  C #W43> (mr&& 4h& " b# Y"  ! ;5   !A!9  '!,  > &41$1'O @     3' *&$#I7-K"K-!D S   &g"  j6v0 %)IR  ' \p9qBLV4.'43267654'463267#"5>7#"#".'64.'43267654'463267#'>7#"#".'647326767&#"&4732767&#".473267.6".'632#".'632#".'2632473274'.5433274.#63267672"#".'"&"'>7.54732672#".'%#".'632#".'632 & *1 '7[  & *1 $8\   Y, + .G&  ~ +=  Kj&j+"  %   (,  1N 3  ?   !.-3@# ( (]  >4 ' Rn8C=  f,  0 ,@  1~o ! 6#%<O    :M $/   q      :M%.     &  0 qf:6r)s   '   .          ' # HL   7 ' " ).6 F3h"&#>54.#63267"&#""&54732>3272"'>54'632272#"'#"'67&'63267##".'#"'>7.'632654.'632#".'#"'>7.'632654.'632#C  #  32#"#"'.'265#"%67.54332754'632>32#"#"'.'265#".547327"'>7&#"&5473267.547327"'>7&#"&54732670139 !T ,  &A!   %q 139 !T ,  &A!   %q | =<+ca Mw (  '   =<+ca Mw (  '  PV   >!"  c0=PV   >!"  c0=   @   !  V:   @   !  V$tu>32654.'2#".#"3272#".54>32254'#"&547327'#"&547327.#"'4>32m -L( EB ' !;%)2>,%8<&;U)'9.%**(086D ((6$&!*      "   B    $  I  *&!'# -+$5 A * C! :"      z$4>54&'632#".'.4@4$/C)DG?4N>J 8& ,B9JNB!V&*W( IL,327632#".54>%"467"&547326327Q>\/@b46@ ,%*` 2($84 J5 : 'hJS%#".#"3272#".54632654&/#"&52327.5463232632654.'3B&58p>5v!@G+kAX'665?%6,"7 #-  "H% $&&0#U* @-=J G9 /3 &12.$P& d`%#".54654.'63232>d_*3  --4H!A6$)T}5cE.+1xWZ)-& X<&5&#"32>7#"&54&546325"&547327654.'63267#"&#"d#%*1  +&'M ,'   =  "?{9 =0?%5LJ  72 B)7#4 3> %0  ,%    /&?An@#"bc%".5#"&547327654&'>327654&'4>3267#"&#"#".'232532672+;,1# < !G#C  "1D"5 =$+  #80: &$ )$H" $@J9 7$3# 33!0#+" .C, " _:% ^ <+0# __mJ>7#"&#"327#"&5467"&547232?"&54673267632 &*ZZw;6, E1' MW@@VF R718 p : V %%iB(> fF2\*&U ''  HxiO"'63267&272#"&547%327654.'632654'327#"&547>7"#.? 7.47654.'632654'327632#"A/(H"  0 ] !4 < )  JP&I;:qM!.#6618.#,_5#S(#   bGG0F4<:#/~S-"327#".54>7"&546332$7#"&4\9 $3M <9# 3*]H  '\#4-&]KM$&1\?8`@% -<  :'$;%#".5467&54654.'63267676323267632$tD2:'/;F & # ;]>'2%-  =)/V&L!l  3*Y;$(   U.(. Iqu/bm2#"&#"#".'#"&546324&54>7&'6%327654.#632>54'327#"&547>7"&"327&1Y <- '!  l2?9D!"''9 $/) %& * V;3( I-K";,$ U(L!& Y8*"120@ #80 $   #<GHn3$22 9[|H(K3267#"&546327#".54>7#"&54654.'632GI*2KX,BS !L3G5&G=e 1" )3*", "#     ),xclv|>32#".'#"&54632654.#"#".'".'467.54>3654'63226326?"267&%6*-T.& /Q1A8<7&!I   -   *4   0#(W".3* '?A% @0&!:'=54&32>54&y8o>  ѐ2KWI .8Q."kT*K;!"@#4r~6a@/9<[5Tg aL_FRiCgs327654.'>32654'327#".'#"54632&="'#.54654&'62>"32>7& ,   5 ( * 4% =:D/A2* J,/*$ 6,3 3" ,#  *-5    )TZ-&5f4 '&;%< y\Q $307" - ! "  @_D#"&'#".5467#"&4732>3232654.'632r G# 5M%70$+2" $ 043!?LPe  &/HVEXJ$)C@!;5/( //9Q.:TyHSF! 2 OEN%#"'"&54732>7.54>7.'632&#"632#".#"#4'326N1DJ *I /$>U "(>!./) =MAb0;+ $Q#X.2+!+4FJ ; 0 1%A##&27 0 " DD%70$'77'!1,>;*5%#"&'.#""&54732>320_CH% !I # ITNn/T+5=N/?>=`PNPny3274654'"&'3267632654'27#".'#"&54632&5"&'#"54654.'>&#"326'3&9;#(FC9 &>  4/&(%  8(CFG08 KRB' a( )?? 5" "#(" /%   #  %! &BW'  # %31',4 V+/ 20@ K +6301w"%scm2735"&547327654.'>32>32654'3263#".'#"&5463234&5"&547&#"326 =A     9o9$F PEP@ *J1?G@9YM (4)'%>Ah#  # %*#<>7. E15! "!13,%5F5$   #EIR%>7&'"'.'>7>7"&5473263654.'2#".''32>#D(7B %'  SN*P<"|)D:N *?R +x/K */ (>*)M).)  5LM1?': 2 Ak &% 62214( =PC%;M*tfv>3232654&54632#.'674&#"#".547.546327#"&547327654&'632&54>5&#"36 %!LAJ@ 2%*="%   &O6"38%%02/35  @(1P  $ >% TG BDRJBJ), .)"Ep 3 , R37@.%  "! & /..i:EX%.'&'47.'67654.'632#"'>54&##"''3267&'7> v x /GCf/H\V' f9 4.$T6 /$ 1F   6{a3H&%% 8 7%mb;b=+ $eNS%%hB&" M|$@X\ ()   9@G2632#32654.'#"&547&5467&547365./6322#'6)4;Dh78$0[pMPSC9*F , 7 4Z/> yV>,bKHX[eJ.C2#E,04"  &=>  2$f<%4>7.'632#"&#"632#"'>54&#". $=)  AT ,B@T7e1MN$ 1|c5$ 0 (J35   D* 3 ` =QM*C$"]90)(1- 4,"'>54&#"#"&5464.'632632+PS#!8 & 8#4G>?&5@,0TSH"TC(6 9"WGsY^N3xAX:C%#"54632>54&#""&54>7"&54732636323274&#"AJb04&8/4E2*?"')8!j)Fb-323267#"54654#"#".'#"&54>7.54>76=4'>3226765464i&o . JT<_8({    " :,+5   , &1S|1Ew""JI1j}H_)]x3 %)[$.%9 + $) #(2^0$ 8Gl>WJ632#"'>54#"#"&54>7>7#""&547326  o,3=Qh$;PQ,0 )CN5#|0H#)> =*1 "!(W   \4YJ2N1 $+B(s5A5 &: F/4  0! 'Nna OZ%2>747>5#"&54672632632#"54632654&#"#.27654#"x   ?*!C-  q@1#Mz/KO(t9)6iZ=294$%#4 !$D'Wm)@B- ?\ hd;W-F%5!" +kEU-icD '3i%&54632232>54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'632654#"#".#""&54>7"654*# &(4)W  @8( & WA4/D?Y_'# 4 $#H/?Y G>"0%' %".547327654&'632>72632>32#"'73272#"&5>7.#"#"547>06 # 1(1f+ @B6+A+/W&&iN'!<[VZ6@ .)"_ 4)  e  ) - < +,% HDH1%  ,(A'2 :(2F-(22.?iD6323267#"&54654&#"#".5454./4>2632i _+?A-*[(V3?.#%8   7'B?1,,X5  VIH? > ,(72#"'>54.'#"'#".'&'46?#"&547327654.'62>72327&54776 5$)!2 !Y:*Kt.AJ6 17@C,)"MK9 mQ (39# 66 + %B%B   )%% C)% gY4[9*(8X4'9 of%%K ! $Ly%A&   + !!  ,@!$2" $2 2+T (N#".'632#".'6322#"&'.'6#".54654.'63>  3$8?+%;5g  ! ; *0 $;    - ^$(!EXN-6$ {d0: 3kJB &*+,A / &Dt&9DQ"'67>54.#"#"&54732632>54&'2#"&#"".'632#".'632  "84#2h#&2!=cFNb "p)!#95 ' #B#7?lD&%() 072"4k^; 6=#' 1-[)*hx Zm#".'632#".'63232632#".54654#"#"&546?>7"#"&5473267632'674&'2#"&#"  * +  1zM. %# 1Kf; R0  5'("e% .*%I  !$@ 1r8.  ?HI& .#4 ? %,y 32#".'62#".'6254'67&#">2&#"%>32>32#"&54732654&#"#".'#"&54732?#"&54732754&'62zG 5")&:'%+o -  CJD  $ $j 0($;TVP52+328)9E7  # f"(-  ",.>3y1 J$  .. $')!u'\H8Hb8#+ % B3"&,@ = 2 D% n (*5jH^ju#".'&'32>54&#"".54767"&54>3327654&'632632.'#'.'>7".'632'632#".o8 F- $+R--b6+,  T 8/0~.iV" ' ] 5$+!2 "^ ;,x*$5JB3#G 0 C! " .CG %5#.G;,  $ D )t>32654.'32#".#"3272#".54>32254'#"&547 327'#"&547327.#"'4>32%#".'632#".'632`-K' E " ( !;%(2>,#8<&;U*'9/$**(096C    '8%'!)    !  E 5%=> 4%%B B    $  I  *&!'# -+$5 E *  C! :"       / $^$5%z%.84>54&'632#".'.%2#".2#".4?4 $/D)DH ?O~ )d0O '4N>J 8& ,A 8KOA$B*W(K=,$ AEYer%"&54654'632>7%7>54&5".53274&54&'>32654&'6#".'632#".'6322A !2& " $&2?$ (%+@ ?%# 3$ * w - +?; ' ,,^7 6/=CMT %8 Nw>( 2mCX  2 ? (-& 2 $ 8CF4&X', #s L,8D327632#".54>%"467"&54732632#".'632#".'6327Q>\/@a45@ ,%*` 2 . ,@C ,$--($84 J5 : C8(Z(; %zJS_i%#".#"3272#".54632254&/#"&52327.5463232632654.%#".'632#".'6323B&58o;4u"?G+kAX'846>$9("6 $-  #I $1 + $5= *% %&'0#V* ?.=J G9 .3 (0*("P& 8 ) 8B1f` ,8%#".54654.'>3232>#".'632#".'632b_*2  .-4H!A5%',*DP!  +!&IT}5cE.+ 1xWZ'!*4'*'d(0 1 Xdp4.5&#"32>7#"&54&546325"&547327654.'63267#"&#"#".'632#".'632Y$ 8B +&' M +(   9"?{9 <0:*5LI  0$/= 1#"  81 'J58"4 3?%0 &$ +&    /%@An?# ( W* _Zfq%".5#"&547327654&'46327654&'4>3267#"&#"#".'23273272".'632#".'6324B,0# < Q#B "1F"4 >$"+  $8$w(R*">F 0!#<) /$> CRE 6%3# 22 0$+" -B, " _:$]1c.2,  !"0TkMYe>7#"&#"327#"&5467"&547232?"&5473267632#".'632#".'632 &A(Zv<6, E~0' MW?)A&F U808p 1 ) #2= %%:*9*$%iB(> gF2[  & U &' 29 +"S! & :P\f"'63267&272#"&547%327654.'632654'327#"&547>7#&%".'632'632#".? ?F*;$U! pI*#,rGW"!37 &    5 &SW 5$) 2  Z:2)  * .@5,''! 'A 98hQ. 0G% C)g|ER_!654&#"#"&54>7.547654.'632654'327632#"#".'632#".'632@/)H!  0 9-  4< ) LO&I;:rMg %"9@ ' #B.#6618.#+`4K($   b=Q0F4<:# &,W**9J)5?4&#""&546732>32#"'67>7".'632'632#".8JE($+!*&!E  ~=T! \$AQ1{ 5%)!2  ]</1B   ? ++aQk  0M$  C)(S+4>"327#"&54>7"&546332$7#"&2#".2#"..\9 #4MHp 2*]H  ([#4-'} )i1O ']KM$&kw8`@% -<  :';L=,# B}:FR%#".5467&54654.'6326767632327632#".'632#".'632tD1;'/; @% # ;]>(I &^ 3 $;A + $?-  =)/V&L!l  3*Y;$$  U.(. 0#d#)#:q Gz2#".'62#".'62#"&#"#".'#"&546324&54>7&'6%327654.#632>54'327#"&547>7"&"327&j - 3" (' 4'&:1Z <- '! i2?9D!"&'9 2) &% /  V;3( I-J": P  B "K-$ U(L!& Y8*"130@ #70 $   #;GHn3!21 9T &>b2#".'6632#".3267#"&546327#".54>7#"&54654.'6320([#%$ 0I*2KX,BS $K2G5&G=` 1" )3* #+ "E $ (= ##    54'632632#".'#"&54632654.#"#"'#".'.'47&327&'7632>7&#" -" #7& 1$((*49+  Zu  /8.F?8-! B5 %    g 3/&}" -* #"1 "$4# ~u%&2%#&:&;+D529]7   & BnL,5DR#SP *t 2#".'62#".'6>32#".'#"&54632654.#"#".'#".'467.54>3>54'6322632>?"267&%6l!+/! .&-%  .' 0O1B8<8%  G   -  )3   $(U!.3 +  _$;&(  E<% A1&!:%>0B"}B7e &c&.59)    * #3 .  " ) b" -u ?L".'632#".'632"#".'.'4632#"'>54&32>54& ," #7& 2$C #:X/ Ґ2KWI &/G+,kT*K;* #"1 !#"!/{tP%5r~6a@/+-"32>7&327654.'67632654'327#".'#"54632&="2#".'62#".'6-/*$ +34",  7  ) + 4% =:D/~@2# [%9 - #D +"<%<x\Q!$3089+7#  B !# +.4  $  *Q]-&5f4z'#/3232654.'63272".#".'2d G# 5M%70$+2" $ 043!?LPe  &/H 0D#!>0VEXJ$)C@!;5/( //9Q.:TyHSF! 2$#<_ G!8 OENZe%#"'"&54732>7.54>7.'632&#"632#".#"#4'326#".'632#".'632N1DJ *I /$>U "(>!./) =MAb0;+ $Q#X.2+!+" 5 $=> 4$%A4FJ ; 0 1%A##&27 0 " DD%70$'77'!1,>;*52 / $_$5% *6%#"&'.""&54732>32#".'632#".'6321_BH$"FA !H"! ITNn/U*+1'+CN! ,!&H6<MHM/?>=`'6'c'00,NQoz3274654'"&'3267632654'327#".'#"&54632&5"&'#"54654.'>&#"326#".'6322#".'63& 9;#(FC9 &; ,"&(%  8(CFG06 KR;' `' )?? 5" "$(, +)&0- * " /%  #  %!  BW'  # %31',4 V+/20@ K +6301w" ,#)4 r2#".'62#".'635&547327654.'>32>32654'3263#".'#"&546324&5"&547".#"32:3 - %M +!~    8o:%G PEOA 2J1?HA9-YM (5  '%>"'?>  " h@ " $+#<<6. D26 -!12,&5 E4%   C bl#".'632#".'632>7&'"'.'>7>7"&5473263654.'2#".''32>  3$81 -%7e;D %&  SN(P<!}(D:N +?R 6o/K  - d$4"+ <<6+M).*   4LI />'9 1@k '% 612/6( &53C%(-3 p #".'6322#".'6>3232654&54632#.'674&#"#".547.546327#"&547327654&'632&4>5&#"36 4".&!q,% 6&%  !LBJ@ 2%*="#  'N7+=@"&/1/,5  @'1P ? +%$# 3$ SG  BDRJBJ), .)"Ep 3 2&Q47@.&  ("!% 0.%f Xcr#".'6322#".'.'.'47.'67654.'632#"'>54&##"''3267&'7> 2".)!F67%n x!0HA f/H\V' f8 %T6 0$!4C  * "("(+ |a4I'%' & 7%mb;b=+%eNR %*( M}%@W\ (% )(%s X_#".'632#".'6322632#32654.'#"&547&5467&547365./6322#'6s , *DD!  ,! &I4;Dh78$0[pMPSG<+F , 7 4Z/>'* (g)00 yV>,bKHX[eJ0A1#E,04"  &=>  2{ \h2#".'62#".'6".'"&54732>7.54323254'632#"&'232654&#""67.pG 6!*%9(% (/ F $"AY&-M (%EG>G=M,8-*"*@_   R,j{1 G"  32676322#"'654'7.#"6|$1 4!%7 4$<[<3 O;#,"-%> 8Z0J'4Rs[I89(&K!{ !$7i"!* C"B/ h\Kq^\|WbAcax B( zc%d PZ2#".'6#".'632#"&'&'#"&54632&54&54.'63227632327&#"g9 2 ; 2)!+) [M$2@;/1(< wL$^ "+D V".'632#".'2632"&#"632#"'654&#".54767.'632  " %N " D,#>W31 2LO$(6$ / /+Q  @T?  - L* 5 (`  `<#@)*B$>z0*(2- 3;B<   C*  H#".'632#".'632"'>54&#"#"&54654.'632632 )"-0F $"I4C,#!8 % 8 4H=?&5@,L; #[ 60QmTSH,TC(:!RMtY^N3sX S\#".'632#".'632#"54632>54&#""&54>7"&4732636323274&#" + #;? '!Ka04&903D2*?"'*7!j) Cf->323267#"54654#"#".'#"&54>7.54>76=4'>322676546Q!*,!,',$  ;g&n . JS<_8({    " :,+5    - &1S v '>(+ 8Bv#!JI0j}H_)]x3 %)[$.$9 - $)  )1[3 . GhW a2#".'62#".'6'632#"'>54#"#"&54>7>7#""&5473265#+ 0" 3+A  o,3=Qh$;PQ,0 )CN5#|0H#)> =*1+.(  &C$     ]3YJ2N1 $+B(s5A5 &: F/4  0! '4t ht632#".#".'6".'#"&54>7.5467654&'4632>2#"'>54.#""6?&4654&541+%, 2!\/"   & H_B  9 5dk6NN Pk6%Tb $A " 4 ""< ! .d%(  0 P <P  - :% 88rW5`:"(tG%.l&. . $/>!3Ka "hs2".'62#".'62>747>5#"&546732632632#"54632654&#"#.27654#"A", /"%" 0&   ?*!C-  q@/%Mz/KO)s9(6iZ>494$% $* %D!- 4 !$D'Wm)@B- ?\ hd;W-F%5!" +kEU-icD '0i 2#".'62#".'6&54632232>54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'62654#"#".#""&54>7"654?6 ,)> , *# 4.4)W  A~8( & WA4.D?Y_&# 5 $#H/?X G:>"0%' 4&#">%".547327654&'632>72632>32#"'73272#"&5467.#"#"547>O + . -& ,#06 # 1(1f+  @B6+A+/W&&iN'!<[VY6@ .)"T! '@&* 4)  e  ) - < +" HDH1%  ,(A'2 :(2F-(22.>i ]#".'632#".'632'6323267#"&54654&#"#".'454./> 32g )".0I #"J d+@A,+ZfK?-#%7   6 ; #Y 60\ 'B?1-+W67H? > ,(72#"'>54.'#"'#".'&'46?#"&547327654.'632>72327&547 76A"&/ !//! /)Kt.AJ6 17@C,)"NK9 mQ (49# 6 + &B%B  )'"!//! // )gY4[9*(8X4'9 ng%%K ! $Ly%A& $+ !!  @!$3! ! 0& 5+b"H264&"4632#"2#"&'.'6#".54654.'63>@""?/! // ![5g  ! ; *0 $;   $""JB..B/XN-6$ {d0: 3kJB &*+,A / &Dt8K264&"4632#""'67>54.#"#"&54732632>54&'2#"&#" "">/ !//!   "84#2h#&2!=cFNb """JB//B/L7?lD&%() 072"4k^; 6=#'lxTg264&"4632#"&32632#".54654#"#"&547>7"#"&5473267632'674&'2#"&#""">/ !//! /) 1% !"],2B  )?  1zM. %# !2Ke"; R0  5"") // !//%I  !$@ 1r8. ?HI& .#4 ? %,/264&"4632#"254'67&#">2&#"%>32>32#"&54732654&#"#".'#"&54732?#"&54732754&'62O"">/ !//! q+o -  CJD  $ $j 0($;TVP52+328)9E7  # f"(-  ",.>3C""JB//B.z. $')!u'\H8Hb8#+ % B3"&,@ = 2 D% n (*5qZp264&"462"&#".'&'32>54&#"".54767"&54>3327654&'632632.'#'.'> ""?/B..B/9o8 F- $+R--b6+,  T 8/0~.iV" ' 3"") // !//x*$5JB3#G 0 C! " .CG %5#.G;,  t3264&"462"&>32654.'32#".#"3272#".54>32254'#"&547 327'#"&547327.#"'4>32 "?/B..B/-K' E " ( !;%(2>,#8<&;U*'9/$**(096C    '8%'!)    !  4""*!//! // B    $  I  *&!'# -+$5 E *  C! :"      }z7264&"4632#"4>54&'632#".'.""?/! // !4?4 $/D)DH ?""JB//B/DN>J 8& ,A 8KOA$B*W(E0l2654&"4632#""&54654'632>7%7>54&5".53274&54&'>32654&'6K""?/! // !l2A !2& " $&2?$ (%+@ ?%# 3$ * wQ"JB//B.^7 6/( 2mCX  2 ? (-& 2 $ 8Cs L&<264&"462"327632#".54>%"467"&54732632""?/B//Bl7Q>\/@a45@ ,%*` 2""JB//B/O($84 J5 : t `i264&#"4632#"&#".#"3272#".54632654&/#"&52327.5463232632654."&/ !//! />3B&58o;4u"?G+kAX'665?$7*"6 $-  #I $P" // !//&&/#V* @-=J G9 .3 '0*("O& b`5264&#"4632#"&#".54654.'>3232>"?/ !//! /_*2  .-4H!A5%'"") // !//T}5cE.+ 1xWZ'!* n264&"4632#"&4.5&#"32>7#"&54&546325"&547327654.'63267#"&#"+""?/! // !/$ $*1 +&'M +(   <  "? {9 <0?%5LIl"") // !//  72 B)7#4 3> %0  &,*)    /'>Ao?#fl264&"4632#"".5#"&547327654&'46327654&'4>3267#"&#"#".'23273272H"">/ !//! 4B,0# < Q#B "1F"4 >$"+  $8$w(R*">F'""JB//B/L CRE 6%3# 22 0$+" -B, " _:$]1c.2Tk a2654&#"4632#"'>7#"&#"327#"&5467"&547232?"&54732676322"?/! // !T &A(Zv<6, E~0' MW?)A&F U808p 1"JB..B/|9*$%iB(> gF2[  & U &' 2:#4e264&"4632#"&"'63267&272#"&547%327654.'632654'327#"&547>7#&""&/ !//! /$? ?F*;$U! pI*#,rGW"!37 &    5 &S4" // !//2)  * .@5,''! 'A 98hQ. 0GgjW264&"462"&654&#"#"&54>7.547654.'632654'327632#""">.B//B.@/)H!  0 9-  4< ) LO&I;:rM""*!//! //s.#6618.#+`4K($   b=Q0F4<:#9c ?2654&#"4632#"&4&#""&546732>32#"'67>D"?/! // !/JE($+!*&!E  ~=T! \$AQ1%") // !//1B   ? ++aQk  0M(S A264&#"4632#"&7"327#"&54>7"&546332$7#"& "&/ !//! /K\9 #4MHp 2*]H  ([#4-'n" // !//]KM$&kw8`@% -<  :'vO2654&"4632#"&#".5467&54654.'6326767632327632""?/! // !/HtD1;'/; @% # ;]>(I &"*!//! //u  =)/V&L!l  3*Y;$$  U.(.:qAt264&"462"&2#"&#"#".'#"&546324&54>7&'6%327654.#632>54'327#"&547>7"&"327&4"">.B//B.61Z <- '! i2?9D!"&'9 2) &% /  V;3( I-J": &""*!//! //2-$ U(L!& Y8*"130@ #70 $   #;GHn3!21 9M#<_264&"4632#"&3267#"&547327#".54>7#"&54654.'632U""?/! // !/F*2KX,BS $K2G567"` 1" )3*",Z"") // !//: ! #    4#$D`@"!f'Bt]J   <Qnw}2654&"4632#"%267>54'632632#".'#"&54632654.#"#"'#".'.'47&327&'7632>7&#"G""?/! // !*49+  Zu  /8.F?8-! B5 %    g 3/&}" -"KB//B.4$4# ~u%&2%#&:&;+D529]7   & BnL,5DR#SP *t}264&"4632#">32#".'#"&54632654.#"#".'#".'467.54>3>54'6322632>?"267&%6E"">/ !//!   .' 0O1B8<8%  G   -  )3   $(U!.3 +  .""JB//B/H E<% A1&!:%>0B"}B7e &c&.59)    * #3 .  " ) b" - 8E264&"4632#"'"##".'.'4632#"'>54&32>54&O"">/ !//! 8o>  ѐ2KWI .8Q."kT*K;N""JB//B/ ""@#4r~6a@/9<[5Tg aL_FB+qy#&54654&'632>"32>7&327654.'67632654'327#".'#"54632.="$264&"4632#"&-Z%+34 #-  6 '* 4% =;E/~A2#D"">/ !//! /<%<Q $3089+7#  B !# +.5  %  *Q]-&5f4:('"") // !//._EMW#"&'#".5467#"&4732>3232654.'>326264&"462"&` F$ 5M%70$+2" " 043!?MOe .H""?/B..B/VEXJ$)C@!;5/( //9Q.:TyIQI ! 2""*!//! // OENV`%#"'"&54732>7.54>7.'632&#"632#".#"#4'326264&"4632#"N1DJ *I /$>U "(>!./) =MAb0;+ $Q#X.2+!+"">/ !//! 4FJ ; 0 1%A##&27 0 " DD%70$'77'!1,>;*5:""JB//B/  (2%#"&'.#""&54732>32264&"4632#"1_BH$FA !H # HTNn/U+""?/! // !6<MHM/?>=` ""JB..B/&NR]{327654'"&'32676322654'327#".'#"&54632&5"&&#"326#"54654.'>$264&"4632#"1' ::$(EC9  &; ,"&(%  8(CFG06LR "!#'' a( )?@ 5"">/ !//! 6+%  #  %!  <]'  " %31',4 `!/" 20@ K +6301w""JB//B/mz264&"462"&35&547327654.'>32>32654'3263#".'#"&546324&5"&547".#"32""?/B..B/~    8o:%G PEOA 2J1?HA9-YM (5  '%>W"") // !//h@ " $+#<<6. D26 -!12,&5 E4%   CKU]e%>7&'"'.'>7>7"&5473263654.'2#".''32>264&"462"e;D %&  SN(P<!}(D:N +?R 6o/K Z""?/B..B <<6+M).*   4LI />'9 1@k '% 612/6( &53C%(-3""JB..B/ {264&"4632#"%>3232654&54632#.'674&#"#".547.546327#"&547327654&'632&4>5&#"36J""?/! // !%  !LBJ@ 2%*="#  'N7+=@"&/1/,5  @'1P <""JB//B.' 3$ SG  BDRJBJ), .)"Ep 3 2&Q47@.&  ("!% 0.%sBM\eo%.'.'47.'67654.'632#"'>54&##"''3267&'7>3264&"462"&m x!0HA f/H\V' f8 %T6 0$!4C  "?/B..B/3 |a4I'%' & 7%mb;b=+%eNR %*( M}%@W\ (% )(%""*!//! //TSZ264&"4632#"2632#32654.'#"&547&5467&5473654.'6322#'6"">/ !//! 4;Dh78#0ZpMPSC9*F , 7 4Z*?""JB//B/ yV>,cJHX[eJ.C2#E,0 4"  &fg  8[g264&#"4632#"&".'"&54732>7.54323254'632#"&'232654&#""67.3"?/ !//! / (/ F $"AY&-M (%EG>G=M,8-*"*@_   R,jP"") // !//32676322#"'654'7.#"6$264&#"462"<[<3 O;#,"-%> 8Z0J'4Rs[I89(&K!{ !$7"?.B//B\Kq^\|WbAcax B( zc%[""JB..B/mMW264&"4632#"&#"&'&'#"&54632&54&54.'63227632327&#">""&/ !//! / [M$2@;/1(< wL$^ "+D~y Q264&#"4632#"&"&#"632#"'654&#".54767.'632"&/ !//! /H,#>W31 2LO$(6$ / -*T  @T*" // !//?  `<#@)*B$>z0*(2- 3;A?   C*  @32654&"462""'>54&#"#"&54654.'632632 "?/B..B4C,#!8 % 8!4H=?&5@,Q"JB//B.QmTSH*TC(:"RLtY^N3sXNW3264&"4632#"&#"54632>54&#""&54>7"&4732636323274&#" ">/ !//! /YKa04&903D2*?"'*7!j) Cf-323267#"54654#"#".'#"&54>7.54>76=4'>322676546'""?/B..B/ ;g&n . JS<_8({    " :,+5    - &1S E"") // !// 8Bv#!JI0j}H_)]x3 %)[$.$9 - $)  )1[3 . GhW[264&"462"&'632#"'>54#"#"&54>7>7#""&547326""?/B..B/I  o,3=Qh$;PQ,0 )CN5#|0H#)> =*1+.(""*!//! //   ]3YJ2N1 $+B(s5A5 &: F/4  0! '4teq}264&#"4632#"&".'#"&54>7.5467654&'4632>2#"'>54.#""6?&4654&54E"?/ !//! /   & H_B  9 5dk6NN Pk6%Tb $A " "") // !//.d%(  0 P <P  - :% 88rW5`:"(tG%.l&. . $/>!3Kacn264&"4632#"2>747>5#"&546732632632#"54632654&#"#.27654#""">/ !//! X   ?*!C-  q@/%Mz/KO)s9(6iZ>494$% $""JB//B.4 !$D'Wm)@B- ?\ hd;W-F%5!" +kEU-icD '0i264&#"4632#"&&54632232>54&#"#"&54>767#"&54732632632#"'63232>32#"&'&'62654#"#".#""&54>7"654!"?/ !//! /*# 4.4)W  A~8( & WA4.D?Y_&# 5 $#H/?X G:>"0%' %".547327654&'632>72632>32#"'73272#"&5467.#"#"547>""?/! // !/06 # 1(1f+  @B6+A+/W&&iN'!<[VY6@ .)""") // !// 4)  e  ) - < +" HDH1%  ,(A'2 :(2F-(22.>iS264&"462"'6323267#"&54654&#"#".'454./> 32""?/B//Bv d+@A,+ZfK?-#%7   6""JB//B. 'B?1-+W67H? > ,(3267672#".'"&V /+vJ6 a  5 -3H 7_p+=H  hI?&n   !   !&  ) K.<[).,S :dP[)%473267>54'""&5473267#""&d $5)8&K-!>3  9& # 9$-  /F"`M.54>73274.'>3267>54'62>7.#"#"'6767"#"'6F..  '@  4 `)6/ 9 = . ?SP$Aj!T'R  3  ' " (? > : &!R   cS)$c F1KD.BB473274654&'632>7#"'67327632#".="&D t  ; xQC,|# O6#"?J! -9E! F76<  +: 7*"0X$9 :eMY 79O+! 7;45 6X$U8"2#"'&'>54.'".'63254&'632272#"'#"'6767&'63267#x Di+ 7 _+<D(%#N3 KA)> C-54'632672&#"#"'>F,A/ 5 #LI :  #6_B 5$M[Wjd) 82*   Q ; (  +p8RuG"3473267&#"#"'>7.%2&547326S0?J>59U SYKXt>2l:&#E (5xy #(   T}>'w 2  - Jr_,4&'63267.#"#"'>7.5473276J7-_,H d \ cp FZ7=*DZ !%/ . /)%  $  :gu-:H%4'#"'67.5473267#"&'62#".'6#".'632QA'b&r&  %A.? &.U ( P 3&CB =;$+!* <= 3 ^#!P5"$/4+?;A P)%>54&'632#"A`{ "= ?bnD$): D (ev_@,9'>7&#".54732$7#".,R+f _9P(O'<7-"@(vK3! '-$(&&$6W= +632#".>32#".2#".'6!/i >^%A8=>C.$R9"3 ;/%6 /!$08"%+4 06R;:%#".'#"'>7.'632654.'>232 -  $7Wf8 @5JT+'&bD '8 +;+% '3?!2S6'$m  H %A$E4$M32>7654'.5473267672"32>?#"&547.54H-S )7- .!, 9\+475z& M8faC}1.9  N  $$   D$(;)  '>d$13uGP%47327.'63267654.'632>7"67"&#"#"'467.76753 )*?: 4$ "),$.`RD#1 B^#W}2D& iL  -D /$( ,N #)e ;8x' !(  ;|KD27>7267&#".547327654&'7>3267&#".547BG{- C 9] =#8-_!9js + 8+/ G<%,: -, 6* "X Q+(Q j8;"#"'>7.547326765.5473267>3&*!%z , C1$0 >|(/,$;(!g6g & ;# # El% %4732$7.".'62w-=w."= =*&.:% ~`; "8 ,B0 V#".'632#".'632"'>54.'>3267&#""&5<>732>3272 " )(M   !>4 F  %-F1b> x-=  tyL8 8R* 4 ']   6D3!8    _%>qOk @#".'632#".'62>54'632#"'4654'#" , %;A )(&# "1#4 &By(1`') K7 @5H% B2 `  B374654&'4632>7#"'>7&#"#".'6#".'632#".'632 , B3 '>  BU`W!->^;- $3  5 %=5 3%%A   ! $). 8 I^F"-USw@ L"#   / #i$5%)ZY N".'632#".'63226767"&#""&5463327654'"&54>7 ,! #5+ .$ZS/"S S='y>C F16 Iq X* * !-_%*  '   07$ PA/ . 5i ]632#".>32#".>7.54633274654'632>2672#"#"'.'265#"5"#%.T   '#-t'Ec ! 40{! D  ;#]+4 ; :2W$"4%&lEzD$  A4/!".Y~." 4& K_Y>JU"##"'67.547327654'632>72#"&54.'6#".'632#".'632>3%ZS?h< /,2!? / H "]C &6G 5%=< 4%%AdDM - C%--19   / 7c /#]$4%Uz f#".'632#".'63247327.'.54673274.'>3267672#".'"& . ,@E (  % 0/s P/\  5 /1H "u h3>K  kF>47([)/ %K  * %  !* $& .=./N!)--R:/'3="'>7##"'>54&'632272#".'632#".'632CMa: H;0&Z| 0*N.L/tiiIV /$&8< -( )(o^?ETAI 0 e^>D0 &9J54_ I#".'632#".'632>54'#"'>54.'632672#"#" 4 $;5 7 &CPCw6_Iv 9 *> RL/9X" . "b!3"&;093A  *  S?^(4@$473267>54'""&5473267#""2#".'62".'6S %5)8&K-!>1  &: . ((*/"0% # :$- / /93 vOZf.54>73274&'>32>7>54'62>7"&#"#"'6767"#"'6".'632#".'6329:/  07  4 S)6/ 8@"#-;E?Bhd&  1#@E  -" )EI  4 H+  '? > : &"Q  PS9$b F1K 7+U =,Gu ,8E%4732>7"&#".'632#".'632#".'632632#".s/:?[^B . ,?: +$-- =3"-O!,0* Gt UeDfej#F8(e(; %F> 2 &82>I%"'>7.54>332672#".'#".'632#".'6322@Se[.Ru+ -C JFc/!N>  4%'779% $:$;_]#-  - #X..&6M`k4 ' d, "+MFR]473274654&'632>7#"'67327632#".5465"&%#".'632#".'632"  s  : yQB-|#R2$#?I! -.?$L26 5%:0 0# %A: +: 7)#5R%::eRT 8 . O*!  53)" 7 .g!0"R  -:2#".'62".'62#"&"&'654.'6".'632\'; 0 "E/# D :  4%,^/7#48< 42o $2>H-| U#".'632#".'632"'>54&'632272#"'#"'2>7&'63267# /$'8< -( *@ Dh+ 7  ^,:D(%$O3  '*( !7&B08H,8 0&^$5#0tK 26r<#!31^_""+<OA=^1^<GS"&547327654'#"'>54'632672&#"#"'>".'632#".'63259=F5 #RC*: #6`B~5"M[Wjd 1#A>  -! )E' 8*  Q ; ) " *q9G 7+\=,7 "8F#".'6322#".'6#".'63274'632#"'>%632#". / -(50 , - 1#+[# $P 1YmO [d9 =6 2T 1&.#80"76dA #ilI!{U4$(:@i"3>J473267&#"#"'>7.%2&547326".'632#".'632A0?J>59T SYK Xt>2l:'#D (5xE 0 #>>  ,! *Br #(   T}?'w 2 -  6([;)k 8#".'632#".'632'".'#"'64&'6320(+CI! ,!&FIg-$  0'6 (g)00-1": D1%-.?Z*LuJ@,E_ C#".'6322#".'64&'63267.#"#"'>7.5473276 0 $($|%, 3#8-]/H d \ cq =@4 (  &$"%*;1+ ?.H 6;` ,  4jZ ):".'632#".'632&#"&54732$'#.547326x ,! #5* .$Z+FAa>FZ 6<+DZ !&/* ". /  /)&  $  5% J#".'632#".'632267&5473267#".'#"'6767.'6 1%$554% R` j%3%A$8)Y1-jW7a/EK6!/ ^ ' d) QF!('! 3 1M(<;85N#3"5U%3u CO]2#".'62#".'4'#"'67.5473267#"&'62#".'6#".'63256 ,.$# . A( d&r& $A3;  &.T. O 3& CB[$) 9 1 =;$+ !+ ?: 3 ^# P5")@4+?;:$- ,#".'632#".'632>54&'632#" + (5= ) <`{ #= ?bnD 16%Z)7): C (ev_@P $5#".'632#".'632632#"."'>54'632 5$=< 3%%AA@TB C" 0#^$5%>A-4>U"$ @@|&b=HS%4654&'>32>54'>262323267#".".'632#".'632 >1Z1?/n#@0q1N1C$0#BD -! *C/*83"7 (! ?,(0C( ( <5P 8,^(<*T&2=#"'>7"&#".54>3326%#".'632#".'632#F )y|q-0)92(  4%:; 0#&?0 l]/O( 3 P - a!0! +74732>32".#""&%#".'632#".'632 SU7BJb04 9XL =QD{0(+CH" ,!&G(GF'7"&#"#".'36=.5472#".'6#"54>7 1 #AB  ,!*C7.a 5!4'( ^$ ,'G YB/a$s +$ E0% Q'+ 7*U;)z A; 3 )-XZ#5="<* )`[6"#3P"(7y  M:4C =2#".'62#".'6>7#".54732$7#".4 - ; . {,R*g e:R'N'< 7-"@C#*4 0 (wK5! &-#(&&$6W_ #1A#".'6322#".'6'632#".632#".2#".'6 ,8: -!"/h 7V%A8<>C.%Q9"&!* " #.  ;/"+/!$08"%+4 A2# @#".'632#".'632#".'".547327654&'63267& 5$=4 3$%AH|   V- %2"}9j / $h$5%l zA ( J ,P =:>%6; O".'632#".'632#".'#"'>7.'632654.'>32$$55 )% 6.  #8We8 >5JT+'&cD '9 :"<` $b%3~+$ &4?!2S6'$k!  I \/F-t d".'632#".'63232>7654'.5473267672"327#"&547.54 ,!#5.-$Y-S )7-  .!, 74<5&58M8faC&-* ",   P $$  G%:)! )>d$ 0)z Z2#".'2#".'64732>7.'632>7#"'>74#"#"&'.'.h:/ . #3 /' 6K   #2//D."D0z Q'I]2z#1 #)   , #)*  K 0^!q/`2604)/"`T E632#".632#".47326767.#".54732767&#".%#$/W '# 1&!> /SU (.3.-B$".%&C - 2t"+ 5 0#jI" 0f$ f#".'632#".'63&547326767#"&547326765&#".473267.#" -" +75 0#%(/K *! !(M     #.E#H'!4I ,#X!0 ,( h ' P.+'0  6h \ ,M#".'6322#".'6.5473267"'>7&#".54732$7 0 $($|%,3#%    )o$D&w" %2&  %<1 $!&*!  -d% . 4  3Q#".'632#".'632&54654.'632#"&%#"'>54&54654'632  # %&E #"7d 2  0FM: CW' , $E [% *!J+-!xJ $7*P!KG}P:0_\G+6 6k4 V:M ,O#".'632#".'6324.'632>%.5467654.'>32> + (4< ) 7"&5467654.'632e 0*8F ,!*''EE,FM YF   E0])7 !'&2 AM :X5RKa GP632#".7>32#".".54.'632>72&#"%67"6G%#%0W &$ 0  !7C6) W $#HnqI O$"+%'G"2P1+4 % -S   R >#".'6322#".'6"'$""&'4654&'632672 / -(51 &"0+6 "/!SJ ^txJ 0'." -H n '! T., ) )8jtA+~ `m2#".'6".'63247327.'6326754.'632>7"67&#"#"'465.7674654'a!: 9!) ;) '=  (-@: 3& !,$.`SD"1* A` P1 ^~#*0 $$!  jL  CD1% ( ,M $)e 8z) "'  ; : KwEQ\27>7267&#".547327654&'4>3267&#".547%#".'632#".'632BG{. B 7_ @"8-_!9it + 8+/2  5 $>= 4$%A G;&,: -, 6) "XQ+(` / $]$5%S M#".'6322#".'6"#"'>7.547326765.5473267>7& / -)50 ,'#%z ,.0 @|).,$; DM 1'/"76g#& B# $  =  ) l q #0#".'632#".'6324732$7&".'632e 0*8F ,! *'X-=w."k C5!.9&60])7 !Y> ~` H#H +B0M264&"462""'>54.'>3267&#""&5<>732>3272"">.B//Ba F  %-F1b> x-=  tyL9""JB//B.]   6D3!8    _%>qOk:264&"462"&>54'632#"'4654'#"""?/B//B/e "1#4 &By("") // !//K7 @5H% B2 `  B374654&'4632>7#"'>7&#"#".'68""?/B..BK , B3 '>  BU`W!->^;- $<""JB//B.]   ! $). 8 I^F"-USw@ L"#  )ZuJ264&"462"&26767"&#""&5463327654'"&54>75""?/B//B//"S S='y>C F16 Iq X* 7"") // !//A%*  '   07$ PA/ . 5q Y2654&#"4632#"&>7.54633274654'632>2672#"#"'.'265#"@"?/! // !/t'Ec ! 40{! D  ;#]+4 ; :23") // !//nEzD$  A4/!".Y~." 4& K_^ T32654&"4632#"&"##"'67.547327654'632>72#"&54.'62"?/! // !/4>3%ZS?h< /,2!? / H "]C &6G"*!//! //fdDM - C%--19   / 7U^264&"4632#"47327.'.54673274.'>3267672#".'"&3"">/ !//!  0/s P/\  5 /1H "u h3>K  kF>C""JB//B.%K  * %  !* $& .=./N!)--R:/9264&"4632#""'>7##"'>54&'6322722""?/! // !Ma: H;0&Z| 0*N.L/tiiIG""JB//B/(o^?ETAI 0 e^>4`F264&"4632#"&>54'#"'>54.'632672#"#"K""?/! // !/0PCw6_Iv 9 *> RL/9X""") // !//&;093A  *  S?k<264&"4632#"&473267>54'""&5473267#""=""?/! // !/< %5)8&K-!>1  ,""*!//! //0% # :$- / ta264&"4632#".54>73274&'>32>7>54'62>7"&#"#"'6767"#"'6<""?/! // !9:/  07  4 S)6/ 8@"#-;E?Bhd& 5""JB//B/  4 H+  '? > : &"Q  PS9$b F1KGu&2?264&"4632#"4732>7"&#".'632632#"."">/ !//! ~/:?[^B =3"-O!,0* GJ""JB//B. UeDfej#Fu> 2 &8G3264&"4632#"&"'>7.54>332672#".'!">/ !//! /7@Se[.Ru+ -C JFc/!NZ""*!//! //$;_]#-  - #X..&6M`k"+YX264&"462"&473274654&'632>7#"'67327632#".5465"&Q""?/B//B/  s  : yQB-|#R2$#?I! -.?$L26"") // !// +: 7)#5R%::eRT 8 . O*!  53)" 7R +82654&"4632#"&2#"&"&'654.'6".'632C""?/! // !/0D :  4%,^e") // !//< 42o $2>H-P264&"462"&"'>54&'632272#"'#"'2>7&'63267#4"">.B//B.> Dh+ 7  ^,:D(%$O3  '*( !7&B08H,L"") // !//0tK 26r<#!31^_""+<OA=^1bN264&"4632#""&547327654'#"'>54'632672&#"#"'><""?/! // !9=F5 #RC*: #6`B~5"M[Wjd#""JB//B. 8*  Q ; ) " *q973A264&"462"&#".'63274'632#"'>%632#".C""?/B//B/- 1#+[# $P 1YmO [d9 =6 2[""*!//! //0"76dA #ilI!{U4$(:@h4E264&"462"&473267&#"#"'>7.%2&547326J""?/B//B/0?J>59T SYK Xt>2l:'#D (5x)""*!//! // #(   T}?'w 2 - k62654&"4632#"&'".'#"'64&'632""?/! // !/eIg-$  0") // !//:1": D1%-.?Z*LuJ@,EeA3264&"4632#"&4&'63267.#"#"'>7.54732766"?/! // !/8-]/H d \ cq =@4 (  &""*!//! //1+ ?.H 6;` ,  4jp&72654&"4632#"&#"&54732$'#.547326""?/! // ! FAa>FZ 6<+DZ !&/1"JB//B. /  /)&  $  5%F264&"462"&267&5473267#".'#"'6767.'6'""?/B..B/ j%3%A$8)Y1-jW7a/EK6!/ e""*!//! //QF!('! 3 1M(<;85N#3"5U%3uAM[264&#"4632#"&4'#"'67.5473267#"&'62#".'6#".'632"?/ !//! /A( d&r& $A3;  &.T. O 3& CB("") // !// =;$+ !+ ?: 3 ^# P5")@4+?;:$-'264&"462"&>54&'632#"4"">.B//B.,`{ #= ?bnD 0"") // !//): C (ev_@P0264&"4632#"'632#"."'>54'632$""?/! // !A@TB C"""JB..B/A.4>U"$ @@}&]:BN%4654&'>32>54'>2323267#".264&"4632#"& ?2Z0>/n#@0q0N1C$""?/! // !//*8:K (! ?,(&C( ( <5S""*!//! //U'/9#"'>7"&#".54>732>264&"462"&#G )y|q-0)92'""?/B//B/0 l]/O( 3  Y"") // !//6264&"4632#"&4732>32".#""&"">/ !//! /: SU7AJb13 /eQE4 >PD""*!//! //wGF'7"&#"#".'36=.5472#".'6#"54>7#""?/B//B/.a 5!4'( ^$ ,'G YB/a$s +$ E0% Q'7"") // !//m A; 3 )-XZ#5="<* )`[6"#3P"(7y  M:4S:264&"4632#"&>7#".54732$7#".b"">/ !//! /~,R*g e:R'N'< 7-"@""*!//! // (wK5! &-#(&&$6Wa!/?264&"4632#"&'632#".632#".2#".'6"">/ !//! /"/h 7V%A8<>C.%Q9""""*!//! //B ;/"+/!$08"%+4 A2#;264&"4632#"#".'".547327654&'63267&"">/ !//! NH|   V- %2"}9j""JB//B/6 zA ( J ,P =:>%6;L264&"4632#"&#".'#"'>7.'632654.'>32K""?/! // !/.  #8We8 >5JT+'&cD '9 :"<^"") // !//m+$ &4?!2S6'$k!  I \/F- d3264&"4632#"&32>7654'.5473267672"327#"&547.547"&/ !//! /0-S )7-  .!, 74<5&58M8faC&-<"!//! //  P $$  G%:)! )>d$ 0) [264&#"4632#"&4732>7.'632>7#"'>74#"#"&'.'.W"&/ !//! / 6K   #2//D."D0z Q'I]2>" // !//  , #)*  K 0^!q/`2604)/"`_@264&"462"&47326767.#".54732767&#"."">.B//B.&!> /SU (.3.-!"") // !//? - 2t"+ 5 0#jI" 0f$^264&"462"&547326767#"&547326765&#".473267.#"<""?/B//BmK *! !(M     #.E#H'!4_""KB//B.%,( h ' P.+'0  6h ])J264&"4632#"&%.5473267"'>7&#".54732$7B"">/ !//! /%    )o$D&w" %2&  %<1""*!//! // !  -d% . 4  0N3264&"4632#"&&54654.'632#"&%#"'>54&54654'632/"&/ !//! / 2  0FM: CW' , $E P"!//! //xJ $7*P!KG}P:0_\G+6 6k4 V:X'J264&"4632#"4.'632>%.5467654.'>32>""?/! // ! B#NNm T`O   C ""JB//B/' <K/]C-   v  .* Q9d62654&"4632#"&>7"&5467654.'632""?/! // !/'EE,FM YF   E%"*!//! //'&2 AM :X5RKvBK264&"4632#"&".54.'632>72&#"%67"6L""&/ !//! /  !7C6) W $#HnqI &"!//! //E"2P1+4 % -S   R;3264&"4632#"&"'$""&'4654&'632672J"?/! // !/"0+6 "/!SJ ^txZ""*!//! //H n '! T., ) )8jtA+Zg264&"462"47327.'6326754.'632>7"67&#"#"'465.7674654';"">.B//B  (-@: 3& !,$.`SD"1* A` P1 ^G""JB//B/  jL  CD1% ( ,M $)e 8z) "'  ; : KY264&"4632#"&27>7267&#".547327654&'4>3267&#".547C""?/! // !/BG{. B 7_ @"8-_!9it + 8+/B""*!//! //9 G;&,: -, 6) "XQ+(SJ264&"4632#"&"#"'>7.547326765.5473267>7&5""?/! // !/#%z ,.0 @|).,$; DZ""*!//! //6g#& B# $  =  ) lu "/264&#"4632#"&4732$7.".'632"&/ !//! /-=w."= C5!.9&&" // !// ~` ;"H +$^-E"  #`   O B#X!<^t/n   5 DM  "   0. >y t(C)2003-2007 Das Ende der Wildnis, (C)2008-2009 Classical Letter Project, All rights reserved.(C)2003-2007 Das Ende der Wildnis, (C)2008-2009 Classical Letter Project, All rights reserved.AntiqueAntiqueAntiqueAntiqueFontForge : GL-Antique : 24-7-2009FontForge : GL-Antique : 24-7-2009GL-AntiqueGL-AntiqueVersion 20090722 Version 20090722 GL-AntiqueGL-AntiqueClassical Letter ProjectClassical Letter Projecthttp://gutenberg.sourceforge.jphttp://gutenberg.sourceforge.jp- ARANO Font License (by Das Ende der Wildnis) 1. Redistribution and use, with or without modification, are permitted provided that above copyright notice and the following conditions in the documentation and/or other materials. 2. Any express or warranties are disclimed. In no event shall auther or restributers be liable for any damages. 3. The name of the auther may not be used to endorse or promote products derived from this font - Gutenberg Labo License (by Classical Letter Project) This distribution is free for personal and commercial use. Redistribution in font binary/source files, with or without modification, are permitted provided that must reproduce the following disclaimer in the distribution: THIS FONT SOFTWARE IS PROVIDED BY CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHAL- ARANO Font License (by Das Ende der Wildnis) 1. Redistribution and use, with or without modification, are permitted provided that above copyright notice and the following conditions in the documentation and/or other materials. 2. Any express or warranties are disclimed. In no event shall auther or restributers be liable for any damages. 3. The name of the auther may not be used to endorse or promote products derived from this font - Gutenberg Labo License (by Classical Letter Project) This distribution is free for personal and commercial use. Redistribution in font binary/source files, with or without modification, are permitted provided that must reproduce the following disclaimer in the distribution: THIS FONT SOFTWARE IS PROVIDED BY CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALAll Typographic FeaturesFonctions typographiquesAlle typografischen MglichkeitenFunzioni TipograficheAlle typografische kenmerkenVertical SubstitutionSubstitution VerticaleVerticale vervangingAll Type FeaturesToutes fonctions typographiquesAlle AuszeichnungsartenTutte le FunzioniAlle typekenmerkenVertical SubstitutionSubstitution verticalVerticale vervanging2"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~twodotenleader exclamdbluni203Duni2047uni2048uni2049uni2307SF100000uni2501SF110000uni2503uni2504uni2505uni2506uni2507uni2508uni2509uni250Auni250BSF010000uni250Duni250Euni250FSF030000uni2511uni2512uni2513SF020000uni2515uni2516uni2517SF040000uni2519uni251Auni251BSF080000uni251Duni251Euni251Funi2520uni2521uni2522uni2523SF090000uni2525uni2526uni2527uni2528uni2529uni252Auni252BSF060000uni252Duni252Euni252Funi2530uni2531uni2532uni2533SF070000uni2535uni2536uni2537uni2538uni2539uni253Auni253BSF050000uni253Duni253Euni253Funi2540uni2541uni2542uni2543uni2544uni2545uni2546uni2547uni2548uni2549uni254Auni254Buni254Cuni254Duni254Euni254FSF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000uni256Duni256Euni256Funi2570uni2571uni2572uni2573uni2574uni2575uni2576uni2577uni2578uni2579uni257Auni257Buni257Cuni257Duni257Euni257Fupblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595uni2596uni2597uni2598uni2599uni259Auni259Buni259Cuni259Duni259Euni259Funi25EFuni2616uni2617uni2618uni2620uni2622uni2623uni2625uni2626uni2627uni2628uni2629uni262Funi2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637spadeuni2661uni2662clubuni2664heartdiamonduni2667uni2668uni2680uni2681uni2682uni2683uni2684uni2685uni268Auni268Buni268Cuni268Duni268Euni268Funi269Buni269Cuni2719uni271Auni271Buni271Cuni271Duni271Euni271Funi2720uni2721uni273Funi2740uni2E18uni2E2Euni3000uni3001uni3002uni3004uni3013uni3030uni3031uni3032uni3033uni3034uni3035uni303Buni303Cuni303Duni3041uni3042uni3043uni3044uni3045uni3046uni3047uni3048uni3049uni304Auni304Buni304Cuni304Duni304Euni304Funi3050uni3051uni3052uni3053uni3054uni3055uni3056uni3057uni3058uni3059uni305Auni305Buni305Cuni305Duni305Euni305Funi3060uni3061uni3062uni3063uni3064uni3065uni3066uni3067uni3068uni3069uni306Auni306Buni306Cuni306Duni306Euni306Funi3070uni3071uni3072uni3073uni3074uni3075uni3076uni3077uni3078uni3079uni307Auni307Buni307Cuni307Duni307Euni307Funi3080uni3081uni3082uni3083uni3084uni3085uni3086uni3087uni3088uni3089uni308Auni308Buni308Cuni308Duni308Euni308Funi3090uni3091uni3092uni3093uni3094uni3095uni3096uni3099uni309Auni309Buni309Cuni309Duni309Euni309Funi30A1uni30A2uni30A3uni30A4uni30A5uni30A6uni30A7uni30A8uni30A9uni30AAuni30ABuni30ACuni30ADuni30AEuni30AFuni30B0uni30B1uni30B2uni30B3uni30B4uni30B5uni30B6uni30B7uni30B8uni30B9uni30BAuni30BBuni30BCuni30BDuni30BEuni30BFuni30C0uni30C1uni30C2uni30C3uni30C4uni30C5uni30C6uni30C7uni30C8uni30C9uni30CAuni30CBuni30CCuni30CDuni30CEuni30CFuni30D0uni30D1uni30D2uni30D3uni30D4uni30D5uni30D6uni30D7uni30D8uni30D9uni30DAuni30DBuni30DCuni30DDuni30DEuni30DFuni30E0uni30E1uni30E2uni30E3uni30E4uni30E5uni30E6uni30E7uni30E8uni30E9uni30EAuni30EBuni30ECuni30EDuni30EEuni30EFuni30F0uni30F1uni30F2uni30F3uni30F4uni30F5uni30F6uni30F7uni30F8uni30F9uni30FAuni30FBuni30FCuni30FDuni30FEuni30FFuni31F0uni31F1uni31F2uni31F3uni31F4uni31F5uni31F6uni31F7uni31F8uni31F9uni31FAuni31FBuni31FCuni31FDuni31FEuni31FFuni32D0uni32D1uni32D2uni32D3uni32D4uni32D5uni32D6uni32D7uni32D8uni32D9uni32DAuni32DBuni32DCuni32DDuni32DEuni32DFuni32E0uni32E1uni32E2uni32E3uni32E4uni32E5uni32E6uni32E7uni32E8uni32E9uni32EAuni32EBuni32ECuni32EDuni32EEuni32EFuni32F0uni32F1uni32F2uni32F3uni32F4uni32F5uni32F6uni32F7uni32F8uni32F9uni32FAuni32FBuni32FCuni32FDuni32FEuni3300uni3301uni3302uni3303uni3304uni3305uni3306uni3307uni3308uni3309uni330Auni330Buni330Cuni330Duni330Euni330Funi3310uni3311uni3312uni3313uni3314uni3315uni3316uni3317uni3318uni3319uni331Auni331Buni331Cuni331Duni331Euni331Funi3320uni3321uni3322uni3323uni3324uni3325uni3326uni3327uni3328uni3329uni332Auni332Buni332Cuni332Duni332Euni332Funi3330uni3331uni3332uni3333uni3334uni3335uni3336uni3337uni3338uni3339uni333Auni333Buni333Cuni333Duni333Euni333Funi3340uni3341uni3342uni3343uni3344uni3345uni3346uni3347uni3348uni3349uni334Auni334Buni334Cuni334Duni334Euni334Funi3350uni3351uni3352uni3353uni3354uni3355uni3356uni3357uni4DC0uni4DC1uni4DC2uni4DC3uni4DC4uni4DC5uni4DC6uni4DC7uni4DC8uni4DC9uni4DCAuni4DCBuni4DCCuni4DCDuni4DCEuni4DCFuni4DD0uni4DD1uni4DD2uni4DD3uni4DD4uni4DD5uni4DD6uni4DD7uni4DD8uni4DD9uni4DDAuni4DDBuni4DDCuni4DDDuni4DDEuni4DDFuni4DE0uni4DE1uni4DE2uni4DE3uni4DE4uni4DE5uni4DE6uni4DE7uni4DE8uni4DE9uni4DEAuni4DEBuni4DECuni4DEDuni4DEEuni4DEFuni4DF0uni4DF1uni4DF2uni4DF3uni4DF4uni4DF5uni4DF6uni4DF7uni4DF8uni4DF9uni4DFAuni4DFBuni4DFCuni4DFDuni4DFEuni4DFFuniE000uniE001uniE002uniE003uniE004uniE005uniE006uniE007uniE008uniE009uniE00AuniE00BuniE00CuniE00DuniE00EuniE010uniE011uniE012uniE013uniE014uniE015uniE016uniE017uniE018uniE019uniE01AuniE01BuniE01CuniE01DuniE01EuniE020uniE021uniE022uniE023uniE024uniE025uniE026uniE027uniE028uniE029uniE030uniE031uniE032uniE033uniE034uniE035uniE036uniE037uniE038uniE039uniE03AuniE03BuniE03CuniE03DuniE03EuniE03FuniE040uniE041uniE042uniE043uniE044uniE045uniE046uniE047uniE048uniE049uniE04AuniE04BuniE050uniE051uniE052uniE053uniE054uniE055uniE056uniE057uniE058uniE059uniE05AuniE05BuniE05CuniE05DuniE05EuniE05FuniE060uniE061uniE062uniE063uniE064uniE065uniE066uniE067uniE068uniE069uniE06AuniE06BuniE06CuniE06DuniE06EuniE06FuniE070uniE071uniE072uniE073uniE074uniE075uniE076uniE077uniE078uniE079uniE07AuniE080uniE081uniE082uniE083uniE084uniE085uniE086uniE087uniE088uniE089uniE08AuniE08BuniE08CuniE08DuniE08EuniE08FuniE090uniE091uniE092uniE093uniE094uniE095uniE096uniE097uniE098uniE099uniE09AuniE09BuniE09CuniE09DuniE09EuniE09FuniE0A0uniE0A1uniE0A2uniE0A3uniE0B0uniE0B1uniE0B2uniE0B3uniE0B4uniE0B5uniE0B6uniE0B7uniE0B8uniE0B9uniE0BAuniE0BBuniE0BCuniE0BDuniE0BEuniE0BFuniE0C0uniE0C1uniE0C2uniE0C3uniE0C4uniE0C5uniE0C6uniE0C7uniE0C8uniE0C9uniE0CAuniE0CBuniE0CCuniE0CDuniE0CEuniE0CFuniE0D0uniE0D1uniE0D2uniE0D3uniE0D4uniE0D5uniE0D6uniE0D7uniE0D8uniE0D9uniE0DAuniE0DBuniE0DCuniE0DDuniE0DEuniE0DFuniE0E0uniE0E1uniE0E2uniE0E3uniE0E4uniE0E5uniE0E6uniE0E7uniE0E8uniE0E9uniE0EAuniE0EBuniE0ECuniE0EDuniE0EEuniE0EFuniE0F0uniE0F1uniE0F2uniE0F3uniE0F4uniE0F5uniE0F6uniE0F7uniE0F8uniE0F9uniE0FAuniE0FBuniE0FCuniE0FDuniE0FEuniE0FFuniE100uniE101uniE102uniE103uniE104uniE105uniE106uniE107uniE108uniE109uniE10AuniE10BuniE10CuniE10DuniE10EuniE10FuniE110uniE111uniE112uniE113uniE114uniE115uniE116uniE117uniE118uniE119uniE11AuniE11BuniE11CuniE11DuniE11EuniE11FuniE120uniE121uniE122uniE123uniE124uniE125uniE126uniE127uniE130uniE131uniE132uniE133uniE134uniE135uniE136uniE137uniE138uniE139uniE13AuniE13BuniE13CuniE13DuniE13EuniE13FuniE140uniE141uniE142uniE143uniE144uniE145uniE146uniE147uniE148uniE149uniE14AuniE14BuniE14CuniE14DuniE14EuniE14FuniE150uniE151uniE152uniE153uniE154uniE155uniE156uniE157uniE158uniE159uniE15AuniE160uniE161uniE162uniE163uniE164uniE165uniE166uniE167uniE168uniE169uniE16AuniE16BuniE16CuniE16DuniE16EuniE16FuniE170uniE171uniE172uniE173uniE180uniE181uniE182uniE183uniE184uniE185uniE186uniE187uniE188uniE189uniE18AuniE18BuniE18CuniE18DuniE18EuniE18FuniE190uniE191uniE192uniE193uniE194uniE195uniE196uniE197uniE198uniE199uniE19AuniE19BuniE19CuniE19DuniE19EuniE19FuniE1A0uniE1A1uniE1A2uniE1A3uniE1A4uniE1A5uniE1A6uniE1A7uniE1A8uniE1A9uniE1AAuniE1ABuniE1ACuniE1ADuniE1AEuniE1AFuniE1B0uniE1B1uniE1B2uniE1B3uniE1B4uniE1B5uniE1B6uniE1B7uniE1B8uniE1B9uniE1BAuniE1BBuniE1BCuniE1BDuniE1BEuniE1BFuniE1C0uniE1C1uniE1C2uniE1C3uniE1C4uniE1C5uniE1C6uniE1C7uniE1C8uniE1C9uniE1CAuniE1CBuniE1CCuniE1CDuniE1CEuniE1CFuniE1D0uniE1D1uniE1D2uniE1D3uniE1D4uniE1D5uniE1D6uniE1D7uniE1D8uniE1D9uniE1DAuniE1DBuniE1DCuniE1DDuniE1DEuniE1DFuniFE11uniFE12uniFE19uniFE30uniFF01uniFF1FuniFF61uniFF62uniFF63uniFF64uniFF65uniFF66uniFF67uniFF68uniFF69uniFF6AuniFF6BuniFF6CuniFF6DuniFF6EuniFF6FuniFF70uniFF71uniFF72uniFF73uniFF74uniFF75uniFF76uniFF77uniFF78uniFF79uniFF7AuniFF7BuniFF7CuniFF7DuniFF7EuniFF7FuniFF80uniFF81uniFF82uniFF83uniFF84uniFF85uniFF86uniFF87uniFF88uniFF89uniFF8AuniFF8BuniFF8CuniFF8DuniFF8EuniFF8FuniFF90uniFF91uniFF92uniFF93uniFF94uniFF95uniFF96uniFF97uniFF98uniFF99uniFF9AuniFF9BuniFF9CuniFF9DuniFF9EuniFF9Fu1F000u1F001u1F002u1F003u1F004u1F005u1F006u1F007u1F008u1F009u1F00Au1F00Bu1F00Cu1F00Du1F00Eu1F00Fu1F010u1F011u1F012u1F013u1F014u1F015u1F016u1F017u1F018u1F019u1F01Au1F01Bu1F01Cu1F01Du1F01Eu1F01Fu1F020u1F021u1F022u1F023u1F024u1F025u1F026u1F027u1F028u1F029u1F02Au1F02Bu1F030u1F031u1F032u1F033u1F034u1F035u1F036u1F037u1F038u1F039u1F03Au1F03Bu1F03Cu1F03Du1F03Eu1F03Fu1F040u1F041u1F042u1F043u1F044u1F045u1F046u1F047u1F048u1F049u1F04Au1F04Bu1F04Cu1F04Du1F04Eu1F04Fu1F050u1F051u1F052u1F053u1F054u1F055u1F056u1F057u1F058u1F059u1F05Au1F05Bu1F05Cu1F05Du1F05Eu1F05Fu1F060u1F061u1F062u1F063u1F064u1F065u1F066u1F067u1F068u1F069u1F06Au1F06Bu1F06Cu1F06Du1F06Eu1F06Fu1F070u1F071u1F072u1F073u1F074u1F075u1F076u1F077u1F078u1F079u1F07Au1F07Bu1F07Cu1F07Du1F07Eu1F07Fu1F080u1F081u1F082u1F083u1F084u1F085u1F086u1F087u1F088u1F089u1F08Au1F08Bu1F08Cu1F08Du1F08Eu1F08Fu1F090u1F091u1F092u1F093 uni2025.vert uni2026.vert uni3001.vert uni3002.vert uni3013.vert uni3031.vert uni3032.vert uni3033.vert uni3034.vert uni3035.vert uni3041.vert uni3043.vert uni3045.vert uni3047.vert uni3049.vert uni3063.vert uni3083.vert uni3085.vert uni3087.vert uni308E.vert uni3095.vert uni3096.vert uni30A1.vert uni30A3.vert uni30A5.vert uni30A7.vert uni30A9.vert uni30C3.vert uni30E3.vert uni30E5.vert uni30E7.vert uni30EE.vert uni30F5.vert uni30F6.vert uni30FC.vert uni31F0.vert uni31F1.vert uni31F2.vert uni31F3.vert uni31F4.vert uni31F5.vert uni31F6.vert uni31F7.vert uni31F8.vert uni31F9.vert uni31FA.vert uni31FB.vert uni31FC.vert uni31FD.vert uni31FE.vert uni31FF.vert uni3300.vert uni3301.vert uni3302.vert uni3303.vert uni3304.vert uni3305.vert uni3306.vert uni3307.vert uni3308.vert uni3309.vert uni330A.vert uni330B.vert uni330C.vert uni330D.vert uni330E.vert uni330F.vert uni3310.vert uni3311.vert uni3312.vert uni3313.vert uni3314.vert uni3315.vert uni3316.vert uni3317.vert uni3318.vert uni3319.vert uni331A.vert uni331B.vert uni331C.vert uni331D.vert uni331E.vert uni331F.vert uni3320.vert uni3321.vert uni3322.vert uni3323.vert uni3324.vert uni3325.vert uni3326.vert uni3327.vert uni3328.vert uni3329.vert uni332A.vert uni332B.vert uni332C.vert uni332D.vert uni332E.vert uni332F.vert uni3330.vert uni3331.vert uni3332.vert uni3333.vert uni3334.vert uni3335.vert uni3336.vert uni3337.vert uni3338.vert uni3339.vert uni333A.vert uni333B.vert uni333C.vert uni333D.vert uni333E.vert uni333F.vert uni3340.vert uni3341.vert uni3342.vert uni3343.vert uni3344.vert uni3345.vert uni3346.vert uni3347.vert uni3348.vert uni3349.vert uni334A.vert uni334B.vert uni334C.vert uni334D.vert uni334E.vert uni334F.vert uni3350.vert uni3351.vert uni3352.vert uni3353.vert uni3354.vert uni3355.vert uni3356.vert uni3357.vert uniE00E.vert uniE010.vert uniE011.vert uniE020.vert uniE021.vert uniE022.vert uniE023.vert uniE024.vert uniE025.vert uniE026.vert uniE027.vert uniE028.vert uniE029.vert uniE080.vert uniE081.vert uniE082.vert uniE083.vert uniE084.vert uniE085.vert uniE086.vert uniE087.vert uniE088.vert uniE089.vert uniE08A.vert uniE08B.vert uniE08C.vert uniE08D.vert uniE08E.vert uniE08F.vert uniE090.vert uniE091.vert uniE092.vert uniE093.vert uniE094.vert uniE095.vert uniE096.vert uniE097.vert uniE098.vert uniE099.vert uniE09A.vert uniE09B.vert uniE09C.vert uniE09D.vert uniE09E.vert uniE09F.vert uniE0A0.vert uniE0A1.vert uniE0A2.vert uniE0A3.vert uniE0B0.vert uniE0B1.vert uniE0B2.vert uniE0B3.vert uniE0B4.vert uniE0B5.vert uniE0B6.vert uniE0B7.vert uniE0B8.vert uniE0B9.vert uniE0BA.vert uniE0BB.vert uniE0BC.vert uniE0BD.vert uniE0BE.vert uniE0BF.vert uniE0C0.vert uniE0C1.vert uniE0C2.vert uniE0C3.vert uniE0C4.vert uniE0C5.vert uniE0C6.vert uniE0C7.vert uniE0C8.vert uniE0C9.vert uniE0CA.vert uniE0CB.vert uniE0CC.vert uniE0CD.vert uniE0CE.vert uniE0CF.vert uniE0D0.vert uniE0D1.vert uniE0D2.vert uniE0D3.vert uniE0D4.vert uniE0D5.vert uniE0D6.vert uniE0D7.vert uniE0D8.vert uniE0D9.vert uniE0DA.vert uniE0DB.vert uniE0DC.vert uniE0DD.vert uniE0DE.vert uniE0DF.vert uniE0E0.vert uniE0E1.vert uniE0E2.vert uniE0E3.vert uniE0E4.vert uniE0E5.vert uniE0E6.vert uniE0E7.vert uniE0E8.vert uniE0E9.vert uniE0EA.vert uniE0EB.vert uniE0EC.vert uniE0ED.vert uniE0EE.vert uniE0EF.vert uniE0F0.vert uniE0F1.vert uniE0F2.vert uniE0F3.vert uniE0F4.vert uniE0F5.vert uniE0F6.vert uniE0F7.vert uniE0F8.vert uniE0F9.vert uniE0FA.vert uniE0FB.vert uniE0FC.vert uniE0FD.vert uniE0FE.vert uniE0FF.vert uniE100.vert uniE101.vert uniE102.vert uniE103.vert uniE104.vert uniE105.vert uniE106.vert uniE107.vert uniE108.vert uniE109.vert uniE10A.vert uniE10B.vert uniE10C.vert uniE10D.vert uniE10E.vert uniE10F.vert uniE160.vert uniE161.vert uniE162.vert uniE163.vert uniE164.vert uniE165.vert uniE166.vert uniE167.vert uniE168.vert uniE169.vert uniE16A.vert uniE16B.vert uniE16C.vert uniE16D.vert uniE16E.vert uniE16F.vert uniE170.vert uniE171.vert uniE172.vert uniE173.vert uniE180.vert uniE181.vert uniE182.vert uniE183.vert uniE184.vert uniE185.vert uniE186.vert uniE187.vert uniE188.vert uniE189.vert uniE18A.vert uniE18B.vert uniE18C.vert uniE18D.vert uniE18E.vert uniE18F.vert uniE190.vert uniE191.vert uniE192.vert uniE193.vert uniE194.vert uniE195.vert uniE196.vert uniE197.vert uniE198.vert uniE199.vert uniE19A.vert uniE19B.vert uniE19C.vert uniE19D.vert uniE19E.vert uniE19F.vert uniE1A0.vert uniE1A1.vert uniE1A2.vert uniE1A3.vert uniE1A4.vert uniE1A5.vert uniE1A6.vert uniE1A7.vert uniE1A8.vert uniE1A9.vert uniE1AA.vert uniE1AB.vert uniE1AC.vert uniE1AD.vert uniE1AE.vert uniE1AF.vert uniE1B0.vert uniE1B1.vert uniE1B2.vert uniE1B3.vert uniE1B4.vert uniE1B5.vert uniE1B6.vert uniE1B7.vert uniE1B8.vert uniE1B9.vert uniE1BA.vert uniE1BB.vert uniE1BC.vert uniE1BD.vert uniE1BE.vert uniE1BF.vert uniE1C0.vert uniE1C1.vert uniE1C2.vert uniE1C3.vert uniE1C4.vert uniE1C5.vert uniE1C6.vert uniE1C7.vert uniE1C8.vert uniE1C9.vert uniE1CA.vert uniE1CB.vert uniE1CC.vert uniE1CD.vert uniE1CE.vert uniE1CF.vert uniE1D0.vert uniE1D1.vert uniE1D2.vert uniE1D3.vert uniE1D4.vert uniE1D5.vert uniE1D6.vert uniE1D7.vert uniE1D8.vert uniE1D9.vert uniE1DA.vert uniE1DB.vert uniE1DC.vert uniE1DD.vert uniE1DE.vert uniE1DF.vert$(e Ǝݨ8! 99;;==DDLKTTVVXXZZ \\ vvI>|3      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 0   NM PO  J >4 rst2pdf-0.93/rst2pdf/tests/input/test_issue_255_2.txt0000664000175000017500000000020311332403050022312 0ustar ralsinaralsina.. raw:: pdf Spacer 0 21cm H1 -- Heading ------- +----------------------+ | A table | +----------------------+ rst2pdf-0.93/rst2pdf/tests/input/test_image_units_pdf.style0000664000175000017500000000012311351252072024034 0ustar ralsinaralsinapageSetup: firstTemplate: twoColumn margin-left: 1cm margin-right: 1cm rst2pdf-0.93/rst2pdf/tests/input/test_multiline_header.txt0000664000175000017500000000013211431243622023670 0ustar ralsinaralsinaThis is just content so there is a page. .. class:: right This should be aligned right rst2pdf-0.93/rst2pdf/tests/input/test_issue_225.txt0000664000175000017500000000122611271327362022111 0ustar ralsinaralsina| This should look like a paragraph | With three | Lines This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like.This is how a paragraph spacing looks like. rst2pdf-0.93/rst2pdf/tests/input/test_png_dpi_2.png0000664000175000017500000000607011204530365022174 0ustar ralsinaralsinaPNG  IHDR ysRGBPLTEU~bKGDH pHYs\F\FCAtIME ;3 tEXtCommentCreated with GIMPW IDATx05x6=4 [+UI~ի|-|m ׆IENDB`rst2pdf-0.93/rst2pdf/tests/input/test_issue_312_2.txt0000664000175000017500000000006111363205036022316 0ustar ralsinaralsina.. figure:: images/tall_image.png :width: 80% rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue187/0000775000175000017500000000000012064144441021463 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue187/conf.py0000664000175000017500000001602311347527054022774 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue162 documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue187' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue162doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue162.tex', u'issue162 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: #pdf_stylesheets = ['buggy'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support #pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue187/Makefile0000664000175000017500000000606011250006356023123 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue187/index.rst0000664000175000017500000000012211250006356023315 0ustar ralsinaralsina.. code-block:: python A=3 .. highlightlang:: python :: A=3 rst2pdf-0.93/rst2pdf/tests/input/test_issue_64.txt0000664000175000017500000000005011063460761022024 0ustar ralsinaralsina:author: Roberto Alsina ralsina@kde.org rst2pdf-0.93/rst2pdf/tests/input/test_svg_alignment.txt0000664000175000017500000000022411062342036023214 0ustar ralsinaralsinaThis is text flush left .. image:: warning.svg :align: left .. image:: warning.svg :align: center .. image:: warning.svg :align: right rst2pdf-0.93/rst2pdf/tests/input/test_issue_337.txt0000664000175000017500000000013411416757432022120 0ustar ralsinaralsina==== ====== IMG1 |img1| ==== ====== .. |img1| image:: images/biohazard.png :width: 13em rst2pdf-0.93/rst2pdf/tests/input/test_issue_315.cli0000664000175000017500000000000411366066422022034 0ustar ralsinaralsina-b1 rst2pdf-0.93/rst2pdf/tests/input/test_slides.style0000664000175000017500000000100311253564656022177 0ustar ralsinaralsina{"pageSetup": { "width": "16cm", "height": "9cm", "margin-top": "2mm", "margin-bottom": "0mm", "margin-left": ".5cm", "margin-right": "1cm", "margin-gutter": "0cm", "spacing-header": "2mm", "spacing-footer": "0mm", "firstTemplate": "cutePage" }, "pageTemplates" : { "cutePage": { "frames": [ ["0", "0", "100%", "100%"] ], "background" : "images/background.svg", "showHeader" : true, "showFooter" : true } } } rst2pdf-0.93/rst2pdf/tests/input/test_issue_147.py0000664000175000017500000000140111232477312021716 0ustar ralsinaralsina# -*- coding: utf-8 -*- from reportlab.platypus import SimpleDocTemplate, Paragraph from reportlab.lib.styles import ParagraphStyle from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.enums import TA_JUSTIFY def go(): styles = getSampleStyleSheet() doc = SimpleDocTemplate("phello.pdf") style = styles['Normal'] style.alignment=TA_JUSTIFY p1 = Paragraph('''PADDING PADDING PADDING PADDING PADDING PADDING The computer will always be better than you at parsing SQL and the bad guys have years of experience finding and using SQL injection attacks in ways you never even thought possible.''', style) doc.build([p1,]) go() rst2pdf-0.93/rst2pdf/tests/input/test_issue_112.txt0000664000175000017500000000000411202552372022070 0ustar ralsinaralsina1. rst2pdf-0.93/rst2pdf/tests/input/test_issue_68_2.txt0000664000175000017500000000124611146570571022264 0ustar ralsinaralsinaUsing test_issue_68_1.style the paragraphs whould have normal leading. Using test_issue_68_2.style they should have double spacing. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus magna. Aliquam sit amet orci eu urna luctus faucibus. Cras eu enim. Donec eu ligula. Aliquam velit mi, sollicitudin id, elementum id, cursus in, dolor. Mauris vel sapien. Pellentesque hendrerit eros nec diam. Mauris sagittis pede eu dui. Mauris sit amet velit. Vestibulum tristique ipsum ut nulla. Maecenas ac turpis. Vivamus vel mauris sed purus tristique convallis. Fusce porta, eros sollicitudin faucibus tincidunt, libero urna dapibus tellus, vel mattis lacus purus at sem. rst2pdf-0.93/rst2pdf/tests/input/test_issue_463.txt0000664000175000017500000000014212060360756022112 0ustar ralsinaralsinaHello ===== This is a small test -------------------- lalala .. image:: images/biohazard.pdf rst2pdf-0.93/rst2pdf/tests/input/numbered_links_2.cli0000664000175000017500000000002511444203530022470 0ustar ralsinaralsina--use-numbered-links rst2pdf-0.93/rst2pdf/tests/input/test_issue_267.cli0000664000175000017500000000001511327617502022042 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/test_box_widths.txt0000664000175000017500000001560411252360316022543 0ustar ralsinaralsinaEach of the following blocks right edge should be at the same place. If it's not, it's either a bug in the stylesheet or in rst2pdf. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a block quote: This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a literal block:: This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a literal block inside a quote: :: This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a literal block in a definition list :: This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a code block: .. code-block:: rst This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a code block inside a quote: .. code-block:: rst This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a code block inside a quote: Inside a quote: .. code-block:: rst This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is a common paragraph. This is from the rusty docs: Changelog This use case happens to be initial reason for writing the directive. Consider the changelog/relese notes document, containing a list of new features, bug fixes and other changes. By using a role, each change can be separated for each other, by listing them in a separate list: .. code-block:: rst ============= Release Notes ============= Release X ========= Following issues have been fixed in this release: Fixes .. rolelist:: bug :template: #${value}: ${text} :levelsup: 2 :siblings: rst2pdf-0.93/rst2pdf/tests/input/test_issue_307.style0000664000175000017500000000062511404003502022416 0ustar ralsinaralsinapageTemplates: oneColumn: frames: [] [0%, 0%, 100%, 100%] showHeader : true showFooter : true defaultHeader : "|biohazard| |Python| **Customer Initials:** _______ Date:_______ Page ###Page### of ###Total###" defaultFooter : "|biohazard| |Python| **Customer Initials:** _______ Date:_______ Page ###Page### of ###Total###" rst2pdf-0.93/rst2pdf/tests/input/test_issue_200.txt0000664000175000017500000000201711256716170022103 0ustar ralsinaralsina.. header:: This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. This is a long header. Some content. If Issue 200 is not fixed, this will appear overlapping with the header.rst2pdf-0.93/rst2pdf/tests/input/test_issue_266_3.cli0000664000175000017500000000001511327607016022262 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/test_autoleading.txt0000664000175000017500000000110011146570775022665 0ustar ralsinaralsinaLorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam condimentum, est a placerat fermentum, lacus nisl eleifend nisl, vel laoreet metus neque id nibh. Morbi elementum leo sed sapien. Aliquam erat volutpat. Praesent mollis sapien et felis. Nulla ultricies odio id elit. Ut non quam eget nulla blandit iaculis. Phasellus convallis tempor enim. Nunc nec arcu. Sed hendrerit congue quam. Nulla fermentum tortor vitae lacus. Pellentesque a ante. Pellentesque sed justo. Proin facilisis mattis pede. Donec augue orci, pellentesque id, suscipit quis, placerat id, purus. rst2pdf-0.93/rst2pdf/tests/input/config.issue3900000664000175000017500000000032611530354013021333 0ustar ralsinaralsina# This is an example config file. Modify and place in ~/.rst2pdf/config [general] # A comma-separated list of custom stylesheets. Example: # stylesheets="fruity.json,a4paper.json,verasans.json" stylesheets="a5" rst2pdf-0.93/rst2pdf/tests/input/test_issue_180_2.txt0000664000175000017500000001516611247532222022336 0ustar ralsinaralsina* First a short item * Then a very very very long item, which will make this fail because it can't be split over two pages. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. This will fail. rst2pdf-0.93/rst2pdf/tests/input/test_table_1.txt0000664000175000017500000000017711055536175021710 0ustar ralsinaralsina===== ===== ====== Inputs Output ------------ ------ A B A or B ===== ===== ====== ===== ===== ====== rst2pdf-0.93/rst2pdf/tests/input/test_preprocessor.cli0000664000175000017500000000001611342026435023037 0ustar ralsinaralsina-e preprocess rst2pdf-0.93/rst2pdf/tests/input/test_custom_cover.tmpl0000664000175000017500000000036611354436760023247 0ustar ralsinaralsina .. class:: title #{title} .. class:: subtitle #{subtitle} If the custom cover works, this is in the cover, and the text starts in the next page. .. raw:: pdf PageBreak rst2pdf-0.93/rst2pdf/tests/input/test_issue_351.txt0000664000175000017500000000017611434635344022117 0ustar ralsinaralsinaTest ---- A citation [test]_ . .. [test] More info at http://www.test.com Another Section --------------- .. contents:: rst2pdf-0.93/rst2pdf/tests/input/test_issue_138.txt0000664000175000017500000000041611221146331022102 0ustar ralsinaralsinaThis is the default figure class: .. figure:: images/title.png This is the caption. And this is the legend. This is a figure with ``with-border`` class: .. class:: with-border .. figure:: images/title.png This is the caption. And this is the legend. rst2pdf-0.93/rst2pdf/tests/input/test_issue_291.txt0000664000175000017500000000021011351135500022072 0ustar ralsinaralsina.. code-block:: python # Code with a box .. class:: nobox .. code-block:: python # Code without a box (If Issue 291 is fixed) rst2pdf-0.93/rst2pdf/tests/input/test_image_units_pdf.txt0000664000175000017500000000216411216477315023533 0ustar ralsinaralsinaThe valid units are: "em" "ex" "px" "in" "cm" "mm" "pt" "pc" "%" "". 16px with 16DPI (defined in the image) == 1 inch .. image:: images/biohazard_16dpi.png 300, no unit == 300px at 300DPI == 1 inch .. image:: images/biohazard.pdf :width: 300 1in == 1 inch .. image:: images/biohazard.pdf :width: 1in 2.54cm == 1 inch .. image:: images/biohazard.pdf :width: 2.54cm 25.4mm == 1 inch .. image:: images/biohazard.pdf :width: 25.4mm 72pt == 1 inch .. image:: images/biohazard.pdf :width: 72pt 7.2em with a 10pt base font == 1 inch .. image:: images/biohazard.pdf :width: 7.2em We use the broken IE definition of ex because it's easier. So, 14.4 ex == 7.2 em with 10pt base font == 1 inch .. image:: images/biohazard.pdf :width: 14.4ex 1pc == 12pt == 1/6th inch, so 6pc == 1inch .. image:: images/biohazard.pdf :width: 6pc All the above images should be exactly 1 inch wide. .. image:: images/biohazard.pdf :width: 100% The above image should be exactly the width of the text area .. image:: images/biohazard.pdf :width: 50% The above image should be exactly half the width of the text area rst2pdf-0.93/rst2pdf/tests/input/test_bullet_widths.txt0000664000175000017500000000302711250045744023241 0ustar ralsinaralsinaThis bullet list should be divided exactly in mid-page: * Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long This item list should be divided at 1/4th page width: 1. Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long .. raw:: pdf PageBreak twoColumn This bullet list should be divided exactly in mid-column (1/4th page width): * Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long This item list should be divided at 1/8th page width: 1. Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long rst2pdf-0.93/rst2pdf/tests/input/test_issue_313.style0000664000175000017500000000061611363220032022416 0ustar ralsinaralsinapageSetup: firstTemplate: cutePage height: 9cm margin-bottom: 0cm margin-gutter: 0cm margin-left: 0cm margin-right: 0cm margin-top: 0cm spacing-footer: 5mm spacing-header: 5mm width: 9cm pageTemplates: cutePage: background: background.png frames: [] [0cm, 0cm, 100%, 100%] showFooter: false showHeader: false rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue318/0000775000175000017500000000000012064144444021462 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue318/conf.py0000664000175000017500000001600111452203671022755 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Issue 318 documentation build configuration file, created by # sphinx-quickstart on Sun Oct 3 18:23:18 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'test' # General information about the project. project = u'Issue 318' copyright = u'2010, Roberto Alsina' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.0' # The full version, including alpha/beta/rc tags. release = '0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'Issue318doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('test', 'Issue318.tex', u'Issue 318 Documentation', u'Roberto Alsina', 'manual'), ] pdf_documents = [ ('test', 'Issue318', u'Issue 318 Documentation', u'Roberto Alsina'), ] pdf_use_index = True #pdf_verbosity = 2 pdf_domain_indices = True # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('test', 'issue318', u'Issue 318 Documentation', [u'Roberto Alsina'], 1) ] rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue318/_static/0000775000175000017500000000000012064144444023110 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue318/make.bat0000664000175000017500000001001611452173272023066 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Issue318.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Issue318.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue318/test.rst0000664000175000017500000000265111452203671023175 0ustar ralsinaralsina.. Issue 318 documentation master file, created by sphinx-quickstart on Sun Oct 3 18:23:18 2010. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to Issue 318's documentation! ===================================== Contents: .. toctree:: :maxdepth: 2 .. cpp:function:: bool namespaced::theclass::method(int arg1, std::string arg2) Describes a method with parameters and types. .. cpp:function:: bool namespaced::theclass::method(arg1, arg2) Describes a method without types. .. cpp:function:: const T &array::operator[]() const Describes the constant indexing operator of a templated array. .. cpp:function:: operator bool() const Describe a casting operator here. .. cpp:member:: std::string theclass::name .. cpp:type:: theclass::const_iterator .. py:function:: format_exception(etype, value, tb[, limit=None]) Format the exception with a traceback. :param etype: exception type :param value: exception value :param tb: traceback object :param limit: maximum number of stack frames to show :type limit: integer or None :rtype: list of strings .. module:: parrot :platform: Unix, Windows :synopsis: Analyze and reanimate dead parrots. .. function:: spam(eggs) ham(eggs) Spam or ham the foo. Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue318/_templates/0000775000175000017500000000000012064144444023617 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue318/Makefile0000664000175000017500000001116111452173272023123 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Issue318.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Issue318.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/Issue318" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Issue318" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/test_inkscape.txt0000664000175000017500000000225511336055463022173 0ustar ralsinaralsina This is basically a copy of the "test_image_units_svg" test, concatenated with the "test_issue_266_2" test, rendered using "-e inkscape", which uses inkscape to convert to a PDF, then uses pdfrw to eat the PDF. The valid units are: "em" "ex" "px" "in" "cm" "mm" "pt" "pc" "%" "". 300, no unit == 300px at 300DPI == 1 inch .. image:: images/biohazard.svg :width: 300 1in == 1 inch .. image:: images/biohazard.svg :width: 1in 2.54cm == 1 inch .. image:: images/biohazard.svg :width: 2.54cm 25.4mm == 1 inch .. image:: images/biohazard.svg :width: 25.4mm 72pt == 1 inch .. image:: images/biohazard.svg :width: 72pt 7.2em with a 10pt base font == 1 inch .. image:: images/biohazard.svg :width: 7.2em We use the broken IE definition of ex because it's easier. So, 14.4 ex == 7.2 em with 10pt base font == 1 inch .. image:: images/biohazard.svg :width: 14.4ex 1pc == 12pt == 1/6th inch, so 6pc == 1inch .. image:: images/biohazard.svg :width: 6pc All the above images should be exactly 1 inch wide. .. image:: images/biohazard.svg :width: 100% The above image should be exactly the width of the text area Normal image: .. image:: images/biohazard.svg rst2pdf-0.93/rst2pdf/tests/input/test_issue_374.cli0000664000175000017500000000000611464313223022034 0ustar ralsinaralsina-b 1 rst2pdf-0.93/rst2pdf/tests/input/test_issue_313.txt0000664000175000017500000000004411363220032022070 0ustar ralsinaralsinaThis should have a fancy background rst2pdf-0.93/rst2pdf/tests/input/test_png_dpi_1.png0000664000175000017500000000523711204530365022177 0ustar ralsinaralsinaPNG  IHDR h܀ysRGBPLTEU~bKGDH pHYs\F\FCAtIME ;' 3qtEXtCommentCreated with GIMPW IDATxA k`6-RL~ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;޽ݻw ޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{.w{ǻw{ǻw{wxwxwݻw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw%xwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxwݻ;޽;޽;޽{ǻw{ǻw{ǻw޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxݻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻw{ǻw{ǻw{ǻwxwxwx޽{޽;޽;޽ݻw{ǻw{ǻw{ǻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx]wxwxwx޽;޽;޽ݻw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;޽ݻw{ǻw{ǻw{ǻwxwxwx޽K޽;޽;޽ݻw{ǻw{ǻw{ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;޽ݻw ޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{.w{ǻw{ǻw{wxwxwݻw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw%xwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxwݻ;޽;޽;޽{ǻw{ǻw{ǻw޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxݻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻw{ǻw{ǻw{ǻwxwxwx޽{޽;޽;޽ݻw{ǻw{ǻw{ǻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx]wxwxwx޽;޽;޽ݻw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;ޗ{Nfm IENDB`rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue169/0000775000175000017500000000000012064144441021463 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue169/second.rst0000664000175000017500000000030711244501371023466 0ustar ralsinaralsina.. program:: svn .. cmdoption:: -r revision Specify the revision to work upon. :option:`svn -r` should link to the definition for svn. :option:`rm -r` should link to the definition for rm. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue169/conf.py0000664000175000017500000001603011347476406022776 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Issue 169 documentation build configuration file, created by # sphinx-quickstart on Mon Aug 24 08:58:31 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Issue 169' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'Issue169doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'Issue169.tex', u'Issue 169 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['borland'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue169/Makefile0000664000175000017500000000607511244501371023131 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/Issue169.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/Issue169.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue169/index.rst0000664000175000017500000000031311244501371023317 0ustar ralsinaralsina.. program:: rm .. cmdoption:: -r Delete recursively :option:`svn -r` should link to the definition for svn. :option:`rm -r` should link to the definition for rm. .. toctree:: second rst2pdf-0.93/rst2pdf/tests/input/test_issue_265.style0000664000175000017500000000033511351252072022430 0ustar ralsinaralsinastyles: with-border: backColor: white borderColor: black borderPadding: 50 borderWidth: 0.5 commands: [] [BOX, [0, 0], [-1, -1], 0.25, black] parent: figure rst2pdf-0.93/rst2pdf/tests/input/test_issue_299.style0000664000175000017500000000027311351753636022454 0ustar ralsinaralsina{ "styles" : [ ["thick" , { "parent" : "table", "colWidths": ["20%","60%","20"], "commands": [ [BOX, [ 0, 0 ], [ -1, -1 ], 10, red ] ] } ] ] } rst2pdf-0.93/rst2pdf/tests/input/test_figure_alignment.txt0000664000175000017500000000254211410150761023702 0ustar ralsinaralsina.. figure:: images/biohazard.png :width: 6cm The caption. Above should be: a 6cm image, centered, a caption, centered. This legend should be full width of the page, justified like regular bodytext. .. figure:: images/biohazard.png :figwidth: 6cm :width: 3cm The caption. Above should be: a 3cm image, centered, inside a 6cm wide figure. A caption, centered. This legend should be full width of the figure, justified like regular bodytext. .. figure:: images/biohazard.png :figwidth: 6cm :width: 3cm :align: right The caption. Above should be: a 3cm image, centered, inside a 6cm wide figure at the right side of the page. A caption, centered. This legend should be full width of the figure, justified like regular bodytext. .. figure:: images/biohazard.png :figwidth: 6cm :width: 3cm :align: left The caption. Above should be: a 3cm image, centered, inside a 6cm wide figure at the left side of the page. A caption, centered. This legend should be full width of the figure, justified like regular bodytext. .. figure:: images/biohazard.png :figwidth: 6cm :width: 3cm :align: center The caption. Above should be: a 3cm image, centered, inside a 6cm wide figure at the center of the page. A caption, centered. This legend should be full width of the figure, justified like regular bodytext. rst2pdf-0.93/rst2pdf/tests/input/test_issue_146.txt0000664000175000017500000000055411232222003022075 0ustar ralsinaralsina.. class:: thai Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด และไม่ว่าจะเป็นภาษาใด END rst2pdf-0.93/rst2pdf/tests/input/test_issue_461.txt0000664000175000017500000000014512062705451022110 0ustar ralsinaralsinaThis bullet list should have a very large left-indent. .. class:: custom * One item * Another item rst2pdf-0.93/rst2pdf/tests/input/test_issue_286.txt0000664000175000017500000001033311452637035022121 0ustar ralsinaralsina.. raw:: pdf Spacer 0 225mm This is before the pagebreak. There is enough space below for the term. Term: Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition .. raw:: pdf PageBreak Spacer 0 16cm This is before the pagebreak. There is enough space below for the term and a paragraph. Term: Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition Definition rst2pdf-0.93/rst2pdf/tests/input/test_framebreak.style0000664000175000017500000000012311466402437023007 0ustar ralsinaralsinapageSetup: firstTemplate: twoColumn margin-left: 1cm margin-right: 1cm rst2pdf-0.93/rst2pdf/tests/input/test_issue_147.txt0000664000175000017500000000112211232475177022114 0ustar ralsinaralsinaWhen using a cursor, always use bindings. `String interpolation `_ may seem more convenient but you will encounter difficulties. You may feel that you have complete control over all data accessed but if your code is at all useful then you will find it being used more and more widely. The computer will always be better than you at parsing SQL and the bad guys have years of experience finding and using `SQL injection attacks `_ in ways you never even thought possible. rst2pdf-0.93/rst2pdf/tests/input/test_greek.txt0000664000175000017500000000036011272577210021464 0ustar ralsinaralsinaελλήνικά In the above greek text there should be two letters with accents. Using the default PDF fonts, they are missing. Using DejaVu they will be visible. The test_greek_style stylesheet hanges the font so this works correctly. rst2pdf-0.93/rst2pdf/tests/input/test_issue_113.txt0000664000175000017500000000034411203636021022073 0ustar ralsinaralsinaThis should apear above the image |thanks-image| This should appear below the image .. |thanks-image| image:: ./thanks.png This is really not a rst2pdf bug, but a reportlabs bug (already reported to them via mailing list) rst2pdf-0.93/rst2pdf/tests/input/test_issue_312.txt0000664000175000017500000000022411357242473022107 0ustar ralsinaralsina.. figure:: images/biohazard.png :width: 100% .. figure:: images/biohazard.png :width: 80% .. figure:: images/biohazard.png :width: 60% rst2pdf-0.93/rst2pdf/tests/input/test_image_directive.txt0000664000175000017500000000007611055536175023517 0ustar ralsinaralsina.. image:: images/title.png :target: http://www.python.org rst2pdf-0.93/rst2pdf/tests/input/test_issue_116_2.png0000664000175000017500000000607011203640600022264 0ustar ralsinaralsinaPNG  IHDR ysRGBPLTEU~bKGDH pHYs  tIME"9.BtEXtCommentCreated with GIMPW IDATx05x6=4 [+UI~ի|-|m ׆IENDB`rst2pdf-0.93/rst2pdf/tests/input/test_header_separator.style0000664000175000017500000000045411337404450024221 0ustar ralsinaralsina{"pageSetup": { "firstTemplate": "cutePage" }, "pageTemplates" : { "cutePage": { "frames": [ ["0", "0", "100%", "100%"] ], "showHeader" : true, "headerSeparator" : true, "showFooter" : true, "footerSeparator" : true } } } rst2pdf-0.93/rst2pdf/tests/input/test_issue_339.txt0000664000175000017500000000005411423554462022117 0ustar ralsinaralsina.. class:: custom_blue This should be blue rst2pdf-0.93/rst2pdf/tests/input/test_cover_3.txt0000664000175000017500000000002611354436072021727 0ustar ralsinaralsinaThis is the document. rst2pdf-0.93/rst2pdf/tests/input/test_issue_464.txt0000664000175000017500000000012712062650477022122 0ustar ralsinaralsina.. image:: images/biohazard.png :class: mytext That image should be right-aligned. rst2pdf-0.93/rst2pdf/tests/input/test_issue_110_2.txt0000664000175000017500000000106011363056323022315 0ustar ralsinaralsina.. footer:: ###Page### This is a paragraph in Page 1 [#]_ .. [#] This is a footnote in page 1 This is another paragrah in page 1. [#]_ .. [#] This is 2nd footnote in page 1 .. raw:: pdf PageBreak This is a paragraph in Page 2 [#]_ .. [#] This is a footnote in page 2 This is another paragrah in page 2. [#]_ .. [#] This is 2nd footnote in page 2 .. raw:: pdf PageBreak This is a paragraph in Page 3 [#]_ .. [#] This is a footnote in page 3 This is another paragrah in page 3. .. raw:: pdf PageBreak This is page 4 without footnotes. rst2pdf-0.93/rst2pdf/tests/input/test_issue_291.style0000664000175000017500000000024211351252072022424 0ustar ralsinaralsinastyles: nobox: backColor: white borderColor: null borderPadding: 0 borderRadius: null borderWidth: 0 parent: code rst2pdf-0.93/rst2pdf/tests/input/test_replacement_text.txt0000664000175000017500000000020011055536175023727 0ustar ralsinaralsinaI recommend you try |Python|_. .. |Python| replace:: Python, *the best language* around .. _Python: http://www.python.org/ rst2pdf-0.93/rst2pdf/tests/input/test_issue_255_2.ignore0000664000175000017500000000000011345443572022772 0ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/test_preprocessor.txt0000664000175000017500000000170011466406606023121 0ustar ralsinaralsina This file tests the preprocesor extension ("-e preprocess"). This is one paragraph. This is the next paragraph. Now, we will test that we can add a bit of space using the new syntax: .. space:: 40 Now, we're going to test that we can use the syntax to include both restructured text and stylesheets: .. include:: test_style_width.txt .. include:: test_style_width.style Now we're going to try to do a pagebreak: .. page:: Now, we're going to test the single word styling: .. style:: foobar: {something: something_else} singleword: {parent: base, fontSize: 24} SingleWord this is a paragraph AnotherSingleWord Another paragraph Finally, we're going to try setting table widths to 20%, 80%, and then the other way around: .. widths:: 20 80 ====== ================== Hi there How are you? ====== ================== .. widths:: 80 20 ====== ================== Hi there How are you? ====== ================== rst2pdf-0.93/rst2pdf/tests/input/Tuffy_Bold_Italic.ttf0000775000175000017500000004461411272577077022660 0ustar ralsinaralsinaFFTMEQIpGDEF)GGPOS܊H,DGSUBltH OS/2iVcmap+Bcvt !y8gaspGglyf7headCǾ 6hhea<D$hmtx~-loca /<maxph name a~@XpostdԾF=_< 1i1i&j00& ̀jd[[@33f PfEd! ==0h]j|],|<PXO\b8XZ`y`; wssss+5ss B?w|yyIQC{/5"wHdX!b9o}8bwbEqQaww1'wawQllZzX$,R\Bsc5tvpPrAC`#Amh;:      5 s~s~s~s wCCCCCA wh>      O& "u$&Aw~~~~/\Ew\2  T<L?<        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a}~pcdhtnjriqfsxblkwy|u{zov!y6x|4$2j .l*lx6d 8Xj  t   @ V x  " J  X  H l $T88z(Xf4bx<Zlv"0\",8DP\ht DP\ht ".`(D~(4$2<FPXdpz]!#"&547>32>32#"&54P>l+(SuD;JuD:K$ %93 D`I9D`J8|*>;20#"&564%>;20#"&54<X" #dM=;X" $dL=Dv"* v"* /{7####!7!7!7!333!!!33BBBB3>32>FFFF72373T55JJ]e/8@3.'#7.'%$547>7>7654{'&G(32#"&543267654&#">32#"&54#3&&< %#A~l~m& &; $"B~mls"&50 #.@-k!"i! "'40".A+j""i!e9.#";#"3267#7!##".547%.5476$32 K;CuRD3jdVo.J- 9c~`tk F-+&+*ESM>CwQhcG3moW7Yh+-Il $6O,!"ވn|>;20#"&54~;X" $dL=Dv"* u&47!|)iH-wT LS҃< !6765'!@+tz#2`}4㘩h Z72#'#"'&/#"/&#.547676?"&54765>763'&7>?63276322.[8,+ A-)" .[8*- A/*"56" L  :   2 6# L :   1 & !3!!#! @@3==.P3*%'>75.547>32 CQC@3$2 u?DD9vZ=+Q >232#"&54\uD;JuD:KD`I9D`J83!! !32+"54%32654&#"Ia!1.-NW<*OZY䈟tmkedZ77!7%!!'" P\&'6$32!!>7>7654&#"K<47ecI-joA%37%:|QRHRw4G/HrI;Dy[5@|0kP_pA"IKV3%3267654&+73267654&#"'!2#".uJfnP.KVE;g5Mh; %"22 (q|CF]V{\MhvHFJB-B"DtM.5g2H[5.4E 3#!!7! !,2JJ,!COI\&"'!!632#".5%3267654&nF 2+u+m Z\@*R5nh;Z˫6;w5Ske0.?@,iVo*654&#"326632#".547>7!y\O\]J^2 jhYa5 L7.5476$wqwXxp\WOY}SSaw 2.O"Ek  L^c(&.&*jVllTd>>UW32!R\O\]J^0 jhYa6 M7654.#"%6$32>32#"&54)\qr[3I-O}7!SqA @OXUH4{uD;JuD:KClMMjA+9iO))LzL(,K~TF86AKD`I9D`J8/IY#".5476$32#"&'#"&5476$323267654.#"3263267654&#"Qx叏`- ڎ^L8`v $(S DyixŽ G~ibUAMuQ;KJH[MQ`X~IMje@?%'֣x !.@bF:9_wE^x?=d~HL ?PrR8F_C !!!!!,@hYPw  132>7654# 3267654&#%!2#! UP{K* hIhx~ja= d;Y3 +_q"=F*DeG;M$9QO-*.mATY, 5i}]?(!".547>32.#"327lqJ!W[gBr@ObO3=fD66^ZzvR4Yl=YB]7\Sq`Jx\2sa 654&+32%#!!21sǒL"-5rzAME/sNqYs~ !!!!!!26K3uR3*}s~ !!!!!26K3u0".547>32.#"32>7!7!hmHUꄚ1ToN8`@GwO=! 3E L|;eYu|j‘YV4[ZXa^Je:0IdX/eRs !!!!!! }} PPq3!5 P332>7!#".54/S9EqK1 mzJf%>32#".548cD\hD#7S5J`O3]3L_}^hkHTgkFcWBjX1Y\sc7^T;#BjNGsS0;dTegkўb>hXqy3 7654+'!32+!4+ up9 ({74\{K-1;654.#"327'7>%>32'#".549^?I_M3"5R5^/!L[PdlG "EsnEjbkH!dWEpV/:_Mrf6^V=$%vŃ+N_Țb8aVioMcm4?=i[oy3 7654+#"&#!!324+Ҿ)@{5 vp9 7?E4]{K-0z9=>%3267654.'.547>32.#"#"&541V9o!3QKh&-?@ 逨 PO]/VTj6ND" +/PD'iV$>)+.,BW6*/U387632#"8.4, -/%l = 7 dN:"3267654&'27654.#"'>32 !7#"&5476$X]NX|Trc(94.]/*D4PFxkL,@A#c # eC:NaD:Ne@R' )>#$:5PyKALψ@e,.w*)!>32#"&'654&#"326y5rEWInC X{_V#[B'QSF18 PRe5aObquǛYgR|D9hd!GZD79S.L&#"32>7#"&547632)sc mZ&;$" Pv6]u#r2-k (oaؼJS<i/)!7#".547>32! 32>7654.#"!FVInD!"W#r [?'QSF18 URg4`O_oeRR;4is!H[C78T-J&!654&#"27#"&5476632!TPY^cEQj"h "/*NeBb^hEH޶KRD/',C'@!#737>32.#"31 OpG@n# 0R1LLP2ufC.+WdQ3L*>7#".547>327!#".54?32632>7654.#"0FVInD!"W#![pRR7VX^ [?'QSF18 UFRg4`O_oeRQtD)AXW. =IY;4is!H[C78T-w)!>32!654&#"y5s>g.SD(rDA#:>3.Rl(IwH=EdkFWB,HwP>32#"&54!! l<3Bk<3B"6A_H5A_G6P >32#"&5473267!#"& l<3Bk<3B</2O _Sh6A_H5A_G6?0dp(w !!!!#^5e;UDe 3"&547!M/  =Yn.<w`N0)654&#"!!>32>32!654&#"s05Ra"s">Q`.*A( %f32!654&#"y">g.SD(rDA#:>3.2Rl(IwH=EdkFWB,HwPL 32654#"32#"&54F88ᶾ8᷿N<KN</ɴTbɶTVL*!!>32#"&'654&#"326?!EWInC X{_V#[B'QSF18 PVۜRe5aObquǛYgR|D9hd!GZD79S.?L3#".547>327!3"&5432>7654.#"?FVInD!"W#!)62 [?'QSF18 U*Rg4`O_oeRF iq);4is!H[C78T-zN&#"!!>32c-7^@) v"<<2c#'=:ah81Pn5)L?.547>32454&#"#"&'732>7654.+3/ N|K'977!">cnxrr'+"EMCrQmmYB3H$Ca,1!!3o"S1RM5 #!33#XW 7h1cb1 )!!!w"x:6OJ\/1)#"&'7326?#"&547!32>7!i]OT/>cnxrr'+"EMCrj~fp7B^PQmmYB3H$CaB}1%!!!7!3e}3&B0>7>3"3".'&5454JrC0.$',.359-VVXF$?F.-+(%"2" @Xg:!k#3( );Vs33s5RcI0 #72677&547654HIJrC0. !#&'*,-.VUUG%?F-84/*%2 ?X9"m#3( ")Uj>3232>7#"."20.3)*5 V',7<&A'I0<68#B(& --+"+080. ,N&.547>?3#".#"32>7#wRc ]21(c4%8` 631,ue,%e-1 Q2P30@ 'r )#73>324.#"!!!267#!>0%\j}& <." e0P*=rg}l%[():\a0jDE91&v143267654&#"#"'!3&54767#!6327!#3!)/#&G-!*F,BC$Go kGN.AH NGo #sG #);& "+8uN<0Nl l !!+DVu!73!!3!!!!!7!+1{dq10==0{yPu#73Ҏfffr9Z=/@632#"&'7;267#".547>32454&#"654&#"3232r X[v) :5\H*{Z_^(' 5 )% +! :=x+$B3(N|MFP~ދk2()?U #$B`'tC,<632#".54#"&547>32&#"327%32$7654&#"P1m 蓀ldf[rjo9'&D+!-%Q Dq|:׃a~^####^#!7!6J4]^\!L,9K32>7654.#">32#".54%23267654&+'32#/# /M]19{rX 1NX,~iH!A{mR/0$/pjn (8#%-(@f= /UO-)Cl@"oZ)>B!DaP=V'  AI%4!!.\1bl3267654&#">32#"&54A4=e @4=frr4BW?2BX>k !k yE'zmc.1#"&'.54767632 * .$l  . 8 . ;sy%#332673#7#"&eZ /1CZ#v)7tN%Z-&1I'YT4=B:,23"3"&#.547>3![_41*"%pG6PU6# }eVM0-Pj27654'7%)"E&1360 #"ZLX-%% #_ #%#D7_"#"#"C'Cj$t'rFo$p'A $}'a$''iD$0'p^$ !!!!!!!! 3uw5|M6{H5rTA&'v& s~'CYs(s~'rs(s~Y'A(s5'imR('Cs,'rj,Y'AW,A'i^,"#73!2+327654&+3}3}|ɄF N.L3d]QvZ_qd HBwh'a1'C2'r32r'A2'a< 2h'i29J,-c,-;!7.547>327!#"732>7654' "&#" f75Wd8 [{KV= L_N. W$O_M.FugYsǓXoVѤlGm?xVDB/AfLJlK'Cns8'ro8v'A8C'iv`8w'ro< 2>7654!!2#!OX 6bj? Rt[=/\A1MyO17^cE%>?@!2#"'73267654&+2>?2>7654#" #6[ F51 ' #.6imP l&}~%!^Rm 6:-Gj9**\4 bjZx /_B,"7 B4s|dH'CDdC'r1D&AD'aMwD'iD'p DNNW"3267654&27#"'!7#"&5476$32467654.#"'>3 632!!654&#"X]NX|TcEQjz_#c #b (94.]/*D4Pd¤h "/*bTPY eC:NaD:NBb^h@#@e,.d@@' )>#$:޶KRD/',C'Ne+L'vFH'CHE'rXH&A<H'iH?!!&547>7632#"o L.4, -/%1z = 7 s=!!#"&'.54767632o  * .$1x  . 8 . u !!!'!3o  bd1zU#!!>32#"&54%>32#"&54o uD;JuD:KuD;JuD:K1+D`I9D`J8D`I9D`J8~@3267654&#"#".47632654&''7.+"76;27 K.LdE;y-)@ 3[P',&Fk0 jxd6*;2,kU%|2,Zgo!Vj@i'#D\626b~X\=B&RI 8"ow'aPQL'CRL'rTR&A%R 'aJ}R'iRu& ;/N - 3267654'&#"7&5476327!#"&')X Vfd&6I*l+)42m){b~5 Ђ$" )MLJ=3V|NO/V'C%XC'r<X&A)X'iX\/3'ra\w))!>32#".'654&#"326y5?(BNyK&@e|a$>& L2ME6M=o?pVZ_auG"3)86gՊ_Plz\/'i\2c!!c1 !!:1R!!%1WbNTNE7#"&'#7376#Rj<>}7 # $t+41E(W$ ]jgL3K%3 $UUN s -K   Z    g y Z "'  ] "  & &2 nCreated by Thatcher Ulrich (http://tulrich.com) with FontForge 1.0 (http://fontforge.sf.net) This font, including hint instructions, has been donated to the Public Domain. Do whatever you want with it. Created by Thatcher Ulrich (http://tulrich.com) with FontForge 1.0 (http://fontforge.sf.net) This font, including hint instructions, has been donated to the Public Domain. Do whatever you want with it. TuffyTuffyBold-ItalicBold-ItalicFontForge 1.0 : Tuffy Bold Italic : 11-2-2007FontForge 1.0 : Tuffy Bold Italic : 11-2-2007Tuffy Bold ItalicTuffy Bold ItalicVersion 001.100 Version 001.100 Tuffy-Bold-ItalicTuffy-Bold-ItalicThatcher UlrichThatcher Ulrichhttp://tulrich.com http://tulrich.com http://tulrich.com http://tulrich.com Public Domain Public Domain 4f  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~ softhyphen figuredash quotereverseduni201FEuro  latn ,latnkern06<RX^dnt~q&79+Y\Z5)72$7$w$Xy$ (H$H$BD?qYWDQRWX\Y[HH$(*.2379:<?DHIRUY?1Qrst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/0000775000175000017500000000000012064144442021455 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/make.bat0000664000175000017500000001001611450514531023056 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\sample.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\sample.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/ja.json0000664000175000017500000000010611450514531022735 0ustar ralsinaralsina{ "styles" : [ ["base" , { "wordWrap": "CJK" }] ] } rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/Makefile0000664000175000017500000001116411450514531023116 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf @echo @echo "Build finished. The pdf file is in $(BUILDDIR)/pdf." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/sample.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/sample.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/sample" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/sample" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/source/0000775000175000017500000000000012064144442022755 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/source/conf.py0000664000175000017500000001566411450514531024266 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # sample documentation build configuration file, created by # sphinx-quickstart on Fri Sep 10 16:05:16 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sample' copyright = u'2010, sample' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0' # The full version, including alpha/beta/rc tags. release = '1.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'sampledoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'sample.tex', u'sample Documentation', u'sample', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'sample', u'sample Documentation', [u'sample'], 1) ] pdf_documents = [ ('index', u'sample', u'sample Documentation', u'sample'), ] pdf_stylesheets = ['sphinx','kerning','a4','ja'] rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/source/_static/0000775000175000017500000000000012064144442024403 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/source/_templates/0000775000175000017500000000000012064144442025112 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue360/source/index.rst0000664000175000017500000002343011450514531024616 0ustar ralsinaralsina:: test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test rst2pdf-0.93/rst2pdf/tests/input/test_issue_468.txt0000664000175000017500000000277612020666416022134 0ustar ralsinaralsinaAll shown pages should be upright and should have geometric shapes on either side: .. image:: images/rotated.pdf#page=1&viewrect=0,0,432,72 :width: 90% .. image:: images/rotated.pdf#page=2&viewrect=0,0,288,72 :width: 60% .. image:: images/rotated.pdf#page=3&viewrect=0,0,432,72 :width: 90% .. image:: images/rotated.pdf#page=4&viewrect=0,0,288,72 :width: 60% All shown pages should be upside down, with no geometric shapes: .. image:: images/rotated.pdf#page=3&viewrect=126,216,175,72 :width: 30% .. image:: images/rotated.pdf#page=4&viewrect=54,360,175,72 :width: 30% .. image:: images/rotated.pdf#page=1&viewrect=126,216,175,72 :width: 30% .. image:: images/rotated.pdf#page=2&viewrect=54,360,175,72 :width: 30% .. raw:: pdf PageBreak Page 1 should be upright: .. image:: images/rotated.pdf :width: 75% Page 2 should be upright: .. image:: images/rotated.pdf#page=2 :width: 50% .. raw:: pdf PageBreak Page 3 should be upright: .. image:: images/rotated.pdf#page=3 :width: 75% Page 4 should be upright: .. image:: images/rotated.pdf#page=4 :width: 50% .. raw:: pdf PageBreak Page 1 should be upright: .. image:: images/rotated.pdf#page=2&rotate=-90 :width: 75% Page 2 should be upright: .. image:: images/rotated.pdf#page=2&rotate=0 :width: 50% .. raw:: pdf PageBreak Page 3 should be upright: .. image:: images/rotated.pdf#page=2&rotate=90 :width: 75% Page 4 should be upright: .. image:: images/rotated.pdf#page=2&rotate=180 :width: 50% rst2pdf-0.93/rst2pdf/tests/input/test_issue_274_2.txt0000664000175000017500000001710311353153103022326 0ustar ralsinaralsina====================== ffffff ff fffffİffffff ====================== :fffff: e Şffff caba :fffıffffff: ff, ff, ff, fÇ, ff. .. contents:: İçfffffffff ffĞfffffff ---------- caaf ~~~~ * caaf ffffffff ffff fffıff ffçff. * caaf.c çıffığıfff fff fşfffffffff. * **caaf füfüf föffffffff:** ff caaf ~~~~ * caaf-ff-caaf fffffff ffff ffffffff. **fffffff:** ff * **caaf.b ffffffffffff fffff** fffıfffffı. * caaf.c öfföfüfff füfüf ffffff bf fffff caba. * **caaf füfüf föffffffff:** ff cabb ~~~~ * cabb ffff öfffffffff - fff fffffı: fff cf ffff + cf fffffff + ca ffğff - fffffff Çffışff fff/fff * ffff ffffff ffffffffı fffıffff ffffff fğffff/fffffffffff ffffff fffffffff. * ffff fffffffffı, füfüf fffffffffı ff ffffffff fffşfffffffff. * ffffffıfı ffffüf fffffıfı fçff fff ffffff ffıfffff ff ffÜ-ffffff fffffff fffffffff cabb ff ffffffff d fçff ffffffıfı ffffffff fffffıf füffffff ffçffffff. * cabb öfföfüfff füfüf ffffff be ffffıf caba. * **cabb füfüf föffffffff:** ff * **cabb fffff füfüf ffffffffff:** fffffff ffffffffff ffffffff c ~~~~~~~~~~ * ffffffff c ffff öfffffffff - fffffff ffffı fffffff, fffffffff ff ffff. **fffffff:** fff, **fffff:** fc (!) - fff/ffff. **fffffff:** fff. (ff!) * fc fçff ffff ff ffff fffffffff fffffff fffşfffffffff. **fffffff:** fÇ, **fffff:** ffff * ffff ff ffff fçff fff(ff) fffffffı fffıfffff. * ffffff fffffffff ffffffffffffff, ffıffı ffff fffff, ffffff ffff-ff ff fffffffff çffışfffff fıfffffıfıfffff. **fffffff:** ff. ffd fffff fff fffffffı fffıffı. * fc öfföfüfff füfüf ffffff cb fffıf caba * **fc füfüf föffffffff:** fÇ fe-fff ~~~~~~ * fffff fffıfffffı. **fffffff:** fÇ * bf-bf Şffff'ff ÇffÜ'ff fföfff çffışfffı füffffffffff. fffıfıf: ff, fÇ, ff, ff, ff * ÇffÜ fşfffffğf ffffffffüfü fffffffı, Öf fffffı ffffffffff. **fffffff:** ff ffffff ffffffffİfffİ -------------------- ffff ~~~~ * ffffffff c ffffffıfff fff fffffffıff ffffff fffıfıfffff. fffff ~~~~~ ffff ~~~~ fffff ~~~~~ * ff füffff öffffffff. * ffffffffff çffışfffffı fçff fffff'fff fffff ffff fff föfüşüffü. * ffffffffff fffffffffı fçff fffff fff föffff ffffffffı. ffff ~~~~ * ffffffff c ffffffıfff fff fffffffıff ffffff fffıfıfffff. ffff ~~~~ fffff ----- fffüf ~~~~~ * fff ffffffff fff fff ffffffı fffffı, fffff ffffffff, fff fffffffı, fffıffffffff, ff ffffffffff ffffff ffffffffı fffffffff. * fff ffffşfffffffff fff fffff fffffı fffffffff. * fffüfffffffff fff ffffff fffıffffffff fff. * fffffffff.ffffff.fff.ff ffffff ffçffff. fffff ~~~~~ * ffğıffıf fff fffışffffıf ffffffı fffffıffff ffffff'ff caad-caaf föfffffff ffğffffffffffffff fffffffıfff. * Şfffffff fffıffffffff fffıfffff'ff föffffffff. * fffffff ffffff ffıffffı caba fıfıff fffıfff. ffffff ~~~~~~ * fffffıf'ıf fffffff c ffffff (fÇ + b ffffff) ff fff föfffşfffffff ffffffffffı fffıffff +c ffffff ffıfı ffffffffffı. * ffff fffffff ffffffıfff c. fffff föfffff ffffffı ffıfı ffffffffffı. * fff ffffff fşf ffffffıfff b ffffff föffffffff ff b ffffff ffffffı ffıfı ffffffffffı (?). * ffffff fffffffffff: - ff ffff föfüfff (bf Şffff) - ff fffıffı, ffffff b ffffff - e ffffff fffıfı fffffff fıfffıffı: + b ffffff föffffffff + fİf (ff!) + b f "üfüf föffffffff", b f ffffşffffff * ff fçff fffff fff ffffşffffff (ff), ffffff föfüfüfffff * ff fçff fffffff/ffffff ffffffffff (fffffffff) * ffşffffffff: ff (-), ff (-), ff (+), fff ffff ~~~~ * **ffff ffffffffföfü:** fÇ ffŞ ffffffff ------------ fffff ~~~~~ * fffff fffff ff föfffff fffffff: fffffff ffff ffçffff, ffffff üfffffff fffffffff. **fffffff:** ff + fÖ, **fffff:** f Şffff fff ~~~ * Şfffffff fff İç fffffff'ff. fffff fffffff ff fıfıfıf föffffffff. fffffffı fffıffı. * föfffşff ffffffffffı fffıffff ffğfff'ff fffıff b ffffff föffffffff, b ffffff ffffffı ffıfffff. * fff fıffıf ffffşfffff fçff c fffıfıf ffffffı füfçffffff. fffffıf'ıf fffff fçff füşüfüfüfff. * föfffşff ffffffıfff fffıfffff çffışfffff: - ffff fffffff + ffff ff ffffşfffff + ffff + ffffffff **fffffff:** fff + ff, **fffff:** caba ffff - ffffffff fffffff + "fff fffff şfff!" + ffçfş fşffffıfff ffffffff ffff fffffffffıfıf fff fffffffffffı ffğfffffff. * fffff fffffffff: fff (föfffşff ffffffıfff ffff. füf. fff.) * İfff fffffff ff fffıfı fçff ffff fffffff ffffffffı ff füffff fffffffffffı fffffffff. ffÜf ~~~~ * fffff fçffffffff ffffffff c'ff ffçfş fçff fffıffffff fffıfffff. **fffffff:** ff -> ffff. föf. fff ~~~ * föç fffffffffı ff fffff fffffff fffff fffffffffff çıfffıffı. * caba fıfı fçffffffff ffffff fffffff füfffff ffşıfffffff... ffff ~~~~ * ffffffff ffffffffı. * fff f fçff föfffşff fffıffıffffı füfüfff. * fff ff fçff ffffff fffıfı üfffffff çffışıfıfff. * b f İş ffffffff, c f ffffff füfffffff ffıfı ffffffffffı. * İş fffıfffff fffüfffı'fff fffff_ ff fe-fff_ fçff fıfff fffffüf fff. fffffff ~~~~~~~ * c ffffff ff ffÜ'fff ffffffşff ff ffffüf fffffıfı ffıfı fff füfüfüfffffffff fff fffff. * fff ffffff cabb fffffff ffçffff füffffff ffffffffı... föfffföf ~~~~~~~~ * fffşfıfff ffffffığı fff çffışfffffıf fffffff ffşfffffı ffffıfığı ffffff fffş. * fff fffff çffışfffffı füfüfff. **fffffff:** fff * fffffff fffffff'f föfüşfüfff ffffffffı. **fffffff:** fff İfff İffffff ~~~~~~~~~~~~ * fffff füffü fff ffff fffffff ffffşfffff çffışfffffı fffffffffı. İfffffff/İfffffff ~~~~~~~~~~~~~~~~~ * fff fffff fffffffıfı fffıfffff. **fffff:** ffff fff ~~~ * Şfffffff fffffffff ff fffffff fffffff fİf'f ffffffff. ffffff ffffffığı ~~~~~~~~~~~~~~~~ * caba fıfı fçffffffff fffşfffff fffffff fffffffıfıfffff. fff ffffffff ------------ fffff ~~~~~ * fıff ffffff üfffffff çffışıfffff ffff fffffff: - *ffff 'ba ffffffffı:* fffff çfğfıfı fffff. - *ffffffff:* ffff ffffffffü öffff ffffff ffffffff. - *fffff:* fffff fffffffffff ffffffffff. - *fçıf ffffff ffff (fff) ffff fffffff:* ffffff fş fffıfı fff ffffıfı fff Şffff ffı fff fffıfıfff ffffffffff. - *ffffff ffffffff fffşıfffıffığı:* ffffff fffşfffffffff Şffff ffı fff fffıfıfff ffffffffff. - *föç ffffffff ff ffffı:* ffff fffff fşfffff füfüfüfffff. - *fğffff:* fğffff fffffffı öffffff fffıffffffff Şffff ffı fff fffıfıfff ffffffffff. * ffff ffffff üfffffff çffışıfffff ffff fffffff: - *füfffff ffffff.* - *föfüfü ffffff fffffffff.* - *ffşıfffffff ffffff ffffffffff.* fff ~~~ ffff ~~~~ ffff ~~~~ * Çffışff fffff fffşffffffffı fffffffff. İff çffışfffı fffıfffff. fffff ~~~~~ * İff ff fffff ffffff föffffffff. ffffüff ~~~~~~~ * ffffffff ffffff ffffff fffffffffı füşüfüffffff. fİf ffffıfığı fff fffff ffffffffff. İŞ fffffffff ------------ fffffıf ~~~~~~~ * fff: ffff fffffffff fffff çffışff fffıffffı (**fffffff:** ff), fffffffff üfffffff ffffff fçff ffffffffff'f fff ffffff fffffff füffffffffff (**fffffff:** ff) fffffffıfff. ffff ~~~~ * föfffşff fffffğı fffşfffffff. * İff fffüfffı füfffffffffff fffffffff. **fffffff:** ff * fff föfffföf_ ffffffıfff çffışffffff ffşfffı. fffıfıf ~~~~~~~ * ffffffff: ffffffff fffff fffffff ffffşfffff fffffffff föfüşüfüfff. ffffff ~~~~~~ * ffffff cabb ff ffffff ffffffff d fçff ffffffıfı ffffffff fffffıf füffffff ffçffffff fffffffffff. fffffff ------- fffffffffff ~~~~~~~~~~~ * ffffffff ffffşff * fİffÖf 'ba İfffİ İŞfff ----------- fffıfffff ~~~~~~~~~ rst2pdf-0.93/rst2pdf/tests/input/background.png0000664000175000017500000004011211205271626021411 0ustar ralsinaralsinaPNG  IHDRxO,sBIT|d pHYs"."./tEXtSoftwarewww.inkscape.org< IDATxy{fΰ0" ^ګ֫VfY.㾥eڦeZJ&" 0[^Lss|s˟*""dNeP ^x2*ՈКk3媫KhסC=՞9/o{nMiX.Wu#Fmwl]{lvմ!Ɲx}iRU1b/$v{FZy pu555ţ;N8+qno7^ u3^{5箴h˗-xm\|ѱlxԽ>Eq֑߉vv @̘ ލh~}ZI @Q'KNO>.YҷΟWhX=/@ ޞ9#n伢v)1W xR믊|xRS 4+-b͆FuKbEy1;xN2i;1ùk.PI/Dz%KcΉ|Hz?<'GEE&>xN('8;3/@ }k}3/@ ĨvN^x2J( ^x2J( ^x2J(V544WYU=άg:vU/@fϘx[^g^x?'KHM>%3./>7^rA#> PU ά1kڔ ӱs6" dҍ/<;#o.z[mUUU^ >$***K|Y@Kw )iӶ]|# xRrGG^=/@+.QUUU♇\577 ώ [ |>nx9xRظ*n )ګ4+-bÏǦzx{挘5mr<Ǣ={wl^^ zn<83v-"r@qygxߍuh'J`f98OzXMm\/Pv223J]ծV^ҽ>Q/@F %d Q/@F %d Q/@F KRZ^,VhgDΝ[Y=?{&|pn,^ /XZ\u֣GtNl8pPv>2rv?DVX7ܣ{sJh\>>oNhߡc fAG س^577Ǔ/m|,?/s>e#_8vkâs% y΍O9.}kVڧ${w<q Ƙw)ʒn(wߚuh&Z^,;7t {$qϭ7^Nμƕ8.Iqd ƸScْ5/s>qk{^55mJgrCEx;s~"-+Me(>,[$Xħ^,|{ܣ}F{䞻b x=wGs?4ju{API}يjݣnȨ.ݺ϶>|=fMOwO4\QОK|";/y΍ޙSlu׋~rzl:|TiZ ]{}Ŗ;;y3ק&޳h'1hȰDs>n  ԥkq-O[q7FAͿ3/ߞ]ܷ=)Yk W'6g}kVH  Iq8}k6xnyg^ u|xf`ݐ46,O'x-^<4.)ں3K-|>hFR״1LZ[30wx{'***%VE'$s^{'/@ Ű۬owk։!䧱7)q14ܵ[8x_w:>u| _*x Ђ***b=?0-$>zXÚعsѻ^Vҵ{ڽG/@F %d Q//$H]̛~ \-/N]%=cz \-/.ݒK5!+ % WkkCRn {d nȂg沸bтOJxQ6>`E= &>|uӯl\7} Q]&]{zEߚѱsVyv #c<=;{{v J2oEvsZy-`5iPx՗k.㿶oryp{ -6mqgL>|_xW?)W5/P***bN[bysأb%-ec̎ĀAi"fN}-:;Y%)e2>ܵ[ڧys?s~pX9urI @Y{8󣪪*SZĊbއs%en8"NxႸbE}}Q{^,m/W\zJ[bEgCƛ nyl6rLڧ|"R/Pֺ':N2j  @&nEpq7FElsfΈ?\lķM6M61skp޼XdQ,[8-Y +W-+cc?!勉^ uCGMXuWs>XK/N]&"u#8O-3O%xJd˝v<)/NL<#ЗyHh`}xF(\.Fmc⹅%xJl@m]EO<#X %iX"W5$xJ|>^x2J( ^lpn\<3V.ջo͊xM̚69-Yc._=JIJ!e~w>W5۳w/==!ѻo,>>H+W9oWvDR`/Z߾柵E {чbْ%'xO-xQ6@fϘ+wikCR7vɢpkjXʪd/)%ԩK3ImM̚xCQ%Yӭg3_/[m]uO<#ֳg♙S_/Llk3ߟxKwȠ4wEIJ%K|MbgH^ u[lmTV&ϕ ϋ><̜W%e܉?S&4?hȰ3PBvACŌ^I<۳_1*jj m!VǜǬiS_M( ߩxw{ѻos>ػ޼-7#١9( :t}ngXЬ 'j]{,hVFUUUz⩑U}Jҭ{oEc]X(KcN>>*+׌پC8sc,ɾ5OXcq܅GN>(5uqcλl %w.v>'=z7:6Nf|~ߒ֟ԥktq~=+W,Ocޱ#v{hӶmǴOiuGa'4z^yhŋ~s_y)N=1{^,vم}F[Q_7^pfjhH<+4xaiߞs/i/ Kg^ u~vM2#'xUN媫"ь n@m]'?HcNf1[%xnE}Fjs/Pѱɰi~~QQ< @Yn&~rÎ\.sZv{tgg׎?% ***c7fϘo1#--7&OS&%ݷ_nЦm7pPEu-j N]cc%{m U;J'2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^x2J( ^`ѽ:g0Z^`1.LM3EjFVU\m1/* 5r8SW|X-xQq^`[Ǟ_ncbnKֶG.% n_=}GEEy#+kM93GC0xڽGXk1CFI|& ^x2J( ^x2J( ^ʥ}@)XxQ,??VX*UWG=KQY @&/]l1kڔXhl\-ѥ{1|bVEu{s^ SyŔ&FSSSDDDsss,?/Ο__qI>>,j{ d'}wx#oN5{ckG0-3%k@{aqҷgs&ʋq份 ?#ϧ}J?{'9KWRsssryԃJy?Ǽ1獋:'kX?xոK @y޻&3Z̴_ۯ=/PV|qեi?Cw/P6Wm]i*麘܂^l=ȃJ| @A&o,[=Ѷ}\V\ڑGvvY( /=g۴m{1*o<8ڴmWxo[1kڔc g1rɒ n'cִ)liqY^ K|竪  1;;?^|{/[_})2ќo{#'^ɥצw?c.3/F)hgL<#oo'O>3uEIDATh8ӣCΉg?;g^ u O<3x谨|8=Y7—-?/ n9YMm] \RVȟ ~3x 8̲%K1ь n $)[]]]\sss @;źmkCRnGnW_ע/H]nN]T_!-|Q6@Yvq艧E?7uGƏν$ZK~nq?7Nys?6mE]Uf/PVAy9QtI1*+}xաSO(k7@F %*xJhyZY/@,_Ø5}jWkW']vmtҵX +W'_y]n< ^հre\~1Pmt5ѱsw Ǵ_(z׀AqbnO4|cKkMK-Y܍xU qi'Ĕ5uqkc%x>qUC\y1Ed8q% =]mY8h߱S . ?WU٢w kٸ!DJw7'En 3NI)zƛ .*wX3jMq'+>UAm?hסC .|ZMq͙%Cj܍/jjlk:%^~ɢw :,h׾} .[}:MMMq٧KOO(zW[w# ewOz]/<ڶk ^`-ןsZdqwa#RMMMsO&<^M_xyiۮ9n8x/nȲ/{iG޵QqE܍x5Xsssp12/jnn/8+&>pѻ69&=hӶm .+cgs>X!cmڔ/FG}5tز/㦋΍g.AUK6FDϋ]ou蜋"W]q7B|>nx?kؖ[3w#|ȸ|>;?zqw6s/D܍x qĄ?W[o7ws%u@& ckκ Sq77x /E3/\ri.j|>nxk;Qgɸ @q}/zvt܍/!x޻3j?=/JpUz^ x;G~nn dW_E.qiq77x2k/G~q5*Fx(cx_gλN=;*+׬w^׬`믊U{52Fx(CUo,z}'>|\UmEu{GEEEѻ^kw#"ޘ<)NK:to_>;Q7|d{ּw̺kuq-~钘 qGW_ #eŧ?iѪ|<=/h^Rqۥ}Fj_ěS''x=胱d´HMsssW{ 6t8;woN53VL l5u>KJ?&""h\՘EUYUUUU%%e2۴I%d Q/@F %d Q/@F %d QW|s0xsƌXli'}\uڣGt+Z'68(2ڴm:o͍?+^rڧMv1t1zcNEUUU=K¼OXdqڧax _|1|ZY .o?#q>xgN\qc?x^ u{8fjg_}9:;I%+9er'%EO?tv @1=ZEc}/>H]ҥiЪj\L{)9;ExRlɒDsss;^֬x?O4#X=456FUf^x2J( ^x2J_{eWYp93gf2d@ &~1@HTЊZAA$ؖj BJ//]BMA(KB. (d"3.Ud9{>>k>Y P͛+<z·Y̘qV+l^=ꇅgz %wwos/@{gq_~8 Θg=.'4PS{_|Dy?XQK  ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )^֌;/P403i6E*7}`N[[[ci<^r:?j+ppF9@f+^_ҳ{7 #²ό=:z1~NMjdx^w_x^uHU/Xp̒x|Ƙq1u@Wڈ##N=1;1UF4hHJHJHJHJHJHJHJHJHJHJH^Ɇ-^jkk/z'D讦/#ʝf\ɏ37TJaw/}/=^6/ZZ% /0" mKb7Z* 7_;n|,98|ɲhmmrS_~_oyC\q۰!{⟯lk ?>>~q۶z T{Vs/_鹱gK;S*Ț^)Vߵ2>bSOr T'zyGy>K*7}uŧ>|a mߡs^ uNJW/@Ev u پ}{|3 PX K)w{*a`lxG14c?1_9H3ωX\1ySTy ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )d{LKKKf Zfu1GV, %[s xJtw+Qxn\3/@Iٸ!|yC3[xF(Ņl)l##kJwx~`ChZg_𡘶:G*73pxM5P M's^O.RN3̭za9+}GU=3^r.>[Sg *>RxʵqD{GGի?xCW^NQOhO.x^aZKbKEǨaKFgE&ăGX[lzߪcEo_ǔǼ_=sSnxXxXxҪW ) ) ) ) ) ) ) ) ) ) ) z yۿc#:FuY/Ҥc}^R Tq͛*ݡ+SvZߧxnKq-_z~g,8fISeӦ Ϗ_nִ{^\q[uW7>D_XvMSxJ}Xⶦ%lݚr PMr P{ 4d澼)%{^t%;F֜*``}ҫ!&k7&3:b1s^W6훻KRZvq^R^ V xzTB^ 1 S xF{E ZǨΪר TXz!8eBϏ7~6E*7m`N{0m TGD{GK~~}mx2ejwg9a(;eX{ݿZD 5w $%$%$%$;YF0ƅGIENDB`rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/0000775000175000017500000000000012064144443021374 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/misc.rst0000664000175000017500000000030111244542260023051 0ustar ralsinaralsinaMisc Markup =========== .. sectionauthor:: Roberto Alsina .. only:: html This shows in HTML, not in PDF .. only:: pdf This shows in PDF, not in HTML rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/inline.rst0000664000175000017500000000136011244554707023413 0ustar ralsinaralsinaInline Markup ============= :mod:`parrot` should link to the parrot module :func:`parrot.ham` hams the eggs and links to the definition :cfunc:`PyType_GenericAlloc()` is C and links to the definition :command:`ls` is a OS-level command :kbd:`Ctrl-C` interrupts :mailheader:`From: ralsina@kde.org` is my email :manpage:`ls(1)` explains ls :menuselection:`Start --> Programs` If you don't have an arrow between start and programs, your font doesn't have \u2023 :mimetype:`text/plain` :newsgroup:`comp.os.advocacy.linux` :program:`notepad` :regexp:`^ERR` :term:`term1` and :term:`term2` link to the glossary. so does :term:`Term number 1 ` Substitutions ============= Release: |release| Version: |version| Today: |today| rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/code.rst0000664000175000017500000000156511244541425023047 0ustar ralsinaralsinaSyntax Highlighting =================== .. highlight:: python :linenothreshold: 5 .. code-block:: python "Some code without linenos." .. code-block:: python :linenos: "Some code with linenos." .. code-block:: python "This has less than 5 lines, so no linenos" .. code-block:: python "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" :: "This is before a highlight:: none, so it has highlight" .. highlight:: none :: "This is after a highlight:: none, so no highlight" .. literalinclude:: conf.py :lines: 1,3,10-20 rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/conf.py0000664000175000017500000001606711347532751022713 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Sphinx markup documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sphinxmarkup' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'sphinxmarkup' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'sphinxmarkup.tex', u'sphinxmarkup Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = True # If false, no modindex is generated. pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = True pdf_break_level = 1 pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/index-gen.rst0000664000175000017500000000142211253564656024016 0ustar ralsinaralsinaIndex-Generating Markup ======================= .. glossary:: term1 A term in 1st place term2 A term in 2nd place :term:`term1` and :term:`term2` link to the glossary .. index:: single: execution; context module: __main__ module: sys triple: module; search; path In the Index, there should be several entries pointed here, generated by this:: .. index:: single: execution; context module: __main__ module: sys triple: module; search; path .. raw:: pdf PageBreak Glossary ======== This is a section called glossary. It should not be confused with the glossary up there (Issue 190) THis link: :ref:`glossary` should link to the glossary, not the section called glossary. rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/paragraph.rst0000664000175000017500000000160611244541425024076 0ustar ralsinaralsinaParagraph-level markup ====================== .. note:: This function is not suitable for sending spam e-mails. .. versionadded:: 2.5 The `spam` parameter. .. versionchanged:: 2.5 The `spam` parameter. .. seealso:: Module :mod:`zipfile` Documentation of the :mod:`zipfile` standard module. `GNU tar manual, Basic Tar Format `_ Documentation for tar archive files, including GNU tar extensions. .. centered:: LICENSE AGREEMENT .. hlist:: :columns: 3 * A list of * short items * that should be * displayed * horizontally .. productionlist:: try_stmt: try1_stmt | try2_stmt try1_stmt: "try" ":" `suite` : ("except" [`expression` ["," `target`]] ":" `suite`)+ : ["else" ":" `suite`] : ["finally" ":" `suite`] try2_stmt: "try" ":" `suite` : "finally" ":" `suite` rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/module.rst0000664000175000017500000000314411244537413023417 0ustar ralsinaralsinaModule-specific markup ====================== This document tests sphinx markup from section "Module-specific markup" in the sphinx docs, using the snippets from the manual. The rst2pdf output should be a hybrid between the LaTeX and HTML outputs. .. module:: parrot :platform: Unix, Windows :synopsis: Analyze and reanimate dead parrots. .. function:: spam(eggs) ham(eggs) Spam or ham the foo. .. cfunction:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) .. cmember:: PyObject* PyTypeObject.tp_bases .. cvar:: PyObject* PyClass_Type .. function:: Timer.repeat([repeat=3[, number=1000000]]) .. class:: Foo .. method:: quux() .. class:: Bar .. method:: Bar.quux() .. function:: compile(source[, filename[, symbol]]) .. function:: compile(source[, filename, symbol]) .. function:: compile(source : string[, filename, symbol]) -> ast object .. function:: format_exception(etype, value, tb[, limit=None]) Format the exception with a traceback. :param etype: exception type :param value: exception value :param tb: traceback object :param limit: maximum number of stack frames to show :type limit: integer or None :rtype: list of strings .. cmdoption:: -m , --module Run a module as a script. .. program:: rm .. cmdoption:: -r Work recursively. .. program:: svn .. cmdoption:: -r revision Specify the revision to work upon. :option:`rm -r` should refer to the first option, while :option:`svn -r` should refer to the second one. .. describe:: opcode Describes a Python bytecode instruction. rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/Makefile0000664000175000017500000000606011244407643023041 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-markup/index.rst0000664000175000017500000000035511253564656023253 0ustar ralsinaralsinaSphinx Test Document ==================== This is a test document .. toctree:: module inline paragraph code misc index-gen Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` rst2pdf-0.93/rst2pdf/tests/input/test_issue_143.txt0000664000175000017500000000013211242046326022077 0ustar ralsinaralsinaA title with ``literal`` ------------------------ The literal should be in courier bold. rst2pdf-0.93/rst2pdf/tests/input/test_issue_186_2.cli0000664000175000017500000000002611406362557022272 0ustar ralsinaralsina--use-floating-images rst2pdf-0.93/rst2pdf/tests/input/test_issue_116_1.png0000664000175000017500000000523711203640600022267 0ustar ralsinaralsinaPNG  IHDR h܀ysRGBPLTEU~bKGDH pHYs  tIME$]tEXtCommentCreated with GIMPW IDATxA k`6-RL~ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;޽ݻw ޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{.w{ǻw{ǻw{wxwxwݻw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw%xwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxwݻ;޽;޽;޽{ǻw{ǻw{ǻw޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxݻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻw{ǻw{ǻw{ǻwxwxwx޽{޽;޽;޽ݻw{ǻw{ǻw{ǻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx]wxwxwx޽;޽;޽ݻw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;޽ݻw{ǻw{ǻw{ǻwxwxwx޽K޽;޽;޽ݻw{ǻw{ǻw{ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;޽ݻw ޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw޽;޽;޽ݻw{ǻw{ǻw{.w{ǻw{ǻw{wxwxwݻw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxw;޽;޽;޽ݻw{ǻw{ǻw{wxwxw%xwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{ǻw{ǻw{ǻw{wxwxwݻ;޽;޽;޽{ǻw{ǻw{ǻw޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻwxwxwxw;޽;޽;޽{;޽;޽;޽{ǻw{ǻw{ǻwxwxwxݻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx;޽;޽;޽{ǻw{ǻw{ǻw{ǻw{ǻw{ǻwxwxwx޽{޽;޽;޽ݻw{ǻw{ǻw{ǻwxwxwx޽;޽;޽;޽{ǻw{ǻw{ǻwxwxwx]wxwxwx޽;޽;޽ݻw޽;޽;޽ݻw{ǻw{ǻw{wxwxwx޽;޽;ޗ{Nfm IENDB`rst2pdf-0.93/rst2pdf/tests/input/test_issue_128.txt0000664000175000017500000000033611246477773022132 0ustar ralsinaralsina======= Heading ======= ----------- Sub Heading ----------- Level 1 ======= Level 2 ------- Level 3 ####### Level 4 """"""" Level 5 ^^^^^^^ Level 6 !!!!!!! .. contents:: .. section-numbering:: rst2pdf-0.93/rst2pdf/tests/input/test_issue_301.txt0000664000175000017500000000033111352670523022100 0ustar ralsinaralsinaBefore .. class:: smallbullet * small bullet * small bullet After This is a table with the same style as the bullet item: .. class:: smallbullet +---+---------------+ |XXX|small bullet | +---+---------------+ rst2pdf-0.93/rst2pdf/tests/input/test_issue_244.txt0000664000175000017500000000003611277353315022113 0ustar ralsinaralsina.. image:: test_issue_244.svg rst2pdf-0.93/rst2pdf/tests/input/test_issue_216.style0000664000175000017500000000066611265416212022435 0ustar ralsinaralsina{"pageSetup": { "width": "16cm", "height": "9cm", "margin-top": "2mm", "margin-bottom": "0mm", "margin-left": ".5cm", "margin-right": "1cm", "margin-gutter": "0cm", "spacing-header": "2mm", "spacing-footer": "0mm", "firstTemplate": "cutePage" }, "pageTemplates" : { "cutePage": { "frames": [ ["0", "0", "100%", "100%"] ], "showHeader" : true } } } rst2pdf-0.93/rst2pdf/tests/input/test_issue_294.txt0000664000175000017500000000022212060510716022104 0ustar ralsinaralsina.. image:: images/biohazard.pdf :height: 7cm .. image:: images/biohazard.png :height: 7cm .. image:: images/biohazard.pdf :height: 7cm rst2pdf-0.93/rst2pdf/tests/input/test_issue_478.txt0000664000175000017500000000215212062642504022117 0ustar ralsinaralsina+------------------------------------+------------------------------------+------------------------------------+ | PMOD B2 | PMOD D2 | PMOD D2 | | | | | | +----+----+---+ | | | | | | | | | | | | +----+----+---+ | | | | | | | | | | | | +----+----+---+ | | | | | | | +------------------------------------+------------------------------------+------------------------------------+ rst2pdf-0.93/rst2pdf/tests/input/test_img_header.txt0000664000175000017500000000026211064574035022455 0ustar ralsinaralsina.. header:: .. image:: images/title.png This text is also part of the header ###Page### This is the body of the document .. footer:: .. image:: images/title.png rst2pdf-0.93/rst2pdf/tests/input/test_list_table.txt0000664000175000017500000000051511055536175022517 0ustar ralsinaralsina.. list-table:: Frozen Delights! :widths: 15 10 30 :header-rows: 1 * - Treat - Quantity - Description * - Albatross - 2.99 - On a stick! * - Crunchy Frog - 1.49 - If we took the bones out, it wouldn't be crunchy, now would it? * - Gannet Ripple - 1.99 - On a stick! rst2pdf-0.93/rst2pdf/tests/input/test_issue_231.style0000664000175000017500000000057311351252072022425 0ustar ralsinaralsinastyles: antique1: fontName: GL-Antique antique2: fontName: antique antique3: fontName: Antique tuffy1: fontName: Tuffy tuffy2: fontName: Tuffy-Italic tuffy3: fontName: Tuffy-Bold tuffy4: fontName: Tuffy-Bold-Italic tuffy5: fontName: Tuffy tuffy6: fontName: Tuffy Italic tuffy7: fontName: Tuffy Bold tuffy8: fontName: Tuffy Bold Italic rst2pdf-0.93/rst2pdf/tests/input/test_issue_152.txt0000664000175000017500000000050311242377571022112 0ustar ralsinaralsinaThis is a regular paragraph 1. This is a literal block. If it looks badly misaligned, runs off margins, etc, isue 152 is not fixed:: This is the literal block. * This is a bullet list, and this is another literal block:: This is the literal block. :: This is a literal block outside the list rst2pdf-0.93/rst2pdf/tests/input/test_issue_295.txt0000664000175000017500000000024611352013072022107 0ustar ralsinaralsina.. header:: ==== ========== Page ###Page### ==== ========== The header should show "Page" and the number .. raw:: pdf PageBreak This should be page 2rst2pdf-0.93/rst2pdf/tests/input/test_issue_328_2.style0000664000175000017500000000034111423562064022653 0ustar ralsinaralsina styles: bodytext: parent: normal firstLineIndent: 24 bullet-list: parent: base bullet-list-item: parent: base item-list: parent: base item-list-item: parent: base rst2pdf-0.93/rst2pdf/tests/input/test_image_units_svg.txt0000664000175000017500000000165011216216760023553 0ustar ralsinaralsinaThe valid units are: "em" "ex" "px" "in" "cm" "mm" "pt" "pc" "%" "". 300, no unit == 300px at 300DPI == 1 inch .. image:: images/biohazard.svg :width: 300 1in == 1 inch .. image:: images/biohazard.svg :width: 1in 2.54cm == 1 inch .. image:: images/biohazard.svg :width: 2.54cm 25.4mm == 1 inch .. image:: images/biohazard.svg :width: 25.4mm 72pt == 1 inch .. image:: images/biohazard.svg :width: 72pt 7.2em with a 10pt base font == 1 inch .. image:: images/biohazard.svg :width: 7.2em We use the broken IE definition of ex because it's easier. So, 14.4 ex == 7.2 em with 10pt base font == 1 inch .. image:: images/biohazard.svg :width: 14.4ex 1pc == 12pt == 1/6th inch, so 6pc == 1inch .. image:: images/biohazard.svg :width: 6pc All the above images should be exactly 1 inch wide. .. image:: images/biohazard.svg :width: 100% The above image should be exactly the width of the text area rst2pdf-0.93/rst2pdf/tests/input/test_issue_226.style0000664000175000017500000000022411351252072022422 0ustar ralsinaralsinastyles: charter1: fontName: Bitstream Charter Italic charter2: fontName: Bitstream Charter Oblique charter3: fontName: CharterBT-Italic rst2pdf-0.93/rst2pdf/tests/input/test_issue_302.txt0000664000175000017500000000010511352652104022073 0ustar ralsinaralsinaFailing Definition ================== foo bar egg spam rst2pdf-0.93/rst2pdf/tests/input/test_issue_410.txt0000664000175000017500000000011611724537456022114 0ustar ralsinaralsina.. code-block:: python :include: test_issue_410.py :start-at: a = 1 rst2pdf-0.93/rst2pdf/tests/input/test_issue_132.txt0000664000175000017500000000014411216736554022112 0ustar ralsinaralsinaThis is a title, should be bold =============================== And here are *italic* and **bold** rst2pdf-0.93/rst2pdf/tests/input/test_issue_470.txt0000664000175000017500000000026112060341605022102 0ustar ralsinaralsinaContenido ========= .. figure:: images/biohazard.png :height: 200px :width: 200px :scale: 50% :target: http://www.kde.org Figura 1 ======== Esta es la Figura 1 rst2pdf-0.93/rst2pdf/tests/input/test_issue_99.txt0000664000175000017500000000021711146515605022041 0ustar ralsinaralsina.. header:: This is a very long header, trying to make wordaxe do its thing. Sic lorem ipsum dolor sit amet anticonstitutionally This is text rst2pdf-0.93/rst2pdf/tests/input/test_180.py0000664000175000017500000000126011247532222020504 0ustar ralsinaralsina# -*- coding: utf-8 -*- from reportlab.platypus import SimpleDocTemplate from reportlab.platypus.paragraph import Paragraph from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.colors import Color from reportlab.platypus.flowables import _listWrapOn, _FUZZ from wordaxe.rl.NewParagraph import Paragraph from wordaxe.rl.styles import ParagraphStyle, getSampleStyleSheet def go(): styles = getSampleStyleSheet() style=styles['Normal'] p1 = Paragraph('This is a paragraph', style ) print p1.wrap(500,701) print p1._cache['avail'] print len(p1.split(500,701)) print p1.wrap(500,700) print len(p1.split(500,700)) go() rst2pdf-0.93/rst2pdf/tests/input/test_issue_238.txt0000664000175000017500000000015711274667333022127 0ustar ralsinaralsina.. image:: images/biohazard.svg :width: 100% The above image should be exactly the width of the text area rst2pdf-0.93/rst2pdf/tests/input/test_issue_383.txt0000664000175000017500000000003611530450230022101 0ustar ralsinaralsina.. image:: images/biohazard.* rst2pdf-0.93/rst2pdf/tests/input/test_issue_110.cli0000664000175000017500000000004711362601243022024 0ustar ralsinaralsina--real-footnotes --show-frame-boundary rst2pdf-0.93/rst2pdf/tests/input/styled_literal.txt0000664000175000017500000000004412053434707022350 0ustar ralsinaralsinaThis should be a ``green literal``. rst2pdf-0.93/rst2pdf/tests/input/test_issue_223.txt0000664000175000017500000000037511267575411022120 0ustar ralsinaralsinaTo fix Issue 223, the '' in the code fragment below should be in a monospaced font. .. code-block:: pycon >>> raise Exception("Texto") Traceback (most recent call last): File "", line 1, in Exception: Texto rst2pdf-0.93/rst2pdf/tests/input/test_issue_266_2.txt0000664000175000017500000000006011327457053022335 0ustar ralsinaralsinaNormal image: .. image:: images/biohazard.svg rst2pdf-0.93/rst2pdf/tests/input/test_issue_337.style0000664000175000017500000000004311416763156022440 0ustar ralsinaralsinastyles: base: autoLeading: max rst2pdf-0.93/rst2pdf/tests/input/test_issue_358.txt0000664000175000017500000000012211450522536022111 0ustar ralsinaralsina:: This is a quote Another line. The bottom and top margins should be similar. rst2pdf-0.93/rst2pdf/tests/input/test_issue_154.style0000664000175000017500000000032111351252072022420 0ustar ralsinaralsinastyles: code: allowOrphans: false allowWidows: false backColor: #EEFFCC borderColor: #AACC99 borderPadding: [6, 0, 0, 4] borderWidth: 0.3 spaceBefore: 0 rst2pdf-0.93/rst2pdf/tests/input/test_issue_419.txt0000664000175000017500000000030111724535673022120 0ustar ralsinaralsina .. admonition:: Test The textColor and borderRadius from the stylesheet are not applied. However, the borderPadding is applied. .. class:: myclass Here, all styles seem to apply. rst2pdf-0.93/rst2pdf/tests/input/test_issue_119.txt0000664000175000017500000000021411206330314022074 0ustar ralsinaralsinaThe content .. header:: This is page ###Page### .. footer:: The document is called ###Title### and the section is ###Section### rst2pdf-0.93/rst2pdf/tests/input/test_issue_303.txt0000664000175000017500000000163411353150212022076 0ustar ralsinaralsinaBecause of Issue 303, there would be two lines of the next code fragment at the bottom of this page. .. raw:: pdf Spacer 0 220mm .. code-block:: python def a(): print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" .. raw:: pdf PageBreak Because of Issue 303, there would be just two lines of the next code fragment in the *next* page. .. raw:: pdf Spacer 0 190mm .. code-block:: python def a(): print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" print "XX" .. raw:: pdf PageBreak .. raw:: pdf Spacer 0 220mm The next code fragment **should** be in this page. .. code-block:: python def a(): print "XX" print "XX" rst2pdf-0.93/rst2pdf/tests/input/test_landscape.cli0000664000175000017500000000002011442304051022230 0ustar ralsinaralsina-s a4-landscape rst2pdf-0.93/rst2pdf/tests/input/test_issue_244.svg0000664000175000017500000010504111303135150022056 0ustar ralsinaralsina image/svg+xml DUT SAMPLE OTHER CLK0 DAT1 DAT2 CSn0 CSn1 CLK0 DAT1 DAT2 CSn INTn CLK1 DAT3 SYNC DAT4 RSTn IRQ0 CLK1 SYNC DAT3 DAT4 XCLK0 XSYNC0 XDAT00 XDAT01 +5.0V GREEKGOD XCLK1 XSYNC1 XDAT10 XDAT11 (to otherGreek Gods) XCLK XSYNC XDAT0 XDAT1 rst2pdf-0.93/rst2pdf/tests/input/test_lineno.txt0000664000175000017500000000026111130705005021637 0ustar ralsinaralsina.. code-block:: python "line 1" "line 2" "line 4" "line 10" .. code-block:: python :linenos: "line 1" "line 2" "line 4" "line 10" Not a code block rst2pdf-0.93/rst2pdf/tests/input/test_issue_74.txt0000664000175000017500000000144011066755174022041 0ustar ralsinaralsinaLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor Foo Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor Bar Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor rst2pdf-0.93/rst2pdf/tests/input/test_math.txt0000664000175000017500000000070111067040416021312 0ustar ralsinaralsinaA simple formula: .. math:: \alpha > \beta One with a few horizontal lines: .. math:: \frac{2 \pm \sqrt{7}}{3} Inline replacements works, too: |AA| <-- there should be an alpha + beta You can use a math role: :math:`\alpha + \beta` but it has some problems with spacing and if things are not one-line: :math:`\alpha^2`. Don't push it, the directive just works better: :math:`\frac{2 \pm \sqrt{7}}{3}` .. |AA| math:: \alpha + \beta^2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_103.style0000664000175000017500000000030011351252072022407 0ustar ralsinaralsinastyles: pad1: borderColor: black borderPadding: 0 borderWidth: 1 pad2: borderColor: black borderPadding: [4, 8, 12, 16] borderWidth: 1 rst2pdf-0.93/rst2pdf/tests/input/test_issue_65.py0000664000175000017500000000114211361322424021633 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- from reportlab.platypus import SimpleDocTemplate, Paragraph from reportlab.platypus.tables import * def go(): Story=[] doc = SimpleDocTemplate("phello.pdf") cell=[Paragraph('A',ParagraphStyle(name='Normal', fontName='Helvetica', fontSize=10, leading=12)),] # This story has only Helvetica #Story=cell # This one has helvetica and Times-Roman Story=cell+[Table([[cell]])] doc.build(Story) go() rst2pdf-0.93/rst2pdf/tests/input/test_issue_378.txt0000664000175000017500000000010111470477647022126 0ustar ralsinaralsina:address: line 1 line 2 line 3 (big withespace-> ) rst2pdf-0.93/rst2pdf/tests/input/test_issue_238.cli0000664000175000017500000000002611274667333022052 0ustar ralsinaralsina--show-frame-boundary rst2pdf-0.93/rst2pdf/tests/input/test_issue_345.txt0000664000175000017500000000004611434645472022121 0ustar ralsinaralsina.. raw:: pdf Whatever Some text. rst2pdf-0.93/rst2pdf/tests/input/test_issue_65_2.txt0000664000175000017500000000006511361312517022250 0ustar ralsinaralsina* The output of pdffonts should not show times-roman rst2pdf-0.93/rst2pdf/tests/input/test_issue_330.txt0000664000175000017500000000150311410165604022076 0ustar ralsinaralsina Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur facilisis consequat tortor, vitae faucibus enim mollis sed. Praesent auctor sem vestibulum sem volutpat id pharetra diam vehicula. Curabitur vulputate tellus at dolor gravida consectetur. Sed non leo neque, ut sollicitudin ipsum. Curabitur commodo semper luctus. Sed facilisis interdum bibendum. Fusce luctus cursus feugiat. Nulla ut mi sapien. Duis volutpat tortor porttitor risus pretium aliquet. * There should be a large space above the list (50pt) * And regular spacing between items * And regular spacing between items * And regular spacing between items #. There should be a medium space above the list (15pt) #. And regular spacing between items #. And regular spacing between items #. And regular spacing between items #. And regular spacing between items rst2pdf-0.93/rst2pdf/tests/input/test_vectorpdf.cli0000664000175000017500000000001511303057165022305 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/test_landscape.txt0000664000175000017500000000017711442304051022315 0ustar ralsinaralsina===== ===== ====== Inputs Output ------------ ------ A B A or B ===== ===== ====== ===== ===== ====== rst2pdf-0.93/rst2pdf/tests/input/test_issue_126.txt0000664000175000017500000000140211211225432022072 0ustar ralsinaralsina.. header:: .. figure:: images/biohazard.png :align: left demonstration ==================== .. contents:: Table of Contents .. section-numbering:: Section 1 ========== Subsection 1.1 --------------- Subsubsection 1.1.1 ````````````````````` Subsubsection 1.1.2 ````````````````````` Subsection 1.2 --------------- Subsubsection 1.2.1 ````````````````````` Subsubsubsection 1.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Section 2 ========== .. contents:: :local: Subsection 2.1 --------------- .. contents:: :local: Subsubsection 2.1.1 ````````````````````` Subsubsection 2.1.2 ````````````````````` Subsection 2.2 --------------- .. contents:: :local: Subsubsection 2.2.1 ````````````````````` Subsubsubsection 2.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ rst2pdf-0.93/rst2pdf/tests/input/test_issue_181.txt0000664000175000017500000000764311247050771022123 0ustar ralsinaralsinaThis is a very long quote, longer than a page: I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. I think therefore I am. rst2pdf-0.93/rst2pdf/tests/input/test_framebreak.txt0000664000175000017500000000032111466402437022466 0ustar ralsinaralsinaThis is in page 1, frame 1. .. raw:: pdf FrameBreak This is in page 1, frame 2. .. raw:: pdf PageBreak This is in page 2, frame 1. .. raw:: pdf FrameBreak 5 This is still in page 2, frame 1. rst2pdf-0.93/rst2pdf/tests/input/test_field_widths.style0000664000175000017500000000033111423562064023352 0ustar ralsinaralsinastyles: field-list: colWidths: [50%, 50%] commands: [] [VALIGN, [0, 0], [-1, -1], TOP] [TOPPADDING, [0, 0], [-1, -1], 0] parent: bodytext spaceBefore: 6 rst2pdf-0.93/rst2pdf/tests/input/test_issue_46.txt0000664000175000017500000000015011061604563022023 0ustar ralsinaralsinaCitizen_ .. _Citizen: http://www.breezerbikes.com/bike_details.cfm?bikeType=town&frame=d&bike=citizen rst2pdf-0.93/rst2pdf/tests/input/test_aafigure_extra.txt0000664000175000017500000000046411243152305023352 0ustar ralsinaralsina====== てすと ====== .. aafigure:: +------------------------------+ | いろはにほへと ちりぬるを | | わかよたれそ つねならむ | | うゐのおくやま けふこえて | | あさきゆめみし えひもせす ん| +------------------------------+ rst2pdf-0.93/rst2pdf/tests/input/test_issue_394.txt0000664000175000017500000000014511760040710022107 0ustar ralsinaralsina=== Foo === Bar. .. image:: images/biohazard.svg :align: right :height: 200 This is a test. rst2pdf-0.93/rst2pdf/tests/input/test_issue_110_3.cli0000664000175000017500000000004711363113512022244 0ustar ralsinaralsina--real-footnotes --show-frame-boundary rst2pdf-0.93/rst2pdf/tests/input/test_issue_293.style0000664000175000017500000000004411351252072022426 0ustar ralsinaralsinastyles: centered: alignment: center rst2pdf-0.93/rst2pdf/tests/input/test_codeblock_tabs.txt0000664000175000017500000000020611424624542023324 0ustar ralsinaralsina.. code-block:: makefile :include: test_codeblock_tabs .. code-block:: makefile :include: test_codeblock_tabs :tab-width: 4 rst2pdf-0.93/rst2pdf/tests/input/test_autoleading.style0000664000175000017500000000003611351252072023176 0ustar ralsinaralsinastyles: bodytext: fontSize: 8 rst2pdf-0.93/rst2pdf/tests/input/test_csv_table.txt0000664000175000017500000000042211055536175022334 0ustar ralsinaralsina.. csv-table:: Frozen Delights! :header: "Treat", "Quantity", "Description" :widths: 15, 10, 30 "Albatross", 2.99, "On a stick!" "Crunchy Frog", 1.49, "If we took the bones out, it wouldn't be crunchy, now would it?" "Gannet Ripple", 1.99, "On a stick!" rst2pdf-0.93/rst2pdf/tests/input/test_issue_266_4.cli0000664000175000017500000000001511327621004022254 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/test_background_svg.txt0000664000175000017500000000004411205137262023357 0ustar ralsinaralsinaThis should have a fancy background rst2pdf-0.93/rst2pdf/tests/input/test_strip_elements.txt0000664000175000017500000000014012057517776023435 0ustar ralsinaralsina.. class:: missing This should not be visible This should be the 1st paragraph in the output. rst2pdf-0.93/rst2pdf/tests/input/test_issue_288.txt0000664000175000017500000003072011350226716022122 0ustar ralsinaralsina.. _rfc3: ============================================== MS RFC 3: Feature Layer Plug-in Architecture ============================================== :Date: 2005/08/22 :Author: Jani Averbach :Contact: javerbach at extendthereach.com :Last Edited: $Date: 2008-12-23 22:34:31 +0100 (Di, 23. Dez 2008) $ :Status: Adopted :Version: MapServer 4.8 :Id: $Id: ms-rfc-3.txt 8278 2008-12-23 21:34:31Z hobu $ Abstract Solution ----------------- Implement a virtual table structure for ``layerObj``. This structure will contain function pointers for all layer specific operations. This structure will be populated when the layer is opened or first time accessed. After that all back-end format specific layer operations will happen through this vtable which is cached in the ``layerObj`` struct. Technical Solution ------------------ All file names and numbers are against released MapServer 4.6.0 source code. 1. Add new field to the ``layerObj``. It will be pointer to the vtable, which will contain function pointers for this layer. 2. Add the virtual table architecture The vtable will be initialized when the layer is accessed at the first time. The vtable will be populated with dummies when it is created and these dummies will implement feasible default actions if there is any (e.g. do nothing) or return error by default. 2.1. Standard functions which are found currently from ``maplayer.c`` 2.1.1. InitItemInfo :: int (*LayerInitItemInfo)(layerObj *layer); 2.1.2. FreeItemInfo :: void (*LayerFreeItemInfo)(layerObj *layer); 2.1.3. Open :: int (*LayerOpen)(layerObj *layer); Currently there are two layers which accept more than the generic layer arg for LayerOpen function: :: int msOGRLayerOpen(layerObj *layer, const char *pszOverrideConnection); int msWFSLayerOpen(layerObj *lp, const char *pszGMLFilename, rectObj *defaultBBOX); However, these are called from ``msLayerOpen`` with ``NULL`` args, so I think that proposed interface for this virtual table function should be fine. 2.1.4. IsOpen :: int (*LayerIsOpen)(layerObj *layer); 2.1.5. WhichShapes :: int (*LayerWhichShapes)(layerObj *layer, rectObj rect); 2.1.6. NextShape :: int (*LayerNextShape)(layerObj *layer, shapeObj *shape); 2.1.7. GetShape :: int (*LayerGetShape)(layerObj *layer, shapeObj *shape, int tile, long record); 2.1.8. LayerClose :: int (*LayerClose)(layerObj *layer); 2.1.9. LayerGetItems :: int (*LayerGetItems)(layerObj *layer); 2.1.10. GetExtent :: int (*LayerGetExtent)(layerObj *layer, rectObj *extent); 2.1.11. GetAutoStyle :: int (*LayerGetAutoStyle)(mapObj *map, layerObj *layer, classObj *c, int tile, long record); 2.2. New functions and/or fields for vtable 2.2.1. CloseConnection This function is used to actually close the connection, in case that layer implements some kind of connection pooling by its own. If layer doesn't use any connection pooling, this function should be implemented as no-op. Caller should first call layer's "close" function, and finally at the very end ``CloseConnection``. The signature of function is :: int (*LayerCloseConnection)(layerObj *layer); And the main place where this function will be called, is ``mapfile.c: 4822`` :: void msCloseConnections(mapObj *map) This function is needed because e.g. ``POSTGIS`` is implementing this usage pattern at the moment ``maplayer.c:599`` :: void msLayerClose(layerObj *layer) ... /* * Due to connection sharing, we need to close the results * and free the cursor, but not close the connection. */ msPOSTGISLayerResultClose(layer); 2.2.2. SetTimeFilter This function is used to create a time filter for layer. At the moment we have three special cases (``maplayer.c: 1635``): 1. ``POSTGIS`` with it's own function 2. Layers with backticks delimited expressions 3. Layers without backticks The idea is provide a generic helper function, :: int makeTimeFilter(layerObj *lp, const char *timestring, const char *timefield, const bool bBackTicks) And the actual layer's ``SetTimeFilter`` could use the above, or implement something totally different as ``POSTGIS`` is doing at the moment. The signature for layer's vtable function is :: int (*LayerSetTimeFilter)(layerObj *lp, const char *timestring, const char *timefield); 2.3. Extra functions to add to the vtable 2.3.1. FLTApplyFilterToLayer (``mapogcfilter.c: 1084``) This is the main filter interface for layers. We will provide two helper functions, one for "SQL" case and the another for "non-SQL" case, and set all layers, except ``POSTGIS``, ``ORACLESPATIAL`` and ``OGR`` to call directly this "non-SQL" version of this helper function (else-branch of if). ``ORACLESPATIAL``, ``POSTGIS`` and ``OGR`` could use "SQL" version of the helper function (actual if-branch) if the conditions for this are met, otherwise they will use Non-SQL version of the function. 2.3.2. layerObj->items allocation There will be vtable function for allocation ``items`` and initialization for ``numitems``. If layer has some special needs for these objects it can override default function. The signature for function will be: :: int (*CreateItems)(layerObj *) which does the allocation and set numitems to correct value. 2.3.3. msCheckConnection (``mapfile.c: 4779``) This API is deprecated. It is called only from ``msMYGISLayerOpen``. We will not provide this functionality through vtable. 2.4. Interface functions for internal layers We have to add some new interface functions to access layers. 2.4.1 Function interface to initialize internal layer type We need a per layer type a function which will be called when the layer's vtable has to be initialized. These functions will be :: int msXXXInitializeLayerVirtualTable(layerObj *) where XXX will be name of the layer. This function is called anytime when the vtable isn't initialized and the layer is accessed at the first time. 2.4.2 Function interface to change the connectiontype of layer To change the connection type of layer, it has to be done by function interface. Accessing directly ``connectiontype`` field is not supported anymore. To change the connectiontype and to connect to the new layer, there will be following interface function :: int msConnectLayer(int connectiontype, const char *library_str) where ``connectiontype`` is the type of new layer, and ``library_str`` is the name of library which will prodive functionality for this new layer. For internal layer types this second argument is ignored. 3. Remove unwanted interfaces Frank Warmerdam proposed [FW1]_ that we remove all layer specific interface functions from ``map.h``. I see each "built-in" module such as mapsde.c providing a registration function such as "msSDEInitializeLayerVirtualTable" so that none of the layer type specific definitions need to appear in map.h any more. .. [FW1] | ``Frank Warmerdam on the mapserver-dev:`` | ``Message-Id: `` | ``Date: Wed, 17 Aug 2005 22:31:09 -0400`` | ``Subject: Re: Mapserver Plug-in Infastructure: RFC and PATCH`` Files and objects affected -------------------------- This proposal will affect at least following files and objects: * ``map.h`` * ``layerObj`` will contain new fields. There will be a new object ``vtableObj`` in the ``map.h``. * ``maplayer.c`` * Various changes, layer specific ``switch``-statements will go away, vtable handling and layers vtable initialization will be added. * ``mapfile.c`` * Cleaning of ``msCheckConnection`` * Vtable for ``msCloseConnection`` * ``mapogcfilter.c`` * Remove layer-logic from ``FLTApplyFilterToLayer`` * ``mapXXX.c``, where ``XXX`` is the name of layer. * Add new initialization function * Add all new interface functions * Fix existing interface functions, if needed / add wrappers for ``msOGRLayerOpen`` and ``msWFSLayerOpen``. Backwards compatibility issues ------------------------------ This is binary and source code level backward incompatible change. The proposal will remove some previously public functions, and add new field(s) to the ``layerObj`` struct. This proposal is not MapScript backward compatible, it will break scripts which change directly ``connectiontype`` field in ``layerObj``. The proposal is MAP-file backward compatible. Implementation Issues --------------------- * Biggest problem is probably that the author has ignored or missed something by oversight which will show up during implementation. However, there is a prototype implementation of external plug-in architecture which works at the moment and is based on ideas presented in this proposal. So there is some real life experience that this architecture change is feasible thing to do. * I also like to note that this proposal won't remove all layer specific code from MapServer e.g. ``WMF``, ``WMS`` and ``GRATICULE`` are used as special cases from place to place. Bug ID ------ Bug 1477_ .. _1477: http://trac.osgeo.org/mapserver/ticket/1477 Voting history -------------- Vote proposed by Jani Averbach on 9/19/2005, result was +4 (3 non-voting members). Voting +1: Howard Butler, Frank Warmerdam, Yewondwossen Assefa, Daniel Morissette Proposal passes and will move forward. Open questions -------------- * How do we like to expose layer's virtual table to the layers. We have at least two different routes to go: * expose it as a struct, layers will fill vtable pointers by accessing directly struct's field. * expose it as a complete opaque type, vtable pointers will be set by accessing functions ``setLayerOpenFP``, ``setLayerCloseFP`` and so on. The advance of second option is that this way we could easily add new functions to the struct if we refactor code more or found some logic which is ignored by oversight in this proposal. * Are there any special issues with the raster query layer support which is handled via the layer API? .. Local Variables: mode: text End: rst2pdf-0.93/rst2pdf/tests/input/test_issue_137.txt0000664000175000017500000000035311221025446022104 0ustar ralsinaralsina:subscript:`< >` :superscript:`< >` :literal:`< >` :strong:`< >` :emphasis:`< >` :title-reference:`< >` :subscript:`X` :superscript:`X` :literal:`X` :strong:`X` :emphasis:`X` :title-reference:`X` rst2pdf-0.93/rst2pdf/tests/input/test_style_width.style0000664000175000017500000000022111366072321023240 0ustar ralsinaralsinastyles: halfwidth: {parent: bodytext, width: 50%} halfwidthtable: {parent: table, width: 50%} threeq: {parent: bodytext, width: 75%} rst2pdf-0.93/rst2pdf/tests/input/test_issue_265_2.style0000664000175000017500000000035311351252072022651 0ustar ralsinaralsinastyles: with-border: backColor: white borderColor: black borderPadding: [10, 20, 30, 40] borderWidth: 0.5 commands: [] [BOX, [0, 0], [-1, -1], 0.25, black] parent: figure rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue183/0000775000175000017500000000000012064144441021457 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue183/conf.py0000664000175000017500000001606611347533413022773 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Sphinx markup documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sphinxmarkup' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'sphinxmarkup' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'sphinxmarkup.tex', u'sphinxmarkup Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = True # If false, no modindex is generated. pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = True pdf_break_level = 2 pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue183/index2.rst0000664000175000017500000000006011252361626023402 0ustar ralsinaralsinaSection A ========= SubSection 1 ------------ rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue183/index1.rst0000664000175000017500000000006011252361626023401 0ustar ralsinaralsinaSection A ========= SubSection 1 ------------ rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue183/Makefile0000664000175000017500000000606011252361626023125 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue183/index.rst0000664000175000017500000000004211252361626023320 0ustar ralsinaralsina.. toctree:: index1 index2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_231.txt0000664000175000017500000000100711274114631022077 0ustar ralsinaralsina.. role:: antique1 .. role:: antique2 .. role:: antique3 .. role:: tuffy1 .. role:: tuffy2 .. role:: tuffy3 .. role:: tuffy4 .. role:: tuffy5 .. role:: tuffy6 .. role:: tuffy7 .. role:: tuffy8 The following 3 lines should be japanese :antique1:`てすと` :antique2:`てすと` :antique3:`てすと` :tuffy1:`Tuffy regular` :tuffy2:`Tuffy italic` :tuffy3:`Tuffy bold` :tuffy4:`Tuffy bold italic` :tuffy5:`Tuffy regular` :tuffy6:`Tuffy italic` :tuffy7:`Tuffy bold` :tuffy8:`Tuffy bold italic` rst2pdf-0.93/rst2pdf/tests/input/test_issue_144.txt0000664000175000017500000000064311223010512022072 0ustar ralsinaralsinaSection 1 (page 1) ------------------ bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla Section 2 (page 2) ------------------ This section should be at the beginning of page 2. If it is not, the test case needs to be fixed! bla bla rst2pdf-0.93/rst2pdf/tests/input/test_issue_266.cli0000664000175000017500000000001511327450576022047 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue252/0000775000175000017500000000000012064144441021454 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue252/conf.py0000664000175000017500000001615011350477704022766 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue252 documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. # It's probably a good idea to use pdfbuilder BEFORE pngmath extensions = ['rst2pdf.pdfbuilder','sphinx.ext.pngmath'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue252' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue252doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue252.tex', u'issue252 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue252/make.bat0000664000175000017500000000562311242657700023073 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set ALLSPHINXOPTS=-d _build/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (_build\*) do rmdir /q /s %%i del /q /s _build\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% _build/html echo. echo.Build finished. The HTML pages are in _build/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% _build/dirhtml echo. echo.Build finished. The HTML pages are in _build/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% _build/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% _build/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% _build/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in _build/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% _build/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in _build/qthelp, like this: echo.^> qcollectiongenerator _build\qthelp\issue158.qhcp echo.To view the help file: echo.^> assistant -collectionFile _build\qthelp\issue158.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% _build/latex echo. echo.Build finished; the LaTeX files are in _build/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% _build/changes echo. echo.The overview file is in _build/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% _build/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in _build/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% _build/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in _build/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue252/Makefile0000664000175000017500000000606511351243555023127 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: html $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue252/index.rst0000664000175000017500000000135011306611566023321 0ustar ralsinaralsinaBring rst2pdf math support to the level of sphinx's math extension. Inline Math ~~~~~~~~~~~ Since Pythagoras, we know that :math:`a^2 + b^2 = c^2`. Math Directive ~~~~~~~~~~~~~~ This below should go in two lines: .. math:: (a + b)^2 = a^2 + 2ab + b^2 (a - b)^2 = a^2 - 2ab + b^2 Aligned equations: .. math:: (a + b)^2 &= (a + b)(a + b) \\ &= a^2 + 2ab + b^2 Simple math can go as argument of the directive .. math:: (a + b)^2 = a^2 + 2ab + b^2 The :eq:`euler` label should point at this equation: .. math:: e^{i\pi} + 1 = 0 :label: euler .. math:: :nowrap: \begin{eqnarray} y & = & ax^2 + bx + c \\ f(x) & = & x^2 + 2xy + y^2 \end{eqnarray}rst2pdf-0.93/rst2pdf/tests/input/test_slides.cli0000664000175000017500000000000511302520610021560 0ustar ralsinaralsina-b 1 rst2pdf-0.93/rst2pdf/tests/input/background.svg0000664000175000017500000003052411205271626021432 0ustar ralsinaralsina image/svg+xml rst2pdf-0.93/rst2pdf/tests/input/test_no_raw_html.txt0000664000175000017500000000051211724710567022705 0ustar ralsinaralsina.. list-table:: :widths: 50 50 :header-rows: 1 * - **Name** - **e-mail** * - Pedro - .. raw:: html

    pedro@mailaddress.es

    * - Dimitri - .. raw:: html

    dimitr@mailaddress.es

    rst2pdf-0.93/rst2pdf/tests/input/test_issue_73.txt0000664000175000017500000000213411066772676022047 0ustar ralsinaralsina :: Internet │ ┌┴───────┐ │α ├┬───┬┬─── DMZ └┬┬─────┬┘│ │└[out of scope servers] ││ │ │ ┌─│────┐ test ─┬──────────┘│ │ │ │δ│ │ └[potential │ │┌┴┐│┌┴┐┌─┐│ looneys] │ ││ω│││ ││ ││ │ │└┬┘│└─┘└┬┘│ │ │ │ └─┬──│─┘ unmanaged ──────┬─┴╖ ╓┴─┴┬┬─┴──┴──── managed │ ║ ║ ││ [unmanaged │ ║ ║ │└[managed clients] clients]┘ ║ ║ │ ║VPN║ └[internal, non- wireless ─╨─┬─╜ critical servers] ┊802.11 └[wireless clients] rst2pdf-0.93/rst2pdf/tests/input/test_issue_110.txt0000664000175000017500000000073111362601243022074 0ustar ralsinaralsinaThis is a paragraph in Page 1 [#]_ .. [#] This is a footnote in page 1 This is another paragrah in page 1. [#]_ .. [#] This is 2nd footnote in page 1 .. raw:: pdf PageBreak This is a paragraph in Page 2 [#]_ .. [#] This is a footnote in page 2 This is another paragrah in page 2. [#]_ .. [#] This is 2nd footnote in page 2 .. raw:: pdf PageBreak This is a paragraph in Page 3 [#]_ .. [#] This is a footnote in page 3 This is another paragrah in page 3. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue280/0000775000175000017500000000000012064144442021456 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue280/conf.py0000664000175000017500000002101211347476406022764 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Foobar documentation build configuration file, created by # sphinx-quickstart on Wed Nov 11 10:37:39 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.graphviz', 'rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. source_encoding = 'utf-8' # The master toctree document. master_doc = 'foobar' # General information about the project. project = u'Foobar' copyright = u'2009, Jason S' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0.1' # The full version, including alpha/beta/rc tags. release = '1.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'Foobardoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('foobar', 'Foobar.tex', u'Foobar Documentation', u'Jason S', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True graphviz_dot='C:/appl/graphics/graphviz/2.24/bin/dot.exe' # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', u'index', u'index', u'lorenzo'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx','sphinx-mine'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled pdf_break_level = 1 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' pdf_breakside = 'odd' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 pdf_verbosity = 0 # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = False # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False pdf_page_template = 'customPage' pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue280/sphinx-mine.json0000664000175000017500000000046411347463254024624 0ustar ralsinaralsina{ "pageTemplates" : { "customPage": { "frames": [ ["0%", "0%", "50%", "100%"] ], "showHeader" : true, "showFooter" : true, "defaultHeader" : "something page for the header ###Page###", "defaultFooter" : "something page ###Page###" } } }rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue280/Makefile0000664000175000017500000000606011307603030023110 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue280/index.rst0000664000175000017500000000011311347450436023320 0ustar ralsinaralsinaSphynx example document ----------------------- Nothing interesting here rst2pdf-0.93/rst2pdf/tests/input/test_inline_image.txt0000664000175000017500000000013511055536175023013 0ustar ralsinaralsinaHere you should see a biohazard symbol: |example| .. |example| image:: images/biohazard.png rst2pdf-0.93/rst2pdf/tests/input/test_issue_248.txt0000664000175000017500000000006511302535676022122 0ustar ralsinaralsina* .. image:: images/biohazard.png :height: 9999 rst2pdf-0.93/rst2pdf/tests/input/test_issue_109.style0000664000175000017500000000013611351252072022424 0ustar ralsinaralsinastyles: danger: backColor: yellow danger-heading: {backColor: yellow, textColor: red} rst2pdf-0.93/rst2pdf/tests/input/test_issue_292.cli0000664000175000017500000000000611351150602022026 0ustar ralsinaralsina-s bw rst2pdf-0.93/rst2pdf/tests/input/test_issue_263.txt0000664000175000017500000000116611345461420022112 0ustar ralsinaralsinaPDF Vector image test ======================= .. contents:: Some heading or another ======================= Another heading --------------------- This is the same as the test_vectorpdf test, except with a table of contents. This tests reading PDFs using the vectorpdf extension ("-e vectorpdf"). This extension relies on `pdfrw`__. __ http://pdfrw.googlecode.com Here is page 6 from the demo manual: .. image:: images/demo.pdf#page=6 :scale: 25% Here is a portion of that same page: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 Here is a diagram: .. image:: images/text_and_vectors_001.pdf rst2pdf-0.93/rst2pdf/tests/input/test_issue_485_2.style0000664000175000017500000000106012061106634022652 0ustar ralsinaralsina{ "styles" : [ ["bodytext" , { "spaceBefore":0, "spaceAfter": 0 }], ["figure" , { "spaceBefore":12, "spaceAfter": 18, "commands": [ ["BOX", [ 0, 0 ], [ 0, 0 ], 0.5, "#B0B0B8"], ["TOPPADDING", [ 0, 0 ], [ 0, 0 ], 1 ], ["BOTTOMPADDING", [ 0, 0 ], [ 0, 0 ], 1 ], ["LEFTPADDING", [ 0, 0 ], [ 0, 0 ], 1 ], ["RIGHTPADDING", [ 0, 0 ], [ 0, 0 ], 1 ], ["TOPPADDING", [ 0, 1 ], [ 0, 1 ], 9 ] ] }], ["figure-caption" , { "textColor": "#404050" }] ] } rst2pdf-0.93/rst2pdf/tests/input/test_issue_65.style0000664000175000017500000000017311351252072022346 0ustar ralsinaralsinaembeddedFonts: [] [Tuffy.ttf, Tuffy_Bold.ttf, Tuffy_Italic.ttf, Tuffy_Bold_Italic.ttf] fontsAlias: stdFont: Tuffy rst2pdf-0.93/rst2pdf/tests/input/test_issue_266.txt0000664000175000017500000000072411327456411022120 0ustar ralsinaralsinaImage rescaling test =============================== Normal size PDF image: .. image:: images/text_and_vectors_001.pdf Shrunken PDF image: .. image:: images/text_and_vectors_001.pdf :scale: 60% Enlarged PDF image: .. image:: images/text_and_vectors_001.pdf :scale: 200% Normal image: .. image:: images/middleware.jpg Shrunken image: .. image:: images/middleware.jpg :scale: 60% Enlarged image: .. image:: images/middleware.jpg :scale: 900% rst2pdf-0.93/rst2pdf/tests/input/test_fancytitles.cli0000664000175000017500000000003311427674177022655 0ustar ralsinaralsina-e fancytitles -e inkscape rst2pdf-0.93/rst2pdf/tests/input/test_issue_243.txt0000664000175000017500000000164711277002370022113 0ustar ralsinaralsina#. This is the first enumerated list item. The blank line above the first list item is required; blank lines between list items (such as below this paragraph) are optional. #. This is the first paragraph in the second item in the list. This is the second paragraph in the second item in the list. The blank line above this paragraph is required. The left edge of this paragraph lines up with the paragraph above, both indented relative to the bullet. - This is the first bullet list item. The blank line above the first list item is required; blank lines between list items (such as below this paragraph) are optional. - This is the first paragraph in the second item in the list. This is the second paragraph in the second item in the list. The blank line above this paragraph is required. The left edge of this paragraph lines up with the paragraph above, both indented relative to the bullet. rst2pdf-0.93/rst2pdf/tests/input/test_issue_230.txt0000664000175000017500000000001711274003773022102 0ustar ralsinaralsina.. note:: Test rst2pdf-0.93/rst2pdf/tests/input/test_issue_116.txt0000664000175000017500000000010111203640600022063 0ustar ralsinaralsina.. image:: test_issue_116_1.png .. image:: test_issue_116_2.png rst2pdf-0.93/rst2pdf/tests/input/test_issue_68_2.style0000664000175000017500000000005211351252072022566 0ustar ralsinaralsinastyles: base: {fontSize: 12, leading: 28} rst2pdf-0.93/rst2pdf/tests/input/test_foreground.style0000664000175000017500000000020711351252072023054 0ustar ralsinaralsinapageSetup: firstTemplate: cutePage pageTemplates: cutePage: {background: "images/demo.pdf#page=6", foreground: images/foreground.svg} rst2pdf-0.93/rst2pdf/tests/input/test_issue_174.txt0000664000175000017500000000015511246035353022112 0ustar ralsinaralsina| Not indented | | Indented rst2pdf-0.93/rst2pdf/tests/input/test_issue_261.txt0000664000175000017500000000061411324074046022106 0ustar ralsinaralsina======= Foo1 ======= Bar1 ---- 1. baz1 2. foo2 bar2 ---- baz2 foo3 ---- bar3 - baz3 - foo4 - bar4 - baz4 - foo5 - bara - baz5 - foo6 - bar5 baz6 foo7: bar6 baz7 - foo8 - bar7 - baz8 - foo9 - bar8 - baz9 - foo10 - bar9 - baz10 foo11 - bar10 - baz11 - foo12 - bar11 - baz12 - foo13 - bar12 rst2pdf-0.93/rst2pdf/tests/input/test_image_units_svg.style0000664000175000017500000000012311351252072024062 0ustar ralsinaralsinapageSetup: firstTemplate: twoColumn margin-left: 1cm margin-right: 1cm rst2pdf-0.93/rst2pdf/tests/input/test_issue_309.style0000664000175000017500000000005611356447727022451 0ustar ralsinaralsinastyles: blockquote: {fontName: stdItalic} rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/0000775000175000017500000000000012064144442021463 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/conf.py0000664000175000017500000001574711452645467023015 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Issue 285 documentation build configuration file, created by # sphinx-quickstart on Tue Oct 5 11:46:55 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Issue 285' copyright = u'2010, Roberto Alsina' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.0' # The full version, including alpha/beta/rc tags. release = '0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'Issue285doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'Issue285.tex', u'Issue 285 Documentation', u'Roberto Alsina', 'manual'), ] pdf_documents = [ ('index', 'Issue285', u'Issue 285 Documentation', u'Roberto Alsina'), ] pdf_break_level = 3 pdf_verbosity = 0 # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'issue285', u'Issue 285 Documentation', [u'Roberto Alsina'], 1) ] rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/_static/0000775000175000017500000000000012064144442023111 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/make.bat0000664000175000017500000001001611452636456023101 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Issue285.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Issue285.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/file3.rst0000664000175000017500000000027011452636456023231 0ustar ralsinaralsina======================================= ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ======================================= TTTTTTTTTTTTTT ============== The third TTTTTTTTT rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/_templates/0000775000175000017500000000000012064144442023620 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/Makefile0000664000175000017500000001116511452636456023142 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Issue285.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Issue285.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/Issue285" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Issue285" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf @echo @echo "Build finished. The pdfs are in $(BUILDDIR)/pdf." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/index.rst0000664000175000017500000000025711452636456023343 0ustar ralsinaralsina AAAAAAAAAAA =========== .. Contents: .. toctree:: :maxdepth: 2 file1 file2 file3 Indices and tables ================== * :ref:`genindex` * :ref:`search` rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/file2.rst0000664000175000017500000000022611452636456023231 0ustar ralsinaralsina=========================== XXXXXXXXXXXXXXXXXXXXXXXXXXX =========================== TTTTTTTTTTTTTT ============== The second TTTTTT rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue285/file1.rst0000664000175000017500000000021211452636456023223 0ustar ralsinaralsina======================= QQQQQQQQQQQQQQQQQQQQQQQ ======================= TTTTTTTTTTTTTT ================================ The first TTTT rst2pdf-0.93/rst2pdf/tests/input/foo/0000775000175000017500000000000012064144442017350 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/foo/bar.ignore0000664000175000017500000000003711274435673021334 0ustar ralsinaralsinaDo not test this file directly rst2pdf-0.93/rst2pdf/tests/input/foo/bar.txt0000664000175000017500000000005211106016277020652 0ustar ralsinaralsinaI'm in foo/bar! .. include:: bar/baz.txt rst2pdf-0.93/rst2pdf/tests/input/foo/bar/0000775000175000017500000000000012064144442020114 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/foo/bar/baz.txt0000664000175000017500000000001411106016277021424 0ustar ralsinaralsinaI'm in baz! rst2pdf-0.93/rst2pdf/tests/input/test_issue_266_4.style0000664000175000017500000000025111351252072022651 0ustar ralsinaralsinastyles: with-border: backColor: white borderPadding: 20 commands: [] [BOX, [0, 0], [-1, -1], 0.25, black] parent: figure rst2pdf-0.93/rst2pdf/tests/input/test_dict_styles.style0000664000175000017500000000201211351763225023233 0ustar ralsinaralsinastyles: bigsmall: colWidths: [80%, 20%] parent: table justgrid: commands: [] [INNERGRID, [0, 0], [-1, -1], 1, black] [ROWBACKGROUNDS, [0, 0], [-1, -1], [white,#E0E0E0]] [BOX, [0, 0], [-1, -1], 0, white] parent: table onesmall: colWidths: [20%] parent: table smallbig: colWidths: [20%, 80%] parent: table thick: commands: [] [INNERGRID, [0, 0], [-1, -1], 2, black] [ROWBACKGROUNDS, [0, 0], [-1, -1], [white,#E0E0E0]] [BOX, [0, 0], [-1, -1], 2, black] parent: table thin: commands: [] [INNERGRID, [0, 0], [-1, -1], 0.1, black] [ROWBACKGROUNDS, [0, 0], [-1, -1], [white,#E0E0E0]] [BOX, [0, 0], [-1, -1], 0.1, black] parent: table toomany: colWidths: [30%, 30%, 30%] parent: table twosmall: colWidths: [20%, 20%] parent: table rst2pdf-0.93/rst2pdf/tests/input/test_inline_colors.txt0000664000175000017500000000032411274065541023227 0ustar ralsinaralsina.. role:: red .. role:: white_on_red This is :red:`red text` and this is :white_on_red:`white on red` If the background color fails, that´s a reportlab limitation. It works with wordaxe (may require RL 2.3). rst2pdf-0.93/rst2pdf/tests/input/test_page_labels.txt0000664000175000017500000000064611273556355022644 0ustar ralsinaralsina.. header:: ###Page### This should be page 1 --------------------- In the PDF TOC, the page label should match what the headers say. .. raw:: pdf PageBreak SetPageCounter 4 This should be page 4 --------------------- .. raw:: pdf PageBreak SetPageCounter 2 lowerroman This should be page ii ---------------------- .. raw:: pdf PageBreak This should be page iii -----------------------rst2pdf-0.93/rst2pdf/tests/input/test_issue_118.txt0000664000175000017500000000035111206575056022113 0ustar ralsinaralsina.. image:: images/biohazard.png :scale: 50 .. image:: images/biohazard.png .. image:: images/biohazard.png :scale: 200 .. image:: images/biohazard.png :scale: 400 Each image should be twice as large as the previous one rst2pdf-0.93/rst2pdf/tests/input/test_issue_176.txt0000664000175000017500000000010511362601243022103 0ustar ralsinaralsinaAbove the spacer. .. raw:: pdf Spacer 0 50cm Below the spacer. rst2pdf-0.93/rst2pdf/tests/input/test_issue_72.txt0000664000175000017500000000040211066756112022025 0ustar ralsinaralsina42. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. rst2pdf-0.93/rst2pdf/tests/input/test_issue_267.txt0000664000175000017500000000270611410217676022124 0ustar ralsinaralsinaAlignment for figures and images ================================ Unaligned PNG Image: .. image:: images/biohazard.png Align left: .. image:: images/biohazard.png :align: left Align right: .. image:: images/biohazard.png :align: right Align center: .. image:: images/biohazard.png :align: center Unaligned PNG figure: .. figure:: images/biohazard.png :figwidth: 50% Align left: .. figure:: images/biohazard.png :align: left :figwidth: 50% Align right: .. figure:: images/biohazard.png :align: right :figwidth: 50% Align center: .. figure:: images/biohazard.png :align: center :figwidth: 50% Alignment for PDF-based images: Unaligned: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 Align left: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 :align: left Align right: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 :align: right Align center: .. image:: images/demo.pdf#page=6#viewrect=250,330,270,130 :align: center Alignment for PDF-based figures: Unaligned: .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :figwidth: 50% Align left: .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :align: left :figwidth: 50% Align right: .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :align: right :figwidth: 50% Align center: .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :align: center :figwidth: 50% rst2pdf-0.93/rst2pdf/tests/input/test_issue_485_2.txt0000664000175000017500000000013312061106634022331 0ustar ralsinaralsinaParagraph 1 .. figure:: images/biohazard.jpg :width: 100% Figure 1 Paragraph 2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_234.txt0000664000175000017500000000003611274543310022103 0ustar ralsinaralsina.. image:: images/missing.pdf rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue172/0000775000175000017500000000000012064144441021455 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue172/conf.py0000664000175000017500000001603711347531456022774 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Sphinx markup documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sphinx' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'sphinx' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'sphinx.tex', u'sphinx Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = True # If false, no modindex is generated. pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = False pdf_break_level = 1 pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue172/module.rst0000664000175000017500000000025411244545077023506 0ustar ralsinaralsina.. module:: parrot :platform: Unix, Windows :synopsis: Analyze and reanimate dead parrots. .. function:: spam(eggs) ham(eggs) Spam or ham the foo. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue172/Makefile0000664000175000017500000000606011244545000023112 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue172/index.rst0000664000175000017500000000005311247012643023314 0ustar ralsinaralsina.. toctree:: module * :ref:`modindex` rst2pdf-0.93/rst2pdf/tests/input/test_issue_154.txt0000664000175000017500000000003711242601742022104 0ustar ralsinaralsina:: This is a literal block rst2pdf-0.93/rst2pdf/tests/input/tabs0000664000175000017500000000001711307615011017431 0ustar ralsinaralsina that is a tab rst2pdf-0.93/rst2pdf/tests/input/test_issue_266_4.txt0000664000175000017500000000211211345461420022330 0ustar ralsinaralsinaFigures with scaled PDF images and borders =========================================== This test combines something that test_vectorpdf (reading a partial page) was doing with something that test_issue_266 (scale so large that it has to be scaled back down) was doing, and something test_issue_265 (test with borders) was doing, using the vectorpdf extension ("-e vectorpdf"). Basic image: .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 Scaled up a bit: .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :scale: 150% Scaled up a lot: .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :scale: 300% Repeat the whole thing as a figure, with ``with-border`` class: Basic image: .. class:: with-border .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :align: center Scaled up a bit: .. class:: with-border .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :scale: 150% :align: center Scaled up a lot: .. class:: with-border .. figure:: images/demo.pdf#page=6#viewrect=250,330,270,130 :scale: 300% :align: center rst2pdf-0.93/rst2pdf/tests/input/test_issue_127.txt0000664000175000017500000000003711216157434022111 0ustar ralsinaralsina.. image:: images/biohazard.pdfrst2pdf-0.93/rst2pdf/tests/input/test_issue_186_2.txt0000664000175000017500000000015511406362557022345 0ustar ralsinaralsina .. image:: images/biohazard.png :align: right .. image:: images/biohazard.png :align: left rst2pdf-0.93/rst2pdf/tests/input/test_issue_175.txt0000664000175000017500000000207011362603775022121 0ustar ralsinaralsina.. raw:: pdf Spacer 0 206mm This is not very close to the bottom Another title ------------- A subsection ~~~~~~~~~~~~ The content should be in the same page as the title .. raw:: pdf PageBreak Spacer 0 17cm This is not very close to the bottom Third title ----------- The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title The content should be in the same page as the title rst2pdf-0.93/rst2pdf/tests/input/test_issue_361.txt0000664000175000017500000000031111441515536022105 0ustar ralsinaralsina| Line blocks are useful for addresses, | verse, and adornment-free lists. | | | | Each new line begins with a | vertical bar ("|"). | Line breaks and initial indents | are preserved. rst2pdf-0.93/rst2pdf/tests/input/test_image_alignment.txt0000664000175000017500000000044411206601660023504 0ustar ralsinaralsina.. |bottom| image:: images/biohazard.png :align: bottom :width: 6pt .. |middle| image:: images/biohazard.png :align: middle :width: 6pt .. |top| image:: images/biohazard.png :align: top :width: 6pt Docutils supports aligning bottom |bottom| middle |middle| and top |top| rst2pdf-0.93/rst2pdf/tests/input/pyurl3.py0000664000175000017500000002413111361222003020363 0ustar ralsinaralsina# -*- coding: utf-8 -*- '''Un acortador de URLs pero que permite: * Editar adonde apunta el atajo más tarde * Eliminar atajos * Definir tests para saber si el atajo es válido ''' import os import string import datetime from twill.commands import go, code, find, notfind, title def minitwill(url, script): '''Dada una URL y un script en una versión limitada de twill, ejecuta ese script. Apenas una línea falla, devuelve False. Si todas tienen éxito, devuelve True. Ejemplos: >>> minitwill('http://google.com','code 200') ==> at http://www.google.com.ar/ True >>> minitwill('http://google.com','title bing') ==> at http://www.google.com.ar/ title is 'Google'. False ''' go (url) for line in script.splitlines(): cmd,arg = line.split(' ',1) try: if cmd in ['code','find','notfind','title']: r = globals()[cmd](arg) except: return False return True # Usamos storm para almacenar los datos from storm.locals import * # FIXME: tengo que hacer más consistentes los nombres # de los métodos. class Atajo(object): '''Representa una relación slug <=> URL Miembros: id = Único, creciente, entero (primary key) url = la URL original test = un test de validez de la URL user = el dueño del atajo activo = Si este atajo está activo o no. Nunca hay que borrarlos, sino el ID puede volver atrás y se "recicla" una URL. ¡Malo, malo, malo! status = Resultado del último test (bien/mal) ultimo = Fecha/hora del último test ''' # Hacer que los datos se guarden via Storm __storm_table__ = "atajo" id = Int(primary=True) url = Unicode() test = Unicode() user = Unicode() activo = Bool() status = Bool() ultimo = DateTime() def __init__(self, url, user, test=''): '''Exigimos la URL y el usuario, test es opcional, _id es automático.''' # Hace falta crear esto? r = self.store.find(Atajo, user = user, url = url) self.url = url self.user = user self.activo = True # Test por default, verifica que la página exista. self.test = u'code 200' if r.count(): # FIXME: esto creo que es una race condition # Existe la misma URL para el mismo usuario, # reciclamos el id y el test, pero activa. viejo = r.one() Atajo.store.remove(viejo) self.id = viejo.id self.test = viejo.test self.store.add(self) # Autosave/flush/commit a la base de datos self.save() def save(self): '''Método de conveniencia''' Atajo.store.flush() Atajo.store.commit() @classmethod def init_db(cls): # Creamos una base SQLite if not os.path.exists('pyurl.sqlite'): cls.database = create_database("sqlite:///pyurl.sqlite") cls.store = Store (cls.database) try: # Creamos la tabla cls.store.execute (''' CREATE TABLE atajo ( id INTEGER PRIMARY KEY, url VARCHAR, test VARCHAR, user VARCHAR, activo TINYINT, status TINYINT, ultimo TIMESTAMP ) ''' ) cls.store.flush() cls.store.commit() except: pass else: cls.database = create_database("sqlite:///pyurl.sqlite") cls.store = Store (cls.database) # Caracteres válidos en un atajo de URL validos = string.letters + string.digits def slug(self): '''Devuelve el slug correspondiente al ID de este atajo Básicamente un slug es un número en base 62, representado usando a-zA-Z0-9 como "dígitos", y dado vuelta (más significativo a la derecha. Ejemplo: 100000 => '4aA' 100001 => '5aA' ''' s = '' n = self.id while n: s += self.validos[n%62] n = n // 62 return s @classmethod # FIXME: no estoy feliz con esta API def get(cls, slug = None, user = None, url = None): ''' Dado un slug, devuelve el atajo correspondiente. Dado un usuario: Si url es None, devuelve la lista de sus atajos Si url no es None , devuelve *ese* atajo ''' if slug is not None: i = 0 for p,l in enumerate(slug): i += 62 ** p * cls.validos.index(l) return cls.store.find(cls, id = i, activo = True).one() if user is not None: if url is None: return cls.store.find(cls, user = user, activo = True) else: return cls.store.find(cls, user = user, url = url, activo = True).one() def delete(self): '''Eliminar este objeto de la base de datos''' self.activo=False self.save() def run_test(self): '''Correr el test con minitwill y almacenar el resultado''' self.status = minitwill(self.url, self.test) self.ultimo = datetime.datetime.now() self.save() # Usamos bottle para hacer el sitio import bottle # Middlewares from beaker.middleware import SessionMiddleware from authkit.authenticate import middleware from paste.auth.auth_tkt import AuthTKTMiddleware @bottle.route('/logout') def logout(): bottle.request.environ['paste.auth_tkt.logout_user']() if 'REMOTE_USER' in bottle.request.environ: del bottle.request.environ['REMOTE_USER'] bottle.redirect('/') @bottle.route('/') @bottle.view('usuario.tpl') def alta(): """Crea un nuevo slug""" # Requerimos que el usuario esté autenticado. if not 'REMOTE_USER' in bottle.request.environ: bottle.abort(401, "Sorry, access denied.") usuario = bottle.request.environ['REMOTE_USER'].decode('utf8') # Data va a contener todo lo que el template # requiere para hacer la página data ={} # Esto probablemente debería obtenerse de una # configuración data['baseurl'] = 'http://localhost:8080/' # Si tenemos un parámetro URL, estamos en esta # funcion porque el usuario envió una URL a acortar. if 'url' in bottle.request.GET: # La acortamos url = bottle.request.GET['url'].decode('utf8') a = Atajo(url=url, user=usuario) data['short'] = a.slug() data['url'] = url # La probamos a.run_test() # Mensaje para el usuario de que el acortamiento # tuvo éxito. data['mensaje'] = u'''La URL %(url)s se convirtió en: %(baseurl)s%(short)s'''%data # Clase CSS que muestra las cosas como buenas data['clasemensaje']='success' else: # No se acortó nada, no hay nada para mostrar. data['url']=None data['short']=None data['mensaje']=None # Lista de atajos del usuario. data ['atajos'] = Atajo.get (user = usuario) # Crear la página con esos datos. return data @bottle.route('/:slug/edit') @bottle.view('atajo.tpl') def editar(slug): """Edita un slug""" if not 'REMOTE_USER' in bottle.request.environ: bottle.abort(401, "Sorry, access denied.") usuario = bottle.request.environ['REMOTE_USER'].decode('utf8') # Solo el dueño de un atajo puede editarlo a = Atajo.get(slug) # Atajo no existe o no sos el dueño if not a or a.user != usuario: bottle.abort(404, 'El atajo no existe') if 'url' in bottle.request.GET: # El usuario mandó el form a.url = bottle.request.GET['url'].decode('utf-8') a.activo = 'activo' in bottle.request.GET a.test = bottle.request.GET['test'].decode('utf-8') a.save() bottle.redirect('/') return {'atajo':a, 'mensaje':'', } @bottle.route('/:slug/del') def borrar(slug): """Elimina un slug""" if not 'REMOTE_USER' in bottle.request.environ: bottle.abort(401, "Sorry, access denied.") usuario = bottle.request.environ['REMOTE_USER'].decode('utf8') # Solo el dueño de un atajo puede borrarlo a = Atajo.get(slug) if a and a.user == usuario: a.delete() # FIXME: pasar un mensaje en la sesión bottle.redirect('/') @bottle.route('/:slug/test') def run_test(slug): """Corre el test correspondiente a un atajo""" if not 'REMOTE_USER' in bottle.request.environ: bottle.abort(401, "Sorry, access denied.") usuario = bottle.request.environ['REMOTE_USER'].decode('utf8') # Solo el dueño de un atajo puede probarlo a = Atajo.get(slug) if a and a.user == usuario: a.run_test() # FIXME: pasar un mensaje en la sesión bottle.redirect('/') # Un slug está formado sólo por estos caracteres @bottle.route('/(?P[a-zA-Z0-9]+)') def redir(slug): """Redirigir un slug""" # Buscamos el atajo correspondiente a = Atajo.get(slug=slug) if not a: bottle.abort(404, 'El atajo no existe') bottle.redirect(a.url) # Lo de /:filename es para favicon.ico :-) @bottle.route('/:filename') @bottle.route('/static/:filename') def static_file(filename): """Archivos estáticos (CSS etc)""" bottle.send_file(filename, root='./static/') if __name__=='__main__': """Ejecutar con el server de debug de bottle""" bottle.debug(True) app = bottle.default_app() # Mostrar excepciones mientras desarrollamos app.catchall = False app = middleware(app, enable=True, setup_method='openid', openid_store_type='file', openid_template_file=os.path.join(os.getcwd(), 'views','invitado.tpl'), openid_store_config=os.getcwd(), openid_path_signedin='/') app = AuthTKTMiddleware(SessionMiddleware(app), 'some auth ticket secret'); # Inicializar DB Atajo.init_db() # Ejecutar aplicación bottle.run(app) rst2pdf-0.93/rst2pdf/tests/input/test_inline_colors.style0000664000175000017500000000015011351252072023536 0ustar ralsinaralsinastyles: red: {backColor: null, textColor: red} white-on-red: {backColor: red, textColor: white} rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue388/0000775000175000017500000000000012064144442021467 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue388/conf.py0000664000175000017500000001614411530350066022772 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Sphinx markup documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sphinx' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'sphinx' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'sphinx.tex', u'sphinx Documentation', u'RA', 'manual'), ('index2', 'sphinx2.tex', u'sphinx2 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject1', u'My Project', u'Author Name') ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = True # If false, no modindex is generated. pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = False pdf_break_level = 1 pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue388/index2.rst0000664000175000017500000000025011530350066023405 0ustar ralsinaralsina:orphan: Index 2 .. glossary:: term3 A term in 1st place term2 A term in 2nd place :term:`term3` and :term:`term2` link to the glossary rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue388/Makefile0000664000175000017500000000606011247077664023146 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue388/index.rst0000664000175000017500000000025011530350066023323 0ustar ralsinaralsina:orphan: Index 1 .. glossary:: term1 A term in 1st place term2 A term in 2nd place :term:`term1` and :term:`term2` link to the glossary rst2pdf-0.93/rst2pdf/tests/input/test_tableofcontents.txt0000664000175000017500000000133011137234543023556 0ustar ralsinaralsina==================== rl_toc demonstration ==================== .. contents:: Table of Contents .. section-numbering:: Section 1 ========== Subsection 1.1 --------------- Subsubsection 1.1.1 ````````````````````` Subsubsection 1.1.2 ````````````````````` Subsection 1.2 --------------- Subsubsection 1.2.1 ````````````````````` Subsubsubsection 1.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Section 2 ========== .. contents:: :local: Subsection 2.1 --------------- .. contents:: :local: Subsubsection 2.1.1 ````````````````````` Subsubsection 2.1.2 ````````````````````` Subsection 2.2 --------------- .. contents:: :local: Subsubsection 2.2.1 ````````````````````` Subsubsubsection 2.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ rst2pdf-0.93/rst2pdf/tests/input/test_issue_103.txt0000664000175000017500000000354011146514575022112 0ustar ralsinaralsina.. class:: pad1 This paragraph has no borderPadding: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. .. class:: pad2 This paragraph has different paddings: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. rst2pdf-0.93/rst2pdf/tests/input/test_issue_356.txt0000664000175000017500000000017611436701311022112 0ustar ralsinaralsina+---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+ | | 5 | 6 | | +---+---+ | | 7 | 8 | +-------+---+---+ rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue158/0000775000175000017500000000000012064144444021464 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue158/conf.py0000664000175000017500000001602411347527054022773 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue158 documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue158' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue158doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue158.tex', u'issue158 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue158/make.bat0000664000175000017500000000562311242657700023100 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set ALLSPHINXOPTS=-d _build/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (_build\*) do rmdir /q /s %%i del /q /s _build\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% _build/html echo. echo.Build finished. The HTML pages are in _build/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% _build/dirhtml echo. echo.Build finished. The HTML pages are in _build/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% _build/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% _build/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% _build/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in _build/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% _build/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in _build/qthelp, like this: echo.^> qcollectiongenerator _build\qthelp\issue158.qhcp echo.To view the help file: echo.^> assistant -collectionFile _build\qthelp\issue158.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% _build/latex echo. echo.Build finished; the LaTeX files are in _build/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% _build/changes echo. echo.The overview file is in _build/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% _build/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in _build/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% _build/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in _build/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue158/Makefile0000664000175000017500000000606011242657700023127 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue158/index.rst0000664000175000017500000000007411242660152023322 0ustar ralsinaralsina.. raw:: pdf Spacer 0 26cm .. seealso:: Stuff rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue170/0000775000175000017500000000000012064144441021453 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue170/conf.py0000664000175000017500000001602211347527054022763 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue162 documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue162' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue162doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue162.tex', u'issue162 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['buggy'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support #pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue170/buggy.style0000664000175000017500000000007211244511041023642 0ustar ralsinaralsina{ "fontsAlias" : { "stdFont": "DejaVu Sans" } } rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue170/Makefile0000664000175000017500000000606011244502370023113 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue170/index.rst0000664000175000017500000000000211244502370023302 0ustar ralsinaralsinaAArst2pdf-0.93/rst2pdf/tests/input/test_issue_313.cli0000664000175000017500000000003411363222652022031 0ustar ralsinaralsina--fit-background-mode=scale rst2pdf-0.93/rst2pdf/tests/input/test_issue_84.txt0000664000175000017500000000004711274055660022036 0ustar ralsinaralsinaI'm in foo! .. include:: foo/bar.txt rst2pdf-0.93/rst2pdf/tests/input/include0000664000175000017500000000005311357105612020131 0ustar ralsinaralsinaLine 1 Line 2 Line 3 Line 4 Line 5 Line 6 rst2pdf-0.93/rst2pdf/tests/input/test_foreground.cli0000664000175000017500000000003111336347706022472 0ustar ralsinaralsina-e inkscape -e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/test_issue_391.cli0000664000175000017500000000006611530460123022035 0ustar ralsinaralsina-b3 --header='###Section###' --section-header-depth=2 rst2pdf-0.93/rst2pdf/tests/input/test_header_separator.txt0000664000175000017500000000157411337404450023704 0ustar ralsinaralsina.. header:: This should appear in the header. .. footer:: This should appear in the footer. The objective of this file is to test transitions. The restructured text specification says that: The syntax for a transition marker is a horizontal line of 4 or more repeated punctuation characters. The syntax is the same as section title underlines without title text. Transition markers require blank lines before and after. ... The processing system is free to render transitions in output in any way it likes. For example, horizontal rules (
    ) in HTML output would be an obvious choice. So, let's try a transition here. ---- And this should be after it. We also put a transition in the header and one in the footer, but docutils crashes on doing it that way, so we add "headerSeparator" and "footerSeparator" to the page template in the stylesheet. rst2pdf-0.93/rst2pdf/tests/input/test_issue_274.cli0000664000175000017500000000000611352000245022024 0ustar ralsinaralsina-l en rst2pdf-0.93/rst2pdf/tests/input/test_internal_link.txt0000664000175000017500000000014211057031122023202 0ustar ralsinaralsinaOne paragraph. .. _internal link: The above internal link should not use any space in the page. rst2pdf-0.93/rst2pdf/tests/input/test_field_widths.txt0000664000175000017500000000206711250043725023035 0ustar ralsinaralsinaThis field list should be dividex exactly in mid-page: :field1: Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long .. raw:: pdf PageBreak twoColumn This field list should be dividex exactly in mid-column (1/4th page width): :field1: Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long Long rst2pdf-0.93/rst2pdf/tests/input/test_issue_247.txt0000664000175000017500000000000011302455002022066 0ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/test_smarty.cli0000664000175000017500000000002111274067014021626 0ustar ralsinaralsina--smart-quotes=1 rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue284/0000775000175000017500000000000012064144442021462 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue284/conf.py0000664000175000017500000002033511350502151022754 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Foobar documentation build configuration file, created by # sphinx-quickstart on Wed Nov 11 10:37:39 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.graphviz', 'rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Foobar' copyright = u'2009, Jason S' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0.1' # The full version, including alpha/beta/rc tags. release = '1.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'Foobardoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('foobar', 'Foobar.tex', u'Foobar Documentation', u'Jason S', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True graphviz_dot='C:/appl/graphics/graphviz/2.24/bin/dot.exe' # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', u'index', u'index', u'lorenzo'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled pdf_break_level = 1 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' pdf_breakside = 'odd' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 pdf_verbosity = 0 # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = False # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue284/Makefile0000664000175000017500000000606011307603030023114 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue284/index.rst0000664000175000017500000000045111350155162023321 0ustar ralsinaralsina.. productionlist:: try_stmt: try1_stmt | try2_stmt try1_stmt: "try" ":" `suite` : ("except" [`expression` ["," `target`]] ":" `suite`)+ : ["else" ":" `suite`] : ["finally" ":" `suite`] try2_stmt: "try" ":" `suite` : "finally" ":" `suite` rst2pdf-0.93/rst2pdf/tests/input/test_issue_340.style0000664000175000017500000000007411423575052022430 0ustar ralsinaralsinastyles: endnote: fontSize: 300% rst2pdf-0.93/rst2pdf/tests/input/test_issue_394_png.txt0000664000175000017500000000012511760040710022751 0ustar ralsinaralsina=== Foo === Bar. .. image:: images/biohazard.png :align: right This is a test. rst2pdf-0.93/rst2pdf/tests/input/test_span_cells.txt0000664000175000017500000001662312062647474022533 0ustar ralsinaralsina+------------------------------------+------------------------------------+------------------------------------+ | Row 1 | Row 2 | Row 3 | +====================================+====================================+====================================+ | PMOD B2 | PMOD D2 | PMOD F2 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | Pin |Row 1 |Row 2 | Pin |Row 1 |Row 2 | Pin |Row 1 |Row 2 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 1 |Vb |Vb | 1 |Vd |Vd | 1 |Vf |Vf | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 2 |Gnd |Gnd | 2 |Gnd |Gnd | 2 |Gnd |Gnd | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 3 |Gnd |D23 | 3 |Gnd |D47 | 3 |Gnd |D71 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 4 |Gnd |D22 | 4 |Gnd |D46 | 4 |Gnd |D70 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 5 |Gnd |D21 | 5 |Gnd |D45 | 5 |Gnd |D69 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 6 |Gnd |D20 | 6 |Gnd |D44 | 6 |Gnd |D68 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | PMOD B1 | PMOD D1 | PMOD F1 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | Pin |Row 1 |Row 2 | Pin |Row 1 |Row 2 | Pin |Row 1 |Row 2 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 1 |Vb |Vb | 1 |Vd |Vd | 1 |Vf |Vf | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 2 |Gnd |Gnd | 2 |Gnd |Gnd | 2 |Gnd |Gnd | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 3 |Gnd |D19 | 3 |Gnd |D44 | 3 |Gnd |D77 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 4 |Gnd |D18 | 4 |Gnd |D43 | 4 |Gnd |D76 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 5 |Gnd |D17 | 5 |Gnd |D42 | 5 |Gnd |D65 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 6 |Gnd |D16 | 6 |Gnd |D40 | 6 |Gnd |D64 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | PMOD A2 | PMOD C2 | PMOD E2 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | Pin |Row 1 |Row 2 | Pin |Row 1 |Row 2 | Pin Row 1 |Row 2 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 1 |Va |Va | 1 |Vc |Vc | 1 |Ve |Ve | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 2 |Gnd |Gnd | 2 |Gnd |Gnd | 2 |Gnd |Gnd | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 3 |D11 |D15 | 3 |D35 |D39 | 3 |D59 |D63 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 4 |D10 |D14 | 4 |D34 |D38 | 4 |D58 |D62 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 5 |D09 |D13 | 5 |D33 |D37 | 5 |D57 |D61 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 6 |D08 |D12 | 6 |D32 |D36 | 6 |D56 |D60 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | PMOD A1 | PMOD C1 | PMOD E1 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | Pin |Row 1 |Row 2 | Pin |Row 1 |Row 2 | Pin |Row 1 |Row 2 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 1 |Va |Va | 1 |Vc |Vc | 1 |Ve |Ve | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 2 |Gnd |Gnd | 2 |Gnd |Gnd | 2 |Gnd |Gnd | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 3 |D11 |D15 | 3 |D35 |D39 | 3 |D59 |D63 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 4 |D10 |D14 | 4 |D34 |D38 | 4 |D58 |D62 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 5 |D09 |D13 | 5 |D33 |D37 | 5 |D57 |D61 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ | 6 |D08 |D12 | 6 |D32 |D36 | 6 |D56 |D60 | +--------+------------+--------------+--------+------------+--------------+--------+------------+--------------+ rst2pdf-0.93/rst2pdf/tests/input/test_issue_244.ignore0000664000175000017500000000000011350420225022531 0ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/test_codeblock_tabs0000664000175000017500000000037511424624542022515 0ustar ralsinaralsinatraducciones: radio_es.qm radio_es.qm: radio_es.ts lrelease radio_es.ts -compress -qm radio_es.qm radio_es.ts: radio8.py plsparser.py addradio2.ui radio3.ui pylupdate4 -verbose radio8.py plsparser.py addradio2.ui\ radio3.ui -ts radio_es.ts rst2pdf-0.93/rst2pdf/tests/input/test_transitions.txt0000664000175000017500000001062611205126336022745 0ustar ralsinaralsinaPage 1 ------ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam condimentum, est a placerat fermentum, lacus nisl eleifend nisl, vel laoreet metus neque id nibh. Morbi elementum leo sed sapien. Aliquam erat volutpat. Praesent mollis sapien et felis. Nulla ultricies odio id elit. Ut non quam eget nulla blandit iaculis. Phasellus convallis tempor enim. Nunc nec arcu. Sed hendrerit congue quam. Nulla fermentum tortor vitae lacus. Pellentesque a ante. Pellentesque sed justo. Proin facilisis mattis pede. Donec augue orci, pellentesque id, suscipit quis, placerat id, purus. .. raw:: pdf Transition Dissolve 1 PageBreak Page 2 ------ Quisque dignissim. Duis in velit vel augue rhoncus pretium. Duis non nisl in lorem placerat rutrum. Donec dui elit, blandit at, eleifend sagittis, rhoncus quis, orci. Vestibulum rutrum semper turpis. Nam pretium, mauris in varius venenatis, arcu dolor molestie justo, vitae suscipit elit diam eget dui. Phasellus elementum. Vestibulum ligula. Nunc quis enim. Sed eget augue. Maecenas convallis. Nunc pretium leo eget lectus. Ut a urna. Ut vel nunc eget leo vehicula commodo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. .. raw:: pdf Transition Split 1 90 I PageBreak Page 3 ------ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam condimentum, est a placerat fermentum, lacus nisl eleifend nisl, vel laoreet metus neque id nibh. Morbi elementum leo sed sapien. Aliquam erat volutpat. Praesent mollis sapien et felis. Nulla ultricies odio id elit. Ut non quam eget nulla blandit iaculis. Phasellus convallis tempor enim. Nunc nec arcu. Sed hendrerit congue quam. Nulla fermentum tortor vitae lacus. Pellentesque a ante. Pellentesque sed justo. Proin facilisis mattis pede. Donec augue orci, pellentesque id, suscipit quis, placerat id, purus. .. raw:: pdf Transition Blinds 1 H PageBreak Page 4 ------ Quisque dignissim. Duis in velit vel augue rhoncus pretium. Duis non nisl in lorem placerat rutrum. Donec dui elit, blandit at, eleifend sagittis, rhoncus quis, orci. Vestibulum rutrum semper turpis. Nam pretium, mauris in varius venenatis, arcu dolor molestie justo, vitae suscipit elit diam eget dui. Phasellus elementum. Vestibulum ligula. Nunc quis enim. Sed eget augue. Maecenas convallis. Nunc pretium leo eget lectus. Ut a urna. Ut vel nunc eget leo vehicula commodo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. .. raw:: pdf Transition Box 2 I PageBreak Page 5 ------ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam condimentum, est a placerat fermentum, lacus nisl eleifend nisl, vel laoreet metus neque id nibh. Morbi elementum leo sed sapien. Aliquam erat volutpat. Praesent mollis sapien et felis. Nulla ultricies odio id elit. Ut non quam eget nulla blandit iaculis. Phasellus convallis tempor enim. Nunc nec arcu. Sed hendrerit congue quam. Nulla fermentum tortor vitae lacus. Pellentesque a ante. Pellentesque sed justo. Proin facilisis mattis pede. Donec augue orci, pellentesque id, suscipit quis, placerat id, purus. .. raw:: pdf Transition Wipe 3 180 PageBreak Page 6 ------ Quisque dignissim. Duis in velit vel augue rhoncus pretium. Duis non nisl in lorem placerat rutrum. Donec dui elit, blandit at, eleifend sagittis, rhoncus quis, orci. Vestibulum rutrum semper turpis. Nam pretium, mauris in varius venenatis, arcu dolor molestie justo, vitae suscipit elit diam eget dui. Phasellus elementum. Vestibulum ligula. Nunc quis enim. Sed eget augue. Maecenas convallis. Nunc pretium leo eget lectus. Ut a urna. Ut vel nunc eget leo vehicula commodo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. .. raw:: pdf Transition Glitter 2 270 PageBreak Page 7 ------ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam condimentum, est a placerat fermentum, lacus nisl eleifend nisl, vel laoreet metus neque id nibh. Morbi elementum leo sed sapien. Aliquam erat volutpat. Praesent mollis sapien et felis. Nulla ultricies odio id elit. Ut non quam eget nulla blandit iaculis. Phasellus convallis tempor enim. Nunc nec arcu. Sed hendrerit congue quam. Nulla fermentum tortor vitae lacus. Pellentesque a ante. Pellentesque sed justo. Proin facilisis mattis pede. Donec augue orci, pellentesque id, suscipit quis, placerat id, purus. .. header:: This is a presentation .. footer:: Yes, really! rst2pdf-0.93/rst2pdf/tests/input/test_issue_335.txt0000664000175000017500000000021511413125217022101 0ustar ralsinaralsina.. |mitellogo| image:: images/biohazard.jpg .. footer:: +-----------------+ | |mitellogo| | +-----------------+ Some stuff. rst2pdf-0.93/rst2pdf/tests/input/test_issue_201.txt0000664000175000017500000001161511352666720022112 0ustar ralsinaralsinaTest For Issue 201 ================== Write a normal document with sections and subsections The document happens to end unevenly, so the last generated page is one single line. In LaTeX style, rst2pdf should handle this with more style: either prodding more lines into the next page (or the whole section if short), or pack them into the preceding page. This is a section ================= Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum mattis bibendum mauris vitae mollis. Nam ullamcorper elementum urna, eu tempus erat accumsan et. Sed purus risus, lobortis quis tempus id, facilisis eu lectus. Etiam ut leo id nunc lacinia posuere ac ut dui. Nam ut erat est. Nunc tincidunt, ipsum eget sagittis tempus, mi nibh congue nisi, sit amet aliquet neque tortor dapibus lacus. Praesent eros urna, tempor nec viverra at, aliquam hendrerit metus. Etiam a sapien sapien, vel sollicitudin ante. Etiam at risus at elit condimentum dignissim a sed tortor. Suspendisse sodales fringilla ornare. Ut auctor auctor sollicitudin. In hac habitasse platea dictumst. Pellentesque sodales sodales arcu non vestibulum. Curabitur sed arcu nec ligula auctor elementum at eu lorem. Sed eros erat, feugiat pharetra aliquam vitae, ullamcorper at elit. Pellentesque ac lectus non ipsum egestas aliquam. Sed eget nulla nec lorem aliquet convallis. Maecenas sollicitudin augue sit amet turpis molestie sit amet feugiat urna vehicula. Cras purus mi, mollis eu ultricies eget, ornare pellentesque sapien. Pellentesque ut tortor felis, non feugiat tellus. Sed nec eros mi, non mattis elit. Mauris elit ante, hendrerit eget malesuada sed, gravida a nisl. Vivamus in felis neque, eu tristique lacus. Sed nec orci eget sapien fringilla iaculis. Integer dapibus, libero id eleifend ultrices, erat est commodo orci, at aliquam odio metus at diam. Mauris tincidunt ullamcorper felis id dapibus. Duis a tellus eget ligula facilisis tempus non id tellus. Curabitur dapibus ante ac sem sodales et porta lectus pulvinar. Maecenas ultrices ultricies tristique. Suspendisse potenti. In eu felis et enim condimentum viverra id nec lacus. Proin vel augue ante, sit amet porttitor ipsum. Vestibulum commodo dolor feugiat libero rhoncus euismod. Nunc sit amet nulla nec felis sodales laoreet. Vivamus placerat lorem hendrerit risus suscipit tempus. Etiam non sapien urna, id laoreet velit. Sed ultricies dui vitae turpis rutrum et facilisis diam iaculis. Nullam sit amet tellus non urna venenatis fringilla at consectetur turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas vel neque at eros pellentesque dapibus at eu enim. Donec quis mauris vel orci ullamcorper pulvinar ac ac neque. Nunc at ipsum lectus, eget tincidunt enim. Donec sagittis augue sed leo tempus laoreet. Nunc vel risus ac nisl hendrerit suscipit at sed ipsum. Sed ut turpis mi, lobortis molestie tortor. Donec ac ultrices tellus. Maecenas ornare risus eu velit ultricies tristique. Sed odio arcu, viverra nec vestibulum quis, malesuada at lectus. Nam blandit dapibus mi, quis aliquam lorem viverra at. Fusce id quam sed velit consectetur suscipit eu ac turpis. In aliquam, libero nec congue tincidunt, odio tortor vehicula diam, sed tristique ipsum nisi non turpis. Quisque sit amet risus ut nulla dictum eleifend. Sed quis odio odio, non porttitor neque. Maecenas semper, orci non elementum pretium, mi tortor rutrum risus, vitae venenatis erat leo nec diam. Pellentesque lobortis arcu eu neque luctus eget ullamcorper augue fermentum. Nunc nibh tellus, blandit a vehicula sed, vestibulum ut metus. In justo nunc, varius at fermentum sit amet, euismod quis lorem. Vestibulum eu odio quis arcu ultrices lacinia eget ac quam. Quisque tristique congue porta. Sed ut mi lorem, sit amet ultrices justo. Maecenas eget nisi quam. Etiam sit amet dolor sed lectus interdum porta in non lacus. Donec ac mi nec metus vestibulum posuere eget ultricies tellus. In hac habitasse platea dictumst. Aenean tempor elit quis dolor condimentum faucibus. Morbi molestie mauris in velit lacinia vitae tristique erat tristique. Donec at dolor elit. Duis viverra nisi sed dui feugiat luctus. Proin tristique fringilla neque, nec pulvinar leo auctor a. Maecenas convallis, mi id porttitor elementum, quam augue pharetra felis, a porttitor nulla eros et augue. Donec eu dolor lectus, eu faucibus lacus. Nulla convallis mi a ipsum rutrum vel pharetra ipsum pharetra. Curabitur et orci nisl, et cursus justo. Nam et ultrices ante. Curabitur nec ligula ipsum. Proin eleifend rutrum dui cursus tempor. Nullam vel ligula quam, quis blandit odio. Phasellus laoreet imperdiet sapien, at sodales arcu ullamcorper a. Phasellus enim ipsum, porttitor nec dignissim non, lobortis at justo. Sed consectetur luctus fermentum. And this is a lone last line of text. Phasellus enim ipsum, porttitor nec dignissim non, lobortis at justo. Sed consectetur luctus fermentum. And this is a lone last line of text. rst2pdf-0.93/rst2pdf/tests/input/test_tabwidth.txt0000664000175000017500000000025311307615011022165 0ustar ralsinaralsinaThe next line has a 8-space tab: .. include:: tabs :literal: :tab-width: 8 The next line has a 4-space tab: .. include:: tabs :literal: :tab-width: 4 rst2pdf-0.93/rst2pdf/tests/input/test_issue_186_3.cli0000664000175000017500000000002611406362557022273 0ustar ralsinaralsina--use-floating-images rst2pdf-0.93/rst2pdf/tests/input/test_sidebar_literal2.txt0000664000175000017500000000244111057405431023574 0ustar ralsinaralsinaAdmonitions ``````````` .. Attention:: Directives at large. .. Caution:: Don't take any wooden nickels. .. DANGER:: Mad scientist at work! .. Error:: Does not compute. .. Hint:: It's bigger than a bread box. .. Important:: - Wash behind your ears. - Clean up your room. - Call your mother. - Back up your data. .. Note:: This is a note. .. Tip:: 15% if the service is good. .. WARNING:: Strong prose may provoke extreme mental exertion. Reader discretion is strongly advised. .. admonition:: And, by the way... You can make up your own admonition too. Topics, Sidebars, and Rubrics ````````````````````````````` .. sidebar:: Sidebar Title :subtitle: Optional Subtitle This is a sidebar. It is for text outside the flow of the main text. .. rubric:: This is a rubric inside a sidebar Sidebars often appears beside the main text with a border and background color. .. topic:: Topic Title This is a topic. .. rubric:: This is a rubric Target Footnotes ```````````````` .. target-notes:: Compound Paragraph `````````````````` This paragraph contains a literal block:: Connecting... OK Transmitting data... OK Disconnecting... OK This construct is called a *compound paragraph* and can be produced with the "compound" directive. rst2pdf-0.93/rst2pdf/tests/input/test_issue_311.txt0000664000175000017500000000005711357111254022102 0ustar ralsinaralsinaRelative link_ .. _link: images/biohazard.pdf rst2pdf-0.93/rst2pdf/tests/input/titletemplate.svg0000664000175000017500000000720712064140633022167 0ustar ralsinaralsina image/svg+xml TITLEGOESHERE PRETTY! rst2pdf-0.93/rst2pdf/tests/input/sphinx-multidoc/0000775000175000017500000000000012064144441021713 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-multidoc/conf.py0000664000175000017500000001624311347530423023222 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Sphinx markup documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sphinx' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'sphinx' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'sphinx.tex', u'sphinx Documentation', u'RA', 'manual'), ('index2', 'sphinx2.tex', u'sphinx2 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject1', u'My Project', u'Author Name'), ('index2', u'MyProject2', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = True # If false, no modindex is generated. pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = False pdf_break_level = 1 pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-multidoc/index2.rst0000664000175000017500000000023611251761300023633 0ustar ralsinaralsinaIndex 2 .. glossary:: term3 A term in 1st place term2 A term in 2nd place :term:`term3` and :term:`term2` link to the glossary rst2pdf-0.93/rst2pdf/tests/input/sphinx-multidoc/Makefile0000664000175000017500000000606011247077664023373 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-multidoc/index.rst0000664000175000017500000000023611247105343023555 0ustar ralsinaralsinaIndex 1 .. glossary:: term1 A term in 1st place term2 A term in 2nd place :term:`term1` and :term:`term2` link to the glossary rst2pdf-0.93/rst2pdf/tests/input/test_issue_410.py0000664000175000017500000000003611724537456021726 0ustar ralsinaralsinadef f(): a = 1 b = 2 rst2pdf-0.93/rst2pdf/tests/input/test_slides.txt0000664000175000017500000000127611253564656021672 0ustar ralsinaralsinaThis is my first slide ---------------------- * It has, of course, items in it * More than one item 1. Numbered lists, too This is my second slide ----------------------- rst2pdf can display code nicely: .. code-block:: python for x in range(7): print "cute!" This is my third slide ---------------------- Also, you can use math! .. math:: \frac{2 \pm \sqrt{7}}{3} That is *not* an image. This is my 4th slide -------------------- Other features include: * Images, including SVG * Tables * Font embedding (Type1 and TTF) * Extensible * Background (like this one) * Page transitions .. header:: Rst2pdf Slide Demo .. footer:: © Roberto Alsina, 2009 rst2pdf-0.93/rst2pdf/tests/input/test_math2.txt0000664000175000017500000000135011306602765021404 0ustar ralsinaralsinaBring rst2pdf math support to the level of sphinx's math extension. Inline Math ~~~~~~~~~~~ Since Pythagoras, we know that :math:`a^2 + b^2 = c^2`. Math Directive ~~~~~~~~~~~~~~ This below should go in two lines: .. math:: (a + b)^2 = a^2 + 2ab + b^2 (a - b)^2 = a^2 - 2ab + b^2 Aligned equations: .. math:: (a + b)^2 &= (a + b)(a + b) \\ &= a^2 + 2ab + b^2 Simple math can go as argument of the directive .. math:: (a + b)^2 = a^2 + 2ab + b^2 The :eq:`euler` label should point at this equation: .. math:: e^{i\pi} + 1 = 0 :label: euler .. math:: :nowrap: \begin{eqnarray} y & = & ax^2 + bx + c \\ f(x) & = & x^2 + 2xy + y^2 \end{eqnarray}rst2pdf-0.93/rst2pdf/tests/input/test_issue_64_2.txt0000664000175000017500000000004711063461441022247 0ustar ralsinaralsina:Authors: O'Leary, Tim; Sozzle, Arthur rst2pdf-0.93/rst2pdf/tests/input/test_issue_247.cli0000664000175000017500000000002311302455002022023 0ustar ralsinaralsina--print-stylesheet rst2pdf-0.93/rst2pdf/tests/input/test_issue_230.cli0000664000175000017500000000000611274053231022022 0ustar ralsinaralsina-l de rst2pdf-0.93/rst2pdf/tests/input/test_issue_485.txt0000664000175000017500000000011312061106634022106 0ustar ralsinaralsinaParagraph 1 .. image:: images/biohazard.jpg :width: 100% Paragraph 2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_239.txt0000664000175000017500000000007011274705010022103 0ustar ralsinaralsina.. |warning| image:: warning.svg Inline SVG: |warning| rst2pdf-0.93/rst2pdf/tests/input/test_issue_140.txt0000664000175000017500000000016511221460544022101 0ustar ralsinaralsinatitle ``literal`` ----------------- title *strong* -------------- In the PDF TOC, there should not be any markup. rst2pdf-0.93/rst2pdf/tests/input/test_issue_65.txt0000664000175000017500000000012611273066007022027 0ustar ralsinaralsinaThis text is in tuffy font. However, pdffonts reports Helvetica is used in this file. rst2pdf-0.93/rst2pdf/tests/input/test_issue_349.txt0000664000175000017500000000130711435766735022135 0ustar ralsinaralsina==================== rl_toc demonstration ==================== .. contents:: .. section-numbering:: Section 1 ========== Subsection 1.1 --------------- Subsubsection 1.1.1 ````````````````````` Subsubsection 1.1.2 ````````````````````` Subsection 1.2 --------------- Subsubsection 1.2.1 ````````````````````` Subsubsubsection 1.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Section 2 ========== .. contents:: :local: Subsection 2.1 --------------- .. contents:: :local: Subsubsection 2.1.1 ````````````````````` Subsubsection 2.1.2 ````````````````````` Subsection 2.2 --------------- .. contents:: :local: Subsubsection 2.2.1 ````````````````````` Subsubsubsection 2.2.1.1 ~~~~~~~~~~~~~~~~~~~~~~~~~ rst2pdf-0.93/rst2pdf/tests/input/test_svg.txt0000664000175000017500000000014111206657531021165 0ustar ralsinaralsina.. image:: warning.svg The second image is 3x the first .. image:: warning.svg :scale: 300 rst2pdf-0.93/rst2pdf/tests/input/test_raw_html.cli0000664000175000017500000000001311724710567022135 0ustar ralsinaralsina--raw-html rst2pdf-0.93/rst2pdf/tests/input/test_issue_83.style0000664000175000017500000000004111351252072022340 0ustar ralsinaralsinastyles: code: backColor: #e0e0e0 rst2pdf-0.93/rst2pdf/tests/input/test_issue_186.cli0000664000175000017500000000002611406300535022035 0ustar ralsinaralsina--use-floating-images rst2pdf-0.93/rst2pdf/tests/input/test_issue_463.style0000664000175000017500000000063312060360756022440 0ustar ralsinaralsinapageSetup: firstTemplate: myLayout margin-bottom: 8mm margin-left: 12mm margin-right: 12mm margin-top: 8mm pageTemplates: myLayout: frames: [[0cm, 0cm, 100%, 100%]] defaultHeader = Biohazard PDF in the header: |img| .. |img| image:: images/biohazard.pdf :width: 2cm showFooter: false showHeader: true rst2pdf-0.93/rst2pdf/tests/input/test_issue_297.cli0000664000175000017500000000000611351677753022060 0ustar ralsinaralsina-s bw rst2pdf-0.93/rst2pdf/tests/input/test_transitions.style0000664000175000017500000000034511351252072023262 0ustar ralsinaralsinapageSetup: firstTemplate: oneColumn height: 9cm margin-bottom: 1cm margin-gutter: 0cm margin-left: 1cm margin-right: 1cm margin-top: 1cm spacing-footer: 5mm spacing-header: 5mm width: 16cm rst2pdf-0.93/rst2pdf/tests/input/test_issue_156.style0000664000175000017500000000022111351252072022421 0ustar ralsinaralsinaembeddedFonts: [] [Tuffy.ttf, Tuffy_Bold.ttf, Tuffy_Italic.ttf, Tuffy_Bold_Italic.ttf] styles: tuffy: {fontName: Tuffy, parent: normal} rst2pdf-0.93/rst2pdf/tests/input/test_issue_265.txt0000664000175000017500000000141511327425523022115 0ustar ralsinaralsinaThis is basically a copy of test_issue_138, modified to use a bigger figure, and a larger border padding size. This test shows that the math on size and location calculations for the border and the figure within the border are not correct. This is the default figure class without a border (which seems right): .. figure:: images/text_and_vectors_001.pdf This is the caption. And this is the legend. This is a line after the figure, just to show where things are. .. raw:: pdf PageBreak This is a figure with ``with-border`` class (which is broken at the time of this report): .. class:: with-border .. figure:: images/text_and_vectors_001.pdf This is the caption. And this is the legend. This is a line after the figure, just to show where things are. rst2pdf-0.93/rst2pdf/tests/input/Tuffy_Bold.ttf0000775000175000017500000004145411272577077021372 0ustar ralsinaralsinaFFTMEQ#CGDEF)AGPOS܊ADGSUBltA OS/2iVcmap+Bcvt !y8gaspAglyf2)1head 6hheaD$hmtx: locadqH<maxph name:LUpostd?漢_< .U.U&|00& |NN@33f PfEd ==0hEjw^;PWD8b@OP\]Z^mbDk@@`-7`7 /OwZsssZs+f5ss B?wd|ybySINCoFJ5"BHyXw9zNJ8ZbwVbJEXJqJawyw1'wawQ\lwlJZzNHXl$H9RlBPsy55tFJ5p-P!HA3`XT5Agho]9      5 ds~s~s~s~ wCdCdCdCdCdA! dooooBh> Z Z Z Z Z ZZOVXXXX& "$&HAw~\\~\~\~\v5lllllEwl  & $}<        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a}~pcdhtnjriqfsxblkwy|u{zov!y(h@Nf<~$tF>f~"@Pn8h  < T j | * f  . ~  \ ( J .j~4B|"6r<Fh $0<HT`lFR^jv*6BNLh $0<*4>HP\hrzE #"&54632462#"&LHG)`+,a```DCa$$%99#D```a&46;2#"&'4&%46;2#"&'& O"MGBO"LFBDv"*v"*w/{5####!5!5!5!333!!!l>>77T55JJe,3;3.'#5.'7$467654.}@"(GdwJ2¨OfG  y;86 < {tR. *KVPImw?R  VF P$BE*95^?3m !-12654&#"4632#"&2654&#"4632#"&#32L03%#3װ}}`2L03%"4ױ~~s.750,@@-A.640,AA+;1.#";#"3265#5!##".57.54632Z;CcgOjeonJ"Kl`=>(/*ESMRZwdcG3moW7q~Il -Fh;ވnh46;2#"&'&O"LFBDv"*) &5!!qTLRVPZ !654'!T~v`gW ;M72#'#"'&/#"/.5476?"&=46763'&546?6327632"*+', pn-+ /"*,&, pn.* /5O"L 9   8 O"L :  7 D]& !3!!#!D .83~*%'>54'.54632~*>6J "/E`?OX9vZ<+Q UF5&#"Puu 5S8F^4]gY}`nU/E5!?!!  P\%&'6$32!!4>7>54&#"f @x{Z9G\.zo7,R@*r_cD+jVRe4G@cfy\.zZs2U|@)[ARKc6fmV]L-%32654&+532654&#"'!2#".]%Jf\KnmR;Yl4YJ1FJ(LjqCF]V{\[wG`gB-B-Zgh!>_~K[}JEZ: 3#!!5! !5!OI\^R#"%!!632#".'%32654&Vn9v+7&m懇ZoV0  *4M+n;Zww5Ske0.16-ikm+ !4&#"326632#".54>7!x^\szW^v1 G|hw))L`Za*TPvQ[b !!5 ]PDX 7%2654&#"32654&"2#"$5467.546NqexSh]Ykeb,8WRnS5B(jhljWUUWNab=ެ$D/6+׃oq;*Hg;k) !32654&#"#"54>32!xx^\szW^v1G|hw))L`Za TPvQ[@'@3& -% ! ^L]dY75X!!!!7!!%^7'%! !ZSd[/#-!54>54.#"%>32462#"&%:FG:%>U3OgJ{]5&=II=&```DCa1T>99=R08JiO) B]MK~TF86AKD```aO|:F#"$&546$32#"&'#"&5463232654$#"32632654&#"ph֏}}'#zv8n$U8%)=xݠ__xb%lLM]fDKmJHwwr@?⟕Ќ8bbF^xyݠ^L NhrRE[_C !!!!!,K@3YPw(32654!32654&#%!2#!㚃㨉wwL]jQ/ p]`:DlquZDeGFd-ACOC#m?5i}]?Z"!".54>32.#"327П܎_(*`ۈ9(@O|O3)R[q6X|vRYB]7\SoXs4+32%#!!2ǒ-ӵ/sI !!!!!!s6u*}sI !!!!!s6uZ,".54>32.#"32>5!5!Ʉ֌`))`؄=1TP**PTGm?(E#V_rjYV4[ZXcd0IdY.eRsq !!!!!!s  PPq3! Pfh332>5!#".f=nJEd4 piwQ&JG|m?>mzJf>os  !! !!s OI:uoxts}!!!s @B 3! !!!Bh]egP$w 3!!!w= TP3d1-4.#"32>%4> #".!H\JuI10JuIJuI1M(^Պ]((^ԂՊ^)\Y%4>32'#".Cm[J# 3Fg>^'!K']ن}ω_*H5:jy͌c.ݎVa32&#"#"$S noy&9_U~-/CM0 Q_,1]v6c_} 9VT5 +ejU.K11 2'@Hh>ba23tKV(D5'/4KUtEN!!!!N7#?o!! !! ~UF!!!_U!'PJ5 !!3! !Jj{PY5 ! ! ! !;5 6X ')4B! !!B65<?H!!!!4 #@yo!!#3o b^!!I$wk53#5!wbz|!'!3||UN5!NAJc1&5467632#"G !*/".l < 6 ZN,"3264254.#"'>32!5#"&6osrYXhc!1F=".Y*'g-PR^7c eba=e@R;X3 $:Jokψ@eJw'&)!>32#"&'4."32>y4W`Z-.Z_V4&@GNJD))DJ'$I@'Re[ǛYgR|XJ#!GZ[H!*NVL&#"32>7#"432Ascm&7 H]t>t:r (o-PD(2<iJ&!5#".4>32!32>54."4V_Z.-Z`W4T'@I$'JD))DJNG@&RgYɟ[eRRPN*!H[ZG!#JXJ!.#"27#".5432!knZYod6=jcNɄth-G@ZBb]iVxADQq5J!#5354>32.#"37[G[5+'LLP2ufCY*-dJ3L#65#".4>325!#".'72632>54."4V_Z.-Z`W432!4."y-g7m]9/3F75#Rl9ifdQvH+,HwPy 462"!!yWxWWxE___eP462"73265!#"&yWxWWxD 42Bo_Sq___?0dp(w !!!!B;UDe3"&5!]W߆wN))4&#"!!>32>32!4&"@QR>1DY.0P1'9K^.??1;=%"/@/&NL0dwN)!>32!4."y-g7m]9/3F75#2Rl9ifdQvH+,HwP\ L   #"XDKI/.wV'L&!!>32#"&'4."32>y4W`Z-.Z_V4&@GNJD))DJ'$I@'VۜRe[ǛYgR|XJ#!GZ[H!*NJ?eL,#".4>325!3"&32>54."4V_Z.-Z`W4)BV'@I$'JD))DJNG@&*RgYɟ[eRF,FPN*!H[ZG!#JzAN&#"!!>32l07R+*=2o+'=:ah81Pn5)NvL5.54632.#"#"&'732>54.V1;; ɩQ^: C:)&;?f*sink b@(+!ACa%6=U85Vi7+A/$6&(8~VK'5!-c#1/526)QmOyG,,GyOH1!!31R9i5 #!33#ˎ肪h1cb1 ) ! !!;U":OJl/1'#"&'7326=#"!2>5!P~O/kOTp-c#1/526)OyLep6C^PQmOyG,,GyOB1%!!!5!}&BP+>7>3"3".'.PET  "(,149VHHV.+)&$   T" @Xg:8eX? sf33sRy+ #52657&44ET   $&)+.VHHV941,("  T ?X8:X@ "5>3232>7#"."5+*+:33< M!$3!<'S7530#".#"32>7#9h-HQ'*t%18OH=.$*f0%F|T8 P3P3=Y(4CJ%#5332.#"!!!267#!>&}736 0 e'3 F P?%]\=F:\a0jDE91&51 ,32654&#"#"'!3&547#!6325!#3!=(&::&*;(BD'okN*AJNos+6;&+98uN3<>.Nl lB*+D--u!53!!3!!!!!5!{yPD#53Dfff!9=)8632#"&'7;267#".54>32.#"4.#"3232 Bd>VX[:3 ,@yb;LZ_uD0 5v8! #8 Fxax+'A4  .#"&4632&"327$326&#"N&SejjoIq"L88&, CؙؚSԔIu8&'843'^ 3# 3#P׽^###^#!5!]^\X\Tq'2C2>54.#"4>32#".%232654&+'32#/#=bqrr_XXE'=!gc1#"&'.547632.!2! l  68 < sy%#332653#5#"&(??Cmi)7N%ZHl8YT4=Bot(23"3"&#.54>3!0+,/BbjC,_eVM0(<Pj%?OwJTdG!_]Z{9J>54.'79-(l(375"+Z`o3*) s_ #%#V7׼_"#"#}"C'C=j$C'ro$Cp'A$C}'aH$C''iD$C0'p^$ !!!!!!!!33@w|{rTAd&'v& sI'C s(sI'rs(sIY'A{(sI5'iR('Cs,.'r7j,~Y'A,A'iB^,M#53!2+32+3}}_a ߫d]rqdwh'a 1d1'CD2d1'r2d1r'A2d1'a` 2d1h'i2!,,-c,d1)6!7&54>327!#"732>54' "&#"! Cer*_Ճd<=yl#ZۈV @jF5 >X&O{J/"eXsǓXnVѤl1Ugwk3Ȍ/AfL9o'Cs8o'ro8ov'A8oC'i`8B'ro<02>54!!2#!>llL0n [y^2Lzo 1Q4'E`Wpd=>:!2#"'732>54&+2>?2>54&#" #6[hAJI22b!/ZXȦ#6dc32>32!!.#"osrYXhd6=j{kcҖb!1F=".Y*'g-PzDB_th-G@nZYo ebaBb]i@#@eJe?9;X3 $:JOGNDQq5ZV+L'vFXH'CHXE'rTHX&A;HX'ihH?!!&5467632#" X !*/".1z < 6 9=!!#"&'.547632 .!2! 1x  68 <  !!!'!3 |1zU !!462"&%462#"& ```````DCa1+D```aCD```aH 832654&#"#".54324&''7.'#"'67327Jq;LrR;VB{ \dBF~*_0YT8*<.&nU,wӃopMsNR+=8`T\=7-RI  8"ow'aQ\ L'CR\ L'rNR\ &A!R\  'a}R\ 'i\Rvuz&5%N* 32>54'&#"7.546327!#"&'(:c6Ej3 ȉ*8sޕ*s /72r"{bcQBhS?);e3Dj/lV'C%XlC'r8Xl&A#Xl'iZXl/3'ra\w")!>32#".'4&#"326y~B_Bca$E1{}@MyqKMz=oavG"3)։l/'iJ\!!N!!R}!! WON&NlE Df;W[N WP'NG's$B;QJ}H1#53>32&#"!!!!32>7#"&'#53'&541jRS~7z ~+40>!!8VvL!]jgL3 %3 $)44s& @ g    8   g y L    Q r & & Created by Thatcher Ulrich (http://tulrich.com) with FontForge 1.0 (http://fontforge.sf.net) This font, including hint instructions, has been donated to the Public Domain. Do whatever you want with it. Created by Thatcher Ulrich (http://tulrich.com) with FontForge 1.0 (http://fontforge.sf.net) This font, including hint instructions, has been donated to the Public Domain. Do whatever you want with it. TuffyTuffyBoldBoldFontForge 1.0 : Tuffy Bold : 11-2-2007FontForge 1.0 : Tuffy Bold : 11-2-2007Tuffy BoldTuffy BoldVersion 001.100 Version 001.100 Tuffy-BoldTuffy-BoldThatcher UlrichThatcher Ulrichhttp://tulrich.com http://tulrich.com http://tulrich.com http://tulrich.com Public Domain Public Domain 4f  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~ softhyphen figuredash quotereverseduni201FEuro  latn ,latnkern06<RX^dnt~q&79+Y\Z5)72$7$w$Xy$ (H$H$BD?qYWDQRWX\Y[HH$(*.2379:<?DHIRUY?rst2pdf-0.93/rst2pdf/tests/input/test_issue_289.style0000664000175000017500000000054211423562064022443 0ustar ralsinaralsinastyles: bigbullet: bulletFontSize: 52 fontSize: 12 leading: 56 parent: bullet-list spaceAfter: 3 custombullet: {bulletText: >>, parent: bullet-list} smallbullet: bulletFontSize: 12 fontSize: 32 parent: bullet-list weirdbullet: {bulletFontName: Tuffy, parent: bullet-list} rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue162/0000775000175000017500000000000012064144441021454 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue162/conf.py0000664000175000017500000001602511347476406022773 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue162 documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue162' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue162doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue162.tex', u'issue162 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['borland'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue162/Makefile0000664000175000017500000000606011243332230023107 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue162/index.rst0000664000175000017500000000031211243334641023312 0ustar ralsinaralsina.. code-block:: rst A title ======= Whatever *bold* :: A title ======= Whatever *bold* .. code-block:: html X :: Xrst2pdf-0.93/rst2pdf/tests/input/test_issue_471.style0000664000175000017500000000007712060432174022433 0ustar ralsinaralsina styles: myclass: parent: base fontSize: 50% rst2pdf-0.93/rst2pdf/tests/input/test_autoembedding_type1.txt0000664000175000017500000000017511272600476024325 0ustar ralsinaralsinaThis title should be in Charter Italic font =========================================== This text should be a regular font.rst2pdf-0.93/rst2pdf/tests/input/test_dict_styles.txt0000664000175000017500000000026711337374414022726 0ustar ralsinaralsina .. This tests the new ability to specify the value of "styles" in stylesheet files as a dictionary, rather than a list of two-item lists. .. include:: test_table_classes.txt rst2pdf-0.93/rst2pdf/tests/input/test_issue_132.style0000664000175000017500000000033011351252072022414 0ustar ralsinaralsinaembeddedFonts: [] [Tuffy.ttf, Tuffy_Bold.ttf, Tuffy_Italic.ttf, Tuffy_Bold_Italic.ttf] fontsAlias: stdBold: Tuffy_Bold stdBoldItalic: Tuffy_Bold_Italic stdFont: Tuffy stdItalic: Tuffy_Italic rst2pdf-0.93/rst2pdf/tests/input/test_unicode_headings.txt0000664000175000017500000000037211250047560023656 0ustar ralsinaralsinaA heading with unicode: Áëìćĉ ============================= Even if you can't see the heading correctly in the page, you should see it correctly in your PDF viewer's TOC Dummy heading ============= This is so the first one appears in the TOCrst2pdf-0.93/rst2pdf/tests/input/test_issue_247.nopdf0000664000175000017500000000004211345473645022407 0ustar ralsinaralsinaTest does not generate a PDF file rst2pdf-0.93/rst2pdf/tests/input/test_issue_366.txt0000664000175000017500000000003011452244367022113 0ustar ralsinaralsina`link to whatever <#>`_ rst2pdf-0.93/rst2pdf/tests/input/test_issue_146.style0000664000175000017500000000003711351252072022425 0ustar ralsinaralsinastyles: thai: fontName: garuda rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue364/0000775000175000017500000000000012064144442021461 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue364/conf.py0000664000175000017500000001533211442304051022755 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Sphinx markup documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sphinx' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'sphinx' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'sphinx.tex', u'sphinx Documentation', u'RA', 'manual'), ('index2', 'sphinx2.tex', u'sphinx2 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- pdf_documents = [ ('index', u'index', u'test1', u'C.G.', dict(pdf_use_index=True, pdf_use_modindex=True, pdf_use_coverpage=True)), ('index2', u'index2', u'test2', u'C.G.', dict(pdf_use_index=False, pdf_use_modindex=False, pdf_use_coverpage=False, pdf_compressed=True)), ] pdf_use_index = False pdf_use_modindex = False pdf_use_coverpage = False pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue364/index2.rst0000664000175000017500000000023611251761300023400 0ustar ralsinaralsinaIndex 2 .. glossary:: term3 A term in 1st place term2 A term in 2nd place :term:`term3` and :term:`term2` link to the glossary rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue364/Makefile0000664000175000017500000000606011247077664023140 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue364/index.rst0000664000175000017500000000025311442304051023313 0ustar ralsinaralsinaIndex 1 :term:`term1` .. glossary:: term1 A term in 1st place term2 A term in 2nd place :term:`term1` and :term:`term2` link to the glossary rst2pdf-0.93/rst2pdf/tests/input/test_issue_50.txt0000664000175000017500000000020311206654557022026 0ustar ralsinaralsina.. image:: notthere.jpg .. |inline| image:: notthere.jpg There should be a "missing" image above, and one at the right: |inline| rst2pdf-0.93/rst2pdf/tests/input/test_issue_67.txt0000664000175000017500000000054211203636021022023 0ustar ralsinaralsina* This is a longish paragraph. This is a longish paragraph. This is a longish paragraph. This is a longish paragraph. This is a longish paragraph. This is a longish paragraph. This is a longish paragraph. This is a longish paragraph. This is a longish paragraph. This is a normal paragraph 9. This is the 9th. 10. This is the 10th. rst2pdf-0.93/rst2pdf/tests/input/test_issue_265_2.cli0000664000175000017500000000001511327546724022270 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue168/0000775000175000017500000000000012064144441021462 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue168/conf.py0000664000175000017500000002033511350502223022755 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Foobar documentation build configuration file, created by # sphinx-quickstart on Wed Nov 11 10:37:39 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.graphviz', 'rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Foobar' copyright = u'2009, Jason S' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0.1' # The full version, including alpha/beta/rc tags. release = '1.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'Foobardoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('foobar', 'Foobar.tex', u'Foobar Documentation', u'Jason S', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True graphviz_dot='C:/appl/graphics/graphviz/2.24/bin/dot.exe' # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', u'index', u'index', u'lorenzo'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled pdf_break_level = 1 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' pdf_breakside = 'odd' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 pdf_verbosity = 0 # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = False # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue168/Makefile0000664000175000017500000000606011307603030023115 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue168/index.rst0000664000175000017500000000156511350502223023323 0ustar ralsinaralsinaSyntax Highlighting =================== .. highlight:: python :linenothreshold: 5 .. code-block:: python "Some code without linenos." .. code-block:: python :linenos: "Some code with linenos." .. code-block:: python "This has less than 5 lines, so no linenos" .. code-block:: python "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" "This has more than 5 lines, so it has linenos" :: "This is before a highlight:: none, so it has highlight" .. highlight:: none :: "This is after a highlight:: none, so no highlight" .. literalinclude:: conf.py :lines: 1,3,10-20 rst2pdf-0.93/rst2pdf/tests/input/test_raw_html.txt0000664000175000017500000000051211724703260022201 0ustar ralsinaralsina.. list-table:: :widths: 50 50 :header-rows: 1 * - **Name** - **e-mail** * - Pedro - .. raw:: html

    pedro@mailaddress.es

    * - Dimitri - .. raw:: html

    dimitr@mailaddress.es

    rst2pdf-0.93/rst2pdf/tests/input/sphinx-brokenlinks/0000775000175000017500000000000012064144443022416 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-brokenlinks/conf.py0000664000175000017500000001622311347650413023723 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Sphinx markup documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'sphinxmarkup' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'sphinxmarkup' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'doc1.tex', u'doc1', u'RA', 'manual'), ('index2', u'doc2.tex', u'doc2', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. latex_appendices = ['appendix'] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'doc1', u'doc1', u'Author Name'), ('index2', 'doc2', '', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = True # If false, no modindex is generated. pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = True pdf_break_level = 1 pdf_verbosity=0 pdf_appendices = ['appendix'] pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-brokenlinks/index2.rst0000664000175000017500000000057311252443504024344 0ustar ralsinaralsinaA BIG TITLE =========== :mod:`parrot` links down :mod:`nih` doesn't link at all, because it's not defined in this document :mod:`grail` is in the index but doesn't link. :ref:`app1` .. raw:: pdf PageBreak .. toctree:: modules .. raw:: pdf PageBreak :mod:`parrot` links up .. _in-index-2: A section in index 2 -------------------- The content of the section rst2pdf-0.93/rst2pdf/tests/input/sphinx-brokenlinks/modules.rst0000664000175000017500000000034211252437607024624 0ustar ralsinaralsina MODULES ======= .. index:: module: grail .. _the-parrot-module: The parrot module ----------------- .. module:: parrot :platform: Unix, Windows :synopsis: Analyze and reanimate dead parrots. This is about parrot rst2pdf-0.93/rst2pdf/tests/input/sphinx-brokenlinks/appendix.rst0000664000175000017500000000006711247132014024754 0ustar ralsinaralsina.. _app1: Appendix 1 ---------- This is the appendix rst2pdf-0.93/rst2pdf/tests/input/sphinx-brokenlinks/Makefile0000664000175000017500000000606011247013000024042 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-brokenlinks/index.rst0000664000175000017500000000016011251771517024261 0ustar ralsinaralsinaBroken link_ .. _link: whatever :mod:`parrot` :ref:`in-index-2` :ref:`the-parrot-module` :doc:`modules` rst2pdf-0.93/rst2pdf/tests/input/test_issue_186.txt0000664000175000017500000000100711406273624022115 0ustar ralsinaralsina.. image:: images/biohazard.png :align: right Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. .. image:: images/biohazard.png :align: left Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. .. image:: images/biohazard.png Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. Test text. rst2pdf-0.93/rst2pdf/tests/input/test_issue_70.txt0000664000175000017500000000005011066073055022020 0ustar ralsinaralsina+--+--+ |? |? | +==+==+ |? |? | +--+--+ rst2pdf-0.93/rst2pdf/tests/input/test_inkscape.style0000664000175000017500000000012311351252072022474 0ustar ralsinaralsinapageSetup: firstTemplate: twoColumn margin-left: 1cm margin-right: 1cm rst2pdf-0.93/rst2pdf/tests/input/test_style_width.txt0000664000175000017500000000162211366072321022725 0ustar ralsinaralsina.. class:: halfwidthtable +---------------------+---------------------+ | 50% width | 50% width | +---------------------+---------------------+ .. class:: halfwidth This is a paragraph that should be half-page wide. This is a paragraph that should be half-page wide. This is a paragraph that should be half-page wide. This is a paragraph that should be half-page wide. This is a paragraph that should be half-page wide. This is a paragraph that should be half-page wide. This is a paragraph that should be half-page wide. .. class:: threeq This is a paragraph that should be 3/4ths of a page wide. This is a paragraph that should be 3/4ths of a page wide. This is a paragraph that should be 3/4ths of a page wide. This is a paragraph that should be 3/4ths of a page wide. This is a paragraph that should be 3/4ths of a page wide. This is a paragraph that should be 3/4ths of a page wide. rst2pdf-0.93/rst2pdf/tests/input/test_issue_390.txt0000664000175000017500000000013211530354013022076 0ustar ralsinaralsinaIf this page is A5, then Issue 390 is fixed. If this page is A4, then Issue 390 is open. rst2pdf-0.93/rst2pdf/tests/input/test_issue_390.ignore0000664000175000017500000000000011530356327022546 0ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/run_tests.sh0000664000175000017500000000301111247770601021146 0ustar ralsinaralsina#!/bin/sh compare_pdfinfo() { # Given two PDF files $1 and $2, compare the output of pdfinfo except for # creation date. pdfinfo $1 | grep -v CreationDate | grep -v "File size"> $1.info pdfinfo $2 | grep -v CreationDate | grep -v "File size"> $2.info if cmp -s $1.info $2.info then true #echo "PDF metadata is correct" else echo "PDF metadata for $1 is wrong" fi #rm $1.info $2.info } run_test() { bn=`basename $1 .txt` st="$bn.style" if [ -f "$st" ] then style="-s $st" else style="" fi echo "Processing $1" if python ../../createpdf.py -v $1 $style $RSTOPTIONS 2> $1.err then if [ -f "correct/$bn.pdf" ] then compare_pdfinfo $bn.pdf correct/$bn.pdf if [ ! -d temp-$bn ] then mkdir temp-$bn fi rm -f temp-$bn/* convert $bn.pdf temp-$bn/page.png convert correct/$bn.pdf temp-$bn/correctpage.png cd temp-$bn for page in page*png do result=`compare -metric PSNR $page correct$page diff$page 2>&1` if [ "$result" = "inf" ] then #echo "$page is OK" true else echo "$page has ERRORs, see temp-$bn/diff$page" fi done cd .. fi else echo ERROR processing $1, see $1.err fi } if [ $# -eq 0 ] then for t in *.txt do run_test $t done else while [ ! -z $1 ] do run_test $1 shift done fi rst2pdf-0.93/rst2pdf/tests/input/test_uml_extension.txt0000664000175000017500000000023311576677043023273 0ustar ralsinaralsina.. uml:: :format: svg Alice -> Bob: Hi! Alice <- Bob: How are you? .. uml:: :format: png Alice -> Bob: Hi! Alice <- Bob: How are you? rst2pdf-0.93/rst2pdf/tests/input/numbered_links.txt0000664000175000017500000000015211444151603022323 0ustar ralsinaralsinaIntroduction ------------ See `Termination`_ Termination ----------- See `Introduction`_ .. sectnum:: rst2pdf-0.93/rst2pdf/tests/input/test_issue_217.style0000664000175000017500000000067611423562064022442 0ustar ralsinaralsina{ "styles": [ ["bullet-list", { "parent": "bodytext", "spaceBefore": 0, "commands": [ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ], [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ] ], "colWidths": ["20",null] }], ["bullet-list-item" , { "parent": "bodytext", "spaceBefore": 30 }], ["item-list-item" , { "parent": "bodytext", "spaceBefore": 30 }] ]}rst2pdf-0.93/rst2pdf/tests/input/test_issue_297.txt0000664000175000017500000000013211351677753022130 0ustar ralsinaralsina.. code-block:: python def x(self, y): # self above should be black, not green rst2pdf-0.93/rst2pdf/tests/input/test_cover_2.txt0000664000175000017500000000012011354436072021721 0ustar ralsinaralsinaThis is the Title ================= :author: Joe Writer This is the document. rst2pdf-0.93/rst2pdf/tests/input/test_page_counter.txt0000664000175000017500000000041111251616416023036 0ustar ralsinaralsina.. header:: ###Page### This should be page 1 .. raw:: pdf PageBreak SetPageCounter 4 This should be page 4 .. raw:: pdf PageBreak SetPageCounter 2 lowerroman This should be page ii .. raw:: pdf PageBreak This should be page iii rst2pdf-0.93/rst2pdf/tests/input/test_issue_363.txt0000664000175000017500000000007411441514347022114 0ustar ralsinaralsina.. math:: $P \cdot V = n \cdot R \cdot T = {\rm constant}$ rst2pdf-0.93/rst2pdf/tests/input/test_issue_310_2.txt0000664000175000017500000000032311361222003022304 0ustar ralsinaralsinaThis one should show lines 254 - 325 .. code-block:: python :linenos: :linenos_offset: :include: pyurl3.py :start-after: return data :end-before: bottle.send_file(filename, root='./static/') rst2pdf-0.93/rst2pdf/tests/input/test_issue_65_2.style0000664000175000017500000000017311361312517022571 0ustar ralsinaralsinaembeddedFonts: [] [Tuffy.ttf, Tuffy_Bold.ttf, Tuffy_Italic.ttf, Tuffy_Bold_Italic.ttf] fontsAlias: stdFont: Tuffy rst2pdf-0.93/rst2pdf/tests/input/test_issue_239_2.cli0000664000175000017500000000001411347773475022277 0ustar ralsinaralsina-e inkscape rst2pdf-0.93/rst2pdf/tests/input/test_issue_197.style0000664000175000017500000000032311351763225022440 0ustar ralsinaralsinastyles: funborder: commands: [] [GRID, [0, 0], [-1, -1], 2, red] noborder: parent: funborder commands: [ [GRID, [0, 0], [-1, -1], 0.25, white] ] rst2pdf-0.93/rst2pdf/tests/input/test_issue_239.ignore0000664000175000017500000000000011347774633022562 0ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue196/0000775000175000017500000000000012064144442021464 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue196/conf.py0000664000175000017500000001606011347476406023001 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue196 documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'contents' # General information about the project. project = u'issue196' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue196doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('contents', 'issue196.tex', u'issue196 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('contents', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: #pdf_stylesheets = ['buggy'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support #pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_break_level = 1 pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue196/index2.rst0000664000175000017500000000007311254246471023414 0ustar ralsinaralsinaSection 2 ========= .. contents:: :local: Sub A ----- rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue196/index1.rst0000664000175000017500000000007311254246471023413 0ustar ralsinaralsinaSection 1 ========= .. contents:: :local: Sub A ----- rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue196/contents.rst0000664000175000017500000000004211254242116024044 0ustar ralsinaralsina.. toctree:: index1 index2 rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue196/Makefile0000664000175000017500000000606011254242116023123 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/test_header_footer.txt0000664000175000017500000000033311056131604023166 0ustar ralsinaralsinaTest Doc ======== The section ----------- The content Another Section --------------- .. header:: This is page ###Page### .. footer:: The document is called ###Title### and the section is ###Section### rst2pdf-0.93/rst2pdf/tests/input/test_issue_304.txt0000664000175000017500000000021311352754111022076 0ustar ralsinaralsina.. code-block:: scala class Foo { val bar = 0 } .. class:: code-bigger .. code-block:: scala class Foo { val bar = 0 } rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue166/0000775000175000017500000000000012064144441021460 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue166/conf.py0000664000175000017500000002037611350215636022771 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Foobar documentation build configuration file, created by # sphinx-quickstart on Wed Nov 11 10:37:39 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.graphviz', 'rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Foobar' copyright = u'2009, Jason S' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0.1' # The full version, including alpha/beta/rc tags. release = '1.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'Foobardoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('foobar', 'Foobar.tex', u'Foobar Documentation', u'Jason S', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True graphviz_dot='C:/appl/graphics/graphviz/2.24/bin/dot.exe' # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', u'index', u'index', u'lorenzo'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled pdf_break_level = 1 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' pdf_breakside = 'odd' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 pdf_verbosity = 0 # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = False # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False pdf_page_template = 'customPage' pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue166/Makefile0000664000175000017500000000606011307603030023113 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue166/index.rst0000664000175000017500000000016011350215636023320 0ustar ralsinaralsina.. hlist:: :columns: 3 * A list of * short items * that should be * displayed * horizontally rst2pdf-0.93/rst2pdf/tests/input/test_background_svg.style0000664000175000017500000000061711351252072023705 0ustar ralsinaralsinapageSetup: firstTemplate: cutePage height: 9cm margin-bottom: 0cm margin-gutter: 0cm margin-left: 0cm margin-right: 0cm margin-top: 0cm spacing-footer: 5mm spacing-header: 5mm width: 16cm pageTemplates: cutePage: background: background.svg frames: [] [0cm, 0cm, 100%, 100%] showFooter: false showHeader: false rst2pdf-0.93/rst2pdf/tests/input/test_issue_216.py0000664000175000017500000000135611265515213021723 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- from reportlab.platypus import SimpleDocTemplate, Paragraph from reportlab.platypus.doctemplate import Indenter from reportlab.platypus.flowables import * from reportlab.platypus.xpreformatted import * from reportlab.lib.styles import getSampleStyleSheet from copy import copy def go(): Story=[] styles = getSampleStyleSheet() doc = SimpleDocTemplate("issue216.pdf") knstyle=copy(styles['Normal']) heading=Paragraph('A heading at the beginning of the document',knstyle) heading.keepWithNext=True content= XPreformatted('This is the content\n'*120,styles['Normal']) Story=[heading,content] doc.build(Story) go() rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/0000775000175000017500000000000012064144444021463 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/make.bat0000664000175000017500000000643011273716560023100 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "pdf" ( %SPHINXBUILD% -b pdf %ALLSPHINXOPTS% %BUILDDIR%/pdf echo. echo.Build finished. The PDF pages are in %BUILDDIR%/pdf. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\TestCase.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\TestCase.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/Makefile0000664000175000017500000000645211273716560023137 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf @echo @echo "Build finished. The PDF pages are in $(BUILDDIR)/pdf." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/TestCase.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/TestCase.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/source/0000775000175000017500000000000012064144444022763 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/source/conf.py0000664000175000017500000002076511452654554024304 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Test Case documentation build configuration file, created by # sphinx-quickstart on Mon Nov 02 15:48:51 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc','rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Test Case' copyright = u'2009, vorsorge' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1' # The full version, including alpha/beta/rc tags. release = '1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'TestCasedoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'TestCase.tex', u'Test Case Documentation', u'vorsorge', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', 'TestCase', u'A Sphinx Test Case', u'vorsorge'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx','letter'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support #pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled pdf_break_level = 1 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' #pdf_breakside = 'any' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 pdf_verbosity = 2 # If false, no index is generated. #pdf_use_index = True # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. pdf_use_coverpage = True # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False # Set the default DPI for images #pdf_default_dpi = 72 rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/source/_static/0000775000175000017500000000000012064144444024411 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/source/Doc2.rst0000664000175000017500000000023411452654554024313 0ustar ralsinaralsina ===== Doc2 ===== .. contents:: :local: -------------- Section Beta -------------- Some text. ------------ Section One ------------ Some more text. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/source/_templates/0000775000175000017500000000000012064144444025120 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/source/Doc1.rst0000664000175000017500000000023511452654554024313 0ustar ralsinaralsina ===== Doc1 ===== .. contents:: :local: -------------- Section Alpha -------------- Some text. ------------ Section One ------------ Some more text. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue229/source/index.rst0000664000175000017500000000043511273716560024633 0ustar ralsinaralsina.. Test Case documentation master file, created by sphinx-quickstart on Mon Nov 02 15:48:51 2009. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. .. toctree:: :maxdepth: 2 Doc1 Doc2 rst2pdf-0.93/rst2pdf/tests/input/numbered_links.cli0000664000175000017500000000002511444151603022252 0ustar ralsinaralsina--use-numbered-links rst2pdf-0.93/rst2pdf/tests/input/test_issue_467.txt0000664000175000017500000000014612062705042022113 0ustar ralsinaralsina.. role:: py(code) :language: python :class: highlight Test inline: :py:`for i in range(5):`. rst2pdf-0.93/rst2pdf/tests/input/test_issue_394_png.cli0000664000175000017500000000002611760040710022701 0ustar ralsinaralsina--use-floating-images rst2pdf-0.93/rst2pdf/tests/input/test_custom_cover.txt0000664000175000017500000000017311354436760023106 0ustar ralsinaralsinaThis is the Title ================= This is the Subtitle -------------------- :author: Joe Writer This is the document. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue251/0000775000175000017500000000000012064144441021453 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue251/conf.py0000664000175000017500000001620411347650521022761 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue251 documentation build configuration file, created by # sphinx-quickstart on Tue Aug 18 22:54:33 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. # It's probably a good idea to use pdfmath BEFORE pngmath extensions = ['rst2pdf.pdfbuilder','sphinx.ext.graphviz'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue251' copyright = u'2009, RA' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = 'test' # The full version, including alpha/beta/rc tags. release = 'test' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue251doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue251.tex', u'issue251 Documentation', u'RA', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author). pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed=False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path=['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language="en_US" # If false, no index is generated. pdf_use_index = False # If false, no modindex is generated. pdf_use_modindex = False # If false, no coverpage is generated. pdf_use_coverpage = False pdf_verbosity=0 pdf_extensions=['vectorpdf'] pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue251/make.bat0000664000175000017500000000562311242657700023072 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set ALLSPHINXOPTS=-d _build/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (_build\*) do rmdir /q /s %%i del /q /s _build\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% _build/html echo. echo.Build finished. The HTML pages are in _build/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% _build/dirhtml echo. echo.Build finished. The HTML pages are in _build/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% _build/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% _build/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% _build/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in _build/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% _build/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in _build/qthelp, like this: echo.^> qcollectiongenerator _build\qthelp\issue158.qhcp echo.To view the help file: echo.^> assistant -collectionFile _build\qthelp\issue158.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% _build/latex echo. echo.Build finished; the LaTeX files are in _build/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% _build/changes echo. echo.The overview file is in _build/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% _build/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in _build/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% _build/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in _build/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue251/Makefile0000664000175000017500000000606011242657700023121 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue251/index.rst0000664000175000017500000000035411307613456023324 0ustar ralsinaralsina.. graphviz:: digraph g { node [shape = record,height=.08]; node0[label = "header (a5 00)\n2 | data\n12 | checksum\n2 "]; node1[label = "header (a5 01)\n2 | A | B | C | quick brown fox lazy dogs | checksum\n2 "]; }rst2pdf-0.93/rst2pdf/tests/input/test_issue_68_1.style0000664000175000017500000000003311351252072022564 0ustar ralsinaralsinastyles: base: fontSize: 12 rst2pdf-0.93/rst2pdf/tests/input/test_issue_134.txt0000664000175000017500000000002211220155650022072 0ustar ralsinaralsina1 < 2 `1 < 2 ` rst2pdf-0.93/rst2pdf/tests/input/test_image_units.txt0000664000175000017500000000200111207105754022663 0ustar ralsinaralsinaThe valid units are: "em" "ex" "px" "in" "cm" "mm" "pt" "pc" "%" "". 16px with 16DPI (defined in the image) == 1 inch .. image:: images/biohazard_16dpi.png 300, no unit == 300px at 300DPI == 1 inch .. image:: images/biohazard.png :width: 300 1in == 1 inch .. image:: images/biohazard.png :width: 1in 2.54cm == 1 inch .. image:: images/biohazard.png :width: 2.54cm 25.4mm == 1 inch .. image:: images/biohazard.png :width: 25.4mm 72pt == 1 inch .. image:: images/biohazard.png :width: 72pt 7.2em with a 10pt base font == 1 inch .. image:: images/biohazard.png :width: 7.2em We use the broken IE definition of ex because it's easier. So, 14.4 ex == 7.2 em with 10pt base font == 1 inch .. image:: images/biohazard.png :width: 14.4ex 1pc == 12pt == 1/6th inch, so 6pc == 1inch .. image:: images/biohazard.png :width: 6pc All the above images should be exactly 1 inch wide. .. image:: images/biohazard.png :width: 100% The above image should be exactly the width of the text area rst2pdf-0.93/rst2pdf/tests/input/test_issue_227.style0000664000175000017500000000062711351252072022432 0ustar ralsinaralsinapageSetup: firstTemplate: cutePage height: 9cm margin-bottom: 0cm margin-gutter: 0cm margin-left: 0cm margin-right: 0cm margin-top: 0cm spacing-footer: 5mm spacing-header: 5mm width: 16cm pageTemplates: cutePage: background: background-missing.png frames: [] [0cm, 0cm, 100%, 100%] showFooter: false showHeader: false rst2pdf-0.93/rst2pdf/tests/input/test_issue_339.style0000664000175000017500000000011311423554462022434 0ustar ralsinaralsinastyles: custom_blue: parent: normal textColor: blue rst2pdf-0.93/rst2pdf/tests/input/test_issue_349.cli0000664000175000017500000000001111435766735022054 0ustar ralsinaralsina-l zh_cn rst2pdf-0.93/rst2pdf/tests/input/test_issue_95.txt0000664000175000017500000000163211136322347022035 0ustar ralsinaralsina13. On MMS Settings window - fill data This should be indented and aligned with the table =========================================== ==================================================== MMS Server URL http://mms.itelcel.com/servlets/mms Use Specific Network Connection(GPRS Modem) Network Connection pick "Modem: Standard 33600 bps Modem" from the list Wap Gateway IP Address 148.233.151.240 Modem Used Standard 33600 bps Modem GPRS APN mms.itelcel.com Login name mmsgprs Password mmsgprs2003 =========================================== ==================================================== This should be indented and aligned with the table rst2pdf-0.93/rst2pdf/tests/input/test_issue_232.txt0000664000175000017500000000012711274067703022111 0ustar ralsinaralsinaA title with a *tag* -------------------- The window title should not have in it. rst2pdf-0.93/rst2pdf/tests/input/test_fancytitles.txt0000664000175000017500000000021412064140633022705 0ustar ralsinaralsinaSection 1 ========== The titles of these sections should be pretty. Section 2 ========== The titles of these sections should be pretty. rst2pdf-0.93/rst2pdf/tests/input/test_issue_199.txt0000664000175000017500000000034111256300573022116 0ustar ralsinaralsina.. header:: This is the header .. footer:: This is the footer This is the content Title ===== If you build this using -b 1 --break-side=odd there is no header or footer in this page. Unless Issue 199 is fixed.rst2pdf-0.93/rst2pdf/tests/input/test_image_units.style0000664000175000017500000000012311351252072023203 0ustar ralsinaralsinapageSetup: firstTemplate: twoColumn margin-left: 1cm margin-right: 1cm rst2pdf-0.93/rst2pdf/tests/input/test_issue_331.txt0000664000175000017500000000120111410210551022062 0ustar ralsinaralsina +--------------------------------------+--------------------------------------+ |.. figure:: none.jpg |.. figure:: none.jpg | | :figwidth: 100% | :figwidth: 100% | | :align: center | :align: center | | :width: 100% | :width: 100% | | | | | should only fill half of the page | should only fill half of the page | +--------------------------------------+--------------------------------------+ rst2pdf-0.93/rst2pdf/tests/input/test_table_space.txt0000664000175000017500000000040211055536175022632 0ustar ralsinaralsinaThis is before the table. +-------------------+------------------+ | 1 | 2 | +-------------------+------------------+ | 1 | 2 | +-------------------+------------------+ This is after the table. rst2pdf-0.93/rst2pdf/tests/input/test_fontsizeunits.style0000664000175000017500000000010211351252072023620 0ustar ralsinaralsinastyles: bodytext: fontSize: .3cm heading1: fontSize: 150% rst2pdf-0.93/rst2pdf/tests/input/test_footnotes.txt0000664000175000017500000000210411055536175022411 0ustar ralsinaralsina[2]_ will be "2" (manually numbered), [2]_ is mentioned more than once. [2]_ actually three times [#]_ will be "3" (anonymous auto-numbered), and [#label]_ will be "1" (labeled auto-numbered). Here is a symbolic footnote reference: [*]_. Here is a symbolic footnote reference: [*]_. Here is a symbolic footnote reference: [*]_. Here is a symbolic footnote reference: [*]_. .. [*] This is the footnote. .. [*] This is the footnote. .. [*] This is the footnote. .. [*] This is the footnote. Here is a citation reference: [CIT2002]_. .. [CIT2002] This is the citation. It's just like a footnote, except the label is textual. .. [2] This footnote is labeled manually, so its number is fixed. .. [#label] This autonumber-labeled footnote will be labeled "1". It is the first auto-numbered footnote and no other footnote with label "1" exists. The order of the footnotes is used to determine numbering, not the order of the footnote references. .. [#] This footnote will be labeled "3". It is the second auto-numbered footnote, but footnote label "2" is already used. rst2pdf-0.93/rst2pdf/tests/input/source.txt0000664000175000017500000000721211055536175020637 0ustar ralsinaralsinapython ====== .. code-block:: python import os, shutil, sys, tempfile, urllib2 tmpeggs = tempfile.mkdtemp() try: import pkg_resources except ImportError: ez = {} exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' ).read() in ez ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) import pkg_resources apache ====== .. code-block:: apache WSGIPythonHome ${sandbox} WSGIDaemonProcess tmp threads=1 processes=4 maximum-requests=10000 python-path=${sandbox}/lib/python2.4/site-packages ServerName my.machine.local WSGIScriptAlias /site ${sandbox}/bin/zope2.wsgi WSGIProcessGroup tmp WSGIPassAuthorization On SetEnv HTTP_X_VHM_HOST http://my.machine.local/site SetEnv PASTE_CONFIG ${sandbox}/etc/zope2.ini shell ===== .. code-block:: sh #! /bin/bash INSTALLDIR=`dirname $0` if [ -z "$INSTALLDIR" ] ; then INSTALLDIR=`pwd`; export INSTALLDIR fi ARG1=$1 echo echo This installer actually builds Zenoss. echo For a simpler installation try the VMPlayer Appliance image, echo or use RPMs for Redhat based systems. echo echo Building... echo # interactive install (prompt for usernames and passwords) if [ -z "$ARG1" ]; then exec $INSTALLDIR/build.sh fi # non-interactive install (use defaults) if [ "${ARG1}" = "--no-prompt" ]; then exec $INSTALLDIR/build-noprompt.sh < /dev/null fi traduction ========== .. code-block:: po #. Default: "Switch between visual editor and HTML view" #: kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html:189 msgid "toggle_source_view" msgstr "modifier le code HTML" config ====== .. code-block:: cfg [buildout] parts = rst2pdf find-links = #reportlab http://ftp.schooltool.org/schooltool/eggs/3.4 #wordaxe http://sourceforge.net/project/platformdownload.php?group_id=105867 [rst2pdf] recipe = zc.recipe.egg:scripts eggs = rst2pdf simplejson wordaxe javascript ========== .. code-block:: js WidgeteerDrawerTool.prototype.closeDrawer = function(button) { if (!this.current_drawer) { return; }; this.current_drawer.hide(); this.current_drawer.editor.resumeEditing(); this.current_drawer = null; var parentdoc = parent.document; var placeholder = parentdoc.getElementById('drawerplaceholder') placeholder.style.display = 'none'; }; XML === .. code-block:: xml HTML ==== .. code-block:: html TwistedSNMP

    TwistedSNMP

    TwistedSNMP is a set of SNMP protocol implementations for Python's Twisted Matrix networking framework using the PySNMP project.  It provides the following:

    • get, set, getnext and getbulk Manager-side queries
    • get, set, getnext and getbulk Agent-side services

    Eventual goals of the system:
    rst2pdf-0.93/rst2pdf/tests/input/test_issue_299.txt0000664000175000017500000000020411351751171022115 0ustar ralsinaralsina.. oddeven:: .. class:: thick +--+--+--+ |A |B | C| +--+--+--+ The table above should have a very thick red border. rst2pdf-0.93/rst2pdf/tests/input/test_issue_277_2.txt0000664000175000017500000000143611340144655022343 0ustar ralsinaralsina.. csv-table:: Table 1 :widths: 3, 10 "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" .. csv-table:: :widths: 3, 10 "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" "Test", "Test" rst2pdf-0.93/rst2pdf/tests/input/test_stylesheet_includes.txt0000664000175000017500000000710011261712623024442 0ustar ralsinaralsinaLorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus pulvinar dui in felis convallis tempus. Phasellus neque neque, ornare eget cursus in, egestas a turpis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce blandit metus vitae dui interdum dictum. Quisque sed odio urna. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum ultricies orci consectetur leo tincidunt feugiat. Praesent ut dolor tortor, eget tincidunt leo. Integer luctus, risus quis congue bibendum, nibh ligula tempus eros, a hendrerit justo erat eget eros. Vestibulum nec nisi dui, eget sollicitudin leo. Praesent turpis tellus, molestie non molestie non, consectetur non enim. Proin non nisl sit amet lorem rutrum adipiscing vitae ut est. Nullam commodo posuere tellus, nec convallis risus malesuada sit amet. Praesent a lorem sit amet mi tincidunt egestas nec et metus. Vivamus sodales bibendum ipsum vel lacinia. Morbi rhoncus feugiat odio, sed sodales massa pellentesque ut. Nam ac nisl sed lorem lacinia tempor sodales at turpis. Duis nec consectetur libero. Proin porttitor, ante eget malesuada semper, nisl magna vestibulum orci, nec commodo turpis lectus vel libero. Quisque sem turpis, malesuada sed rhoncus vitae, lobortis sit amet arcu. Vestibulum ornare malesuada tortor. Donec sit amet orci non purus dignissim faucibus. Sed urna enim, interdum id egestas in, auctor tincidunt felis. Nullam quam tortor, elementum in tincidunt non, adipiscing sit amet eros. Etiam posuere posuere quam, eget tincidunt nisl vestibulum in. Donec tincidunt consequat nisi, et adipiscing purus scelerisque elementum. Maecenas elementum tempor ultricies. Phasellus vitae interdum neque. Nam nunc lorem, semper at tristique vel, commodo non ante. Duis placerat dui sed augue volutpat lobortis. Maecenas ac tempor lorem. Nam at nisl felis, a adipiscing dui. Mauris quis tempor enim. Integer est dui, egestas non ullamcorper eu, hendrerit adipiscing urna. Nullam id enim elit, ac mollis libero. Praesent felis enim, vulputate sit amet sollicitudin vitae, lacinia id justo. Curabitur volutpat, erat vel elementum vestibulum, sem enim consectetur diam, in tempor massa turpis eu est. Fusce ornare vestibulum tristique. Cras eu nisi vitae augue tincidunt aliquam. Proin eu augue est. In et ipsum dignissim velit molestie gravida. Phasellus nec odio at massa facilisis accumsan in sit amet lorem. Donec vestibulum sodales sapien, vitae malesuada enim auctor a. Mauris placerat condimentum neque aliquet sollicitudin. Nulla sit amet risus et ante auctor molestie. Donec et blandit velit. Nunc congue orci in augue volutpat eu gravida est commodo. Fusce gravida tristique est ut vulputate. Integer vulputate feugiat posuere. Vestibulum egestas lacinia est a sollicitudin. In gravida aliquam sapien, et hendrerit metus sollicitudin nec. Etiam eu fermentum dui. Nulla nec enim ullamcorper odio ultricies dignissim. Pellentesque in mauris quis lorem lobortis fermentum rhoncus at odio. Suspendisse cursus aliquam tortor, et lobortis leo commodo in. Sed vitae vulputate ligula. Praesent vitae urna id ipsum tristique ultricies. Curabitur odio nisi, gravida quis venenatis nec, fermentum at metus. Ut eu neque sit amet nisl feugiat scelerisque eu vel enim. Curabitur felis ipsum, ultrices nec mattis eu, euismod et justo. Sed feugiat mauris sed arcu molestie et pretium arcu vestibulum. Fusce id imperdiet lorem. Aenean sem dolor, ullamcorper in scelerisque sed, fringilla in sapien. Proin commodo blandit augue sit amet interdum.rst2pdf-0.93/rst2pdf/tests/input/test_issue_138.style0000664000175000017500000000042411410147275022432 0ustar ralsinaralsinastyles: with-border: backColor: white borderPadding: 8 commands: [] [BOX, [0, 0], [-1, -1], 0.25, black] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [ALIGN, [ 0, 0 ], [ -1, -1 ], CENTER ] parent: figure rst2pdf-0.93/rst2pdf/tests/input/test_issue_289.txt0000664000175000017500000000071411350464403022120 0ustar ralsinaralsina.. class:: bigbullet * big bullet .. class:: smallbullet * small bullet .. start a new list * regular bullet .. class:: bigbullet 1. big item .. class:: smallbullet 1. small item .. start a new list 1. regular item .. start a new list .. class:: weirdbullet l. Tuffy bullet .. start a new list l. Helvetica bullet .. start a new list .. class:: custombullet * The bullet should be ">>" .. class:: custombullet 1. The bullet should be "1." rst2pdf-0.93/rst2pdf/tests/input/test_issue_390.cli0000664000175000017500000000003111530354052022027 0ustar ralsinaralsina--config=config.issue390 rst2pdf-0.93/rst2pdf/tests/input/test_issue_394.cli0000664000175000017500000000004211530352233022034 0ustar ralsinaralsina--use-floating-images -e inkscape rst2pdf-0.93/rst2pdf/tests/input/test_issue_290.txt0000664000175000017500000000004311350420045022075 0ustar ralsinaralsina.. image:: images/notapng.png rst2pdf-0.93/rst2pdf/tests/input/test_issue_73.style0000664000175000017500000000004611351252072022344 0ustar ralsinaralsinafontsAlias: stdMono: DejaVu Sans Mono rst2pdf-0.93/rst2pdf/tests/input/test_stylesheet_includes.style0000664000175000017500000000005712062354156024772 0ustar ralsinaralsinaoptions: stylesheets: [twelvepoint, twocolumn] rst2pdf-0.93/rst2pdf/tests/input/test_issue_48.txt0000664000175000017500000000047411061745546022045 0ustar ralsinaralsina+-+----------------------------------------------------------+ |a|b | | | | | |c | +-+----------------------------------------------------------+ rst2pdf-0.93/rst2pdf/tests/input/test_issue_107.txt0000664000175000017500000000007511202554321022100 0ustar ralsinaralsinaE = mc\ :exposant:`2` You need to use this file with -l fr rst2pdf-0.93/rst2pdf/tests/input/test_blockquotes_in_table.txt0000664000175000017500000003026212062640232024554 0ustar ralsinaralsina+------------------------------------+ | PMOD B2 | | | | ====== ============ ============ | | Pin Row 1 Row 2 | | ====== ============ ============ | | 1 Vb Vb | | ====== ============ ============ | | | +------------------------------------+ +------------------------------------+------------------------------------+ | PMOD B2 | PMOD D2 | | | | | ====== ============ ============ | ====== ============ ============ | | Pin Row 1 Row 2 | Pin Row 1 Row 2 | | ====== ============ ============ | ====== ============ ============ | | 1 Vb Vb | 1 Vd Vd | | ====== ============ ============ | ====== ============ ============ | | | | +------------------------------------+------------------------------------+ +------------------------------------+------------------------------------+------------------------------------+ | PMOD B2 | PMOD D2 | PMOD D2 | | | | | | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | | Pin Row 1 Row 2 | Pin Row 1 Row 2 | Pin Row 1 Row 2 | | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | | 1 Vb Vb | 1 Vd Vd | 1 Vd Vd | | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | | | | | +------------------------------------+------------------------------------+------------------------------------+ +------------------------------------+------------------------------------+------------------------------------+------------------------------------+ | PMOD B2 | PMOD D2 | PMOD D2 | PMOD D2 | | | | | | | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | | Pin Row 1 Row 2 | Pin Row 1 Row 2 | Pin Row 1 Row 2 | Pin Row 1 Row 2 | | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | | 1 Vb Vb | 1 Vd Vd | 1 Vd Vd | 1 Vd Vd | | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | ====== ============ ============ | | | | | | +------------------------------------+------------------------------------+------------------------------------+------------------------------------+ +----------------------+ | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | This is not a quote. | | | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | | This is a quote. | +----------------------+ +----------------------+----------------------+ | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | | | | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | +----------------------+----------------------+ +----------------------+----------------------+----------------------+ | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | This is not a quote. | This is not a quote. | This is not a quote. | | | | | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | | This is a quote. | This is a quote. | This is a quote. | +----------------------+----------------------+----------------------+ rst2pdf-0.93/rst2pdf/tests/input/test_inkscape.cli0000664000175000017500000000001411334175273022112 0ustar ralsinaralsina-e inkscape rst2pdf-0.93/rst2pdf/tests/input/Tuffy_Italic.ttf0000775000175000017500000004552411272577077021721 0ustar ralsinaralsinaFFTMEQK8GDEF)IGPOSI^GSUBltI OS/2lVcmap+Bcvt !y8gaspIglyf=T8headk^ 6hheaD$hmtxw,loca(78<maxph name# @poste<G_< 2`2`??!?]?!djX@_P0 PfEd ==hy|5Rz/~|$H~cby(ppFpmfppppVppemKX`%XHyyvyzySytyQyyy5KyZMy7sp(7P-dro++~mz'H(?(&(6^(5(cZp}q5'(`XV1Zqh9 V%&`F~C'MH R R R R R RlSzzzz 11111A p1\      xa$&&&$P((((m(m?  OqcfMspVA<        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a}~pcdhtnjriqfsxblkwy|u{zov!y6t>^p&`^jv<n<Zl " ~  & R f  , V  X " J p "J *&`v6dr8f| d JX$DNZfr~ ".ht$0<HT&22b|".:FR^j8DR`nxyl!#.547>32>32#"&54w+ F'#1 M,&1 L,'0"'7- -?0% ,?0%|v'>;20#"&5414%>;2#"&54<4#d';4"e'Dv#)!v#)5{!#!#!7!!7!3!3!!!=HHKKKK\H\PPVPPiHi#RaaR{{Re4=F3.' #7.'7.547>7>7654& bcHh9#4!+ "PuT8,.H,vCfV. g{`_Ump[~PAe %(3+3*P\GP*/B&+-Db?)/gX uZ$HJjBf/hD/?C32676'4&#">32#"&543267674&#">32#"&54#3<5=iA6:fqb}rb{<6=iB5:irb|qb|~̐u3@XB 3CY7.547>32*__cqNea EnA| 9b|[ib Tge*;2#"&54~;4"e'Dv#)&47673b#+֙]wTIH#67654'3+>7a-T~#tޝ^@#"'&5476?"&547>3'&767632763272#'#"&'<+%2"\-* ?)" 7[+(  !)& ((  )#(  !3!!#!3BB4BB7Ɏ7c#U%'67"&547>32R '4&31^'0 M,&1^,XL18hJ/%-?0% 3!![yU7>32#"&54{ M,&1 L,'0^-?0% ,?0%3#3/6>32#".54732>7654=4.#"!}o,pI1T8A|bU:/Q7PtUך|ڊ~ԍyL~e8KzVvJzb6sF#%3#F\˝Pm0'6$32!!>7>7654&#"D*Fx_6 0:QFZ;L ruYlR H'G+9$  zZdV7'L~Q8@3bOO8>#,GY^\2*0%96F%)&hv5?3267654.+73267654&+"'>32#"&SNyHNbaqRP/{K{YZI>6!*}/Rh#!Ko5}pSnUI@iJZ&'v! 1Ig9'( 3##!;!TT? ts#V""'!!632#"&'73267654&8e<7 f +ʪ ! ' KT7¤=@Ţ+(re*654&#"326632#".547>73qiP? beoQ 1F1Oʛ gu#f~ɛ0.N~Nc_+,:snEc HVl #!7lPD%267674&#"32676'4&#"2#"&'67>7&5476$^sNq`omev6+"==%  Of]- "q%n'oVbqQa%p1Ge9$,wΟ4,NY9U).e+32676'4&#"#"&547>32#qiIP@ cdoQ *)@&@?!fv&fɛ0/N~Nd^.)1gM^1P ' m#& % 3 U||dXfb!!!! l `%# 3'zeZ%)9#7>7>7654&#"'6$32>32#"&54 &)C0Q%7|jz6#Kg; $#o@> M,'0 L,'0-O7<#94'B'# ]f\'IwK,1G,W.-?0% ,?0%GW%#"$5476$32#"&'#"&'47>323267654.#"3263267654&#"8,Ј[Shn-7l9Ozv @28 JsΕ]|aLZ[BTfMU_]wD?K^89+DD; J^|[GgH !!#3#A״Py =!26765<54&# 32>7654.#"&'!2#2#!x?efR(;xU˔_^=W:\9& $Ww|#̩x ]td'/MH'#<9!#9PR./u$8LL'  2_}Z@,#".547>32.+"3267&c_`kI!]wLU=  hhgGij3%@m_66^ZmvwƒV%7#!!2v4P}Oɋ\,ȷD5qn9[WArlM.jTχRobyG !!!!!!j0rgyG !!!!#j0\}3".547>32.#"32>7!7!#\lJ$[w1(tjSlG3JlBTfQ- w%Kwl7c[joiȚ^xsDQQMS][G~pP/=^zq6VZMy 3!3#!#˞kP^l335P9332>73#"&54 |o\nÞ5ͥ-<}ggJy 33 ##dnsy23!!eݍy 333# #y5˙W!P\Ly 333#y5ˑwPZ7654.#"32>%>32#".54 E|V]wa< F}U]w`<&R{adB@]gQ`H*xkStAPVpjRq@MzUeΞc>gUorStC*KdzFoy 3 654.+';2!##;.IxN΁'Ά!!77',)@654.#"3267'76>32'#".540HoE$/IrI6)qISybeC!PsXndgDxdDujJ,ea@oiJ-)"teΞc>hU hfRyu7!DzKei~+lR?~Ї3#33ۉpP7! 333##V Ǡ+P3P 33 ##0b^)'J33#X<d!!!!Plݍ#oS!!#3uY`Z+\!3ymQ73#7!m`@z})#'#3)n˺]}V'7!'B獍w!&5<14767632#"Z$"%   B3"3267654&'27654&#"'632#?#"&5476$eor]`sRh b^E*7q!g "FcShcSim1`7.`f+"hm:B{1,/Y'632#".'# 654&#"326NyNuF!Xf>]8 '5kZt+o[s8eO\ioŤ`#@E-mVHQG&F".#"32>7#".547>32cF'~h+VA,jIqmSkhr!)2cI@#60MZ~lxIMlȜ]za)3#7#".547>323267654&#"4˘'?wNuE!>\qR>]8! kYt*p[tRat9gO^hYj>#AG-VJRG%F +!654.#"3267#".547>32 (X@pD&WAH-yHvhF"NzI%\-+KuJ,+NxNM<7cvdrV^;hNLO I ##737>32.#"3gǘNj6:D" $(D %VN@))i4-H?{N/?#".5473326?#".547>32733267654&#"gFtO7Yh'?wNvE!>\qR>]8! (kYt*p[tc&?SV, Sn!at9gO^hYj>#AG-VJRGJ!#3>32#654&#"5w.qss\b'Yyc}bNt]>32#"&5463#D&!+D&!+$5&8) &8+  ?T&>32#"&54732?3#".D& ,D& ,| %f$ DQ[E 1)5&8* &8+ {f{1ϋ?g?+ D ##33bJQ5hb %3"&'673Ydqs IJY$!4N&!#654#" #3>32>32#654&#"VtYu'!.M^8sy0msAMW#Va119G"jhPfsTX`gJN!#3>32#654&#"&.qss\b'1Yyc}bNtUF"632#".5473267654&#"4(oH"pGfm(gl7brS]dsU_[LzYJx&TYN'632#".'# 654&#"326(NuF!X~f>]8 ?CkZt+o[s18eO\ioŤ`#@E-VHQG?{N%53"54?#".547>32733267654&#"m.5 ,'6xl@MtD!>\qR>]8! (kYt*p[t%!"(͸Sa!9gO^hYj>#AG-VJRGN&#"#3>32l+>'s&.qR*1YyJA.547>72&#" #"&'73267654.:1DR2#~`QzB!P$,) 11 + bY\e!4,04M.!\?-JG%zOG0  $&0![OpCH`U.4+#73733#;#"&54755ř`FFyj -PIQ%113#7#"&54733267'/qss\b'1ϵYyc}bNt61!33]ڞ1n(1 #333#qfu:~$pz^1/75B1 !##33fǪEXHNc?1%#"'732>?#"&547332673oMp|K1f_J./qss\b'sck;U{#AoEYyc}bNtZo1%!!!7!t@>7>7&#"327.'&5454Qt>)&#0<G'+` (9M&7"  R,&D7'> "  N# 5r+>  " '@W}A33}5RqA>"#732676?>7&'6767654'.#"7231AQu?*(NaO<,` )3232>7#".#":O$1''3 K@&&?J" 9*',$I9$+!-,+,--+'N#.'47>?3.#"327#h Rni7..]RnL0U\PiGP) w/6L|M. X_z[!&S]jZ`4(#7332.#"!!!>7!>MҐ+IIVGg668$$('+;tTktFdQ}N! s )w w23267654&#"#"'#73&54767#736273#3#RAKQ@K[caE)Ky*[E*yU) >QjK=Pj779F!hP{77{2D" hWFu!7!333!!!#!7!hݛМ.1GG7D6ׇLZ#73r{zqhs0?632#"&'7;26756&#"#"&'67>32.+"654&#";2&Cy[5 $]& K Gz"0  v[ag2 Aq^!Q% 3YJ.0Wd #pX 89nxH\S{ Q>32#"&54%>32#"&54D&!+D&!++D&!+D&"*F&8+$'8+! &8+  '8,%7?*=#"&547>32&#"327%3267674&#">32#"&5454QTJ]U\.`'&D+!/#ssv&ȶbC\GVx;R8&  ,D""o'nwvŖ7$Ŗ"^ 3# 3#{^"#"9!V}#7!7! +!͏ m%+6K32>7654.#">32#".54%3267654&+'32#'#r 9]n;\ģ =`m5EiW OuG3IWXKARq2od]B0R-1JuG$Yw++KzH&1^_~x>߰96}2_]9p("N:> ,j!!/]j%=3267654&#">32#"&54A4=e A373#7#".9d a9hJ2 a::,A# J+6J:;]g0b9D$Cu+23"3"&#.547>$;mq4NY: ";,#eJi[.   !!6O2!5!  '=[=&-b`3'nE{M`J67654&'7Mm3'B0T F" -8>H 81,^ #!#׃^"#"#H"{R}'Cq\$ R+'r*X$ R=q'A$ RYJ'a$ RC'i/$ R'p1$ S!#!!!!!!73tFoFi{JX'v&Q'C1^( Q'r^( QZ'A( Q'il1( {'Cs, 'r, f'Ai, 'i!, !#73!2+32654&+!Ӷ}l *oB6l,bkqEZW5'a1 'C2 'r`2 s'A)2 J'a 2 'iB2 r&c,-c,o!.=%#7&547>3273#"'32>767&' &#".l]OvzV.etOv IpYt_<8AXYt`;)Fpjd˜b2Ehmcș_;LzTqrc`&O}Tw\'Cs8 'r s8 w'A8 'iB8 'r#^<  2>7654!3 ##WyX @A RzcH&;b@$*SX>!\>G6$32!"'732>7654.+"7;2>765454#" #6U Yxp5)TV7WP_u $ P}tNiZ$ *YA6oy'{o.) EvM2 ,GnA&h5{ 8mPJx>;xJ%{rbzY #'CD 9'r8D 5&A D ^'aLD P^'iD *V'pD F^i"3267674&>32!32>7#".'#"&'67>32>7654#"'>32!654&#"4i| \QOd !A-(y4[|K)#  '6=Z8 #.@(  AY/8>iyBnt]0F'vF /+'C H <5'r; H _&A6H q`'iH /3#&5<14767632#"z$"1%   K#3# 632#"'&54656z# #1:! a 3##'#3kn˺]1^VR#3#>32#"&54%>32#"&54D&!+D&!++D&!+D&"*1&8+$'8+! &8+  '8,%h>3267654&#"#"&54763265.''7&#"76327J zIqgX[3R1Ȳ))D+,' ;-NBX)L7yI(8u׆ "sMo$!@ ҸCU$/ ,^1dFms'a XQ _''CR j1'riR _&A-R 'a/R `Z'iR [& PJ 2 32>7654'&#"7&54763273#"' 2UEzW<:2TAxY@%4!‚PA%"S@DNNSG3?L{LUI-#YwU[9KOVqTYNN'CX 'rDX &A;/X b'iX m?'rE\ W*!#3>32#"./654&#"3265ILc8[q^.M, NJD5ukWlJrTXȢ\aZkA,+aNpcc4UfDXMD'Hs>'Jp2V> /#73>32.#"!!!!3267#"&'#73676C}qr?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~ softhyphen figuredash quotereverseduni201FEuro  latn ,latnkern6<BX^djtzq&79+Y\Z5)72$7$w$Xy$ (H$H$BD?qYWDQRWX\MuMP[MHMu$(*.2379:<?DHIJMRTU\?2Prst2pdf-0.93/rst2pdf/tests/input/test_fontsizeunits.txt0000664000175000017500000000007511146570332023314 0ustar ralsinaralsinaThis should be 150% =================== This should be .3cm rst2pdf-0.93/rst2pdf/tests/input/test_issue_322.txt0000664000175000017500000000024711403055215022101 0ustar ralsinaralsinaThis |biohazard| means you have to run. --------------------------------------- This |biohazard| means you have to run. .. |biohazard| image:: images/biohazard.png rst2pdf-0.93/rst2pdf/tests/input/test_issue_83.txt0000664000175000017500000000004511076754414022036 0ustar ralsinaralsina.. code-block:: python print "2" rst2pdf-0.93/rst2pdf/tests/input/test_issue_173.txt0000664000175000017500000000051611246033667022120 0ustar ralsinaralsina+---------------------------+ | This is a quote: | | | | I think therefore I am | | | | * A list | | | +---------------------------+ This is a quote: I think therefore I am * A listrst2pdf-0.93/rst2pdf/tests/input/test_issue_203.txt0000664000175000017500000000017711261516736022115 0ustar ralsinaralsinaTest [1]_. .. [1] Test footnote. Test footnote. Test footnote. Test footnote. Test footnote. Test footnote. Test footnote. rst2pdf-0.93/rst2pdf/tests/input/test_background.style0000664000175000017500000000061711351252072023026 0ustar ralsinaralsinapageSetup: firstTemplate: cutePage height: 9cm margin-bottom: 0cm margin-gutter: 0cm margin-left: 0cm margin-right: 0cm margin-top: 0cm spacing-footer: 5mm spacing-header: 5mm width: 16cm pageTemplates: cutePage: background: background.png frames: [] [0cm, 0cm, 100%, 100%] showFooter: false showHeader: false rst2pdf-0.93/rst2pdf/tests/input/test_nested_lists_page_layout.txt0000664000175000017500000000002411432341471025451 0ustar ralsinaralsina* Item * Subitem rst2pdf-0.93/rst2pdf/tests/input/test_issue_485.style0000664000175000017500000000025512061106634022436 0ustar ralsinaralsina { "styles" : [ ["bodytext" , { "spaceBefore":0, "spaceAfter": 0 }], ["image" , { "spaceBefore":12, "spaceAfter": 18 }] ] } rst2pdf-0.93/rst2pdf/tests/input/test_issue_118_2.txt0000664000175000017500000000063711206576047022344 0ustar ralsinaralsinaThey should all be the same size .. image:: images/biohazard.png :width: 64 :scale: 100 .. image:: images/biohazard.png :width: 128 :scale: 50 .. image:: images/biohazard.png :width: 256 :scale: 25 They should be doubling in size, keeping aspect ratio .. image:: images/biohazard.png :width: 16 .. image:: images/biohazard.png :width: 32 .. image:: images/biohazard.png :width: 64 rst2pdf-0.93/rst2pdf/tests/input/test_issue_118_3.txt0000664000175000017500000000022411206577714022337 0ustar ralsinaralsina.. |tip| image:: images/biohazard.png .. |tip2| image:: images/biohazard.png :scale: 50 |tip| This is a 16px image |tip2| This is a 8px image rst2pdf-0.93/rst2pdf/tests/input/test_issue_307.txt0000664000175000017500000000021111404003666022077 0ustar ralsinaralsinaI recommend you try |Python|. .. |Python| replace:: Python, **the best language** around .. |biohazard| image:: images/biohazard.png rst2pdf-0.93/rst2pdf/tests/input/test_issue_261_2.txt0000664000175000017500000000013711324074754022335 0ustar ralsinaralsina.. raw:: pdf Spacer 0,234mm - bar10 - baz11 Running without wordaxe, this file fails.rst2pdf-0.93/rst2pdf/tests/input/test_issue_91.txt0000664000175000017500000000072111130705145022022 0ustar ralsinaralsina:Lorem ipsum: dolor :sit: amet, consectetur :adipisicing elit, sed: do eiusmod tempor incididunt ut labore :et: dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. rst2pdf-0.93/rst2pdf/tests/input/test_issue_107.cli0000664000175000017500000000000611274643122022031 0ustar ralsinaralsina-l fr rst2pdf-0.93/rst2pdf/tests/input/test_issue_173.py0000664000175000017500000000140111246021776021721 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- from reportlab.platypus import SimpleDocTemplate, Paragraph from reportlab.platypus.doctemplate import Indenter from reportlab.platypus.tables import * from reportlab.lib.styles import getSampleStyleSheet def go(): Story=[] ts=TableStyle([('GRID',(0,0),(-1,-1),0.25,"black"), ('BOX',(0,0),(-1,-1),0.25,"black")] ) styles = getSampleStyleSheet() doc = SimpleDocTemplate("phello.pdf") cell=[Paragraph('This is not indented',styles['Normal']), Indenter(100,100), Paragraph('This should be indented',styles['Normal'])] Story=cell+[Table([[cell]],style=ts)] doc.build(Story) go() rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue254/0000775000175000017500000000000012064144441021456 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue254/conf.py0000664000175000017500000002077411347476406023003 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # Foobar documentation build configuration file, created by # sphinx-quickstart on Wed Nov 11 10:37:39 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinx.ext.graphviz', 'rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. source_encoding = 'utf-8' # The master toctree document. master_doc = 'foobar' # General information about the project. project = u'Foobar' copyright = u'2009, Jason S' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0.1' # The full version, including alpha/beta/rc tags. release = '1.0.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'Foobardoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('foobar', 'Foobar.tex', u'Foobar Documentation', u'Jason S', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True graphviz_dot='C:/appl/graphics/graphviz/2.24/bin/dot.exe' # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('foobar', u'foobar', u'foobar Documentation', u'jsachs'), ] # A comma-separated list of custom stylesheets. Example: # pdf_stylesheets = ['sphinx','kerning','a4'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled #pdf_break_level = 0 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' #pdf_breakside = 'any' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 pdf_verbosity = 0 # If false, no index is generated. #pdf_use_index = True # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. #pdf_use_coverpage = True # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False pdf_invariant = True rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue254/jabberwocky.txt0000664000175000017500000000175711307603342024532 0ustar ralsinaralsinaJabberwocky by Lewis Carroll 'Twas brillig, and the slithy toves Did gyre and gimble in the wabe; All mimsy were the borogoves, And the mome raths outgrabe. "Beware the Jabberwock, my son! The jaws that bite, the claws that catch! Beware the Jubjub bird, and shun The frumious Bandersnatch!" He took his vorpal sword in hand: Long time the manxome foe he sought So rested he by the Tumtum tree, And stood awhile in thought. And as in uffish thought he stood, The Jabberwock, with eyes of flame, Came whiffling through the tulgey wood, And burbled as it came! One, two! One, two! and through and through The vorpal blade went snicker-snack! He left it dead, and with its head He went galumphing back. "And hast thou slain the Jabberwock? Come to my arms, my beamish boy! O frabjous day! Callooh! Callay!" He chortled in his joy. 'Twas brillig, and the slithy toves Did gyre and gimble in the wabe; All mimsy were the borogoves, And the mome raths outgrabe. rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue254/foobar.rst0000664000175000017500000000027711350500640023460 0ustar ralsinaralsinajabberwocky.txt: .. literalinclude:: jabberwocky.txt :encoding: latin-1 jabberwocky with 4-space tabs: .. include:: jabberwocky.txt :encoding: latin-1 :tab-width: 4 :literal: rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue254/Makefile0000664000175000017500000000606011307603030023111 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf _build/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html @echo @echo "Build finished. The HTML pages are in _build/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml @echo @echo "Build finished. The HTML pages are in _build/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in _build/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in _build/qthelp, like this:" @echo "# qcollectiongenerator _build/qthelp/issue158.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile _build/qthelp/issue158.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes @echo @echo "The overview file is in _build/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in _build/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in _build/doctest/output.txt." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." rst2pdf-0.93/rst2pdf/tests/input/test_issue_277.py0000775000175000017500000000160711340152637021735 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- from reportlab.platypus import SimpleDocTemplate, Paragraph from reportlab.platypus.doctemplate import Indenter from reportlab.platypus.flowables import * from reportlab.platypus.tables import * from reportlab.platypus.xpreformatted import * from reportlab.lib.styles import getSampleStyleSheet from copy import copy def go(): Story=[] styles = getSampleStyleSheet() doc = SimpleDocTemplate("issue277.pdf") ts=TableStyle() knstyle=copy(styles['Normal']) heading=Paragraph('A heading at the beginning of the document',knstyle) heading.keepWithNext=True print [['This is the content'] for x in range(12)] content= Table([[Paragraph('This is the content',styles['Normal'])] for x in range(120)], style=ts) Story=[heading,content] doc.build(Story) go() rst2pdf-0.93/rst2pdf/tests/input/test_custom_cover.cli0000664000175000017500000000004611354436760023035 0ustar ralsinaralsina--custom-cover=test_custom_cover.tmpl rst2pdf-0.93/rst2pdf/tests/input/test_issue_464.style0000664000175000017500000000006012062650477022437 0ustar ralsinaralsinastyles: mytext: alignment: TA_RIGHT rst2pdf-0.93/rst2pdf/tests/input/test_background.txt0000664000175000017500000000004411205137262022500 0ustar ralsinaralsinaThis should have a fancy background rst2pdf-0.93/rst2pdf/tests/input/test_issue_109.txt0000664000175000017500000000006711204133036022101 0ustar ralsinaralsina.. danger:: This is dangerous Swimming with sharks. rst2pdf-0.93/rst2pdf/tests/input/test_issue_264.txt0000664000175000017500000001045011326514666022121 0ustar ralsinaralsina===================================== SEE ISSUE TRACKER #264 ===================================== XXX XXXXXX XXXXXXXX ==================== ============== =========== ======================================================================================= Xxxx xxx xxxx ------------------------------------------------------------------------------------------------------------------ Xxxx Xxxx Xxxx ============== =========== ======================================================================================= xxxxxxxxx Xxxxxx xxxxxxxx xxxx xxxxxxx xxxxxxxxxx Xxxxxx xxxxxxxxxxxxxxx xxx xxx xxx xxxxxxx xxxxxxxxxx Xxxxxx xxxx xxxx xxx xxxx xxxxxx xx xxxxx xxxxxxxxxx Xxxxxx xxxx xxxx xxx xxxxx xxxxx xxxx xxxxx ============== =========== ======================================================================================= ============== =========== ======================================================================================= Xxxx xxx xxxx ------------------------------------------------------------------------------------------------------------------ Xxxx Xxxx Xxxx ============== =========== ======================================================================================= xxxx Xxxxxx xxx xxxxxxx xxxxx xx Xxxxxx xxx xxxxxxx x xxx xxxxx xxxx xxx Xxxxxx xxx xxxxxxxx xxxxxx xxxx xxx XX Xxxxxx xxx xxxxxxx xxxxxxxx xxxx ============== =========== ======================================================================================= =============== =========== ======================================================================================= Xxxx xxx xxxx ------------------------------------------------------------------------------------------------------------------- Xxxx Xxxx Xxxx =============== =========== ======================================================================================= xxxx Xxxxxx ssss ssss ss sss ssss sssssssssssss ssss sss ssssss sss sss sss sssssssss --------------- ----------- --------------------------------------------------------------------------------------- xxxx Xxxxxx ssss sssss. sss ssss sssss sssss sssusssstsss sss ssss ssss sss ssssss ssssosss sUs sssssss sss sssssss sssss ssss ssss ssss ss ssssss ss ssssss. --------------- ----------- --------------------------------------------------------------------------------------- xxxx Xxxxxx Xxxx Xxxxx. Xxxxxxx xxxx xx xxxxxxx xxx xxxxxx xxxxxs xxxxxxxxx xxxxxxxxx, xxxx xxxx xxxxxxxxxxx xxx xxxx. Xxx Xxxx Xxxxx xxxxxxxxxx xxx xxxx xxxx. --------------- ----------- --------------------------------------------------------------------------------------- xxxx XX Xxxxxx XXXX XXXXXX. XXXXXXX XXXX XXX XXXXXX XXX XXXXXXXX XXXX XXXX XXX XXXXXX XXX XXX XXXX XXXXXX, XXXX XXXXXXXXXXX XXX XXXXX. XXX XXXX XXXXX XXXXXXXXXX XXX XXXX XXXX. --------------- ----------- --------------------------------------------------------------------------------------- xxxx Xxxxxx Aaaaaa aaa aaaaaaaa aaaaaa aaaaaa. Aaa XXXXX output xxxx Xxx xxx xxxx xxx xx xxx iiiii bbbb ii ttt itititititi rrrrrrrr hhh nnnnnnnnnnnnn ii ttt hhhhh. =============== =========== ======================================================================================= XXX XXXXXXXX XXX XXX ========================= Xxxx xx xx xxx xx xxx xxxxxxxx xxxxx: - XXXX xxxxxxxxx xx xxx xx xxxxxxx xxx x xxxxx - xx xx x xxx - xxxx xx xx xx xxx - xxxxxxxxxx xxxxxxxxx xxx xxxxxxxx Xxxxxx xxxxxxx, xxxxxxxx xxx xx xxxx xxxxx xxxxx, xx xx xxxxxxxx xx xxxxxxxx xxx. Xxx xxxxxx xx xxx xxx xxx xxx xxxxxxxxx xxxxxx xx xxxx, xxx xxxx xx xxxxxxxxxx xx xxxxxxx xxxxx xxxxxx. Xxx xxxxxxx xxxxxxx xxxxxxxxxxxx xxxxxxx xxx xxxxxxxxx xx xxx XXX xxxxxxxxx xxx: - Xxx xxxxxxx xxxxxxxxx xxxxxxxx xx xxxxxxxx xxxxx-xxxxx xx XXX XXX xxxx xxxxxxx x XXX XXXX. - Xxx xxxxxxx xxxxxxxxx xxxxxxxx xx xxxxxxxx xxxx xxxxx xxx xxxxx xxxxxx xxxxxxxxxxx xxxxxxxx xx xxxx xx xxxxx xxx xxxxxxxxxx xxxxxx xxxxxxxxxxxx xxx xxxxxxxxxxxxxx xxxxxxx xxxxxxxxx, xxxxxxxx xx xx xx xx xxxxxx-xx-xxxxxx xxxx xx xxx xxxxxxxx. rst2pdf-0.93/rst2pdf/tests/input/test_issue_155.txt0000664000175000017500000000047211242564411022111 0ustar ralsinaralsina .. raw:: pdf Spacer 10cm 20cm .. sidebar:: Sidebar Title :subtitle: Optional Subtitle This is a sidebar. It is for text outside the flow of the main text. .. rubric:: This is a rubric inside a sidebar Sidebars often appears beside the main text with a border and background color. rst2pdf-0.93/rst2pdf/tests/input/test_issue_69.txt0000664000175000017500000000000311065711430022021 0ustar ralsinaralsina- rst2pdf-0.93/rst2pdf/tests/input/test_issue_309.txt0000664000175000017500000000011411356447727022123 0ustar ralsinaralsina This is a block quote. Should be in italics. -- Rubric is not italic rst2pdf-0.93/rst2pdf/tests/input/test_definition_lists.txt0000664000175000017500000000024611055536175023744 0ustar ralsinaralsinaDefinition Lists ---------------- Term Definition Term : classifier1 : classifier2 Definition paragraph 1. Definition paragraph 2. Term Definition rst2pdf-0.93/rst2pdf/tests/input/test_issue_427.txt0000664000175000017500000000006311724533425022115 0ustar ralsinaralsinaThis should have a long space here ``-> <-`` rst2pdf-0.93/rst2pdf/tests/input/test_issue_224.style0000664000175000017500000000040011366072321022417 0ustar ralsinaralsinastyles: centered: colWidths: [25%, 25%] parent: table left: alignment: TA_LEFT colWidths: [25%, 25%] parent: table right: alignment: TA_RIGHT colWidths: [25%, 25%] parent: table rst2pdf-0.93/rst2pdf/tests/input/charter.afm0000664000175000017500000004672711272600476020726 0ustar ralsinaralsinaStartFontMetrics 2.0 Comment Bitstream AFM Data Comment Copyright 1987-1990 as an unpublished work by Bitstream Inc., Cambridge, MA. Comment All rights reserved Comment Confidential and proprietary to Bitstream Inc. Comment Bitstream is a registered trademark of Bitstream Inc. Comment bitsClassification Transitional 801 Comment bitsFontID 0649 Comment bitsManufacturingDate Tue Nov 6 02:55:16 1990 Comment bitsLayoutName clayout.adobe.text228.new Comment UniqueID 15530649 FontName CharterBT-Italic FullName Bitstream Charter Italic FamilyName Bitstream Charter Weight Normal ItalicAngle 11.0000 IsFixedPitch false FontBBox -226 -237 1175 980 UnderlinePosition -109 UnderlineThickness 61 Version 1.0 [UFO] Notice Copyright 1987-1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential. EncodingScheme AdobeStandardEncoding CapHeight 672 XHeight 486 Ascender 737 Descender -218 StartCharMetrics 228 C 32 ; WX 278 ; N space ; B 0 0 0 0 ; C 33 ; WX 338 ; N exclam ; B 63 -9 281 683 ; C 34 ; WX 331 ; N quotedbl ; B 43 421 288 715 ; C 35 ; WX 745 ; N numbersign ; B 63 -24 681 710 ; C 36 ; WX 556 ; N dollar ; B 21 -102 514 744 ; C 37 ; WX 852 ; N percent ; B 49 -12 802 683 ; C 38 ; WX 704 ; N ampersand ; B 19 -12 665 684 ; C 39 ; WX 201 ; N quoteright ; B 51 442 227 714 ; C 40 ; WX 419 ; N parenleft ; B 79 -142 460 718 ; C 41 ; WX 419 ; N parenright ; B -67 -142 313 718 ; C 42 ; WX 500 ; N asterisk ; B 98 337 492 718 ; C 43 ; WX 833 ; N plus ; B 124 0 710 597 ; C 44 ; WX 278 ; N comma ; B -58 -169 149 107 ; C 45 ; WX 319 ; N hyphen ; B 22 207 260 275 ; C 46 ; WX 278 ; N period ; B 25 -6 145 114 ; C 47 ; WX 481 ; N slash ; B -111 -93 525 672 ; C 48 ; WX 556 ; N zero ; B 27 -12 528 683 ; C 49 ; WX 556 ; N one ; B 82 0 405 683 ; C 50 ; WX 556 ; N two ; B -22 0 518 684 ; C 51 ; WX 556 ; N three ; B 0 -12 512 684 ; C 52 ; WX 556 ; N four ; B -1 -38 524 678 ; C 53 ; WX 556 ; N five ; B 3 -13 519 672 ; C 54 ; WX 556 ; N six ; B 31 -13 501 716 ; C 55 ; WX 556 ; N seven ; B 44 -38 596 672 ; C 56 ; WX 556 ; N eight ; B 18 -18 518 685 ; C 57 ; WX 556 ; N nine ; B 28 -56 523 684 ; C 58 ; WX 319 ; N colon ; B 46 -6 235 478 ; C 59 ; WX 319 ; N semicolon ; B -33 -169 235 478 ; C 60 ; WX 833 ; N less ; B 128 37 704 560 ; C 61 ; WX 833 ; N equal ; B 124 175 710 421 ; C 62 ; WX 833 ; N greater ; B 129 37 704 560 ; C 63 ; WX 486 ; N question ; B 94 -9 446 683 ; C 64 ; WX 942 ; N at ; B 76 -154 871 693 ; C 65 ; WX 606 ; N A ; B -79 0 585 677 ; C 66 ; WX 588 ; N B ; B -29 0 543 672 ; C 67 ; WX 604 ; N C ; B 41 -12 622 683 ; C 68 ; WX 671 ; N D ; B -28 0 623 672 ; C 69 ; WX 546 ; N E ; B -25 0 554 672 ; C 70 ; WX 509 ; N F ; B -27 0 540 671 ; C 71 ; WX 664 ; N G ; B 39 -12 650 684 ; C 72 ; WX 712 ; N H ; B -29 0 741 672 ; C 73 ; WX 312 ; N I ; B -23 0 333 672 ; C 74 ; WX 447 ; N J ; B -43 -12 472 672 ; C 75 ; WX 625 ; N K ; B -30 -5 660 672 ; C 76 ; WX 498 ; N L ; B -29 0 453 672 ; C 77 ; WX 839 ; N M ; B -28 0 868 672 ; C 78 ; WX 683 ; N N ; B -31 0 720 672 ; C 79 ; WX 708 ; N O ; B 40 -13 669 683 ; C 80 ; WX 542 ; N P ; B -29 0 543 672 ; C 81 ; WX 708 ; N Q ; B 40 -160 700 682 ; C 82 ; WX 602 ; N R ; B -30 -6 591 671 ; C 83 ; WX 537 ; N S ; B 9 -13 511 683 ; C 84 ; WX 565 ; N T ; B 43 0 610 672 ; C 85 ; WX 664 ; N U ; B 64 -12 705 672 ; C 86 ; WX 590 ; N V ; B 30 -6 649 672 ; C 87 ; WX 898 ; N W ; B 51 0 952 672 ; C 88 ; WX 569 ; N X ; B -83 0 633 672 ; C 89 ; WX 562 ; N Y ; B 31 0 642 672 ; C 90 ; WX 556 ; N Z ; B -26 0 572 672 ; C 91 ; WX 421 ; N bracketleft ; B 49 -133 448 709 ; C 92 ; WX 481 ; N backslash ; B 34 -93 489 672 ; C 93 ; WX 421 ; N bracketright ; B -45 -133 354 709 ; C 94 ; WX 1000 ; N asciicircum ; B 201 437 798 714 ; C 95 ; WX 500 ; N underscore ; B 0 -237 500 -178 ; C 96 ; WX 201 ; N quoteleft ; B 70 441 247 713 ; C 97 ; WX 525 ; N a ; B 17 -9 488 483 ; C 98 ; WX 507 ; N b ; B 24 -10 453 737 ; C 99 ; WX 394 ; N c ; B 14 -10 370 486 ; C 100 ; WX 523 ; N d ; B 20 -9 501 737 ; C 101 ; WX 424 ; N e ; B 20 -10 378 483 ; C 102 ; WX 292 ; N f ; B -151 -216 404 733 ; C 103 ; WX 481 ; N g ; B -31 -218 480 483 ; C 104 ; WX 551 ; N h ; B 23 -6 505 737 ; C 105 ; WX 287 ; N i ; B 32 -7 255 705 ; C 106 ; WX 269 ; N j ; B -128 -216 249 701 ; C 107 ; WX 514 ; N k ; B 25 -6 494 737 ; C 108 ; WX 275 ; N l ; B 35 -10 241 737 ; C 109 ; WX 815 ; N m ; B 31 -6 773 483 ; C 110 ; WX 556 ; N n ; B 32 -7 515 483 ; C 111 ; WX 502 ; N o ; B 21 -9 450 483 ; C 112 ; WX 516 ; N p ; B -70 -218 461 483 ; C 113 ; WX 512 ; N q ; B 24 -218 463 488 ; C 114 ; WX 398 ; N r ; B 27 0 400 482 ; C 115 ; WX 370 ; N s ; B -17 -9 324 483 ; C 116 ; WX 333 ; N t ; B 43 -7 337 580 ; C 117 ; WX 553 ; N u ; B 30 -9 513 483 ; C 118 ; WX 454 ; N v ; B -9 -2 435 484 ; C 119 ; WX 713 ; N w ; B -1 0 689 485 ; C 120 ; WX 477 ; N x ; B -47 -9 495 486 ; C 121 ; WX 475 ; N y ; B -113 -218 485 485 ; C 122 ; WX 440 ; N z ; B -15 -12 434 490 ; C 123 ; WX 486 ; N braceleft ; B 64 -135 418 703 ; C 124 ; WX 500 ; N bar ; B 219 -237 282 764 ; C 125 ; WX 486 ; N braceright ; B 64 -135 418 703 ; C 126 ; WX 833 ; N asciitilde ; B 86 225 747 371 ; C 161 ; WX 338 ; N exclamdown ; B 60 -9 278 683 ; C 162 ; WX 556 ; N cent ; B 41 -98 492 602 ; C 163 ; WX 556 ; N sterling ; B -22 0 547 683 ; C 164 ; WX 167 ; N fraction ; B -226 0 392 672 ; C 165 ; WX 556 ; N yen ; B 2 0 616 665 ; C 166 ; WX 556 ; N florin ; B -81 -169 563 683 ; C 167 ; WX 500 ; N section ; B 3 -141 475 718 ; C 168 ; WX 606 ; N currency ; B 41 171 566 694 ; C 169 ; WX 170 ; N quotesingle ; B 43 421 127 715 ; C 170 ; WX 403 ; N quotedblleft ; B 70 441 448 713 ; C 171 ; WX 442 ; N guillemotleft ; B 13 67 416 413 ; C 172 ; WX 245 ; N guilsinglleft ; B 13 67 218 413 ; C 173 ; WX 245 ; N guilsinglright ; B -7 67 199 413 ; C 174 ; WX 574 ; N fi ; B -151 -216 547 733 ; C 175 ; WX 579 ; N fl ; B -151 -216 544 737 ; C 177 ; WX 500 ; N endash ; B -25 210 488 271 ; C 178 ; WX 500 ; N dagger ; B 45 -130 512 718 ; C 179 ; WX 500 ; N daggerdbl ; B -27 -132 512 718 ; C 180 ; WX 278 ; N periodcentered ; B 79 276 199 396 ; C 182 ; WX 484 ; N paragraph ; B 25 -79 459 672 ; C 183 ; WX 590 ; N bullet ; B 150 227 439 516 ; C 184 ; WX 201 ; N quotesinglbase ; B -65 -165 111 107 ; C 185 ; WX 403 ; N quotedblbase ; B -65 -165 313 107 ; C 186 ; WX 403 ; N quotedblright ; B 51 442 429 714 ; C 187 ; WX 442 ; N guillemotright ; B -7 67 397 413 ; C 188 ; WX 1000 ; N ellipsis ; B 52 -6 840 114 ; C 189 ; WX 1225 ; N perthousand ; B 49 -12 1175 683 ; C 191 ; WX 486 ; N questiondown ; B 27 -9 379 683 ; C 193 ; WX 500 ; N grave ; B 181 546 341 737 ; C 194 ; WX 500 ; N acute ; B 252 546 485 737 ; C 195 ; WX 500 ; N circumflex ; B 148 546 433 737 ; C 196 ; WX 500 ; N tilde ; B 143 572 474 709 ; C 197 ; WX 500 ; N macron ; B 154 614 465 667 ; C 198 ; WX 500 ; N breve ; B 177 567 464 709 ; C 199 ; WX 500 ; N dotaccent ; B 248 584 361 697 ; C 200 ; WX 500 ; N dieresis ; B 163 589 452 692 ; C 202 ; WX 500 ; N ring ; B 209 557 426 774 ; C 203 ; WX 500 ; N cedilla ; B 61 -224 267 0 ; C 205 ; WX 500 ; N hungarumlaut ; B 175 546 569 737 ; C 206 ; WX 500 ; N ogonek ; B 90 -217 235 0 ; C 207 ; WX 500 ; N caron ; B 184 545 470 736 ; C 208 ; WX 1000 ; N emdash ; B -19 210 991 271 ; C 225 ; WX 873 ; N AE ; B -115 0 879 672 ; C 227 ; WX 394 ; N ordfeminine ; B 12 325 366 671 ; C 232 ; WX 498 ; N Lslash ; B -29 0 453 672 ; C 233 ; WX 708 ; N Oslash ; B 41 -74 669 744 ; C 234 ; WX 1007 ; N OE ; B 40 -13 1004 682 ; C 235 ; WX 377 ; N ordmasculine ; B 15 325 338 671 ; C 241 ; WX 671 ; N ae ; B 1 -10 628 483 ; C 245 ; WX 287 ; N dotlessi ; B 32 -7 255 483 ; C 248 ; WX 275 ; N lslash ; B -14 -10 293 737 ; C 249 ; WX 502 ; N oslash ; B 22 -80 450 548 ; C 250 ; WX 750 ; N oe ; B 21 -9 704 483 ; C 251 ; WX 574 ; N germandbls ; B -151 -216 522 739 ; C -1 ; WX 606 ; N Aacute ; B -79 0 585 930 ; C -1 ; WX 606 ; N Acircumflex ; B -79 0 585 930 ; C -1 ; WX 606 ; N Adieresis ; B -79 0 585 885 ; C -1 ; WX 606 ; N Agrave ; B -79 0 585 930 ; C -1 ; WX 606 ; N Aring ; B -79 0 585 980 ; C -1 ; WX 606 ; N Atilde ; B -79 0 585 902 ; C -1 ; WX 604 ; N Ccedilla ; B 41 -224 622 683 ; C -1 ; WX 546 ; N Eacute ; B -25 0 554 930 ; C -1 ; WX 546 ; N Ecircumflex ; B -25 0 554 930 ; C -1 ; WX 546 ; N Edieresis ; B -25 0 554 885 ; C -1 ; WX 546 ; N Egrave ; B -25 0 554 930 ; C -1 ; WX 312 ; N Iacute ; B -23 0 418 930 ; C -1 ; WX 312 ; N Icircumflex ; B -23 0 366 930 ; C -1 ; WX 312 ; N Idieresis ; B -23 0 385 885 ; C -1 ; WX 312 ; N Igrave ; B -23 0 333 930 ; C -1 ; WX 683 ; N Ntilde ; B -31 0 720 902 ; C -1 ; WX 708 ; N Oacute ; B 40 -13 669 930 ; C -1 ; WX 708 ; N Ocircumflex ; B 40 -13 669 930 ; C -1 ; WX 708 ; N Odieresis ; B 40 -13 669 885 ; C -1 ; WX 708 ; N Ograve ; B 40 -13 669 930 ; C -1 ; WX 708 ; N Otilde ; B 40 -13 669 902 ; C -1 ; WX 537 ; N Scaron ; B 9 -13 516 929 ; C -1 ; WX 664 ; N Uacute ; B 64 -12 705 930 ; C -1 ; WX 664 ; N Ucircumflex ; B 64 -12 705 930 ; C -1 ; WX 664 ; N Udieresis ; B 64 -12 705 885 ; C -1 ; WX 664 ; N Ugrave ; B 64 -12 705 930 ; C -1 ; WX 562 ; N Ydieresis ; B 31 0 642 885 ; C -1 ; WX 556 ; N Zcaron ; B -26 0 572 929 ; C -1 ; WX 525 ; N aacute ; B 17 -9 498 737 ; C -1 ; WX 525 ; N acircumflex ; B 17 -9 488 737 ; C -1 ; WX 525 ; N adieresis ; B 17 -9 488 692 ; C -1 ; WX 525 ; N agrave ; B 17 -9 488 737 ; C -1 ; WX 525 ; N aring ; B 17 -9 488 762 ; C -1 ; WX 525 ; N atilde ; B 17 -9 488 709 ; C -1 ; WX 394 ; N ccedilla ; B 8 -224 370 486 ; C -1 ; WX 424 ; N eacute ; B 20 -10 460 737 ; C -1 ; WX 424 ; N ecircumflex ; B 20 -10 408 737 ; C -1 ; WX 424 ; N edieresis ; B 20 -10 427 692 ; C -1 ; WX 424 ; N egrave ; B 20 -10 378 737 ; C -1 ; WX 287 ; N iacute ; B 32 -7 379 737 ; C -1 ; WX 287 ; N icircumflex ; B 32 -7 327 737 ; C -1 ; WX 287 ; N idieresis ; B 32 -7 346 692 ; C -1 ; WX 287 ; N igrave ; B 32 -7 255 737 ; C -1 ; WX 556 ; N ntilde ; B 32 -7 515 709 ; C -1 ; WX 502 ; N oacute ; B 21 -9 486 737 ; C -1 ; WX 502 ; N ocircumflex ; B 21 -9 450 737 ; C -1 ; WX 502 ; N odieresis ; B 21 -9 453 692 ; C -1 ; WX 502 ; N ograve ; B 21 -9 450 737 ; C -1 ; WX 502 ; N otilde ; B 21 -9 475 709 ; C -1 ; WX 370 ; N scaron ; B -17 -9 405 736 ; C -1 ; WX 553 ; N uacute ; B 30 -9 513 737 ; C -1 ; WX 553 ; N ucircumflex ; B 30 -9 513 737 ; C -1 ; WX 553 ; N udieresis ; B 30 -9 513 692 ; C -1 ; WX 553 ; N ugrave ; B 30 -9 513 737 ; C -1 ; WX 475 ; N ydieresis ; B -113 -218 485 692 ; C -1 ; WX 440 ; N zcaron ; B -15 -12 440 736 ; C -1 ; WX 822 ; N trademark ; B 118 398 716 663 ; C -1 ; WX 900 ; N copyright ; B 66 -46 838 726 ; C -1 ; WX 833 ; N logicalnot ; B 124 174 710 419 ; C -1 ; WX 900 ; N registered ; B 66 -46 838 726 ; C -1 ; WX 833 ; N minus ; B 124 269 710 328 ; C -1 ; WX 671 ; N Eth ; B -28 0 624 672 ; C -1 ; WX 532 ; N Thorn ; B -30 0 518 672 ; C -1 ; WX 562 ; N Yacute ; B 31 0 642 930 ; C -1 ; WX 500 ; N brokenbar ; B 219 -172 282 699 ; C -1 ; WX 329 ; N degree ; B 26 434 303 710 ; C -1 ; WX 833 ; N divide ; B 124 66 710 531 ; C -1 ; WX 500 ; N eth ; B 21 -9 464 726 ; C -1 ; WX 547 ; N mu ; B -39 -204 532 433 ; C -1 ; WX 833 ; N multiply ; B 146 26 691 571 ; C -1 ; WX 867 ; N onehalf ; B 51 0 844 678 ; C -1 ; WX 867 ; N onequarter ; B 51 -22 848 678 ; C -1 ; WX 367 ; N onesuperior ; B 54 268 267 679 ; C -1 ; WX 833 ; N plusminus ; B 124 20 710 577 ; C -1 ; WX 516 ; N thorn ; B -70 -218 461 737 ; C -1 ; WX 868 ; N threequarters ; B 0 -22 848 679 ; C -1 ; WX 367 ; N threesuperior ; B 0 261 338 679 ; C -1 ; WX 367 ; N twosuperior ; B -15 268 342 679 ; C -1 ; WX 475 ; N yacute ; B -113 -218 485 737 ; EndCharMetrics StartKernData StartKernPairs 280 KPX hyphen T -37 KPX hyphen V -56 KPX hyphen W -56 KPX hyphen X -37 KPX hyphen Y -74 KPX A quoteright -130 KPX A colon 19 KPX A semicolon 19 KPX A S 19 KPX A T -37 KPX A U -23 KPX A V -56 KPX A W -42 KPX A Y -42 KPX A y -19 KPX A quotedblright -130 KPX B hyphen 56 KPX B S 19 KPX B V -19 KPX B W -19 KPX B Y -19 KPX C quoteright 37 KPX C hyphen 23 KPX C S 19 KPX C quotedblright 37 KPX D hyphen 37 KPX D A -19 KPX D V -19 KPX D W -19 KPX D Y -28 KPX D Aring -19 KPX F comma -167 KPX F hyphen -56 KPX F period -167 KPX F colon -37 KPX F semicolon -37 KPX F A -32 KPX F a -42 KPX F e -46 KPX F o -46 KPX F ae -42 KPX F oslash -46 KPX F oe -46 KPX F Aring -32 KPX G hyphen 19 KPX J A -23 KPX J Aring -23 KPX K hyphen -37 KPX K A -23 KPX K C -28 KPX K O -28 KPX K U -37 KPX K W -42 KPX K Y -32 KPX K a -19 KPX K e -56 KPX K o -56 KPX K u -56 KPX K y -83 KPX K Oslash -28 KPX K OE -28 KPX K ae -19 KPX K oslash -56 KPX K oe -56 KPX K Aring -23 KPX L quoteright -185 KPX L hyphen 56 KPX L A 19 KPX L T -74 KPX L U -19 KPX L V -102 KPX L W -88 KPX L Y -88 KPX L u -19 KPX L y -37 KPX L quotesinglbase 19 KPX L quotedblbase 19 KPX L quotedblright -185 KPX L Aring 19 KPX O comma -37 KPX O hyphen 19 KPX O period -37 KPX O V -19 KPX O X -19 KPX O Y -19 KPX P comma -250 KPX P hyphen -74 KPX P period -250 KPX P colon -19 KPX P semicolon -19 KPX P A -56 KPX P U -19 KPX P W -19 KPX P Y -19 KPX P a -37 KPX P e -56 KPX P o -51 KPX P s -32 KPX P ae -37 KPX P oslash -51 KPX P oe -51 KPX P Aring -56 KPX Q quoteright 19 KPX Q hyphen 19 KPX Q quotedblright 19 KPX R quoteright -37 KPX R comma 19 KPX R hyphen -19 KPX R period 19 KPX R T -19 KPX R V -19 KPX R W -23 KPX R Y -37 KPX R quoteleft -19 KPX R a -19 KPX R e -19 KPX R o -19 KPX R y -19 KPX R quotedblleft -19 KPX R quotedblright -37 KPX R ae -19 KPX R oslash -19 KPX R oe -19 KPX S A 37 KPX S G 19 KPX S O 19 KPX S Q 19 KPX S S 19 KPX S Oslash 19 KPX S OE 19 KPX S Aring 37 KPX T comma -148 KPX T hyphen -130 KPX T period -148 KPX T colon -37 KPX T semicolon -37 KPX T A -56 KPX T T 19 KPX T a -116 KPX T c -97 KPX T e -97 KPX T i -19 KPX T o -116 KPX T r -74 KPX T s -93 KPX T u -93 KPX T w -93 KPX T y -74 KPX T ae -116 KPX T oslash -116 KPX T oe -116 KPX T Aring -56 KPX U A -28 KPX U J -19 KPX U Z -19 KPX U Aring -28 KPX V comma -185 KPX V hyphen -56 KPX V period -185 KPX V colon -93 KPX V semicolon -93 KPX V A -79 KPX V O -19 KPX V a -93 KPX V e -93 KPX V i -28 KPX V o -60 KPX V u -32 KPX V y -46 KPX V Oslash -19 KPX V OE -19 KPX V ae -93 KPX V oslash -60 KPX V oe -60 KPX V Aring -79 KPX W comma -134 KPX W hyphen -37 KPX W period -134 KPX W colon -28 KPX W semicolon -28 KPX W A -28 KPX W a -51 KPX W e -74 KPX W i -19 KPX W o -51 KPX W r -28 KPX W u -28 KPX W y -23 KPX W ae -51 KPX W oslash -51 KPX W oe -51 KPX W Aring -28 KPX X hyphen -19 KPX X A -19 KPX X Aring -19 KPX Y comma -130 KPX Y hyphen -111 KPX Y period -130 KPX Y colon -106 KPX Y semicolon -106 KPX Y A -46 KPX Y a -116 KPX Y e -116 KPX Y i -19 KPX Y o -97 KPX Y u -56 KPX Y ae -116 KPX Y oslash -97 KPX Y oe -97 KPX Y Aring -46 KPX Z hyphen 37 KPX quoteleft A -130 KPX quoteleft J -130 KPX quoteleft V 19 KPX quoteleft AE -111 KPX quoteleft Aring -130 KPX f quoteright 93 KPX f comma -83 KPX f hyphen -19 KPX f period -83 KPX f quotedblright 93 KPX r comma -130 KPX r hyphen -19 KPX r period -130 KPX v comma -46 KPX v hyphen 37 KPX v period -46 KPX w comma -56 KPX w hyphen 19 KPX w period -56 KPX y comma -60 KPX y hyphen 19 KPX y period -60 KPX quotedblleft A -130 KPX quotedblleft J -130 KPX quotedblleft V 19 KPX quotedblleft AE -111 KPX quotedblleft Aring -130 KPX AE hyphen 19 KPX Lslash quoteright -185 KPX Lslash hyphen 56 KPX Lslash A 19 KPX Lslash T -74 KPX Lslash U -19 KPX Lslash V -102 KPX Lslash W -88 KPX Lslash Y -88 KPX Lslash u -19 KPX Lslash y -37 KPX Lslash quotesinglbase 19 KPX Lslash quotedblbase 19 KPX Lslash quotedblright -185 KPX Lslash Aring 19 KPX Oslash comma -37 KPX Oslash hyphen 19 KPX Oslash period -37 KPX Oslash V -19 KPX Oslash X -19 KPX Oslash Y -19 KPX Aring quoteright -130 KPX Aring colon 19 KPX Aring semicolon 19 KPX Aring S 19 KPX Aring T -37 KPX Aring U -23 KPX Aring V -56 KPX Aring W -42 KPX Aring Y -42 KPX Aring y -19 KPX Aring quotedblright -130 KPX Eth hyphen 37 KPX Eth A -19 KPX Eth V -19 KPX Eth W -19 KPX Eth Y -28 KPX Eth Aring -19 KPX Thorn quoteright -37 KPX Thorn comma -148 KPX Thorn period -148 KPX Thorn quotedblright -37 EndKernPairs StartTrackKern 3 TrackKern -1 6 0.10 144 -2.09 TrackKern -2 6 0.05 144 -4.02 TrackKern -3 6 0.00 144 -5.96 EndTrackKern EndKernData EndFontMetrics rst2pdf-0.93/rst2pdf/tests/input/test_issue_391.txt0000664000175000017500000000031611530460123022103 0ustar ralsinaralsinaA section ========= If there is a page with "a subsubsection" in the header, issue 391 is open. A subsection ------------ A subsection ------------ A subsubsection ~~~~~~~~~~~~~~~ A section ========= rst2pdf-0.93/rst2pdf/tests/input/test_option_list.txt0000664000175000017500000000120011055536175022730 0ustar ralsinaralsina-a command-line option "a" -b file options can have arguments and long descriptions --long options can be long also --input=file long options can also have arguments --very-long-option The description can also start on the next line. The description may contain multiple body elements, regardless of where it starts. -x, -y, -z Multiple options are an "option group". -v, --verbose Commonly-seen: short & long options. -1 file, --one=file, --two file Multiple options with arguments. /V DOS/VMS-style options too rst2pdf-0.93/rst2pdf/tests/input/test_title_ref.txt0000664000175000017500000000014611055755105022346 0ustar ralsinaralsinaTest for issue #16: =================== The default role for interpreted text is `Title Reference`. rst2pdf-0.93/rst2pdf/tests/input/test_bullet_widths.style0000664000175000017500000000120311423562064023555 0ustar ralsinaralsinastyles: bullet-list: colWidths: [50%, 50%] commands: [] [VALIGN, [0, 0], [-1, -1], TOP] [TOPPADDING, [0, 0], [-1, -1], 0] [BOTTOMPADDING, [0, 0], [-1, -1], 0] [RIGHTPADDING, [0, 0], [1, -1], 0] parent: bodytext spaceBefore: 0 item-list: colWidths: [25%, 75%] commands: [] [VALIGN, [0, 0], [-1, -1], TOP] [TOPPADDING, [0, 0], [-1, -1], 0] [BOTTOMPADDING, [0, 0], [-1, -1], 0] [RIGHTPADDING, [0, 0], [1, -1], 0] parent: bodytext spaceBefore: 0 rst2pdf-0.93/rst2pdf/tests/input/test_kerning.txt0000664000175000017500000000012511242050045022010 0ustar ralsinaralsinaIf your wordaxe is recent enough for kerning support, these letters "overlap": AWAWA rst2pdf-0.93/rst2pdf/tests/input/test_issue_151.txt0000664000175000017500000001202211242046326022077 0ustar ralsinaralsinaLorem Ipsum =========== Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor volutpat sodales. Maecenas lectus ligula, varius a vulputate at, gravida non urna. Duis lorem orci, consequat mattis aliquet adipiscing, suscipit et nisl. Vestibulum sollicitudin ante non nibh aliquam porttitor. Nulla facilisi. Suspendisse venenatis mollis justo, ac vestibulum tellus adipiscing vitae. Aliquam ac quam eu justo luctus lobortis sed at turpis. In hac habitasse platea dictumst. Ut id dui vel nunc convallis placerat. Nullam convallis eros at orci fermentum rutrum. Fusce porttitor purus at ligula vulputate aliquet. Suspendisse iaculis consequat dolor at congue. Proin quis aliquet nunc. Morbi turpis erat, fermentum at tincidunt ac, sagittis non odio. Aliquam lorem risus, tempor id ornare id, bibendum eget dolor. Nulla euismod fringilla tortor non suscipit. Fusce mauris ante, blandit rutrum mollis at, accumsan in nibh. Fusce malesuada, dui eleifend ornare varius, nisi mauris scelerisque nunc, eu condimentum nisi mauris ac nunc. Aenean imperdiet rhoncus dui, vitae interdum dolor suscipit in. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor volutpat sodales. Maecenas lectus ligula, varius a vulputate at, gravida non urna. Duis lorem orci, consequat mattis aliquet adipiscing, suscipit et nisl. Vestibulum sollicitudin ante non nibh aliquam porttitor. Nulla facilisi. Suspendisse venenatis mollis justo, ac vestibulum tellus adipiscing vitae. Aliquam ac quam eu justo luctus lobortis sed at turpis. In hac habitasse platea dictumst. Ut id dui vel nunc convallis placerat. Nullam convallis eros at orci fermentum rutrum. Fusce porttitor purus at ligula vulputate aliquet. Suspendisse iaculis consequat dolor at congue. Proin quis aliquet nunc. Morbi Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor volutpat sodales. Maecenas lectus ligula, varius a vulputate at, gravida non urna. Duis lorem orci, consequat mattis aliquet adipiscing, suscipit et nisl. Vestibulum sollicitudin ante non nibh aliquam porttitor. Nulla facilisi. Suspendisse venenatis mollis justo, ac vestibulum tellus adipiscing vitae. Aliquam ac quam eu justo luctus lobortis sed at turpis. In hac habitasse platea dictumst. Ut id dui vel nunc convallis placerat. Nullam convallis eros at orci fermentum rutrum. Fusce porttitor purus at ligula vulputate aliquet. Suspendisse iaculis consequat dolor at congue. Proin quis aliquet nunc. Morbi Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor volutpat sodales. Maecenas lectus ligula, varius a vulputate at, gravida non urna. Duis lorem orci, consequat mattis aliquet adipiscing, suscipit et nisl. Vestibulum sollicitudin ante non nibh aliquam porttitor. Nulla facilisi. Suspendisse venenatis mollis justo, ac vestibulum tellus adipiscing vitae. Aliquam ac quam eu justo luctus lobortis sed at turpis. In hac habitasse platea dictumst. Ut id dui vel nunc convallis placerat. Nullam convallis eros at orci fermentum rutrum. Fusce porttitor purus at ligula vulputate aliquet. Suspendisse iaculis consequat dolor at congue. Proin quis aliquet nunc. Morbi Duis quis tortor neque, in posuere dolor. Integer hendrerit, est sed adipiscing suscipit, turpis orci imperdiet purus, et imperdiet nulla est at augue. Suspendisse in pharetra odio. Mauris justo eros, sollicitudin quis feugiat non, dapibus sit amet enim. Quisque et est vel sem feugiat congue. Aliquam erat volutpat. Donec lobortis placerat quam, in euismod erat pharetra id. Etiam placerat, ante sit amet imperdiet suscipit, magna arcu cursus leo, id venenatis nulla mi quis urna. Nulla elit eros, scelerisque tempus lobortis ut, varius non ante. Aliquam eleifend ultricies erat, ut fringilla magna malesuada et. Fusce semper sodales odio sed commodo. Nulla lorem neque, tristique ac bibendum ac, convallis nec massa. Aliquam accumsan, dui eget pharetra tincidunt, erat nibh egestas velit, non euismod erat nulla in eros. Donec sit amet tortor sit amet sapien blandit egestas sit amet a dolor. Phasellus sit amet sapien massa. Quisque elementum bibendum dignissim. Duis quis tortor neque, in posuere dolor. Integer hendrerit, est sed adipiscing suscipit, turpis orci imperdiet purus, et imperdiet nulla est at augue. Suspendisse in pharetra odio. Mauris justo eros, sollicitudin quis feugiat non, dapibus sit amet enim. Quisque et .. image:: images/biohazard.png :width: 5cm Maecenas id libero risus, sed volutpat eros. Integer vel eros gravida enim imperdiet ultricies. Sed massa nisl, ultrices a euismod sed, laoreet eget urna. Duis lobortis dapibus lacus, lacinia consequat nunc vestibulum sed. Etiam faucibus fringilla lorem, at luctus tellus rutrum a. Aliquam erat volutpat. Curabitur diam sem, viverra molestie tincidunt sit amet, mollis in lacus. Sed tempor, est ut molestie faucibus, sem nibh pharetra diam, ut iaculis tellus risus in est. Nulla imperdiet ante quis sem tincidunt semper. Nam placerat ipsum sit amet turpis hendrerit ac tincidunt velit sollicitudin. Cras sit amet arcu est, suscipit consequat lorem. Donec id nisl eu orci rutrum congue sed eget nunc. rst2pdf-0.93/rst2pdf/tests/input/test_table_classes.txt0000664000175000017500000000555011222457635023204 0ustar ralsinaralsina.. class:: thick +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ .. class:: thin +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ .. class:: justgrid +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ .. class:: smallbig +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ .. class:: bigsmall +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ .. class:: onesmall +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ .. class:: toomany +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ .. class:: twosmall +-------------------+--------------------+ | AAAA | BBBB | | | | +-------------------+--------------------+ | | | | CCCC | DDDD | | | | +-------------------+--------------------+ rst2pdf-0.93/rst2pdf/tests/input/test_issue_374.style0000664000175000017500000000072311464313223022433 0ustar ralsinaralsina{"pageSetup": { "width": "16cm", "height": "12cm", "margin-top": "2mm", "margin-bottom": "0mm", "margin-left": "2cm", "margin-right": "1cm", "margin-gutter": "0cm", "spacing-header": "2mm", "spacing-footer": "0mm", "firstTemplate": "cutePage" }, "pageTemplates" : { "cutePage": { "frames": [ ["0", "0", "100%", "100%"] ], "showHeader" : true, "showFooter" : true } } } rst2pdf-0.93/rst2pdf/tests/input/test_issue_197.txt0000664000175000017500000000062411256157221022120 0ustar ralsinaralsina.. class:: noborder +------------------+--------------+ | | | | No borders | | | | | +------------------+--------------+ .. class:: funborder +------------------+--------------+ | | | | Fun borders | | | | | +------------------+--------------+ rst2pdf-0.93/rst2pdf/tests/input/test_issue_298.txt0000664000175000017500000000034411353150212022110 0ustar ralsinaralsinaThese should say 1,2,3: :counter:`seq1` , :counter:`seq1` , :counter:`seq1` These should say 2,3,1,2: :counter:`seq2:2` , :counter:`seq2` , :counter:`seq2:1` , :counter:`seq2` This should link to the first 3: `link <#seq1-3>`_rst2pdf-0.93/rst2pdf/tests/input/test_issue_241.txt0000664000175000017500000000010411275316351022101 0ustar ralsinaralsinaAAAAA ----- BBBBB ----- THis test fails in python 2.4 as of r1459 rst2pdf-0.93/rst2pdf/tests/input/test_uml_extension.cli0000664000175000017500000000003112060757530023204 0ustar ralsinaralsina-e inkscape -e plantuml rst2pdf-0.93/rst2pdf/tests/input/test_issue_265_2.txt0000664000175000017500000000141511327546724022345 0ustar ralsinaralsinaThis is basically a copy of test_issue_138, modified to use a bigger figure, and a larger border padding size. This test shows that the math on size and location calculations for the border and the figure within the border are not correct. This is the default figure class without a border (which seems right): .. figure:: images/text_and_vectors_001.pdf This is the caption. And this is the legend. This is a line after the figure, just to show where things are. .. raw:: pdf PageBreak This is a figure with ``with-border`` class (which is broken at the time of this report): .. class:: with-border .. figure:: images/text_and_vectors_001.pdf This is the caption. And this is the legend. This is a line after the figure, just to show where things are. rst2pdf-0.93/rst2pdf/tests/input/test_foreground.txt0000664000175000017500000000044411336347706022552 0ustar ralsinaralsina .. header:: This page has a background (page 6 from demo.pdf) and a foreground "confidential" watermark. .. Need "something" or the program will create a PDF which .. Acrobat whines about because it doesn't have any pages. .. A spacer is sufficient. .. raw:: pdf Spacer 0, 2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_293.txt0000664000175000017500000000007311351160523022106 0ustar ralsinaralsina.. class:: centered This is centered if Issue 293 is fixedrst2pdf-0.93/rst2pdf/tests/input/test_sidebar_literal.txt0000664000175000017500000000111711057404653023516 0ustar ralsinaralsina .. sidebar:: Sidebar Title :subtitle: Optional Subtitle This is a sidebar. It is for text outside the flow of the main text. .. rubric:: This is a rubric inside a sidebar Sidebars often appears beside the main text with a border and background color. Section ------- .. compound:: This paragraph contains a literal block:: Connecting... OK Transmitting data... OK Disconnecting... OK and thus consists of a simple paragraph, a literal block, and another simple paragraph. Nonetheless it is semantically *one* paragraph. rst2pdf-0.93/rst2pdf/tests/input/test_issue_265.cli0000664000175000017500000000001511327425523022040 0ustar ralsinaralsina-e vectorpdf rst2pdf-0.93/rst2pdf/tests/input/test_autoembedding_type1.style0000664000175000017500000000005211351252072024631 0ustar ralsinaralsinastyles: title: fontName: CharterBT-Italic rst2pdf-0.93/rst2pdf/tests/input/test_multiline_header.style0000664000175000017500000000042711431243622024220 0ustar ralsinaralsinapageTemplates: oneColumn: frames: [] [0%, 0%, 100%, 100%] showHeader : true showFooter : true defaultHeader : ".. class:: right\n\nThis should be aligned right." defaultFooter : "This should be in two lines. 1.\n\nAnd 2." rst2pdf-0.93/rst2pdf/tests/input/Tuffy.ttf0000775000175000017500000004401411272577077020425 0ustar ralsinaralsinaFFTMEQ\GGDEF)FPGPOSF^GSUBltFp OS/2kVcmap+Bcvt !y8gaspFHglyfҺ4headB 6hhea ΎD$hmtxwJlocaR<maxph name/d=posteHDh 4_< //??]bT@_P0 PfEd ==hg5zhd~$)Z!~Ngbmg(pdppmfqpXpppophpqqKTBX\9X)HydyvyzySdytqyQyyy5\KyZ\My7-XyP(TJL-dr+~X`TLIb}I((fI`f(xR^D5(xZZp}?5(P`TX?VJ1Z+L)h;m^?V1&a~yub R R R R R RlSxzzzz 1f1f1f1f1fAl p`V1\ ^ ^ ^ ^ ^ ^TVllllxsR$p&p&p&p$pwV(((((? S_cjQaq[A<        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a}~pcdhtnjriqfsxblkwy|u{zov!y0pdZrbDV$8L <*n^  ` t   0 @ R d p @ v $ L n  : p Jf*"Vp(2@ $LXdp|(4Bfr~6BNZfr~ ,8DP\$jgB #.546324632#"&'&#");'(=@,':?,':"!'77%-?1$,?0% ;&46;2#"&'4&%46;2#"&'&+'"+)"Dv$(v$( 5{!#!#!5!!5!3!3!!!\\Vii#RaaR{{e*3:3.'#5.'7.5467>54&ŁВ}#wK:oeL-ӴQ~fL- ;5O-S|k9ԝ]t7.54>32+'n_c[eaw|!Jg[ZL6RY(Ro_t3LLgiv4su]:Hy^P]; #u`lc46;2#"&'&+)"Dv$( ) &5473n{suTIUZ #654'3 tjyTJ]!y9#"'&54?"&5463'&547632763272#'#"&'q!& 0*" (*om*( "*0 &! (#)!)' (( ')!)#( NB !3!!#!N34̍7Ɏ7g#>%'65"&'&54632>%8H':@,':^,XM/gK/% -?1$m3!!m[g>74632#"&'&g@,':?,':^-?1$,?0% T3#3͞d&4>32#"'&732>54'.#"dByo.mܓ."mPI&!kPL(ך|ڈ ڄxpms#73#F\Pm/'6$32!!4>7>54&#"'AxlP/*@:M3C *b`?u4PypG ?"=#-kdV7 GeY3bOO8>#,\ny/^\2*0%96F%q /?32654.+532654&+"'>32#"&q&S9_s=Nba_Py 5{euBN'&TM3}/RhIwK(}pdUI@i^mRM @]GX 3##!;!`^ }ts#V&"'!!632#"&'732654'.\!;1%$^B[# kч.T߄ ' KT7¤?>݉Ţ,'r)4'.#"326632#"&'&54>73oqiEI@! Bse /";N%gu!f~ɛ+3N~N͓*-:snDd Ho7 #!57նPh/@%2654'.#"32654'.#"2#"$'&54>7&'&546Fs`oewU# 3SQ) q" n&oVbqQa -n'l((w͠4,NY9V'0*32654'.#"#"&'&54>32#%qiI@! )PmQ 1A#fv"fɛ2->~pW3Γ,+:rr>mqH'  q#H&  T% 3 PdXBfbb!!!!B  \%# 3#eZ9-=#54>7> 54&#"'>324632#"&'&=6(E  |RHV~KJ>I21@,':?,':-P6="9 $}Z|92`aa?7'4G9-?1$,?0% )FV%# &54$32#"&'#"&'&5463232654'.#"32632654'.#"M^7`Ј6Tb-7x(,OzȎv R38f osc.[]uKZmqBTfWRP_]wC@K^89+54'.#32>54'.#"&'!2#2#!?FqK4S}F+ %HU˱vo? WHvK- *KcZ#!7KR,#^ud'!0C9#<9!4Ye:*#u5X^3$$"BWKL5!d)#".54>32.+"3267Lp_wȋa-.awLbN1hhi87#!!2*JcUi0ODOAs[4jTχpzy !!!!!!y0gy !!!!#y0\d0".54>32.#"32>5!5!#*P-bwI:jgi99igFvP53#"&'&q o\Fͥ&45}ggGy 33 ##yxϼsy3!!yeݍy 33 3##yϙTT!P\Ly 333#y䝑wPZ\34'.#"32>%4>32#".'&H=^V]\==^U]\>&Z{yƆV'Z{xƆVvmStAPVokRq@MzUeΞc\ltmdʚ`Zkjy 3 4'.+';2+# ,SbΞ BՊΞ#)E?#-(WsB\94'.#"3267'764>32'#".'&PAaVde5=a[6{"Xg ([yb|b=U?ZLnd}b=rjVuAi{mdRvC)"teΞc?hVokRyu54&+ ##;2^R2Sמ3Ʀ"5LF(|wx- <732654.'.54632.#"#"&-s,G=Z7S%5H26!)ps2-G4S(@T?B*ۋGWr)L:9'* ))=CZ3êHq|^$>.+!! 13HNf8TX!!#!XD7##y3#"$'&5332>5-#zKe9g+rV?~ЇP3#3GBPT 333# #T+P3J 3 3 # #Jjc;˾^)'JLd3 3#LddBX<d!!!!Pliݍ#!!#3u`Z\!31 53#5!`@}5#'#35}VX5!XB獍`w!&'&547632#"c  "$  TbB +"32654&'254&#"'632#=#"&546ol`{h uEz"Nۋ+Dh6Fcgcfm1`+"hm{=>,Χ">32#".'#&"320Fd>e\..\f>dF-蠠ts-GA#]poŤ`#@E-LlF!.#"32>7#"&54>32xF+O6! z@Um;u(PmTr6)2c#60M)HA&Vj=zaI#3#5#".54>3232654&".Ed?RZ>.\e>dF0stR-E@#@lXpš]#AG-pbF"!.#"3267#".>32 pLw<[e I }##5354>32.#"3;X`':M+m((9V325332654&"FsM[e<\h-Fd>RZ>.\e>dF0Lstck;Agt8Wu!-E@#@lXpš]#AG-p!#3>32#4."rRd732>32#4.#"V+K3ژ/1L.tm+A+#HnrK/a1&/@$ihs;^dH<gN!#3>32#4."rRd732#".732>54.#"f9kia_Ɍa BoJIoB 7ab7wʗUZyDDyZyuuTN">32#".'#&"320Fd>e\..\f>dF-蠠ts1-GA#]poŤ`#@E-"I? N'3"&=".54>325332654&"4B5Ȝ[..\e>dF0Lst=5u͸y\anpš]#AG-pN&#"#3>32P1>Y{5qR*xw1Yy`HJ6.54672&#" #"&'732654.+ȔQR0 6Pu-52 ?"?%6!&ؗ&h\et&G? :Ab;-JG%zOG$<$  " .0="pCH`U(@-fP+#53533#;#"&5􎎗uFFx-uox13#5#".532>5rRd7=#".532>53L{MՖjg1^R2rRd7&67>7&#"327.'&'&'&Z@T! ,9F'+Z <.<"Y,'F:, (f}w"  P-M+>   " '@W} 33}R=532676=4>7&'&=4'&'.#"5@T! ,:F',Y <.?"Z+'F9, 'i|"  T+Q-9  " %R?3\>3232>7#".#"?1H$800: D7!!5D" ?403$B1+!-,+,--+^PN!.'&54>753&#"327#}k 8]`4cdZPkU~pPRZ< w,9L|M. W_Pz[!&S]jZ`4T'(#5332.#"!!!>7!>7j^I: g ^.P  &&(; TBTktFdQ}N! s *?w-w132654'.#""'#53&'&547#536253#3# cAKi bALidPP+;yPPy&B>QjK>Qj779F$gQ{77{4B%hWJu!5!3 33!!!#!5!DX1Ϙ7D6ׇLZ#53鏏{z+h,;632#"&'7;26754"#"&'&54>32.+"4'.#";2& ];S Ga - " N[avFF^!Q% Ö0,Wd #pX 7:nxH\S{QL4632#"&'&%4632#"&'&#8&!48&!4)8&!48&!4F&8+  '8+! &8+  '8+!)7(8#"&'&54632&"327%32654'.#"432#"&'&uCSJqyV[;N"L84!.sssu bC\GUy;R8& ,D%o&nŖ2)Ŗ+;^ 3# 3#ч^"#"!}#5!5!!͏mm^X,:M32>54'.#"4>32#".'&%32>54&5.+'32#'# Qlv;DtH Vpu5EtGu?gE& kʡ 3"/0]KRRq -dAR2,JuG$5aZ.(KzH&1^_ftR&߰96}U{8q "N:> ,?j!!?]j1=32654'.#"4632#"&'& N4=S N4=Svm^m^3AW?3BXBktY ltY'HPa+632#"'&'&54i$:!  ufh%#332>53#5#".) $.N5%.u:,E*(J+6L8'@QQ&b9D$yu,23"3"&#.'&54>;0GM*$)A/%=^^A0 s  !!6O2!5!   ,7O1*)b`3neE'{uqJ>54'.'7u'@8*J  "  .8>H 81,b;^ #!#^"#"#}"{R}'C'\$ R'rX$ Rq'A$ RJ'a$ R'i/$ R'pf1$ Sg!#!!!!!!53OFF{JxX'v&'C^( 'r`^( Z'A( 'i1( A'Cjs, 'rX, If'A, 9'iZ!, #53!2+324'.+!F}82⛝(,bhE^S5'a+1 f'CP2 f'r 2 fs'A2 fJ'a32 f'iB2 lJ7,-c,`,9%#7&'&54>3273#"'32>54'&' &#"J|/6[xczaE55\wc5VoYZ=#OIXYZ<)FokRvD2EmtRsB;LzTtod`&O}Txd'C=s8 'rs8 w'A8 'iB8 Vn'r^<  2>54'&!3 ##/WlC.E7gc&;b@&(SX>!\]G>32!"'732>54'.+"5;2>54'&#" #67,DXQ'+^eNPj[ ( ?d_?&$*Y)JsO3!  *-8cF:" ,GnA'h5{ $;`@o;xJ'%#CP7bzY ^l#'CD ^l'r;D ^l&AD ^l'ayLD ^l^'i^D ^lV'pD T`FWa"32654'.>32!32>7#".'#"&'&546326&74'&#"'>32!&'&#"i_"\mf:zd!aV8m'@5$,,5U8 ȘWR$ "AP'N55Q3^t /:X/Zl1$h(Ob4_Y^} - IG]~ 7nk 9 %71&7035,6+&'f(YsG9BmuV]vF'v F l+'C H l5'r9 H l&A5H l`'iH -/3#&'&547632#"!  "1$   #3#632#"'&'&54$1:!  s# 3##'#31^VR#3#4632#"&'&%4632#"&'&8&!48&!4)8&!48&!41&8+  '8+! &8+  '8+!R@32654'.#"#"&'&54324'.''7&#"'6327 Iqg;h9C ݠ)G/30 h8cGY)J7`.2u׆%sjMo$!8BҸHP$. )^1dFm'aXQ p''CR p1'rhR p&A3R p'a/R pZ'ioR w[& VJ 1 32>54'&'&#"7&'&54>3273#"'ATEj< ZASAh>! s7__1q9_c0DNNVD2?L{LWG+%YwZVKOZuQ\NN'CX 'rGX &A1/X b'iuX ?'rK\ +!#3>32#"./4'.#"326/DU4":[^8d6fD5hU5Jr)54ȢXeZkA.7]Rp6c4:jDAQDr'Ha>'Jq2[>| 0#53>32.#"!!!!3267#"&'#53&54'}q}M`2XQ<_,"i0E\>`<9[7&:K`3+ZJ MW+Da/!!zs) +[x    D   g y R   9  l ~ & & & k "-SCreated by Thatcher Ulrich (http://tulrich.com) with FontForge 1.0 (http://fontforge.sf.net) This font, including hint instructions, has been donated to the Public Domain. Do whatever you want with it. Created by Thatcher Ulrich (http://tulrich.com) with FontForge 1.0 (http://fontforge.sf.net) This font, including hint instructions, has been donated to the Public Domain. Do whatever you want with it. TuffyTuffyRegularRegularFontForge 1.0 : Tuffy Regular : 11-2-2007FontForge 1.0 : Tuffy Regular : 11-2-2007Tuffy RegularTuffy RegularVersion 001.100 Version 001.100 TuffyTuffyThatcher UlrichThatcher Ulrichhttp://tulrich.com http://tulrich.com http://tulrich.com http://tulrich.com Public Domain Public Domain MagerKursivNormalCursiva1KG=K9C@A82VanligKursivNormaleCursivoNormlDQltStandardKursivNormalItaliqueRegelmatigCursief2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~ softhyphen figuredash quotereverseduni201FEuro  latn ,latnkern6<BX^djtzq&79+Y\Z5)72$7$w$Xy$ (H$H$BD?qYWDQRWX\MuMP[MHMu$(*.2379:<?DHIJMRTU\?.rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/0000775000175000017500000000000012064144441021450 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/conf.py0000664000175000017500000001433611403164711022754 0ustar ralsinaralsina# -*- coding: utf-8 -*- # # issue 320 documentation build configuration file, created by # sphinx-quickstart on Sun Jun 6 17:09:58 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['rst2pdf.pdfbuilder'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'issue 320' copyright = u'2010, Roberto Alsina' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.0.0' # The full version, including alpha/beta/rc tags. release = '0.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'issue320doc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'issue320.tex', u'issue 320 Documentation', u'Roberto Alsina', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True pdf_toc_depth = 2 pdf_invariant = Truerst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/_static/0000775000175000017500000000000012064144441023076 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/make.bat0000664000175000017500000000600311403000576023050 0ustar ralsinaralsina@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\issue320.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\issue320.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/contents.rst0000664000175000017500000000023211403055215024030 0ustar ralsinaralsinaStuff ===== Section 1 --------- Subsection a ~~~~~~~~~~~~ Subsubsection i +++++++++++++++ subSubsubsection i ################## Section 2 --------- rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/_templates/0000775000175000017500000000000012064144441023605 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/Makefile0000664000175000017500000000627611403000576023117 0ustar ralsinaralsina# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf @echo @echo "Build finished. The PDF files are in $(BUILDDIR)/pdf." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/issue320.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/issue320.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." rst2pdf-0.93/rst2pdf/tests/input/sphinx-issue320/index.rst0000664000175000017500000000053711403000576023312 0ustar ralsinaralsina.. issue 320 documentation master file, created by sphinx-quickstart on Sun Jun 6 17:09:58 2010. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to issue 320's documentation! ===================================== Contents: .. toctree:: :maxdepth: 2 contents rst2pdf-0.93/rst2pdf/tests/input/test_issue_70_2.txt0000664000175000017500000000003611214205617022241 0ustar ralsinaralsina+---+ |XX | +===+ |XX | +---+ rst2pdf-0.93/rst2pdf/tests/input/test_issue_471.txt0000664000175000017500000000025712060434315022111 0ustar ralsinaralsinaThis is normal size. .. line-block:: :class: myclass This should be half-size also this is halfsize .. class:: myclass This should also be half-size. rst2pdf-0.93/rst2pdf/tests/input/styled_literal.style0000664000175000017500000000011412053434707022667 0ustar ralsinaralsina{ "styles" : { "literal" : { "textColor": "green" } } } rst2pdf-0.93/rst2pdf/tests/input/test_extensions.txt0000664000175000017500000000000111303037724022552 0ustar ralsinaralsina rst2pdf-0.93/rst2pdf/tests/input/test_bullet_chars.txt0000664000175000017500000000005011055573313023031 0ustar ralsinaralsina======  Test ====== - Item 1 - Item 2 rst2pdf-0.93/rst2pdf/tests/input/test_issue_224.txt0000664000175000017500000000035711302503435022104 0ustar ralsinaralsina.. class:: centered ========= =========== Table Table ========= =========== .. class:: left ========= =========== Table Table ========= =========== .. class:: right ========= =========== Table Table ========= =========== rst2pdf-0.93/rst2pdf/tests/input/test_issue_199.cli0000664000175000017500000000002611274376724022061 0ustar ralsinaralsina-b 1 --break-side=odd rst2pdf-0.93/rst2pdf/tests/input/test_issue_419.style0000664000175000017500000000070411724535673022450 0ustar ralsinaralsinastyles: admonition: # this works borderPadding: [6,6,6,6] # but the following do not work textColor: red borderRadius: 12 myclass: # here, everything seems to work parent: normal spaceBefore: 16 spaceAfter: 16 textColor: red borderPadding: [6,6,6,6] borderRadius: 12 backColor: beige borderColor: darkgray borderWidth: 0.5 rst2pdf-0.93/rst2pdf/tests/local_rl_config.py0000664000175000017500000000021711272712512021113 0ustar ralsinaralsina''' Local reportlab configuration override. For testing, do not put the date in the PDF ''' invariant = 1 # No date -- unchanging output rst2pdf-0.93/rst2pdf/tests/execmgr.py0000775000175000017500000003036711724555370017456 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- #$HeadURL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/tests/execmgr.py $ #$LastChangedDate: 2012-03-04 00:01:12 -0300 (Sun, 04 Mar 2012) $ #$LastChangedRevision: 2459 $ # See LICENSE.txt for licensing terms ''' Copyright (c) 2009, Patrick Maupin, Austin, Texas A wrapper around subprocess that performs two functions: 1) Adds non-blocking I/O 2) Adds process killability and timeouts Currently only works under Linux. ''' import sys import subprocess import select import os import time import textwrap from signal import SIGTERM, SIGKILL import traceback class BaseExec(object): ''' BaseExec is designed to be subclassed. It wraps subprocess.Popen, and adds the ability to kill a process and to manage timeouts. By default, it uses pipes for the new process, but doesn't do anything with them. ''' is_python_proc = False defaults = dict( bufsize=0, executable=None, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, preexec_fn=None, # Callable object in child process close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, timeout=500.0, # Time in seconds before termination killdelay=20.0, # Time in seconds after termination before kill python_proc=None, ) def before_init(self, keywords): # Replace this in subclass to do more setup pass def after_init(self): # Replace this in subclass to execute code after # process creation pass def wrap_python_exec(self, preexec_fn): # Don't let anything in our buffer wrap back into new process # Otherwise, it might (will!) come out twice... sys.stdout.flush() sys.stderr.flush() self.is_python_proc = True def wrapper(): sys.argv = self.args try: preexec_fn() except Exception: sys.stdout.flush() print >> sys.stderr, traceback.format_exc() sys.stderr.write(chr(1)) except SystemExit, s: sys.stdout.flush() code = s.code try: code = int(code) except: pass if code: print >> sys.stderr, code sys.stderr.write(chr(1)) else: sys.stdout.flush() sys.stderr.flush() return wrapper def __init__(self, *args, **kw): # Allow flexible args handling. if len(args) < 2: try: args[0] + '' except TypeError: args = args[0] else: args = args[0].split() self.args = args # Handle defaults keywords = self.defaults.copy() keywords.update(kw) # Get our timeout information, and call # subclass to get other parameters self.timeout = keywords.pop('timeout') + time.time() self.killdelay = keywords.pop('killdelay') self.before_init(keywords) # Handle any special Python proc python_proc = keywords.pop('python_proc') if python_proc is not None: assert keywords.pop('preexec_fn') is None keywords['preexec_fn'] = self.wrap_python_exec(python_proc) args = ['true'] # Start the process and let subclass execute proc = subprocess.Popen(args, **keywords) self.proc = proc self.after_init() def kill(self, force=False): action = force and SIGKILL or SIGTERM os.kill(self.proc.pid, action) return action def checktimeout(self): # Poll to decide if subprocess needs to be killed now = time.time() if now < self.timeout: return 0 killdelay, self.killdelay = self.killdelay, 0 self.timeout = now + killdelay return self.kill(not killdelay) class PipeReader(object): ''' PipeReader is an iterator class designed to read from the next ready pipe. It can handle as many pipes at a time as desired, and each call to next() will yield one of the following: pipe, data -- After reading data from pipe pipe, None -- When pipe is closing None, None -- On timeout if no data It raises StopIteration if no pipes are still open. A logical extension would be to handle output pipes as well, such as the subprocess's stdin, but the initial version is input pipes only (the subprocess's stdout and stderr). ''' TIMEOUT = 1.0 # Poll interval in seconds BUFSIZE = 100000 def __init__(self, *pipes, **kw): self.timeout = kw.pop('timeout', self.TIMEOUT) self.bufsize = kw.pop('bufsize', self.BUFSIZE) self.by_pipenum = {} # Dictionary of read functions self.ready = [] # List of ready pipes assert not kw, kw # Check for mispelings :) for pipe in pipes: self.addpipe(pipe) def addpipe(self, pipe): pipenum = pipe.fileno() bufsize = self.bufsize by_pipenum = self.by_pipenum def getdata(): chunk = os.read(pipenum, bufsize) if chunk: return pipe, chunk else: # Here, we're done. Remove ourselves from # the dictionary and return None as a notification del by_pipenum[pipenum] return pipe, None assert by_pipenum.setdefault(pipenum, getdata) is getdata def __iter__(self): return self def next(self): ready = self.ready if not ready: allpipes = list(self.by_pipenum) if not allpipes: raise StopIteration ready[:] = select.select(allpipes,[],[],self.timeout)[0] if not ready: return None, None # Allow code to execute after timeout return self.by_pipenum[ready.pop()]() class LineSplitter(object): ''' LineSplitter takes arbitrary string data and splits it into text lines. It manages the case where a single line of data returned from a pipe is split across multiple reads. ''' def __init__(self, prefix): self.prefix = prefix self.leftovers = '' self.lines = [] def __call__(self, chunk): if not chunk: if self.leftovers: chunk = '\n' else: return self chunk = chunk.replace('\r\n', '\n').replace('\r', '\n') chunk = self.leftovers + chunk newlines = chunk.split('\n') self.leftovers = newlines.pop() oldlines = self.lines oldlines.reverse() oldlines.extend(newlines) oldlines.reverse() return self def __iter__(self): return self def next(self): try: return self.prefix, self.lines.pop() except IndexError: raise StopIteration class TextOutExec(BaseExec): ''' TextOutExec is used for when an executed subprocess's stdout and stderr are line-oriented text output. This class is its own iterator. Each line from the subprocess is yielded from here, with a prefix: ' ' -- line written by subprocess to stdout '* ' -- line written by subprocess to stderr '** ' -- line represents subprocess exit code NB: Current implementation is probably not that secure, in that it assumes that once the pipes are closed, the process should be terminating itself shortly. If this proves to be a problem in real life, we can add timeout checking to the "wait for things to finish up" logic. ''' defaults = dict( pollinterval=1.0, readbufsize=100000, ) defaults.update(BaseExec.defaults) def before_init(self, keywords): self.pollinterval = keywords.pop('pollinterval') self.bufsize = keywords.pop('readbufsize') def after_init(self): proc = self.proc self.pipes = PipeReader(proc.stdout, proc.stderr, timeout=self.pollinterval, bufsize=self.bufsize) self.pipedir = {proc.stdout : LineSplitter(' '), proc.stderr : LineSplitter('*')} self.lines = [] self.finished = False def __iter__(self): return self def next(self): lines = self.lines while not lines: self.checktimeout() for pipe, data in self.pipes: if pipe is not None: lines.extend(self.pipedir[pipe](data)) lines.reverse() break else: if self.finished: raise StopIteration else: self.finished = True lines.append(('**', str(self.proc.wait()))) return '%s %s' % lines.pop() def elapsedtime(when=time.time()): mins, secs = divmod(round(time.time() - when, 1), 60) hrs, mins = divmod(mins, 60) hrs = hrs and ('%02d:' % int(round(hrs))) or '' mins = mins and ('%02d:' % int(round(mins))) or '' secs = '%04.1f' % secs units = hrs and 'hours' or mins and 'minutes' or 'seconds' return '%s%s%s %s' % (hrs, mins, secs, units) def default_logger(resultlist, data=None, data2=None): if data is not None: resultlist.append(data) if data2 is None: data2 = data print data2 def textexec(*arg, **kw): ''' Exec a subprocess, print lines, and also return them to caller ''' logger = kw.pop('logger', default_logger) formatcmd = textwrap.TextWrapper(initial_indent=' ', subsequent_indent=' ', break_long_words=False).fill subproc = TextOutExec(*arg, **kw) args = subproc.args procname = args[0] starttime = time.time() result = [] logger(result, 'Process "%s" started on %s\n\n%s\n\n' % ( procname, time.asctime(), formatcmd(' '.join(args)))) errcode = 0 badexit = '* ' + chr(1) for line in subproc: if line == badexit and subproc.is_python_proc: errcode = 1 continue if not line.startswith('**'): logger(result, line) continue errcode = errcode or int(line.split()[-1]) status = errcode and 'FAIL' or 'PASS' logger(result, '\nProgram %s exit code: %s (%d) elapsed time: %s\n' % (procname, status, errcode, elapsedtime(starttime))) logger(result, None, 'Cumulative execution time is %s\n' % elapsedtime()) return errcode, result if __name__ == '__main__': def goodfunc(): print "Good func", sys.argv def badfunc(): assert 0, "Boo! %s" % sys.argv #raise SystemExit('I am bad') if len(sys.argv) > 1: print "Starting subprocess" sys.stdout.flush() for i in range(10): time.sleep(0.2) print "This is line", i sys.stdout.flush() print >> sys.stderr, "This is an error message" print "Ending subprocess" if sys.argv[1] == 'die': raise SystemExit('Deliberately croaking') else: print 'Calling good python_proc 1' textexec('goodfunc', '1', python_proc=goodfunc) print 'Calling bad python_proc 1' textexec('badfunc', '1', python_proc=badfunc) print 'Calling good python_proc 2' textexec('goodfunc', '2', python_proc=goodfunc) print 'Calling bad python_proc 2' textexec('badfunc', '2', python_proc=badfunc) print "Calling myself" textexec(__file__, 'subprocess') print "Calling myself with kill time" textexec(__file__, 'subprocess', timeout=0.8) print "Calling myself with forced error exit" textexec(__file__, 'die') print 'All Done' rst2pdf-0.93/rst2pdf/tests/test.py0000664000175000017500000001275711347474267017011 0ustar ralsinaralsina# -*- coding: utf-8 -*- from autotest import MD5Info, PathInfo, globjoin from autotest import run_single, dirname, checkmd5 import sys, os import nose.plugins.skip class RunTest: def __init__(self,f): basename = os.path.basename(f) self.description = basename mprefix = os.path.join(PathInfo.md5dir, basename)[:-4] md5file = mprefix + '.json' ignfile = os.path.join(PathInfo.inpdir , basename[:-4])+'.ignore' info=MD5Info() self.skip=False self.openIssue=False if os.path.exists(ignfile): self.skip=True if os.path.exists(md5file): f = open(md5file, 'rb') exec f in info f.close() if info.good_md5 in [[],['sentinel']]: # This is an open issue or something that can't be checked automatically self.openIssue=True def __call__(self,f): if self.skip: raise nose.plugins.skip.SkipTest elif self.openIssue: assert False, 'Test has no known good output (Open Issue)' else: key, errcode = run_single(f) if key in ['incomplete']: raise nose.plugins.skip.SkipTest assert key == 'good', '%s is not good: %s'%(f,key) from execmgr import textexec, default_logger as log import shlex def run_installed_single(inpfname): """Like run_single, but runs the test using the installed version of rst2pdf""" iprefix = os.path.splitext(inpfname)[0] basename = os.path.basename(iprefix) if os.path.exists(iprefix + '.ignore'): return 'ignored', 0 oprefix = os.path.join(PathInfo.outdir, basename) mprefix = os.path.join(PathInfo.md5dir, basename) outpdf = oprefix + '.pdf' outtext = oprefix + '.log' md5file = mprefix + '.json' inpfname = iprefix + '.txt' style = iprefix + '.style' cli = iprefix + '.cli' if os.path.isfile(cli): f = open(cli) extraargs=shlex.split(f.read()) f.close() else: extraargs=[] args = ['rst2pdf'] + ['--date-invariant', '-v', os.path.basename(inpfname)]+extraargs if os.path.exists(style): args.extend(('-s', os.path.basename(style))) args.extend(('-o', outpdf)) errcode, result = textexec(args, cwd=dirname(inpfname), python_proc=None) checkinfo = checkmd5(outpdf, md5file, result, None, errcode, iprefix) log(result, '') outf = open(outtext, 'wb') outf.write('\n'.join(result)) outf.close() return checkinfo, errcode class RunInstalledTest: def __init__(self,f): basename = os.path.basename(f) self.description = basename mprefix = os.path.join(PathInfo.md5dir, basename)[:-4] md5file = mprefix + '.json' ignfile = os.path.join(PathInfo.inpdir , basename[:-4])+'.ignore' info=MD5Info() self.skip=False self.openIssue=False if os.path.exists(ignfile): self.skip=True if os.path.exists(md5file): f = open(md5file, 'rb') exec f in info f.close() if info.good_md5 in [[],['sentinel']]: # This is an open issue or something that can't be checked automatically self.openIssue=True def __call__(self,f): if self.skip: raise nose.plugins.skip.SkipTest elif self.openIssue: assert False, 'Test has no known good output (Open Issue)' else: key, errcode = run_installed_single(f) if key in ['incomplete']: raise nose.plugins.skip.SkipTest assert key == 'good', '%s is not good: %s'%(f,key) class RunSphinxTest: def __init__(self,f): basename = os.path.basename(f[:-1]) self.description = basename mprefix = os.path.join(PathInfo.md5dir, basename) md5file = mprefix + '.json' ignfile = os.path.join(PathInfo.inpdir , basename)+'.ignore' info=MD5Info() self.skip=False self.openIssue=False if os.path.exists(ignfile): self.skip=True if os.path.exists(md5file): f = open(md5file, 'rb') exec f in info f.close() if info.good_md5 in [[],['sentinel']]: # This is an open issue or something that can't be checked automatically self.openIssue=True def __call__(self,f): if self.skip: raise nose.plugins.skip.SkipTest elif self.openIssue: assert False, 'Test has no known good output (Open Issue)' else: key, errcode = run_single(f) if key in ['incomplete']: raise nose.plugins.skip.SkipTest assert key == 'good', '%s is not good: %s'%(f,key) def regulartest(): '''To run these tests (similar to autotest), run nosetests -i regulartest''' testfiles = globjoin(PathInfo.inpdir, '*.txt') results = {} for fname in testfiles: yield RunTest(fname), fname def releasetest(): '''To run these tests (after you run setup.py install), run nosetests -i releasetest''' testfiles = globjoin(PathInfo.inpdir, '*.txt') results = {} for fname in testfiles: yield RunInstalledTest(fname), fname def sphinxtest(): '''To run these tests , run nosetests -i sphinxtest''' testfiles = globjoin(PathInfo.inpdir, 'sphinx*/') results = {} for fname in testfiles: yield RunSphinxTest(fname), fname def setup(): PathInfo.add_coverage() rst2pdf-0.93/rst2pdf/tests/zinspector12.py0000775000175000017500000001053411274602077020356 0ustar ralsinaralsina#! /usr/bin/env python # -*- coding: utf-8 -*- #$HeadURL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/tests/zinspector12.py $ #$LastChangedDate: 2009-11-05 13:58:39 -0300 (Thu, 05 Nov 2009) $ #$LastChangedRevision: 1379 $ # See LICENSE.txt for licensing terms ''' zinspector12 is part of the rst2pdf utility package. Copyright (C) Patrick Maupin, Austin, Texas It is designed for Luddites like the author to be able to navigate the code base a little more easily. Executing zinspector12 with no arguments will report on import statements. Executing zinspector12 with arguments will report on where each name in the arguments list is imported from. ''' import pythonpaths import sys loader = '../../bin/rst2pdf' checkdirs = '../', importf = '../r2p_imports.py' ignore = set(''.split()) pythonpaths.setpythonpaths(loader) sys.path[0:0] = checkdirs def readf(fname): f = open(fname, 'rb') data = f.read() f.close() for splitcomment in ('"""', "'''"): data = data.split(splitcomment) assert len(data) in (1, 3) data = data[-1] data = [x.split('#')[0].rstrip() for x in data.splitlines()] for line in data: if line: yield line def splitf(fname): result = [] for line in readf(importf): if line.startswith((' ', 'else', 'elif', 'except')): result.append(line) else: if result: result.append('') yield '\n'.join(result) result = [line] def indent(what, indent): newlf = '\n' + indent what = indent + what.replace('\n', newlf) if what.endswith(newlf): what = what[:-len(indent)] return what def getimports(importf, ignore): importinfo = {} badimports = [] basedir = {} exec '0' in basedir globaldir = basedir.copy() for code in splitf(importf): newdir = basedir.copy() exec code in newdir for key in basedir: del newdir[key] for key, value in newdir.iteritems(): oldcode = importinfo.setdefault(key, code) if oldcode is not code: badimports.append((key, oldcode, code, globaldir[key], value)) globaldir.update(newdir) return globaldir, importinfo, badimports def checkimports(importf, ignore): _, _, badimports = getimports(importf, ignore) same = {} diff = {} for key, oldcode, code, oldvalue, value in badimports: code = indent(code, ' ') oldcode = indent(oldcode, ' ') mydict = (same, diff)[oldvalue != value] mydict.setdefault((oldcode, code), []).append(key) printed = False fmt = "\nSame '%s' imported twice:\n\n%s\n%s" for (oldcode, code), deflist in sorted(same.iteritems()): nevermind = set() x, y = oldcode.split('.', 1)[0], code.split('.', 1)[0] if ('.' in oldcode and '.' in code and oldcode != code and x == y): nevermind.add(x.split()[-1]) deflist = ', '.join(sorted(set(deflist) - nevermind)) if deflist: print fmt % (deflist, oldcode, code) printed = True fmt = "\nConflicting definitions for %s:\n\n%s\n%s" for (oldcode, code), deflist in sorted(diff.iteritems()): deflist = ', '.join(sorted(deflist)) print fmt % (deflist, oldcode, code) printed = True if not printed: print "No conflicting imports" def dumpinfo(varnames, importf, ignore): import inspect print g, importinfo, _ = getimports(importf, ignore) for name in varnames: if name not in g: print '%s not defined globally' % repr(name) continue value = g[name] info = '%s (value %s)' % (repr(name), repr(value)) line = importinfo.get(name) if line is not None: print '%s imported with %s' % ( info, repr(line.split('#')[0].rstrip())) else: print '%s imported or defined explicitly (see source code)' try: sourcef = inspect.getfile(value) except TypeError: pass else: if sourcef.endswith('.pyc'): sourcef = sourcef[:-1] print ' defined in %s' % sourcef print if __name__ == '__main__': if len(sys.argv) <= 1: checkimports(importf, ignore) else: dumpinfo(sys.argv[1:], importf, ignore) rst2pdf-0.93/rst2pdf/tests/htmllog.py0000775000175000017500000000362111724555370017463 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- #$HeadURL: https://rst2pdf.googlecode.com/svn/trunk/rst2pdf/tests/parselogs.py $ #$LastChangedDate: 2010-03-07 21:25:16 -0600 (Sun, 07 Mar 2010) $ #$LastChangedRevision: 1730 $ # See LICENSE.txt for licensing terms ''' Parses log files in output directory generated by autotest.py into stupid HTML output. ''' import os, sys from parselogs import getcategories def dumpinfo(): ifiles = set(os.listdir('input')) mydict = getcategories() if not mydict: print '\nNo log files found' exts = '.txt .style .cli'.split() for name, values in sorted(mydict.iteritems()): print '

    ' print '\nCategory "%s"\n (%d tests)\n' % (name, len(values)) print '

    ' print '' href = 'http://code.google.com/p/rst2pdf/issues/detail?id=' for testname, checksum in sorted(values): if os.path.exists(os.path.join('input',testname+'.ignore')): continue print '' print '' print '' for fname in exts: print '' print '' print '
    ' if testname.startswith('test_issue_'): testnum = testname.split('_')[2] print '%s' % (href, testnum, testname) else: print testname print '' print '%s' % (testname, checksum) print '' fname = testname + fname if fname in ifiles: print '%s' % (fname, fname) print '
    ' print if __name__ == '__main__': print '' dumpinfo() print '
    '
        print '\n\n'.join(10*'.')  # A bit of separation from end for scrolling...
        print '
    ' print '' rst2pdf-0.93/rst2pdf/tests/parselogs.py0000775000175000017500000000312011724555370020006 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- #$HeadURL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/tests/parselogs.py $ #$LastChangedDate: 2012-03-04 00:01:12 -0300 (Sun, 04 Mar 2012) $ #$LastChangedRevision: 2459 $ # See LICENSE.txt for licensing terms ''' Parses log files in output directory generated by autotest.py For each category of result (good, bad, unknown, fail), prints a header showing number of tests in that category. Then prints sorted list of tests, with checksums. ''' import os import glob def getchecksuminfo(): for fn in sorted(glob.glob(os.path.join('output', '*.log'))): f = open(fn, 'rb') data = f.read() f.close() fn = os.path.splitext(os.path.basename(fn))[0] data = data.rsplit('\n', 2)[1] if data.startswith('File'): yield fn, 'fail', None else: yield fn, data.rsplit(' ', 1)[-1][:-1], data.split("'")[1] def getcategories(): mydict = {} for fn, category, checksum in getchecksuminfo(): myset = mydict.get(category) if myset is None: mydict[category] = myset = set() myset.add((fn, checksum)) return mydict def dumpinfo(): mydict = getcategories() if not mydict: print '\nNo log files found' for name, values in sorted(mydict.iteritems()): print '\nCategory "%s"\n (%d tests)\n' % (name, len(values)) fmt = '%%-%ds %%s' % max(len(x[0]) for x in values) for item in sorted(values): print fmt % (item[0], repr(item[1])) print if __name__ == '__main__': dumpinfo() rst2pdf-0.93/rst2pdf/pdfbuilder.py0000664000175000017500000010757212000636202016760 0ustar ralsinaralsina# -*- coding: utf-8 -*- """ Sphinx rst2pdf builder extension ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Usage: 1. In conf.py add 'rst2pdf.pdfbuilder' element to 'extensions' list: extensions = ['rst2pdf.pdfbuilder'] 2. Modify your Makefile or run it with: $ sphinx-build -d_build/doctrees -bpdf . _build/pdf :copyright: Copyright 2009 Roberto Alsina, Wojtek Walczak :license: BSD, see LICENSE for details. """ import logging try: import parser except ImportError: # parser is not available on Jython parser = None import re import sys import os from os import path from os.path import abspath, dirname, expanduser, join from pprint import pprint from copy import copy, deepcopy from xml.sax.saxutils import unescape, escape from traceback import print_exc from cStringIO import StringIO from urlparse import urljoin, urlparse, urlunparse from pygments.lexers import get_lexer_by_name, guess_lexer from docutils import writers from docutils import nodes from docutils import languages from docutils.transforms.parts import Contents from docutils.io import FileOutput import docutils.core import sphinx from sphinx import addnodes from sphinx.builders import Builder from sphinx.util.console import darkgreen, red from sphinx.util import SEP from sphinx.util import ustrftime, texescape from sphinx.environment import NoUri from sphinx.locale import admonitionlabels, versionlabels if sphinx.__version__ >= '1.': from sphinx.locale import _ from rst2pdf import createpdf, pygments_code_block_directive, oddeven_directive from rst2pdf.log import log from rst2pdf.languages import get_language_available class PDFBuilder(Builder): name = 'pdf' out_suffix = '.pdf' def init(self): self.docnames = [] self.document_data = [] def write(self, *ignored): self.init_document_data() if self.config.pdf_verbosity > 1: log.setLevel(logging.DEBUG) elif self.config.pdf_verbosity > 0: log.setLevel(logging.INFO) for entry in self.document_data: try: docname, targetname, title, author = entry[:4] # Custom options per document if len(entry)>4 and isinstance(entry[4],dict): opts=entry[4] else: opts={} self.info("processing " + targetname + "... ", nonl=1) self.opts = opts class dummy: extensions=self.config.pdf_extensions createpdf.add_extensions(dummy()) self.page_template=opts.get('pdf_page_template',self.config.pdf_page_template) docwriter = PDFWriter(self, stylesheets=opts.get('pdf_stylesheets',self.config.pdf_stylesheets), language=opts.get('pdf_language',self.config.pdf_language), breaklevel=opts.get('pdf_break_level',self.config.pdf_break_level), breakside=opts.get('pdf_breakside',self.config.pdf_breakside), fontpath=opts.get('pdf_font_path',self.config.pdf_font_path), fitmode=opts.get('pdf_fit_mode',self.config.pdf_fit_mode), compressed=opts.get('pdf_compressed',self.config.pdf_compressed), inline_footnotes=opts.get('pdf_inline_footnotes',self.config.pdf_inline_footnotes), splittables=opts.get('pdf_splittables',self.config.pdf_splittables), default_dpi=opts.get('pdf_default_dpi',self.config.pdf_default_dpi), page_template=self.page_template, invariant=opts.get('pdf_invariant',self.config.pdf_invariant), real_footnotes=opts.get('pdf_real_footnotes',self.config.pdf_real_footnotes), use_toc=opts.get('pdf_use_toc',self.config.pdf_use_toc), toc_depth=opts.get('pdf_toc_depth',self.config.pdf_toc_depth), use_coverpage=opts.get('pdf_use_coverpage',self.config.pdf_use_coverpage), use_numbered_links=opts.get('pdf_use_numbered_links',self.config.pdf_use_numbered_links), fit_background_mode=opts.get('pdf_fit_background_mode',self.config.pdf_fit_background_mode), baseurl=opts.get('pdf_baseurl',self.config.pdf_baseurl), section_header_depth=opts.get('section_header_depth',self.config.section_header_depth), srcdir=self.srcdir, style_path=opts.get('pdf_style_path', self.config.pdf_style_path), config=self.config, ) tgt_file = path.join(self.outdir, targetname + self.out_suffix) destination = FileOutput(destination=open(tgt_file,'wb'), encoding='utf-8') doctree = self.assemble_doctree(docname,title,author, appendices=opts.get('pdf_appendices', self.config.pdf_appendices) or []) doctree.settings.author=author doctree.settings.title=title self.info("done") self.info("writing " + targetname + "... ", nonl=1) docwriter.write(doctree, destination) self.info("done") except Exception, e: log.error(str(e)) print_exc() self.info(red("FAILED")) def init_document_data(self): preliminary_document_data = map(list, self.config.pdf_documents) if not preliminary_document_data: self.warn('no "pdf_documents" config value found; no documents ' 'will be written') return # assign subdirs to titles self.titles = [] for entry in preliminary_document_data: docname = entry[0] if docname not in self.env.all_docs: self.warn('"pdf_documents" config value references unknown ' 'document %s' % docname) continue self.document_data.append(entry) if docname.endswith(SEP+'index'): docname = docname[:-5] self.titles.append((docname, entry[2])) def assemble_doctree(self, docname, title, author, appendices): # FIXME: use the new inline_all_trees from Sphinx. # check how the LaTeX builder does it. self.docnames = set([docname]) self.info(darkgreen(docname) + " ", nonl=1) def process_tree(docname, tree): tree = tree.deepcopy() for toctreenode in tree.traverse(addnodes.toctree): newnodes = [] includefiles = map(str, toctreenode['includefiles']) for includefile in includefiles: try: self.info(darkgreen(includefile) + " ", nonl=1) subtree = process_tree(includefile, self.env.get_doctree(includefile)) self.docnames.add(includefile) except Exception: self.warn('%s: toctree contains ref to nonexisting file %r'\ % (docname, includefile)) else: sof = addnodes.start_of_file(docname=includefile) sof.children = subtree.children newnodes.append(sof) toctreenode.parent.replace(toctreenode, newnodes) return tree tree = self.env.get_doctree(docname) tree = process_tree(docname, tree) self.docutils_languages = {} if self.config.language: self.docutils_languages[self.config.language] = \ get_language_available(self.config.language)[2] if self.opts.get('pdf_use_index',self.config.pdf_use_index): # Add index at the end of the document # This is a hack. create_index creates an index from # ALL the documents data, not just this one. # So, we preserve a copy, use just what we need, then # restore it. #from pudb import set_trace; set_trace() t=copy(self.env.indexentries) try: self.env.indexentries={docname:self.env.indexentries[docname+'-gen']} except KeyError: self.env.indexentries={} for dname in self.docnames: self.env.indexentries[dname]=t.get(dname,[]) genindex = self.env.create_index(self) self.env.indexentries=t # EOH (End Of Hack) if genindex: # No point in creating empty indexes index_nodes=genindex_nodes(genindex) tree.append(nodes.raw(text='OddPageBreak twoColumn', format='pdf')) tree.append(index_nodes) # This is stolen from the HTML builder's prepare_writing function self.domain_indices = [] # html_domain_indices can be False/True or a list of index names indices_config = self.config.pdf_domain_indices if indices_config and hasattr(self.env, 'domains'): for domain in self.env.domains.itervalues(): for indexcls in domain.indices: indexname = '%s-%s' % (domain.name, indexcls.name) if isinstance(indices_config, list): if indexname not in indices_config: continue # deprecated config value if indexname == 'py-modindex' and \ not self.config.pdf_use_modindex: continue content, collapse = indexcls(domain).generate() if content: self.domain_indices.append( (indexname, indexcls, content, collapse)) # self.domain_indices contains a list of indices to generate, like # this: # [('py-modindex', # , # [(u'p', [[u'parrot', 0, 'test', u'module-parrot', 'Unix, Windows', # '', 'Analyze and reanimate dead parrots.']])], True)] # Now this in the HTML builder is passed onto write_domain_indices. # We handle it right here for indexname, indexcls, content, collapse in self.domain_indices: indexcontext = dict( indextitle = indexcls.localname, content = content, collapse_index = collapse, ) # In HTML this is handled with a Jinja template, domainindex.html # We have to generate docutils stuff right here in the same way. self.info(' ' + indexname, nonl=1) print output=['DUMMY','=====','', '.. _modindex:\n\n'] t=indexcls.localname t+='\n'+'='*len(t)+'\n' output.append(t) for letter, entries in content: output.append('.. cssclass:: heading4\n\n%s\n\n'%letter) for (name, grouptype, page, anchor, extra, qualifier, description) in entries: if qualifier: q = '[%s]'%qualifier else: q = '' if extra: e = '(%s)'%extra else: e = '' output.append ('`%s <#%s>`_ %s %s'%(name, anchor, e, q)) output.append(' %s'%description) output.append('') dt = docutils.core.publish_doctree('\n'.join(output))[1:] dt.insert(0,nodes.raw(text='OddPageBreak twoColumn', format='pdf')) tree.extend(dt) if appendices: tree.append(nodes.raw(text='OddPageBreak %s'%self.page_template, format='pdf')) self.info() self.info('adding appendixes...', nonl=1) for docname in appendices: self.info(darkgreen(docname) + " ", nonl=1) appendix = self.env.get_doctree(docname) appendix['docname'] = docname tree.append(appendix) self.info('done') self.info() self.info("resolving references...") #print tree #print '--------------' self.env.resolve_references(tree, docname, self) #print tree for pendingnode in tree.traverse(addnodes.pending_xref): # This needs work, need to keep track of all targets # so I don't replace and create hanging refs, which # crash if pendingnode.get('reftarget',None) == 'genindex'\ and self.config.pdf_use_index: pendingnode.replace_self(nodes.reference(text=pendingnode.astext(), refuri=pendingnode['reftarget'])) # FIXME: probably need to handle dangling links to domain-specific indexes else: # FIXME: This is from the LaTeX builder and I still don't understand it # well, and doesn't seem to work # resolve :ref:s to distant tex files -- we can't add a cross-reference, # but append the document name docname = pendingnode['refdocname'] sectname = pendingnode['refsectname'] newnodes = [nodes.emphasis(sectname, sectname)] for subdir, title in self.titles: if docname.startswith(subdir): newnodes.append(nodes.Text(_(' (in '), _(' (in '))) newnodes.append(nodes.emphasis(title, title)) newnodes.append(nodes.Text(')', ')')) break else: pass pendingnode.replace_self(newnodes) #else: #pass return tree def get_target_uri(self, docname, typ=None): #print 'GTU',docname,typ # FIXME: production lists are not supported yet! if typ == 'token': # token references are always inside production lists and must be # replaced by \token{} in LaTeX return '@token' if docname not in self.docnames: # It can be a 'main' document: for doc in self.document_data: if doc[0]==docname: return "pdf:"+doc[1]+'.pdf' # It can be in some other document's toctree for indexname, toctree in self.env.toctree_includes.items(): if docname in toctree: for doc in self.document_data: if doc[0]==indexname: return "pdf:"+doc[1]+'.pdf' # No idea raise NoUri else: # Local link return "" def get_relative_uri(self, from_, to, typ=None): # ignore source path return self.get_target_uri(to, typ) def get_outdated_docs(self): for docname in self.env.found_docs: if docname not in self.env.all_docs: yield docname continue targetname = self.env.doc2path(docname, self.outdir, self.out_suffix) try: targetmtime = path.getmtime(targetname) except Exception: targetmtime = 0 try: srcmtime = path.getmtime(self.env.doc2path(docname)) if srcmtime > targetmtime: yield docname except EnvironmentError: # source doesn't exist anymore pass def genindex_nodes(genindexentries): indexlabel = _('Index') indexunder = '='*len(indexlabel) output=['DUMMY','=====','.. _genindex:\n\n',indexlabel,indexunder,''] for key, entries in genindexentries: #from pudb import set_trace; set_trace() output.append('.. cssclass:: heading4\n\n%s\n\n'%key) # initial for entryname, (links, subitems) in entries: if links: output.append('`%s <#%s>`_'%(entryname,nodes.make_id(links[0][1]))) for i,link in enumerate(links[1:]): output[-1]+=(' `[%s] <#%s>`_ '%(i+1,nodes.make_id(link[1]))) output.append('') else: output.append(entryname) if subitems: for subentryname, subentrylinks in subitems: if subentrylinks: output.append(' `%s <%s>`_'%(subentryname,subentrylinks[0])) for i,link in enumerate(subentrylinks[1:]): output[-1]+=(' `[%s] <%s>`_ '%(i+1,link)) output.append('') else: output.append(subentryname) output.append('') doctree = docutils.core.publish_doctree('\n'.join(output)) return doctree[1] class PDFContents(Contents): # Mostly copied from Docutils' Contents transformation def build_contents(self, node, level=0): level += 1 sections=[] # Replaced this with the for below to make it work for Sphinx # trees. #sections = [sect for sect in node if isinstance(sect, nodes.section)] for sect in node: if isinstance(sect,nodes.compound): for sect2 in sect: if isinstance(sect2,addnodes.start_of_file): for sect3 in sect2: if isinstance(sect3,nodes.section): sections.append(sect3) elif isinstance(sect, nodes.section): sections.append(sect) entries = [] autonum = 0 # FIXME: depth should be taken from :maxdepth: (Issue 320) depth = self.toc_depth for section in sections: title = section[0] auto = title.get('auto') # May be set by SectNum. entrytext = self.copy_and_filter(title) reference = nodes.reference('', '', refid=section['ids'][0], *entrytext) ref_id = self.document.set_id(reference) entry = nodes.paragraph('', '', reference) item = nodes.list_item('', entry) if ( self.backlinks in ('entry', 'top') and title.next_node(nodes.reference) is None): if self.backlinks == 'entry': title['refid'] = ref_id elif self.backlinks == 'top': title['refid'] = self.toc_id if level < depth: subsects = self.build_contents(section, level) item += subsects entries.append(item) if entries: contents = nodes.bullet_list('', *entries) if auto: contents['classes'].append('auto-toc') return contents else: return [] class PDFWriter(writers.Writer): def __init__(self, builder, stylesheets, language, breaklevel = 0, breakside = 'any', fontpath = [], fitmode = 'shrink', compressed = False, inline_footnotes = False, splittables = True, srcdir = '.', default_dpi = 300, page_template = 'cutePage', invariant = False, real_footnotes = False, use_toc = True, use_coverpage = True, toc_depth = 9999, use_numbered_links = False, fit_background_mode = "scale", section_header_depth = 2, baseurl = urlunparse(['file',os.getcwd()+os.sep,'','','','']), style_path = None, config = {}): writers.Writer.__init__(self) self.builder = builder self.output = '' self.stylesheets = stylesheets self.__language = language self.breaklevel = int(breaklevel) self.breakside = breakside self.fontpath = fontpath self.fitmode = fitmode self.compressed = compressed self.inline_footnotes = inline_footnotes self.splittables = splittables self.highlightlang = builder.config.highlight_language self.srcdir = srcdir self.config = config self.default_dpi = default_dpi self.page_template = page_template self.invariant=invariant self.real_footnotes=real_footnotes self.use_toc=use_toc self.use_coverpage=use_coverpage self.toc_depth=toc_depth self.use_numbered_links=use_numbered_links self.fit_background_mode=fit_background_mode self.section_header_depth=section_header_depth self.baseurl = baseurl if hasattr(sys, 'frozen'): self.PATH = abspath(dirname(sys.executable)) else: self.PATH = abspath(dirname(__file__)) if style_path: self.style_path = style_path else: self.style_path = [self.srcdir] supported = ('pdf') config_section = 'pdf writer' config_section_dependencies = ('writers',) def translate(self): visitor = PDFTranslator(self.document, self.builder) self.document.walkabout(visitor) lang = self.config.language or 'en' langmod = get_language_available(lang)[2] self.docutils_languages = {lang: langmod} # Generate Contents topic manually if self.use_toc: contents=nodes.topic(classes=['contents']) contents+=nodes.title('') contents[0]+=nodes.Text(langmod.labels['contents']) contents['ids']=['Contents'] pending=nodes.topic() contents.append(pending) pending.details={} self.document.insert(0,nodes.raw(text='SetPageCounter 1 arabic', format='pdf')) self.document.insert(0,nodes.raw(text='OddPageBreak %s'%self.page_template, format='pdf')) self.document.insert(0,contents) self.document.insert(0,nodes.raw(text='SetPageCounter 1 lowerroman', format='pdf')) contTrans=PDFContents(self.document) contTrans.toc_depth = self.toc_depth contTrans.startnode=pending contTrans.apply() if self.use_coverpage: # Generate cover page # FIXME: duplicate from createpdf, refactor! # Find cover template, save it in cover_file def find_cover(name): cover_path=[self.srcdir, os.path.expanduser('~/.rst2pdf'), os.path.join(self.PATH,'templates')] # Add the Sphinx template paths def add_template_path(path): return os.path.join(self.srcdir, path) cover_path.extend(map(add_template_path, self.config.templates_path)) cover_file=None for d in cover_path: if os.path.exists(os.path.join(d,name)): cover_file=os.path.join(d,name) break return cover_file cover_file=find_cover(self.config.pdf_cover_template) if cover_file is None: log.error("Can't find cover template %s, using default"%self.custom_cover) cover_file=find_cover('sphinxcover.tmpl') # This is what's used in the python docs because # Latex does a manual linebreak. This sucks. authors=self.document.settings.author.split('\\') # Feed data to the template, get restructured text. cover_text = createpdf.renderTemplate(tname=cover_file, title=self.document.settings.title or visitor.elements['title'], subtitle='%s %s'%(_('version'),self.config.version), authors=authors, date=ustrftime(self.config.today_fmt or _('%B %d, %Y')) ) cover_tree = docutils.core.publish_doctree(cover_text) self.document.insert(0, cover_tree) sio=StringIO() if self.invariant: createpdf.patch_PDFDate() createpdf.patch_digester() createpdf.RstToPdf(sphinx=True, stylesheets=self.stylesheets, language=self.__language, breaklevel=self.breaklevel, breakside=self.breakside, fit_mode=self.fitmode, font_path=self.fontpath, inline_footnotes=self.inline_footnotes, highlightlang=self.highlightlang, splittables=self.splittables, style_path=self.style_path, basedir=self.srcdir, def_dpi=self.default_dpi, real_footnotes=self.real_footnotes, numbered_links=self.use_numbered_links, background_fit_mode=self.fit_background_mode, baseurl=self.baseurl, section_header_depth=self.section_header_depth ).createPdf(doctree=self.document, output=sio, compressed=self.compressed) self.output=sio.getvalue() def supports(self, format): """This writer supports all format-specific elements.""" return 1 class PDFTranslator(nodes.SparseNodeVisitor): def __init__(self, document, builder): nodes.NodeVisitor.__init__(self, document) self.builder = builder self.footnotestack = [] self.curfilestack = [] self.highlightlinenothreshold = 999999 self.top_sectionlevel = 1 self.footnotecounter=1 self.curfile=None self.footnotedict={} self.this_is_the_title = True self.in_title = 0 self.elements = { 'title': document.settings.title, } self.highlightlang = builder.config.highlight_language def visit_document(self,node): self.curfilestack.append(node.get('docname', '')) self.footnotestack.append('') def visit_start_of_file(self,node): self.curfilestack.append(node['docname']) self.footnotestack.append(node['docname']) def depart_start_of_file(self,node): self.footnotestack.pop() self.curfilestack.pop() def visit_highlightlang(self, node): self.highlightlang = node['lang'] self.highlightlinenothreshold = node['linenothreshold'] raise nodes.SkipNode def visit_versionmodified(self, node): text = versionlabels[node['type']] % node['version'] if len(node): text += ': ' else: text += '.' replacement=nodes.paragraph() replacement+=nodes.Text(text) replacement.extend(node.children) node.parent.replace(node,replacement) def depart_versionmodified(self, node): pass def visit_literal_block(self, node): if 'code' in node['classes']: #Probably a processed code-block pass else: lang=lang_for_block(node.astext(),node.get('language',self.highlightlang)) content = node.astext().splitlines() if len(content) > self.highlightlinenothreshold or\ node.get('linenos',False): options = { 'linenos': True } else: options = {} # FIXME: make tab width configurable content = [c.replace('\t',' ') for c in content] replacement = nodes.literal_block() replacement.children = \ pygments_code_block_directive.code_block_directive( name = None, arguments = [lang], options = options, content = content, lineno = False, content_offset = None, block_text = None, state = None, state_machine = None, ) node.parent.replace(node,replacement) def visit_footnote(self, node): node['backrefs']=[ '%s_%s'%(self.footnotestack[-1],x) for x in node['backrefs']] node['ids']=[ '%s_%s'%(self.footnotestack[-1],x) for x in node['ids']] node.children[0][0]=nodes.Text(str(self.footnotecounter)) for id in node['backrefs']: fnr=self.footnotedict[id] fnr.children[0]=nodes.Text(str(self.footnotecounter)) self.footnotecounter+=1 def visit_footnote_reference(self, node): node['ids']=[ '%s_%s'%(self.footnotestack[-1],x) for x in node['ids']] node['refid']='%s_%s'%(self.footnotestack[-1],node['refid']) self.footnotedict[node['ids'][0]]=node def visit_desc_annotation(self, node): pass def depart_desc_annotation(self, node): pass # This is for graphviz support def visit_graphviz(self, node): # Not neat, but I need to send self to my handlers node['builder']=self def visit_Aanode(self, node): pass def depart_Aanode(self, node): pass def visit_productionlist(self, node): replacement=nodes.literal_block(classes=["code"]) names = [] for production in node: names.append(production['tokenname']) maxlen = max(len(name) for name in names) for production in node: if production['tokenname']: lastname = production['tokenname'].ljust(maxlen) n=nodes.strong() n+=nodes.Text(lastname) replacement+=n replacement+=nodes.Text(' ::= ') else: replacement+=nodes.Text('%s ' % (' '*len(lastname))) production.walkabout(self) replacement.children.extend(production.children) replacement+=nodes.Text('\n') node.parent.replace(node,replacement) raise nodes.SkipNode def depart_productionlist(self, node): pass def visit_production(self, node): pass def depart_production(self, node): pass def visit_OddEvenNode(self, node): pass def depart_OddEvenNode(self, node): pass # This is copied from sphinx.highlighting def lang_for_block(source,lang): if lang in ('py', 'python'): if source.startswith('>>>'): # interactive session return 'pycon' else: # maybe Python -- try parsing it if try_parse(source): return 'python' else: # Guess return lang_for_block(source,'guess') elif lang in ('python3', 'py3') and source.startswith('>>>'): # for py3, recognize interactive sessions, but do not try parsing... return 'pycon3' elif lang == 'guess': try: #return 'python' lexer=guess_lexer(source) return lexer.aliases[0] except Exception: return None else: return lang def try_parse(src): # Make sure it ends in a newline src += '\n' # Replace "..." by a mark which is also a valid python expression # (Note, the highlighter gets the original source, this is only done # to allow "..." in code and still highlight it as Python code.) mark = "__highlighting__ellipsis__" src = src.replace("...", mark) # lines beginning with "..." are probably placeholders for suite src = re.sub(r"(?m)^(\s*)" + mark + "(.)", r"\1"+ mark + r"# \2", src) # if we're using 2.5, use the with statement if sys.version_info >= (2, 5): src = 'from __future__ import with_statement\n' + src if isinstance(src, unicode): # Non-ASCII chars will only occur in string literals # and comments. If we wanted to give them to the parser # correctly, we'd have to find out the correct source # encoding. Since it may not even be given in a snippet, # just replace all non-ASCII characters. src = src.encode('ascii', 'replace') if parser is None: return True try: parser.suite(src) except SyntaxError, UnicodeEncodeError: return False else: return True def init_math(app): """ This is a dummy math extension. It's a hack, but if you want math in a PDF via pdfbuilder, and don't want to enable pngmath or jsmath, then enable this one. :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ from sphinx.errors import SphinxError try: # Sphinx 0.6.4 and later from sphinx.ext.mathbase import setup_math as mathbase_setup except ImportError: try: # Sphinx 0.6.3 from sphinx.ext.mathbase import setup as mathbase_setup except ImportError, e: log.error('Error importing sphinx math extension: %s', e) class MathExtError(SphinxError): category = 'Math extension error' def html_visit_math(self, node): self.body.append(node['latex']) raise nodes.SkipNode def html_visit_displaymath(self, node): self.body.append(node['latex']) raise nodes.SkipNode mathbase_setup(app, (html_visit_math, None), (html_visit_displaymath, None)) def setup(app): #Init dummy math extension init_math(app) app.add_builder(PDFBuilder) # PDF options app.add_config_value('pdf_documents', [], None) app.add_config_value('pdf_stylesheets', ['sphinx'], None) app.add_config_value('pdf_style_path', None, None) app.add_config_value('pdf_compressed', False, None) app.add_config_value('pdf_font_path', [], None) app.add_config_value('pdf_language', 'en_US', None) app.add_config_value('pdf_fit_mode', '', None), app.add_config_value('pdf_break_level', 0, None) app.add_config_value('pdf_inline_footnotes', True, None) app.add_config_value('pdf_verbosity', 0, None) app.add_config_value('pdf_use_index', True, None) app.add_config_value('pdf_domain_indices', True, None) app.add_config_value('pdf_use_modindex', True, None) app.add_config_value('pdf_use_coverpage', True, None) app.add_config_value('pdf_cover_template', 'sphinxcover.tmpl', None) app.add_config_value('pdf_appendices', [], None) app.add_config_value('pdf_splittables', True, None) app.add_config_value('pdf_breakside', 'odd', None) app.add_config_value('pdf_default_dpi', 300, None) app.add_config_value('pdf_extensions',['vectorpdf'], None) app.add_config_value('pdf_page_template','cutePage', None) app.add_config_value('pdf_invariant','False', None) app.add_config_value('pdf_real_footnotes','False', None) app.add_config_value('pdf_use_toc','True', None) app.add_config_value('pdf_toc_depth',9999, None) app.add_config_value('pdf_use_numbered_links',False, None) app.add_config_value('pdf_fit_background_mode',"scale", None) app.add_config_value('section_header_depth',2, None) app.add_config_value('pdf_baseurl', urlunparse(['file',os.getcwd()+os.sep,'','','','']), None) author_texescaped = unicode(app.config.copyright)\ .translate(texescape.tex_escape_map) project_doc_texescaped = unicode(app.config.project + ' Documentation')\ .translate(texescape.tex_escape_map) app.config.pdf_documents.append((app.config.master_doc, app.config.project, project_doc_texescaped, author_texescaped, 'manual')) rst2pdf-0.93/rst2pdf/createpdf.py0000664000175000017500000017552112062712200016575 0ustar ralsinaralsina# -*- coding: utf-8 -*- #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/createpdf.py $ #$Date: 2012-12-14 18:05:04 -0300 (Fri, 14 Dec 2012) $ #$Revision: 2624 $ # See LICENSE.txt for licensing terms # Some fragments of code are copied from Reportlab under this license: # ##################################################################################### # # Copyright (c) 2000-2008, ReportLab Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # * Neither the name of the company nor the names of its contributors may be # used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE OFFICERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ##################################################################################### __docformat__ = 'reStructuredText' # Import Psyco if available from opt_imports import psyco psyco.full() import sys import os import tempfile import re import string import config import logging from cStringIO import StringIO from os.path import abspath, dirname, expanduser, join from urlparse import urljoin, urlparse, urlunparse from copy import copy, deepcopy from optparse import OptionParser from pprint import pprint from xml.sax.saxutils import unescape, escape import docutils.readers.doctree import docutils.core import docutils.nodes from docutils.parsers.rst import directives from docutils.readers import standalone from docutils.transforms import Transform try: from roman import toRoman except ImportError: from docutils.utils.roman import toRoman from reportlab.platypus import * from reportlab.platypus.doctemplate import IndexingFlowable from reportlab.platypus.flowables import _listWrapOn, _Container from reportlab.pdfbase.pdfdoc import PDFPageLabel #from reportlab.lib.enums import * #from reportlab.lib.units import * #from reportlab.lib.pagesizes import * from rst2pdf import counter_role, oddeven_directive from rst2pdf import pygments_code_block_directive # code-block directive from rst2pdf import flowables from rst2pdf.flowables import * # our own reportlab flowables from rst2pdf.sinker import Sinker from rst2pdf.image import MyImage, missing from rst2pdf.aafigure_directive import Aanode from rst2pdf.log import log, nodeid from rst2pdf.smartypants import smartyPants from rst2pdf import styles as sty from rst2pdf.nodehandlers import nodehandlers from rst2pdf.languages import get_language_available from rst2pdf.opt_imports import Paragraph, BaseHyphenator, PyHyphenHyphenator, \ DCWHyphenator, sphinx as sphinx_module, wordaxe # Small template engine for covers # The obvious import doesn't work for complicated reasons ;-) from rst2pdf import tenjin to_str = tenjin.helpers.generate_tostrfunc('utf-8') escape = tenjin.helpers.escape templateEngine = tenjin.Engine() def renderTemplate(tname, **context): context['to_str'] = to_str context['escape'] = escape return templateEngine.render(tname, context) #def escape (x,y): # "Dummy escape function to test for excessive escaping" # return x numberingstyles={ 'arabic': 'ARABIC', 'roman': 'ROMAN_UPPER', 'lowerroman': 'ROMAN_LOWER', 'alpha': 'LETTERS_UPPER', 'loweralpha': 'LETTERS_LOWER' } class RstToPdf(object): def __init__(self, stylesheets=[], language='en_US', header=None, footer=None, inlinelinks=False, breaklevel=1, font_path=[], style_path=[], fit_mode='shrink', background_fit_mode='center', sphinx=False, smarty='0', baseurl=None, repeat_table_rows=False, footnote_backlinks=True, inline_footnotes=False, real_footnotes=False, def_dpi=300, show_frame=False, highlightlang='python', # this one is only used by Sphinx basedir=os.getcwd(), splittables=False, blank_first_page=False, first_page_on_right=False, breakside='odd', custom_cover='cover.tmpl', floating_images=False, numbered_links=False, section_header_depth=2, raw_html=False, strip_elements_with_classes=[] ): self.debugLinesPdf=False self.depth=0 self.breakside=breakside self.first_page_on_right=first_page_on_right self.blank_first_page=blank_first_page self.splittables=splittables self.basedir=basedir self.language, self.docutils_language = get_language_available( language)[:2] self.doc_title = "" self.doc_title_clean = "" self.doc_subtitle = "" self.doc_author = "" self.header = header self.footer = footer self.custom_cover=custom_cover self.floating_images=floating_images self.decoration = {'header': header, 'footer': footer, 'endnotes': [], 'extraflowables':[]} # find base path if hasattr(sys, 'frozen'): self.PATH = abspath(dirname(sys.executable)) else: self.PATH = abspath(dirname(__file__)) self.font_path=font_path self.style_path=style_path self.def_dpi=def_dpi self.loadStyles(stylesheets) self.docutils_languages = {} self.inlinelinks = inlinelinks self.breaklevel = breaklevel self.fit_mode = fit_mode self.background_fit_mode = background_fit_mode self.to_unlink = [] self.smarty = smarty self.baseurl = baseurl self.repeat_table_rows = repeat_table_rows self.footnote_backlinks = footnote_backlinks self.inline_footnotes = inline_footnotes self.real_footnotes = real_footnotes # Real footnotes are always a two-pass thing. if self.real_footnotes: self.mustMultiBuild = True self.def_dpi = def_dpi self.show_frame = show_frame self.numbered_links = numbered_links self.section_header_depth = section_header_depth self.img_dir = os.path.join(self.PATH, 'images') self.raw_html = raw_html self.strip_elements_with_classes = strip_elements_with_classes # Sorry about this, but importing sphinx.roles makes some # ordinary documents fail (demo.txt specifically) so # I can' t just try to import it outside. I need # to do it only if it's requested if sphinx and sphinx_module: import sphinx.roles from sphinxnodes import sphinxhandlers self.highlightlang = highlightlang self.gen_pdftext, self.gen_elements = sphinxhandlers(self) else: # These rst2pdf extensions conflict with sphinx directives.register_directive('code-block', pygments_code_block_directive.code_block_directive) directives.register_directive('code', pygments_code_block_directive.code_block_directive) import math_directive self.gen_pdftext, self.gen_elements = nodehandlers(self) self.sphinx = sphinx if not self.styles.languages: self.styles.languages=[] if self.language: self.styles.languages.append(self.language) self.styles['bodytext'].language = self.language else: self.styles.languages.append('en_US') self.styles['bodytext'].language = 'en_US' # Load the docutils language modules for all required languages for lang in self.styles.languages: self.docutils_languages[lang] = get_language_available(lang)[2] # Load the hyphenators for all required languages if wordaxe is not None: for lang in self.styles.languages: if lang.split('_', 1)[0] == 'de': try: wordaxe.hyphRegistry[lang] = DCWHyphenator('de', 5) continue except Exception: # hyphenators may not always be available or crash, # e.g. wordaxe issue 2809074 (http://is.gd/16lqs) log.warning("Can't load wordaxe DCW hyphenator" " for German language, trying Py hyphenator instead") else: continue try: wordaxe.hyphRegistry[lang] = PyHyphenHyphenator(lang) except Exception: log.warning("Can't load wordaxe Py hyphenator" " for language %s, trying base hyphenator", lang) else: continue try: wordaxe.hyphRegistry[lang] = BaseHyphenator(lang) except Exception: log.warning("Can't even load wordaxe base hyphenator") log.info('hyphenation by default in %s , loaded %s', self.styles['bodytext'].language, ','.join(self.styles.languages)) self.pending_targets=[] self.targets=[] def loadStyles(self, styleSheets=None ): if styleSheets is None: styleSheets=[] self.styles = sty.StyleSheet(styleSheets, self.font_path, self.style_path, def_dpi=self.def_dpi) def style_language(self, style): """Return language corresponding to this style.""" try: return style.language except AttributeError: pass try: return self.styles['bodytext'].language except AttributeError: # FIXME: this is pretty arbitrary, and will # probably not do what you want. # however, it should only happen if: # * You specified the language of a style # * Have no wordaxe installed. # Since it only affects hyphenation, and wordaxe is # not installed, t should have no effect whatsoever return os.environ['LANG'] or 'en' def text_for_label(self, label, style): """Translate text for label.""" try: text = self.docutils_languages[ self.style_language(style)].labels[label] except KeyError: text = label.capitalize() return text def text_for_bib_field(self, field, style): """Translate text for bibliographic fields.""" try: text = self.docutils_languages[ self.style_language(style)].bibliographic_fields[field] except KeyError: text = field return text + ":" def author_separator(self, style): """Return separator string for authors.""" try: sep = self.docutils_languages[ self.style_language(style)].author_separators[0] except KeyError: sep = ';' return sep + " " def styleToTags(self, style): '''Takes a style name, returns a pair of opening/closing tags for it, like "". Used for inline nodes (custom interpreted roles)''' try: s = self.styles[style] r1=['') r2=[''] if s.strike: r1.append('') r2.insert(0,'') if s.underline: r1.append('') r2.insert(0,'') return [''.join(r1), ''.join(r2)] except KeyError: log.warning('Unknown class %s', style) return None def styleToFont(self, style): '''Takes a style name, returns a font tag for it, like "". Used for inline nodes (custom interpreted roles)''' try: s = self.styles[style] r=['') return ''.join(r) except KeyError: log.warning('Unknown class %s', style) return None def gather_pdftext(self, node, replaceEnt=True): return ''.join([self.gen_pdftext(n, replaceEnt) for n in node.children]) def gather_elements(self, node, style=None): if style is None: style = self.styles.styleForNode(node) r = [] if 'float' in style.__dict__: style = None # Don't pass floating styles to children! for n in node.children: # import pdb; pdb.set_trace() r.extend(self.gen_elements(n, style=style)) return r def bullet_for_node(self, node): """Takes a node, assumes it's some sort of item whose parent is a list, and returns the bullet text it should have""" b = "" t = 'item' if node.parent.get('start'): start = int(node.parent.get('start')) else: start = 1 if node.parent.get('bullet') or isinstance( node.parent, docutils.nodes.bullet_list): b = node.parent.get('bullet', '*') if b == "None": b = "" t = 'bullet' elif node.parent.get('enumtype') == 'arabic': b = str(node.parent.children.index(node) + start) + '.' elif node.parent.get('enumtype') == 'lowerroman': b = toRoman(node.parent.children.index(node) + start).lower() + '.' elif node.parent.get('enumtype') == 'upperroman': b = toRoman(node.parent.children.index(node) + start).upper() + '.' elif node.parent.get('enumtype') == 'loweralpha': b = string.lowercase[node.parent.children.index(node) + start - 1] + '.' elif node.parent.get('enumtype') == 'upperalpha': b = string.uppercase[node.parent.children.index(node) + start - 1] + '.' else: log.critical("Unknown kind of list_item %s [%s]", node.parent, nodeid(node)) return b, t def filltable(self, rows): """ Takes a list of rows, consisting of cells and performs the following fixes: * For multicolumn cells, add continuation cells, to make all rows the same size. These cells have to be multirow if the original cell is multirow. * For multirow cell, insert continuation cells, to make all columns the same size. * If there are still shorter rows, add empty cells at the end (ReST quirk) * Once the table is *normalized*, create spans list, fitting for reportlab's Table class. """ # If there is a multicol cell, we need to insert Continuation Cells # to make all rows the same length #from pudb import set_trace; set_trace() for y in range(0, len(rows)): for x in range(len(rows[y])-1, -1, -1): cell = rows[y][x] if isinstance(cell, str): continue if cell.get("morecols"): for i in range(0, cell.get("morecols")): e=docutils.nodes.entry("") e["morerows"] = cell.get("morerows",0) rows[y].insert(x + 1, e) for y in range(0, len(rows)): for x in range(0, len(rows[y])): cell = rows[y][x] if isinstance(cell, str): continue if cell.get("morerows"): for i in range(0, cell.get("morerows")): rows[y + i + 1].insert(x, "") # If a row is shorter, add empty cells at the right end maxw = max([len(r) for r in rows]) for r in rows: while len(r) < maxw: r.append("") # Create spans list for reportlab's table style spans = [] for y in range(0, len(rows)): for x in range(0, len(rows[y])): cell = rows[y][x] if isinstance(cell, str): continue if cell.get("morecols"): mc = cell.get("morecols") else: mc = 0 if cell.get("morerows"): mr = cell.get("morerows") else: mr = 0 if mc or mr: spans.append(('SPAN', (x, y), (x + mc, y + mr))) return spans def PreformattedFit(self, text, style): """Preformatted section that gets horizontally compressed if needed.""" # Pass a ridiculous size, then it will shrink to what's available # in the frame return BoundByWidth(2000*cm, content=[XXPreformatted(text, style)], mode=self.fit_mode, style=style) def createPdf(self, text=None, source_path=None, output=None, doctree=None, compressed=False, # This adds entries to the PDF TOC # matching the rst source lines debugLinesPdf=False): """Create a PDF from text (ReST input), or doctree (docutil nodes) and save it in outfile. If outfile is a string, it's a filename. If it's something with a write method, (like a StringIO, or a file object), the data is saved there. """ self.decoration = {'header': self.header, 'footer': self.footer, 'endnotes': [], 'extraflowables': []} self.pending_targets=[] self.targets=[] self.debugLinesPdf = debugLinesPdf if doctree is None: if text is not None: if self.language: settings_overrides={'language_code': self.docutils_language} else: settings_overrides={} settings_overrides['strip_elements_with_classes']=self.strip_elements_with_classes self.doctree = docutils.core.publish_doctree(text, source_path=source_path, settings_overrides=settings_overrides) #import pdb; pdb.set_trace() log.debug(self.doctree) else: log.error('Error: createPdf needs a text or a doctree') return else: self.doctree = doctree if self.numbered_links: # Transform all links to sections so they show numbers from sectnumlinks import SectNumFolder, SectRefExpander snf = SectNumFolder(self.doctree) self.doctree.walk(snf) srf = SectRefExpander(self.doctree, snf.sectnums) self.doctree.walk(srf) if self.strip_elements_with_classes: from docutils.transforms.universal import StripClassesAndElements sce = StripClassesAndElements(self.doctree) sce.apply() elements = self.gen_elements(self.doctree) # Find cover template, save it in cover_file def find_cover(name): cover_path=[self.basedir, os.path.expanduser('~/.rst2pdf'), os.path.join(self.PATH,'templates')] cover_file=None for d in cover_path: if os.path.exists(os.path.join(d,name)): cover_file=os.path.join(d,name) break return cover_file cover_file=find_cover(self.custom_cover) if cover_file is None: log.error("Can't find cover template %s, using default"%self.custom_cover) cover_file=find_cover('cover.tmpl') # Feed data to the template, get restructured text. cover_text = renderTemplate(tname=cover_file, title=self.doc_title, subtitle=self.doc_subtitle ) # This crashes sphinx because .. class:: in sphinx is # something else. Ergo, pdfbuilder does it in its own way. if not self.sphinx: elements = self.gen_elements( publish_secondary_doctree(cover_text, self.doctree, source_path)) + elements if self.blank_first_page: elements.insert(0,PageBreak()) # Put the endnotes at the end ;-) endnotes = self.decoration['endnotes'] if endnotes: elements.append(MySpacer(1, 2*cm)) elements.append(Separation()) for n in self.decoration['endnotes']: t_style = TableStyle(self.styles['endnote'].commands) colWidths = self.styles['endnote'].colWidths elements.append(DelayedTable([[n[0], n[1]]], style=t_style, colWidths=colWidths)) if self.floating_images: #from pudb import set_trace; set_trace() # Handle images with alignment more like in HTML new_elem=[] for i,e in enumerate(elements[::-1]): if (isinstance (e, MyImage) and e.image.hAlign != 'CENTER' and new_elem): # This is an image where flowables should wrap # around it popped=new_elem.pop() new_elem.append(ImageAndFlowables(e,popped, imageSide=e.image.hAlign.lower())) else: new_elem.append(e) elements = new_elem elements.reverse() head = self.decoration['header'] foot = self.decoration['footer'] # So, now, create the FancyPage with the right sizes and elements FP = FancyPage("fancypage", head, foot, self) def cleantags(s): re.sub(r'<[^>]*?>', '', unicode(s).strip()) pdfdoc = FancyDocTemplate( output, pageTemplates=[FP], showBoundary=0, pagesize=self.styles.ps, title=self.doc_title_clean, author=self.doc_author, pageCompression=compressed) pdfdoc.client =self if getattr(self, 'mustMultiBuild', False): # Force a multibuild pass if not isinstance(elements[-1],UnhappyOnce): log.info ('Forcing second pass so Total pages work') elements.append(UnhappyOnce()) while True: try: log.info("Starting build") # See if this *must* be multipass pdfdoc.multiBuild(elements) # Force a multibuild pass # FIXME: since mustMultiBuild is set by the # first pass in the case of ###Total###, then we # make a new forced two-pass build. This is broken. # conceptually. if getattr(self, 'mustMultiBuild', False): # Force a multibuild pass if not isinstance(elements[-1],UnhappyOnce): log.info ('Forcing second pass so Total pages work') elements.append(UnhappyOnce()) continue ## Rearrange footnotes if needed if self.real_footnotes: newStory=[] fnPile=[] for e in elements: if getattr(e,'isFootnote',False): # Add it to the pile #if not isinstance (e, MySpacer): fnPile.append(e) elif getattr(e, '_atTop', False) or isinstance( e, (UnhappyOnce, MyPageBreak)): if fnPile: fnPile.insert(0, Separation()) newStory.append(Sinker(fnPile)) newStory.append(e) fnPile=[] else: newStory.append(e) elements = newStory+fnPile for e in elements: if hasattr(e, '_postponed'): delattr(e,'_postponed') self.real_footnotes = False continue break except ValueError, v: # FIXME: cross-document links come through here, which means # an extra pass per cross-document reference. Which sucks. #if v.args and str(v.args[0]).startswith('format not resolved'): #missing=str(v.args[0]).split(' ')[-1] #log.error('Adding missing reference to %s and rebuilding. This is slow!'%missing) #elements.append(Reference(missing)) #for e in elements: #if hasattr(e,'_postponed'): #delattr(e,'_postponed') #else: #raise raise #doc = SimpleDocTemplate("phello.pdf") #doc.build(elements) for fn in self.to_unlink: try: os.unlink(fn) except OSError: pass from reportlab.platypus import doctemplate class FancyDocTemplate(BaseDocTemplate): def afterFlowable(self, flowable): if isinstance(flowable, Heading): # Notify TOC entry for headings/abstracts/dedications. level, text = flowable.level, flowable.text parent_id = flowable.parent_id node = flowable.node pagenum = setPageCounter() self.notify('TOCEntry', (level, text, pagenum, parent_id, node)) def handle_flowable(self,flowables): '''try to handle one flowable from the front of list flowables.''' # this method is copied from reportlab #allow document a chance to look at, modify or ignore #the object(s) about to be processed self.filterFlowables(flowables) self.handle_breakBefore(flowables) self.handle_keepWithNext(flowables) f = flowables[0] del flowables[0] if f is None: return if isinstance(f,PageBreak): if isinstance(f,SlowPageBreak): self.handle_pageBreak(slow=1) else: self.handle_pageBreak() self.afterFlowable(f) elif isinstance(f,ActionFlowable): f.apply(self) self.afterFlowable(f) else: frame = self.frame canv = self.canv #try to fit it then draw it if frame.add(f, canv, trySplit=self.allowSplitting): if not isinstance(f,FrameActionFlowable): self._curPageFlowableCount += 1 self.afterFlowable(f) doctemplate._addGeneratedContent(flowables,frame) else: if self.allowSplitting: # see if this is a splittable thing S = frame.split(f,canv) n = len(S) else: n = 0 if n: if not isinstance(S[0],(PageBreak,SlowPageBreak,ActionFlowable)): if frame.add(S[0], canv, trySplit=0): self._curPageFlowableCount += 1 self.afterFlowable(S[0]) doctemplate._addGeneratedContent(flowables,frame) else: ident = "Splitting error(n==%d) on page %d in\n%s" % ( n, self.page, self._fIdent(f, 60, frame)) #leave to keep apart from the raise raise LayoutError(ident) del S[0] for i,f in enumerate(S): flowables.insert(i,f) # put split flowables back on the list else: if hasattr(f,'_postponed') and f._postponed > 4: ident = "Flowable %s%s too large on page %d in frame %r%s of template %r" % ( self._fIdent(f, 60, frame), doctemplate._fSizeString(f),self.page, self.frame.id, self.frame._aSpaceString(), self.pageTemplate.id) #leave to keep apart from the raise raise LayoutError(ident) # this ought to be cleared when they are finally drawn! f._postponed = 1 mbe = getattr(self, '_multiBuildEdits', None) if mbe: mbe((delattr, f, '_postponed')) flowables.insert(0, f) # put the flowable back self.handle_frameEnd() _counter=0 _counterStyle='arabic' class PageCounter(Flowable): def __init__(self, number=0, style='arabic'): self.style=str(style).lower() self.number=int(number) Flowable.__init__(self) def wrap(self, availWidth, availHeight): global _counter, _counterStyle _counterStyle=self.style _counter=self.number return (self.width, self.height) def drawOn(self, canvas, x, y, _sW): pass flowables.PageCounter = PageCounter def setPageCounter(counter=None, style=None): global _counter, _counterStyle if counter is not None: _counter = counter if style is not None: _counterStyle = style if _counterStyle=='lowerroman': ptext=toRoman(_counter).lower() elif _counterStyle=='roman': ptext=toRoman(_counter).upper() elif _counterStyle=='alpha': ptext=string.uppercase[_counter%26] elif _counterStyle=='loweralpha': ptext=string.lowercase[_counter%26] else: ptext=unicode(_counter) return ptext class MyContainer(_Container, Flowable): pass class UnhappyOnce(IndexingFlowable): '''An indexing flowable that is only unsatisfied once. If added to a story, it will make multiBuild run at least two passes. Useful for ###Total###''' _unhappy=True def isSatisfied(self): if self._unhappy: self._unhappy= False return False return True def draw(self): pass class HeaderOrFooter(object): """ A helper object for FancyPage (below) HeaderOrFooter handles operations which are common to both headers and footers """ def __init__(self, items=None, isfooter=False, client=None): self.items = items if isfooter: locinfo = 'footer showFooter defaultFooter footerSeparator' else: locinfo = 'header showHeader defaultHeader headerSeparator' self.isfooter = isfooter self.loc, self.showloc, self.defaultloc, self.addsep = locinfo.split() self.totalpages = 0 self.client = client def prepare(self, pageobj, canv, doc): showloc = pageobj.template.get(self.showloc, True) height = 0 items = self.items if showloc: if not items: items = pageobj.template.get(self.defaultloc) if items: items = self.client.gen_elements(publish_secondary_doctree(items, self.client.doctree, None)) if items: if isinstance(items, list): items = items[:] else: items = [Paragraph(items, pageobj.styles[self.loc])] addsep = pageobj.template.get(self.addsep, False) if addsep: if self.isfooter: items.insert(0, Separation()) else: items.append(Separation()) _, height = _listWrapOn(items, pageobj.tw, canv) self.prepared = height and items return height def replaceTokens(self, elems, canv, doc, smarty): """Put doc_title/page number/etc in text of header/footer.""" # Make sure page counter is up to date pnum=setPageCounter() def replace(text): if not isinstance(text, unicode): try: text = unicode(text, e.encoding) except AttributeError: text = unicode(text, 'utf-8') except TypeError: text = unicode(text, 'utf-8') text = text.replace(u'###Page###', pnum) if '###Total###' in text: text = text.replace(u'###Total###', str(self.totalpages)) self.client.mustMultiBuild=True text = text.replace(u"###Title###", doc.title) text = text.replace(u"###Section###", getattr(canv, 'sectName', '')) text = text.replace(u"###SectNum###", getattr(canv, 'sectNum', '')) text = smartyPants(text, smarty) return text for i,e in enumerate(elems): # TODO: implement a search/replace for arbitrary things if isinstance(e, Paragraph): text = replace(e.text) elems[i] = Paragraph(text, e.style) elif isinstance(e, DelayedTable): data=deepcopy(e.data) for r,row in enumerate(data): for c,cell in enumerate(row): if isinstance (cell, list): data[r][c]=self.replaceTokens(cell, canv, doc, smarty) else: row[r]=self.replaceTokens([cell,], canv, doc, smarty)[0] elems[i]=DelayedTable(data, e._colWidths, e.style) elif isinstance(e, BoundByWidth): for index, item in enumerate(e.content): if isinstance(item, Paragraph): e.content[index] = Paragraph(replace(item.text), item.style) elems[i] = e elif isinstance(e, OddEven): odd=self.replaceTokens([e.odd,], canv, doc, smarty)[0] even=self.replaceTokens([e.even,], canv, doc, smarty)[0] elems[i]=OddEven(odd, even) return elems def draw(self, pageobj, canv, doc, x, y, width, height): self.totalpages = max(self.totalpages, doc.page) items = self.prepared if items: self.replaceTokens(items, canv, doc, pageobj.smarty) container = MyContainer() container._content = items container.width = width container.height = height container.drawOn(canv, x, y) class FancyPage(PageTemplate): """ A page template that handles changing layouts. """ def __init__(self, _id, _head, _foot, client): self.client = client self.styles = client.styles self._head = HeaderOrFooter(_head, client=client) self._foot = HeaderOrFooter(_foot, True, client) self.smarty = client.smarty self.show_frame = client.show_frame self.image_cache = {} PageTemplate.__init__(self, _id, []) def draw_background(self, which, canv): ''' Draws a background and/or foreground image on each page which uses the template. Calculates the image one time, and caches it for reuse on every page in the template. How the background is drawn depends on the --fit-background-mode option. If desired, we could add code to push it around on the page, using stylesheets to align and/or set the offset. ''' uri=self.template[which] info = self.image_cache.get(uri) if info is None: fname, _, _ = MyImage.split_uri(uri) if not os.path.exists(fname): del self.template[which] log.error("Missing %s image file: %s", which, uri) return try: w, h, kind = MyImage.size_for_node(dict(uri=uri, ), self.client) except ValueError: # Broken image, return arbitrary stuff uri=missing w, h, kind = 100, 100, 'direct' pw, ph = self.styles.pw, self.styles.ph if self.client.background_fit_mode == 'center': scale = min(1.0, 1.0 * pw / w, 1.0 * ph / h) sw, sh = w * scale, h * scale x, y = (pw - sw) / 2.0, (ph - sh) / 2.0 elif self.client.background_fit_mode == 'scale': x, y = 0, 0 sw, sh = pw, ph else: log.error('Unknown background fit mode: %s'% self.client.background_fit_mode) # Do scale anyway x, y = 0, 0 sw, sh = pw, ph bg = MyImage(uri, sw, sh, client=self.client) self.image_cache[uri] = info = bg, x, y bg, x, y = info bg.drawOn(canv, x, y) def is_left(self, page_num): """Default behavior is that the first page is on the left. If the user has --first_page_on_right, the calculation is reversed. """ val = page_num % 2 == 1 if self.client.first_page_on_right: val = not val return val def beforeDrawPage(self, canv, doc): """Do adjustments to the page according to where we are in the document. * Gutter margins on left or right as needed """ global _counter, _counterStyle styles = self.styles self.tw = styles.pw - styles.lm - styles.rm - styles.gm # What page template to use? tname = canv.__dict__.get('templateName', self.styles.firstTemplate) self.template = self.styles.pageTemplates[tname] canv.templateName=tname doct = getattr(canv, '_doctemplate', None) canv._doctemplate = None # to make _listWrapOn work if doc.page == 1: _counter = 0 _counterStyle = 'arabic' _counter += 1 # Adjust text space accounting for header/footer self.hh = self._head.prepare(self, canv, doc) self.fh = self._foot.prepare(self, canv, doc) canv._doctemplate = doct self.hx = styles.lm self.hy = styles.ph - styles.tm - self.hh self.fx = styles.lm self.fy = styles.bm self.th = styles.ph - styles.tm - styles.bm - self.hh \ - self.fh - styles.ts - styles.bs # Adjust gutter margins if self.is_left(doc.page): # Left page x1 = styles.lm else: # Right page x1 = styles.lm + styles.gm y1 = styles.bm + self.fh + styles.bs # If there is a background parameter for this page Template, draw it if 'background' in self.template: self.draw_background('background', canv) self.frames = [] for frame in self.template['frames']: self.frames.append(SmartFrame(self, styles.adjustUnits(frame[0], self.tw) + x1, styles.adjustUnits(frame[1], self.th) + y1, styles.adjustUnits(frame[2], self.tw), styles.adjustUnits(frame[3], self.th), showBoundary=self.show_frame)) canv.firstSect = True canv._pagenum = doc.page for frame in self.frames: frame._pagenum=doc.page def afterDrawPage(self, canv, doc): """Draw header/footer.""" # Adjust for gutter margin canv.addPageLabel(canv._pageNumber-1,numberingstyles[_counterStyle],_counter) log.info('Page %s [%s]'%(_counter,doc.page)) if self.is_left(doc.page): # Left page hx = self.hx fx = self.fx else: # Right Page hx = self.hx + self.styles.gm fx = self.fx + self.styles.gm self._head.draw(self, canv, doc, hx, self.hy, self.tw, self.hh) self._foot.draw(self, canv, doc, fx, self.fy, self.tw, self.fh) # If there is a foreground parameter for this page Template, draw it if 'foreground' in self.template: self.draw_background('foreground', canv) def parse_commandline(): parser = OptionParser() parser.add_option('--config', dest='configfile', metavar='FILE', help='Config file to use. Default=~/.rst2pdf/config') parser.add_option('-o', '--output', dest='output', metavar='FILE', help='Write the PDF to FILE') def_ssheets = ','.join([expanduser(p) for p in config.getValue("general", "stylesheets", "").split(',')]) parser.add_option('-s', '--stylesheets', dest='style', type='string', action='append', metavar='STYLESHEETS', default=[def_ssheets], help='A comma-separated list of custom stylesheets. Default="%s"' % def_ssheets) def_sheetpath = os.pathsep.join([expanduser(p) for p in config.getValue("general", "stylesheet_path", "").split(os.pathsep)]) parser.add_option('--stylesheet-path', dest='stylepath', metavar='FOLDER%sFOLDER%s...%sFOLDER'%((os.pathsep, )*3), default=def_sheetpath, help='A list of folders to search for stylesheets,' ' separated using "%s". Default="%s"' %(os.pathsep, def_sheetpath)) def_compressed = config.getValue("general", "compressed", False) parser.add_option('-c', '--compressed', dest='compressed', action="store_true", default=def_compressed, help='Create a compressed PDF. Default=%s'%def_compressed) parser.add_option('--print-stylesheet', dest='printssheet', action="store_true", default=False, help='Print the default stylesheet and exit') parser.add_option('--font-folder', dest='ffolder', metavar='FOLDER', help='Search this folder for fonts. (Deprecated)') def_fontpath = os.pathsep.join([expanduser(p) for p in config.getValue("general", "font_path", "").split(os.pathsep)]) parser.add_option('--font-path', dest='fpath', metavar='FOLDER%sFOLDER%s...%sFOLDER'%((os.pathsep, )*3), default=def_fontpath, help='A list of folders to search for fonts, separated using "%s".' ' Default="%s"' % (os.pathsep, def_fontpath)) def_baseurl = urlunparse(['file',os.getcwd()+os.sep,'','','','']) parser.add_option('--baseurl', dest='baseurl', metavar='URL', default=def_baseurl, help='The base URL for relative URLs. Default="%s"'%def_baseurl) def_lang = config.getValue("general", "language", 'en_US') parser.add_option('-l', '--language', metavar='LANG', default=def_lang, dest='language', help='Language to be used for hyphenation' ' and docutils localizations. Default="%s"' % def_lang) def_header = config.getValue("general", "header") parser.add_option('--header', metavar='HEADER', default=def_header, dest='header', help='Page header if not specified in the document.' ' Default="%s"' % def_header) def_footer = config.getValue("general", "footer") parser.add_option('--footer', metavar='FOOTER', default=def_footer, dest='footer', help='Page footer if not specified in the document.' ' Default="%s"' % def_footer) def_section_header_depth = config.getValue("general","section_header_depth",2) parser.add_option('--section-header-depth', metavar='N', default=def_section_header_depth, dest='section_header_depth', help = '''Sections up to this depth will be used in the header and footer's replacement of ###Section###. Default=%s''' % def_section_header_depth) def_smartquotes = config.getValue("general", "smartquotes", "0") parser.add_option("--smart-quotes", metavar="VALUE", default=def_smartquotes, dest="smarty", help='Try to convert ASCII quotes, ellipses and dashes' ' to the typographically correct equivalent. For details,' ' read the man page or the manual. Default="%s"' % def_smartquotes) def_fit = config.getValue("general", "fit_mode", "shrink") parser.add_option('--fit-literal-mode', metavar='MODE', default=def_fit, dest='fit_mode', help='What to do when a literal is too wide. One of error,' ' overflow,shrink,truncate. Default="%s"' % def_fit) def_fit_background = config.getValue("general", "background_fit_mode", "center") parser.add_option('--fit-background-mode', metavar='MODE', default=def_fit_background, dest='background_fit_mode', help='How to fit the background image to the page.' ' One of scale or center. Default="%s"' % def_fit_background) parser.add_option('--inline-links', action="store_true", dest='inlinelinks', default=False, help='Shows target between parentheses instead of active link.') parser.add_option('--repeat-table-rows', action="store_true", dest='repeattablerows', default=False, help='Repeats header row for each split table.') def_raw_html = config.getValue("general", "raw_html", False) parser.add_option('--raw-html', action="store_true", dest='raw_html', default=def_raw_html, help='Support embeddig raw HTML. Default=%s' % def_raw_html) parser.add_option('-q', '--quiet', action="store_true", dest='quiet', default=False, help='Print less information.') parser.add_option('-v', '--verbose', action="store_true", dest='verbose', default=False, help='Print debug information.') parser.add_option('--very-verbose', action="store_true", dest='vverbose', default=False, help='Print even more debug information.') parser.add_option('--version', action="store_true", dest='version', default=False, help='Print version number and exit.') def_footnote_backlinks = config.getValue("general", "footnote_backlinks", True) parser.add_option('--no-footnote-backlinks', action='store_false', dest='footnote_backlinks', default=def_footnote_backlinks, help='Disable footnote backlinks.' ' Default=%s' % str(not def_footnote_backlinks)) def_inline_footnotes = config.getValue("general", "inline_footnotes", False) parser.add_option('--inline-footnotes', action='store_true', dest='inline_footnotes', default=def_inline_footnotes, help='Show footnotes inline.' ' Default=%s' % str(not def_inline_footnotes)) def_real_footnotes = config.getValue("general", "real_footnotes", False) parser.add_option('--real-footnotes', action='store_true', dest='real_footnotes', default=def_real_footnotes, help='Show footnotes at the bottom of the page where they are defined.' ' Default=%s' % str(def_real_footnotes)) def_dpi = config.getValue("general", "default_dpi", 300) parser.add_option('--default-dpi', dest='def_dpi', metavar='NUMBER', default=def_dpi, help='DPI for objects sized in pixels. Default=%d'%def_dpi) parser.add_option('--show-frame-boundary', dest='show_frame', action='store_true', default=False, help='Show frame borders (only useful for debugging). Default=False') parser.add_option('--disable-splittables', dest='splittables', action='store_false', default=True, help="Don't use splittable flowables in some elements." " Only try this if you can't process a document any other way.") def_break = config.getValue("general", "break_level", 0) parser.add_option('-b', '--break-level', dest='breaklevel', metavar='LEVEL', default=def_break, help='Maximum section level that starts in a new page.' ' Default: %d' % def_break) def_blankfirst = config.getValue("general", "blank_first_page", False) parser.add_option('--blank-first-page', dest='blank_first_page', action='store_true', default=def_blankfirst, help='Add a blank page at the beginning of the document.') def_first_page_on_right = config.getValue("general", "first_page_on_right", False) parser.add_option('--first-page-on-right', dest='first_page_on_right', action='store_true', default=def_first_page_on_right, help='Two-sided book style (where first page starts on the right side)') def_breakside = config.getValue("general", "break_side", 'any') parser.add_option('--break-side', dest='breakside', metavar='VALUE', default=def_breakside, help='How section breaks work. Can be "even", and sections start' ' in an even page, "odd", and sections start in odd pages,' ' or "any" and sections start in the next page, be it even or odd.' ' See also the -b option.') parser.add_option('--date-invariant', dest='invariant', action='store_true', default=False, help="Don't store the current date in the PDF." " Useful mainly for the test suite," " where we don't want the PDFs to change.") parser.add_option('-e', '--extension-module', dest='extensions', action="append", type="string", default = ['vectorpdf'], help="Add a helper extension module to this invocation of rst2pdf " "(module must end in .py and be on the python path)") def_cover = config.getValue("general", "custom_cover", 'cover.tmpl') parser.add_option('--custom-cover', dest='custom_cover', metavar='FILE', default= def_cover, help='Template file used for the cover page. Default: %s'%def_cover) def_floating_images = config.getValue("general", "floating_images", False) parser.add_option('--use-floating-images', action='store_true', default=def_floating_images, help='Makes images with :align: attribute work more like in rst2html. Default: %s'%def_floating_images, dest='floating_images') def_numbered_links = config.getValue("general", "numbered_links", False) parser.add_option('--use-numbered-links', action='store_true', default=def_numbered_links, help='When using numbered sections, adds the numbers to all links referring to the section headers. Default: %s'%def_numbered_links, dest='numbered_links') parser.add_option('--strip-elements-with-class', action='append', dest='strip_elements_with_classes', metavar='CLASS', help='Remove elements with this CLASS from the output. Can be used multiple times.') return parser def main(_args=None): """Parse command line and call createPdf with the correct data.""" parser = parse_commandline() # Fix issue 430: don't overwrite args # need to parse_args to see i we have a custom config file options, args = parser.parse_args(copy(_args)) if options.configfile: # If there is a config file, we need to reparse # the command line because we have different defaults config.parseConfig(options.configfile) parser = parse_commandline() options, args = parser.parse_args(copy(_args)) if options.version: from rst2pdf import version print version sys.exit(0) if options.quiet: log.setLevel(logging.CRITICAL) if options.verbose: log.setLevel(logging.INFO) if options.vverbose: log.setLevel(logging.DEBUG) if options.printssheet: # find base path if hasattr(sys, 'frozen'): PATH = abspath(dirname(sys.executable)) else: PATH = abspath(dirname(__file__)) print open(join(PATH, 'styles', 'styles.style')).read() sys.exit(0) filename = False if len(args) == 0: args = [ '-', ] elif len(args) > 2: log.critical('Usage: %s [ file.txt [ file.pdf ] ]', sys.argv[0]) sys.exit(1) elif len(args) == 2: if options.output: log.critical('You may not give both "-o/--output" and second argument') sys.exit(1) options.output = args.pop() if args[0] == '-': infile = sys.stdin options.basedir=os.getcwd() elif len(args) > 1: log.critical('Usage: %s file.txt [ -o file.pdf ]', sys.argv[0]) sys.exit(1) else: filename = args[0] options.basedir=os.path.dirname(os.path.abspath(filename)) try: infile = open(filename) except IOError, e: log.error(e) sys.exit(1) options.infile = infile if options.output: outfile = options.output if outfile == '-': outfile = sys.stdout options.compressed = False #we must stay quiet log.setLevel(logging.CRITICAL) else: if filename: if filename.endswith('.txt') or filename.endswith('.rst'): outfile = filename[:-4] + '.pdf' else: outfile = filename + '.pdf' else: outfile = sys.stdout options.compressed = False #we must stay quiet log.setLevel(logging.CRITICAL) #/reportlab/pdfbase/pdfdoc.py output can #be a callable (stringio, stdout ...) options.outfile = outfile ssheet = [] if options.style: for l in options.style: ssheet += l.split(',') else: ssheet = [] options.style = [x for x in ssheet if x] fpath = [] if options.fpath: fpath = options.fpath.split(os.pathsep) if options.ffolder: fpath.append(options.ffolder) options.fpath = fpath spath = [] if options.stylepath: spath = options.stylepath.split(os.pathsep) options.stylepath = spath if options.real_footnotes: options.inline_footnotes = True if reportlab.Version < '2.3': log.warning('You are using Reportlab version %s.' ' The suggested version is 2.3 or higher' % reportlab.Version) if options.invariant: patch_PDFDate() patch_digester() add_extensions(options) RstToPdf( stylesheets=options.style, language=options.language, header=options.header, footer=options.footer, inlinelinks=options.inlinelinks, breaklevel=int(options.breaklevel), baseurl=options.baseurl, fit_mode=options.fit_mode, background_fit_mode = options.background_fit_mode, smarty=str(options.smarty), font_path=options.fpath, style_path=options.stylepath, repeat_table_rows=options.repeattablerows, footnote_backlinks=options.footnote_backlinks, inline_footnotes=options.inline_footnotes, real_footnotes=options.real_footnotes, def_dpi=int(options.def_dpi), basedir=options.basedir, show_frame=options.show_frame, splittables=options.splittables, blank_first_page=options.blank_first_page, first_page_on_right=options.first_page_on_right, breakside=options.breakside, custom_cover=options.custom_cover, floating_images=options.floating_images, numbered_links=options.numbered_links, raw_html=options.raw_html, section_header_depth=int(options.section_header_depth), strip_elements_with_classes=options.strip_elements_with_classes, ).createPdf(text=options.infile.read(), source_path=options.infile.name, output=options.outfile, compressed=options.compressed) # Ugly hack that fixes Issue 335 reportlab.lib.utils.ImageReader.__deepcopy__ = lambda self,*x: copy(self) def patch_digester(): ''' Patch digester so that we can get the same results when image filenames change''' import reportlab.pdfgen.canvas as canvas cache = {} def _digester(s): index = cache.setdefault(s, len(cache)) return 'rst2pdf_image_%s' % index canvas._digester = _digester def patch_PDFDate(): '''Patch reportlab.pdfdoc.PDFDate so the invariant dates work correctly''' from reportlab.pdfbase import pdfdoc import reportlab class PDFDate: __PDFObject__ = True # gmt offset now suppported def __init__(self, invariant=True, dateFormatter=None): now = (2000,01,01,00,00,00,0) self.date = now[:6] self.dateFormatter = dateFormatter def format(self, doc): from time import timezone dhh, dmm = timezone // 3600, (timezone % 3600) % 60 dfmt = self.dateFormatter or ( lambda yyyy,mm,dd,hh,m,s: "D:%04d%02d%02d%02d%02d%02d%+03d'%02d'" % (yyyy,mm,dd,hh,m,s,0,0)) return pdfdoc.format(pdfdoc.PDFString(dfmt(*self.date)), doc) pdfdoc.PDFDate = PDFDate reportlab.rl_config.invariant = 1 def add_extensions(options): extensions = [] for ext in options.extensions: if not ext.startswith('!'): extensions.append(ext) continue ext = ext[1:] try: extensions.remove(ext) except ValueError: log.warning('Could not remove extension %s -- no such extension installed' % ext) else: log.info('Removed extension %s' % ext) options.extensions[:] = extensions if not extensions: return class ModuleProxy(object): def __init__(self): self.__dict__ = globals() createpdf = ModuleProxy() for modname in options.extensions: prefix, modname = os.path.split(modname) path_given = prefix if modname.endswith('.py'): modname = modname[:-3] path_given = True if not prefix: prefix = os.path.join(os.path.dirname(__file__), 'extensions') if prefix not in sys.path: sys.path.append(prefix) prefix = os.getcwd() if prefix not in sys.path: sys.path.insert(0, prefix) log.info('Importing extension module %s', repr(modname)) firstname = path_given and modname or (modname + '_r2p') try: try: module = __import__(firstname, globals(), locals()) except ImportError, e: if firstname != str(e).split()[-1]: raise module = __import__(modname, globals(), locals()) except ImportError, e: if str(e).split()[-1] not in [firstname, modname]: raise raise SystemExit('\nError: Could not find module %s ' 'in sys.path [\n %s\n]\nExiting...\n' % (modname, ',\n '.join(sys.path))) if hasattr(module, 'install'): module.install(createpdf, options) def monkeypatch(): ''' For initial test purposes, make reportlab 2.4 mostly perform like 2.3. This allows us to compare PDFs more easily. There are two sets of changes here: 1) rl_config.paraFontSizeHeightOffset = False This reverts a change reportlab that messes up a lot of docs. We may want to keep this one in here, or at least figure out the right thing to do. If we do NOT keep this one here, we will have documents look different in RL2.3 than they do in RL2.4. This is probably unacceptable. 2) Everything else (below the paraFontSizeHeightOffset line): These change some behavior in reportlab that affects the graphics content stream without affecting the actual output. We can remove these changes after making sure we are happy and the checksums are good. ''' import reportlab from reportlab import rl_config from reportlab.pdfgen.canvas import Canvas from reportlab.pdfbase import pdfdoc if getattr(reportlab, 'Version', None) != '2.4': return # NOTE: THIS IS A REAL DIFFERENCE -- DEFAULT y-offset FOR CHARS CHANGES!!! rl_config.paraFontSizeHeightOffset = False # Fix the preamble. 2.4 winds up injecting an extra space, so we toast it. def new_make_preamble(self): self._old_make_preamble() self._preamble = ' '.join(self._preamble.split()) Canvas._old_make_preamble = Canvas._make_preamble Canvas._make_preamble = new_make_preamble # A new optimization removes the CR/LF between 'endstream' and 'endobj' # Remove it for comparison pdfdoc.INDIRECTOBFMT = pdfdoc.INDIRECTOBFMT.replace('CLINEEND', 'LINEEND') # By default, transparency is set, and by default, that changes PDF version # to 1.4 in RL 2.4. pdfdoc.PDF_SUPPORT_VERSION['transparency'] = 1,3 monkeypatch() def publish_secondary_doctree(text, main_tree, source_path): # This is a hack so the text substitutions defined # in the document are available when we process the cover # page. See Issue 322 dt = main_tree # Add substitutions from the main doctree class addSubsts(Transform): default_priority = 219 def apply(self): self.document.substitution_defs.update(dt.substitution_defs) self.document.substitution_names.update(dt.substitution_names) # Use an own reader to modify transformations done. class Reader(standalone.Reader): def get_transforms(self): default = standalone.Reader.get_transforms(self) return (default + [ addSubsts, ]) # End of Issue 322 hack return docutils.core.publish_doctree(text, reader = Reader(), source_path=source_path) if __name__ == "__main__": main(sys.argv[1:]) rst2pdf-0.93/rst2pdf/genelements.py0000664000175000017500000011564212062472537017164 0ustar ralsinaralsina# -*- coding: utf-8 -*- #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/genelements.py $ #$Date: 2012-12-13 21:39:59 -0300 (Thu, 13 Dec 2012) $ #$Revision: 2615 $ # See LICENSE.txt for licensing terms # Some fragments of code are copied from Reportlab under this license: # ##################################################################################### # # Copyright (c) 2000-2008, ReportLab Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # * Neither the name of the company nor the names of its contributors may be # used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE OFFICERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ##################################################################################### import os import tempfile import re from copy import copy from basenodehandler import NodeHandler import docutils.nodes from oddeven_directive import OddEvenNode import reportlab from aafigure_directive import Aanode from log import log, nodeid from utils import log, parseRaw, parseHTML from reportlab.platypus import Paragraph, TableStyle from reportlab.lib.units import cm from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT from flowables import Table, DelayedTable, SplitTable, Heading, \ MyIndenter, MyTableOfContents, MySpacer, \ Separation, BoxedContainer, BoundByWidth, \ MyPageBreak, Reference, tablepadding, OddEven, \ XPreformatted from opt_imports import wordaxe, Paragraph, ParagraphStyle class TocBuilderVisitor(docutils.nodes.SparseNodeVisitor): def __init__(self, document): docutils.nodes.SparseNodeVisitor.__init__(self, document) self.toc = None # For some reason, when called via sphinx, # .. contents:: ends up trying to call # visitor.document.reporter.debug # so we need a valid document here. self.document=docutils.utils.new_document('') def visit_reference(self, node): refid = node.attributes.get('refid') if refid: self.toc.refids.append(refid) class HandleDocument(NodeHandler, docutils.nodes.document): pass class HandleTable(NodeHandler, docutils.nodes.table): def gather_elements(self, client, node, style): if node['classes']: style = client.styles.combinedStyle(['table']+node['classes']) else: style = client.styles['table'] return [MySpacer(0, client.styles['table'].spaceBefore)] + \ client.gather_elements(node, style=style) +\ [MySpacer(0, client.styles['table'].spaceAfter)] class HandleTGroup(NodeHandler, docutils.nodes.tgroup): def gather_elements(self, client, node, style): # Take the style from the parent "table" node # because sometimes it's not passed down. if node.parent['classes']: style = client.styles.combinedStyle(['table']+node.parent['classes']) else: style = client.styles['table'] rows = [] colWidths = [] hasHead = False headRows = 0 for n in node.children: if isinstance(n, docutils.nodes.thead): hasHead = True for row in n.children: r = [] for cell in row.children: r.append(cell) rows.append(r) headRows = len(rows) elif isinstance(n, docutils.nodes.tbody): for row in n.children: r = [] for cell in row.children: r.append(cell) rows.append(r) elif isinstance(n, docutils.nodes.colspec): colWidths.append(int(n['colwidth'])) # colWidths are in no specific unit, really. Maybe ems. # Convert them to % colWidths=map(int, colWidths) tot=sum(colWidths) colWidths=["%s%%"%((100.*w)/tot) for w in colWidths] if 'colWidths' in style.__dict__: colWidths[:len(style.colWidths)]=style.colWidths spans = client.filltable(rows) data = [] cellStyles = [] rowids = range(0, len(rows)) for row, i in zip(rows, rowids): r = [] j = 0 for cell in row: if isinstance(cell, str): r.append("") else: if i < headRows: st = client.styles['table-heading'] else: st = client.styles['table-body'] ell = client.gather_elements(cell, style=st) r.append(ell) j += 1 data.append(r) st = TableStyle(spans) if 'commands' in style.__dict__: for cmd in style.commands: st.add(*cmd) else: # Only use the commands from "table" if the # specified class has no commands. for cmd in client.styles['table'].commands: st.add(*cmd) if hasHead: for cmd in client.styles.tstyleHead(headRows): st.add(*cmd) rtr = client.repeat_table_rows t=DelayedTable(data, colWidths, st, rtr) if style.alignment == TA_LEFT: t.hAlign='LEFT' elif style.alignment == TA_CENTER: t.hAlign='CENTER' elif style.alignment == TA_RIGHT: t.hAlign='RIGHT' return [t] class HandleParagraph(NodeHandler, docutils.nodes.paragraph): def gather_elements(self, client, node, style): return [Paragraph(client.gen_pdftext(node), style)] def get_pre_post(self, client, node, replaceEnt): pre='' targets=set(node.get('ids',[])+client.pending_targets) client.pending_targets=[] for _id in targets: if _id not in client.targets: pre+='
    '%(_id) client.targets.append(_id) return pre, '\n' class HandleTitle(HandleParagraph, docutils.nodes.title): def gather_elements(self, client, node, style): # Special cases: (Not sure this is right ;-) if isinstance(node.parent, docutils.nodes.document): #node.elements = [Paragraph(client.gen_pdftext(node), #client.styles['title'])] # The visible output is now done by the cover template node.elements = [] client.doc_title = node.rawsource client.doc_title_clean = node.astext().strip() elif isinstance(node.parent, docutils.nodes.topic): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['topic-title'])] elif isinstance(node.parent, docutils.nodes.Admonition): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['admonition-title'])] elif isinstance(node.parent, docutils.nodes.table): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['table-title'])] elif isinstance(node.parent, docutils.nodes.sidebar): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['sidebar-title'])] else: # Section/Subsection/etc. text = client.gen_pdftext(node) fch = node.children[0] if isinstance(fch, docutils.nodes.generated) and \ fch['classes'] == ['sectnum']: snum = fch.astext() else: snum = None key = node.get('refid') maxdepth=4 if reportlab.Version > '2.1': maxdepth=6 # The parent ID is the refid + an ID to make it unique for Sphinx parent_id=(node.parent.get('ids', [None]) or [None])[0]+u'-'+unicode(id(node)) node.elements = [ Heading(text, client.styles['heading%d'%min(client.depth, maxdepth)], level=client.depth-1, parent_id=parent_id, node=node, section_header_depth=client.section_header_depth )] if client.depth <= client.breaklevel: node.elements.insert(0, MyPageBreak(breakTo=client.breakside)) return node.elements class HandleSubTitle(HandleParagraph, docutils.nodes.subtitle): def gather_elements(self, client, node, style): if isinstance(node.parent, docutils.nodes.sidebar): elements = [Paragraph(client.gen_pdftext(node), client.styles['sidebar-subtitle'])] elif isinstance(node.parent, docutils.nodes.document): #elements = [Paragraph(client.gen_pdftext(node), #client.styles['subtitle'])] # The visible output is now done by the cover template elements = [] # FIXME: looks like subtitles don't have a rawsource like # titles do. # That means that literals and italics etc in subtitles won't # work. client.doc_subtitle = getattr(node,'rawtext',node.astext()).strip() else: elements = node.elements # FIXME Can we get here??? return elements class HandleDocInfo(NodeHandler, docutils.nodes.docinfo): # A docinfo usually contains several fields. # We'll render it as a series of elements, one field each. pass class HandleField(NodeHandler, docutils.nodes.field): def gather_elements(self, client, node, style): # A field has two child elements, a field_name and a field_body. # We render as a two-column table, left-column is right-aligned, # bold, and much smaller fn = Paragraph(client.gather_pdftext(node.children[0]) + ":", style=client.styles['fieldname']) fb = client.gen_elements(node.children[1], style=client.styles['fieldvalue']) t_style=TableStyle(client.styles['field-list'].commands) return [DelayedTable([[fn, fb]], style=t_style, colWidths=client.styles['field-list'].colWidths)] class HandleDecoration(NodeHandler, docutils.nodes.decoration): pass class HandleHeader(NodeHandler, docutils.nodes.header): stylename = 'header' def gather_elements(self, client, node, style): client.decoration[self.stylename] = client.gather_elements(node, style=client.styles[self.stylename]) return [] class HandleFooter(HandleHeader, docutils.nodes.footer): stylename = 'footer' class HandleAuthor(NodeHandler, docutils.nodes.author): def gather_elements(self, client, node, style): if isinstance(node.parent, docutils.nodes.authors): # Is only one of multiple authors. Return a paragraph node.elements = [Paragraph(client.gather_pdftext(node), style=style)] if client.doc_author: client.doc_author += client.author_separator(style=style) \ + node.astext().strip() else: client.doc_author = node.astext().strip() else: # A single author: works like a field fb = client.gather_pdftext(node) t_style=TableStyle(client.styles['field-list'].commands) colWidths=map(client.styles.adjustUnits, client.styles['field-list'].colWidths) node.elements = [Table( [[Paragraph(client.text_for_label("author", style)+":", style=client.styles['fieldname']), Paragraph(fb, style)]], style=t_style, colWidths=colWidths)] client.doc_author = node.astext().strip() return node.elements class HandleAuthors(NodeHandler, docutils.nodes.authors): def gather_elements(self, client, node, style): # Multiple authors. Create a two-column table. # Author references on the right. t_style=TableStyle(client.styles['field-list'].commands) colWidths = client.styles['field-list'].colWidths td = [[Paragraph(client.text_for_label("authors", style)+":", style=client.styles['fieldname']), client.gather_elements(node, style=style)]] return [DelayedTable(td, style=t_style, colWidths=colWidths)] class HandleFList(NodeHandler): adjustwidths = False TableType = DelayedTable def gather_elements(self, client, node, style): fb = client.gather_pdftext(node) t_style=TableStyle(client.styles['field-list'].commands) colWidths=client.styles['field-list'].colWidths if self.adjustwidths: colWidths = map(client.styles.adjustUnits, colWidths) label=client.text_for_label(self.labeltext, style)+":" t = self.TableType([[Paragraph(label, style=client.styles['fieldname']), Paragraph(fb, style)]], style=t_style, colWidths=colWidths) return [t] class HandleOrganization(HandleFList, docutils.nodes.organization): labeltext = "organization" class HandleContact(HandleFList, docutils.nodes.contact): labeltext = "contact" class HandleAddress(HandleFList, docutils.nodes.address): labeltext = "address" def gather_elements(self, client, node, style): fb = client.gather_pdftext(node) t_style=TableStyle(client.styles['field-list'].commands) colWidths=client.styles['field-list'].colWidths if self.adjustwidths: colWidths = map(client.styles.adjustUnits, colWidths) label=client.text_for_label(self.labeltext, style)+":" t = self.TableType([[Paragraph(label, style=client.styles['fieldname']), XPreformatted(fb, style)] ], style=t_style, colWidths=colWidths) return [t] class HandleVersion(HandleFList, docutils.nodes.version): labeltext = "version" class HandleRevision(HandleFList, docutils.nodes.revision): labeltext = "revision" adjustwidths = True TableType = Table class HandleStatus(HandleFList, docutils.nodes.status): labeltext = "status" class HandleDate(HandleFList, docutils.nodes.date): labeltext = "date" class HandleCopyright(HandleFList, docutils.nodes.copyright): labeltext = "copyright" class HandleTopic(NodeHandler, docutils.nodes.topic): def gather_elements(self, client, node, style): # toc node_classes = node.attributes.get('classes', []) cstyles = client.styles if 'contents' in node_classes: toc_visitor = TocBuilderVisitor(node.document) if 'local' in node_classes: toc_visitor.toc = MyTableOfContents(parent=node.parent) else: toc_visitor.toc = MyTableOfContents(parent=None) toc_visitor.toc.linkColor = cstyles.tocColor or cstyles.linkColor node.walk(toc_visitor) toc = toc_visitor.toc toc.levelStyles=[cstyles['toc%d'%l] for l in range(1,15)] for s in toc.levelStyles: # FIXME: awful slimy hack! s.__class__=reportlab.lib.styles.ParagraphStyle ## Issue 117: add extra TOC levelStyles. ## 9-deep should be enough. #for i in range(4): #ps = toc.levelStyles[-1].__class__(name='Level%d'%(i+5), #parent=toc.levelStyles[-1], #leading=toc.levelStyles[-1].leading, #firstlineIndent=toc.levelStyles[-1].firstLineIndent, #leftIndent=toc.levelStyles[-1].leftIndent+1*cm) #toc.levelStyles.append(ps) ## Override fontnames (defaults to Times-Roman) #for levelStyle in toc.levelStyles: #levelStyle.__dict__['fontName'] = \ #client.styles['tableofcontents'].fontName if 'local' in node_classes: node.elements = [toc] else: node.elements = \ [Paragraph(client.gen_pdftext(node.children[0]), cstyles['heading1']), toc] else: node.elements = client.gather_elements(node, style=style) return node.elements class HandleFieldBody(NodeHandler, docutils.nodes.field_body): pass class HandleSection(NodeHandler, docutils.nodes.section): def gather_elements(self, client, node, style): #XXX: should style be passed down here? client.depth+=1 elements = client.gather_elements(node) client.depth-=1 return elements class HandleBulletList(NodeHandler, docutils.nodes.bullet_list): def gather_elements(self, client, node, style): if node ['classes']: style = client.styles[node['classes'][0]] else: style = client.styles["bullet-list"] node.elements = client.gather_elements(node, style=style) # Here we need to separate the list from the previous element. # Calculate by how much: sb=style.spaceBefore # list separation sa=style.spaceAfter # list separation node.elements.insert(0, MySpacer(0, sb)) node.elements.append(MySpacer(0, sa)) return node.elements class HandleDefOrOptList(NodeHandler, docutils.nodes.definition_list, docutils.nodes.option_list): pass class HandleFieldList(NodeHandler, docutils.nodes.field_list): def gather_elements(self, client, node, style): return [MySpacer(0,client.styles['field-list'].spaceBefore)]+\ client.gather_elements(node, style=style) class HandleEnumeratedList(NodeHandler, docutils.nodes.enumerated_list): def gather_elements(self, client, node, style): if node ['classes']: style = client.styles[node['classes'][0]] else: style = client.styles["item-list"] node.elements = client.gather_elements(node, style = style) # Here we need to separate the list from the previous element. # Calculate by how much: sb=style.spaceBefore # list separation sa=style.spaceAfter # list separation node.elements.insert(0, MySpacer(0, sb)) node.elements.append(MySpacer(0, sa)) return node.elements class HandleDefinition(NodeHandler, docutils.nodes.definition): def gather_elements(self, client, node, style): return client.gather_elements(node, style = style) class HandleOptionListItem(NodeHandler, docutils.nodes.option_list_item): def gather_elements(self, client, node, style): optext = ', '.join([client.gather_pdftext(child) for child in node.children[0].children]) desc = client.gather_elements(node.children[1], style) t_style = TableStyle(client.styles['option-list'].commands) colWidths = client.styles['option-list'].colWidths node.elements = [DelayedTable([[client.PreformattedFit( optext, client.styles["literal"]), desc]], style = t_style, colWidths = colWidths)] return node.elements class HandleDefListItem(NodeHandler, docutils.nodes.definition_list_item): def gather_elements(self, client, node, style): # I need to catch the classifiers here tt = [] dt = [] ids = [] for n in node.children: if isinstance(n, docutils.nodes.term): for i in n['ids']: # Used by sphinx glossary lists if i not in client.targets: ids.append('' % i) client.targets.append(i) o, c = client.styleToTags("definition-list-term") tt.append(o + client.gather_pdftext(n) + c) elif isinstance(n, docutils.nodes.classifier): o, c = client.styleToTags("definition-list-classifier") tt.append(o + client.gather_pdftext(n) + c) else: dt.extend(client.gen_elements(n, style)) # FIXME: make this configurable from the stylesheet t_style = TableStyle (client.styles['definition'].commands) cw = getattr(client.styles['definition'],'colWidths',[]) if client.splittables: node.elements = [ Paragraph(''.join(ids)+' : '.join(tt), client.styles['definition-list-term']), SplitTable([['',dt]] , colWidths=cw, style = t_style )] else: node.elements = [ Paragraph(''.join(ids)+' : '.join(tt), client.styles['definition-list-term']), DelayedTable([['',dt]] , colWidths=[10,None], style = t_style )] return node.elements class HandleListItem(NodeHandler, docutils.nodes.list_item): def gather_elements(self, client, node, style): b, t = client.bullet_for_node(node) bStyle = copy(style) bStyle.alignment = 2 # FIXME: use different unicode bullets depending on b if b and b in "*+-": b = getattr(bStyle, 'bulletText', u'\u2022') # The style has information about the bullet: # # bulletFontSize # bulletFont # This is so the baselines of the bullet and the text align extra_space= bStyle.bulletFontSize-bStyle.fontSize bStyle.fontSize=bStyle.bulletFontSize bStyle.fontName=bStyle.bulletFontName if t == 'bullet': item_st=client.styles['bullet-list-item'] else: item_st=client.styles['item-list-item'] el = client.gather_elements(node, item_st) # FIXME: this is really really not good code if not el: el = [Paragraph(u"\xa0", item_st)] idx=node.parent.children.index(node) if idx==0: # The first item in the list, so doesn't need # separation (it's provided by the list itself) sb=0 # It also doesn't need a first-line-indent fli=0 else: # Not the first item, so need to separate from # previous item. Account for space provided by # the item's content, too. sb=item_st.spaceBefore-item_st.spaceAfter fli=item_st.firstLineIndent bStyle.spaceBefore=0 t_style = TableStyle(style.commands) # The -3 here is to compensate for padding, 0 doesn't work :-( t_style._cmds.extend([ #["GRID", [ 0, 0 ], [ -1, -1 ], .25, "black" ], ["BOTTOMPADDING", [ 0, 0 ], [ -1, -1 ], -3 ]] ) if extra_space >0: # The bullet is larger, move down the item text sb += extra_space sbb = 0 else: # The bullet is smaller, move down the bullet sbb = -extra_space #colWidths = map(client.styles.adjustUnits, #client.styles['item_list'].colWidths) colWidths = getattr(style,'colWidths',[]) while len(colWidths) < 2: colWidths.append(client.styles['item_list'].colWidths[len(colWidths)]) if client.splittables: node.elements = [MySpacer(0,sb), SplitTable([[Paragraph(b, style = bStyle), el]], style = t_style, colWidths = colWidths) ] else: node.elements = [MySpacer(0,sb), DelayedTable([[Paragraph(b, style = bStyle), el]], style = t_style, colWidths = colWidths) ] return node.elements class HandleTransition(NodeHandler, docutils.nodes.transition): def gather_elements(self, client, node, style): return [Separation()] class HandleBlockQuote(NodeHandler, docutils.nodes.block_quote): def gather_elements(self, client, node, style): # This should work, but doesn't look good inside of # table cells (see Issue 173) #node.elements = [MyIndenter(left=client.styles['blockquote'].leftIndent)]\ #+ client.gather_elements( node, style) + \ #[MyIndenter(left=-client.styles['blockquote'].leftIndent)] # Workaround for Issue 173 using tables leftIndent=client.styles['blockquote'].leftIndent rightIndent=client.styles['blockquote'].rightIndent spaceBefore=client.styles['blockquote'].spaceBefore spaceAfter=client.styles['blockquote'].spaceAfter s=copy(client.styles['blockquote']) s.leftIndent=style.leftIndent data=[['',client.gather_elements( node, s)]] if client.splittables: node.elements=[MySpacer(0,spaceBefore),SplitTable(data, colWidths=[leftIndent,None], style=TableStyle([["TOPPADDING",[0,0],[-1,-1],0], ["LEFTPADDING",[0,0],[-1,-1],0], ["RIGHTPADDING",[0,0],[-1,-1],rightIndent], ["BOTTOMPADDING",[0,0],[-1,-1],0], ])), MySpacer(0,spaceAfter)] else: node.elements=[MySpacer(0,spaceBefore),DelayedTable(data, colWidths=[leftIndent,None], style=TableStyle([["TOPPADDING",[0,0],[-1,-1],0], ["LEFTPADDING",[0,0],[-1,-1],0], ["RIGHTPADDING",[0,0],[-1,-1],rightIndent], ["BOTTOMPADDING",[0,0],[-1,-1],0], ])), MySpacer(0,spaceAfter)] return node.elements class HandleAttribution(NodeHandler, docutils.nodes.attribution): def gather_elements(self, client, node, style): return [ Paragraph(client.gather_pdftext(node), client.styles['attribution'])] class HandleComment(NodeHandler, docutils.nodes.comment): def gather_elements(self, client, node, style): # Class that generates no output return [] class HandleLineBlock(NodeHandler, docutils.nodes.line_block): def gather_elements(self, client, node, style): if isinstance(node.parent,docutils.nodes.line_block): qstyle = copy(style) qstyle.leftIndent += client.styles.adjustUnits("1.5em") else: qstyle = copy(client.styles['lineblock']) # Fix Issue 225: no space betwen line in a lineblock, but keep # space before the lineblock itself # Fix Issue 482: nested lineblocks don't need spacing before/after if not isinstance(node.parent, docutils.nodes.line_block): return [MySpacer(0,client.styles['lineblock'].spaceBefore)]+client.gather_elements(node, style=qstyle)+[MySpacer(0,client.styles['lineblock'].spaceAfter)] else: return client.gather_elements(node, style=qstyle) class HandleLine(NodeHandler, docutils.nodes.line): def gather_elements(self, client, node, style): # line nodes have no classes, they have to inherit from the outermost lineblock (sigh) # For more info see Issue 471 and its test case. parent = node while isinstance(parent.parent, (docutils.nodes.line, docutils.nodes.line_block)): parent=parent.parent p_class = (parent.get('classes') or ['line'])[0] print node, p_class qstyle = copy(client.styles[p_class]) # Indent .5em per indent unit i=node.__dict__.get('indent',0) #qstyle = copy(client.styles['line']) qstyle.leftIndent += client.styles.adjustUnits("0.5em")*i text = client.gather_pdftext(node) if not text: # empty line text=u"\xa0" return [Paragraph(text, style=qstyle)] class HandleLiteralBlock(NodeHandler, docutils.nodes.literal_block, docutils.nodes.doctest_block): def gather_elements(self, client, node, style): if node['classes']: style = client.styles.combinedStyle(['code']+node['classes']) else: style = client.styles['code'] return [client.PreformattedFit( client.gather_pdftext(node, replaceEnt = True), style )] class HandleFigure(NodeHandler, docutils.nodes.figure): def gather_elements(self, client, node, style): # Either use the figure style or the class # selected by the user st_name = 'figure' if node.get('classes'): st_name = node.get('classes')[0] style=client.styles[st_name] cmd=getattr(style,'commands',[]) image=node.children[0] if len(node.children) > 1: caption = node.children[1] else: caption=None if len(node.children) > 2: legend = node.children[2:] else: legend=[] w=node.get('width',client.styles['figure'].colWidths[0]) cw=[w,] sub_elems = client.gather_elements(node, style=None) t_style=TableStyle(cmd) table = DelayedTable([[e,] for e in sub_elems],style=t_style, colWidths=cw) table.hAlign = node.get('align','CENTER').upper() return [MySpacer(0, style.spaceBefore),table, MySpacer(0, style.spaceAfter)] class HandleCaption(NodeHandler, docutils.nodes.caption): def gather_elements(self, client, node, style): return [Paragraph(client.gather_pdftext(node), style=client.styles['figure-caption'])] class HandleLegend(NodeHandler, docutils.nodes.legend): def gather_elements(self, client, node, style): return client.gather_elements(node, style=client.styles['figure-legend']) class HandleSidebar(NodeHandler, docutils.nodes.sidebar): def gather_elements(self, client, node, style): return [BoxedContainer(client.gather_elements(node, style=None), client.styles['sidebar'])] class HandleRubric(NodeHandler, docutils.nodes.rubric): def gather_elements(self, client, node, style): # Sphinx uses a rubric as footnote container if self.sphinxmode and len(node.children) == 1 \ and node.children[0].astext() == 'Footnotes': return [] else: return [Paragraph(client.gather_pdftext(node), client.styles['rubric'])] class HandleCompound(NodeHandler, docutils.nodes.compound): # FIXME think if this is even implementable pass class HandleContainer(NodeHandler, docutils.nodes.container): def getelements(self, client, node, style): parent = node.parent if not isinstance(parent, (docutils.nodes.header, docutils.nodes.footer)): return NodeHandler.getelements(self, client, node, style) return self.gather_elements(client, node, style) class HandleSubstitutionDefinition(NodeHandler, docutils.nodes.substitution_definition): def gather_elements(self, client, node, style): return [] class HandleTBody(NodeHandler, docutils.nodes.tbody): def gather_elements(self, client, node, style): rows = [client.gen_elements(n) for n in node.children] t = [] for r in rows: if not r: continue t.append(r) t_style = TableStyle(client.styles['table'].commands) colWidths = client.styles['table'].colWidths return [DelayedTable(t, style=t_style, colWidths=colWidths)] class HandleFootnote(NodeHandler, docutils.nodes.footnote, docutils.nodes.citation): def gather_elements(self, client, node, style): # It seems a footnote contains a label and a series of elements ltext = client.gather_pdftext(node.children[0]) label = None ids='' for i in node.get('ids',[]): ids+=''%(i) client.targets.extend(node.get('ids',[ltext])) if len(node['backrefs']) > 1 and client.footnote_backlinks: backrefs = [] i = 1 for r in node['backrefs']: backrefs.append('%d' % ( r, client.styles.linkColor, i)) i += 1 backrefs = '(%s)' % ', '.join(backrefs) if ltext not in client.targets: label = Paragraph(ids+'%s'%(ltext + backrefs), client.styles["endnote"]) client.targets.append(ltext) elif len(node['backrefs'])==1 and client.footnote_backlinks: if ltext not in client.targets: label = Paragraph(ids+'%s' % ( node['backrefs'][0], client.styles.linkColor, ltext), client.styles["endnote"]) client.targets.append(ltext) else: if ltext not in client.targets: label = Paragraph(ids+ltext, client.styles["endnote"]) client.targets.append(ltext) if not label: label = Paragraph(ids+ltext, client.styles["endnote"]) contents = client.gather_elements(node, client.styles["endnote"])[1:] if client.inline_footnotes: st=client.styles['endnote'] t_style = TableStyle(st.commands) colWidths = client.styles['endnote'].colWidths node.elements = [MySpacer(0, st.spaceBefore), DelayedTable([[label, contents]], style=t_style, colWidths=colWidths), MySpacer(0, st.spaceAfter)] if client.real_footnotes: client.mustMultiBuild = True for e in node.elements: e.isFootnote=True else: client.decoration['endnotes'].append([label, contents]) node.elements = [] return node.elements class HandleLabel(NodeHandler, docutils.nodes.label): def gather_elements(self, client, node, style): return [Paragraph(client.gather_pdftext(node), style)] class HandleEntry(NodeHandler, docutils.nodes.entry): pass class HandleRaw(NodeHandler, docutils.nodes.raw): def gather_elements(self, client, node, style): # Not really raw, but what the heck if node.get('format','NONE').lower()=='pdf': return parseRaw(str(node.astext()), node) elif client.raw_html and node.get('format','NONE').lower()=='html': x = parseHTML(str(node.astext()), node) return x else: return [] class HandleOddEven (NodeHandler, OddEvenNode): def gather_elements(self, client, node, style): odd=[] even=[] #from pudb import set_trace; set_trace() if node.children: if isinstance (node.children[0], docutils.nodes.paragraph): if node.children[0].get('classes'): s = client.styles[node.children[0].get('classes')[0]] else: s = style odd=[Paragraph(client.gather_pdftext(node.children[0]), s)] else: # A compound element odd=client.gather_elements(node.children[0]) if len(node.children)>1: if isinstance (node.children[1], docutils.nodes.paragraph): if node.children[1].get('classes'): s = client.styles[node.children[1].get('classes')[0]] else: s = style even=[Paragraph(client.gather_pdftext(node.children[1]), s)] else: even=client.gather_elements(node.children[1]) return [OddEven(odd=odd, even=even)] class HandleAanode(NodeHandler, Aanode): def gather_elements(self, client, node, style): style_options = { 'font': client.styles['aafigure'].fontName, } return [node.gen_flowable(style_options)] class HandleAdmonition(NodeHandler, docutils.nodes.attention, docutils.nodes.caution, docutils.nodes.danger, docutils.nodes.error, docutils.nodes.hint, docutils.nodes.important, docutils.nodes.note, docutils.nodes.tip, docutils.nodes.warning, docutils.nodes.Admonition): def gather_elements(self, client, node, style): if node.children and isinstance(node.children[0], docutils.nodes.title): title=[] else: title= [Paragraph(client.text_for_label(node.tagname, style), style=client.styles['%s-heading'%node.tagname])] rows=title + client.gather_elements(node, style=style) st=client.styles[node.tagname] if 'commands' in dir(st): t_style = TableStyle(st.commands) else: t_style = TableStyle() t_style.add("ROWBACKGROUNDS", [0, 0], [-1, -1],[st.backColor]) t_style.add("BOX", [ 0, 0 ], [ -1, -1 ], st.borderWidth , st.borderColor) if client.splittables: node.elements = [MySpacer(0,st.spaceBefore), SplitTable([['',rows]], style=t_style, colWidths=[0,None], padding=st.borderPadding), MySpacer(0,st.spaceAfter)] else: padding, p1, p2, p3, p4=tablepadding(padding=st.borderPadding) t_style.add(*p1) t_style.add(*p2) t_style.add(*p3) t_style.add(*p4) node.elements = [MySpacer(0,st.spaceBefore), DelayedTable([['',rows]], style=t_style, colWidths=[0,None]), MySpacer(0,st.spaceAfter)] return node.elements rst2pdf-0.93/rst2pdf/aafigure_directive.py0000664000175000017500000000672411323433763020474 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Copyright (c) 2009 by Leandro Lucarella, Roberto Alsina # All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from docutils import nodes from docutils.nodes import General, Inline, Element, literal_block from docutils.parsers.rst import directives from docutils.parsers.rst import nodes from reportlab.graphics import renderPDF from docutils.parsers import rst from opt_imports import aafigure from log import log WARNED=False class Aanode(Element): children = () def __init__(self, content, options, rawsource='', *children, **attributes): self.content = content self.options = options Element.__init__(self, rawsource, *children, **attributes) def copy(self, **attributes): return Aanode(self.content, self.options, **self.attributes) def gen_flowable(self, style_options): options = dict(style_options) # explicit :option: always precedes options.update(self.options) visitor = aafigure.process( '\n'.join(self.content), aafigure.pdf.PDFOutputVisitor, options=options) return renderPDF.GraphicsFlowable(visitor.drawing) class Aafig(rst.Directive): """ Directive to insert an ASCII art figure to be rendered by aafigure. """ has_content = True required_arguments = 0 optional_arguments = 0 final_argument_whitespace = False option_spec = dict( scale = float, line_width = float, background = str, foreground = str, fill = str, name = str, aspect = float, textual = directives.flag, proportional = directives.flag, ) def run(self): global WARNED if 'textual' in self.options: self.options['textual'] = True if 'proportional' in self.options: self.options['proportional'] = True if aafigure is not None: return [Aanode(self.content, self.options)] if not WARNED: log.error('To render the aafigure directive correctly, please install aafigure') WARNED=True return [literal_block(text='\n'.join(self.content))] directives.register_directive('aafig', Aafig) directives.register_directive('aafigure', Aafig) rst2pdf-0.93/rst2pdf/templates/0000775000175000017500000000000012064144446016266 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/templates/cover.tmpl0000664000175000017500000000020211354436072020274 0ustar ralsinaralsina .. class:: title #{title} .. class:: subtitle #{subtitle} rst2pdf-0.93/rst2pdf/templates/sphinxcover.tmpl0000664000175000017500000000055611452402234021532 0ustar ralsinaralsina.. role:: normal .. cssclass:: title #{title} .. cssclass:: subtitle #{subtitle} .. raw:: pdf Spacer 0 3cm .. cssclass:: author #{author} .. raw:: pdf Spacer 0 3cm .. cssclass:: author :normal:`#{date}` .. raw:: pdf OddPageBreak rst2pdf-0.93/rst2pdf/math_flowable.py0000664000175000017500000001413711770655623017463 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms import tempfile import os import re from reportlab.platypus import * from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase import pdfmetrics from opt_imports import mathtext from log import log HAS_MATPLOTLIB = mathtext is not None if HAS_MATPLOTLIB: from matplotlib.font_manager import FontProperties from matplotlib.colors import ColorConverter fonts = {} def enclose(s): """Enclose the string in $...$ if needed""" if not re.match(r'.*\$.+\$.*', s, re.MULTILINE | re.DOTALL): s = u"$%s$" % s return s class Math(Flowable): def __init__(self, s, label=None, fontsize=12,color='black'): self.s = s self.label = label self.fontsize = fontsize self.color = color if HAS_MATPLOTLIB: self.parser = mathtext.MathTextParser("Pdf") else: log.error("Math support not available," " some parts of this document will be rendered incorrectly." " Install matplotlib.") Flowable.__init__(self) self.hAlign='CENTER' def wrap(self, aW, aH): if HAS_MATPLOTLIB: try: width, height, descent, glyphs, \ rects, used_characters = self.parser.parse( enclose(self.s), 72, prop=FontProperties(size=self.fontsize)) return width, height except: pass # FIXME: report error return 10, 10 def drawOn(self, canv, x, y, _sW=0): if _sW and hasattr(self,'hAlign'): from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT, TA_JUSTIFY a = self.hAlign if a in ('CENTER','CENTRE', TA_CENTER): x = x + 0.5*_sW elif a in ('RIGHT',TA_RIGHT): x = x + _sW elif a not in ('LEFT',TA_LEFT): raise ValueError, "Bad hAlign value "+str(a) height = 0 if HAS_MATPLOTLIB: global fonts canv.saveState() canv.translate(x, y) try: width, height, descent, glyphs, \ rects, used_characters = self.parser.parse( enclose(self.s), 72, prop=FontProperties(size=self.fontsize)) for ox, oy, fontname, fontsize, num, symbol_name in glyphs: if not fontname in fonts: fonts[fontname] = fontname pdfmetrics.registerFont(TTFont(fontname, fontname)) canv.setFont(fontname, fontsize) col_conv=ColorConverter() rgb_color=col_conv.to_rgb(self.color) canv.setFillColorRGB(rgb_color[0],rgb_color[1],rgb_color[2]) canv.drawString(ox, oy, unichr(num)) canv.setLineWidth(0) canv.setDash([]) for ox, oy, width, height in rects: canv.rect(ox, oy+2*height, width, height, fill=1) except: # FIXME: report error col_conv=ColorConverter() rgb_color=col_conv.to_rgb(self.color) canv.setFillColorRGB(rgb_color[0],rgb_color[1],rgb_color[2]) canv.drawString(0,0,self.s) canv.restoreState() else: canv.saveState() canv.drawString(x, y, self.s) canv.restoreState() if self.label: log.info('Drawing equation-%s'%self.label) canv.bookmarkHorizontal('equation-%s'%self.label,0,height) def descent(self): """Return the descent of this flowable, useful to align it when used inline.""" if HAS_MATPLOTLIB: width, height, descent, glyphs, rects, used_characters = \ self.parser.parse(enclose(self.s), 72, prop=FontProperties(size=self.fontsize)) return descent return 0 def genImage(self): """Create a PNG from the contents of this flowable. Required so we can put inline math in paragraphs. Returns the file name. The file is caller's responsability. """ dpi = 72 scale = 10 try: import Image import ImageFont import ImageDraw import ImageColor except ImportError: from PIL import ( Image, ImageFont, ImageDraw, ImageColor, ) if not HAS_MATPLOTLIB: img = Image.new('RGBA', (120, 120), (255,255,255,0)) else: width, height, descent, glyphs,\ rects, used_characters = self.parser.parse( enclose(self.s), dpi, prop=FontProperties(size=self.fontsize)) img = Image.new('RGBA', (int(width*scale), int(height*scale)),(255,255,255,0)) draw = ImageDraw.Draw(img) for ox, oy, fontname, fontsize, num, symbol_name in glyphs: font = ImageFont.truetype(fontname, int(fontsize*scale)) tw, th = draw.textsize(unichr(num), font=font) # No, I don't understand why that 4 is there. # As we used to say in the pure math # department, that was a numerical solution. col_conv=ColorConverter() fc=col_conv.to_rgb(self.color) rgb_color=(int(fc[0]*255),int(fc[1]*255),int(fc[2]*255)) draw.text((ox*scale, (height - oy - fontsize + 4)*scale), unichr(num), font=font,fill=rgb_color) for ox, oy, w, h in rects: x1 = ox*scale x2 = x1 + w*scale y1 = (height - oy)*scale y2 = y1 + h*scale draw.rectangle([x1, y1, x2, y2],(0,0,0)) fh, fn = tempfile.mkstemp(suffix=".png") os.close(fh) img.save(fn) return fn if __name__ == "__main__": doc = SimpleDocTemplate("mathtest.pdf") Story = [Math(r'\mathcal{R}\prod_{i=\alpha\mathcal{B}}'\ r'^\infty a_i\sin(2 \pi f x_i)')] doc.build(Story) rst2pdf-0.93/rst2pdf/styles/0000775000175000017500000000000012064144440015605 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/styles/tenpoint.style0000664000175000017500000000003311351252072020522 0ustar ralsinaralsinastyles: base: fontSize: 10 rst2pdf-0.93/rst2pdf/styles/serif.style0000664000175000017500000000017511351252072020001 0ustar ralsinaralsinafontsAlias: stdBold: Times-Bold stdBoldItalic: Times-BoldItalic stdFont: Times-Roman stdItalic: Times-Italic rst2pdf-0.93/rst2pdf/styles/bw.style0000664000175000017500000001150411351701171017276 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: black} pygments-c: fontName: stdMonoItalic parent: code textColor: black pygments-c1: fontName: stdMonoItalic parent: code textColor: black pygments-cm: fontName: stdMonoItalic parent: code textColor: black pygments-cp: {parent: code, textColor: black} pygments-cs: fontName: stdMonoItalic parent: code textColor: black pygments-err: {parent: code, textColor: black} pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: black} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: black pygments-gi: {parent: code, textColor: black} pygments-go: {parent: code, textColor: black} pygments-gp: fontName: stdMonoBold parent: code textColor: black pygments-gr: {parent: code, textColor: black} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: black} pygments-gu: fontName: stdMonoBold parent: code textColor: black pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: black} pygments-k: fontName: stdMonoBold parent: code textColor: black pygments-kc: fontName: stdMonoBold parent: code textColor: black pygments-kd: fontName: stdMonoBold parent: code textColor: black pygments-kn: fontName: stdMonoBold parent: code textColor: black pygments-kp: {parent: code, textColor: black} pygments-kr: fontName: stdMonoBold parent: code textColor: black pygments-kt: {parent: code, textColor: black} pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: black} pygments-mf: {parent: code, textColor: black} pygments-mh: {parent: code, textColor: black} pygments-mi: {parent: code, textColor: black} pygments-mo: {parent: code, textColor: black} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: black} pygments-nb: {parent: code, textColor: black} pygments-nc: fontName: stdMonoBold parent: code textColor: black pygments-nd: {parent: code, textColor: black} pygments-ne: fontName: stdMonoBold parent: code textColor: black pygments-nf: {parent: code, textColor: black} pygments-ni: fontName: stdMonoBold parent: code textColor: black pygments-nl: {parent: code, textColor: black} pygments-nn: fontName: stdMonoBold parent: code textColor: black pygments-no: {parent: code, textColor: black} pygments-nt: fontName: stdMonoBold parent: code textColor: black pygments-nv: {parent: code, textColor: black} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: black} pygments-ow: fontName: stdMonoBold parent: code textColor: black pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: fontName: stdMonoItalic parent: code textColor: black pygments-s1: fontName: stdMonoItalic parent: code textColor: black pygments-s2: fontName: stdMonoItalic parent: code textColor: black pygments-sb: fontName: stdMonoItalic parent: code textColor: black pygments-sc: fontName: stdMonoItalic parent: code textColor: black pygments-sd: fontName: stdMonoItalic parent: code textColor: black pygments-se: fontName: stdMonoItalic parent: code textColor: black pygments-sh: fontName: stdMonoItalic parent: code textColor: black pygments-si: fontName: stdMonoItalic parent: code textColor: black pygments-sr: fontName: stdMonoItalic parent: code textColor: black pygments-ss: fontName: stdMonoItalic parent: code textColor: black pygments-sx: fontName: stdMonoItalic parent: code textColor: black pygments-vc: {parent: code, textColor: black} pygments-vg: {parent: code, textColor: black} pygments-vi: {parent: code, textColor: black} pygments-w: {parent: code, textColor: black} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/a5-landscape.style0000664000175000017500000000003611442304051021116 0ustar ralsinaralsinapageSetup: size: A5-landscape rst2pdf-0.93/rst2pdf/styles/vs.style0000664000175000017500000000726411351701171017326 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: black} pygments-c: {parent: code, textColor: #008000} pygments-c1: {parent: code, textColor: #008000} pygments-cm: {parent: code, textColor: #008000} pygments-cp: {parent: code, textColor: #0000ff} pygments-cs: {parent: code, textColor: #008000} pygments-err: {parent: code, textColor: black} pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: black} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: black pygments-gi: {parent: code, textColor: black} pygments-go: {parent: code, textColor: black} pygments-gp: fontName: stdMonoBold parent: code textColor: black pygments-gr: {parent: code, textColor: black} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: black} pygments-gu: fontName: stdMonoBold parent: code textColor: black pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: black} pygments-k: {parent: code, textColor: #0000ff} pygments-kc: {parent: code, textColor: #0000ff} pygments-kd: {parent: code, textColor: #0000ff} pygments-kn: {parent: code, textColor: #0000ff} pygments-kp: {parent: code, textColor: #0000ff} pygments-kr: {parent: code, textColor: #0000ff} pygments-kt: {parent: code, textColor: #2b91af} pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: black} pygments-mf: {parent: code, textColor: black} pygments-mh: {parent: code, textColor: black} pygments-mi: {parent: code, textColor: black} pygments-mo: {parent: code, textColor: black} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: black} pygments-nb: {parent: code, textColor: black} pygments-nc: {parent: code, textColor: #2b91af} pygments-nd: {parent: code, textColor: black} pygments-ne: {parent: code, textColor: black} pygments-nf: {parent: code, textColor: black} pygments-ni: {parent: code, textColor: black} pygments-nl: {parent: code, textColor: black} pygments-nn: {parent: code, textColor: black} pygments-no: {parent: code, textColor: black} pygments-nt: {parent: code, textColor: black} pygments-nv: {parent: code, textColor: black} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: black} pygments-ow: {parent: code, textColor: #0000ff} pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #a31515} pygments-s1: {parent: code, textColor: #a31515} pygments-s2: {parent: code, textColor: #a31515} pygments-sb: {parent: code, textColor: #a31515} pygments-sc: {parent: code, textColor: #a31515} pygments-sd: {parent: code, textColor: #a31515} pygments-se: {parent: code, textColor: #a31515} pygments-sh: {parent: code, textColor: #a31515} pygments-si: {parent: code, textColor: #a31515} pygments-sr: {parent: code, textColor: #a31515} pygments-ss: {parent: code, textColor: #a31515} pygments-sx: {parent: code, textColor: #a31515} pygments-vc: {parent: code, textColor: black} pygments-vg: {parent: code, textColor: black} pygments-vi: {parent: code, textColor: black} pygments-w: {parent: code, textColor: black} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/b5.style0000664000175000017500000000002411351252072017170 0ustar ralsinaralsinapageSetup: size: b5 rst2pdf-0.93/rst2pdf/styles/b1-landscape.style0000664000175000017500000000003611442304051021113 0ustar ralsinaralsinapageSetup: size: b1-landscape rst2pdf-0.93/rst2pdf/styles/b4.style0000664000175000017500000000002411351252072017167 0ustar ralsinaralsinapageSetup: size: b4 rst2pdf-0.93/rst2pdf/styles/native.style0000664000175000017500000001046611351252072020163 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #24909d} pygments-c: fontName: stdMonoItalic parent: code textColor: #999999 pygments-c1: fontName: stdMonoItalic parent: code textColor: #999999 pygments-cm: fontName: stdMonoItalic parent: code textColor: #999999 pygments-cp: fontName: stdMonoBold parent: code textColor: #cd2828 pygments-cs: backColor: #520000 fontName: stdMonoBold parent: code textColor: #e50808 pygments-err: backColor: #e3d2d2 parent: code textColor: #a61717 pygments-g: {parent: code, textColor: #d0d0d0} pygments-gd: {parent: code, textColor: #d22323} pygments-ge: fontName: stdMonoItalic parent: code textColor: #d0d0d0 pygments-gh: fontName: stdMonoBold parent: code textColor: #ffffff pygments-gi: {parent: code, textColor: #589819} pygments-go: {parent: code, textColor: #cccccc} pygments-gp: {parent: code, textColor: #aaaaaa} pygments-gr: {parent: code, textColor: #d22323} pygments-gs: fontName: stdMonoBold parent: code textColor: #d0d0d0 pygments-gt: {parent: code, textColor: #d22323} pygments-gu: {parent: code, textColor: #ffffff} pygments-hll: backColor: #404040 parent: code textColor: black pygments-il: {parent: code, textColor: #3677a9} pygments-k: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-kc: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-kd: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-kn: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-kp: {parent: code, textColor: #6ab825} pygments-kr: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-kt: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-l: {parent: code, textColor: #d0d0d0} pygments-ld: {parent: code, textColor: #d0d0d0} pygments-m: {parent: code, textColor: #3677a9} pygments-mf: {parent: code, textColor: #3677a9} pygments-mh: {parent: code, textColor: #3677a9} pygments-mi: {parent: code, textColor: #3677a9} pygments-mo: {parent: code, textColor: #3677a9} pygments-n: {parent: code, textColor: #d0d0d0} pygments-na: {parent: code, textColor: #bbbbbb} pygments-nb: {parent: code, textColor: #24909d} pygments-nc: {parent: code, textColor: #447fcf} pygments-nd: {parent: code, textColor: #ffa500} pygments-ne: {parent: code, textColor: #bbbbbb} pygments-nf: {parent: code, textColor: #447fcf} pygments-ni: {parent: code, textColor: #d0d0d0} pygments-nl: {parent: code, textColor: #d0d0d0} pygments-nn: {parent: code, textColor: #447fcf} pygments-no: {parent: code, textColor: #40ffff} pygments-nt: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-nv: {parent: code, textColor: #40ffff} pygments-nx: {parent: code, textColor: #d0d0d0} pygments-o: {parent: code, textColor: #d0d0d0} pygments-ow: fontName: stdMonoBold parent: code textColor: #6ab825 pygments-p: {parent: code, textColor: #d0d0d0} pygments-py: {parent: code, textColor: #d0d0d0} pygments-s: {parent: code, textColor: #ed9d13} pygments-s1: {parent: code, textColor: #ed9d13} pygments-s2: {parent: code, textColor: #ed9d13} pygments-sb: {parent: code, textColor: #ed9d13} pygments-sc: {parent: code, textColor: #ed9d13} pygments-sd: {parent: code, textColor: #ed9d13} pygments-se: {parent: code, textColor: #ed9d13} pygments-sh: {parent: code, textColor: #ed9d13} pygments-si: {parent: code, textColor: #ed9d13} pygments-sr: {parent: code, textColor: #ed9d13} pygments-ss: {parent: code, textColor: #ed9d13} pygments-sx: {parent: code, textColor: #ffa500} pygments-vc: {parent: code, textColor: #40ffff} pygments-vg: {parent: code, textColor: #40ffff} pygments-vi: {parent: code, textColor: #40ffff} pygments-w: {parent: code, textColor: #666666} pygments-x: {parent: code, textColor: #d0d0d0} rst2pdf-0.93/rst2pdf/styles/letter-landscape.style0000664000175000017500000000004211442304051022105 0ustar ralsinaralsinapageSetup: size: letter-landscape rst2pdf-0.93/rst2pdf/styles/perldoc.style0000664000175000017500000001037511351701171020323 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #658b00} pygments-c: {parent: code, textColor: #228B22} pygments-c1: {parent: code, textColor: #228B22} pygments-cm: {parent: code, textColor: #228B22} pygments-cp: {parent: code, textColor: #1e889b} pygments-cs: fontName: stdMonoBold parent: code textColor: #8B008B pygments-err: backColor: #e3d2d2 parent: code textColor: #a61717 pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: #aa0000} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00aa00} pygments-go: {parent: code, textColor: #888888} pygments-gp: {parent: code, textColor: #555555} pygments-gr: {parent: code, textColor: #aa0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #aa0000} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #B452CD} pygments-k: fontName: stdMonoBold parent: code textColor: #8B008B pygments-kc: fontName: stdMonoBold parent: code textColor: #8B008B pygments-kd: fontName: stdMonoBold parent: code textColor: #8B008B pygments-kn: fontName: stdMonoBold parent: code textColor: #8B008B pygments-kp: fontName: stdMonoBold parent: code textColor: #8B008B pygments-kr: fontName: stdMonoBold parent: code textColor: #8B008B pygments-kt: fontName: stdMonoBold parent: code textColor: #a7a7a7 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #B452CD} pygments-mf: {parent: code, textColor: #B452CD} pygments-mh: {parent: code, textColor: #B452CD} pygments-mi: {parent: code, textColor: #B452CD} pygments-mo: {parent: code, textColor: #B452CD} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #658b00} pygments-nb: {parent: code, textColor: #658b00} pygments-nc: fontName: stdMonoBold parent: code textColor: #008b45 pygments-nd: {parent: code, textColor: #707a7c} pygments-ne: fontName: stdMonoBold parent: code textColor: #008b45 pygments-nf: {parent: code, textColor: #008b45} pygments-ni: {parent: code, textColor: black} pygments-nl: {parent: code, textColor: black} pygments-nn: {parent: code, textColor: #008b45} pygments-no: {parent: code, textColor: #00688B} pygments-nt: fontName: stdMonoBold parent: code textColor: #8B008B pygments-nv: {parent: code, textColor: #00688B} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: black} pygments-ow: {parent: code, textColor: #8B008B} pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #CD5555} pygments-s1: {parent: code, textColor: #CD5555} pygments-s2: {parent: code, textColor: #CD5555} pygments-sb: {parent: code, textColor: #CD5555} pygments-sc: {parent: code, textColor: #CD5555} pygments-sd: {parent: code, textColor: #CD5555} pygments-se: {parent: code, textColor: #CD5555} pygments-sh: fontName: stdMonoItalic parent: code textColor: #1c7e71 pygments-si: {parent: code, textColor: #CD5555} pygments-sr: {parent: code, textColor: #1c7e71} pygments-ss: {parent: code, textColor: #CD5555} pygments-sx: {parent: code, textColor: #cb6c20} pygments-vc: {parent: code, textColor: #00688B} pygments-vg: {parent: code, textColor: #00688B} pygments-vi: {parent: code, textColor: #00688B} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/eightpoint.style0000664000175000017500000000003211351252072021033 0ustar ralsinaralsinastyles: base: fontSize: 8 rst2pdf-0.93/rst2pdf/styles/legal.style0000664000175000017500000000002711351252072017751 0ustar ralsinaralsinapageSetup: size: legal rst2pdf-0.93/rst2pdf/styles/b2-landscape.style0000664000175000017500000000003611442304051021114 0ustar ralsinaralsinapageSetup: size: b2-landscape rst2pdf-0.93/rst2pdf/styles/11x17.style0000664000175000017500000000004111351252072017442 0ustar ralsinaralsinapageSetup: size: elevenseventeen rst2pdf-0.93/rst2pdf/styles/emacs.style0000664000175000017500000001102211351701171017751 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #AA22FF} pygments-c: fontName: stdMonoItalic parent: code textColor: #008800 pygments-c1: fontName: stdMonoItalic parent: code textColor: #008800 pygments-cm: fontName: stdMonoItalic parent: code textColor: #008800 pygments-cp: {parent: code, textColor: #008800} pygments-cs: fontName: stdMonoBold parent: code textColor: #008800 pygments-err: {parent: code, textColor: black} pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: #A00000} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00A000} pygments-go: {parent: code, textColor: #808080} pygments-gp: fontName: stdMonoBold parent: code textColor: #000080 pygments-gr: {parent: code, textColor: #FF0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #0040D0} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #666666} pygments-k: fontName: stdMonoBold parent: code textColor: #AA22FF pygments-kc: fontName: stdMonoBold parent: code textColor: #AA22FF pygments-kd: fontName: stdMonoBold parent: code textColor: #AA22FF pygments-kn: fontName: stdMonoBold parent: code textColor: #AA22FF pygments-kp: {parent: code, textColor: #AA22FF} pygments-kr: fontName: stdMonoBold parent: code textColor: #AA22FF pygments-kt: fontName: stdMonoBold parent: code textColor: #00BB00 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #666666} pygments-mf: {parent: code, textColor: #666666} pygments-mh: {parent: code, textColor: #666666} pygments-mi: {parent: code, textColor: #666666} pygments-mo: {parent: code, textColor: #666666} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #BB4444} pygments-nb: {parent: code, textColor: #AA22FF} pygments-nc: {parent: code, textColor: #0000FF} pygments-nd: {parent: code, textColor: #AA22FF} pygments-ne: fontName: stdMonoBold parent: code textColor: #D2413A pygments-nf: {parent: code, textColor: #00A000} pygments-ni: fontName: stdMonoBold parent: code textColor: #999999 pygments-nl: {parent: code, textColor: #A0A000} pygments-nn: fontName: stdMonoBold parent: code textColor: #0000FF pygments-no: {parent: code, textColor: #880000} pygments-nt: fontName: stdMonoBold parent: code textColor: #008000 pygments-nv: {parent: code, textColor: #B8860B} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: #666666} pygments-ow: fontName: stdMonoBold parent: code textColor: #AA22FF pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #BB4444} pygments-s1: {parent: code, textColor: #BB4444} pygments-s2: {parent: code, textColor: #BB4444} pygments-sb: {parent: code, textColor: #BB4444} pygments-sc: {parent: code, textColor: #BB4444} pygments-sd: fontName: stdMonoItalic parent: code textColor: #BB4444 pygments-se: fontName: stdMonoBold parent: code textColor: #BB6622 pygments-sh: {parent: code, textColor: #BB4444} pygments-si: fontName: stdMonoBold parent: code textColor: #BB6688 pygments-sr: {parent: code, textColor: #BB6688} pygments-ss: {parent: code, textColor: #B8860B} pygments-sx: {parent: code, textColor: #008000} pygments-vc: {parent: code, textColor: #B8860B} pygments-vg: {parent: code, textColor: #B8860B} pygments-vi: {parent: code, textColor: #B8860B} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/pastie.style0000664000175000017500000001227211351701171020156 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #003388} pygments-c: {parent: code, textColor: #888888} pygments-c1: {parent: code, textColor: #888888} pygments-cm: {parent: code, textColor: #888888} pygments-cp: fontName: stdMonoBold parent: code textColor: #cc0000 pygments-cs: backColor: #fff0f0 fontName: stdMonoBold parent: code textColor: #cc0000 pygments-err: backColor: #e3d2d2 parent: code textColor: #a61717 pygments-g: {parent: code, textColor: black} pygments-gd: backColor: #ffdddd parent: code textColor: #000000 pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: {parent: code, textColor: #303030} pygments-gi: backColor: #ddffdd parent: code textColor: #000000 pygments-go: {parent: code, textColor: #888888} pygments-gp: {parent: code, textColor: #555555} pygments-gr: {parent: code, textColor: #aa0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #aa0000} pygments-gu: {parent: code, textColor: #606060} pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: fontName: stdMonoBold parent: code textColor: #0000DD pygments-k: fontName: stdMonoBold parent: code textColor: #008800 pygments-kc: fontName: stdMonoBold parent: code textColor: #008800 pygments-kd: fontName: stdMonoBold parent: code textColor: #008800 pygments-kn: fontName: stdMonoBold parent: code textColor: #008800 pygments-kp: {parent: code, textColor: #008800} pygments-kr: fontName: stdMonoBold parent: code textColor: #008800 pygments-kt: fontName: stdMonoBold parent: code textColor: #888888 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: fontName: stdMonoBold parent: code textColor: #0000DD pygments-mf: fontName: stdMonoBold parent: code textColor: #0000DD pygments-mh: fontName: stdMonoBold parent: code textColor: #0000DD pygments-mi: fontName: stdMonoBold parent: code textColor: #0000DD pygments-mo: fontName: stdMonoBold parent: code textColor: #0000DD pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #336699} pygments-nb: {parent: code, textColor: #003388} pygments-nc: fontName: stdMonoBold parent: code textColor: #bb0066 pygments-nd: {parent: code, textColor: #555555} pygments-ne: fontName: stdMonoBold parent: code textColor: #bb0066 pygments-nf: fontName: stdMonoBold parent: code textColor: #0066bb pygments-ni: {parent: code, textColor: black} pygments-nl: fontName: stdMonoItalic parent: code textColor: #336699 pygments-nn: fontName: stdMonoBold parent: code textColor: #bb0066 pygments-no: fontName: stdMonoBold parent: code textColor: #003366 pygments-nt: fontName: stdMonoBold parent: code textColor: #bb0066 pygments-nv: {parent: code, textColor: #336699} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: black} pygments-ow: {parent: code, textColor: #008800} pygments-p: {parent: code, textColor: black} pygments-py: fontName: stdMonoBold parent: code textColor: #336699 pygments-s: backColor: #fff0f0 parent: code textColor: #dd2200 pygments-s1: backColor: #fff0f0 parent: code textColor: #dd2200 pygments-s2: backColor: #fff0f0 parent: code textColor: #dd2200 pygments-sb: backColor: #fff0f0 parent: code textColor: #dd2200 pygments-sc: backColor: #fff0f0 parent: code textColor: #dd2200 pygments-sd: backColor: #fff0f0 parent: code textColor: #dd2200 pygments-se: backColor: #fff0f0 parent: code textColor: #0044dd pygments-sh: backColor: #fff0f0 parent: code textColor: #dd2200 pygments-si: backColor: #fff0f0 parent: code textColor: #3333bb pygments-sr: backColor: #fff0ff parent: code textColor: #008800 pygments-ss: backColor: #fff0f0 parent: code textColor: #aa6600 pygments-sx: backColor: #f0fff0 parent: code textColor: #22bb22 pygments-vc: {parent: code, textColor: #336699} pygments-vg: {parent: code, textColor: #dd7700} pygments-vi: {parent: code, textColor: #3333bb} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/friendly.style0000664000175000017500000001107511351701171020505 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #007020} pygments-c: fontName: stdMonoItalic parent: code textColor: #60a0b0 pygments-c1: fontName: stdMonoItalic parent: code textColor: #60a0b0 pygments-cm: fontName: stdMonoItalic parent: code textColor: #60a0b0 pygments-cp: {parent: code, textColor: #007020} pygments-cs: backColor: #fff0f0 parent: code textColor: #60a0b0 pygments-err: {parent: code, textColor: black} pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: #A00000} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00A000} pygments-go: {parent: code, textColor: #808080} pygments-gp: fontName: stdMonoBold parent: code textColor: #c65d09 pygments-gr: {parent: code, textColor: #FF0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #0040D0} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #40a070} pygments-k: fontName: stdMonoBold parent: code textColor: #007020 pygments-kc: fontName: stdMonoBold parent: code textColor: #007020 pygments-kd: fontName: stdMonoBold parent: code textColor: #007020 pygments-kn: fontName: stdMonoBold parent: code textColor: #007020 pygments-kp: {parent: code, textColor: #007020} pygments-kr: fontName: stdMonoBold parent: code textColor: #007020 pygments-kt: {parent: code, textColor: #902000} pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #40a070} pygments-mf: {parent: code, textColor: #40a070} pygments-mh: {parent: code, textColor: #40a070} pygments-mi: {parent: code, textColor: #40a070} pygments-mo: {parent: code, textColor: #40a070} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #4070a0} pygments-nb: {parent: code, textColor: #007020} pygments-nc: fontName: stdMonoBold parent: code textColor: #0e84b5 pygments-nd: fontName: stdMonoBold parent: code textColor: #555555 pygments-ne: {parent: code, textColor: #007020} pygments-nf: {parent: code, textColor: #06287e} pygments-ni: fontName: stdMonoBold parent: code textColor: #d55537 pygments-nl: fontName: stdMonoBold parent: code textColor: #002070 pygments-nn: fontName: stdMonoBold parent: code textColor: #0e84b5 pygments-no: {parent: code, textColor: #60add5} pygments-nt: fontName: stdMonoBold parent: code textColor: #062873 pygments-nv: {parent: code, textColor: #bb60d5} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: #666666} pygments-ow: fontName: stdMonoBold parent: code textColor: #007020 pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #4070a0} pygments-s1: {parent: code, textColor: #4070a0} pygments-s2: {parent: code, textColor: #4070a0} pygments-sb: {parent: code, textColor: #4070a0} pygments-sc: {parent: code, textColor: #4070a0} pygments-sd: fontName: stdMonoItalic parent: code textColor: #4070a0 pygments-se: fontName: stdMonoBold parent: code textColor: #4070a0 pygments-sh: {parent: code, textColor: #4070a0} pygments-si: fontName: stdMonoItalic parent: code textColor: #70a0d0 pygments-sr: {parent: code, textColor: #235388} pygments-ss: {parent: code, textColor: #517918} pygments-sx: {parent: code, textColor: #c65d09} pygments-vc: {parent: code, textColor: #bb60d5} pygments-vg: {parent: code, textColor: #bb60d5} pygments-vi: {parent: code, textColor: #bb60d5} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/a1.style0000664000175000017500000000002411351252072017163 0ustar ralsinaralsinapageSetup: size: A1 rst2pdf-0.93/rst2pdf/styles/kerning.style0000664000175000017500000000077711351252072020336 0ustar ralsinaralsinafontsAlias: stdBold: DejaVu Sans-Bold stdBoldItalic: DejaVu Sans-BoldOblique stdFont: DejaVu Sans stdItalic: DejaVu Sans-Oblique stdMono: DejaVu Sans Mono stdMonoBold: DejaVu Sans Mono-Bold stdMonoBoldItalic: DejaVu Sans Mono-BoldOblique stdMonoItalic: DejaVu Sans Mono-Oblique stdSans: DejaVu Sans stdSansBold: DejaVu Sans-Bold stdSansBoldItalic: DejaVu Sans-BoldOblique stdSansItalic: DejaVu Sans-Oblique stdSerif: DejaVu Serif styles: base: kerning: true rst2pdf-0.93/rst2pdf/styles/b3.style0000664000175000017500000000002411351252072017166 0ustar ralsinaralsinapageSetup: size: b3 rst2pdf-0.93/rst2pdf/styles/letter.style0000664000175000017500000000003011351252072020156 0ustar ralsinaralsinapageSetup: size: letter rst2pdf-0.93/rst2pdf/styles/colorful.style0000664000175000017500000001230011351701171020506 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #007020} pygments-c: {parent: code, textColor: #808080} pygments-c1: {parent: code, textColor: #808080} pygments-cm: {parent: code, textColor: #808080} pygments-cp: {parent: code, textColor: #507090} pygments-cs: fontName: stdMonoBold parent: code textColor: #cc0000 pygments-err: backColor: #F0A0A0 parent: code textColor: #F00000 pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: #A00000} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00A000} pygments-go: {parent: code, textColor: #808080} pygments-gp: fontName: stdMonoBold parent: code textColor: #c65d09 pygments-gr: {parent: code, textColor: #FF0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #0040D0} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: fontName: stdMonoBold parent: code textColor: #0000D0 pygments-k: fontName: stdMonoBold parent: code textColor: #008000 pygments-kc: fontName: stdMonoBold parent: code textColor: #008000 pygments-kd: fontName: stdMonoBold parent: code textColor: #008000 pygments-kn: fontName: stdMonoBold parent: code textColor: #008000 pygments-kp: fontName: stdMonoBold parent: code textColor: #003080 pygments-kr: fontName: stdMonoBold parent: code textColor: #008000 pygments-kt: fontName: stdMonoBold parent: code textColor: #303090 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: fontName: stdMonoBold parent: code textColor: #6000E0 pygments-mf: fontName: stdMonoBold parent: code textColor: #6000E0 pygments-mh: fontName: stdMonoBold parent: code textColor: #005080 pygments-mi: fontName: stdMonoBold parent: code textColor: #0000D0 pygments-mo: fontName: stdMonoBold parent: code textColor: #4000E0 pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #0000C0} pygments-nb: {parent: code, textColor: #007020} pygments-nc: fontName: stdMonoBold parent: code textColor: #B00060 pygments-nd: fontName: stdMonoBold parent: code textColor: #505050 pygments-ne: fontName: stdMonoBold parent: code textColor: #F00000 pygments-nf: fontName: stdMonoBold parent: code textColor: #0060B0 pygments-ni: fontName: stdMonoBold parent: code textColor: #800000 pygments-nl: fontName: stdMonoBold parent: code textColor: #907000 pygments-nn: fontName: stdMonoBold parent: code textColor: #0e84b5 pygments-no: fontName: stdMonoBold parent: code textColor: #003060 pygments-nt: {parent: code, textColor: #007000} pygments-nv: {parent: code, textColor: #906030} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: #303030} pygments-ow: fontName: stdMonoBold parent: code textColor: #000000 pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: backColor: #fff0f0 parent: code textColor: black pygments-s1: backColor: #fff0f0 parent: code textColor: black pygments-s2: backColor: #fff0f0 parent: code textColor: black pygments-sb: backColor: #fff0f0 parent: code textColor: black pygments-sc: {parent: code, textColor: #0040D0} pygments-sd: {parent: code, textColor: #D04020} pygments-se: backColor: #fff0f0 fontName: stdMonoBold parent: code textColor: #606060 pygments-sh: backColor: #fff0f0 parent: code textColor: black pygments-si: backColor: #e0e0e0 parent: code textColor: black pygments-sr: backColor: #fff0ff parent: code textColor: #000000 pygments-ss: {parent: code, textColor: #A06000} pygments-sx: backColor: #fff0f0 parent: code textColor: #D02000 pygments-vc: {parent: code, textColor: #306090} pygments-vg: fontName: stdMonoBold parent: code textColor: #d07000 pygments-vi: {parent: code, textColor: #3030B0} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/a5.style0000664000175000017500000000002411351252072017167 0ustar ralsinaralsinapageSetup: size: A5 rst2pdf-0.93/rst2pdf/styles/manni.style0000664000175000017500000001121511351701171017767 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #336666} pygments-c: fontName: stdMonoItalic parent: code textColor: #0099FF pygments-c1: fontName: stdMonoItalic parent: code textColor: #0099FF pygments-cm: fontName: stdMonoItalic parent: code textColor: #0099FF pygments-cp: {parent: code, textColor: #009999} pygments-cs: fontName: stdMonoItalic parent: code textColor: #0099FF pygments-err: backColor: #FFAAAA parent: code textColor: #AA0000 pygments-g: {parent: code, textColor: black} pygments-gd: backColor: #FFCCCC parent: code textColor: black pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #003300 pygments-gi: backColor: #CCFFCC parent: code textColor: black pygments-go: {parent: code, textColor: #AAAAAA} pygments-gp: fontName: stdMonoBold parent: code textColor: #000099 pygments-gr: {parent: code, textColor: #FF0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #99CC66} pygments-gu: fontName: stdMonoBold parent: code textColor: #003300 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #FF6600} pygments-k: fontName: stdMonoBold parent: code textColor: #006699 pygments-kc: fontName: stdMonoBold parent: code textColor: #006699 pygments-kd: fontName: stdMonoBold parent: code textColor: #006699 pygments-kn: fontName: stdMonoBold parent: code textColor: #006699 pygments-kp: {parent: code, textColor: #006699} pygments-kr: fontName: stdMonoBold parent: code textColor: #006699 pygments-kt: fontName: stdMonoBold parent: code textColor: #007788 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #FF6600} pygments-mf: {parent: code, textColor: #FF6600} pygments-mh: {parent: code, textColor: #FF6600} pygments-mi: {parent: code, textColor: #FF6600} pygments-mo: {parent: code, textColor: #FF6600} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #330099} pygments-nb: {parent: code, textColor: #336666} pygments-nc: fontName: stdMonoBold parent: code textColor: #00AA88 pygments-nd: {parent: code, textColor: #9999FF} pygments-ne: fontName: stdMonoBold parent: code textColor: #CC0000 pygments-nf: {parent: code, textColor: #CC00FF} pygments-ni: fontName: stdMonoBold parent: code textColor: #999999 pygments-nl: {parent: code, textColor: #9999FF} pygments-nn: fontName: stdMonoBold parent: code textColor: #00CCFF pygments-no: {parent: code, textColor: #336600} pygments-nt: fontName: stdMonoBold parent: code textColor: #330099 pygments-nv: {parent: code, textColor: #003333} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: #555555} pygments-ow: fontName: stdMonoBold parent: code textColor: #000000 pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #CC3300} pygments-s1: {parent: code, textColor: #CC3300} pygments-s2: {parent: code, textColor: #CC3300} pygments-sb: {parent: code, textColor: #CC3300} pygments-sc: {parent: code, textColor: #CC3300} pygments-sd: fontName: stdMonoItalic parent: code textColor: #CC3300 pygments-se: fontName: stdMonoBold parent: code textColor: #CC3300 pygments-sh: {parent: code, textColor: #CC3300} pygments-si: {parent: code, textColor: #AA0000} pygments-sr: {parent: code, textColor: #33AAAA} pygments-ss: {parent: code, textColor: #FFCC33} pygments-sx: {parent: code, textColor: #CC3300} pygments-vc: {parent: code, textColor: #003333} pygments-vg: {parent: code, textColor: #003333} pygments-vi: {parent: code, textColor: #003333} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/b1.style0000664000175000017500000000002411351252072017164 0ustar ralsinaralsinapageSetup: size: b1 rst2pdf-0.93/rst2pdf/styles/monokai.style0000664000175000017500000000722511351701171020330 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #f8f8f2} pygments-c: {parent: code, textColor: #75715e} pygments-c1: {parent: code, textColor: #75715e} pygments-cm: {parent: code, textColor: #75715e} pygments-cp: {parent: code, textColor: #75715e} pygments-cs: {parent: code, textColor: #75715e} pygments-err: backColor: #1e0010 parent: code textColor: #960050 pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: black} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: {parent: code, textColor: black} pygments-gi: {parent: code, textColor: black} pygments-go: {parent: code, textColor: black} pygments-gp: {parent: code, textColor: black} pygments-gr: {parent: code, textColor: black} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: black} pygments-gu: {parent: code, textColor: black} pygments-hll: backColor: #49483e parent: code textColor: black pygments-il: {parent: code, textColor: #ae81ff} pygments-k: {parent: code, textColor: #66d9ef} pygments-kc: {parent: code, textColor: #66d9ef} pygments-kd: {parent: code, textColor: #66d9ef} pygments-kn: {parent: code, textColor: #f92672} pygments-kp: {parent: code, textColor: #66d9ef} pygments-kr: {parent: code, textColor: #66d9ef} pygments-kt: {parent: code, textColor: #66d9ef} pygments-l: {parent: code, textColor: #ae81ff} pygments-ld: {parent: code, textColor: #e6db74} pygments-m: {parent: code, textColor: #ae81ff} pygments-mf: {parent: code, textColor: #ae81ff} pygments-mh: {parent: code, textColor: #ae81ff} pygments-mi: {parent: code, textColor: #ae81ff} pygments-mo: {parent: code, textColor: #ae81ff} pygments-n: {parent: code, textColor: #f8f8f2} pygments-na: {parent: code, textColor: #a6e22e} pygments-nb: {parent: code, textColor: #f8f8f2} pygments-nc: {parent: code, textColor: #a6e22e} pygments-nd: {parent: code, textColor: #a6e22e} pygments-ne: {parent: code, textColor: #a6e22e} pygments-nf: {parent: code, textColor: #a6e22e} pygments-ni: {parent: code, textColor: #f8f8f2} pygments-nl: {parent: code, textColor: #f8f8f2} pygments-nn: {parent: code, textColor: #f8f8f2} pygments-no: {parent: code, textColor: #66d9ef} pygments-nt: {parent: code, textColor: #f92672} pygments-nv: {parent: code, textColor: #f8f8f2} pygments-nx: {parent: code, textColor: #a6e22e} pygments-o: {parent: code, textColor: #f92672} pygments-ow: {parent: code, textColor: #f92672} pygments-p: {parent: code, textColor: #f8f8f2} pygments-py: {parent: code, textColor: #f8f8f2} pygments-s: {parent: code, textColor: #e6db74} pygments-s1: {parent: code, textColor: #e6db74} pygments-s2: {parent: code, textColor: #e6db74} pygments-sb: {parent: code, textColor: #e6db74} pygments-sc: {parent: code, textColor: #e6db74} pygments-sd: {parent: code, textColor: #e6db74} pygments-se: {parent: code, textColor: #ae81ff} pygments-sh: {parent: code, textColor: #e6db74} pygments-si: {parent: code, textColor: #e6db74} pygments-sr: {parent: code, textColor: #e6db74} pygments-ss: {parent: code, textColor: #e6db74} pygments-sx: {parent: code, textColor: #e6db74} pygments-vc: {parent: code, textColor: #f8f8f2} pygments-vg: {parent: code, textColor: #f8f8f2} pygments-vi: {parent: code, textColor: #f8f8f2} pygments-w: {parent: code, textColor: #f8f8f2} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/sphinx.style0000664000175000017500000001763611444155711020221 0ustar ralsinaralsinapageSetup: firstTemplate: coverPage margin-bottom: 8mm margin-left: 12mm margin-right: 12mm margin-top: 8mm styles: admonition: backColor: #EEFFCC borderColor: #AACC99 borderPadding: 8 borderWidth: 0.5 commands: [] [VALIGN, [0, 0], [-1, -1], TOP] spaceAfter: 6 spaceBefore: 12 admonition-heading: backColor: null borderColor: null borderPadding: 0 borderWidth: 0 leftIndent: 0 parent: heading3 textColor: black admonition-title: backColor: null borderColor: null borderPadding: 0 borderWidth: 0 leftIndent: 0 parent: heading3 attribute: parent: bodytext author: alignment: TA_CENTER fontName: stdSansBold fontSize: 120% parent: bodytext centered: alignment: TA_CENTER fontName: stdBold parent: bodytext class: parent: bodytext code: allowOrphans: false allowWidows: false backColor: #EEFFCC borderColor: #AACC99 borderPadding: [6, 0, 0, 4] borderWidth: 0.3 spaceBefore: 0 confval: parent: bodytext data: parent: bodytext kbd: parent: bodytext desc: {parent: bodytext, spaceBefore: 6} descclassname: {fontName: stdMono, parent: literal} descname: {fontName: stdMonoBold, parent: literal} descparameter: {fontName: stdMono, parent: literal} desctype: {fontName: stdMono, parent: literal} directive: parent: bodytext exception: parent: bodytext heading: backColor: #F2F2F2 borderColor: #CCCCCC borderPadding: [6, 0, 0, 10] borderWidth: 0.3 fontName: stdSansBold fontSize: 10 leading: 10 leftIndent: 0 spaceBefore: 16 textColor: #20435C heading1: fontSize: 200% heading2: fontSize: 160% heading3: fontSize: 140% heading4: fontSize: 120% heading5: fontSize: 110% heading6: fontSize: 100% hlist: alignment: TA_CENTER commands: [] [VALIGN, [0, 0], [-1, -1], TOP] parent: normal spaceAfter: 0 spaceBefore: 6 method: {fontName: stdSansBold, parent: bodytext} note: backColor: #EEEEEE borderColor: #CCCCCC parent: admonition optional: {fontName: stdMonoBold, parent: literal} pygments-bp: {parent: code, textColor: #007020} pygments-c: {parent: code, textColor: #808080} pygments-c1: {parent: code, textColor: #808080} pygments-cm: {parent: code, textColor: #808080} pygments-cp: {parent: code, textColor: #507090} pygments-cs: fontName: stdMonoBold parent: code textColor: #cc0000 pygments-err: backColor: #F0A0A0 parent: code textColor: #F00000 pygments-gd: {parent: code, textColor: #A00000} pygments-ge: {fontName: stdMonoItalic, parent: code} pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00A000} pygments-go: {parent: code, textColor: #808080} pygments-gp: fontName: stdMonoBold parent: code textColor: #c65d09 pygments-gr: {parent: code, textColor: #FF0000} pygments-gs: {fontName: stdMonoBold, parent: code} pygments-gt: {parent: code, textColor: #0040D0} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: {backColor: #ffffcc, parent: code} pygments-il: fontName: stdMonoBold parent: code textColor: #0000D0 pygments-k: fontName: stdMonoBold parent: code textColor: #008000 pygments-kc: fontName: stdMonoBold parent: code textColor: #008000 pygments-kd: fontName: stdMonoBold parent: code textColor: #008000 pygments-kn: fontName: stdMonoBold parent: code textColor: #008000 pygments-kp: fontName: stdMonoBold parent: code textColor: #003080 pygments-kr: fontName: stdMonoBold parent: code textColor: #008000 pygments-kt: fontName: stdMonoBold parent: code textColor: #303090 pygments-m: fontName: stdMonoBold parent: code textColor: #6000E0 pygments-mf: fontName: stdMonoBold parent: code textColor: #6000E0 pygments-mh: fontName: stdMonoBold parent: code textColor: #005080 pygments-mi: fontName: stdMonoBold parent: code textColor: #0000D0 pygments-mo: fontName: stdMonoBold parent: code textColor: #4000E0 pygments-n-identifier: parent: code pygments-na: {parent: code, textColor: #0000C0} pygments-nb: {parent: code, textColor: #007020} pygments-nc: fontName: stdMonoBold parent: code textColor: #B00060 pygments-nd: fontName: stdMonoBold parent: code textColor: #505050 pygments-ne: fontName: stdMonoBold parent: code textColor: #F00000 pygments-nf: fontName: stdMonoBold parent: code textColor: #0060B0 pygments-ni: fontName: stdMonoBold parent: code textColor: #800000 pygments-nl: fontName: stdMonoBold parent: code textColor: #907000 pygments-nn: fontName: stdMonoBold parent: code textColor: #0e84b5 pygments-no: fontName: stdMonoBold parent: code textColor: #003060 pygments-nt: {parent: code, textColor: #007000} pygments-nv: {parent: code, textColor: #906030} pygments-o: {parent: code, textColor: #303030} pygments-ow: fontName: stdMonoBold parent: code textColor: #000000 pygments-s: {backColor: #fff0f0, parent: code} pygments-s1: {backColor: #fff0f0, parent: code} pygments-s2: {backColor: #fff0f0, parent: code} pygments-sb: {backColor: #fff0f0, parent: code} pygments-sc: {parent: code, textColor: #0040D0} pygments-sd: {parent: code, textColor: #D04020} pygments-se: backColor: #fff0f0 fontName: stdMonoBold parent: code textColor: #606060 pygments-sh: {backColor: #fff0f0, parent: code} pygments-si: {backColor: #e0e0e0, parent: code} pygments-sr: backColor: #fff0ff parent: code textColor: #000000 pygments-ss: {parent: code, textColor: #A06000} pygments-sx: backColor: #fff0f0 parent: code textColor: #D02000 pygments-vc: {parent: code, textColor: #306090} pygments-vg: fontName: stdMonoBold parent: code textColor: #d07000 pygments-vi: {parent: code, textColor: #3030B0} pygments-w: {parent: code, textColor: #bbbbbb} returns: parent: bodytext role: parent: bodytext seealso: backColor: #FFFFCC borderColor: #FFFF66 parent: admonition sidebar: backColor: #EEFFCC borderColor: #AACC99 borderPadding: 8 borderWidth: 0.5 spaceAfter: 6 spaceBefore: 12 sidebar-subtitle: backColor: null borderColor: null borderPadding: 0 borderWidth: 0 leftIndent: 0 parent: heading4 spaceBefore: 0 sidebar-title: backColor: null borderColor: null borderPadding: 0 borderWidth: 0 leftIndent: 0 parent: heading3 table-heading: {borderWidth: 0, parent: heading} todo-node: backColor: #FFFFFF borderColor: #CCCCCC parent: admonition versionmodified: {fontName: stdItalic, parent: bodytext} warning: backColor: #FFE4E4 borderColor: #FF6666 parent: admonition xref: {fontName: stdMonoBold, parent: code} rst2pdf-0.93/rst2pdf/styles/fruity.style0000664000175000017500000001125411351252072020213 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #ffffff} pygments-c: backColor: #0f140f fontName: stdMonoItalic parent: code textColor: #008800 pygments-c1: backColor: #0f140f fontName: stdMonoItalic parent: code textColor: #008800 pygments-cm: backColor: #0f140f fontName: stdMonoItalic parent: code textColor: #008800 pygments-cp: backColor: #0f140f fontName: stdMonoItalic parent: code textColor: #ff0007 pygments-cs: backColor: #0f140f fontName: stdMonoItalic parent: code textColor: #008800 pygments-err: {parent: code, textColor: #ffffff} pygments-g: {parent: code, textColor: #ffffff} pygments-gd: {parent: code, textColor: #ffffff} pygments-ge: {parent: code, textColor: #ffffff} pygments-gh: fontName: stdMonoBold parent: code textColor: #ffffff pygments-gi: {parent: code, textColor: #ffffff} pygments-go: backColor: #222222 parent: code textColor: #444444 pygments-gp: {parent: code, textColor: #ffffff} pygments-gr: {parent: code, textColor: #ffffff} pygments-gs: {parent: code, textColor: #ffffff} pygments-gt: {parent: code, textColor: #ffffff} pygments-gu: fontName: stdMonoBold parent: code textColor: #ffffff pygments-hll: backColor: #333333 parent: code textColor: black pygments-il: fontName: stdMonoBold parent: code textColor: #0086f7 pygments-k: fontName: stdMonoBold parent: code textColor: #fb660a pygments-kc: fontName: stdMonoBold parent: code textColor: #fb660a pygments-kd: fontName: stdMonoBold parent: code textColor: #fb660a pygments-kn: fontName: stdMonoBold parent: code textColor: #fb660a pygments-kp: {parent: code, textColor: #fb660a} pygments-kr: fontName: stdMonoBold parent: code textColor: #fb660a pygments-kt: fontName: stdMonoBold parent: code textColor: #cdcaa9 pygments-l: {parent: code, textColor: #ffffff} pygments-ld: {parent: code, textColor: #ffffff} pygments-m: fontName: stdMonoBold parent: code textColor: #0086f7 pygments-mf: fontName: stdMonoBold parent: code textColor: #0086f7 pygments-mh: fontName: stdMonoBold parent: code textColor: #0086f7 pygments-mi: fontName: stdMonoBold parent: code textColor: #0086f7 pygments-mo: fontName: stdMonoBold parent: code textColor: #0086f7 pygments-n: {parent: code, textColor: #ffffff} pygments-na: fontName: stdMonoBold parent: code textColor: #ff0086 pygments-nb: {parent: code, textColor: #ffffff} pygments-nc: {parent: code, textColor: #ffffff} pygments-nd: {parent: code, textColor: #ffffff} pygments-ne: {parent: code, textColor: #ffffff} pygments-nf: fontName: stdMonoBold parent: code textColor: #ff0086 pygments-ni: {parent: code, textColor: #ffffff} pygments-nl: {parent: code, textColor: #ffffff} pygments-nn: {parent: code, textColor: #ffffff} pygments-no: {parent: code, textColor: #0086d2} pygments-nt: fontName: stdMonoBold parent: code textColor: #fb660a pygments-nv: {parent: code, textColor: #fb660a} pygments-nx: {parent: code, textColor: #ffffff} pygments-o: {parent: code, textColor: #ffffff} pygments-ow: {parent: code, textColor: #ffffff} pygments-p: {parent: code, textColor: #ffffff} pygments-py: {parent: code, textColor: #ffffff} pygments-s: {parent: code, textColor: #0086d2} pygments-s1: {parent: code, textColor: #0086d2} pygments-s2: {parent: code, textColor: #0086d2} pygments-sb: {parent: code, textColor: #0086d2} pygments-sc: {parent: code, textColor: #0086d2} pygments-sd: {parent: code, textColor: #0086d2} pygments-se: {parent: code, textColor: #0086d2} pygments-sh: {parent: code, textColor: #0086d2} pygments-si: {parent: code, textColor: #0086d2} pygments-sr: {parent: code, textColor: #0086d2} pygments-ss: {parent: code, textColor: #0086d2} pygments-sx: {parent: code, textColor: #0086d2} pygments-vc: {parent: code, textColor: #fb660a} pygments-vg: {parent: code, textColor: #fb660a} pygments-vi: {parent: code, textColor: #fb660a} pygments-w: {parent: code, textColor: #888888} pygments-x: {parent: code, textColor: #ffffff} rst2pdf-0.93/rst2pdf/styles/freetype-sans.style0000664000175000017500000000042411351252072021453 0ustar ralsinaralsinafontsAlias: stdBold: Sans-Bold stdBoldItalic: Sans-BoldItalic stdFont: Sans stdItalic: Sans-Italic stdMono: Monospace stdMonoBold: Monospace-Bold stdMonoBoldItalic: Monospace-BoldItalic stdMonoItalic: Monospace-Italic stdSerif: Serif-Roman rst2pdf-0.93/rst2pdf/styles/b6.style0000664000175000017500000000002411351252072017171 0ustar ralsinaralsinapageSetup: size: b6 rst2pdf-0.93/rst2pdf/styles/double-sided.style0000664000175000017500000000003611351252072021225 0ustar ralsinaralsinapageSetup: margin-gutter: 2cm rst2pdf-0.93/rst2pdf/styles/b5-landscape.style0000664000175000017500000000003611442304051021117 0ustar ralsinaralsinapageSetup: size: b5-landscape rst2pdf-0.93/rst2pdf/styles/tango.style0000664000175000017500000001161611351252072020003 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #3465a4} pygments-c: fontName: stdMonoItalic parent: code textColor: #8f5902 pygments-c1: fontName: stdMonoItalic parent: code textColor: #8f5902 pygments-cm: fontName: stdMonoItalic parent: code textColor: #8f5902 pygments-cp: fontName: stdMonoItalic parent: code textColor: #8f5902 pygments-cs: fontName: stdMonoItalic parent: code textColor: #8f5902 pygments-err: {parent: code, textColor: #a40000} pygments-g: {parent: code, textColor: #000000} pygments-gd: {parent: code, textColor: #a40000} pygments-ge: fontName: stdMonoItalic parent: code textColor: #000000 pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00A000} pygments-go: fontName: stdMonoItalic parent: code textColor: #000000 pygments-gp: {parent: code, textColor: #8f5902} pygments-gr: {parent: code, textColor: #ef2929} pygments-gs: fontName: stdMonoBold parent: code textColor: #000000 pygments-gt: fontName: stdMonoBold parent: code textColor: #a40000 pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: fontName: stdMonoBold parent: code textColor: #0000cf pygments-k: fontName: stdMonoBold parent: code textColor: #204a87 pygments-kc: fontName: stdMonoBold parent: code textColor: #204a87 pygments-kd: fontName: stdMonoBold parent: code textColor: #204a87 pygments-kn: fontName: stdMonoBold parent: code textColor: #204a87 pygments-kp: fontName: stdMonoBold parent: code textColor: #204a87 pygments-kr: fontName: stdMonoBold parent: code textColor: #204a87 pygments-kt: fontName: stdMonoBold parent: code textColor: #204a87 pygments-l: {parent: code, textColor: #000000} pygments-ld: {parent: code, textColor: #000000} pygments-m: fontName: stdMonoBold parent: code textColor: #0000cf pygments-mf: fontName: stdMonoBold parent: code textColor: #0000cf pygments-mh: fontName: stdMonoBold parent: code textColor: #0000cf pygments-mi: fontName: stdMonoBold parent: code textColor: #0000cf pygments-mo: fontName: stdMonoBold parent: code textColor: #0000cf pygments-n: {parent: code, textColor: #000000} pygments-na: {parent: code, textColor: #c4a000} pygments-nb: {parent: code, textColor: #204a87} pygments-nc: {parent: code, textColor: #000000} pygments-nd: fontName: stdMonoBold parent: code textColor: #5c35cc pygments-ne: fontName: stdMonoBold parent: code textColor: #cc0000 pygments-nf: {parent: code, textColor: #000000} pygments-ni: {parent: code, textColor: #ce5c00} pygments-nl: {parent: code, textColor: #f57900} pygments-nn: {parent: code, textColor: #000000} pygments-no: {parent: code, textColor: #000000} pygments-nt: fontName: stdMonoBold parent: code textColor: #204a87 pygments-nv: {parent: code, textColor: #000000} pygments-nx: {parent: code, textColor: #000000} pygments-o: fontName: stdMonoBold parent: code textColor: #ce5c00 pygments-ow: fontName: stdMonoBold parent: code textColor: #204a87 pygments-p: fontName: stdMonoBold parent: code textColor: #000000 pygments-py: {parent: code, textColor: #000000} pygments-s: {parent: code, textColor: #4e9a06} pygments-s1: {parent: code, textColor: #4e9a06} pygments-s2: {parent: code, textColor: #4e9a06} pygments-sb: {parent: code, textColor: #4e9a06} pygments-sc: {parent: code, textColor: #4e9a06} pygments-sd: fontName: stdMonoItalic parent: code textColor: #8f5902 pygments-se: {parent: code, textColor: #4e9a06} pygments-sh: {parent: code, textColor: #4e9a06} pygments-si: {parent: code, textColor: #4e9a06} pygments-sr: {parent: code, textColor: #4e9a06} pygments-ss: {parent: code, textColor: #4e9a06} pygments-sx: {parent: code, textColor: #4e9a06} pygments-vc: {parent: code, textColor: #000000} pygments-vg: {parent: code, textColor: #000000} pygments-vi: {parent: code, textColor: #000000} pygments-w: {parent: code, textColor: #f8f8f8} pygments-x: {parent: code, textColor: #000000} rst2pdf-0.93/rst2pdf/styles/b3-landscape.style0000664000175000017500000000003611442304051021115 0ustar ralsinaralsinapageSetup: size: b3-landscape rst2pdf-0.93/rst2pdf/styles/default.style0000664000175000017500000001102411351701171020307 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #008000} pygments-c: fontName: stdMonoItalic parent: code textColor: #408080 pygments-c1: fontName: stdMonoItalic parent: code textColor: #408080 pygments-cm: fontName: stdMonoItalic parent: code textColor: #408080 pygments-cp: {parent: code, textColor: #BC7A00} pygments-cs: fontName: stdMonoItalic parent: code textColor: #408080 pygments-err: {parent: code, textColor: black} pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: #A00000} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00A000} pygments-go: {parent: code, textColor: #808080} pygments-gp: fontName: stdMonoBold parent: code textColor: #000080 pygments-gr: {parent: code, textColor: #FF0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #0040D0} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #666666} pygments-k: fontName: stdMonoBold parent: code textColor: #008000 pygments-kc: fontName: stdMonoBold parent: code textColor: #008000 pygments-kd: fontName: stdMonoBold parent: code textColor: #008000 pygments-kn: fontName: stdMonoBold parent: code textColor: #008000 pygments-kp: {parent: code, textColor: #008000} pygments-kr: fontName: stdMonoBold parent: code textColor: #008000 pygments-kt: {parent: code, textColor: #B00040} pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #666666} pygments-mf: {parent: code, textColor: #666666} pygments-mh: {parent: code, textColor: #666666} pygments-mi: {parent: code, textColor: #666666} pygments-mo: {parent: code, textColor: #666666} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #7D9029} pygments-nb: {parent: code, textColor: #008000} pygments-nc: fontName: stdMonoBold parent: code textColor: #0000FF pygments-nd: {parent: code, textColor: #AA22FF} pygments-ne: fontName: stdMonoBold parent: code textColor: #D2413A pygments-nf: {parent: code, textColor: #0000FF} pygments-ni: fontName: stdMonoBold parent: code textColor: #999999 pygments-nl: {parent: code, textColor: #A0A000} pygments-nn: fontName: stdMonoBold parent: code textColor: #0000FF pygments-no: {parent: code, textColor: #880000} pygments-nt: fontName: stdMonoBold parent: code textColor: #008000 pygments-nv: {parent: code, textColor: #19177C} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: #666666} pygments-ow: fontName: stdMonoBold parent: code textColor: #AA22FF pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #BA2121} pygments-s1: {parent: code, textColor: #BA2121} pygments-s2: {parent: code, textColor: #BA2121} pygments-sb: {parent: code, textColor: #BA2121} pygments-sc: {parent: code, textColor: #BA2121} pygments-sd: fontName: stdMonoItalic parent: code textColor: #BA2121 pygments-se: fontName: stdMonoBold parent: code textColor: #BB6622 pygments-sh: {parent: code, textColor: #BA2121} pygments-si: fontName: stdMonoBold parent: code textColor: #BB6688 pygments-sr: {parent: code, textColor: #BB6688} pygments-ss: {parent: code, textColor: #19177C} pygments-sx: {parent: code, textColor: #008000} pygments-vc: {parent: code, textColor: #19177C} pygments-vg: {parent: code, textColor: #19177C} pygments-vi: {parent: code, textColor: #19177C} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/b4-landscape.style0000664000175000017500000000003611442304051021116 0ustar ralsinaralsinapageSetup: size: b4-landscape rst2pdf-0.93/rst2pdf/styles/a2.style0000664000175000017500000000002411351252072017164 0ustar ralsinaralsinapageSetup: size: A2 rst2pdf-0.93/rst2pdf/styles/debugtables.style0000664000175000017500000000175411423561422021160 0ustar ralsinaralsinastyles: bullet-list: commands: [] [VALIGN, [0, 0], [-1, -1], TOP] [INNERGRID, [0, 0], [-1, -1], 0.25, black] [BOX, [0, 0], [-1, -1], 0.25, black] endnote: colWidths: [3cm, null] commands: [] [INNERGRID, [0, 0], [-1, -1], 0.25, black] [BOX, [0, 0], [-1, -1], 0.25, black] field-list: commands: [] [INNERGRID, [0, 0], [-1, -1], 0.25, black] [BOX, [0, 0], [-1, -1], 0.25, black] item-list: commands: [] [VALIGN, [0, 0], [-1, -1], TOP] [TOPPADDING, [0, 0], [-1, -1], 0] [BOTTOMPADDING, [0, 0], [-1, -1], 0] [RIGHTPADDING, [0, 0], [1, -1], 0] [INNERGRID, [0, 0], [-1, -1], 0.25, black] [BOX, [0, 0], [-1, -1], 0.25, black] option-list: commands: [] [INNERGRID, [0, 0], [-1, -1], 0.25, black] [BOX, [0, 0], [-1, -1], 0.25, black] rst2pdf-0.93/rst2pdf/styles/a6-landscape.style0000664000175000017500000000003611442304051021117 0ustar ralsinaralsinapageSetup: size: A6-landscape rst2pdf-0.93/rst2pdf/styles/a4-landscape.style0000664000175000017500000000003611442304051021115 0ustar ralsinaralsinapageSetup: size: A4-landscape rst2pdf-0.93/rst2pdf/styles/a4.style0000664000175000017500000000002411351252072017166 0ustar ralsinaralsinapageSetup: size: A4 rst2pdf-0.93/rst2pdf/styles/no-compact-lists.style0000664000175000017500000000016411423561422022065 0ustar ralsinaralsinastyles: bullet-list: {parent: bodytext, spaceBefore: 8} enumerated-list: {parent: bodytext, spaceBefore: 8} rst2pdf-0.93/rst2pdf/styles/a3.style0000664000175000017500000000002411351252072017165 0ustar ralsinaralsinapageSetup: size: A3 rst2pdf-0.93/rst2pdf/styles/a6.style0000664000175000017500000000002411351252072017170 0ustar ralsinaralsinapageSetup: size: A6 rst2pdf-0.93/rst2pdf/styles/twocolumn.style0000664000175000017500000000012311351252072020711 0ustar ralsinaralsinapageSetup: firstTemplate: twoColumn margin-left: 1cm margin-right: 1cm rst2pdf-0.93/rst2pdf/styles/a1-landscape.style0000664000175000017500000000003611442304051021112 0ustar ralsinaralsinapageSetup: size: A1-landscape rst2pdf-0.93/rst2pdf/styles/a2-landscape.style0000664000175000017500000000003611442304051021113 0ustar ralsinaralsinapageSetup: size: A2-landscape rst2pdf-0.93/rst2pdf/styles/freetype-serif.style0000664000175000017500000000043011351252072021614 0ustar ralsinaralsinafontsAlias: stdBold: Serif-Bold stdBoldItalic: Serif-BoldItalic stdFont: Serif stdItalic: Serif-Italic stdMono: Monospace stdMonoBold: Monospace-Bold stdMonoBoldItalic: Monospace-BoldItalic stdMonoItalic: Monospace-Italic stdSerif: Serif-Roman rst2pdf-0.93/rst2pdf/styles/borland.style0000664000175000017500000001041511351701171020307 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: black} pygments-c: fontName: stdMonoItalic parent: code textColor: #008800 pygments-c1: fontName: stdMonoItalic parent: code textColor: #008800 pygments-cm: fontName: stdMonoItalic parent: code textColor: #008800 pygments-cp: {parent: code, textColor: #008080} pygments-cs: fontName: stdMonoBold parent: code textColor: #008800 pygments-err: backColor: #e3d2d2 parent: code textColor: #a61717 pygments-g: {parent: code, textColor: black} pygments-gd: backColor: #ffdddd parent: code textColor: #000000 pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: {parent: code, textColor: #999999} pygments-gi: backColor: #ddffdd parent: code textColor: #000000 pygments-go: {parent: code, textColor: #888888} pygments-gp: {parent: code, textColor: #555555} pygments-gr: {parent: code, textColor: #aa0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #aa0000} pygments-gu: {parent: code, textColor: #aaaaaa} pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #0000FF} pygments-k: fontName: stdMonoBold parent: code textColor: #000080 pygments-kc: fontName: stdMonoBold parent: code textColor: #000080 pygments-kd: fontName: stdMonoBold parent: code textColor: #000080 pygments-kn: fontName: stdMonoBold parent: code textColor: #000080 pygments-kp: fontName: stdMonoBold parent: code textColor: #000080 pygments-kr: fontName: stdMonoBold parent: code textColor: #000080 pygments-kt: fontName: stdMonoBold parent: code textColor: #000080 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #0000FF} pygments-mf: {parent: code, textColor: #0000FF} pygments-mh: {parent: code, textColor: #0000FF} pygments-mi: {parent: code, textColor: #0000FF} pygments-mo: {parent: code, textColor: #0000FF} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #FF0000} pygments-nb: {parent: code, textColor: black} pygments-nc: {parent: code, textColor: black} pygments-nd: {parent: code, textColor: black} pygments-ne: {parent: code, textColor: black} pygments-nf: {parent: code, textColor: black} pygments-ni: {parent: code, textColor: black} pygments-nl: {parent: code, textColor: black} pygments-nn: {parent: code, textColor: black} pygments-no: {parent: code, textColor: black} pygments-nt: fontName: stdMonoBold parent: code textColor: #000080 pygments-nv: {parent: code, textColor: black} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: black} pygments-ow: fontName: stdMonoBold parent: code textColor: black pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #0000FF} pygments-s1: {parent: code, textColor: #0000FF} pygments-s2: {parent: code, textColor: #0000FF} pygments-sb: {parent: code, textColor: #0000FF} pygments-sc: {parent: code, textColor: #800080} pygments-sd: {parent: code, textColor: #0000FF} pygments-se: {parent: code, textColor: #0000FF} pygments-sh: {parent: code, textColor: #0000FF} pygments-si: {parent: code, textColor: #0000FF} pygments-sr: {parent: code, textColor: #0000FF} pygments-ss: {parent: code, textColor: #0000FF} pygments-sx: {parent: code, textColor: #0000FF} pygments-vc: {parent: code, textColor: black} pygments-vg: {parent: code, textColor: black} pygments-vi: {parent: code, textColor: black} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/trac.style0000664000175000017500000001071311351701171017620 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #999999} pygments-c: fontName: stdMonoItalic parent: code textColor: #999988 pygments-c1: fontName: stdMonoItalic parent: code textColor: #999988 pygments-cm: fontName: stdMonoItalic parent: code textColor: #999988 pygments-cp: fontName: stdMonoBold parent: code textColor: #999999 pygments-cs: fontName: stdMonoItalic parent: code textColor: #999999 pygments-err: backColor: #e3d2d2 parent: code textColor: #a61717 pygments-g: {parent: code, textColor: black} pygments-gd: backColor: #ffdddd parent: code textColor: #000000 pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: {parent: code, textColor: #999999} pygments-gi: backColor: #ddffdd parent: code textColor: #000000 pygments-go: {parent: code, textColor: #888888} pygments-gp: {parent: code, textColor: #555555} pygments-gr: {parent: code, textColor: #aa0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #aa0000} pygments-gu: {parent: code, textColor: #aaaaaa} pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #009999} pygments-k: fontName: stdMonoBold parent: code textColor: black pygments-kc: fontName: stdMonoBold parent: code textColor: black pygments-kd: fontName: stdMonoBold parent: code textColor: black pygments-kn: fontName: stdMonoBold parent: code textColor: black pygments-kp: fontName: stdMonoBold parent: code textColor: black pygments-kr: fontName: stdMonoBold parent: code textColor: black pygments-kt: fontName: stdMonoBold parent: code textColor: #445588 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #009999} pygments-mf: {parent: code, textColor: #009999} pygments-mh: {parent: code, textColor: #009999} pygments-mi: {parent: code, textColor: #009999} pygments-mo: {parent: code, textColor: #009999} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #008080} pygments-nb: {parent: code, textColor: #999999} pygments-nc: fontName: stdMonoBold parent: code textColor: #445588 pygments-nd: {parent: code, textColor: black} pygments-ne: fontName: stdMonoBold parent: code textColor: #990000 pygments-nf: fontName: stdMonoBold parent: code textColor: #990000 pygments-ni: {parent: code, textColor: #800080} pygments-nl: {parent: code, textColor: black} pygments-nn: {parent: code, textColor: #555555} pygments-no: {parent: code, textColor: #008080} pygments-nt: {parent: code, textColor: #000080} pygments-nv: {parent: code, textColor: #008080} pygments-nx: {parent: code, textColor: black} pygments-o: fontName: stdMonoBold parent: code textColor: black pygments-ow: fontName: stdMonoBold parent: code textColor: black pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #bb8844} pygments-s1: {parent: code, textColor: #bb8844} pygments-s2: {parent: code, textColor: #bb8844} pygments-sb: {parent: code, textColor: #bb8844} pygments-sc: {parent: code, textColor: #bb8844} pygments-sd: {parent: code, textColor: #bb8844} pygments-se: {parent: code, textColor: #bb8844} pygments-sh: {parent: code, textColor: #bb8844} pygments-si: {parent: code, textColor: #bb8844} pygments-sr: {parent: code, textColor: #808000} pygments-ss: {parent: code, textColor: #bb8844} pygments-sx: {parent: code, textColor: #bb8844} pygments-vc: {parent: code, textColor: #008080} pygments-vg: {parent: code, textColor: #008080} pygments-vi: {parent: code, textColor: #008080} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/autumn.style0000664000175000017500000000777311351701171020214 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #00aaaa} pygments-c: fontName: stdMonoItalic parent: code textColor: #aaaaaa pygments-c1: fontName: stdMonoItalic parent: code textColor: #aaaaaa pygments-cm: fontName: stdMonoItalic parent: code textColor: #aaaaaa pygments-cp: {parent: code, textColor: #4c8317} pygments-cs: fontName: stdMonoItalic parent: code textColor: #0000aa pygments-err: backColor: #F0A0A0 parent: code textColor: #F00000 pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: #aa0000} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00aa00} pygments-go: {parent: code, textColor: #888888} pygments-gp: {parent: code, textColor: #555555} pygments-gr: {parent: code, textColor: #aa0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #aa0000} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: {parent: code, textColor: #009999} pygments-k: {parent: code, textColor: #0000aa} pygments-kc: {parent: code, textColor: #0000aa} pygments-kd: {parent: code, textColor: #0000aa} pygments-kn: {parent: code, textColor: #0000aa} pygments-kp: {parent: code, textColor: #0000aa} pygments-kr: {parent: code, textColor: #0000aa} pygments-kt: {parent: code, textColor: #00aaaa} pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: {parent: code, textColor: #009999} pygments-mf: {parent: code, textColor: #009999} pygments-mh: {parent: code, textColor: #009999} pygments-mi: {parent: code, textColor: #009999} pygments-mo: {parent: code, textColor: #009999} pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #1e90ff} pygments-nb: {parent: code, textColor: #00aaaa} pygments-nc: {parent: code, textColor: #00aa00} pygments-nd: {parent: code, textColor: #888888} pygments-ne: {parent: code, textColor: black} pygments-nf: {parent: code, textColor: #00aa00} pygments-ni: fontName: stdMonoBold parent: code textColor: #800000 pygments-nl: {parent: code, textColor: black} pygments-nn: {parent: code, textColor: #00aaaa} pygments-no: {parent: code, textColor: #aa0000} pygments-nt: fontName: stdMonoBold parent: code textColor: #1e90ff pygments-nv: {parent: code, textColor: #aa0000} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: black} pygments-ow: {parent: code, textColor: #0000aa} pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: {parent: code, textColor: #aa5500} pygments-s1: {parent: code, textColor: #aa5500} pygments-s2: {parent: code, textColor: #aa5500} pygments-sb: {parent: code, textColor: #aa5500} pygments-sc: {parent: code, textColor: #aa5500} pygments-sd: {parent: code, textColor: #aa5500} pygments-se: {parent: code, textColor: #aa5500} pygments-sh: {parent: code, textColor: #aa5500} pygments-si: {parent: code, textColor: #aa5500} pygments-sr: {parent: code, textColor: #009999} pygments-ss: {parent: code, textColor: #0000aa} pygments-sx: {parent: code, textColor: #aa5500} pygments-vc: {parent: code, textColor: #aa0000} pygments-vg: {parent: code, textColor: #aa0000} pygments-vi: {parent: code, textColor: #aa0000} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/b6-landscape.style0000664000175000017500000000003611442304051021120 0ustar ralsinaralsinapageSetup: size: b6-landscape rst2pdf-0.93/rst2pdf/styles/twelvepoint.style0000664000175000017500000000003311351252072021242 0ustar ralsinaralsinastyles: base: fontSize: 12 rst2pdf-0.93/rst2pdf/styles/murphy.style0000664000175000017500000001236411351701171020217 0ustar ralsinaralsinastyles: pygments-bp: {parent: code, textColor: #007020} pygments-c: fontName: stdMonoItalic parent: code textColor: #606060 pygments-c1: fontName: stdMonoItalic parent: code textColor: #606060 pygments-cm: fontName: stdMonoItalic parent: code textColor: #606060 pygments-cp: {parent: code, textColor: #507090} pygments-cs: fontName: stdMonoItalic parent: code textColor: #c00000 pygments-err: backColor: #F0A0A0 parent: code textColor: #F00000 pygments-g: {parent: code, textColor: black} pygments-gd: {parent: code, textColor: #A00000} pygments-ge: fontName: stdMonoItalic parent: code textColor: black pygments-gh: fontName: stdMonoBold parent: code textColor: #000080 pygments-gi: {parent: code, textColor: #00A000} pygments-go: {parent: code, textColor: #808080} pygments-gp: fontName: stdMonoBold parent: code textColor: #c65d09 pygments-gr: {parent: code, textColor: #FF0000} pygments-gs: fontName: stdMonoBold parent: code textColor: black pygments-gt: {parent: code, textColor: #0040D0} pygments-gu: fontName: stdMonoBold parent: code textColor: #800080 pygments-hll: backColor: #ffffcc parent: code textColor: black pygments-il: fontName: stdMonoBold parent: code textColor: #6060f0 pygments-k: fontName: stdMonoBold parent: code textColor: #208090 pygments-kc: fontName: stdMonoBold parent: code textColor: #208090 pygments-kd: fontName: stdMonoBold parent: code textColor: #208090 pygments-kn: fontName: stdMonoBold parent: code textColor: #208090 pygments-kp: fontName: stdMonoBold parent: code textColor: #0080f0 pygments-kr: fontName: stdMonoBold parent: code textColor: #208090 pygments-kt: fontName: stdMonoBold parent: code textColor: #6060f0 pygments-l: {parent: code, textColor: black} pygments-ld: {parent: code, textColor: black} pygments-m: fontName: stdMonoBold parent: code textColor: #6000E0 pygments-mf: fontName: stdMonoBold parent: code textColor: #6000E0 pygments-mh: fontName: stdMonoBold parent: code textColor: #005080 pygments-mi: fontName: stdMonoBold parent: code textColor: #6060f0 pygments-mo: fontName: stdMonoBold parent: code textColor: #4000E0 pygments-n: {parent: code, textColor: black} pygments-na: {parent: code, textColor: #000070} pygments-nb: {parent: code, textColor: #007020} pygments-nc: fontName: stdMonoBold parent: code textColor: #e090e0 pygments-nd: fontName: stdMonoBold parent: code textColor: #505050 pygments-ne: fontName: stdMonoBold parent: code textColor: #F00000 pygments-nf: fontName: stdMonoBold parent: code textColor: #50e0d0 pygments-ni: {parent: code, textColor: #800000} pygments-nl: fontName: stdMonoBold parent: code textColor: #907000 pygments-nn: fontName: stdMonoBold parent: code textColor: #0e84b5 pygments-no: fontName: stdMonoBold parent: code textColor: #50e0d0 pygments-nt: {parent: code, textColor: #007000} pygments-nv: {parent: code, textColor: #003060} pygments-nx: {parent: code, textColor: black} pygments-o: {parent: code, textColor: #303030} pygments-ow: fontName: stdMonoBold parent: code textColor: #000000 pygments-p: {parent: code, textColor: black} pygments-py: {parent: code, textColor: black} pygments-s: backColor: #e0e0ff parent: code textColor: black pygments-s1: backColor: #e0e0ff parent: code textColor: black pygments-s2: backColor: #e0e0ff parent: code textColor: black pygments-sb: backColor: #e0e0ff parent: code textColor: black pygments-sc: {parent: code, textColor: #8080F0} pygments-sd: {parent: code, textColor: #D04020} pygments-se: backColor: #e0e0ff fontName: stdMonoBold parent: code textColor: #606060 pygments-sh: backColor: #e0e0ff parent: code textColor: black pygments-si: backColor: #e0e0e0 parent: code textColor: black pygments-sr: backColor: #e0e0ff parent: code textColor: #000000 pygments-ss: {parent: code, textColor: #f0c080} pygments-sx: backColor: #e0e0ff parent: code textColor: #f08080 pygments-vc: {parent: code, textColor: #c0c0f0} pygments-vg: {parent: code, textColor: #f08040} pygments-vi: {parent: code, textColor: #a0a0f0} pygments-w: {parent: code, textColor: #bbbbbb} pygments-x: {parent: code, textColor: black} rst2pdf-0.93/rst2pdf/styles/b0.style0000664000175000017500000000002411351252072017163 0ustar ralsinaralsinapageSetup: size: b0 rst2pdf-0.93/rst2pdf/styles/a0.style0000664000175000017500000000002411351252072017162 0ustar ralsinaralsinapageSetup: size: A0 rst2pdf-0.93/rst2pdf/styles/dejavu.style0000664000175000017500000000074211351252072020147 0ustar ralsinaralsinafontsAlias: stdBold: DejaVu Sans-Bold stdBoldItalic: DejaVu Sans-BoldOblique stdFont: DejaVu Sans stdItalic: DejaVu Sans-Oblique stdMono: DejaVu Sans Mono stdMonoBold: DejaVu Sans Mono-Bold stdMonoBoldItalic: DejaVu Sans Mono-BoldOblique stdMonoItalic: DejaVu Sans Mono-Oblique stdSans: DejaVu Sans stdSansBold: DejaVu Sans-Bold stdSansBoldItalic: DejaVu Sans-BoldOblique stdSansItalic: DejaVu Sans-Oblique stdSerif: DejaVu Serif rst2pdf-0.93/rst2pdf/styles/b2.style0000664000175000017500000000002411351252072017165 0ustar ralsinaralsinapageSetup: size: b2 rst2pdf-0.93/rst2pdf/styles/styles.style0000664000175000017500000003155112062653277020232 0ustar ralsinaralsina # List any fonts you would like to embed in the PDF here embeddedFonts: [] # Default page setup. Can be overridden by including other # stylesheets with -s pageSetup: size: A4 width: null height: null margin-top: 2cm margin-bottom: 2cm margin-left: 2cm margin-right: 2cm margin-gutter: 0cm spacing-header: 5mm spacing-footer: 5mm # The first template is one of the 'pageTemplates" # (See next section) firstTemplate: oneColumn # pageTemplates can be accessed with the .. raw:: pdf PageBreak command pageTemplates: coverPage: frames: [] [0cm, 0cm, 100%, 100%] showHeader : false showFooter : false emptyPage: frames: [] [0cm, 0cm, 100%, 100%] showHeader : false showFooter : false oneColumn: frames: [] [0cm, 0cm, 100%, 100%] showHeader : true showFooter : true twoColumn: frames: [] [0cm, 0cm, 49%, 100%] [51%, 0cm, 49%, 100%] showHeader : true showFooter : true threeColumn: frames: [] [2%, 0cm, 29.333%, 100%] [35.333%, 0cm, 29.333%, 100%] [68.666%, 0cm, 29.333%, 100%] showHeader : true showFooter : true cutePage: frames: [] [0%, 0%, 100%, 100%] showHeader : true showFooter : true defaultFooter : ###Page### defaultHeader : ###Section### fontsAlias: stdFont: Helvetica stdBold: Helvetica-Bold stdItalic: Helvetica-Oblique stdBoldItalic: Helvetica-BoldOblique stdSans: Helvetica stdSansBold: Helvetica-Bold stdSansItalic: Helvetica-Oblique stdSansBoldItalic: Helvetica-BoldOblique stdMono: Courier stdMonoItalic: Courier-Oblique stdMonoBold: Courier-Bold stdMonoBoldItalic: Courier-BoldOblique stdSerif: Times-Roman linkColor: navy styles: base: parent: null fontName: stdFont fontSize: 10 leading: 12 leftIndent: 0 rightIndent: 0 firstLineIndent: 0 alignment: TA_LEFT spaceBefore: 0 spaceAfter: 0 bulletFontName: stdFont bulletFontSize: 10 bulletIndent: 0 textColor: black backColor: null wordWrap: null borderWidth: 0 borderPadding: 0 borderColor: null borderRadius: null allowWidows: false allowOrphans: false hyphenation: false kerning: false underline: false strike: false commands: [] normal: parent: base title-reference: parent: normal fontName: stdItalic bodytext: parent: normal spaceBefore: 6 alignment: TA_JUSTIFY hyphenation: true toc: parent: normal blockquote: parent: bodytext leftIndent: 20 lineblock: parent: bodytext line: parent: lineblock spaceBefore: 0 toc1: parent: toc fontName: stdBold toc2: parent: toc leftIndent: 20 toc3: parent: toc leftIndent: 40 toc4: parent: toc leftIndent: 60 toc5: parent: toc leftIndent: 80 toc6: parent: toc leftIndent: 100 toc7: parent: toc leftIndent: 100 toc8: parent: toc leftIndent: 100 toc9: parent: toc leftIndent: 100 toc10: parent: toc leftIndent: 100 toc11: parent: toc leftIndent: 100 toc12: parent: toc leftIndent: 100 toc13: parent: toc leftIndent: 100 toc14: parent: toc leftIndent: 100 toc15: parent: toc leftIndent: 100 footer: parent: normal alignment: TA_CENTER header: parent: normal alignment: TA_CENTER attribution: parent: bodytext alignment: TA_RIGHT image: parent: bodytext alignment: TA_CENTER figure: parent: bodytext alignment: TA_CENTER commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [ALIGN, [ 0, 0 ], [ -1, -1 ], CENTER ] colWidths: [100%] figure-caption: parent: bodytext fontName: stdItalic alignment: TA_CENTER figure-legend: parent: bodytext bullet-list: parent: bodytext commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [RIGHTPADDING, [ 0, 0 ], [ 1, -1 ], 0 ] colWidths: ["20", null] bullet-list-item: parent: bodytext item-list: parent: bodytext commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [RIGHTPADDING, [ 0, 0 ], [ 1, -1 ], 0 ] colWidths: [20pt,null] item-list-item: parent: bodytext definition-list-term: parent: normal fontName: stdBold spaceBefore: 4 spaceAfter: 0 keepWithNext: false definition-list-classifier: parent: normal fontName: stdItalic definition: parent: bodytext firstLineIndent: 0 bulletIndent: 0 spaceBefore: 0 colWidths: [20pt,null] commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [LEFTPADDING, [ 0, 0 ], [ -1, -1 ], 0 ] [BOTTOMPADDING, [ 0, 0 ], [ -1, -1 ], 0 ] [RIGHTPADDING, [ 0, 0 ], [ -1, -1 ], 0 ] fieldname: parent: bodytext alignment: TA_RIGHT fontName: stdBold fieldvalue: parent: bodytext rubric: parent: bodytext textColor: darkred alignment: TA_CENTER italic: parent: bodytext fontName: stdItalic heading: parent: normal keepWithNext: true spaceBefore: 12 spaceAfter: 6 title: parent: heading fontName: stdBold fontSize: 200% alignment: TA_CENTER keepWithNext: false spaceAfter: 10 subtitle: parent: title spaceBefore: 12 fontSize: 75% heading1: parent: heading fontName: stdBold fontSize: 175% heading2: parent: heading fontName: stdBold fontSize: 150% heading3: parent: heading fontName: stdBoldItalic fontSize: 125% heading4: parent: heading fontName: stdBoldItalic heading5: parent: heading fontName: stdBoldItalic heading6: parent: heading fontName: stdBoldItalic topic-title: parent: heading3 sidebar-title: parent: heading3 sidebar-subtitle: parent: heading4 sidebar: float: none width: 100% parent: normal backColor: beige borderColor: darkgray borderPadding: 8 borderWidth: 0.5 admonition: parent: normal spaceBefore: 12 spaceAfter: 6 borderPadding: [16,16,16,16] backColor: beige borderColor: darkgray borderWidth: 0.5 commands:[] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] attention: parent: admonition caution: parent: admonition danger: parent: admonition error: parent: admonition hint: parent: admonition important: parent: admonition note: parent: admonition tip: parent: admonition warning: parent: admonition admonition-title: parent: heading3 admonition-heading: parent: heading3 attention-heading: parent: admonition-heading caution-heading: parent: admonition-heading danger-heading: parent: admonition-heading error-heading: parent: admonition-heading hint-heading: parent: admonition-heading important-heading: parent: admonition-heading note-heading: parent: admonition-heading tip-heading: parent: admonition-heading warning-heading: parent: admonition-heading literal: parent: normal fontName: stdMono firstLineIndent: 0 hyphenation: false wordWrap: null aafigure: parent: literal table: spaceBefore:6 spaceAfter:0 alignment: TA_CENTER commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [INNERGRID, [ 0, 0 ], [ -1, -1 ], 0.25, black ] [ROWBACKGROUNDS, [0, 0], [-1, -1], [white,#E0E0E0]] [BOX, [ 0, 0 ], [ -1, -1 ], 0.25, black ] table-title: parent : heading4 keepWithNext: false alignment : TA_CENTER table-heading: parent : heading backColor : beige alignment : TA_CENTER valign : BOTTOM borderPadding : 0 table-body: parent : normal dedication: parent : normal abstract: parent : normal contents: parent : normal tableofcontents: parent : normal code: parent: literal leftIndent: 0 spaceBefore: 8 spaceAfter: 8 backColor: beige borderColor: darkgray borderWidth: 0.5 borderPadding: 6 linenumber: parent: code right: parent: bodytext alignment: right center: parent: bodytext alignment: center pygments-n: parent: code pygments-nx: parent: code pygments-p: parent: code pygments-hll: {parent: code, backColor: #ffffcc} pygments-c: {textColor: #008800, parent: code} pygments-err: {parent: code} pygments-k: {textColor: #AA22FF, parent: code} pygments-o: {textColor: #666666, parent: code} pygments-cm: {textColor: #008800, parent: code} pygments-cp: {textColor: #008800, parent: code} pygments-c1: {textColor: #008800, parent: code} pygments-cs: {textColor: #008800, parent: code} pygments-gd: {textColor: #A00000, parent: code} pygments-ge: {parent: code} pygments-gr: {textColor: #FF0000, parent: code} pygments-gh: {textColor: #000080, parent: code} pygments-gi: {textColor: #00A000, parent: code} pygments-go: {textColor: #808080, parent: code} pygments-gp: {textColor: #000080, parent: code} pygments-gs: {parent: code} pygments-gu: {textColor: #800080, parent: code} pygments-gt: {textColor: #0040D0, parent: code} pygments-kc: {textColor: #AA22FF, parent: code} pygments-kd: {textColor: #AA22FF, parent: code} pygments-kn: {textColor: #AA22FF, parent: code} pygments-kp: {textColor: #AA22FF, parent: code} pygments-kr: {textColor: #AA22FF, parent: code} pygments-kt: {textColor: #00BB00, parent: code} pygments-m: {textColor: #666666, parent: code} pygments-s: {textColor: #BB4444, parent: code} pygments-na: {textColor: #BB4444, parent: code} pygments-nb: {textColor: #AA22FF, parent: code} pygments-nc: {textColor: #0000FF, parent: code} pygments-no: {textColor: #880000, parent: code} pygments-nd: {textColor: #AA22FF, parent: code} pygments-ni: {textColor: #999999, parent: code} pygments-ne: {textColor: #D2413A, parent: code} pygments-nf: {textColor: #00A000, parent: code} pygments-nl: {textColor: #A0A000, parent: code} pygments-nn: {textColor: #0000FF, parent: code} pygments-nt: {textColor: #008000, parent: code} pygments-nv: {textColor: #B8860B, parent: code} pygments-ow: {textColor: #AA22FF, parent: code} pygments-w: {textColor: #bbbbbb, parent: code} pygments-mf: {textColor: #666666, parent: code} pygments-mh: {textColor: #666666, parent: code} pygments-mi: {textColor: #666666, parent: code} pygments-mo: {textColor: #666666, parent: code} pygments-sb: {textColor: #BB4444, parent: code} pygments-sc: {textColor: #BB4444, parent: code} pygments-sd: {textColor: #BB4444, parent: code} pygments-s2: {textColor: #BB4444, parent: code} pygments-se: {textColor: #BB6622, parent: code} pygments-sh: {textColor: #BB4444, parent: code} pygments-si: {textColor: #BB6688, parent: code} pygments-sx: {textColor: #008000, parent: code} pygments-sr: {textColor: #BB6688, parent: code} pygments-s1: {textColor: #BB4444, parent: code} pygments-ss: {textColor: #B8860B, parent: code} pygments-bp: {textColor: #AA22FF, parent: code} pygments-vc: {textColor: #B8860B, parent: code} pygments-vg: {textColor: #B8860B, parent: code} pygments-vi: {textColor: #B8860B, parent: code} pygments-il: {textColor: #666666, parent: code} endnote: parent: bodytext commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [TOPPADDING, [ 0, 0 ], [ -1, -1 ], 0 ] [BOTTOMPADDING, [ 0, 0 ], [ -1, -1 ], 0 ] [RIGHTPADDING, [ 0, 0 ], [ 1, -1 ], 0 ] colWidths: [3cm, null] field-list: parent: bodytext commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [TOPPADDING, [ 0, 0 ], [ -1, -1 ], 0 ] colWidths: [3cm, null] spaceBefore: 6 option-list: commands: [] [VALIGN, [ 0, 0 ], [ -1, -1 ], TOP ] [TOPPADDING, [ 0, 0 ], [ -1, -1 ], 0 ] colWidths: [null,null] rst2pdf-0.93/rst2pdf/styles/a3-landscape.style0000664000175000017500000000003611442304051021114 0ustar ralsinaralsinapageSetup: size: A3-landscape rst2pdf-0.93/rst2pdf/basenodehandler.py0000664000175000017500000002631711723266071017771 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/basenodehandler.py $ #$Date: 2012-02-28 21:07:21 -0300 (Tue, 28 Feb 2012) $ #$Revision: 2443 $ ''' This module provides one useful class: NodeHandler The NodeHandler class is designed to be subclassed. Each subclass should support the processing that createpdf.RstToPdf needs to do on a particular type of node that could appear in a document tree. When the subclass is defined, it should reference NodeHandler as the first base class, and one or more docutils node classes as subsequent base classes. These docutils node classes will not actually wind up in the base classes of the subclass. Instead, they will be used as keys in a dispatch dictionary which is used to find the correct NodeHandler subclass to use to process an instance of a given docutils node class. When an instance of createpdf.RstToPdf is created, a NodeHandler instance will be called to return dispatchers for gather_elements and gather_pdftext, wrapped up as methods of the createpdf.RstToPdf class. When a dispatcher is called, it will dispatch to the correct subclass to handle the given docutils node instance. If no NodeHandler subclass has been created to handle that particular type of docutils node, then default processing will occur and a warning will be logged. ''' import types import inspect from log import log, nodeid from smartypants import smartyPants import docutils.nodes from flowables import BoundByWidth, TocEntry class MetaHelper(type): ''' MetaHelper is designed to generically enable a few of the benefits of using metaclasses by encapsulating some of the complexity of setting them up. If a base class uses MetaHelper (by assigning __metaclass__ = MetaHelper), then that class (and its metaclass inheriting subclasses) can control class creation behavior by defining a couple of helper functions. 1) A base class can define a _classpreinit function. This function is called during __new__ processing of the class object itself, but only during subclass creation (not when the class defining the _classpreinit is itself created). The subclass object does not yet exist at the time _classpreinit is called. _classpreinit accepts all the parameters of the __new__ function for the class itself (not the same as the __new__ function for the instantiation of class objects!) and must return a tuple of the same objects. A typical use of this would be to modify the class bases before class creation. 2) Either a base class or a subclass can define a _classinit() function. This function will be called immediately after the actual class has been created, and can do whatever setup is required for the class. Note that every base class (but not every subclass) which uses MetaHelper MUST define _classinit, even if that definition is None. MetaHelper also places an attribute into each class created with it. _baseclass is set to None if this class has no superclasses which also use MetaHelper, or to the first such MetaHelper-using baseclass. _baseclass can be explicitly set inside the class definition, in which case MetaHelper will not override it. ''' def __new__(clstype, name, bases, clsdict): # Our base class is the first base in the class definition which # uses MetaHelper, or None if no such base exists. base = ([x for x in bases if type(x) is MetaHelper] + [None])[0] # Only set our base into the class if it has not been explicitly # set clsdict.setdefault('_baseclass', base) # See if the base class definied a preinit function, and call it # if so. preinit = getattr(base, '_classpreinit', None) if preinit is not None: clstype, name, bases, clsdict = preinit(clstype, name, bases, clsdict) # Delegate the real work to type return type.__new__(clstype, name, bases, clsdict) def __init__(cls, name, bases, clsdict): # Let type build the class for us type.__init__(cls, name, bases, clsdict) # Call the class's initialization function if defined if cls._classinit is not None: cls._classinit() class NodeHandler(object): ''' NodeHandler classes are used to dispatch to the correct class to handle some node class type, via a dispatchdict in the main class. ''' __metaclass__ = MetaHelper @classmethod def _classpreinit(baseclass, clstype, name, bases, clsdict): # _classpreinit is called before the actual class is built # Perform triage on the class bases to separate actual # inheritable bases from the target docutils node classes # which we want to dispatch for. new_bases = [] targets = [] for target in bases: if target is not object: (targets, new_bases)[issubclass(target, NodeHandler)].append(target) clsdict['_targets'] = targets return clstype, name, tuple(new_bases), clsdict @classmethod def _classinit(cls): # _classinit() is called once the subclass has actually # been created. # For the base class, just add a dispatch dictionary if cls._baseclass is None: cls.dispatchdict = {} return # for subclasses, instantiate them, and then add # the class to the dispatch dictionary for each of its targets. self = cls() for target in cls._targets: if cls.dispatchdict.setdefault(target, self) is not self: t = repr(target) old = repr(cls.dispatchdict[target]) new = repr(self) log.debug('Dispatch handler %s for node type %s overridden by %s' % (old, t, new)) cls.dispatchdict[target] = self @staticmethod def getclassname(obj): cln = repr(obj.__class__) info = cln.split("'") if len(info) == 3: return info[1] return cln def log_unknown(self, node, during): if not hasattr(self, 'unkn_node'): self.unkn_node = set() cln=self.getclassname(node) if not cln in self.unkn_node: self.unkn_node.add(cln) log.warning("Unkn. node (self.%s): %s [%s]", during, cln, nodeid(node)) try: log.debug(node) except (UnicodeDecodeError, UnicodeEncodeError): log.debug(repr(node)) def findsubclass(self, node, during): handlerinfo = '%s.%s' % (self.getclassname(self), during) log.debug("%s: %s", handlerinfo, self.getclassname(node)) log.debug("%s: [%s]", handlerinfo, nodeid(node)) try: log.debug("%s: %s", handlerinfo, node) except (UnicodeDecodeError, UnicodeEncodeError): log.debug("%s: %r", handlerninfo, node) log.debug("") # Dispatch to the first matching class in the MRO dispatchdict = self.dispatchdict for baseclass in inspect.getmro(node.__class__): result = dispatchdict.get(baseclass) if result is not None: break else: self.log_unknown(node, during) result = self return result def __call__(self, client): ''' Get the dispatchers, wrapped up as methods for the client''' textdispatch = types.MethodType(self.textdispatch, client) elemdispatch = types.MethodType(self.elemdispatch, client) return textdispatch, elemdispatch # This overridable attribute will be set true in the instance # if handling a sphinx document sphinxmode = False # Begin overridable attributes and methods for elemdispatch def gather_elements(self, client, node, style): return client.gather_elements(node, style=style) def getstyle(self, client, node, style): try: if node['classes'] and node['classes'][0]: # FIXME: Supports only one class, sorry ;-) if client.styles.StyleSheet.has_key(node['classes'][0]): style = client.styles[node['classes'][0]] else: log.info("Unknown class %s, ignoring. [%s]", node['classes'][0], nodeid(node)) except TypeError: # Happens when a docutils.node.Text reaches here pass if style is None or style == client.styles['bodytext']: style = client.styles.styleForNode(node) return style def getelements(self, client, node, style): style = self.getstyle(client, node, style) elements = self.gather_elements(client, node, style) # Make all the sidebar cruft unreachable #if style.__dict__.get('float','None').lower() !='none': #node.elements=[Sidebar(node.elements,style)] #elif 'width' in style.__dict__: if 'width' in style.__dict__: elements = [BoundByWidth(style.width, elements, style, mode="shrink")] return elements # End overridable attributes and methods for elemdispatch def elemdispatch(self, client, node, style=None): self = self.findsubclass(node, 'elemdispatch') # set anchors for internal references try: for i in node['ids']: client.pending_targets.append(i) except TypeError: #Happens with docutils.node.Text pass elements = self.getelements(client, node, style) if node.line and client.debugLinesPdf: elements.insert(0,TocEntry(client.depth-1,'LINE-%s'%node.line)) node.elements = elements return elements # Begin overridable attributes and methods for textdispatch pre = '' post = '' def get_pre_post(self, client, node, replaceEnt): return self.pre, self.post def get_text(self, client, node, replaceEnt): return client.gather_pdftext(node) def apply_smartypants(self, text, smarty, node): # Try to be clever about when to use smartypants if node.__class__ in (docutils.nodes.paragraph, docutils.nodes.block_quote, docutils.nodes.title): return smartyPants(text, smarty) return text # End overridable attributes and methods for textdispatch def textdispatch(self, client, node, replaceEnt=True): self = self.findsubclass(node, 'textdispatch') pre, post = self.get_pre_post(client, node, replaceEnt) text = self.get_text(client, node, replaceEnt) text = pre + text + post try: log.debug("%s.textdispatch: %s" % (self.getclassname(self), text)) except UnicodeDecodeError: pass text = self.apply_smartypants(text, client.smarty, node) node.pdftext = text return text rst2pdf-0.93/rst2pdf/oddeven_directive.py0000664000175000017500000000167711351637741020342 0ustar ralsinaralsina# -*- coding: utf-8 -*- """A custom directive that allows alternative contents to be generated on odd and even pages.""" from docutils.parsers import rst from docutils.nodes import Admonition, Element from docutils.parsers.rst import directives class OddEvenNode(Admonition, Element): pass class OddEven(rst.Directive): """A custom directive that allows alternative contents to be generated on odd and even pages. It can contain only two children, so use containers to group them. The first one is odd, the second is even.""" required_arguments = 0 optional_arguments = 0 final_argument_whitespace = True option_spec = {} has_content = True def run(self): self.assert_has_content() text = '\n'.join(self.content) node = OddEvenNode() self.state.nested_parse(self.content, self.content_offset, node) return [node] directives.register_directive("oddeven", OddEven) rst2pdf-0.93/rst2pdf/smartypants.py0000664000175000017500000007075011070456756017246 0ustar ralsinaralsina#!/usr/bin/python r""" ============== smartypants.py ============== ---------------------------- SmartyPants ported to Python ---------------------------- Ported by `Chad Miller`_ Copyright (c) 2004, 2007 Chad Miller original `SmartyPants`_ by `John Gruber`_ Copyright (c) 2003 John Gruber Synopsis ======== A smart-quotes plugin for Pyblosxom_. The priginal "SmartyPants" is a free web publishing plug-in for Movable Type, Blosxom, and BBEdit that easily translates plain ASCII punctuation characters into "smart" typographic punctuation HTML entities. This software, *smartypants.py*, endeavours to be a functional port of SmartyPants to Python, for use with Pyblosxom_. Description =========== SmartyPants can perform the following transformations: - Straight quotes ( " and ' ) into "curly" quote HTML entities - Backticks-style quotes (\`\`like this'') into "curly" quote HTML entities - Dashes (``--`` and ``---``) into en- and em-dash entities - Three consecutive dots (``...`` or ``. . .``) into an ellipsis entity This means you can write, edit, and save your posts using plain old ASCII straight quotes, plain dashes, and plain dots, but your published posts (and final HTML output) will appear with smart quotes, em-dashes, and proper ellipses. SmartyPants does not modify characters within ``
    ``, ````, ````,
    ```` or ``

    He said, "'Quoted' words in a larger quote."

    str = re.sub(r""""'(?=\w)""", """“‘""", str) str = re.sub(r"""'"(?=\w)""", """‘“""", str) # Special case for decade abbreviations (the '80s): str = re.sub(r"""\b'(?=\d{2}s)""", r"""’""", str) close_class = r"""[^\ \t\r\n\[\{\(\-]""" dec_dashes = r"""–|—""" # Get most opening single quotes: opening_single_quotes_regex = re.compile(r""" ( \s | # a whitespace char, or   | # a non-breaking space entity, or -- | # dashes, or &[mn]dash; | # named dash entities %s | # or decimal entities &\#x201[34]; # or hex ) ' # the quote (?=\w) # followed by a word character """ % (dec_dashes,), re.VERBOSE) str = opening_single_quotes_regex.sub(r"""\1‘""", str) closing_single_quotes_regex = re.compile(r""" (%s) ' (?!\s | s\b | \d) """ % (close_class,), re.VERBOSE) str = closing_single_quotes_regex.sub(r"""\1’""", str) closing_single_quotes_regex = re.compile(r""" (%s) ' (\s | s\b) """ % (close_class,), re.VERBOSE) str = closing_single_quotes_regex.sub(r"""\1’\2""", str) # Any remaining single quotes should be opening ones: str = re.sub(r"""'""", r"""‘""", str) # Get most opening double quotes: opening_double_quotes_regex = re.compile(r""" ( \s | # a whitespace char, or   | # a non-breaking space entity, or -- | # dashes, or &[mn]dash; | # named dash entities %s | # or decimal entities &\#x201[34]; # or hex ) " # the quote (?=\w) # followed by a word character """ % (dec_dashes,), re.VERBOSE) str = opening_double_quotes_regex.sub(r"""\1“""", str) # Double closing quotes: closing_double_quotes_regex = re.compile(r""" #(%s)? # character that indicates the quote should be closing " (?=\s) """ % (close_class,), re.VERBOSE) str = closing_double_quotes_regex.sub(r"""”""", str) closing_double_quotes_regex = re.compile(r""" (%s) # character that indicates the quote should be closing " """ % (close_class,), re.VERBOSE) str = closing_double_quotes_regex.sub(r"""\1”""", str) # Any remaining quotes should be opening ones. str = re.sub(r'"', r"""“""", str) return str def educateBackticks(str): """ Parameter: String. Returns: The string, with ``backticks'' -style double quotes translated into HTML curly quote entities. Example input: ``Isn't this fun?'' Example output: “Isn't this fun?” """ str = re.sub(r"""``""", r"""“""", str) str = re.sub(r"""''""", r"""”""", str) return str def educateSingleBackticks(str): """ Parameter: String. Returns: The string, with `backticks' -style single quotes translated into HTML curly quote entities. Example input: `Isn't this fun?' Example output: ‘Isn’t this fun?’ """ str = re.sub(r"""`""", r"""‘""", str) str = re.sub(r"""'""", r"""’""", str) return str def educateDashes(str): """ Parameter: String. Returns: The string, with each instance of "--" translated to an em-dash HTML entity. """ str = re.sub(r"""---""", r"""–""", str) # en (yes, backwards) str = re.sub(r"""--""", r"""—""", str) # em (yes, backwards) return str def educateDashesOldSchool(str): """ Parameter: String. Returns: The string, with each instance of "--" translated to an en-dash HTML entity, and each "---" translated to an em-dash HTML entity. """ str = re.sub(r"""---""", r"""—""", str) # em (yes, backwards) str = re.sub(r"""--""", r"""–""", str) # en (yes, backwards) return str def educateDashesOldSchoolInverted(str): """ Parameter: String. Returns: The string, with each instance of "--" translated to an em-dash HTML entity, and each "---" translated to an en-dash HTML entity. Two reasons why: First, unlike the en- and em-dash syntax supported by EducateDashesOldSchool(), it's compatible with existing entries written before SmartyPants 1.1, back when "--" was only used for em-dashes. Second, em-dashes are more common than en-dashes, and so it sort of makes sense that the shortcut should be shorter to type. (Thanks to Aaron Swartz for the idea.) """ str = re.sub(r"""---""", r"""–""", str) # em str = re.sub(r"""--""", r"""—""", str) # en return str def educateEllipses(str): """ Parameter: String. Returns: The string, with each instance of "..." translated to an ellipsis HTML entity. Example input: Huh...? Example output: Huh…? """ str = re.sub(r"""\.\.\.""", r"""…""", str) str = re.sub(r"""\. \. \.""", r"""…""", str) return str def stupefyEntities(str): """ Parameter: String. Returns: The string, with each SmartyPants HTML entity translated to its ASCII counterpart. Example input: “Hello — world.” Example output: "Hello -- world." """ str = re.sub(r"""–""", r"""-""", str) # en-dash str = re.sub(r"""—""", r"""--""", str) # em-dash str = re.sub(r"""‘""", r"""'""", str) # open single quote str = re.sub(r"""’""", r"""'""", str) # close single quote str = re.sub(r"""“""", r'''"''', str) # open double quote str = re.sub(r"""”""", r'''"''', str) # close double quote str = re.sub(r"""…""", r"""...""", str)# ellipsis return str def processEscapes(str): r""" Parameter: String. Returns: The string, with after processing the following backslash escape sequences. This is useful if you want to force a "dumb" quote or other character to appear. Escape Value ------ ----- \\ \ \" " \' ' \. . \- - \` ` """ str = re.sub(r"""\\\\""", r"""\""", str) str = re.sub(r'''\\"''', r""""""", str) str = re.sub(r"""\\'""", r"""'""", str) str = re.sub(r"""\\\.""", r""".""", str) str = re.sub(r"""\\-""", r"""-""", str) str = re.sub(r"""\\`""", r"""`""", str) return str def _tokenize(str): """ Parameter: String containing HTML markup. Returns: Reference to an array of the tokens comprising the input string. Each token is either a tag (possibly with nested, tags contained therein, such as , or a run of text between tags. Each element of the array is a two-element array; the first is either 'tag' or 'text'; the second is the actual value. Based on the _tokenize() subroutine from Brad Choate's MTRegex plugin. """ pos = 0 length = len(str) tokens = [] depth = 6 nested_tags = "|".join(['(?:<(?:[^<>]',] * depth) + (')*>)' * depth) #match = r"""(?: ) | # comments # (?: <\? .*? \?> ) | # directives # %s # nested tags """ % (nested_tags,) tag_soup = re.compile(r"""([^<]*)(<[^>]*>)""") token_match = tag_soup.search(str) previous_end = 0 while token_match is not None: if token_match.group(1): tokens.append(['text', token_match.group(1)]) tokens.append(['tag', token_match.group(2)]) previous_end = token_match.end() token_match = tag_soup.search(str, token_match.end()) if previous_end < len(str): tokens.append(['text', str[previous_end:]]) return tokens if __name__ == "__main__": import locale try: locale.setlocale(locale.LC_ALL, '') except: pass from docutils.core import publish_string docstring_html = publish_string(__doc__, writer_name='html') print docstring_html # Unit test output goes out stderr. No worries. import unittest sp = smartyPants class TestSmartypantsAllAttributes(unittest.TestCase): # the default attribute is "1", which means "all". def test_dates(self): self.assertEqual(sp("1440-80's"), "1440-80’s") self.assertEqual(sp("1440-'80s"), "1440-‘80s") self.assertEqual(sp("1440---'80s"), "1440–‘80s") self.assertEqual(sp("1960s"), "1960s") # no effect. self.assertEqual(sp("1960's"), "1960’s") self.assertEqual(sp("one two '60s"), "one two ‘60s") self.assertEqual(sp("'60s"), "‘60s") def test_skip_tags(self): self.assertEqual( sp(""""""), """""") self.assertEqual( sp("""

    He said "Let's write some code." This code here if True:\n\tprint "Okay" is python code.

    """), """

    He said “Let’s write some code.” This code here if True:\n\tprint "Okay" is python code.

    """) def test_ordinal_numbers(self): self.assertEqual(sp("21st century"), "21st century") # no effect. self.assertEqual(sp("3rd"), "3rd") # no effect. def test_educated_quotes(self): self.assertEqual(sp('''"Isn't this fun?"'''), '''“Isn’t this fun?”''') unittest.main() __author__ = "Chad Miller " __version__ = "1.5_1.6: Fri, 27 Jul 2007 07:06:40 -0400" __url__ = "http://wiki.chad.org/SmartyPantsPy" __description__ = "Smart-quotes, smart-ellipses, and smart-dashes for weblog entries in pyblosxom" rst2pdf-0.93/rst2pdf/sphinxnodes.py0000664000175000017500000002163611723266071017214 0ustar ralsinaralsina# -*- coding: utf-8 -*- #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/sphinxnodes.py $ #$Date: 2012-02-28 21:07:21 -0300 (Tue, 28 Feb 2012) $ #$Revision: 2443 $ # See LICENSE.txt for licensing terms ''' This module contains sphinx-specific node handlers. An import of this module will apparently fail if sphinx.roles hasn't been imported. This module creates a sphinx-specific dispatch dictionary, which is kept separate from the regular one. When the SphinxHandler class is instantiated, the two dictionaries are combined into the instantiated object. ''' from copy import copy from log import nodeid, log from flowables import MySpacer, MyIndenter, Reference, DelayedTable, Table from image import MyImage, VectorPdf from opt_imports import Paragraph, sphinx from nodehandlers import NodeHandler, FontHandler, HandleEmphasis import math_flowable from reportlab.platypus import Paragraph, TableStyle import sphinx import docutils ################## NodeHandler subclasses ################### class SphinxHandler(NodeHandler): sphinxmode = True dispatchdict = {} def __init__(self): ''' This is where the magic happens. Make a copy of the elements in the non-sphinx dispatch dictionary, setting sphinxmode on every element, and then overwrite that dictionary with any sphinx-specific handlers. ''' mydict = {} for key, value in self._baseclass.dispatchdict.iteritems(): value = copy(value) value.sphinxmode = True mydict[key] = value mydict.update(self.dispatchdict) self.dispatchdict = mydict class SphinxFont(SphinxHandler, FontHandler): pass class HandleSphinxDefaults(SphinxHandler, sphinx.addnodes.glossary, sphinx.addnodes.start_of_file, sphinx.addnodes.compact_paragraph, sphinx.addnodes.pending_xref): pass class SphinxListHandler(SphinxHandler): def get_text(self, client, node, replaceEnt): t = client.gather_pdftext(node) while t and t[0] in ', ': t=t[1:] return t class HandleSphinxDescAddname(SphinxFont, sphinx.addnodes.desc_addname): fontstyle = "descclassname" class HandleSphinxDescName(SphinxFont, sphinx.addnodes.desc_name): fontstyle = "descname" class HandleSphinxDescReturn(SphinxFont, sphinx.addnodes.desc_returns): def get_font_prefix(self, client, node, replaceEnt): return ' → ' + client.styleToFont("returns") class HandleSphinxDescType(SphinxFont, sphinx.addnodes.desc_type): fontstyle = "desctype" class HandleSphinxDescParamList(SphinxListHandler, sphinx.addnodes.desc_parameterlist): pre=' (' post=')' class HandleSphinxDescParam(SphinxFont, sphinx.addnodes.desc_parameter): fontstyle = "descparameter" def get_pre_post(self, client, node, replaceEnt): pre, post = FontHandler.get_pre_post(self, client, node, replaceEnt) if node.hasattr('noemph'): pre = ', ' + pre else: pre = ', ' + pre post += '' return pre, post class HandleSphinxDescOpt(SphinxListHandler, SphinxFont, sphinx.addnodes.desc_optional): fontstyle = "optional" def get_pre_post(self, client, node, replaceEnt): prepost = FontHandler.get_pre_post(self, client, node, replaceEnt) return '%s[%s, ' % prepost, '%s]%s' % prepost class HandleDescAnnotation(SphinxHandler, HandleEmphasis, sphinx.addnodes.desc_annotation): pass class HandleSphinxIndex(SphinxHandler, sphinx.addnodes.index): def gather_elements(self, client, node, style): try: for entry in node['entries']: client.pending_targets.append(docutils.nodes.make_id(entry[2])) except IndexError: if node['entries']: log.error("Can't process index entry: %s [%s]", node['entries'], nodeid(node)) return [] if sphinx.__version__ < '1.0': class HandleSphinxModule(SphinxHandler, sphinx.addnodes.module): def gather_elements(self, client, node, style): return [Reference('module-'+node['modname'])] # custom SPHINX nodes. # FIXME: make sure they are all here, and keep them all together class HandleSphinxCentered(SphinxHandler, sphinx.addnodes.centered): def gather_elements(self, client, node, style): return [Paragraph(client.gather_pdftext(node), client.styles['centered'])] class HandleSphinxDesc(SphinxHandler, sphinx.addnodes.desc): def gather_elements(self, client, node, style): st=client.styles[node['desctype']] if st==client.styles['normal']: st=copy(client.styles['desc']) st.spaceBefore=0 pre=[MySpacer(0,client.styles['desc'].spaceBefore)] return pre + client.gather_elements(node, st) class HandleSphinxDescSignature(SphinxHandler, sphinx.addnodes.desc_signature): def gather_elements(self, client, node, style): # Need to add ids as targets, found this when using one of the # django docs extensions targets=[i.replace(' ','') for i in node['ids']] pre='' for i in targets: if i not in client.targets: pre+='
    '% i client.targets.append(i) return [Paragraph(pre+client.gather_pdftext(node),style)] class HandleSphinxDescContent(SphinxHandler, sphinx.addnodes.desc_content): def gather_elements(self, client, node, style): return [MyIndenter(left=10)] +\ client.gather_elements(node, client.styles["definition"]) +\ [MyIndenter(left=-10)] class HandleHList(SphinxHandler, sphinx.addnodes.hlist): def gather_elements(self, client, node, style): # Each child is a hlistcol and represents a column. # Each grandchild is a bullet list that's the contents # of the column # Represent it as a N-column, 1-row table, each cell containing # a list. cells = [[ client.gather_elements(child, style) for child in node.children]] t_style=TableStyle(client.styles['hlist'].commands) cw=100./len(node.children) return [ DelayedTable( cells, colWidths=["%s%%"%cw,]*len(cells), style=t_style )] from sphinx.ext import mathbase class HandleHighlightLang(SphinxHandler, sphinx.addnodes.highlightlang): pass class HandleSphinxMath(SphinxHandler, mathbase.math, mathbase.displaymath): def gather_elements(self, client, node, style): mflow=math_flowable.Math(node.get('latex',''),node.get('label',None)) n=node['number'] if n is not None: number='(%s)'%node['number'] return [Table([[mflow,number]],)] return [mflow] def get_text(self, client, node, replaceEnt): mf = math_flowable.Math(node.get('latex','')) w, h = mf.wrap(0, 0) descent = mf.descent() img = mf.genImage() client.to_unlink.append(img) return '' % ( img, w, h, -descent) class HandleSphinxEq(SphinxHandler, mathbase.eqref): def get_text(self, client, node, replaceEnt): return '%s'%(node['target'], client.styles.linkColor, node.astext()) graphviz_warn = False try: x=sphinx.ext.graphviz.graphviz class HandleSphinxGraphviz(SphinxHandler, sphinx.ext.graphviz.graphviz): def gather_elements(self, client, node, style): # Based on the graphviz extension global graphviz_warn try: # Is vectorpdf enabled? if hasattr(VectorPdf,'load_xobj'): # Yes, we have vectorpdf fname, outfn = sphinx.ext.graphviz.render_dot(node['builder'], node['code'], node['options'], 'pdf') else: # Use bitmap if not graphviz_warn: log.warning('Using graphviz with PNG output. You get much better results if you enable the vectorpdf extension.') graphviz_warn = True fname, outfn = sphinx.ext.graphviz.render_dot(node['builder'], node['code'], node['options'], 'png') if outfn: client.to_unlink.append(outfn) client.to_unlink.append(outfn+'.map') else: # Something went very wrong with graphviz, and # sphinx should have given an error already return [] except sphinx.ext.graphviz.GraphvizError, exc: log.error('dot code %r: ' % node['code'] + str(exc)) return [Paragraph(node['code'],client.styles['code'])] return [MyImage(filename=outfn, client=client)] except AttributeError: # Probably the graphviz extension is not enabled pass sphinxhandlers = SphinxHandler() rst2pdf-0.93/rst2pdf/sectnumlinks.py0000664000175000017500000000134411444204531017354 0ustar ralsinaralsinaimport docutils class SectNumFolder(docutils.nodes.SparseNodeVisitor): def __init__(self, document): docutils.nodes.SparseNodeVisitor.__init__(self, document) self.sectnums = {} def visit_generated(self, node): for i in node.parent.parent['ids']: self.sectnums[i]=node.parent.astext().replace(u'\xa0\xa0\xa0',' ') class SectRefExpander(docutils.nodes.SparseNodeVisitor): def __init__(self, document, sectnums): docutils.nodes.SparseNodeVisitor.__init__(self, document) self.sectnums = sectnums def visit_reference(self, node): if node.get('refid', None) in self.sectnums: node.children=[docutils.nodes.Text('%s '%self.sectnums[node.get('refid')])] rst2pdf-0.93/rst2pdf/dumpstyle.py0000775000175000017500000001130111346617244016672 0ustar ralsinaralsina#!/usr/bin/env python ''' Call dumps() to dump a stylesheet to a string. Or run the script to dump all .json in the styles directory to .style in the styles directory. ''' import sys import os from rson import loads as rloads from json import loads as jloads def dumps(obj, forcestyledict=True): ''' If forcestyledict is True, will attempt to turn styles into a dictionary. ''' def dofloat(result, obj, indent): s = '%.3f' % obj while '.' in s and s.endswith('0'): s = s[:-1] result.append(s) def doint(result, obj, indent): if isinstance(obj, bool): obj = repr(obj).lower() result.append(str(obj)) badch = set('[]{}:=,"\n') def dostr(result, obj, indent): try: float(obj) except: ok = True else: ok = obj == obj.strip() ok = ok and not set(obj) & badch if ok: result.append(obj) return obj = obj.replace('\\', '\\\\').replace('\n', '\\n') obj = obj.replace('"', '\\"') result.append('"%s"' % obj) def dolist(result, obj, indent): if indent: if not obj: result.append('[]') return elif isinstance(obj[0], list): result.append('[]') indent += ' ' for item in obj: dumprecurse(result, item, indent) return result.append('[') obj = [[x, ', '] for x in obj] obj[-1][-1] = ']' for item, separator in obj: dumprecurse(result, item, '') result.append(separator) def dodict(result, obj, indent): if not obj: result.append('{}') return obj = sorted(obj.iteritems()) multiline = indent and ( len(obj) > 2 or len(obj) == 2 and ( isinstance(obj[0][-1], (list, dict)) or isinstance(obj[-1][-1], (list, dict)))) if not multiline and (not indent or len(obj) != 1): result.append('{') obj = [[x, ', '] for x in obj] obj[-1][-1] = '}' for (key, value), separator in obj: dumprecurse(result, key, '') result.append(': ') dumprecurse(result, value, '') result.append(separator) return doindent = len(obj) > 1 for key, value in obj: dumprecurse(result, key, indent, doindent) result.append(': ') dumprecurse(result, value, indent + ' ', False) def donone(result, obj, indent): result.append('null') dumpfuncs = {float: dofloat, int: doint, basestring: dostr, list: dolist, dict: dodict, type(None): donone} dumpfuncs = dumpfuncs.items() def dumprecurse(result, obj, indent='\n', indentnow=True): if indentnow: result.append(indent) for otype, ofunc in dumpfuncs: if isinstance(obj, otype): return ofunc(result, obj, indent) raise ValueError(repr(obj)) result = [] if forcestyledict: obj = fixstyle(obj) dumprecurse(result, obj, indentnow=False) return fixspacing(''.join(result)) def fixspacing(s): ''' Try to make the output prettier by inserting blank lines in random places. ''' result = [] indent = -1 for line in s.splitlines(): line = line.rstrip() # Some lines had ' ' if not line: continue indent, previndent = len(line) - len(line.lstrip()), indent if indent <= previndent and indent < 8: if indent < previndent or not indent: result.append('') result.append(line) result.append('') return '\n'.join(result) def fixstyle(obj): ''' Try to convert styles into a dictionary ''' if obj: if isinstance(obj, list): lengths = [len(x) for x in obj] if min(lengths) == max(lengths) == 2: obj = dict(obj) elif isinstance(obj, dict) and 'styles' in obj: obj['styles'] = dict(obj['styles']) return obj def convert(srcname): ''' Convert a single file from .json to .style ''' print srcname sstr = open(srcname, 'rb').read() sdata = fixstyle(jloads(sstr)) dstr = dumps(sdata) assert sdata == rloads(dstr), "Bad round-trip" dstname = srcname.replace('.json', '.style') dstf = open(dstname, 'wb') dstf.write(dstr) dstf.close() if __name__ == '__main__': for fname in [os.path.join('styles', x) for x in os.listdir('styles') if x.endswith('.json')]: convert(fname) rst2pdf-0.93/rst2pdf/flowables.py0000664000175000017500000011522112060122333016605 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/flowables.py $ #$Date: 2012-12-06 10:59:55 -0300 (Thu, 06 Dec 2012) $ #$Revision: 2540 $ __docformat__ = 'reStructuredText' from copy import copy from reportlab.platypus import * from reportlab.platypus.doctemplate import * from reportlab.lib.enums import * from opt_imports import Paragraph, NullDraw from reportlab.lib.units import * from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT from reportlab.platypus.flowables import _listWrapOn, _FUZZ from reportlab.platypus.tableofcontents import TableOfContents from reportlab.lib.styles import ParagraphStyle import styles from log import log import re from xml.sax.saxutils import unescape, escape class XXPreformatted(XPreformatted): """An extended XPreformattedFit""" def __init__(self, *args, **kwargs): XPreformatted.__init__(self, *args, **kwargs) def split (self, aW, aH): # Figure out a nice range of splits # # Assume we would prefer 5 lines (at least) on # a splitted flowable before a break, and 4 on # the last flowable after a break. # So, the minimum wrap height for a fragment # will be 5*leading rW, rH = self.wrap(aW, aH) if rH > aH: minH1=getattr(self.style, 'allowOrphans', 5)*self.style.leading minH2=getattr(self.style, 'allowWidows', 4)*self.style.leading # If there's no way to fid a decent fragment, # refuse to split if aH < minH1: return [] # Now, don't split too close to the end either pw, ph = self.wrap(aW, aH) if ph - aH < minH2: aH = ph - minH2 return XPreformatted.split(self, aW, aH) class MyIndenter(Indenter): """An indenter that has a width, because otherwise you get crashes if added inside tables""" width = 0 height = 0 def draw(self): pass class TocEntry(NullDraw): """A flowable that adds a TOC entry but draws nothing""" def __init__(self,level,label): self.level=level self.label=label self.width=0 self.height=0 self.keepWithNext=True def draw(self): # Add outline entry self.canv.bookmarkHorizontal(self.label,0,0+self.height) self.canv.addOutlineEntry(self.label, self.label, max(0,int(self.level)), False) class Heading(Paragraph): """A paragraph that also adds an outline entry in the PDF TOC.""" def __init__(self, text, style, bulletText=None, caseSensitive=1, level=0, snum=None, parent_id=None, node=None, section_header_depth=2): # Issue 114: need to convert "&" to "&" and such. # Issue 140: need to make it plain text self.stext=re.sub(r'<[^>]*?>', '', unescape(text)) self.stext = self.stext.strip() self.level = int(level) self.snum = snum self.parent_id=parent_id self.node=node self.section_header_depth = section_header_depth Paragraph.__init__(self, text, style, bulletText) def draw(self): # Add outline entry self.canv.bookmarkHorizontal(self.parent_id,0,0+self.height) # self.section_header_depth is for Issue 391 if self.canv.firstSect and self.level < self.section_header_depth: self.canv.sectName = self.stext self.canv.firstSect=False if self.snum is not None: self.canv.sectNum = self.snum else: self.canv.sectNum = "" self.canv.addOutlineEntry(self.stext.encode('utf-8','replace'), self.parent_id.encode('utf-8','replace'), int(self.level), False) Paragraph.draw(self) class Separation(Flowable): """A simple
    -like flowable""" def wrap(self, w, h): self.w = w return w, 1*cm def draw(self): self.canv.line(0, 0.5*cm, self.w, 0.5*cm) class Reference(Flowable): """A flowable to insert an anchor without taking space""" def __init__(self, refid): self.refid = refid self.keepWithNext=True Flowable.__init__(self) def wrap(self, w, h): """This takes no space""" return 0, 0 def draw(self): self.canv.bookmarkPage(self.refid) def repr(self): return "Reference: %s" % self.refid def __str__(self): return "Reference: %s" % self.refid class OddEven(Flowable): """This flowable takes two lists of flowables as arguments, odd and even. If will draw the "odd" list when drawn in odd pages and the "even" list on even pages. wrap() will always return a size large enough for both lists, and this flowable **cannot** be split, so use with care. """ def __init__(self, odd, even, style=None): self.odd=DelayedTable([[odd]],['100%'], style) self.even=DelayedTable([[even]],['100%'], style) def wrap(self, w, h): """Return a box large enough for both odd and even""" w1,h1=self.odd.wrap(w,h) w2,h2=self.even.wrap(w,h) return max(w1,w2), max (h1,h2) def drawOn(self, canvas, x, y, _sW=0): if canvas._pagenum %2 == 0: self.even.drawOn(canvas, x, y, _sW) else: self.odd.drawOn(canvas, x, y, _sW) def split(self): """Makes no sense to split this...""" return [] class DelayedTable(Table): """A flowable that inserts a table for which it has the data. Needed so column widths can be determined after we know on what frame the table will be inserted, thus making the overal table width correct. """ def __init__(self, data, colWidths, style=None, repeatrows=False, splitByRow=True): self.data = data self._colWidths = colWidths if style is None: style = TableStyle([ ('LEFTPADDING', (0,0), (-1,-1), 0), ('RIGHTPADDING', (0,0), (-1,-1), 0), ('TOPPADDING', (0,0), (-1,-1), 0), ('BOTTOMPADDING', (0,0), (-1,-1), 0), ]) self.style = style self.t = None self.repeatrows = repeatrows self.hAlign = TA_CENTER self.splitByRow=splitByRow ## Try to look more like a Table #self._ncols = 2 #self._nosplitCmds= [] #self._nrows= 1 #self._rowHeights= [None] #self._spanCmds= [] #self.ident= None #self.repeatCols= 0 #self.repeatRows= 0 #self.splitByRow= 1 #self.vAlign= 'MIDDLE' def wrap(self, w, h): # Create the table, with the widths from colWidths reinterpreted # if needed as percentages of frame/cell/whatever width w is. #_tw = w/sum(self.colWidths) def adjust(*args, **kwargs): kwargs['total']=w return styles.adjustUnits(*args, **kwargs) #adjust=functools.partial(styles.adjustUnits, total=w) self.colWidths=map(adjust, self._colWidths) #colWidths = [_w * _tw for _w in self.colWidths] self.t = Table(self.data, colWidths=self.colWidths, style=self.style, repeatRows=self.repeatrows, splitByRow=True) #splitByRow=self.splitByRow) self.t.hAlign = self.hAlign return self.t.wrap(w, h) def split(self, w, h): if self.splitByRow: if not self.t: self.wrap(w,h) return self.t.split(w, h) else: return [] def drawOn(self, canvas, x, y, _sW=0): self.t.drawOn(canvas, x, y, _sW) def identity(self, maxLen=None): return "<%s at %s%s%s> containing: %s" % (self.__class__.__name__, hex(id(self)), self._frameName(), getattr(self, 'name', '') and (' name="%s"' % getattr(self, 'name', '')) or '', unicode(self.data[0])[:180]) def tablepadding(padding): if not isinstance(padding,(list,tuple)): padding=[padding,]*4 return padding, ('TOPPADDING',[0,0],[-1,-1],padding[0]),\ ('RIGHTPADDING',[-1,0],[-1,-1],padding[1]),\ ('BOTTOMPADDING',[0,0],[-1,-1],padding[2]),\ ('LEFTPADDING',[1,0],[1,-1],padding[3]) class SplitTable(DelayedTable): def __init__(self, data, colWidths, style, padding=3): if len(data) <>1 or len(data[0]) <>2: log.error('SplitTable can only be 1 row and two columns!') sys.exit(1) DelayedTable.__init__(self,data,colWidths,style) self.padding, p1, p2, p3, p4=tablepadding(padding) self.style._cmds.insert(0,p1) self.style._cmds.insert(0,p2) self.style._cmds.insert(0,p3) self.style._cmds.insert(0,p4) def identity(self, maxLen=None): return "<%s at %s%s%s> containing: %s" % (self.__class__.__name__, hex(id(self)), self._frameName(), getattr(self, 'name', '') and (' name="%s"' % getattr(self, 'name', '')) or '', unicode(self.data[0][1])[:180]) def split(self,w,h): _w,_h=self.wrap(w, h) if _h > h: # Can't split! # The right column data mandates the split # Find which flowable exceeds the available height dw=self.colWidths[0]+self.padding[1]+self.padding[3] dh=self.padding[0]+self.padding[2] bullet=self.data[0][0] text=self.data[0][1] for l in range(0,len(text)): _,fh = _listWrapOn(text[:l+1],w-dw,None) if fh+dh > h: # The lth flowable is the guilty one # split it _,lh=_listWrapOn(text[:l],w-dw,None) # Workaround for Issue 180 text[l].wrap(w-dw,h-lh-dh) l2=text[l].split(w-dw,h-lh-dh) if l2==[]: # Not splittable, push some to next page if l==0: # Can't fit anything, push all to next page return l2 # We reduce the number of items we keep on the # page for two reasons: # 1) If an item is associated with the following # item (getKeepWithNext() == True), we have # to back up to a previous one. # 2) If we miscalculated the size required on # the first page (I dunno why, probably not # counting borders properly, but we do # miscalculate occasionally). Seems to # have to do with nested tables, so it might # be the extra space on the border on the # inner table. while l > 0: if not text[l-1].getKeepWithNext(): first_t = Table([ [bullet, text[:l]] ], colWidths=self.colWidths, style=self.style) _w,_h = first_t.wrap(w, h) if _h <= h: break l -= 1 if l>0: # Workaround for Issue 180 with wordaxe: #if wordaxe is not None: #l3=[Table([ #[bullet, #text[:l]] #], #colWidths=self.colWidths, #style=self.style), #Table([['',text[l:]]], #colWidths=self.colWidths, #style=self.style)] #else: l3=[first_t, SplitTable([['',text[l:]]], colWidths=self.colWidths, style=self.style, padding=self.padding)] else: # Everything flows l3=[] else: l3=[Table([[bullet,text[:l]+[l2[0]]]], colWidths=self.colWidths, rowHeights=[h], style=self.style)] if l2[1:]+text[l+1:]: ## Workaround for Issue 180 with wordaxe: #if wordaxe is not None: #l3.append( #Table([['',l2[1:]+text[l+1:]]], #colWidths=self.colWidths, #style=self.style)) #else: l3.append( SplitTable([['',l2[1:]+text[l+1:]]], colWidths=self.colWidths, style=self.style, padding=self.padding)) return l3 log.debug("Can't split splittable") return self.t.split(w, h) else: return DelayedTable.split(self,w,h) class MySpacer(Spacer): def wrap (self, aW, aH): w, h = Spacer.wrap(self, aW, aH) self.height = min(aH, h) return w, self.height class MyPageBreak(FrameActionFlowable): def __init__(self, templateName=None, breakTo='any'): '''templateName switches the page template starting in the next page. breakTo can be 'any' 'even' or 'odd'. 'even' will break one page if the current page is odd or two pages if it's even. That way the next flowable will be in an even page. 'odd' is the opposite of 'even' 'any' is the default, and means it will always break only one page. ''' self.templateName = templateName self.breakTo=breakTo self.forced=False self.extraContent=[] def frameAction(self, frame): frame._generated_content = [] if self.breakTo=='any': # Break only once. None if at top of page if not frame._atTop: frame._generated_content.append(SetNextTemplate(self.templateName)) frame._generated_content.append(PageBreak()) elif self.breakTo=='odd': #Break once if on even page, twice #on odd page, none if on top of odd page if frame._pagenum % 2: #odd pageNum if not frame._atTop: # Blank pages get no heading or footer frame._generated_content.append(SetNextTemplate(self.templateName)) frame._generated_content.append(SetNextTemplate('emptyPage')) frame._generated_content.append(PageBreak()) frame._generated_content.append(ResetNextTemplate()) frame._generated_content.append(PageBreak()) else: #even frame._generated_content.append(SetNextTemplate(self.templateName)) frame._generated_content.append(PageBreak()) elif self.breakTo=='even': #Break once if on odd page, twice #on even page, none if on top of even page if frame._pagenum % 2: #odd pageNum frame._generated_content.append(SetNextTemplate(self.templateName)) frame._generated_content.append(PageBreak()) else: #even if not frame._atTop: # Blank pages get no heading or footer frame._generated_content.append(SetNextTemplate(self.templateName)) frame._generated_content.append(SetNextTemplate('emptyPage')) frame._generated_content.append(PageBreak()) frame._generated_content.append(ResetNextTemplate()) frame._generated_content.append(PageBreak()) class SetNextTemplate(Flowable): """Set canv.templateName when drawing. rst2pdf uses that to switch page templates. """ def __init__(self, templateName=None): self.templateName = templateName Flowable.__init__(self) def draw(self): if self.templateName: try: self.canv.oldTemplateName = self.canv.templateName except: self.canv.oldTemplateName = 'oneColumn' self.canv.templateName = self.templateName class ResetNextTemplate(Flowable): """Go back to the previous template. rst2pdf uses that to switch page templates back when temporarily it needed to switch to another template. For example, after a OddPageBreak, there can be a totally blank page. Those have to use coverPage as a template, because they must not have headers or footers. And then we need to switch back to whatever was used. """ def __init__(self): Flowable.__init__(self) def draw(self): self.canv.templateName, self.canv.oldTemplateName = \ self.canv.oldTemplateName, self.canv.templateName def wrap(self, aW, aH): return 0,0 class Transition(Flowable): """Wrap canvas.setPageTransition. Sets the transition effect from the current page to the next. """ PageTransitionEffects = dict( Split=['direction', 'motion'], Blinds=['dimension'], Box=['motion'], Wipe=['direction'], Dissolve=[], Glitter=['direction']) def __init__(self, *args): if len(args) < 1: args = [None, 1] # No transition # See if we got a valid transition effect name if args[0] not in self.PageTransitionEffects: log.error('Unknown transition effect name: %s' % args[0]) args[0] = None elif len(args) == 1: args.append(1) # FIXME: validate more self.args = args def wrap(self, aw, ah): return 0, 0 def draw(self): kwargs = dict( effectname=None, duration=1, direction=0, dimension='H', motion='I') ceff = ['effectname', 'duration'] +\ self.PageTransitionEffects[self.args[0]] for argname, argvalue in zip(ceff, self.args): kwargs[argname] = argvalue kwargs['duration'] = int(kwargs['duration']) kwargs['direction'] = int(kwargs['direction']) self.canv.setPageTransition(**kwargs) class SmartFrame(Frame): """A (Hopefully) smarter frame object. This frame object knows how to handle a two-pass layout procedure (someday). """ def __init__(self, container, x1, y1, width, height, leftPadding=6, bottomPadding=6, rightPadding=6, topPadding=6, id=None, showBoundary=0, overlapAttachedSpace=None, _debug=None): self.container = container self.onSidebar = False self.__s = '[%s, %s, %s, %s, %s, %s, %s, %s,]'\ %(x1,y1,width,height, leftPadding, bottomPadding, rightPadding, topPadding) Frame.__init__(self, x1, y1, width, height, leftPadding, bottomPadding, rightPadding, topPadding, id, showBoundary, overlapAttachedSpace, _debug) def add (self, flowable, canv, trySplit=0): flowable._atTop=self._atTop return Frame.add(self, flowable, canv, trySplit) def __repr__(self): return self.__s def __deepcopy__(self, *whatever): return copy(self) class FrameCutter(FrameActionFlowable): def __init__(self, dx, width, flowable, padding, lpad, floatLeft=True): self.width = width self.dx = dx self.f = flowable self.padding = padding self.lpad = lpad self.floatLeft = floatLeft def frameAction(self, frame): idx = frame.container.frames.index(frame) if self.floatLeft: # Don't bother inserting a silly thin frame if self.width-self.padding > 30: f1 = SmartFrame(frame.container, frame._x1 + self.dx - 2*self.padding, frame._y2 - self.f.height - 3*self.padding, self.width + 2*self.padding, self.f.height + 3*self.padding, bottomPadding=0, topPadding=0, leftPadding=self.lpad) f1._atTop = frame._atTop # This is a frame next to a sidebar. f1.onSidebar = True frame.container.frames.insert(idx + 1, f1) # Don't add silly thin frame if frame._height-self.f.height - 2*self.padding > 30: frame.container.frames.insert(idx + 2, SmartFrame(frame.container, frame._x1, frame._y1p, self.width + self.dx, frame._height - self.f.height - 3*self.padding, topPadding=0)) else: # Don't bother inserting a silly thin frame if self.width-self.padding > 30: f1 = SmartFrame(frame.container, frame._x1 - self.width, frame._y2 - self.f.height - 2*self.padding, self.width, self.f.height + 2*self.padding, bottomPadding=0, topPadding=0, rightPadding=self.lpad) f1._atTop = frame._atTop # This is a frame next to a sidebar. f1.onSidebar = True frame.container.frames.insert(idx + 1, f1) if frame._height - self.f.height - 2*self.padding > 30: frame.container.frames.insert(idx + 2, SmartFrame(frame.container, frame._x1 - self.width, frame._y1p, self.width + self.dx, frame._height - self.f.height - 2*self.padding, topPadding=0)) class Sidebar(FrameActionFlowable): def __init__(self, flowables, style): self.style = style self.width = self.style.width self.flowables = flowables def frameAction(self, frame): if self.style.float not in ('left', 'right'): return if frame.onSidebar: # We are still on the frame next to a sidebar! frame._generated_content = [FrameBreak(), self] else: w = frame.container.styles.adjustUnits(self.width, frame.width) idx = frame.container.frames.index(frame) padding = self.style.borderPadding width = self.style.width self.style.padding = frame.container.styles.adjustUnits( str(padding), frame.width) self.style.width = frame.container.styles.adjustUnits( str(width), frame.width) self.kif = BoxedContainer(self.flowables, self.style) if self.style.float == 'left': self.style.lpad = frame.leftPadding f1 = SmartFrame(frame.container, frame._x1, frame._y1p, w - 2*self.style.padding, frame._y - frame._y1p, leftPadding=self.style.lpad, rightPadding=0, bottomPadding=0, topPadding=0) f1._atTop = frame._atTop frame.container.frames.insert(idx+1, f1) frame._generated_content = [ FrameBreak(), self.kif, FrameCutter(w, frame.width - w, self.kif, padding, self.style.lpad, True), FrameBreak()] elif self.style.float == 'right': self.style.lpad = frame.rightPadding frame.container.frames.insert(idx + 1, SmartFrame(frame.container, frame._x1 + frame.width - self.style.width, frame._y1p, w, frame._y-frame._y1p, rightPadding=self.style.lpad, leftPadding=0, bottomPadding=0, topPadding=0)) frame._generated_content = [ FrameBreak(), self.kif, FrameCutter(w, frame.width - w, self.kif, padding, self.style.lpad, False), FrameBreak()] class BoundByWidth(Flowable): """Limit a list of flowables by width. This still lets the flowables break over pages and frames. """ def __init__(self, maxWidth, content=[], style=None, mode=None, scale = None): self.maxWidth = maxWidth self.content = content self.style = style self.mode = mode self.pad = None self.scale = scale Flowable.__init__(self) def border_padding(self, useWidth, additional): sdict = self.style sdict = sdict.__dict__ or {} bp = sdict.get("borderPadding", 0) if useWidth: additional += sdict.get("borderWidth", 0) if not isinstance(bp, list): bp = [bp] * 4 return [x + additional for x in bp] def identity(self, maxLen=None): return "<%s at %s%s%s> containing: %s" % (self.__class__.__name__, hex(id(self)), self._frameName(), getattr(self, 'name', '') and (' name="%s"' % getattr(self, 'name', '')) or '', unicode([c.identity() for c in self.content])[:80]) def wrap(self, availWidth, availHeight): """If we need more width than we have, complain, keep a scale""" self.pad = self.border_padding(True, 0.1) maxWidth = float(min( styles.adjustUnits(self.maxWidth, availWidth) or availWidth, availWidth)) self.maxWidth = maxWidth maxWidth -= (self.pad[1]+self.pad[3]) self.width, self.height = _listWrapOn(self.content, maxWidth, None) if self.width > maxWidth: if self.mode <> 'shrink': self.scale = 1.0 log.warning("BoundByWidth too wide to fit in frame (%s > %s): %s", self.width,maxWidth,self.identity()) if self.mode == 'shrink' and not self.scale: self.scale = (maxWidth + self.pad[1]+self.pad[3])/\ (self.width + self.pad[1]+self.pad[3]) else: self.scale = 1.0 self.height *= self.scale self.width *= self.scale return self.width, self.height + (self.pad[0]+self.pad[2])*self.scale def split(self, availWidth, availHeight): if not self.pad: self.wrap(availWidth, availHeight) content = self.content if len(self.content) == 1: # We need to split the only element we have content = content[0].split( availWidth - (self.pad[1]+self.pad[3]), availHeight - (self.pad[0]+self.pad[2])) result = [BoundByWidth(self.maxWidth, [f], self.style, self.mode, self.scale) for f in content] return result def draw(self): """we simulate being added to a frame""" canv = self.canv canv.saveState() x = canv._x y = canv._y _sW = 0 scale = self.scale content = None #, canv, x, y, _sW=0, scale=1.0, content=None, aW=None): pS = 0 aW = self.width aW = scale*(aW + _sW) if content is None: content = self.content y += (self.height + self.pad[2])/scale x += self.pad[3] for c in content: w, h = c.wrapOn(canv, aW, 0xfffffff) if (w < _FUZZ or h < _FUZZ) and not getattr(c, '_ZEROSIZE', None): continue if c is not content[0]: h += max(c.getSpaceBefore() - pS, 0) y -= h canv.saveState() if self.mode == 'shrink': canv.scale(scale, scale) elif self.mode == 'truncate': p = canv.beginPath() p.rect(x-self.pad[3], y-self.pad[2], self.maxWidth, self.height + self.pad[0]+self.pad[2]) canv.clipPath(p, stroke=0) c.drawOn(canv, x, y, _sW=aW - w) canv.restoreState() if c is not content[-1]: pS = c.getSpaceAfter() y -= pS canv.restoreState() class BoxedContainer(BoundByWidth): def __init__(self, content, style, mode='shrink'): try: w=style.width except AttributeError: w='100%' BoundByWidth.__init__(self, w, content, mode=mode, style=None) self.style = style self.mode = mode def identity(self, maxLen=None): return unicode([u"BoxedContainer containing: ", [c.identity() for c in self.content]])[:80] def draw(self): canv = self.canv canv.saveState() x = canv._x y = canv._y _sW = 0 lw = 0 if self.style and self.style.borderWidth > 0: lw = self.style.borderWidth canv.setLineWidth(self.style.borderWidth) if self.style.borderColor: # This could be None :-( canv.setStrokeColor(self.style.borderColor) stroke=1 else: stroke=0 else: stroke=0 if self.style and self.style.backColor: canv.setFillColor(self.style.backColor) fill=1 else: fill=0 padding = self.border_padding(False, lw) xpadding = padding[1] + padding[3] ypadding = padding[0] + padding[2] p = canv.beginPath() p.rect(x, y, self.width + xpadding, self.height + ypadding) canv.drawPath(p, stroke=stroke, fill=fill) canv.restoreState() BoundByWidth.draw(self) def split(self, availWidth, availHeight): self.wrap(availWidth, availHeight) padding = (self.pad[1]+self.pad[3])*self.scale if self.height + padding <= availHeight: return [self] else: # Try to figure out how many elements # we can put in the available space candidate = None remainder = None for p in range(1, len(self.content)): b = BoxedContainer(self.content[:p], self.style, self.mode) w, h = b.wrap(availWidth, availHeight) if h < availHeight: candidate = b if self.content[p:]: remainder = BoxedContainer(self.content[p:], self.style, self.mode) else: break if not candidate or not remainder: # Nothing fits, break page return [] if not remainder: # Everything fits? return [self] return [candidate, remainder] if reportlab.Version == '2.1': import reportlab.platypus.paragraph as pla_para ################Ugly stuff below def _do_post_text(i, t_off, tx): """From reportlab's paragraph.py, patched to avoid underlined links""" xs = tx.XtraState leading = xs.style.leading ff = 0.125*xs.f.fontSize y0 = xs.cur_y - i*leading y = y0 - ff ulc = None for x1, x2, c in xs.underlines: if c != ulc: tx._canvas.setStrokeColor(c) ulc = c tx._canvas.line(t_off + x1, y, t_off + x2, y) xs.underlines = [] xs.underline = 0 xs.underlineColor = None ys = y0 + 2*ff ulc = None for x1, x2, c in xs.strikes: if c != ulc: tx._canvas.setStrokeColor(c) ulc = c tx._canvas.line(t_off + x1, ys, t_off + x2, ys) xs.strikes = [] xs.strike = 0 xs.strikeColor = None yl = y + leading for x1, x2, link in xs.links: # This is the bad line # tx._canvas.line(t_off+x1, y, t_off+x2, y) _doLink(tx, link, (t_off + x1, y, t_off + x2, yl)) xs.links = [] xs.link = None # Look behind you! A three-headed monkey! pla_para._do_post_text.func_code = _do_post_text.func_code ############### End of the ugly class MyTableOfContents(TableOfContents): """ Subclass of reportlab.platypus.tableofcontents.TableOfContents which supports hyperlinks to corresponding sections. """ def __init__(self, *args, **kwargs): # The parent argument is to define the locality of # the TOC. If it's none, it's a global TOC and # any heading it's notified about is accepted. # If it's a node, then the heading needs to be "inside" # that node. This can be figured out because # the heading flowable keeps a reference to the title # node it was creatd from. # # Yes, this is gross. self.parent=kwargs.pop('parent') TableOfContents.__init__(self, *args, **kwargs) # reference ids for which this TOC should be notified self.refids = [] # revese lookup table from (level, text) to refid self.refid_lut = {} self.linkColor = "#0000ff" def notify(self, kind, stuff): # stuff includes (level, text, pagenum, label) level, text, pageNum, label, node = stuff rlabel='-'.join(label.split('-')[:-1]) def islocal(_node): '''See if this node is "local enough" for this TOC. This is for Issue 196''' if self.parent is None: return True while _node.parent: if _node.parent == self.parent: return True _node=_node.parent return False if rlabel in self.refids and islocal(node): self.addEntry(level, text, pageNum) self.refid_lut[(level, text, pageNum)] = label def wrap(self, availWidth, availHeight): """Adds hyperlink to toc entry.""" widths = (availWidth - self.rightColumnWidth, self.rightColumnWidth) # makes an internal table which does all the work. # we draw the LAST RUN's entries! If there are # none, we make some dummy data to keep the table # from complaining if len(self._lastEntries) == 0: if reportlab.Version <= '2.3': _tempEntries = [(0, 'Placeholder for table of contents', 0)] else: _tempEntries = [(0, 'Placeholder for table of contents', 0, None)] else: _tempEntries = self._lastEntries if _tempEntries: base_level = _tempEntries[0][0] else: base_level = 0 tableData = [] for entry in _tempEntries: level, text, pageNum = entry[:3] left_col_level = level - base_level if reportlab.Version > '2.3': # For ReportLab post-2.3 leftColStyle=self.getLevelStyle(left_col_level) else: # For ReportLab <= 2.3 leftColStyle = self.levelStyles[left_col_level] label = self.refid_lut.get((level, text, pageNum), None) if label: pre = u'' % (label, self.linkColor) post = u'' if not isinstance(text, unicode): text = unicode(text, 'utf-8') text = pre + text + post else: pre = '' post = '' #right col style is right aligned rightColStyle = ParagraphStyle(name='leftColLevel%d' % left_col_level, parent=leftColStyle, leftIndent=0, alignment=TA_RIGHT) leftPara = Paragraph(text, leftColStyle) rightPara = Paragraph(pre+str(pageNum)+post, rightColStyle) tableData.append([leftPara, rightPara]) self._table = Table(tableData, colWidths=widths, style=self.tableStyle) self.width, self.height = self._table.wrapOn(self.canv, availWidth, availHeight) return self.width, self.height def split(self, aW, aH): # Make sure _table exists before splitting. # This was only triggered in rare cases using sphinx. if not self._table: self.wrap(aW,aH) return TableOfContents.split(self, aW, aH) def isSatisfied(self): if self._entries == self._lastEntries: log.debug('Table Of Contents is stable') return True else: if len(self._entries) != len(self._lastEntries): log.info('Number of items in TOC changed '\ 'from %d to %d, not satisfied'%\ (len(self._lastEntries),len(self._entries))) return False log.info('TOC entries that moved in this pass:') for i in xrange(len(self._entries)): if self._entries[i] != self._lastEntries[i]: log.info(str(self._entries[i])) log.info(str(self._lastEntries[i])) return False rst2pdf-0.93/rst2pdf/pygments_code_block_directive.py0000775000175000017500000003545012060655013022715 0ustar ralsinaralsina# -*- coding: utf-8 -*- #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/pygments_code_block_directive.py $ #$Date: 2012-12-08 12:17:31 -0300 (Sat, 08 Dec 2012) $ #$Revision: 2591 $ # :Author: a Pygments author|contributor; Felix Wiemann; Guenter Milde # :Date: $Date: 2012-12-08 12:17:31 -0300 (Sat, 08 Dec 2012) $ # :Copyright: This module has been placed in the public domain. # # This is a merge of `Using Pygments in ReST documents`_ from the pygments_ # documentation, and a `proof of concept`_ by Felix Wiemann. # # ========== =========================================================== # 2007-06-01 Removed redundancy from class values. # 2007-06-04 Merge of successive tokens of same type # (code taken from pygments.formatters.others). # 2007-06-05 Separate docutils formatter script # Use pygments' CSS class names (like the html formatter) # allowing the use of pygments-produced style sheets. # 2007-06-07 Merge in the formatting of the parsed tokens # (misnamed as docutils_formatter) as class DocutilsInterface # 2007-06-08 Failsave implementation (fallback to a standard literal block # if pygments not found) # ========== =========================================================== # # :: """Define and register a code-block directive using pygments""" # Requirements # ------------ # :: import codecs from docutils import nodes from docutils.parsers.rst import directives try: import pygments from pygments.lexers import get_lexer_by_name from pygments.formatters.html import _get_ttype_class except ImportError: pass from log import log # Customisation # ------------- # # Do not insert inline nodes for the following tokens. # (You could add e.g. Token.Punctuation like ``['', 'p']``.) :: unstyled_tokens = [''] # DocutilsInterface # ----------------- # # This interface class combines code from # pygments.formatters.html and pygments.formatters.others. # # It does not require anything of docutils and could also become a part of # pygments:: class DocutilsInterface(object): """Parse `code` string and yield "classified" tokens. Arguments code -- string of source code to parse language -- formal language the code is written in. Merge subsequent tokens of the same token-type. Yields the tokens as ``(ttype_class, value)`` tuples, where ttype_class is taken from pygments.token.STANDARD_TYPES and corresponds to the class argument used in pygments html output. """ def __init__(self, code, language, custom_args={}): self.code = code self.language = language self.custom_args = custom_args def lex(self): # Get lexer for language (use text as fallback) try: if self.language and unicode(self.language).lower() <> 'none': lexer = get_lexer_by_name(self.language.lower(), **self.custom_args ) else: lexer = get_lexer_by_name('text', **self.custom_args) except ValueError: log.info("no pygments lexer for %s, using 'text'" \ % self.language) # what happens if pygment isn't present ? lexer = get_lexer_by_name('text') return pygments.lex(self.code, lexer) def join(self, tokens): """join subsequent tokens of same token-type """ tokens = iter(tokens) (lasttype, lastval) = tokens.next() for ttype, value in tokens: if ttype is lasttype: lastval += value else: yield(lasttype, lastval) (lasttype, lastval) = (ttype, value) yield(lasttype, lastval) def __iter__(self): """parse code string and yield "clasified" tokens """ try: tokens = self.lex() except IOError: log.info("Pygments lexer not found, using fallback") # TODO: write message to INFO yield ('', self.code) return for ttype, value in self.join(tokens): yield (_get_ttype_class(ttype), value) # code_block_directive # -------------------- # :: def code_block_directive(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine): """Parse and classify content of a code_block.""" if 'include' in options: try: if 'encoding' in options: encoding = options['encoding'] else: encoding = 'utf-8' content = codecs.open(options['include'], 'r', encoding).read().rstrip() except (IOError, UnicodeError): # no file or problem finding it or reading it log.error('Error reading file: "%s" L %s' % (options['include'], lineno)) content = u'' line_offset = 0 if content: # here we define the start-at and end-at options # so that limit is included in extraction # this is different than the start-after directive of docutils # (docutils/parsers/rst/directives/misc.py L73+) # which excludes the beginning # the reason is we want to be able to define a start-at like # def mymethod(self) # and have such a definition included after_text = options.get('start-at', None) if after_text: # skip content in include_text before *and NOT incl.* a matching text after_index = content.find(after_text) if after_index < 0: raise state_machine.reporter.severe('Problem with "start-at" option of "%s" ' 'code-block directive:\nText not found.' % options['start-at']) # patch mmueller start # Move the after_index to the beginning of the line with the # match. for char in content[after_index:0:-1]: # codecs always opens binary. This works with '\n', '\r' and # '\r\n'. We are going backwards, so '\n' is found first # in '\r\n'. # Going with .splitlines() seems more appropriate # but needs a few more changes. if char == u'\n' or char == u'\r': break after_index -= 1 # patch mmueller end content = content[after_index:] line_offset = len(content[:after_index].splitlines()) after_text = options.get('start-after', None) if after_text: # skip content in include_text before *and incl.* a matching text after_index = content.find(after_text) if after_index < 0: raise state_machine.reporter.severe('Problem with "start-after" option of "%s" ' 'code-block directive:\nText not found.' % options['start-after']) line_offset = len(content[:after_index + len(after_text)].splitlines()) content = content[after_index + len(after_text):] # same changes here for the same reason before_text = options.get('end-at', None) if before_text: # skip content in include_text after *and incl.* a matching text before_index = content.find(before_text) if before_index < 0: raise state_machine.reporter.severe('Problem with "end-at" option of "%s" ' 'code-block directive:\nText not found.' % options['end-at']) content = content[:before_index + len(before_text)] before_text = options.get('end-before', None) if before_text: # skip content in include_text after *and NOT incl.* a matching text before_index = content.find(before_text) if before_index < 0: raise state_machine.reporter.severe('Problem with "end-before" option of "%s" ' 'code-block directive:\nText not found.' % options['end-before']) content = content[:before_index] else: content = u'\n'.join(content) if 'tabsize' in options: tabw = options['tabsize'] else: tabw = int(options.get('tab-width', 8)) content = content.replace('\t',' '*tabw) withln = "linenos" in options if not "linenos_offset" in options: line_offset = 0 language = arguments[0] # create a literal block element and set class argument code_block = nodes.literal_block(classes=["code", language]) if withln: lineno = 1 + line_offset total_lines = content.count('\n') + 1 + line_offset lnwidth = len(str(total_lines)) fstr = "\n%%%dd " % lnwidth code_block += nodes.inline(fstr[1:] % lineno, fstr[1:] % lineno, classes=['linenumber']) # parse content with pygments and add to code_block element for cls, value in DocutilsInterface(content, language, options): if withln and "\n" in value: # Split on the "\n"s values = value.split("\n") # The first piece, pass as-is code_block += nodes.Text(values[0], values[0]) # On the second and later pieces, insert \n and linenos linenos = range(lineno, lineno + len(values)) for chunk, ln in zip(values, linenos)[1:]: if ln <= total_lines: code_block += nodes.inline(fstr % ln, fstr % ln, classes=['linenumber']) code_block += nodes.Text(chunk, chunk) lineno += len(values) - 1 elif cls in unstyled_tokens: # insert as Text to decrease the verbosity of the output. code_block += nodes.Text(value, value) else: code_block += nodes.inline(value, value, classes=["pygments-" + cls]) return [code_block] # Custom argument validators # -------------------------- # :: # # Move to separated module?? def string_list(argument): """ Converts a space- or comma-separated list of values into a python list of strings. (Directive option conversion function) Based in positive_int_list of docutils.parsers.rst.directives """ if ',' in argument: entries = argument.split(',') else: entries = argument.split() return entries def string_bool(argument): """ Converts True, true, False, False in python boolean values """ if argument is None: msg = 'argument required but none supplied; choose from "True" or "False"' raise ValueError(msg) elif argument.lower() == 'true': return True elif argument.lower() == 'false': return False else: raise ValueError('"%s" unknown; choose from "True" or "False"' % argument) def csharp_unicodelevel(argument): return directives.choice(argument, ('none', 'basic', 'full')) def lhs_litstyle(argument): return directives.choice(argument, ('bird', 'latex')) def raw_compress(argument): return directives.choice(argument, ('gz', 'bz2')) # Register Directive # ------------------ # :: code_block_directive.arguments = (1, 0, 1) code_block_directive.content = 1 code_block_directive.options = {'include': directives.unchanged_required, 'start-at': directives.unchanged_required, 'end-at': directives.unchanged_required, 'start-after': directives.unchanged_required, 'end-before': directives.unchanged_required, 'linenos': directives.unchanged, 'linenos_offset': directives.unchanged, 'tab-width': directives.unchanged, # generic 'stripnl' : string_bool, 'stripall': string_bool, 'ensurenl': string_bool, 'tabsize' : directives.positive_int, 'encoding': directives.encoding, # Lua 'func_name_hightlighting':string_bool, 'disabled_modules': string_list, # Python Console 'python3': string_bool, # Delphi 'turbopascal':string_bool, 'delphi' :string_bool, 'freepascal': string_bool, 'units': string_list, # Modula2 'pim' : string_bool, 'iso' : string_bool, 'objm2' : string_bool, 'gm2ext': string_bool, # CSharp 'unicodelevel' : csharp_unicodelevel, # Literate haskell 'litstyle' : lhs_litstyle, # Raw 'compress': raw_compress, # Rst 'handlecodeblocks': string_bool, # Php 'startinline': string_bool, 'funcnamehighlighting': string_bool, 'disabledmodules': string_list, } # .. _doctutils: http://docutils.sf.net/ # .. _pygments: http://pygments.org/ # .. _Using Pygments in ReST documents: http://pygments.org/docs/rstdirective/ # .. _proof of concept: # http://article.gmane.org/gmane.text.docutils.user/3689 # # Test output # ----------- # # If called from the command line, call the docutils publisher to render the # input:: if __name__ == '__main__': from docutils.core import publish_cmdline, default_description from docutils.parsers.rst import directives directives.register_directive('code-block', code_block_directive) description = "code-block directive test output" + default_description try: import locale locale.setlocale(locale.LC_ALL, '') except Exception: pass publish_cmdline(writer_name='html', description=description) rst2pdf-0.93/rst2pdf/languages.py0000664000175000017500000000323111723266071016607 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/languages.py $ #$Date: 2012-02-28 21:07:21 -0300 (Tue, 28 Feb 2012) $ #$Revision: 2443 $ from docutils.languages import get_language as get_language from rst2pdf.log import log def get_language_silent(lang): """Docutils get_language() with patches for older versions.""" try: return get_language(lang) except TypeError, err: # Docutils 0.8.1 if 'get_language() takes exactly 2 arguments' in str(err): class SilentReporter(object): def warning(self, msg): pass return get_language(lang, SilentReporter()) raise # re-raise any other TypeError except ImportError: # Docutils < 0.8 return get_language('en') def get_language_available(lang): """Docutils get_language() also returning the available language.""" module = get_language_silent(lang) docutils_lang = module.__name__.rsplit('.', 1)[-1] if (docutils_lang == 'en' and docutils_lang != lang and '_' in lang): module = get_language_silent(lang.split('_', 1)[0]) docutils_lang = module.__name__.rsplit('.', 1)[-1] if docutils_lang != lang: warn = (docutils_lang.split('_', 1)[0] == lang.split('_', 1)[0] and log.info or log.warning) warn("Language '%s' not supported by Docutils," " using '%s' instead." % (lang, docutils_lang)) if docutils_lang == 'en' and lang.split('_', 1)[0] != 'en': lang = 'en_US' return lang, docutils_lang, module rst2pdf-0.93/rst2pdf/extensions/0000775000175000017500000000000012064144441016462 5ustar ralsinaralsinarst2pdf-0.93/rst2pdf/extensions/vectorpdf_r2p.py0000664000175000017500000001223112026635740021617 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms import sys import os from weakref import WeakKeyDictionary from copy import copy try: from reportlab.rl_config import _FUZZ from reportlab.platypus import Flowable from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT import pdfrw from pdfrw.toreportlab import makerl from pdfrw.buildxobj import CacheXObj from rst2pdf.log import log import rst2pdf.image from rst2pdf.opt_imports import LazyImports except ImportError: # This is just to make nosetest happy on the CI server class Flowable: pass # TODO: Looks the same as for other images, because I # stole it from other image handlers. Common base class??? class AnyCache(object): ''' This is a memory leak waiting to happen. It is used by the raster method. Not yet sure how to define scope on these cached items. ''' # This is monkey-patched into reportlab IFF we are using # PDF files inside paragraphs. def drawImage(self, image, x, y, width=None, height=None, mask=None, preserveAspectRatio=False, anchor='c'): if not isinstance(image, VectorPdf): return self._drawImageNotVectorPDF(image, x, y, width, height, mask, preserveAspectRatio, anchor) image.drawOn(self, x, y, width=width, height=height) class VectorPdf(Flowable): # The filecache allows us to only read a given PDF file once # for every RstToPdf client object. This allows this module # to usefully cache, while avoiding being the cause of a memory # leak in a long-running process. filecache = WeakKeyDictionary() @classmethod def load_xobj(cls, srcinfo): client, uri = srcinfo loader = cls.filecache.get(client) if loader is None: loader = cls.filecache[client] = CacheXObj().load return loader(uri) def __init__(self, filename, width=None, height=None, kind='direct', mask=None, lazy=True, srcinfo=None): Flowable.__init__(self) self._kind = kind self.xobj = xobj = self.load_xobj(srcinfo) self.imageWidth, self.imageHeight = imageWidth, imageHeight = xobj.w, xobj.h width = width or imageWidth height = height or imageHeight if kind in ['bound','proportional']: factor = min(float(width)/imageWidth,float(height)/imageHeight) width = factor * imageWidth height = factor * imageHeight self.drawWidth = width self.drawHeight = height def wrap(self, aW, aH): return self.drawWidth, self.drawHeight def drawOn(self, canv, x, y, _sW=0, width=0, height=0): if _sW > 0 and hasattr(self, 'hAlign'): a = self.hAlign if a in ('CENTER', 'CENTRE', TA_CENTER): x += 0.5*_sW elif a in ('RIGHT', TA_RIGHT): x += _sW elif a not in ('LEFT', TA_LEFT): raise ValueError("Bad hAlign value " + str(a)) xobj = self.xobj xobj_name = makerl(canv._doc, xobj) xscale = (width or self.drawWidth) / xobj.w yscale = (height or self.drawHeight) / xobj.h x -= xobj.x * xscale y -= xobj.y * yscale canv.saveState() canv.translate(x, y) canv.scale(xscale, yscale) canv.doForm(xobj_name) canv.restoreState() def _restrictSize(self,aW,aH): if self.drawWidth>aW+_FUZZ or self.drawHeight>aH+_FUZZ: self._oldDrawSize = self.drawWidth, self.drawHeight factor = min(float(aW)/self.drawWidth,float(aH)/self.drawHeight) self.drawWidth *= factor self.drawHeight *= factor return self.drawWidth, self.drawHeight def getSize(self): return self.drawWidth, self.drawHeight @staticmethod def SleazyPDFCheck(fname): return fname.split('#',1)[0].rsplit('.',1)[1].lower() == 'pdf' OldImageReader = None @classmethod def NewImageReader(cls, fname): if cls.SleazyPDFCheck(fname): return cls(None, srcinfo=(AnyCache, fname)) else: return cls.OldImageReader(fname) @classmethod def raster(cls, fname, client): ''' We don't REALLY generate a raster image. Instead, we attempt to monkey-patch reportlab to call us with the filename again later. ''' if cls.OldImageReader is None: import reportlab.platypus.paraparser as p cls.OldImageReader = p.ImageReader p.ImageReader = cls.NewImageReader from reportlab.pdfgen.canvas import Canvas as c c._drawImageNotVectorPDF = c.drawImage c.drawImage = drawImage return fname def __deepcopy__(self, *whatever): # VectorPDF class is not deep copyable. Stop the copy at this # class. Related to issue 126, but cropped up later when # we added fake raster stuff for reportlab tag. return copy(self) def install(createpdf, options): ''' Monkey-patch this PDF handling into rst2pdf ''' LazyImports.pdfinfo = pdfrw rst2pdf.image.VectorPdf = VectorPdf rst2pdf-0.93/rst2pdf/extensions/__init__.py0000664000175000017500000000037011340611456020574 0ustar ralsinaralsina''' This place-holder module makes the extensions directory into a Python "package", so that external user-specific modules can act as umbrella modules, and, for example: import rst2pdf.extensions.vectorpdf_r2p to bring in the PDF extension. ''' rst2pdf-0.93/rst2pdf/extensions/sample.py0000664000175000017500000000126211337641176020327 0ustar ralsinaralsinaprint ''' This is a sample rst2pdf extension. Because it is named 'sample.py' you can get rst2pdf to import it by putting '-e sample' on the rst2pdf command line. An extension is called after the command-line is parsed, and can monkey-patch any necessary changes into rst2pdf. An extension can live either in the extensions subdirectory, or anywhere on the python path. ''' def install(createpdf, options): ''' This function is called with an object with the createpdf module globals as attributes, and with the options from the command line parser. This function does not have to exist, but must have the correct call signature if it does. ''' rst2pdf-0.93/rst2pdf/extensions/preprocess_r2p.py0000664000175000017500000003133311466406606022020 0ustar ralsinaralsina# -*- coding: utf-8 -*- # An extension module for rst2pdf # Copyright 2010, Patrick Maupin # See LICENSE.txt for licensing terms ''' preprocess is a rst2pdf extension module (invoked by -e preprocess on the rst2pdf command line. There is a testcase for this file at rst2pdf/tests/test_preprocess.txt This preprocesses the source text file before handing it to docutils. This module serves two purposes: 1) It demonstrates the technique and can be a starting point for similar user-written processing modules; and 2) It provides a simplified syntax for documents which are targeted only at rst2pdf, rather than docutils in general. The design goal of "base rst2pdf" is to be completely compatible with docutils, such that a file which works as a PDF can also work as HTML, etc. Unfortunately, base docutils is a slow-moving target, and does not make this easy. For example, SVG images do not work properly with the HTML backend unless you install a patch, and docutils has no concept of page breaks or additional vertical space (other than the
    ). So, while it would be nice to have documents that render perfectly with any backend, this goal is hard to achieve for some documents, and once you are restricted to a particular transformation type, then you might as well have a slightly nicer syntax for your source document. ----------------------------------------------------------------- Preprocessor extensions: All current extensions except style occupy a single line in the source file. ``.. include::`` Processes the include file as well. An include file may either be a restructured text file, OR may be an RSON or JSON stylesheet. The determination is made by trying to parse it as RSON. If it passes, it is a stylesheet; if not, well, we'll let the docutils parser have its way with it. ``.. page::`` Is translated into a raw PageBreak. ``.. space::`` Is translated into a raw Spacer. If only one number given, is used for vertical space. This is the canonical use case, since horizontal space is ignored anyway! ``.. style::`` Allows you to create in-line stylesheets. As with other restructured text components, the stylesheet data must be indented. Stylesheets are in RSON or JSON. ``.. widths::`` creates a new table style (based on table or the first non-numeric token) and creates a class using that style specifically for the next table in the document. (Creates a .. class::, so you must specify .. widths:: immediately before the table it applies to. Allows you to set the widths for the table, using percentages. ``SingleWordAtLeftColumn`` If a single word at the left column is surrounded by blank lines, the singleword style is automatically applied to the word. This is a workaround for the broken interaction between docutils subtitles and bibliographic metadata. (I found that docutils was referencing my subtitles from inside the TOC, and that seemed silly. Perhaps there is a better workaround at a lower level in rst2pdf.) ----------------------------------------------------------------- Preprocessor operation: The preprocessor generates a file that has the same name as the source file, with .build_temp. embedded in the name, and then passes that file to the restructured text parser. This file is left on the disk after operation, because any error messages from docutils will refer to line numbers in it, rather than in the original source, so debugging could be difficult if the file were automatically removed. ''' import os import re from rst2pdf.rson import loads as rson_loads from rst2pdf.log import log class DummyFile(str): ''' We could use stringio, but that's really overkill for what we need here. ''' def read(self): return self class Preprocess(object): def __init__(self, sourcef, incfile=False, widthcount=0): ''' Process a file and decorate the resultant Preprocess instance with self.result (the preprocessed file) and self.styles (extracted stylesheet information) for the caller. ''' self.widthcount = widthcount name = sourcef.name source = sourcef.read().replace('\r\n', '\n').replace('\r', '\n') # Make the determination if an include file is a stylesheet or # another restructured text file, and handle stylesheets appropriately. if incfile: try: self.styles = styles = rson_loads(source) substyles = styles.get('styles') if substyles is not None: styles['styles'] = dict(substyles) except: pass else: self.changed = True self.keep = False return # Read the whole file and wrap it in a DummyFile self.sourcef = DummyFile(source) self.sourcef.name = name # Use a regular expression on the source, to take it apart # and put it back together again. self.source = source = [x for x in self.splitter(source) if x] self.result = result = [] self.styles = {} self.changed = False # More efficient to pop() a list than to keep taking tokens from [0] source.reverse() isblank = False keywords = self.keywords handle_single = keywords['single::'] while source: wasblank = isblank isblank = False chunk = source.pop() result.append(chunk) # Only process single lines if not chunk.endswith('\n'): continue result[-1] = chunk[:-1] if chunk.index('\n') != len(chunk)-1: continue # Parse the line to look for one of our keywords. tokens = chunk.split() isblank = not tokens if len(tokens) >= 2 and tokens[0] == '..' and tokens[1].endswith('::'): func = keywords.get(tokens[1]) if func is None: continue chunk = chunk.split('::', 1)[1] elif wasblank and len(tokens) == 1 and chunk[0].isalpha() and tokens[0].isalpha(): func = handle_single chunk = tokens[0] else: continue result.pop() func(self, chunk.strip()) # Determine if we actually did anything or not. Just use our source file # if not. Otherwise, write the results to disk (so the user can use them # for debugging) and return them. if self.changed: result.append('') result = DummyFile('\n'.join(result)) result.name = name + '.build_temp' self.keep = keep = len(result.strip()) if keep: f = open(result.name, 'wb') f.write(result) f.close() self.result = result else: self.result = self.sourcef def handle_include(self, fname): # Ugly, violates DRY, etc., but I'm not about to go # figure out how to re-use docutils include file # path processing! for prefix in ('', os.path.dirname(self.sourcef.name)): try: f = open(os.path.join(prefix, fname), 'rb') except IOError: continue else: break else: log.error("Could not find include file %s", fname) self.changed = True return # Recursively call this class to process include files. # Extract all the information from the included file. inc = Preprocess(f, True, self.widthcount) self.widthcount = inc.widthcount if 'styles' in self.styles and 'styles' in inc.styles: self.styles['styles'].update(inc.styles.pop('styles')) self.styles.update(inc.styles) if inc.changed: self.changed = True if not inc.keep: return fname = inc.result.name self.result.extend(['', '', '.. include:: ' + fname, '']) def handle_single(self, word): ''' Prepend the singleword class in front of the word. ''' self.changed = True self.result.extend(['', '', '.. class:: singleword', '', word, '']) def handle_page(self, chunk): ''' Insert a raw pagebreak ''' self.changed = True self.result.extend(['', '', '.. raw:: pdf', '', ' PageBreak ' + chunk, '']) def handle_space(self, chunk): ''' Insert a raw space ''' self.changed = True if len(chunk.replace(',', ' ').split()) == 1: chunk = '0 ' + chunk self.result.extend(['', '', '.. raw:: pdf', '', ' Spacer ' + chunk, '']) def handle_widths(self, chunk): ''' Insert a unique style in the stylesheet, and reference it from a .. class:: comment. ''' self.changed = True chunk = chunk.replace(',', ' ').replace('%', ' ').split() if not chunk: log.error('no widths specified in .. widths ::') return parent = chunk[0][0].isalpha() and chunk.pop(0) or 'table' values = [float(x) for x in chunk] total = sum(values) values = [int(round(100 * x / total)) for x in values] while 1: total = sum(values) if total > 100: values[values.index(max(values))] -= 1 elif total < 100: values[values.index(max(values))] += 1 else: break values = ['%s%%' % x for x in values] self.widthcount += 1 stylename = 'embeddedtablewidth%d' % self.widthcount self.styles.setdefault('styles', {})[stylename] = dict(parent=parent, colWidths=values) self.result.extend(['', '', '.. class:: ' + stylename, '']) def handle_style(self, chunk): ''' Parse through the source until we find lines that are no longer indented, then pass our indented lines to the RSON parser. ''' self.changed = True if chunk: log.error(".. style:: does not recognize string %s" % repr(chunk)) return mystyles = '\n'.join(self.read_indented()) if not mystyles: log.error("Empty .. style:: block found") try: styles = rson_loads(mystyles) except ValueError, e: # Error parsing the JSON data log.critical('Error parsing stylesheet "%s": %s'%\ (mystyles, str(e))) else: self.styles.setdefault('styles', {}).update(styles) def read_indented(self): ''' Read data from source while it is indented (or blank). Stop on the first non-indented line, and leave the rest on the source. ''' source = self.source data = None while source and not data: data = source and source.pop().splitlines() or [] data.reverse() while data: line = data.pop().rstrip() if not line or line.lstrip() != line: yield line continue data.append(line) break data.reverse() data.append('') source.append('\n'.join(data)) source.append('\n') # Automatically generate our keywords from methods prefixed with 'handle_' keywords = list(x[7:] for x in vars() if x.startswith('handle_')) # Generate the regular expression for parsing, and a split function using it. blankline = r'^([ \t]*\n)' singleword = r'^([A-Za-z]+[ \t]*\n)(?=[ \t]*\n)' comment = r'^(\.\.[ \t]+(?:%s)\:\:.*\n)' % '|'.join(keywords) expression = '(?:%s)' % '|'.join([blankline, singleword, comment]) splitter = re.compile(expression, re.MULTILINE).split # Once we have used the keywords in our regular expression, # fix them up for use by the parser. keywords = dict([(x + '::', vars()['handle_' + x]) for x in keywords]) class MyStyles(str): ''' This class conforms to the styles.py processing requirements for a stylesheet that is not really a file. It must be callable(), and str(x) must return the name of the stylesheet. ''' def __new__(cls, styles): self = str.__new__(cls, 'Embedded Preprocess Styles') self.data = styles return self def __call__(self): return self.data def install(createpdf, options): ''' This is where we intercept the document conversion. Preprocess the restructured text, and insert our new styles (if any). ''' data = Preprocess(options.infile) options.infile = data.result if data.styles: options.style.append(MyStyles(data.styles)) rst2pdf-0.93/rst2pdf/extensions/inkscape_r2p.py0000664000175000017500000000577312064143227021431 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms ''' inkscape.py is an rst2pdf extension (e.g. rst2pdf -e inkscape xxx xxxx) which uses the inkscape program to convert an svg to a PDF, then uses the vectorpdf code to process the PDF. .. NOTE:: The initial version is a proof of concept; uses subprocess in a naive way, and doesn't check return from inkscape for errors. ''' import sys, os, tempfile, subprocess from weakref import WeakKeyDictionary from rst2pdf.log import log from vectorpdf_r2p import VectorPdf import rst2pdf.image if sys.platform.startswith('win'): # note: this is the default "all users" install location, # we might want to provide an option for this progname = os.path.expandvars(r'$PROGRAMFILES\Inkscape\inkscape.exe') else: progname = 'inkscape' class InkscapeImage(VectorPdf): # The filecache allows us to only read a given PDF file once # for every RstToPdf client object. This allows this module # to usefully cache, while avoiding being the cause of a memory # leak in a long-running process. source_filecache = WeakKeyDictionary() @classmethod def available(self): return True def __init__(self, filename, width=None, height=None, kind='direct', mask=None, lazy=True, srcinfo=None): client, uri = srcinfo cache = self.source_filecache.setdefault(client, {}) pdffname = cache.get(filename) if pdffname is None: tmpf, pdffname = tempfile.mkstemp(suffix='.pdf') os.close(tmpf) client.to_unlink.append(pdffname) cache[filename] = pdffname cmd = [progname, os.path.abspath(filename), '-A', pdffname] try: subprocess.call(cmd) except OSError, e: log.error("Failed to run command: %s", ' '.join(cmd)) raise self.load_xobj((client, pdffname)) pdfuri = uri.replace(filename, pdffname) pdfsrc = client, pdfuri VectorPdf.__init__(self, pdfuri, width, height, kind, mask, lazy, pdfsrc) @classmethod def raster(self, filename, client): """Returns a URI to a rasterized version of the image""" cache = self.source_filecache.setdefault(client, {}) pngfname = cache.get(filename+'_raster') if pngfname is None: tmpf, pngfname = tempfile.mkstemp(suffix='.png') os.close(tmpf) client.to_unlink.append(pngfname) cache[filename+'_raster'] = pngfname cmd = [progname, os.path.abspath(filename), '-e', pngfname, '-d', str(client.def_dpi)] try: subprocess.call(cmd) return pngfname except OSError, e: log.error("Failed to run command: %s", ' '.join(cmd)) raise return None def install(createpdf, options): ''' Monkey-patch our class in to image as a replacement class for SVGImage. ''' rst2pdf.image.SVGImage = InkscapeImage rst2pdf-0.93/rst2pdf/extensions/dotted_toc.py0000664000175000017500000001471111475267420021200 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms #$HeadURL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/extensions/dotted_toc.py $ #$LastChangedDate: 2010-11-30 18:39:28 -0300 (Tue, 30 Nov 2010) $ #$LastChangedRevision: 2417 $ # Some fragments of code are copied from Reportlab under this license: # ##################################################################################### # # Copyright (c) 2000-2008, ReportLab Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # * Neither the name of the company nor the names of its contributors may be # used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE OFFICERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ##################################################################################### from copy import copy import reportlab from reportlab.platypus.tableofcontents import drawPageNumbers import rst2pdf.genelements as genelements Table = genelements.Table Paragraph = genelements.Paragraph ''' .. NOTE: THIS IS A HUGE HACK HACK HACK All I did was take the wrap() method from the stock reportlab TOC generator, and make the minimal changes to make it work on MY documents in rst2pdf. History: ~~~~~~~~ The reportlab TOC generator adds nice dots between the text and the page number. The rst2pdf one does not. A closer examination reveals that the rst2pdf one probably deliberately stripped this code, because the reportlab implementation only allowed a single TOC, and this is unacceptable for at least some rst2pdf users. There are other differences in the rst2pdf one I don't understand. This module is a hack to add back dots between the lines. Maybe at some point we can figure out if this is right, or how to support dots in the TOC in the main code. Mind you, the original RL implementation is a complete hack in any case: - It uses a callback to a nested function which doesn't even bother to assume the original enclosing scope is available at callback time. This leads it to do crazy things like eval() - It uses a single name in the canvas for the callback function (this is what kills multiple TOC capability) when it would be extremely easy to generate a unique name. ''' class DottedTableOfContents(genelements.MyTableOfContents): toc_counter = [0] def wrap(self, availWidth, availHeight): "All table properties should be known by now." # makes an internal table which does all the work. # we draw the LAST RUN's entries! If there are # none, we make some dummy data to keep the table # from complaining if len(self._lastEntries) == 0: if reportlab.Version <= '2.3': _tempEntries = [(0, 'Placeholder for table of contents', 0)] else: _tempEntries = [(0, 'Placeholder for table of contents', 0, None)] else: _tempEntries = self._lastEntries if _tempEntries: base_level = _tempEntries[0][0] else: base_level = 0 def drawTOCEntryEnd(canvas, kind, label): '''Callback to draw dots and page numbers after each entry.''' style, page, key, dot = end_info[int(label)] drawPageNumbers(canvas, style, [(page, key)], availWidth, availHeight, dot) toc_counter = self.toc_counter toc_counter[0] += 1 funcname = 'drawTOCEntryEnd%s' % toc_counter[0] setattr(self.canv, funcname, drawTOCEntryEnd) end_info = [] tableData = [] for entry in _tempEntries: level, text, pageNum = entry[:3] left_col_level = level - base_level if reportlab.Version > '2.3': # For ReportLab post-2.3 style=self.getLevelStyle(left_col_level) else: # For ReportLab <= 2.3 style = self.levelStyles[left_col_level] if self.dotsMinLevel >= 0 and left_col_level >= self.dotsMinLevel: dot = ' . ' else: dot = '' style = copy(style) style.textColor = self.linkColor key = self.refid_lut.get((level, text, pageNum), None) if key: if not isinstance(text, unicode): text = unicode(text, 'utf-8') text = u'%s' % (key, text) para = Paragraph('%s' % (text, funcname, len(end_info)), style) end_info.append((style, pageNum, key, dot)) if style.spaceBefore: tableData.append([Spacer(1, style.spaceBefore),]) tableData.append([para,]) self._table = Table(tableData, colWidths=(availWidth,), style=self.tableStyle) self.width, self.height = self._table.wrapOn(self.canv,availWidth, availHeight) return (self.width, self.height) genelements.MyTableOfContents = DottedTableOfContents rst2pdf-0.93/rst2pdf/extensions/plantuml.py0000664000175000017500000000465012060757530020702 0ustar ralsinaralsina''' A rst2pdf extension to implement something similar to sphinx's plantuml extension (see http://pypi.python.org/pypi/sphinxcontrib-plantuml) Therefore, stuff may be copied from that code. Ergo: :copyright: Copyright 2010 by Yuya Nishihara . :license: BSD, (he says see LICENSE but the file is not there ;-) ''' import errno from docutils import nodes from docutils.parsers import rst from docutils.parsers.rst import directives import rst2pdf.genelements as genelements from rst2pdf.image import MyImage import tempfile import subprocess class plantuml(nodes.General, nodes.Element): pass class UmlDirective(rst.Directive): """Directive to insert PlantUML markup Example:: .. uml:: :alt: Alice and Bob Alice -> Bob: Hello Alice <- Bob: Hi You can use a :format: option to change between SVG and PNG diagrams, however, the SVG plantuml generates doesn't look very good to me. """ has_content = True option_spec = {'alt': directives.unchanged} option_spec = {'format': directives.unchanged} def run(self): node = plantuml() node['uml'] = '\n'.join(self.content) node['alt'] = self.options.get('alt', None) node['format'] = self.options.get('format', 'png') return [node] class UMLHandler(genelements.NodeHandler, plantuml): """Class to handle UML nodes""" def gather_elements(self, client, node, style): # Create image calling plantuml tfile = tempfile.NamedTemporaryFile(dir='.', delete=False, suffix='.'+node['format']) args = 'plantuml -pipe -charset utf-8' if node['format'].lower() == 'svg': args+=' -tsvg' client.to_unlink.append(tfile.name) try: p = subprocess.Popen(args.split(), stdout=tfile, stdin=subprocess.PIPE, stderr=subprocess.PIPE) except OSError, err: if err.errno != errno.ENOENT: raise raise PlantUmlError('plantuml command %r cannot be run' % self.builder.config.plantuml) serr = p.communicate(node['uml'].encode('utf-8'))[1] if p.returncode != 0: raise PlantUmlError('error while running plantuml\n\n' + serr) # Add Image node with the right image return [MyImage(tfile.name, client=client)] directives.register_directive("uml", UmlDirective) rst2pdf-0.93/rst2pdf/extensions/fancytitles.py0000664000175000017500000001344112060757222021367 0ustar ralsinaralsina# -*- coding: utf-8 -*- import rst2pdf.genelements as genelements from rst2pdf.flowables import Heading, MyPageBreak from rst2pdf.image import MyImage import docutils from rst2pdf.opt_imports import Paragraph import reportlab import tempfile import re from xml.sax.saxutils import unescape import codecs class FancyTitleHandler(genelements.HandleParagraph, docutils.nodes.title): ''' This class will handle title nodes. It takes a "titletemplate.svg", replaces TITLEGOESHERE with the actual title text, and draws that using the FancyHeading flowable (see below). Since this class is defined in an extension, it effectively replaces rst2pdf.genelements.HandleTitle. ''' def gather_elements(self, client, node, style): # This method is copied from the HandleTitle class # in rst2pdf.genelements. # Special cases: (Not sure this is right ;-) if isinstance(node.parent, docutils.nodes.document): #node.elements = [Paragraph(client.gen_pdftext(node), #client.styles['title'])] # The visible output is now done by the cover template node.elements = [] client.doc_title = node.rawsource client.doc_title_clean = node.astext().strip() elif isinstance(node.parent, docutils.nodes.topic): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['topic-title'])] elif isinstance(node.parent, docutils.nodes.Admonition): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['admonition-title'])] elif isinstance(node.parent, docutils.nodes.table): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['table-title'])] elif isinstance(node.parent, docutils.nodes.sidebar): node.elements = [Paragraph(client.gen_pdftext(node), client.styles['sidebar-title'])] else: # Section/Subsection/etc. text = client.gen_pdftext(node) fch = node.children[0] if isinstance(fch, docutils.nodes.generated) and \ fch['classes'] == ['sectnum']: snum = fch.astext() else: snum = None key = node.get('refid') maxdepth=4 if reportlab.Version > '2.1': maxdepth=6 # The parent ID is the refid + an ID to make it unique for Sphinx parent_id=(node.parent.get('ids', [None]) or [None])[0]+u'-'+unicode(id(node)) if client.depth > 1: node.elements = [ Heading(text, client.styles['heading%d'%min(client.depth, maxdepth)], level=client.depth-1, parent_id=parent_id, node=node, )] else: # This is an important title, do our magic ;-) # Hack the title template SVG tfile = codecs.open('titletemplate.svg','r','utf-8') tdata = tfile.read() tfile.close() tfile = tempfile.NamedTemporaryFile(dir='.', delete=False, suffix='.svg') tfname = tfile.name tfile.write(tdata.replace('TITLEGOESHERE', text).encode('utf-8')) tfile.close() # Now tfname contains a SVG with the right title. # Make rst2pdf delete it later. client.to_unlink.append(tfname) e = FancyHeading(tfname, width=700, height=100, client=client, snum=snum, parent_id=parent_id, text=text, hstyle=client.styles['heading%d'%min(client.depth, maxdepth)]) node.elements = [e] if client.depth <= client.breaklevel: node.elements.insert(0, MyPageBreak(breakTo=client.breakside)) return node.elements class FancyHeading(MyImage, Heading): '''This is a cross between the Heading flowable, that adds outline entries so you have a PDF TOC, and MyImage, that draws images''' def __init__(self, *args, **kwargs): # The inicialization is taken from rst2pdf.flowables.Heading hstyle = kwargs.pop('hstyle') level = 0 text = kwargs.pop('text') self.snum = kwargs.pop('snum') self.parent_id= kwargs.pop('parent_id') #self.stext = Heading.__init__(self,text,hstyle,level=level, parent_id=self.parent_id) # Cleanup title text #self.stext = re.sub(r'<[^>]*?>', '', unescape(self.stext)) #self.stext = self.stext.strip() # Stuff needed for the outline entry MyImage.__init__(self, *args, **kwargs) def drawOn(self,canv,x,y,_sW): ## These two lines are magic. #if isinstance(self.parent_id, tuple): #self.parent_id=self.parent_id[0] # Add outline entry. This is copied from rst2pdf.flowables.heading canv.bookmarkHorizontal(self.parent_id,0,y+self.image.height) if canv.firstSect: canv.sectName = self.stext canv.firstSect=False if self.snum is not None: canv.sectNum = self.snum else: canv.sectNum = "" canv.addOutlineEntry(self.stext.encode('utf-8','replace'), self.parent_id.encode('utf-8','replace'), int(self.level), False) # And let MyImage do all the drawing MyImage.drawOn(self,canv,x,y,_sW) rst2pdf-0.93/rst2pdf/nodehandlers.py0000664000175000017500000000076011723266071017313 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms #$URL: https://rst2pdf.googlecode.com/svn/tags/0.93/rst2pdf/nodehandlers.py $ #$Date: 2012-02-28 21:07:21 -0300 (Tue, 28 Feb 2012) $ #$Revision: 2443 $ # Import all node handler modules here. # The act of importing them wires them in. import genelements import genpdftext #sphinxnodes needs these from genpdftext import NodeHandler, FontHandler, HandleEmphasis # createpdf needs this nodehandlers = NodeHandler() rst2pdf-0.93/rst2pdf/config.py0000664000175000017500000000151411530356365016112 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms """Singleton config object""" import ConfigParser import os from rst2pdf.rson import loads cfdir = os.path.join(os.path.expanduser('~'), '.rst2pdf') cfname = os.path.join(cfdir, 'config') def getValue(section, key, default=None): section = section.lower() key = key.lower() try: return loads(conf.get(section, key)) except Exception: return default class ConfigError(Exception): def __init__(self, modulename, msg): self.modulename = modulename self.msg = msg conf = ConfigParser.SafeConfigParser() def parseConfig(extracf=None): global conf cflist = ["/etc/rst2pdf.conf", cfname] if extracf: cflist.append(extracf) conf = ConfigParser.SafeConfigParser() conf.read(cflist) parseConfig() rst2pdf-0.93/rst2pdf/math_directive.py0000664000175000017500000000741111777577164017655 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms from docutils.parsers import rst from docutils.parsers.rst import directives from docutils.nodes import General, Inline, Element from docutils import utils from docutils.parsers.rst import roles import basenodehandler, math_flowable if 'Directive' in rst.__dict__: class Math(rst.Directive): has_content = True required_arguments = 0 optional_arguments = 1 final_argument_whitespace = True option_spec = { 'label': directives.unchanged, 'fontsize': directives.nonnegative_int, 'color': directives.unchanged, 'nowrap': directives.flag, } def run(self): latex = '\n'.join(self.content) if self.arguments and self.arguments[0] and latex: latex = self.arguments[0] + '\n\n' + latex if self.arguments and self.arguments[0] and not latex: latex = self.arguments[0] label=self.options.get('label', None) fontsize=self.options.get('fontsize', None) color=self.options.get('color', None) return [math_node(latex=latex, label=label, fontsize=fontsize, color=color, rawsource=''.join(self.content))] def __repr__(self): return u''.join(self.content) else: def Math(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine): return [math_node(latex=''.join(content), rawsource=''.join(content))] Math.content = True directives.register_directive('math', Math) class math_node(General, Inline, Element): children = () def __init__(self, rawsource='', label=None, fontsize=12, color='black', *children, **attributes): self.rawsource = rawsource self.math_data = attributes['latex'] self.label = label self.fontsize = fontsize self.color = color Element.__init__(self, rawsource, *children, **attributes) def math_role(name, rawtext, text, lineno, inliner, options={}, content=[]): latex = utils.unescape(text, restore_backslashes=True) return [math_node(latex, latex=latex)], [] roles.register_local_role('math', math_role) class eq_node(Inline, Element): def __init__(self, rawsource='', label=None, *children, **attributes): self.label=label Element.__init__(self, rawsource, *children, **attributes) def eq_role(name, rawtext, text, lineno, inliner, options={}, content=[]): return [eq_node(label=text)],[] roles.register_local_role('eq', eq_role) class HandleMath(basenodehandler.NodeHandler, math_node): def gather_elements(self, client, node, style): if not node.fontsize: node.fontsize=style.fontSize if not node.color: node.color=style.textColor.rgb() return [math_flowable.Math(node.math_data,node.label,node.fontsize,node.color)] def get_text(self, client, node, replaceEnt): #get style for current node sty=client.styles.styleForNode(node) node_fontsize=sty.fontSize node_color='#'+sty.textColor.hexval()[2:] mf = math_flowable.Math(node.math_data,label=node.label,fontsize=node_fontsize,color=node_color) w, h = mf.wrap(0, 0) descent = mf.descent() img = mf.genImage() client.to_unlink.append(img) return '' % ( img, w, h, -descent) class HandleEq(basenodehandler.NodeHandler, eq_node): def get_text(self, client, node, replaceEnt): return '%s'%(node.label, client.styles.linkColor, node.label) rst2pdf-0.93/rst2pdf/log.py0000664000175000017500000000115311247742347015431 0ustar ralsinaralsina# -*- coding: utf-8 -*- # See LICENSE.txt for licensing terms import logging import sys logging.basicConfig( format='[%(levelname)s] %(filename)s:%(lineno)d %(message)s', level=logging.WARNING) log = logging.getLogger('rst2pdf') def nodeid(node): """Given a node, tries to return a way to see where it was in the source text""" fname='UNKNOWN' line='UNKNOWN' try: if node.line: line=str(node.line) except: pass try: if node.source: fname=str(node.source) except: pass return 'near line %s in file %s'%(line,fname)rst2pdf-0.93/doc/0000775000175000017500000000000012064144447013452 5ustar ralsinaralsinarst2pdf-0.93/doc/montecristo/0000775000175000017500000000000012064144447016020 5ustar ralsinaralsinarst2pdf-0.93/doc/montecristo/montecristo.sheet0000664000175000017500000000124311242602545021413 0ustar ralsinaralsina{ "embeddedFonts" : [["SCRIPTIN.ttf", "SCRIPTIN.ttf","SCRIPTIN.ttf","SCRIPTIN.ttf"]], "pageSetup" : { "size": "A5", "margin-top": "2cm", "margin-bottom": "2cm", "margin-left": "2cm", "margin-right": "2cm", "margin-gutter": "-1cm", "firstTemplate": "oneColumn" }, "styles" : [ ["bodytext" , { "parent": "normal", "spaceBefore":6, "alignment": "TA_JUSTIFY", "hyphenation": true }], ["footer" , { "parent": "normal", "alignment": "TA_CENTER" }], ["header" , { "parent": "normal", "alignment": "TA_CENTER" }], ["heading" , { "fontName": "SCRIPTIN" }] ] } rst2pdf-0.93/doc/montecristo/README.txt0000664000175000017500000000026411056140473017513 0ustar ralsinaralsinaThis is an example of fancier typography. To build it, get the scriptina font from http://www.dafont.com/scriptina.font and run:: rst2pdf montecristo.rst -s montecristo.sheet rst2pdf-0.93/doc/montecristo/if.jpg0000664000175000017500000055142411055524660017131 0ustar ralsinaralsinaJFIFHH^ExifII* z(2iBCanonCanon DIGITAL IXUS 400HH2008:08:27 23:36:326>0220FZn v~   |N0100 - 2005:03:27 12:40:312005:03:27 12:40:31*  K .L"H Pp\B  ' "\@ KDE*.+ &fff)))IMG:DIGITAL IXUS 400 JPEGFirmware Version 1.00D @f   R980100( JFIFC    $.' ",#(7),01444'9=82<.342  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?(((((((((((4f((((((-QEQEQEQEQEQEQEU9dhPv 5RӚ;W5r sҡdrj>8JcKRSEul9:(((TpݹvWQjcM0k:xy'Hl [D0=*4sH5&JpOFneT^ 3烎$hc 5,r,NE>((<>qi0?۸J2;sS+*k5*\h)TJ@[1֭OzI\@sj҅LsRqJv TH6[z9Yrz(0To47~aseOVbK)d`(,[JԽfc݌YD1\51R"hCA"T*0HO1O{u8 3֢0S!~^AA$ALk$lE4X1}N*Ai*Qfnx rjhT5,J,95ۀ)^eL `g$`:)T5Y3Uxⶤ8ҳ3.ETE (pM:DPEճ";,p Hj8n?jHdChiƒY.NBTr{⩖;'C ! G !1A"Qaq2#BR$3Cb4r%SsDc?)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR\-?^>ƾ},lsk"Fv&Ҕ)JR)JR7V_k42ԥ)JR)JVm}7gv Ը3JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR|*$t$t)JR)JR)_UCr ⾀v)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)J F)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JRyl?~3^ZG^?ڼy/k/x4G \\{MqL`ף#qg<௸ʞkfY)JR{u,Ocu~|&;ףv^ȑ;ԀOc5R$ROJJR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR~|-ll|-8|Z+ctWO!ncSlp8_+ t7=pay\+zݑ'<$HW ZNI?d _vc1|WE(A g?Z~zU}ߥ{sܚ9vGo^>k v!ճY:2'kwoHn\"HIv#"]CNp|#7~j:?ZӈmhmnI Z_f9oK줟2rygTƣt&{ۡmHT>G>:?幎D)R|xB3Ƿ{df/a3H\8N+K#KF9ͷgQo1+y~|֞5ۈv&xK7WCV:wl/ m98o׊g+k>ՔĒp9F c.BƢf&HI" +~qr3RUjr.b*б83_R&Nd)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR)JR?~?kiM{ em^F؄tT1RA㎜ԆB$L>_M98㎘%[ubAUG?0'9$q2GkIf +L21 )89\[[uf+|=E@Uqz\'ϳttO[⋍*K.teJR8ȭ7w*}ұX"=F`BO(QL?_+{dߡ}n-_ZC\0sʏ",vڦun.}=dh#y =a$2K4H3o A]GOB]n7o8 [Np;`L\>q{x˯^۴[D4r1)Ǩߎqr$R7SFAq^JR)JR)JR)JR)JR)JR)JR)JR)JR+\=ψm<51j:; ֿ N꺓hc%HQe%IF=+dn )ͼEO<6qz/ xb:8.#FxHF;WW $7 `HP;H8E330yיʒ8Vy1MKf$yc`c+ q~k;Y 8_@ `#⽨܂pzW9 OY Fw 8Ӱ5@g9U/sK]2 if.p6f)7() 8ؾzf춆+k[2ZeUFd8'8;Ik1@&ȗ+pr mv,It @2=@gӊuk,77;4k,+ gNјPmp@OKH|a-#J1d~6tWTEY[Z3L2hJ{mB1kā8PE$+v$ dgW$D Gh>+"h>zi"B 1psP<Gq֫iXe-HoI<^= ؙ$iIdDc`጑qj\=:kvmׁF1ҴNQՙHJǕ<0%C8\WBmji|j≏>:JR)JR)JR)JR)JR)JR)JR)JR)JR)JG/ TծUn`ZD*6xj44_ _7WկNR2.Oyr:_k9*r0?_ !\4}+؟lVdg0y m*r9ʰIq=*"01דC8P3dぜ֗?[Y$4.q"4Xk/";H f?ݜs[ Hu#m`[A>p8ץ*qrIdPȉpy{פ;0@*ۛX} ۔7$=\|g (hO{'&Cp2{]dخ{hݔ҇UUeђVAqI2D* o>ޅdg^ZxQ1D'_ZTQQ*y~HbV>`PH)JR)JR)JR)JR)JR)JR)JR)JR3`]xz I^E=UK}χПP_Ҹk|Eo&u zp0^%RȒ3iS[/p!\G0^QQ뷠KT$g69 5s\bCnrSQW n$ z?;ɏ5IdU:.1s}~^Y]ٜC9'+O$ߕnNN{|ҿQjȦpWYÑ {ɣ#ێ?ҾYa"3)N~xp%Q!ߵ!돞ՉI0S0f 8S\#xAm8vp*8; G\KmۜO֒鲙"c"]FN@T@ Gjt ,͑PzT`8?*(REm1?<?ʯ4jziǰe봩;y-4ZVʖC˅Hjt:kŏ)NKtn8#+[Ah,Щ̻p$!R-n⵷ -S{s- Ǩr?'SZoh)$h#Tc k `浉 /2$1Y$3889Q\/O-mRH$׬FžTjN9b=Z]êk)nYbq 28kgM-%$ݮ6tUUpH =j)ޛ$ysw,; $c99%m5FVC"ʸar @6MTx] ڂEnPt&l˝108I58L RGb#5) #fx^Av'*7.1#/uqr]SVh=+wk_ Uӊ,{>d⨮uK+2\ل ( xUITtc$X6~۱s@F(:v5dn7i3q,B>*I=Bxɑd^;mK][W\)#I4l4# `m8ŽWYiӷ4+K6]M+8} q|QE imI@b ttiVbELGHskmC%Q촉;KAkrx$ qQKh(Y?z1`@Ͻk!:ީ%Q%gn $b'$xʄ'WҪ?>G#\eNZRh#+%X[ф] HcL%-9BRd[Vh?&9T9&08O9:f1k!Ѷ&6)9oUcw\Gx,ߦ;4$Tq:|Fgw kA+ַ,܌\: <%,RM8=?ҤB69/ubU[XN+Cփ2t'zx|vGcr[<sȢ/.pD'8ҩȽhO*$2#?Ҭ?fBh%x"e%AH9gȕ2]6Q zWGצUTWPfcҴ5*u҂ ð.vUկ#hmDKy Ͽ}Ȋ4{URw<",X7dg^yJkojW. .s*-03AYL#Iy(W\dSnߦk H!PAՓ?_.7g4&Mцܙ-J󷏚6-va$m#XȮv>D) 6X'7 .cCS& s8=:gkꑄa_y FcRT(E'1~_0L˼TG=~uY $g,{hs?!UW67*ț I+I眜cS2F>~j{ӰTbrYF+Όa?<{ٮēJL82;j~]jJ }hSo2@RA0.#Ҧ{MI]',u1,0%, d<A2,.$i3H"ow[Ej(Ϧ[ϖ܎F 5PRL /$<6ڛB;wb׶_+w7f,dGҼ8+U.r}Lrqeyn[J%P}V*v7>@  }cKKIeI =QH.'wh ;qZ|"YتA$ 9dԍnN#x/n|"jI(;Y899}R0FѬ2[S32[޽5-$[d8{l (UT xnO52̦$xa9e g&S(~֩nH9kaF`8޵/K_Bg+O gjt[ͫs궒Q#W7[|90 idnh} Y%Jr'o9@Yr^x ]ܴȭ s̎"#ߨ0HHv5H(,pI@}Bb,WH JC$͢Z;{/,ԅc4{P7`Gp) O*ꮌ0={תR)JR)JR)JR)JR)JR)JR s%{E˫e'و' qzk[D*'yϿk$z6/vR."Y0qЀy>*X4D"#%N{~D3$3#4h8'VO(,vv+2 IA*D<׋m>:$ĸlv"mq9&|Ȳ{%Bgҧ,YNcNM,Nᑑ_YB]BxNk42qׯ:U^ $#_x!~RXwĖv s?aUbhaҿ^xv#e 4lYT"c'$y FrʑD%(8Ҫ m B[) V[*n93U2zЦNmUĀ6>y'тȶ$cdظ wQg{k;?-.#.RJ9<\T%ԷY)'jt60*)I*\GO?3Xu{ ] 9^38tO*&M9HH ?`>0[ۤI$ &l1GrCu}&F͆(wc3c56M frTt5rt$J@$*2I\ߵ`P]iI2`9,pǾO|WŜ$񒪫䨅+7gsLŊi$(F^3ӏҫv,GI~wiZMK48e1x< UEqp,GXʑ8U8?Ú_q$w XKn|+H! ұůk:!P 2H秫8rd[][RXklxKM3٘sPcYᱚZYEEHfRq n㌟+/0󯡢HlHt{OƺѤ;M8-h0ON9ِOC~-`'̆T!A I)JR)JR)JR)JR)JR)JR)_ay #DѤ0:[d ,W8 Zՠnl&AҀP A}EP6Z2f00<ZD*2y_'6 N%(,lX%`g|1{Ѥy3v=yr*)Lm9&Qh x@7rr{cȊYc;Նv1ڮ9\1ʜ2{isEکot/RcKY 2q?aW($ ڲS{v&"h;quXK6?wzB0NANAOֺ׆nHM[J"82R pߊ/4^^\"Pf&.NqfIC2(*h'c?~ªms](ܺ|# AGsHy_|Pssz"<д6ƍzC>IgrAu=VFU/ǧ+ Zux+i$W{gjh`EI^~&O6MjVI_B6Z[ۉQc.[Y"h$hUsSxNeu1$Ǹ?sFg#;_%wq0=*܈% ѼjYX`G8q}# HX GV >d\L[$|ώ##>cI$y?s4@NZ< 6w1~w]~h2UVLcNIl74mn# 9ֺ߇?k!-:RkP0[6Hvc!O>Mw=1*][eG 8$U mg;6 I'g;y$03!2O`8'6S7NϕOq?)$o( !\y`qd`V-0%Q|v's޼I$0HU%|ܕ'U#ώPy 'jm3GB@ J]=Viagޢ%|sIn 矊,-SA"M˳p1wĪNC3/䃎yvmjtF`s4i*HxP۪NmI v̡Dul.#,$kI|^g!`1ힽ83dȳP7^-Z[(\ Ql9Y`X. #08g4՗ϵX %y7s䞡~+wѮ-`yn\Imom*yd qnI$ y4[!6 %ԥوz/m-,ͩ דN0YrX%ʅjA'uieum .X52 S[BKۋ{kݥ"E vw_lluƗӥD$ '1R~ݫt Woivs =9Oq\׵ #7@],˴8$KuZǘYY e%АqVt 1o +f?Z3-.l.I/۷zcJR)JR)JR)JR)JR)JR)JRX;H額d0LvIEԣ[;f#cxm `u!!f=z=?Z{V(o.ȏ=20:m9<~uOgw4q!q̡;s2zITgnU)ٌ뎽M9\:WA#cKɒpEDX3A$ffe>iI+KEg:TǷ0ôqPb$.6 sV@]C :o" 8ņB>$pV!NFs LIX̨ Ax^f;19,HW# YԮw!F9M9/RQ\yKN*=iӃpyOiQ ˸Kfɓs1&e4_`5]&jpK4ӈ6cXݏ‚xؔVJ%ǒTp}N&G$;% 7DL}d=85&IdT69clt#kxwADdo,Q,~@soK-+qU5zm*!M;;s5w(",6rDu'U<{ *O{'hA .BH=A:4x5ۡ17^zWl}X-'/lH~zW<%m O6L8SQ$x&@I x+ʞNt?jYXGcyqXV~l}N^.(w0\w%9%AGM-m6ѝfRQLwxgvizq$aKt]#*; k]g7-kw zʠEc8W)?H[ok亷RuX`0QڽĚ1Fe9|d-n<.U7LT6ԓ~>T"mZKpO=$] BW[I"w-7#-%@8#\"[e7M0džTYwEb#J.-I 6#( %ٔxxU<ȳӈe.vQ;=T(9{V%8l$ >x&/UΤ #zwNd1uǹV ^dETRrJèj͜H3lS>sץ|yJ0҉<1s=Ol֢2O He,O8r}M z+n ehqĄG$9'Υ.Uv)*q'=^= & {F U!ԐH#3A<Zf "$޾6;ٝA5a ,qjdB ǧps5)JR)JR)JR)JR)JR)JR85+kKx Q;KrbZow2^KH89?51q~vb8b7s4,p2kZYwYTK[ynMbmt[kp>W'`븜R)JdE(ŀ' ϷZjE"Kq3 I9Oa)=G iKJWҬ<(0nJ`J =O5LC! !b l?氘^'ݽǷR#pJ&༌Tc+f%D 6{~k˩#\$0#O|b7)kƲW;%¡RA8ܜqAa&GURۆxG"I%Hb7aϡS*D/#F\y~å)JR)JR)JR)JR)JR)JR)_i㐬d\rmB 0+7=0?vnm5!ws/l[rS;69ެfbfWmDXx3Eyi0Xzq;{C^MԔcU{r3^kM[-U1רRԉS`k/qw!`4 ,erz< m]_5 9=uDۣ>7ȡI$ HSa$eԭ`X[du`6ۧC] da/- XE@lqsW UxrO>h%XTpk\[odum6BI *͊@T U B#XN(laOTl,iv򛖸q$Tq}m?V: ӣY#&I. +w<~UmiV2wpݖdnFArN {w1sn1@$Oz֣\Yo&B-2Jݕ~Iύepk^'^Qd' e*2=}[STխcm{3,>hv< 9>xNH>iofxKo-H;+W+ZχFi%ЛtN6ew_VA|ɺZfm'P[ivrC[Fo eS[;YݮhgHcvB6ᭃ:X_W'UqOm>F(b7vגx,9L.C>zV6Y$,(Ba {~UnR"Ń )2D|x$k!n.\Gs !w썁$w_ϽT]MPd@NH=7 pFbIec |¬sxy@7h1*cv;vQQNBqYo3EWEw2)X-A *f\jyf. ͒#A6p}9Yv4vQeu+v2^YK85[Z>,yg=0H̪ϭl:uo ZH wŕXqZƢhln^:S  ˨$+T*[$ Bc;WqIgKasp%v Tn}*HVffC4H?=s&krQdsξ]ujvT"psVѓQOYHfyzfqe -Tw ׉HejwwSЌn辬qH51>b`na3$ IUf/K-GQ]}=dU,J==f}!ng֣I$yrbxBzw_^b3u )lS!^?6Mj{o!ck(!]h5i-^tnD&$F6InKs-%ū[cph@Z>Rj~]ô2^*OVy9sדQ5׈ ~1D ۟jۡ_-̟Kfd$wPz.BEqKM~Jm;[ʭ@o$zF3b?ަP̣AFrzU:qk8{\KvzsF?.`9ֈ`RFA1p;xUwvvvpvdXOp9$3 9dˤ߽ zccJec(s@ 2 !FzBx$ʍ 6oO}e(-CA*}C2.3q !k.xٛඕT;qs{s Zڋ]Msy ~< ۽82*GKotn6ɑu!) zz_  ᴳGVر- '=T]Cu,//ɻS\sۉcA߫ E>1OνxQ躄N&kOFma?BӼOm[[M^;Xd6Ry\2n [֟%0ۍ_CҮI1;Ępxv$:Q~v!xX;oVJF9c5Qѯ('mZ[X5]S sr=,4t5 ]8P1Y|u}Z2˧jH R +ӞVcxdw 9< w\Bnn>RH 9Pе0c2#ںg.l6鼕v2w/?8Sd5{.q~Ara1S/"eu+}3Cmt֑$p " $bvӀZn'ԮKKc{66,E$0I듓R.;[Z5̚ё?Jƪv|+8%57oRUF bA 9$IV&xbH!XOBH)>9VdV2XҤQ:+bP*İcȬn8AelL|¿3 #zri2Hnǫ}ԓ#Y<- ,"C׾߶@ۖ\*"+ wFKEٰVE1p >z#C~ꔥ)JR)JR)JR)JR)JR)JR-KN-P4[Tl &IOyPm.,N62 $RvN琣^@ŵ&=-'$dyz=55Kʚ9Wv.2{Se7M Et\rH އ@\D+K61jf'a;vZQ5Ǜk.PVHt8:Mؿ{[ v޳*~3jt0pGėiv%BG=Oc~:gz͛+EEFD3pI98<3.?iKuhoV.Fʔ28b1f7vim٢;dW9P0}܏Ң[[#iqa[f t O\py<,8&aQ;y2F! l~jNF{v1#s#`7OEMuq~$<>۽U] 6HYr%﷞t'dX/f_$PR z,PKqd|-1[; H?{ʊxd7qE&Y_@Åpju)mWLO-E̦@P C>9!TQ2%[: ΣjʍZŶc zxYGhqhw^5_3i::}{. Ydo.y&˕I r"NHnDȖ2ެ׏;mN)'Yj~VIH1jT+qu ut4nX`mY$oʶ}')ZZ`te!#, Ws75Zonld-crgv; 8sg閗u moGi{,+$T`+!,sQ̲-Ս)>fI`fg 9n?hlY[nf@*vU#[;ǶX*kb$͆bprraF%3#g;@HQ4r\ΑG #hCjo5H&VP3}aT+,m10962/SH0}^.02?j4&E+yeH6p[׻K淖Cj^yxǖ3}@tj*坚Vo1y˅ͭعi0NszY-22D?||c5HqjXuO2o&us653@_OBk{gy#2ee20 ߷#ӻG$G]IG r $a΢Jg3\<[ J)[ +"$QӐR5񎣵WEmei 2\Hw[r|mHS)M~`1VJʦRcH1㓟pۃ_%d}@4YRp?y$tG`m;\dԥya셔Idew$oEް<2]yv$nJyԟnدV ysVgR X*/:""u`uX{˖cT°#_7Yc\ <~!֪u-MCw>^9 N0RWa+eowg$CC[ǹz𼓷>'kƱkf.)-BD_LX@13X E$40Zmx*Iw"nl-e-LxA wYaIK`"8%W%n<&HӴcP-aDO=Ѥ+$q0I8R&Ӧ5ݾ3[42)azל|"LWAi}>^vwt*;rmPF % {8ӽC/f8-Vݾ*cGQVi\>ʋE)iTZzsI0oRCF8c d7& =?w3 vlU]xRyYY!)(y*c7 #Xn9~N8s%&dzU1'8&Iw%?YϘc20:zH#~ #&inypt'Td8fd"=ozq?Z6P|rW s^4I:a>T`A_sG+uITG팜v?Gdxc !lNU*'4Ѻ߸Ly3E$M$yJ~wFd_Od$) ߽Ak{G8_3氯uy2lSEHf`Bu9`*4k r+@{cwY 0QzFA|b( Kpg?ètw$㧰q~v>:jƔ)JR)JR)JR)JR)JR)JRUƟWguWT)#q5 [K쥡&AE $f}\=1U< h0ɏ4yKx^xi_`\'s;T{=9f-zpg،RONͺV18|w^%c#Ā:cka$@n0:Žb{K[".wӁ}Zk&l.mx1r{+ ^V V[?r 9 2ԭ[̙]27pshR=TDNz}M;I<hv,d 3Z;?jz'Go v71YO (ǜ+6cZq )!A#+`qZM{Q$r̪_7ǧ#9劝MdԥܲDhAozw[Ie<N FF#`qOB3ׯJX-tP II$\24Fdwƒojyo%DHحRQ4W!v[2HxUBBǹg׉hlJ%dCKK.Fm񰓔#n1;zw%A*\yWdǜIwϕpMҜF/L;O$L42ՂXL6"ĀSc;sEh/Vn'{o='}&YBћl>fEl$I(GQߧҲ Oa$HvM$Pvz7<ߕO{s4Ml LzNw`{ qaIqڽիi\#dcH#pFneQ MwB0Y 򪙯u+ aokq$*~snNÎ$@?ZsJT9KDZoS1jpW3wmnk'7nAfi6hcx},YT.c%j9NKMg~^j( Owj@pNH$ǶsXn0r5'#GՑC֤]]EDcmv{}goNr烝sP!+o}8L !`r@*c9McIid^Ĭr+03_.VZ5D#U+(wD|qT:\F+.B@1X(qQ]\%Tmsq+yQݷ^{UWP6!b) Blv8)9d` h>a9߿N{~YnĤѸ9Ȭ<)] w*8ĤBb98J̨Pr 78_5Xyo敲}d{cPdv W GGt#bc㞿מk8gn100yj\ةiX,m²=c~ՌHBA{W&{fFXcmm.gμH"@r/Ve_$١,J6J_9`N8 г0$~g !3#sOOӊIVQR 8wRm-ڧqaas< 0ll( Op LՅ栖v ۹09;8qS:yЙ/GiN070S~UsR6ѩr?RV|Cm$QsR*ӈV+{Ka-u*$[ #+NrGVKCPn?zq a\p;RgZVlZGݺKH}[Tݤ1^3EzCU׌׻O YX ZA2QXg\H[k@IV; `x v5u=H#B\:Lqמd`26mSΰ] TvGO4)h켑l%tKoJe ^F`w*iȑi4\F_ˌx'~8:cWidb#;|αFysmAx돽{T̨0KHV%#?μ4nC"ަÓppzךsl֫ W1mWb}Y(r:xfh By1AfĶ v<XtOU}}uwꚴI&ԕI2߇3~)_Zo[KAgbl".^S{set%f*[`;j(/Cy}Pom:bnBp:cٖ)ǜSr7@zc9]H^9!x/)P gg,$n1{Ce $IT.{(迗X/\,C`e8=rF:1I>wUmj;"c=U"% JF*F:皾gh$n[KU0_`{ Ѽk$KWɓ99P̷ Ӕ5GE>AqZ[hUg;w>n,䷱NEƫ W(zFÞ1ϦY|[7^bƼm)<0T>0OBjCo". ws1+4os<"D`* ^d+$YfGHSeHK&E"Bx_ƲyrPO:#r $}XWy+ }C9rۿ݄34zjh{&ov'-=8$ Lc$cSw%_P2NzwAxJs9Gto YB<3ӌ}-Gd.[20z, x7nwK7+#%6U>s_+/wr")`m޲B9•;n-9_6ż=1tl5R)JR)JR)JR)JR)JR)JRv-ź^ܕ3gnoiò+ysu3 =6K^I/4]ڤaFk_Vzv,aQm.x,l^$բіK#&\w l3b0th/ ³<X1Sp:qMjcNSJvp A @qЌ{Z).!_Ha#z>ז^oplq~~v2)-OC6̐8#"9lPʺ򢕌(C=jco(Ie'==or䭪eMQ7NU$b(HI,sޱ+IIY^&:q#?ҫ'<2GA g&(W2\Cj́/xH00G⑬jYW0c:_VMHJ3 g |GbdtK2rǿzo2l\FseFUr= ?zMWH#S'#Qԭ1bk8ѓHgCg72nC?G_VdBZ!UAs=G2a_)c{e,PKH_ju~94 foZ}k[I3+q;ǂ\cgV534Q K&#(H'{Vkha4 2u9f>NS(ʾ; A%0B H Cw[cG8 y@!$~Pq: Fxr:U@#{gnGl}X6V۱B"?b1ގIJB{c XoyrB\ ]vs-3X\)h]9Y?cۭxDQˡBUO9{}.74Il4e0TV,8+<=a|Q7~4<;(K@H^x$1Y#vFgg3q_+!Z :\ U)JR)JR)JR)JR)JR)JR)_+"֮f@m5etE8yo4Ozsجf69UZ Ql}#}&?zf$yڬ,K[\95Tb[GL&S{ȯCHҮ[U!kT[Ho@X0a[6:Fy;Ua 1kX^eBԬlso%,0''+j0]X刚 v`wڣiMHwG!YI8{m Ƕr*Net  a ?4G,ӪĪB;kyãț@9W#9}jdY++raVF7^f y=8y:0[;x鞧Ը(ā̃&W g^- GhfPu'"$B^rPu''_-B=(fU㴊b[;]=Glwsv$0*\\YK pNOp3Z_Gࡷ_{~!Gj+J縁&pI'XUjwy۶Qrs'Lq׎~(),^tYNf:y#)gv>wS_1A,n7UŽv #u38des 푂'@񼒲CvTvzV5cS![j{D&rnIg$YJۻ XnbH jq#GYs@shB1Ne~9$Z+#Bm'cfp#8{ 85X̥:t1R(bH =8#0k 0Ct#Gҥف# rz=]_!A*{m$Q[5)JR)JR)JR)JR)JR)JR)_ˍNio562]hÓc?A􏦅EKnuc0NЀ`:a,oӭR'ØܖPH sV_s *ʢ1L0qN9[h6WfRNdKkXBB9Ǿ;xOX, >,U>#r=zT}[|y nLwxV T5 I hQsAy Tv gS+:-`|;G*4i\CDrn2<ˏ?qTMux`kyq4< ea&FRmtfǔl)V]oUְ^}@vB([cF#AT9zM増In-5@#;Lcs޾x[nXI 6DǹH@#= kq}%cGXcfv#gs5ͮyV Z%F#8b(gmhOU0CwkH2.*AF 3bX!$06>?1Khiљ ȋfLqSJCdc9桼TR:~ \_&CJa$|$ouߓRNszUV$) (c>'#pA9׽bc<؟69C >-Bv{g+AU1<<|VX3Ÿ }1E9?L]:qzVXyv &%8|. [˘Džܑ1A,im-M [ 3mNVEZh(z7td#d1<|qYK1V$bpA8L)D!(D,@p:u5 EڱNS̊i~r 9'u&I \d4yqyjBYQ//6pG<} !F ( o}V#2(&8ss9fD;]n+{ `rP̱#vy⤶l݉WvB>q'qץyqjbq #\6")Tx)VJR)JR)JR)JR)JR)JR)JWK9 bӮ!''=ƗqdkdJ̱Ǩ"67=D٦UӄҖ¹HvFǏmFU[{۷"I qlJq96suh[q`YOxT{7WR,r6H%ּΫWSΡq,Gk4c3\amkچ9Cjب99{pMFhqj׳̐ '$QGt>b"Ӯmm^2"f yӞsG%ZZ[a98cs888dҡRS0~}Fg+R `r8K:^{%xqT+8t]5iVQ>X9'*.hI7*gh&|$N@uWs>7AW~|ަ+%dܑ^{H9m.f8RAtcXt֖+GwW?rÍ9k[0rzkp]Q#$lBy/iis}`HV]H I;{Hci76$OPOzח[3|vh$h#% @qӎGcʑ;Y#pIVKv*A*d+{}ZKhWێ,=?:Ԥ-J9~EB*8_w_ $oqXf[ 5UF:NݮZ=:8=dB)3M.n4Č5Blkw{t+C#GKf?y{* v<8fĺdMO(}3]H0[<~NYQÃFB+]ͭγ .-衺hPc^. ^Rӯ.`-l[@x䃎IK [G \‰nG.1>تmzEAhE.1n$ֹqevH2H0w: #R4v1M K(icӌ|=qLSiop-h9SRWKfkخ!;`mX1J7- I|1 /Lׁ[vO! u?gͲ-Ikt`~ճEnE 3-[܂ Ã:ҽ[Y1DOV“?~yu.\8`TycK|f3Z F9gS>}a*`/a8 w82*{qX¤8wDnBW<>=K EfP:*nEu VcݷX&笍,K1911[c(dۊq #mDNz[HR"Wbd<wX+ItѴ8 _R3_SH_K+x c'gÅIIm~逎vaq '=NIg g azgޡIfC9b2Jda1 Eۢ).2y/9UpR<{?"Bk~;AhIy^0qq8`@8AY Q.w3N92۸#3Ҿ٧f)q3'RdKd\c~Hpr9MYpY#ReԅP2b`z1Ass>Uf\f/+)=PP d?1ja1"Tqӥ| E;,'*3T3gPs9n}85/xʖw$)n)JR)JR)JR)JR)JR)JR=_BF=܀\,om,'|ם*T 8m#\j,Kè`\qYmopϑlXbx[kk];KAu<#Aw!kMĞ.rO`[i׫at q>իZOuqk.(#Ar$>32Mf7"ɭknm's)*1V[iw5ʃ D( H91kRζMn-V1x;G`AlOD1+p\}InjQm_,5_4ط^bHk֚-oJ\qވY8!c~+g+}/a #ӋY`fV;J'ջHU& x>8=ZA'yc'sߎ,}G"0$uuD+2dTڼHpc r?׭|W% MLsK &];~qҭ]H4ȮA o 2u,8j&q181S-"AǒtR<ߠZ4 ,er~ Ҡ+ETb1L4ܛzG^cFYXJ)Up>*j$avcg_a*%@1P(y_ʬ"Yf|Xq2L|͒cˈ9\{lvQޘ}&fA { |o]'VU#~ykk;LM;P%''~*]Ia=fh!%\`sj8!2+ =<~Vmw,ǜ?ҢI#؈euS.e м^f3GK)"XK q , @;j:Ǐ\}IJ[%$ SYWD7N9;Hv6LxYؓ>bq  ey,WёKlVrO#tA}9b ;-Yqq?++(Zsb)P2r3N?P#E<3"s}J%0I!M.q*DVf{q -" 1OQ'氬eeuf.'luo l.>ΗEPJqn<w$BT ,!G(a lm-bQ"N!em58~ciY8#WXrq矜U'O$0x>js.mHV1% $wΫ)%٢1+A<Gk+;qo"zgӮFP>F*FܻHh; sct_c{qa׆Cw KmW߈6^+5'CY,߁< :N}DX.O\[357,Li Ӗn(`, [m6ݢ_n"E3B*9cvOv%ũ[tO|-aԏoD rfLpFz}j3G3- 3I/(z\*+<Ǐh{.7ʝJn}\2N-@9QH$gTo5 f[}1%xdfkjrH%/Qj][^~q Kjƙ1Va'j9e% YJR)JR)JR)JR)JWٮt+3oZٞqڴ,^ F#Uɕ! ^o+gg/s]Oy؛NԞ<&=IAZu'6c,*F 9 pG_jvwzCrcTӴXc rG8s_.A,ifvh綸W`?pV7YPYF(#$sUݦ!Fe05<{amh) -K\e>cQMjW76YTXyG QkAy<~u#c~~aÞ 4  9Qu*oI#HZCIohFk@/a|A $d9#=V6%[ 0Y]#@W OZXh*c]?ږArJH.weϷOZ[OsC{}.r)B8=$|GY 5M>,(SvNg֯^Grby`vb' O`d`X,,͜4{.  `=!qInKT[wnyl&Bz䓜gk :ӵmDAwgoB}0mA''j5i^i1\4RfUVWb[~j:ɩvző}Lvсnr3ZڝBon00aXpx'gz}q$7S[kO=ݦ-fH4n OOΤBEy3Ά}>R6 XZPhzm Js$V_)(һ@5MOFu 4I6vԠ#6*;[j2Ai/sumٰ":2EE"<ءqC(uXcp%АF1;|YH8F[X)ܒ: kHv1KT1De$zTe{YnX#$ ۦ~>Ѭ-a; #9qvZs'@0=<m""ە(x%F>RqMA9LeWPvS'^oFk3{O?z3)j]a1Ews<;:yma.y^9}cV՘2'9ݐ3j|-HBBg1Am[==-R'8HdV+Ǣ=sPQḤs$|bibYN*J~՟Mo G5 BffW vKf#=ns,s\E# 6IEղHe r?ӤnQ1ǜj#ǖ#?`g ~ǯYFYU.a oH_]+~S9Xq9 e,TF|t 2OUp3^n iB 0qSfA3"ys0E-q<{g"y!`f"l:*YïDIVmv R+RinQaKd*T,qtNI~cGraʹ(XVQs`=Fzkn[BdR$m-=;g{%67ƤT{* ]̓Z^hM`l(VvxIݚN ͣʂAxS46"ݗ 9pMpW~&Eh!<Fy܌;Is}w$1ޓ޿A(f%eb3YiJR)JR)JR)JR𲂪Xl*JR}6 ꭷHtt`zzJ l K~Žӵn17S6v֌q4rJH' N8Nl`Ȟޫ,q;ĮZFʏ;b7^[XQ[Z$I'[c'o>I=3Z 6:V}&ӰoKbA'X-ZVSm!xtqio|4\x=Cl! /S 䣵k^jݛ; eFoݼwPu `88R8SxYzc*]Ismo0=_l~u^*YgԹJ891RltVH%q0>xmPR9F@_v*V/wc'9R9`SEg%ew1C󯒛˃ XFl뗖O/ˌH%rGJl.f`Y"78$99'9l1Nw,-Í|*C^B Cr:X&fTG YBMyuvXrY#?n4-*,0.8־ꮫF@eh}, RLF>* +zI ,luJ@nw-l0Py?zhlacU ]3s3:On#r5ź; -+dXgsrG_8Fqb!1C(pN=fF)C$yt6(î?x;6z⢵PS4w74YRI*I 9&xV2 ×(U#9}>ͼ\mp%zN@Ԃ^Tڲ~H##~s,>YKFaFw yi%U$  gvxsֲ$r<;)#I!գb9 15;w,#p:eoap%8Qf\&RD''G9:WK1 K;pRIl'O)MmyGCF"Yܺy>XAOo9 `C"ܠ$c^bƣVHy@ʱ"[tx36@$m~Lgg ~OD+s˼/f#Jijnf;Y-p=3[{ۈOB\'cTMwwsi)eH '5ݕ2jQcku 9o>B='1{h6VIq"K^1$K0wn,H$`T.'*ܘqqg O sy_UjrBvS_9-PdNРA's׽} 3M(LhVmv Xvf'補W<VgVrзpH<ָn"2[;Dݱ#ҿ@Ѥ^}]p m`YHXm|<nK#˟lzIpbHj){f7eR#IL1^<2)sry":+(ee9 CJR)JR)JR)JbY8̨RR(PQY)JW^䷱̢5li$V@1l Qi1F[ AX<1'$bHe3mo 1$I;@ةךflЄX)|A$:gMnh{c?G. O;?)v^ߪ1]Gs";x핔c=G|gAӤ[}VKmP v[{0O8q~ki?%Jg+Tܣ0OK ڝq_}N$pZBJ.8\KӼOl^ rhV1TzrFST=&BkٯHKXu`jtRY-n8d*rzCa𖅨^5}yFܠmY `֢Z^VZȒfiއ Vاͽ߻ qu-RMm"IK&[nYb I.&@IڨD0$c|uִ+ehc{}aS,IiqcO\6ȇZ6VnݼYd.-XCf@$ϵe dOe4q˴nWRL 9nsqbWKq,M/f2G@=:T|HTE?˃yj £b#.\"_“ZR=07lGyq(8fyx~u B9vS$uۏSY Ć9KpÅt~M}uE4J<ׯ^dslqc<3׽eݞdP 䌃zv[n3g$cIx[p6RXCn،jh#4qg` <8<Ť0wjc`tj]\ ԉ$"9,~Wmg@K5kKdHڱ"Μ Ui-|JHI@8yPa`XN0F'#lom٘ N:bC],F|'O5;Z1@<3ΤzVw3x'ΤE*0"f H=~jjxa b6c8XJzyfS.=3ׇOE'$glR0H_ԦBCֵ{+f&l"q 09ʃ2:>, Y hn2N}C⫒JTQw(VLdvI+ ]$2J$H22X{ZO'&cGy RE]܌ל翵NhHyY";@#'cXơTމ:chH$?MfxX"Kn@͂Al`ʝ S{ibWʏ͵[3rx-tYlCic.01VKhJ_* وz ڪKkqrnmo "Us AA'պ5"H •%Hs*em cc߿Jpvrg2Jc.y9a|=u糗QgIO=9n39ZiP=y$s3c8s g iqkv{|AwGrI8<HXmQnm  䁳p;^{u4\:F,R3ryF:ȫ OM{>T`{a~yՖ/մῺczڬ&t\mkHգKvŴkԈY!\>ct~O=׆t!W.WV%8zi1}Le)%88䃌On:VH(6$ =7p[]#1,A-ǿ|˫..T4rH^ A֞[{6Km`1 ӷ5?J ²M9EXrƀ9|Y+ǽFc?.gp@p{*6 w4XU.$gQ`όn"bXK)I^8 :Lb8xLʳXF~S+-bI`1`[n::GB[GNVO(c/ZK>^p}@=kNV'H 7 *y` !n" HH2q%ga"ᇣ5C8PYO<AYU" f';c{T{\Ā Y<ŀ[;MJt삣GrE'+ ^sE׭ĐIVYe :)߿z$M4sPم$V s?S}"i\O,SqGOxu#jˆlF2`go%QVH Is Un3[(fiK _H 9f]a9n1ߥEߍZOӬmva3 F_jw7Vq;s,$fo6Fژ$o"&D 0'(^xۛ+f=Y5imu,l{i `Rw~\CGFG8ܼ7>Āq_fmỸ?b3RMEg jo]jĝijr:`ZܾR. ՀdF_r9jg%tGOԴMʇ+,aluџk>'֙'ڐԥ+8ccn䫝O8t-;3 x2N;r{ƣdѮb4޸@<`],Z=tqt$ hWpf(3fs9SdRe ʣ8qR>^kyJ+e6 aqk>Kghݛ诡. $+*UެSӵ >Cա!dgmgՏ̉,R$HH0q^JR)JR)JR]ޥAem23#I9t@ՎA$*m^XAfeɮ]Y^( 4AA<*b ',),* [*S7eE =ۿZ?Sm%ĭAC#CߟcTw 5K`? d;ϾHjWѕUH@\r%tUwl^k[~c߁߭^h,FnQ<܀ ?#j4kM{kk=`He 1:mJ\\A]דJ |߽o֢8m*ka={fgpy (GOߞB/f;wa#`NO\t/|+R$D@ )##lJ$AtI*.yOoZ_#M[Fy{ml ^yMYK PqY!H{t5Z=GhӠz eu#7s`17iN)$Fc5#K(!x?bsR[KY{h +U#,q+֦3"ohfqZI<*4\!fe~ARxkwjXB8Cn9'3Z]Q+Vqv9ⳛF;#`S3ڧF)-$wTc 2Gڼm+sAPG~[r\t#קnڶ՗;o1UMΞmWAn LWJq;q֝|X]D2ӥ^iq\`"1zY$Tl!W6ך0n[̾Tb2=8998`X尒;Te(PSϿKa$fk7aSX{$KYs{-*8- 8cd|&ȂxܶHdy cA:|hupuݙO0Ձ+Aw_(-J1v{}aQ\R d oCFIzTxbɒKk$HN;Uw ڻAx!G1'ӫ7#t9=2OzS*#%ܓH-41 $u銷:hMin1:E& Om59$łY&VQxk-5mZKki Q d0'9#ֺ/?i-f[m^"] F3S70(nn6ӹGYw)JmwZ6jF,^UiD;%S\}LRY7 vߜ~.u^._"^&8T޵+$u}\ xͲ,SꬮVDTo(9$gqO=PҬcVKKb dd gitô&7ݑG"[0|*Aߜt};>C"ZEe BH񧇵[ 9m-V60 jKӚmJ8mo]9،A $H=a{hi]v `1_|i uvV@cHƎ8+ rAuqlv"*rlr3׮$CirmY@&׮OPF-qKh#s(Oa:Y̑Vb3td0ٸ~qUV&' l3MXY~Qlmzm84f8-3(lH{('-ӯFibՖ{OJȀFcȯۋtPH ]e#<\/>6qyްʦ2픾 sVlqek$|(h%L<8k3<9'Su͎qk3:wGmFEhÐ <`+Ɨժ^w^[$9#NNAx*R)JR)JR=t?E ̖ﵙW~OY]ã[_[:BaDEaIA~Kc5_f(=YFF>sk-Y,12LQKx'{vĽŗnόp lZYjWwy)92ɟs|׍p.mlI@巴a Klz:7^j[,6zE%Tcsj=G[5s]?L7M#, "l#^_-lzMݲA)\<ЕE@XpAs=:'1h R9A$dfp61:biVwPs(Oo*@FC[ʹR ņp[UNF"",I8%IYY3͜ ֤k 37ĬKC؇ A7U$Id X)mה)JR)JR)Jiޗ&!XU8#8=RO!"y?jn,m s€ё}!o. yWF#9UwCnu&m2Y)A8רN .қ;x|M Ȑ'?>.m"XKdcȭQK=+팎~{{zM6{)m% oRqʆsXm..n0!Yo qOKH_߭%ŤRKWvb;1*0Ih~.6`u{kxE][I]$ԐyykaPEŵy5TxGl3Wޝu5{/{ Xݷ Hw޴OxCѵ/Y; 2mY<Wo2QrE8X(8 l Ͽ9w|#᫦I%la8?z>`[dZgVo1Vw,> -os'݂kͶ<ڊ$IH!'p=Sۭb𴷱#Wc M? O jZJz+m<{gH⾹E`9#r?.jͬ;gVRwsG}$@I2.HNߕA?:EQ"vg9Sd#nOPP̉4Hha 1QŮf0?ŎXnbE O'_Js$iDQJ,O>;9e;OB\VVi< % 8@|'?J&X-mE ! :`qyYjF?"k(!$yWceO{;X.VK9<;Y](a0K/NQ6~j^J7uE`BNcjO%ͨRK\O$)jBo D{{51&{XޖI!#^rG'^\ I42 cCUaH&8WNG|Jŧ繼p)bcܽ}|On>[x$R9q#H=r-u9dŤI`yv`@z5~V9":mӽRZ^*&xhÅ!$m#A߃Wp_[Ia&sBq?5xxxZ .Xz1Ҵ? t۷f\s1z[F ܃VX?hek)@~)JR)JR)JWK_V)"C嵩xKr|0x>{֚Y˭Ki@gma&H.-ȭ*7% gzմ7"4{sGVɢxnWewPjfo%HZBZMܖ% WS]|y#F,-_c2I/=|_q \iv-ȺLA!m-gGڵ[{=ф q 9!ހx#կn\sLᶏZ֫ Ii% ~^FaCAp4m'T'׃Tls,NsJ(¶:|lmW6n9ʘ 0FsQ4ij{3%Wp?=7VhK0{zKYԌ6~z{~UG6BO5Sav)dzrqP4#mj;%7;qR V xH$f%;0GQ{VRIpҘbt,xm},@+A'Ŏ[k{FVD@_GZ:LY(Ѹ388XuV'72&)ѳ1߯G!9p$:zdחp[Ŵ\ .˸ ?5V7) VvڛU pyCsہX5+apFmwHF$|ԛ;e$A6'YưM!i"dWhtHF&`*;b^tS CB 1k:!RgR?w#5ֲN' Q~G@?*8DWX1sRGog7n.gX/G1y9D$ᕔʄAVID-P7xfV[T, & X)S~yvmVXvR`,C\v`JmM[w)#[?Q:2jzΥY1 mq"1l.^3񞹯P #k;i#lG*8$a@G%EC=ZKk6m27c5e{! ._Pmf`hBr#QȳKqw712(y?zvf5A#Ē, v矷9ز&dhDEJHHy?aTӢnc$mFa >[bJ K=7vÛmn5o$4s!b :ȯǐ#6yVFJgՙoR{{8uKXdrH#=V5œJl"ʍ@H#G7Ѵ5Aov39!0ۆn;ZV-T'tnc&Xk}2d x@(B~W=ݞ@2FQ3O|/9C"]s%UA!Œe2FlPKd| I֧3vI׃xbZw &mP4c?aӀ+eԖQmpWsIWE3Ě慸]9YcݐIacp~[RI*=z{u6&woa9T S萁j^Eߚv+p=튭hUS桂A<籭/?g}Ac13#C)JR)JR)JRJmCJ`gIa`yO)Ž^Cʟ>qK6Q[3 \N1byfLd@5&PB> Iʹ;R{^~Q'#6ѭ}rĩ$'l8?מ*HR&-Ϝ2y'UZ}Q>w,* Xl`A\ӒxWSiQqK4 6wۆ}AO]#7g׻n$0>ԷFGwu{{?M%;9=?J!'̤ۼ I[yn{(T(#ghZ%֭ZʉSwVUqE+q].ť]I8s DsYR v,a=?XͻyG}]{PKٌvZ"3d~Nqjbdy{z돵yPٰHԲ!ll*k1m <m ?<:sR|7ze40gYe$ 䀿+iEm$&${:1^٤\-˖Qs9㚵Eǯfep&'o̯C"+Gg\txQ⹎XD?8E/A?5J:7u̫ F$u=*43eiI82L#{sQ5>&lmoI1D.M!A\_ wusMJ[iwQ֜ΪѾYnH`c;Vknլn#{#ؿ.g'# *R]Dy6 $;%5 \@H&nVt\S8Xåi1<t->n2`ӏUᢆ6gD,䐛CqgseZ[*ȷEACg O]J'"i̪,lN8'=?Rcy"f%[ |ji(]X);7 Oz%ՏªډZᑏՎva*Je-T8w^@#V v/nOd]FNWq<s^इќcoCAj;p%hUO3(3?^Tچf[}aVb6rx9瓜mU,} 7JZG) zKo'kS_[.dʏHRzs^1V:hUHѯd2yyrcyle3:$h\5_JTlaKmDm:ʞ\3TZKY{ 44 6 u=ى,.t{s 8{˧^HKȼlpjo N@'q=~85ˮ j,߻ `A^#n6z%(-/biEѓzdAm%Ԧ1cwcuK012.<0z VK⺹!Drx̪r:`&[^X?Em+Pw\'g# bfJFl yu݉lqSۯjxܴ#( "xupzY$espy1k2vF@ n*}ŴU|m98ұfHP\J^-AjR!\ϋGP 窃QZ|^%Pk;,NI]ĞF1c=9gRNn@i9:׊ԴXc FFfa999V=DNfq|+>[}"E sӑ+]:u$;A0+HݴмAz@=jeB%@CТFirc~}QӯY$_i3x^O0UI.2TvXZNmu$WSy;OpF=|xO}t6f1)UV 89:VJR)JR)JRa}G]KiUu K[$o92Ad;196Z;_GujLe6+$fw>1[Zuń\4n&p#=kڨRm:Ho/!ԗ}ߗʤl13~ PIO6q}qw*ؠFj.闗wVvO[9'ӑ;O$砨t鮯. b[r奖a=?] D7 uݎލǧ: y 4 #״''Ynn;'?)p2q=jSRG {__4=@*DѧZ{ţ+%127x1s[Ɖq~ʲκuD"6Hz?ßֿO[[izud[,K G&'MIt6R:ܤݬ:Ld\2 9Oȋh*cUцy}=Jچs=0D%I8rrNq# nKAi2`<(#?\_Sgs4)tѴUPs.uXn6H@ %nr>1~:VO49$IQ˷NIc[ߪeQ5ǽ@&..iUGq~*KVxB NE7&ybԿ@Xumiuo=[i# 1 Rn&ړ2˴;qkw 4o1r}液bȬ+ ;C[ۋ__(縹ĊJ6<:J"Ks~jҾX.};r89ۥW>͊xuQefzx|W@[3#"c;SzqӽPph˨\j&khodOFdd`5\;?+Ku ȣ<ѸeA$RY\Sx杄XխŤ7mhYʢ"T|A qȪyZhD y,L$Csy}$6~[D^3Y-}8ۓ=kYqwjTrz ޫ.LT?j#YcN=;jBixP;F8 6 k$}lxVoxpgK6☤s`:v鎕͵O ^qL>j.z;ylmޯ[\cƨdr6~ܴlsX|28P7%ov)-񆰉"3~Zu DȞ;[8f/@ڰ[L@dK(du=q[n,z> >oy,ZIo'VYDLy CX-RU$!Yp9ڬ-c,WIX3Y2y1P5$"s"j~2J߸>:q [)vȞk,9=g#w=}zTŌ6H)9Ǩ`dcdmᱷGhO]ʬ<zO9L*bq,ROϥ-%Y' $HIqۏ\8Q@Wn sZN gh6ND#6yz.s7* ~+VDQc3ykSv:>ӆ5ꔥ)JR)JR/uPQ,a=v IH [kGsmu[l/9&T coc'Y;؂,b<)Et^éxoxh n ml;K2w5մxGXn|=kԭkL~a`ͥ_֟ 4pi{$=I'qV/xjmoS:X-BHޥ|~ҴsBOMtx>npB4䑝Îs[|IK%׆廜+8F*ResX/R1ȱ< )98l0`[%0p3WmViAl gxрHEQ׶1ǵsXOoڳɥ@ v~R2?Z%մ}WN0mH/ t#9'+MB\Xȣ!ךGjJ=gVۑj]{X'y6{qnJ B%x/ol=7fڴJ׊gLgq:u~?`RQ6!h$:szlsGߺKqq/nfq A%dE!oOj?ʊ+Bd皮ԮYh6u4t:M>Ȼ:]%$k9ӭLOot76h'#o[C) ijI[O37/c+=iPHd%@"čÎ;nr=m<CLe|tsҠ\MX\E he[wn:%qދpdձ%~#lMJqumibh,FD1A+/Sd+4H #h^)m qm%<^c8,\6HfxۃB ap8_%_U_F܃qz}#G^0+q^V"`S0H!Hq6&Ye@O`ڲ-e'LwVGLXn.GGq*H1q8/zߩy1WHV# xcmCm,69ns:ǑHqQoV^-t*+I//umn`@t$ZovRVy09œs8-1x~V8uK{{y5ܼHޫUⶦHR(quz;}F[ő$}@cL`pqeZIMRm@`ʀ󌞄{TEr~BTȷVn^* >H7WG s~siw.cy]l&W#8}ϨGu%-]]Ln\$}{p,W;_a XNO\P]7NUX˱AIcd۲; Ѯ~Sąi&sn@QZqeqkw]L]Hl#sJ\FH͙D@~9iam<@1$3RM+&HXN%ƓM;ZU2~8do=kž({ֲۛ>d),NWpV|=kv4H&>$7oQrKH' 'Nư/7]@p j)LdI_=GeqeIiw,v)iq!%fROr03ErFN#,s`v0p3pĶ֖W}r|8=5㌁O>VK-˴@Du K]*Kd1#j6N8--[~mb46#˿h6vy;Z_yb b$:vqnHILBd^>Yx]!I6+# `0pp1KK$jH$i"Psz@3/(XbF2W^tU[giVs:E~a)`PsYɀ"#.R-dYa 0?LëN{U[[Xm3J&UGu$nם36qwur?;cxK K:Þ|WF(J7 O qvX&KUb 2+I&8nrHgYbfY fy$#=vIBrW@9W9~nL" n2 )|-7^7oζ]ɆryVMq B\0sT}Nww]ЌP>rS#%~q@PGZ>!O_^!{T"1f;u q6>k-\y!"Iwwt٣6|so7GBf-GqcAP>1f0#b+[Eh̷pHf g\q#~yey}=ZimĖ֓Y'=GOjw}Pb%Sl9!# Aql Ťؕf qܐ{ډ7Wj $sH :G(#ޤ ^˶3^E%ݔp*xg߭d1SIXD TRU7c3v$gXO}$̈<1#1sAԺQ[]R;ɑc+sf8ȐcvO$T[e{%hb1E 1<cnd` ,0 ~NH='iа[=^-nI! “)#;sP2K&~$p:>Χe{ä8嵙`Fxܤds~Cg˻.}BO{w'Ϥ}X_y aZ!MF–+p)ؽ銟1j!VYQ;"9Q푓G2]mf[2NG?ۮn54Vmf\|c$Km^gLPl-Bb`8F3 8@|tf!x$I!׸_X˧$ʘeU:`qP$uY{P"r=;8qO=^Ѽr"ޑoe,8 s<8UڐyO"&:#~^A[c1N>Vu׆֟%"=]YZܓ9{#4̞4nQu4-pdIr:{{JR)JR)_ǙQ&IM nXcl`+zuka",Pى?5eg@9<9VkcoLOg7r@F~VW=I>=;9-3ZhXu,Px `voĺ&yo.mwVE'bL:𮭧fS$3[`fڱB3mgspd_MnOMLK L0m,@AK";xoMPx_RnnoNƸ BO8Iw%/I0A] w KrTqo亊ju&QϟlT iIn+9[בp=SJLZ%  p?CZ3%r~ĭL$,Od V6PZC l28!FzAڥP1C8X8NB"*=Jc"wd޼ԗiE&';A՗p#dwsQ{XpmP7v=:uq:UݍGocZ$ιp0w~_ֶsqw"sƹgoXXc=yc^}j^9@ڭe9my,v8ϾrˬY\_=Gv&2@$ ^g9wzȱItvjQ!K3WUI =.GNZҵ] HH$X@ąQ9'ⵂ;Ikr6)"ܞ2 p{q[n-ڈ&G@ :g#W7%3"Tw.W}=sβ`Uysq#E_}Ȱ:Zie'3o'-L1`@Ǹڗg{)bC2=r{Ty亼OVK _4 =:[^K'O[s"j0Im,)r8ڨ}N:rB̴dqqֶ[PB]F!bdp~jmƅ4O%6fqM)ʷ9Qy{/6*B3Z-omp{9Vb-@I$qmv:Uwai#vQ7W ⮬#o$*$7ߝNU]R:eRс0bQcb n>k7/že,%n$ޕ-O֢ rZ"Z"JAlxuk|(\vLh Y\19=$?z} ZGqDaR#GXsKx`p78xBߞ̶@-x87\cg?`xgOl }<О( 歮mQbYwQȊblo13팯zA%R5,A5{Fu"9߃Yd)^LWXf݃:{9>LlBmp ΠFI1$k`<ȩ Rm^]B;.dmkΤ/HRm eyڮ%_A#^&I6ز%RFGNA1X(oo!b6Ό c_a3 eBVM N{|VsïER?ӟ` S܈-&g"4hʅSئA1[&yi2+ؔ$l|T{";pTL8{~QxP HS0xާZDO &$$W _;|mj1 w(ΥG~)JR)JR-[j/c"}Mo.X;-ֺ-53ZWf!$d28JUI!c>㎤5ox`-of-Lqk`Mqe-XGcH9$sҿ:V^vkvlIso`#yL+BXz֫YW4}2Io_\s ?]j+?8Ssd`*~(3mgf<)cs5õ }#!srsz-tO_/'-  HU kSZkzV m7>,Q+eZFAv}r#+Xĺ>9`HxUlrwӳj]43j1 Z[ pq'߷j/MŽfp.6|yTt觻M.+FxY$Ji@JlY=:*+cC'`~y⹽A%yIIt۽Y^%b"c \gZ7r(7.ӏ6?sy1Bmy랿<fOk[F`YeP~6:v{ QʱH2Lx9Wi>t֓5V#n˱N@#x:iPYb9;OW'ՂGs%-j;]wd oj,&w9Vԃ~tx_n*77guh-̑J$۽nFI=_3=BiE_V1Ozaglg5 '0$1Z2x;<ҮoM[k;K` sڡB$Hnn*f#k'v6c#sJ_ib$"8*+v+fdk`8]N o\m *tuu3(ǃ5VKRnfdD`y<9x1@GFqԏFY)7|6zjmb6R[Nr5PR@@;M)ɞu_4. ,W- Q1p9ⶕ ^1( $ P>*RBRa CuJj%JTΧܫQd6Iu0c1U̾å~)JR)JR㦟 էOh`bKq}O[{PHB$|;ӊSzed#q㎿~4=7T{c ! 3퓑[DۤCyfLʶ/M,M#5A?3~-MZ GZ,;`z'Ԥ3hޞ5yB_h:}0FKk[18TznO=Zo?3ez}ԳKc1GqkFgNI3MDt_*kD_W6HyFIy=2kr_hR$z:$vZ1r"r~5XGứ`]#C*RNbrﵶqY~|GESla:kbꮏ~b6F#!l6AL|Uc[Iu|tH.nB}1-l#|s{.6KH??Ҵ_N6+durqz9r ^SK#<9{wV,E K{˫o2KpB$ҧxJ֥լ)RB y?0j.lT2=eܼdבv`Yqjǒ7eA8S9/ճ,yuF~{Գo:826`;wT'BC5M8SEExd%s6mż300p {g:qym/ Fm#u$R4W0:ӓ2zֹvWװ[uia+GCG\ fܮ##N:l]R a[ m Pgy ufka[[2I' a~k>f]5:1HbNG׵ZO[?Uv*wGrG=^b]zǿs[ :t[IRUc~~Dfg!HI\G(,/{v56]V&< Iym?ږq1E,2pzH݃dbnr2 #<:3"kpň|~uQ1cIkC/$Jc䙭o/5 a7c7%<;M#I㝧UH5*&H(ySO` \\m꾦ex>ZƉ욦p9m9s%q3iγ.Hmxv"ۏZ'i%2+0y3?om4rkwKwqdw 50 ݺ SqbZo nK0l2{j&KẄ$ݺNzt\T_˨loM񤀉UUYKsȫGqF ag O+pq'g鎾Ƶ/Q}@:%Veɸ]wKtR|j$itiH6 ^F=~\)71 69=~ Ymfdzn^hLdm,Bax$rzs[w83r#oLSxa}no! U- gOgPT;v2Id@@F mVYלS׭lzCR6{fŭj7 2EgY{>[[r"OcߨkɅ,( i 3բ01"l :lN9ִ)JR)JRِ^ΗWBC (란*ܭ,2 w '_`">1>W/_YEҦ2v0H#$ՏVVM=>k`0I''-+Z4plsҺ?1kPF)J`e> ojx_P6o/xV(`prIݞšgoK[4lR2`:avo !V[7 )v21q^uMS.,;;%i&AvF9ϑ[jڎ-.$Wl^z@Dbuܣ d<00zc`U!{X.-cS>Id$Ǘ9&2L"IwFs0?t=.AIMfY̳.\: j-}5]DA+tVYGz-"q-#9LW"7 q9u A/6{Y0F"y.=B7kk,1Ȑ.wc={WN֖ڣ[A4c3 #bx}XM|.ᱎXmVM\3nIvz Gnťۭͅ$Fcۂwy'8Ai0x2I8_s:s< k`îp@ 7#F)eMNHpsvⲿn#.]ʉ"@,;u83pimt݆cw>S][\E,PMo(9 *qV9޹Q!8ϵX5HFHT|vO5Fp ,v7ri߃g#tZjaIQz]U4P)sZNKۃ]+Lխ8s մެQ'V2\!߭OKBm13Mx Gf0g+L|]l ɢUqPIΫ"WKka" qϷ4k{8 ZzLnlQcFH;nz~+j>t䷎#wQy@^(Bێc[frZNgkxs2 8ZsPX;{iJ(Isnh兵jAx%9|vcv.ؔ4w֬B\^XVNY+8_Ϋoݫ)f}Y:ÚtM$;36@+xbB̢BDLi$׸.㴽FB+(涫uH"1̛xGuzK}TIjK3B^;Yg +Nxj6i %C)@y*t袚.!PιڳHݎ us,\Njҽr6 eno$)_-Xڷn"tmGGzw=:c[4̺b3HA1npc=/t=Kny2 5\Ib"_ߢ1PȾy`8w)(iS8pSs<V-;jCeq֭m-iSYEéO$cW]7%Gg3ǵC5mc=ӕ>BBG=ONk;K5|uWbN퓓&w&UhdYA Q+:<)I$DnQܲƲŬF nO\g'8Z}!$FVȪBxYViwy۶w$g|YqK IIqsFPCc*F2 }RVMV9.8`6Aݟζ{2FkUYHzp Ϙ1OnjO$w&Ē̅6vqӶ~*$m4I@TĤA?psZV},āT=AjkA;Dрf =-ڦe6zH1!16]#Tx\<0j Ul?g`j.kh-SFۉϬp{pyfCn RC2l:de3ҳg7V44uYǸ>"fR4f#Wj3\2vr s}Y ɨ Y;mVJO<1zy+~[vr2;99WO"HlpI9O\T2 720h#ӏzp:=դ G9LI$x)D&w}#3OcR>1UGwēFt=G5*4'm>TT'g5iZ]_,qIpC,3`z v=jIEIw9A$P8Eu$QFN6ץESwsm4d ј)-uzՍ) ,H!Rboʦ|$"uV ?{}Ky22 G>:|X/[O ˥4$N:`70XM:MJ#& _ӭ?odluhʎ9'~ z:q%Ŝs=oYt{tͼA~^Z#c+Pi6m1vBÐzU"TO:ٟ%z */ۉ.d'S,FIy'mx F lbۏlӽx`eXP2˓J|CO=b\ۦbFP0 rAqAGy4[>@`@rqy#=kj >wBv`Wj-_Qacly>5Oq%K8kJdf.d ')ೊ{"$C˷H\e<{[V16QɺI_.H霚:-4[;ו`01H/Nvs]|˅60Q? x+led 3HzUռqÂ)8⤶ -s?xd,K *Bv$YX[n#hUze4Kxqԫn*[HR` !#سI uS^W-d\NAքAь@=*lnm !r;rz[OpDi-'vO9w8\q[UlYu)C1PHA?|}R%i-"`um#aXRt?< w]8Ȭvm6)-eibH nzd[\A  $qO\\&Yf\/$sНʅ.rvhcV4{|}zI5 3T\4Kf};mNY ooq$1%%F~hzml`Cq\fg\t֑%q KHmR H$#=yծ4IYn,/.X@Vcmca=w4n=;z`VDCawZ'8 c:M2LʲBr2 WOy^dGe@zn䷚Gu6yk]{Gne[~^X'dOʶL۴ P$a3C z cU(##QNSՠ;[KH t\ Ҧ"J̗0ӤbK$+8猃_jke|EwF%%[pqVsP%1(CՕy=´k".p1߯U-V2I%ȕwDOc<^d^_># ')#;B'6 %ۮ>p{Ti7 PW#jY67E8>?^!ʎTőNCEԓSaJ#/"$mGS (KLPqAoU,wt %dT9+wlq>j]_LZ6[y\7 qYW̖[0ywtO_X[\|[Gl@TW:D B$ӟά>4dOOk N>UDE^0$m qޥɨ]6I3G, euS#iݴ[ѓ;y+xongvY9 ' nԝZKϚ+o~9#G$n1k%YʮrUQPJ Qx?/T^9y] IA${sӌV cE<Sʫ 8'>5ӑaܹbL(V9l${nQdݭb#='=k_]=`Emߏ_n~+`TMCMQnBĹ9q}mڝb-Vh.ǖ\zWtFGFp߭AM̋dahnwm rU4By-ªJ^o_lltGdi&R3+u#EumX4i9ʍ<8zvXXwY]9`cf}'ed]A%P(G|ӌsK ̅MgŸ9:"6؈~$Y7- ]J$*g8sҦ^h-΀8I0Uc>^zO䁮#2Ռ]oϢP+N6nyLrȊeH's5.D{|A$NU r9bB$O5P3 c~ݧC$KmV3(Χ?Ў52)mԴn+0d#O۵UDe! ]QH8~0$r9k;q%iMLЅ 8~z D-.Lw%,7 EXopۋ y<^M0 HCG4L F{ǿSjz|NA=ӥ HkiO\:{Uu:1$rx?#޾],A1\ @^۫,~V%euqҮ<;5&jֈag2L6<HṮN|8,q'PuH>Ч{'U{sK6͒v8>}X#;Ue>µ]Fٮ'..E¥ g_KۻhHqiQZ u^KSww,3`S11ǧ"8+̶ҵhᶊxRYþRR3s=;\6R8\kdzEHwM.{ރɛ"2\ lzsytՅDjS`R#`{/G8#?jn=\>p󲈬29'q'l}N+J#f,nH5O=ۙ&2$#یzt"aJđdAU{{{:ÅhN3۩欴>8>P-,7Jz<~Ѽ)] T^4{`/RF,B[[WxǠ\ y}#w[2>{p09Ϸj&KxOr!Xy$BӏQғTl+1)+F:3ڌ^H-[,vg/q uGQxzKɼsڣ 9׹^\JZwI2FTp:=zVkkI`!29d6H;arnⲾ9eyH|#zgy&<WyYz~0#Zd-.2 kln!d)=+] mn[{k$+r29njشE'00v.'Ualg-g$2CWIkpD*H `ڵ j O jA{+faJ_q|^6¤-:0C5['rm?}m_"'nnO dpAźVeYn$XoHIZXMc \drF;c*R.PpP0dn3:uΖg=HK(o8s^KSDZuot$"O=H'=yީ-ZXPtAP<}xl 䀽Jg9dZ(uѧm'J<'Ҷ1ť M1 ~A#S^~[c5W "J0r:5na!{I$(!F+60$]RH@|.6p9OKoVTIdgSly{{d.#`1׎o?!U*pdq^;c4$1y"6ͪQ^YBB\!`g};ϑnڴ3+6:02J aЂ' u~qR㱆G/ 28 '` N\G =ʅ$1#HϿLVH])S`rFqaoyRA{8a gCV~a<&s5*" 1L$֟/ҁʫlR{6,=;OR(t8灘f}.A ~7vx+ˣ_"PRKl5R)JR;?b%aY٦eU(>};70m#( #0=!oqZ]0Z;6^Ifʜ7~ɶZ %$-3iklN7`;s[xfH\^-# VNq˨^N~ 1ʀIOAǏ PM JI3xvC7eJ!Q2]3b}LqtFG$USq ax6&7TH`3#9''8˭l2%m.E&-Lz嶃lNunA^YAmhvwG"g_dNH7z~|MwvP3E VL[cū{F Q"*ŔpNNs퍏=|Felp0yХy.`#]2c8NG"ŤYm Dj=r`f'ujp}y NDms4$ ‚ߘ>0UNc6E霞9t%nSspsn63ɨ,vȅD >$MüET:GGf־k oӚtD%wJ\ηk%X8bo@QdPPa9=35u[Ion1E4KkVxv 8 n-5K C> ݝç#犅_\ʃOi|`AXMtdYbl0!z` QM:HFʅeh]ڽ-x2Gl㎵̭=֣"G:&|{^[+[Rʜya4MVTbZ9f ۴>U>ȼA{%,#,uCH́mO4[ b熍n2O9ns]G4&y!1,dz?8"9 ^T4nrr9*`fH E$w@qsՆM.FFz,y]G Ռql^=NVi!Th$$n,:~cY֒Yv>. 39 #xI $;>\ahd_P#]E4eDYIx1I9՜w&Oqh*= 9wų7v| @8_k;,F;cbHo/NwƳ6B@CȪIry~//b-7NVn56>ԜMե$5r%3IϿ=fYbHqxRVi%=(0;zLy*z4;k xAҷHF uU$+Bu=0H;E^P@BOGG`;u'5_&ʹt#Z…vwS)bo^}Y ?A[H3#MM!&RO =cm)VCRq=M 3'8'8]mBiIJijf~5 &mJHB6ڜ nP7'rÊ-c%c+HL!I#@+ss`a[#|*y铜}Һ[kDhM10c@U%M"[م<'WJy.gqJG8 sz1qTsƍ7flw$׹zu1A1WSfLzwox*PAosyV. F g :>ͤ$"Zahv:665f %2A O8[KK%dvYDDžqʯ8;Sq:/pS c\T}gWˏNů rN {ck-ŠHEPQq8Moq C%DoxdX'5Ǽ}F/cŬ69W"xM1GoV:*Զzdh09߼lt Mӯ-mnQ :C5xXn-|հ.@޵&2r6<դBh rZs& SpϾEȑ.C (o~U!/,1ۅ8CߎxOZzP4,1=#̓kqm+Xc-6K!\nojc^KQѯ1c19 F3[$a4,*!kۥ$:slv$T-6Uy$Q my nIbrn\("A@'oZ[ň]Pfgkkӯ{XtO:#t+s33MlO5hPPz@?Z]P#mj6Rmyc9둌W@t]6^i洸ASO .&S-k+9bwt? SӄBD{rsuA27Ji9;"s#MT)e'9 }LHY%bBEǜ:"K-^O_=kՍG$ΑIn`U]_\Iiu52KƩXu=:T71E-vWBc9W?>hY-2+0ܑМc9WJ[[]NXgh.9'/\gGWA l-gyWbJۃ;ǽW3:A4#0,lc;ۃߨTM}doա<$`5iŋvOXAQH@ c ~5&-Y[,[c<] qq7d2K<blp~yQd961=#ڽyDqmb<-ڲH-Hb]vHTGÏq_|}q~`. K0w=.8~vod"jX+YcP*K$,qVץ+Ol7vPbJH㱪km>Fpk vk!H,|;t3j-65B 89yݎz+-)tsO ՆʍƁ p{u;[OP(m>c=Vզ08ʳdS(#{1nI#5I+^$3USY;Nv^dlCpO^lcS x9[;+V񛉧APv9!@}i߲=y{=;#-ČontuĺJtr82+~]X^,ˡa$O-<ژ| pIWzn&tHT%RVgH[fsi;4XKƠn/ԌxӼ;=`KiD_Q ̰x O]:&nU* xE#Wwʷq5ʏݷN:W='KIIFzM .$>j_r1HѮw0PL{׫CR ȉ2AL]^}~(gKİIg<l37:+<-(zg,FIvhwej>Ƕ(vwbvv#S]]IqUplg53mdvG$f~#S}ҩR-J*U Hh͖:_G/v8C|[]WR37E>Lkb+#gASw%ڷe# s,Em(D[ U=vz*1BYN{9ۖ6b$.w{YEkҶEэ԰nfI'q*xQEO0Ħ[=* ’2Io[iۂ?$Q%+?1!2:C&Uy8Td[HdF00O 8ZƋmM=M 8Ts~;jأQusͥr3cr ppzT&+),qU {OEKk4cm!4s&GAVsE+Kmp@=&3gS=62#yr$y2&U ~.H?IԷ7Wq]M,1A@u_-Θ`H0L msZW[H%GV*ɷ}q[.'N!H!d sUbH."1rT4y ?#k"My sG ֞IٟS#ީD(*?#cxʗwQyܣP縩_Q*EmC$K4ʓ7d׎8⥴ȒHy"x Sq}[wvYaMoy&D\Y*ƣyʞ##$ؚ^ܸ$X8n[[])JRŚ5dL,c\pBdbg[mNS?Nb`G 9=1u}J^gX{͆ ;ON7CwZ]< Sz! WAl4 (Yb@$! kyPA:$!U뜰b]6?mex|PYTJpx_Pg@7mhI7f죦ZVHm)n*OA j0|WAZ[G.ch76l4e@8֨u( lq˻q>ܜ 앴p+\+9|(Oj2[DȰi̮0wJ 7 kN&.g# $2Xq{k_R)!q?jEs_G .9$( y8o׿zbWrĬه8 ƕ-_\K WvhJǁvc+$9Ҷ+m:{h{UhМ"H<9 IcҴǂ~yZM.iHyk.wiKZYn.7*q@\PnnYi幷 :V#>a-3IYb03.$3JR1yOrII#oZ,֒ټ5S0ݺ`t?2;Vo{{{q<7i e]X(R=.R~r洿v]vXYXĶlA9;yXZu_1A(oICi5J˴gDsl#=+k״/?Fxm[@];xtmvW"by; :vޝmgml+[-=Qcx1 n;[˻c\,C9ݤ)>rpdw,2^x6 ";Hn/NM4`~lt=Bm7WxnmXG*T̢F' N>/hṲ[DN!<~.2xUgt9x}'Z>!-s@Pvj '<=hBL%rGV9Y"wqf% JDBRy6޸XI&"} aG4]&i"qou=#TO.9$@Y|s񞵸=Kr˽Q @g5|O$fTDic!Ai+=M:]F Qv:׊Ah|G^@yކl6kp둚<$ucQմJ0Q÷z_IM%vhoвB㢳gў?^ǪOua4]̃y*@$Mo?N2p*as[xHQ6y<ګmFHC*4 ~h=z,WIe-+ #`kؼVGkq N>|ێՇIF xR0aUHV Nyz{ p\\'%KΠ9.@5ĬKDfI9Wp.<[{a<瓊ִ ;^KMZ !uFD+#=\Ҵ{Io.-ͼTS܉}68{b ^#3KJ<'zbDONĐ> 03Ɇ897i! 2]g<NKTQ @\rrGoJ6i -~/nC[540ݷ4 yt'iN#roW/ nsYZy三ֳۖ)%;b_%f TCsߞκ/M4"^QBkܴstڢM[TA <%npT2\>ɢP_ +|wƿʗde#:p ziJR/a?IúG`9Wc:ޯpm8xIO4("܈mK$('ڶS,c$7W)׀It /XhL3ܼےq /x,ZXm.m"ʬJĎu+h~86W {u;GqO\WDO $֩Տc 䞀Uk7W/^H$/,`{(w5*]B ,ɲcց\GrqM9hOa֓m~"`[?KeVrrp2 ?j=Xx[E/g_&T`I#J~A'kXӒorw`gZkl`I.&&QH q+&}NE I؃W[ժBc`FATGLrz۴^]; 8&ukhᷴ$mBs.iܰ>O,ԭ'LYMk˅`f'&4'>_cU_5f[?ilg=l--!3,c=^N\5ê2 9??sVY;htaELq[M_58x Pc8'⪡2^Ȃkexv? 79IђdM 3$/|tj+ڼ3*\4D !W>vXqiW\j sM~H' N1Q텽ޝ.OK]r>cr\W'{]A7wWS(˓2#1 )$nNO`:tueeI{{g2o6p3:1E=ck~#@+\ UEcI#kբHQv; 8q 9ӝ|WςΣui|P*6,>ξ#5ԙQH-%V|n/eu\UXg$/a\]hYY*ǜGPA>ӶkOTEN>X\3*OW[-#X<.W) Bہ~5_O<3a,ZG4-@l0 9_sTO= Nț6MΛͨ8$c!F?#ҷ5&=d՝Gq?dnе/b.?~~jY8/;!.9;9WT67Nt'7c gd0 Vi[-\"|,l8]N=B ).ed@[ۯJg&S+0h Sj7{`QǛ.#np{z[c { J)2gYyojzGb}FKw[L'n9©"?6ѕQfm$Ӂ޵46ѹ<H9*iaP*]Iv#@a=ڱZWH˦݇$ r S ܸ냚_Y^Ln.%+n8ު|CmiF2>ԼD/c<=}GE"MhF yx?Q{+2}̶wYDd Wo F=j6Igp m 7r{sUr@ZmV$.#j<+2 ïH%2A:mcy7Z z;xeޒ$LGnd\p3\6eo7<9?xSókW˺(,xl`wf=`TN$uC(g=1TE ><|Q#ۏWnysZ[|IZrb!q`uVNu_hdf%bނÖ'~=}~ ÷== `y^Z%1}$۴epp;>45kc xYk,yabHp995neԘt` B0\b:<y>ql"ZG c;Z|3(mYfg-Ō9.A\HK!9_\`:׏1EfX )e^M ",>_hs:dz]:ϕ.\4ǿ֠ H3£B,n>?ץGFvޭlǞל~/KۧNhYIT' wS.-cF(Lx35/ڪXe8aLT%nUwR'H|E8:Ծ]r0&rб>o ^@T gۓ9tiⶇ uA<1;1@B98<}%)v&?z=rHn\ YHV&c#_mx6 #+cۧcntQ$K&WǨ{qے1UWw)M4QMon$u!A~>՞`k{2 IGߑP|4#1a AGF?jfP`FLXf H8lE"7 ֖u(O~$q$3IRY1 .,}^|he鰑d0v[VIh-&zvwg~ MbXlż n@j/.-#H\2{Y9qZ{e hr\9Z\7x'sz [QKA#DYnlaFLAs z y [DK5ICsX8\ߣDG6dN@0A#M[->Imcݹiio|-߷a][4TqϘ Dj6F293HJRVTbヌZṒ4rDYKu}]h]rGOX.5m"$gk/ 87Q*:y9>تRI7H(=e:}Y5wesקRqY8ZB ~ѯ-h*} |ik#LhS]JNc 8io4D\HJs?WLj4­qFQ ݔxWi<Ξ"l[@q~d͝.7e@; qOKN͒L}!]iV%Q,6%:][iSA?#Ǧ dI?ʾkq MrfV?}ޭcc˺@ >==XPK9,-^K yIF92XU1}  |g(Dцg?Qiecbg9Fs's Z{ܚei%܎gXr2Y;t&;eeaG\l0/%D"? >MPMEIqkȯcj)clԣޢClRL]U@޶;%1 ѫ(zLSٞ :DOp^ɨOS9920ZGqCuSr}ɍGc=k^(ݼ]Ї9'I5hVIj3Ln82Ot87v~s'ϟ`%cncn$P4$/b%(vR8~?ՌC |M($q>v{ w ݃oo]R=3PBqU9;^kxIE.д_UPՈPX:=4Cz0’'!ʠPzf]>\yVŞ٢ Eny9#'nS4/!ѝtyᤀJ&@2 '}W8umVX 㷻a+k^z$&B!d $sar3DOHQO[[iDD{_;Lnf9=Vib;s4Q h#֣Yv*7s7I"G꼄cPm ZB3?$JAh9&S\zi_7w#ln=FAV!Ki4F@=q׎R7-q-N K!H6bTQ>jSK[ݔ4`{V⻨MYai 8Q uO61.}<zھ#"*ƥ"nZ\!n:ߟW1_DHV\3Nu(L;x ߥK!rFHIWLx}Wh= VBKIhU+ ӽ~Uԭ]j6#?#jYAY3Iy=3Z-mt幹>Df|zy8x,iŸTe#Cx߽Qxw=2`z{6s-֞-Vp?|@89{p-O2̍p#X v9Z2Oua_jh}T;#{bW6v9s$GvR;[--Zvy {O }CXH# <9Nu5631KG oRi᳙垒K`ds?TsIHHV7<{V2{}Bl`xIX{_/8yt9=i졶 u"+v8UfRF ["(8s^tb/ X˼EXzkQmq.l}0(+p}C.3hpIc<ʿ>j:A$Ѻ%b2(WISQk"cHTƢTuՎf+ f'd7q%@c['=H 5h&<h꼨qڎY/ӍĐ 2. 8$8s6ίyKav9Dgɭ^簺EΥ$qtrGY76W?j^ . ^]z#0m V 5wtkcH%s8s{խ^ V-zT]A11@ B}1L 1 ww"`I,A}4l*^tYoBɎP|n<{泂#+!~ouj͹ O~2a 33Lgc,K7V6#p㎝V;Ͱ0]6=9cWVڌ2͟l f;{9Q/ЩnS2#eVW;`89~:t TY=*:sb0p=8=*X^71k1#cqyjK YEWn[i$dܼA-fn>բi[ȷs&tamtl!#u浥̱$S `g>OSyg%(XG@+>v3!lpIap?yYd H=*Zi$r4%HD;3z(X-ȳ?Tr؃yX0 { ~,]HQY!bfh?;MA w)-S=<{'9ܤ )& JN@TgNN01=Ee`ٷ. I=yt;?Y5iBI2O~{cO WZBb-v&C=C9=~*_[I >  }|V/\_i\$)pr P@BmW+*j@]dUd$=I/^*)7s'5\61ҷI)qumQ /N$w"P5-!Ѳ6?'xRL*,m,c!$|D)cICi& sSWX՟HL FA`8WBӮ~{.m ;Ƿ5Eq%慬%izB˸zsӐOLu5aI`XadXBGn38Q bٍH9_p23K)XфܞN ghgHUqqgjHw2Fm@{~.yneZTD7<p1y%v!6#8qϭa|3.݄p;AM Gu $0,A@yjVq,'f\ #sکSI;g<g}#沑>69 H[= oR$8Ԟ߇tm/LT+uK pU#qy$`|aSK,7pzcεH#z]bQ͞6ګ0 <^:V/l k#V,Jx<; ~2i  r:?phz]U;|p댎W~%#Xv Y2<1tW[ (W"y+^8n-.r 0ǎO{HsoH..ZFr&PlHenvӵE)ԴЬt'q:fn[4X6dڄW\WJ]"6TҞ `}'\tLEK( a+֑̑y2,˻ewrz>uu0f"!|Pz]{h~5UƬ$R4v0Yw20uڵ3Nk7P!}p{zm]I,-?oC$%c匪$pF}WIʺ#@A%γ56:ͬfh᳌j{-ΩqqC*+hmlXioTs?\kJsoohIA <8[&`f:l3ft-|++a[L5 \'FpFzpkxeq㊯TVYVYX;H8Z%徣rVy1WCbڐfg7V>Csid%QsxjkoR&ey!w#z{Lx/ NVL}thDYrIUq cFHzY5xőWn=3 q5<Is mZ۠$nOYej˪kq{ )l;rĜu8ۿX_݋dN1;HD[ŬwpJVjBdtܞ1Qu-&7Uiܩ$E^s<e{XOs5ODRA&'zսXIL{*E'%xb4Hyt TiXlO!e X7#(N6 *Xt;iY 9Pf20ϵq\cXy2QN+dž'1ٛPvT9` gh8;pGln EE5ʟy{HbF[<׊_rW/-l) 9p#-Jϲ֗vZ#'jGZ7ʳ&G=1ԏSdC J<#T[Y/$A1x۷9& x,;Oǿq=vE'@Ҫ@95 7T.N[6D$$̣nY^[i4D;c$gc`CFpGdFTpBVkJ{n+'Lb6WV[Y#b#| Ǿn`cq Û t>Tmp%`>KomAC <# Cn9Q5K {tk繷BLCpcWY!wJ4-a0^O`yT$]nAӤKRd/qⷻY)$,^ZIq\qЩWg85fXԅexpGNqֱ\E<IUdǶsf;"Ig2K>Rpbk__;V#dT>+˓4rʪbꈇw$֒PdC<(U q7qAx``jeֳuKJ^:w\Bsfn9$`Xn r52=s*nP_>1(:g;bl4D^9~)ld;Hoo(+4 q\2?(Βue>!P$8ϿkVVhϗgF9Pf0'ȕ9'߱t}Ҥ82Dt`G#J_E=Hl~bmTdmڶ-lei#^= _<`)bޮ P"h+qߩɨ-oڷn<͋99YdOv6 ynճi'Z%wKW 2Qp?5.U ۝e眫ص~(/.YTD:w*k=?F{X3+Z+]O7;܌'x[R+2Q+ģp8f=+Úx71\MA'EuO !^u?1Ai .GLzNz}jҴ$QGJJ3n.{onqR4. _yڣ>-_>acqmgǿ5]7OSդS,pd69z2CbClVrf*{wsqa#o^2{:ڮXHǖ8?=:VNа@t LRC z2@{ZrrzgO)a毜ng#ZέFf΍_}*1vC\AR:s?u_EhlvT@R(gsDsZBVwvbӐ@V٪B|y" ,;GOUФw#l@W!!;V;FȀ#[y#BȠ,$W>q&<\I'*9]1b?ˊѵ-N;k)Gu$wɪ9&q9<{s`_rusGҲ\V~=żʍlq~kƾfb>V!<Hw+pb@RұR3?Ro]p J zvi6qx>qn,;0ahF[#I/\$W1rvsڹm̗Km42yLۈd-ר#tI[[cI"V`SigԐ{X1Y8~ߝUa#Gtfpsޭbtո}hdByQ p~{֡sY\N Ǟ\0SLy5xfss֒#"NoVZ3iwe÷??:s-][ܜa[`Vќ;ӭ@ Tl"w^bB=@v&$F1WszxRmAtʳ%ǞAc}[ !aV%Hr+őO X!G:k:>d $^>Iw1\{ŦDgcOd{V4{ ֝0<920uM[Lֶ@?88;NHbWl6 [D2(V1"9p_J-xa.8l3 $foB:j?^YP|8Vmsw8 6gSc>y_Auu,@D #,Y!x={sֹ߈nu]FBVXŬJ=Sfg*A_|+}b Wka4] t5kmMqxɏM1$;?횺\N0Ljq>EԘ˅P=7w$c庆狫]6Y 6ד! ;_H_j`YܒU9;[DUIs2j6^"M qV1Eh[<[s\~{R?K* 8_]L M l>8;qA]n[˹`bNyQGnJji>hm,ܐN[qZ<".ou'i$Kw==q_<-b`y.[v@Abż+ŕ'ag j^%lm]#XӥCS3L(HrG'#PO*jZNkDф`'#< EmI混Svk*B@|)S'EHZigsg/v8GĪ&Ki&io9M | vhRMEf\H,A'$wsEcg 0j0ݩvu)/V$Q?vS ceږ!Hb09$Vxo]TB&S-;t^} Zi~Y">hQwrPH$wUω2GoSλdc ktZ~rw FPII\OHQ!cOj `yG,{E$L=@޽# KpIbqSm.-E?Ye<)Sמb4e$ Մskf\]RKg6 |U^t-vefD>R =U'/rnK' Xcv+tsdI%|1aQB08p ao,V4vhln9|Y6$JΡ$!q#׋hBr}GTq0Pが#JRJ3!b7{u HH2II,i<װ,˞39^BԻHu fUn9~Վ1D $  =RV1>^ I m *4'|V7VEܬA{Vx5u*TKHa2G1GzM\ ̓zgT5m:k-J>TC$(n_`"KIǓr@>b;λ%лeũa)$յsi#"vV4- cw+P:YbḞ F~/&uii7Jfk)r18|՝K/`Y-n`l~j%/ R\l瞡[{ "BmXV⛵iub;rH,zc֏F=K!qNZ{ 7HQ##]WPD0ϺY¨r0JUKс8,z \gA=1Y[k"Kn&DJmHT$CR@?JUG<[NzCOʻ#)`udOלs޳I ]ZPK$z|_mgtmB#8+0f f6B:?Ȣ9ANmX8c e??kֱ %.AҠ\H۞yױ*|1"[bC|sp9'YdXUȁNw_IJk3$RD| cyNuoH5 ȃy{-\tUH&/î}5VkH+f ?褎AQqwYǦCn/#L3T{Jdw O@g {\]FwO'8vyi%%h`lb?ciGG˅L< ˬ5F+b՚k:' Qzp:{WnV&Y2JTmgx9X}B / i /EɌ9=>ʼ:n8pD=N2 ]nf"•9>ݪLJ\rB .n'du ŮM0@Z_̖on0`QO^G^j ; C_soʷ MAq4<?ZWiVKK[Vcm<{sX.lo/XVR=ASmd yXOD`[+&%Ѳ&;;wNd#Ew%̪2 Sc42}Br|IK7_T۫n["7KhZ `篿Sr(,. zռO{G`s"wc/p2N+D $^3IǾkXhE&V0>]\B.lA7՘#yi<@6;gb I[5ۅɺaTI8=N;/ld%1Ļ乍Pߜk&F X ݾI|WݜWS [9|du: tk[EO+(' ڵUm;6XkVi&`*cO<[:[(nbDJ4 7o_6f|˒ tx.,$k&kt?<|$H^]s޿5<3sa{l:norWׁzleIOjQ[M%lp du~>$mg&`GeÖVGqA>"վ&k Jbs=psڪLZgR; (9Zj!{qk4,<qn+Pkwm"'Z~m:]馨ydP=2 b̞eLn=*dc*I$}g>^Hrw sw[0 >Fc,Yϧ<[(1_˓Ҥ*HH_)Q)X\5c*ș8AFsμEq"e^jk,rJ@ /~>j8',уsS!HFr/ĵaom9@ꅂɟNz`|+,߼t%/8xbG-ŜїkeiSAu%Ԓu Ki'Pӥ42@L<0x(/Y9m6Ke |9`ɻ\ylqc=]$WlWkD{㽥k#q9nxlV-YbvGr'qr钄TW`<;8 v5uF;(b ء vVwZͱ/ 6)'#ֿwo$p\0d$-ηsI𕷙#X5.- cZœuPխEmdUʷ=;Gڪadt+F˜r0IYl-쪲PIX$dfnUJvI#ھ!Yጳ̈d pIl_ʱHFdue߯ ` SH=@ rPF2}pBҙTdDw fE =^+ܞ W>uiMfT9{|g淽leE1C̈ǂAڤjGj_ih21q_չ-׊obݜ2ZG.P߭n.>lo$^ǧUF21$Ktx9B[p=<0隭wv[<.*0H}|[nX/%x6ɁP@ߩ_>tm$hᶐy n.+Ӯm!Ym]COxwVgINCfJ1:{LHD76k*ver2;nN:'7K"[p`At1To&m3Xe6 ³5/ak+&2*k;9%awa #k_-otf .IFL#0:5ssq)PŖUxs"u[34Vzdґ)=#ap֒H.ZXhpWijxۦz+)wMmWKp C-`IEpaÓ"[[En% Z+orG!p@|Uq#m!EdL9^-"[IzR;Dq1ɸg-O'<7,E2$~O*Xt-.mmYK4`]{SizxyfZ Orsg\ZԼEY!4[o>;R V}";^;Yأ_aߏ*ʬ9 h{}J|EKߦj6YV9 |>8=ebM&2@w2Ns |\kĖo-Sșc[ƒIަCUF(Xd68^-k܌dn'n *,e8qUs^ETʶFA"A BK*C<ӊesՌrsbc#鎞-R1LI!0[- ò9cyhG yXw9 0G82ˊ-$wgu ѿz]$#?-qO7.c DhISӞz{Uռ xE'-K?iЂI[ݽv*L*|z9ڬ,a's9GSV&=txcC=#ک4sQ Z]1C)"}Vo4vm]C'cnx{\\Co1& P [xP~5[FKWb%+y|ͤqϼCG9n#_ qw}žۻk DSs~q]?:sŵyy;ˎ 9M7ls4vg}*z WRIomFxVn S{~ao ]?Y2Bn 8W[ڝ3\2>ƺiqIj>nZIew62)98j]8﮵oڙ'"]dFGz$)h.=M=<ߟ=9 zNK/4s}nmR H!Ų>sF+8zhֲw ޻{ Gl3Q3'tQ岾p* w'=ΓItQN鐦32cB U'v8=3xcQR KoyC9j>*Xn!Myq'[t&K}F2@DEpɼu9/X-FQ7Mp2F:Ouii4bErKFFK*0Ón~+_M#O=8djT<72yvR~Úam#ukn|VEORG~+VmfG|}db_a 7~sֳOs5ԳE:[iZ(ά+XvZrMhT%VSnqLKdVzr+sdgQ7wۙxmyȽp?ۥWIK+ W1;Ǔ R3vn+5 H'c q,]usg+[,Gyo49# giIZrs9<2pOT/Q1K 6!7ʭW=Ut$VL+Pk: ѩ۟VK~<ַ*yhQ {\k'ҳaԜzr8\rpG'zw[^榴p8SZszOҽ|lyoΤC xd7'E}&*`Frps X3RtewB3")>?E'0w0!=nڣ,6pkddՂDDyIP3͘#'LGcڰ%s<,d(Iv%rCG@&ྐ`?kbYcfT Nz62>>==Vwi ْe1zϩzw&Iͨ5Ancm>ݱ[xGnkQTyCAqU_%RH=%fuXmH޼@'ry*v "7 n\d?nk1}U:%tJ)LW^G'IqҤYo,2R/x#iO5Q"C`$lƔ4qb-ȷ͖7 N{{fnk#;RV}NM|nⷂ7!Av;Ary5f"#l-Ϙ-o&fQO|W;ʮ*X`;mfs0ٙR}=k9*{ʬ,gЫ"2m?NpF+eMZᄉ7g5i}qFN'W2WPhOCZ~ H3a۷LԶڨKmhv$c56Zj\ΓI%E z`u iZyOo$2I״=z֑FB-KX 7kk?YQ6_ysR`Z)xsoeUku%`Tr 8#KmIR&PvU᧎Lܳ3yp2+$9I`|U1"9z,I syؘ `*]23ߐ|Uaݼ}`Eo91xv'=~pk#)p$D1IT2UEQft3lGn )aPd(O:yHbf gdvT[ O`ώI O$af^2TL^ٶvC{Jmz~+;j崄pz8?> |U%7FgY.bbO;]J4}xOwtU3aۧH31"=VF;s(AvUG_k#R:_}yّqN< }~xgėvVyolu8wu; D3Ӛ4#OuY@Gӡ2d|3o8<׍J!JZ؇Q [#c /zZfm'ƷBƛ lK3L2(cl.Mkw::s^}v`ƿ*H,Mnz{^i=֯{E"x2$+@[[۸%{^^5f #G@H`-}7MGmYLgpT(˕U;p@8'"\5Zݴo i_%!NY)S <$ >3Kum'aЬJ_qfLNFr/+ vr~:/ u :aYg\Wiz NѤoq  wmSN쌟oȉ*8[̋F ^?kxcJNgBXN 1'2?)/A5+K{jowj$Ҵ̊. HN:^ )Owvֳ:DǕՒAt#Jm-JA. 9iCz≆џOÑtAP[oj] V򽮙[~j,{1H'{~k=+k2ۀ_~~*Ò Nys(I&2]M`Ƞ.AqtX7֯p,]En#s#[{WKÀ}`}PrY+-嘓B^_"$1t=3ɮ tVQb\?>:ci \T_ {pK!12yj9*tӒW۰>iww%bE ${νIbc,r˙J> F{[WX2Gjm*T eJH<?ԋt*Hq_yBm~+ $H1*{k,X%,~0pr9b.g 6걱Rjp[kzrj=}I?\Lq֨.]%hR^2|>:+bztcr:y $/éye=hҹ`t=*BJ0l۴&+g婱wi @'a u;WFj@C>Mtʱ@`O zJ?9o .[ep19T<|׵m6-G+ZBH8>{rHzpk$.ޤrT^H̅HPǧ<Օߓ8@J`T[[.ӤgT'#9 q3]~zcxk[dؠ"t8:+O,^yP% |T+(CzPG0F#j QQ)'?Vv[Y2ݕlq~UPXPRurAU q~3VVnBGpQ|\z.jU{ S<o"?OGWbC-±<>~ïjѣx͛턭 яqӀ{YRK!I%+|gwkAwKrn { ߊ֓Pv[vq|@s3=;WHGn%XR"Z!*e0՘ɆA8# g)X=9?42H=p;i:28R8bHĄ* aZթI' KFAR: ~|tw-͸L or޼,9xr -Jc [NgFki98bOۛX++8ˬæs㚅Cq<nn?߯[Tkvnqsx{?Ow6yybWhSEBǹ'$+SV*ZyB1u.Oc* cZ$Ɋ0Soe$Vkm&mmRK@/㻔,VLy8c8?Ó_EiF:[*Ah1ސz.NSY<) 7Av9$=>8xX9R|V, \ k=B9>s[0*ە vO6gxp])-!ȍ@g=,R6F܁&FKdc[!n 6Z:L.zPIϿ"-W:3}YDp$M$s“poK6?TLĄB|#=Imj)l3>NJ\m22r:Ry]Ki伶v0 ېX.-ulڔk73)ο:~nNj,A6DaMys5-,"JXbLGߚ[b; qL~%hc2x9sUMΦ$eSB 7ܕzsȥ{he,цlf9uKe$V;ad,Yw.F'>Hgi>LjQв.jw@lOqƑ0zbi<QYg<3?/jk_>=[cyBX' [ϵ{$vc6p>2BE]NN:THՙFPN 3'㞜YbuNp6tz=˵|xġ>RDo)*eFj4Ywl`u#,Ld2"=䙡w``s^܀RoZ߃UMOfyjIq+bç^k4j! V'3{vPBz5dg $Jv2"#J$aI 0zOpy :n+4qf`GaY$`NwL>8v20gIcd6?>:T4>c#m=c:י3nd3^ tB3s_#=9k5β۔[M;`4{lC\G^u5R &" YD0]d |+KW`0W-q2 ?=jVЮtW.Wpodgz5@a˳x<$1)})ʖ]?Qҥ4[I55 !d 0}:HcmգW}hYtM^v.}e$c6nQ$#jl[KUFed s6Y[ISJYjQluҡWH2b ۊ$(m7;X^;oUVJF.`k]`pjɣxK{KV 3g\_ֶ8.O$Q:IČ DJN`s,7*eBO._S˺W:FPANO1 `s޲.B>¿5~77x׻/ `lE@|TؑYtsr"#rzgb :b7)qU3u bhB<ס5gV] aHgnOڢG_->8 fMl-k{ICu8we9F>~j ^jә/sq_E1c A'gwO=PRۆ3w}&qskmgk-CGiux$\` $#57ޫu>w77>m{ڸxf0JaI{t9}Y]nl/rx6E o5TY lMA@nWxFҴke,/#iA<8 2H9=xw{;7O+jH={_wog$e--B=‚@\_ׯuFKI"%g+i׺T6v [J-V"%o\ =?K Z:2,8'{^}};4qm'$kwSDt9MgnrN?u-.c6nVvʰ; #'=sZ-,'Dk5+Di #3B̫8718V/^${{{k&xY6,d'h iZ%B;n5XQl< '9:xtSŦ:ƣ!\6"m\03lLsj6յ?jW-,"F7 ֳ*|;}oW7Urm8R Mϕ{ܡv_wZԤdޤRZ [YnW{Ic5NŚ"(9 t+եo(Dv =|g*9`r 㚧2-R9 CfHoҬ!up1$~@VbAPA)G(9TܨJ)ʬLrpB.1}ǿd.!c""K# bJ<~_k( ms͕t>3*̥r@5 N-R ǞߕD*)spłǧ?jM$pqq?HDe$0,wvC/Ҳ"nXl* vzqqDTIy9#=B\zE9!'g;:c5=V: -]4opO֣! 'gq=돷y.$Qs dڼs܂N)r1TŸ1ܼcRrwFrT8'"m8 5*Ky q,v>F\8{z=_?5٢&vV\STu+,5+ +cm9 \{V٥-f*d>6>ăV?e$ P Eǐ|[BK`}6FuNxExRA3(珌B(u3t4V EBG ϯ%Y4:t(a# p[vBn^fH@sHKsa;IT`r0$8`00HsA5w 4nfu\~@t \zO?o~ $+Τq#ya@'a: C8~ç^ AVSi*|FN{Rw`TW',xO~x0#,pY}d׈[ƑTF\=ûd!wǗsSpbVؑqӥkI 5Q)-89j]1D("qHV-[\-tdIiBJx<`Wmx9^iN!LtɢAx&4$%.`r1Ϸ hDq<Tzޛo xwo&60Ēq8$Wc÷ݽ ;@8zEPh.+# VO#<#=+鉨xQO5䪯,GGsYi&k>Y,m碪Nqg9'bfavmi y(V#W~" "M5]>{dThI8yI^}1on~yi-9,RbGZv$дաi_Qi,NA܌ >k.MN/a@"9lSu #ͨ^:<ֶrKnKy/e M = tMhbimlٚv'q;խJ$k3q'q&N@l0N;fihz<2^: iL`2ǽmO5]F=cG'kIC 20TM7ABiZۛ۶6vҺ!F$da1]̗vMiuӰ*F9ϬӠm퟽QBAw=o!F9<+M%7j,սCk) zk5ޣޭ cd&Ӧ@onBo-@fd'OK}VK`]k"6 a"Bִ~jT޲7=2*c$~{WŶY !]Uyf!=2F>0ZXKuvFS{D#(YὍH&pGn-VHK`21O@ X08#Q^ᙄ\1,z"u6Eo,Qv$L>[|=9>Dm:Žec#XMpF@$1RIA,{~uY܏KݺG*Ak,1fV8vlt=[,,\ӑ-GKwc *ɯ^LBde۠xo1Vڴk{BZ[^v01eQ{3 sþY-3<1khf9}+HwTtmJ %Ҫą`Fo{^qgI8)QVI'3^dA^*laTޡYp#b< Af9#$ܠq{21p@OI}_$9@Wjlw*QːS 3f[X%bb=J8Sʢ dD%T>c|רPUd\g|6=Eq9g #?<)!*`B U[o* t t&d FF?Ϊ c%@Ell`3rq g<oYYFP78=3a`w,9X6qN[ 9g>1dmr-ޱF ~8ϤmḬĈĝ*MN6<2ǒvzީeSvX0Tx_me9(28'GՒjd'E&̀ z33[,@ 2yR=kFC⭭n3EzuL sq+~E v>DXU`O$==zt}>'(kĊrHei9IZIz'ϽhkڭL+h}֑4{)fl1*3ْIq`AqbLw)W+!#f>wwc9_h#iHOH̱(LO^z~ukW{MJ"{ldvckdxW`;c!\~Q4sQ*9o˥PA=ֵ+e2^T`ASw⺞ Gp0f qӮIUơiososm*+͵a7䲎8F7izE"A,3V I!0[~Vo3\oź[ev tQ&i-GQ m~O| 砪 |Q,7#[D<Ž˱z/t(uso*CogbJ>M浻]xu [)~o91j\\%գeЄR2A|2UKZ95I%ic8>{ in.$K\[ެрUSWlSQHE嶛UN3R֟TUƗahZYt npU' pxjC7pj:5ԍZѪE}yrq5>Py4 RBt!-`= o2^ εmaa1YIpM ;G9:힑xz[5k+U`p%>X|'4Y^aw[C@$3l 񊨬-gcϊu hmGRHu?ެiJ@S8k/ 隮]'Zv܍2" wNHIZ#q`A;qטZQ0XCE|sVWM-h}kYVۧn`=1_?i6_~,զoY; pI/^ipifKm\F&=j$+ݜa\W?~YWıMּDCv#=h"gn?}6C 5.F9b#+vW&-eĐs'?j̲]ZŽDm0Pq_,d"",+nn;s\ H׵T\E'澬m_m9iS@1W-7) l#=k \\7k;)`cV6Y[v R@{I"Uk:!r.*=ŚQ8G, #?cGH2H8a{H\$R;1sV5̊eU 卥<Ңj nܮAsk̍!7guUI凈Ҿ o۴M]1iJ3?9}<%^^]377W < N* ˼1GRU!,pxǿZ1v^VaѶu^2Fs"K&I#Ė[(\636f ѠP g'5īg B`w^ˀ͍s<9Y ̣c^GmP~H| M|21,sUw'և`@s=8q(nA}^k*1\4܆V9cܟD\$Vvh g>t5#̎ YO8I+3?cr#Rx#2.KG|}|)3I4,y8'TͻR?0 PҤHbFyC\!G`Og *T< جʠM L+xs/sZ󨈍$ Y٢rBiLm*i3dI*g)(.$1 :NW2FOkmG{Kc*UGPyvW6Qe7xn$hTc_NJG6(gDos;AqU$llGj7`z*XŹ.h nnC91Y !p'#)$ϧY1eZoei`AlW'P^0(B#?ZIx3)#b-.Te2O#UuDaf lnqaޫ^!ce;AX_ ե0; T-ʹ دp*LyuOFSxP޲_ja2Imv27`FsN;UE['_Lќ*7B=};SkXxT $Ҭviq4 Yc O#Wּ/rŗm1$R̪ .7r?JľKJBmAQ,|#`qɨ?pɩxc鮡m'vs?oHSE/X%Ģc3c ;u,Jo淐zto d!QU r?rAb;߭j]6skxnl`CL 5$sZƷ71?ZK$v4ui Nhhs*x0ck[}ޕM 3_+Yԭfxʶ:u=8ov6fbgԭPxF}Br;Vͥ5SխD0Z%֑I;E8 `'ծ^1o"w,lfٻ#|VkjtF;nDo#jD'FO|}Y jRs8X6d\drOxX2Ci(tUꔌl\i3$pkFx\ a7u Gk Y͸vrHzIXRŚ4ZFi xVڐ:M]u1$dƇ`RԞ5%vZfP[yo!ݍK$v8[ KNu;[GskI{ =G؜`w77Cjoq io5/p>}Q\i5n̖\E@յ wѬ-ẅ"0FF}K/TvĨ< %xڱN]#ҊJdk1-;GR'y$b˂>J6z,g,Hoaln"e;nVaϷXc- y|gy犅\‹3F#13[*,OâFʹ0\"2>L`v?ΪDHVXe@0q߹kդj/S׶)*rɨKHbglr8*wǶGO$@c?U .J/2=jBEp1f\NO5 3@F0AR /IKm=ڳbkulX #a6WIjmB?L5gCg2zA z>oŢI ms #u,=*0;p:tۖ!K :+H1%8=So^kelKi=֗. )lg1$6VZX-H{FQYm ϕ6ܣpb4φY>ņ23";W^YET%!z =xM!wx<|bMq% Dlb}ߧe1`ȑ|q74sUiyD&6܎ 8+2.ܖ!?!]$u ]取P=9# S09E}xQYaY#uX ۺu?$eE8hbv M!yd Qְ /*ƸLlN0s^ f#w\ `inSc0Hz*{V %%h(8uַBLмw p2"}*\)t/bH7 >=l" ,]DNk\(N99Ą*r)-YG_]#Ywr=8'#՞-A; |/a+8.89WV6dǸ'⠟6ex̬dvԘd(ϿOeu)4  b,҇rXGe}mͿAcD2z) {[e`n;\*0Eh-"iC+%GǿjaʹGp->>8\"y" bK_qʾMz̰(AXU]Z0xFTm)[s! 8OlKkm8pDC0gi1J -vwwYYeJ&Fm1X.Nɿ 9@chы m ?YȐȣEbcCXiziSiq zkMnficZ23 sci8Sm7XV .WӐM;^I7$ T·M9ga}cmQϧtq ?p@;)sil{Vql]31?$?֧\#,I4lcSqtW#_&?J:Pl١l1X`vr = ۼm$ӑ\z[i+H>ہ?j,ҸAh$IÆ ~*M,]X!R'LUCO ԥ Kmd4+eڭILz{LԵ_2Z-M34j,l9OLY4r"V Ǩ2V+(WR-̍s6v= f]LZc-mrrM޵gJ-˒S$3T(ϸ=~nvZIؕysU]6! c0[ TSoteEiq2ad*@=A9YFU$Tww"ly7Giyd2VA[Vk']"4a ^+0HMBq0Matd>l"\ZmJݓ< $T$ܤ@<xkoy*MiM+ N1Z6_pMu#MCbIzɪQBdbw8QZ~iN !\:pGV]CYڤWjrz==Ҭo ϰOZgZܴwlק򩺲;G q9M{x Pq{-?[W:$l`dd#+֥.&9`'+׉V&IW/UzVisa$H8K$amc9_XT[7 Ɍg}WVzVj4i<@;9zJ>fs#5Zs eg,2y^2} |b67Wo֠^.u,V\IdH }90xa$<-#`| |&@ sjen/e)ơBj_ۋYW*ΎM˞*-Vxo# C7{IJyOY "S('{=͜QXvc** xӯW@LOLR %V6Ő_S!2mP|pBH9?Q/D+涟 E\db$y)*#_|Jya3[2{}UP6 ֪|k,v[1]$c*#-{1֭"2ź}Tn}6=Nf]CČ`UncyHїYZ[Qcq|Ud74 &q<|[dwD/yc8`0Ԅ\ncUVXvqR2dlR:Ƒ09Sqs QԖ^^.#Mؼȸ S5Kb(r)d_>+ƥ׈6\3 }qfzTH#'D$r26ܠk6YJB hg H=Fp!*HLnk0y+ǥGj!Bn ]gp?eI 56+iRNW<vA,s`zYcY9fp wq`OKd8`",o=X=w"3[s[m,FP<><_I .rQG" 3Iu &g3\x-Xӗd$g?j'#y@`X3x>G|򙴽EhNa CEa#$%9eZ W@Nb ہ6]F'8P==?֨е'Mv| Y‚zUY<4g|{w8#+9rm$ 9ecYnc?\OfrA~IwKH˭m1jZ,Zsq$V̹ܧǶ+gn+w1c>vrr`uWG4&/@3_C(Ch"-U8f+9V8W|[<6}Rt+m+M  (=v-l r_ZZݧi$Ka`rA`Gs5LM;P̰msf bT}+k [x Cp7c;|@ d܆~|DMms As,}~Y*2Lœ ,1ߞaE8 NCIs@q H=8z~U?Es[ܟR$S+;W:l{ˉ1$ ^|CGIP ޵{- cwsUHK(G8P}E vI@Bn{sR!+<ȑo~jۛGYv{V,wbL.U`_.8m~uGxKMҽn=X#5Hl bdzBǔS ,A=`3\5l]Ay~pտux"X[I'RN\RȐOo*l%[jŎKq}5úVԦAh՝WJG{U=LVP؏/CE-r|)ߓ'5ci0ȾFpQE'O=U`1V#u9v)d\HO >fXL{InQA/JqVb%u2$#銰ԼMcqc-^ۀcYW jzƛkmw.2NxlʆUxuX6PI=}2@\wmJz͡lICʀS ~zqAE H':[\f?p'/Ǩ|dhBBŜ?KGi|>9QѣY}?A'$I墭 gϱ?c14q#< ~_βBt;%Q+zv]'c<=_^i -rD =kxK㹿I{FEmQ`樑b\ {/i6&ZY];,[\DgNJMV._-n`YkHǵ6)vӸ1湆?N<&h"gCbKPI#Z俲5(ceq NGy9l(t\'x{~8/{sņ ۰<`s$iFVTB?Rgk,1[\ b̌I\QP`"@.<' >T;& Ix$TTxXێ  F#UK_zd=*.n,ѣ.FI^nLIل|D˃Ԙ" eY٤l+0 .FLZmG &> -N貼)o#o+-}qH;e7Fy[6OkU`8;F\q> bn}U")dB60T^El!J׺\$ZB2T{[UollVFvw[R:pFztF5OL4mwl%{Y.`ļIh=yD$X*:zMPi:ݼVL΃xsmaI-RMH^3F>I|>q5 nA[LrG{~UBlLK:@2b? ~uKGdJ' 7M)2&r[Ku/-rB>ڮ4$*2y pE4:rqp{g5Ѽ;jZZiCcCC\HnHF9Z[_j^T2Vo8``9o!1qkj6xVXw AA TqApZ6<~1+\m^;ke V(@my|;uVin<+[E'GV~w~ r8O#ol5شDjzθ7vceR;w8>MGRf) :=|}JIpCsםO%dxG$,ddohQYks q9 )Ǥ9#[m41 l+5G\OeÂ%)ZWP6=?xm/&U#I<Ͳ&Ysl0t4][ZDI9*Cӓs+[;V{R!0ȹ$tԼA,ځ i!j 7w9L6Ә\FB[#RL5]9UK&ds֭icl`ҮdIccF.[K$i^`9KtLWa\̨Ley i1Ȥ%p1{:goӨYBr=^d.on͎ۗwo;iױ:FGө*e7vP[࠸#U`;1Dky~ yU֮ K`$t{[8e|}}>PA+`;2AHe1J[2r |>4]-3Gw0L^*'Lr9"EFwY Fy8M_ 4xDA{J˥BƛcoIbUyc뫫D8y8Ia}vӝT߶K^}ǣN#+uƤ]¬Г@P[#O˨47EhEWB7I mΙyE;to(;T='Uk,hey$d8lgOڹޡn/-oQlˤ̢0 bqֹS LOm!`ȤR3<}*U2_,OCmIPN%C.@h);"'Vвȯ NQicHd `}T͓fQ5e C/,cI6J9Ni60B@##}ԤU,a c~kF;fز󀧢GO~k‰aϩO}V(w#۵zYC)xºC$Qj>L9J^p$ d3ץvq5}N`R宼hĂmbN cɻ585-:X9dW2vn3A9Iiqf>{%XDg&<_*l/w @1\/W1[܋kuS!6ʰ1#[^#Be[]5ך ?CxZ~rܛ帷kXɲo$M8en;yuH.BO)Iq䜟~("w2yHI1犉m c2YyHF!{9.$YRp]NU g/t\~Xv^K%HdhXJ`@ⴋ h$oi>CK"Nyxp9 ?]Au ,,v1*A;;mߚ7Zvi[MZ9$ci{_~usL$t2ۧUg!MF+iTܙ$qcVWuVGq57GQvoǖ#WlGҮfItNF x"rȔHFOj$K[Im\ ? =>+l]gEt]zkytaR=$CqŐzU?Z}բdRjSưcu SPd ut?|I;cvC^S(b]]nt˛m*{;w} e\r~2j\J&ynH>z>ԝscþ"S.#2,+ʔ#}o5"cn)9VkK {u+XÔoa~֥_iZ- Wᲈ@N%@bGB}}UXƫEl uBg9j75JH$s2Oj ܚօ9< h剄Ă0Ar}?Zԋn]~C4܃!r@%׌q7 uh"8nEƟugW2܀˂a5X a(;}~Nl~o-\kgwu"(b p1^x[Fru ZI,<vOu4+6ܙٮJ$jٮ-V|\zFGZipgh^*$3(srz~}jũg\$2I#櫵=#I6IzZT[I'MijB=3P7W[Ϫb#tufSs ȶW>Rng8jӖ+.[coλ֓mȩ!r?P_Q_,%`YYL<@=jŧukx;> >A2-@3l^Ew4027s{<<[k_jCO$$NsI!#0Iity.V1$glWwrC.mvcb:HG1='V 2n& ʼǐ;pN;sVzvko( 5~{=\Ü|V[[5m>ZHQeg ;\֟=' gd^H<]6=7I +Ȝ*A<,ŋKԵt`khxUΩn/t{WkXܗB?2Go^[;!oܱޱG_Z4^=xXtbDJۙalG|k猴X|K[6{bY rI?5/ KeK@ v^tkhHc@'I{~rxl^dBH$tH[Aaim n*Veba8I_ Q!W|jעvmfTY\n8|7pT<`2>Vogk[f+uF~vV-^3$81Q[)g5ͣ +qYg;py-bH3n5  9jKhTiNe}~8Nk9兜-bXW O玜j4e},2.F1~݁$ZO/o*;ힾZޠ߼Wxr#x([bs"0x#ux;-18b(似9g /}ȭ]ą1GzןҶk{k\2*aSH+ jVX1VvAYO|-e>PnN;;pGJ$ {v!~Vk ڧ\ە cLs^@p@g2ȹ>JI"t!Z$I d``ӋU⾙(zrs5\ń3I$_c珽B7w&`@1<{s s5b=c8X@X]vW'<J+D%KW'3unqqqsV:֑]mqk*n`lD#9kyݻ;s~~9!.|hy<̷1Io۫bt`dը38k"e$ϰ9eHWȏpyr`;T_xw:mt)reIcRA:x~FkbkM.7O8gVm8u:U.`R?PI2u:{TX^[+x`*NTA#%؃$Y7htBQcs\<3Wmu[L5Ҵvq~IӉ3c}pzW;TVne=HOݬ~2Gcf#0iK 4as-ĭĽ=qۋv%:ņL9qse$w.iP5is+M+I] lrjk5텝C$X=@wz'@OlWʖ:KI$hmZ[7ܡX!0_ߠ;^YE5 /<|o#CҢ<ȶw3K[K9[sYq9 x\]#XFaX1m~;=u ]ռZ<#6F%g$Pq]b[` 1R9 yZ eo for the Debian project .\" Generated by docutils manpage writer. . rst2pdf-0.93/doc/manual.txt0000664000175000017500000016044012064143151015464 0ustar ralsinaralsina================== How to use rst2pdf ================== :author: Roberto Alsina :version: 0.93 :revision: $LastChangedRevision: 2626 $ .. header:: .. oddeven:: .. class:: headertable +---+---------------------+----------------+ | |.. class:: centered |.. class:: right| | | | | | |Section ###Section###|Page ###Page### | +---+---------------------+----------------+ .. class:: headertable +---------------+---------------------+---+ | |.. class:: centered | | | | | | |Page ###Page###|Section ###Section###| | +---------------+---------------------+---+ .. contents:: .. section-numbering:: .. raw:: pdf PageBreak oneColumn Introduction ============ This document explains how to use rst2pdf. Here is the very short version:: rst2pdf.py mydocument.txt -o mydocument.pdf That will, as long as mydocument.txt is a valid Restructured Text (ReST) document, produce a file called mydocument.pdf which is a PDF version of your document. Of course, that means you just used default styles and settings. If it looks good enough for you, then you may stop reading this document, because you are done with it. If you are reading this in a PDF, it was generated using those default settings. However, if you want to customize the output, or are just curious to see what can be done, let´s continue. Command line options ==================== .. include:: rst2pdf.txt :start-line: 30 :end-before: EXAMPLES Configuration File ================== Since version 0.8, rst2pdf will read (if it is available) configuration files in ``/etc/rst2pdf.conf`` and ``~/.rst2pdf/config``. The user's file at ``~/.rst2pdf/config`` will have priority over the system's at ``/etc/rst2pdf.conf`` [#]_ .. [#] The ``/etc/rst2pdf.conf`` location makes sense for Linux and linux-like systems. if you are using rst2pdf in other systems, please contact me and tell me where the system-wide config file should be. Here's an example file showing some of the currently available options: .. code-block:: ini :include: config.sample Pipe usage ========== If no input nor output are provided, stdin and stdout will be used respectively You may want to use rst2pdf in a linux pipe as such:: cat readme.txt | rst2pdf | gzip -c > readme.pdf.gz or:: curl http://docutils.sourceforge.net/docs/user/rst/quickstart.txt | rst2pdf > quickstart.pdf If no input argument is provided, stdin will be used:: cat readme.txt | rst2pdf -o readme.pdf If outpufile is set to dash '-', output goes to stdout:: rst2pdf -o - readme.txt > output.pdf Headers and Footers =================== ReST supports headers and footers, using the header and footer directive:: .. header:: This will be at the top of every page. Often, you may want to put a page number there, or a section name.The following magic tokens will be replaced (More may be added as rst2pdf evolves): ###Page### Replaced by the current page number. ###Title### Replaced by the document title ###Section### Replaced by the currect section title ###SectNum### Replaced by the currect section number. **Important:** You must use the sectnum directive for this to work. ###Total### Replaced by the total number of pages in the document. Keep in mind that this is the **real** number of pages, not the displayed number, so if you play with `page counters`_ this number will probably be wrong. Headers and footers are visible by default but they can be disabled by specific `Page Templates`_ for example, cover pages. You can also set headers and footers via `command line options` or the `configuration file`_. If you want to do things like "put the page number on the *out* side of the page, check `The oddeven directive`_ Footnotes ========= Currently rst2pdf doesn't support real footnotes, and converts them to endnotes. There is a real complicated technical reason for this: I can't figure out a clean way to do it right. You can get the same behaviour as with rst2html by specifying --inline-footnotes, and then the footnotes will appear where you put them (in other words, not footnotes, but "in-the-middle-of-text-notes" or just plain notes.) Images ====== Inline ------ You can insert images in the middle of your text like this:: This |biohazard| means you have to run. .. |biohazard| image:: ../rst2pdf/tests/input/images/biohazard.png This |biohazard| means you have to run. .. |biohazard| image:: ../rst2pdf/tests/input/images/biohazard.png This only works correctly with reportlab 2.2 or later. Supported Image Types --------------------- For raster images, rst2pdf supports anything PIL (The Python Imaging Library) supports. The exact list of supported formats varies according to your PIL version and system. For SVG support, you need to install svg2rlg or use the inkscape extension. Some features will not work when using these images.For example, gradients will not display, and text may cause problems depending on font availability. You can also use PDF images, via pdfrw. If you can choose between raster and vectorial images, for non-photographic images, vector files are usually smaller and look better, specially when printed. .. note:: Image URLs Attempting to be more compatible with rst2html, rst2pdf will try to handle images specified as HTTP or FTP URLs by downloading them to a temporary file and including them in the PDF. This is probably not a good idea unless you are **really** sure the image won't go away. Image Size ---------- PDFs are meant to reflect paper. A PDF has a specific size in centimeters or inches. Images usually are measured in pixels, which are meaningless in a PDF. To convert between pixels and inches or centimeters, we use a DPI (dots-per-inch) value. For example, 300 pixels, with a 300DPI, are exactly one inch. 300 pixels at 100DPI are 3 inches. For that reason, to achieve a nice layout of the page, it's usually a good idea to specify the size of your images in those units, or as a percentage of the available width and you can ignore all this DPI nonsense ;-) The rst2pdf default is 300DPI, but you can change it using the --default-dpi option or the default_dpi setting in the config file. Examples of images with specified sizes:: .. image:: home.png :width: 3in .. image:: home.png :width: 80% .. image:: home.png :width: 7cm The valid units you can use are: "em" "ex" "px" "in" "cm" "mm" "pt" "pc" "%" "". * px: Pixels. If you specify the size using this unit, rst2pdf will convert it to inches using the default DPI explained above. * No unit. If you just use a number, it will be considered as pixels. (**IMPORTANT:** this used to default to points. It was changed to be more compatible with rst2html) * em: This is the same as your base style's font size. By default: 10 points. * ex: rst2pdf will use the same broken definition as IE: em/2. In truth this should be the height of the lower-case x character in your base style. * in: Inches (1 inch = 2.54 cm). * cm: centimeters (1cm = 0.39 inches) * mm: millimeters (10mm = 1cm) * pt: 1/72 inch * pc: 1/6 inch * %: percentage of available width in the frame. Setting a percentage as a height does **not** work and probably never will. If you don't specify a size at all, rst2pdf will do its best to figure out what it should do: Since there is no specified size, rst2pdf will try to convert the image's pixel size to inches using the DPI information available in the image itself. You can set that value using most image editors. For example, using Gimp, it's in the Image -> Print Size menu. So, if your image is 6000 pixels wide, and is set to 1200DPI, it will be 5 inches wide. If your image doesn't have a DPI property set, and doesn't have it's desired size specified, rst2pdf will arbitrarily decide it should use 300DPI (or whatever you choose with the --default-dpi option). Styles ====== You can style paragraphs with a style using the class directive:: .. class:: special This paragraph is special. This one is not. Or inline styles using custom interpreted roles:: .. role:: redtext I like color :redtext:`red`. For more information about this, please check the ReST docs. The only special thing about using rst2pdf here is the syntax of the stylesheet. You can make rst2pdf print the default stylesheet:: rst2pdf --print-stylesheet If you want to add styles, just create a stylesheet, (or take the standard stylesheet and modify it) and pass it with the -s option:: rst2pdf mydoc.txt -s mystyles.txt Those styles will always be searched in these places, in order: * What you specify using --stylesheet_path * The option stylesheet_path in the config file * The current folder * ~/.rst2pdf/styles * The styles folder within rst2pdf's installation folder. You can use multiple -s options, or pass more than one stylesheet separated with commas. They are processed in the order you give them so the *last* one has priority. Included StyleSheets -------------------- To make some of the more common adjustments easier, rst2pdf includes a collection of stylesheets you can use: Font styles These stylesheets modfy your font settings. * ``serif`` uses the PDF serif font (Times) instead of the default Sans Serif (Arial) * ``freetype-sans`` uses your system's default TrueType Sans Serif font * ``freetype-serif`` uses your system's default TrueType Serif font * ``twelvepoint`` makes the base font 12pt (default is 10pt) * ``tenpoint`` makes the base font 10pt * ``eightpoint`` makes the base font 8pt * ``kerning`` switches to document to DejaVu Sans font and enables kerning. Page layout styles These stylesheets modify your page layout. * ``twocolumn`` uses the twoColumn layout as the initial page layout. * ``double-sided`` adds a gutter margin (margin at the "in side" of the pages) Page size styles Stylesheets that change the paper size. The usual standard paper sizes are supported: * A0 * A1 * A2 * A3 * A4 (default) * A5 * A6 * B0 * B1 * B2 * B3 * B4 * B5 * B6 * Letter * Legal * 11x17 The name of the stylesheet is lowercase. Code block styles See `Syntax Highlighting`_ So, if you want to have a two-column, legal size, serif document with code in murphy style:: rst2pdf mydoc.txt -s twocolumn,serif,murphy,legal StyleSheet Syntax ----------------- It´s a JSON file with several elements in it. Font Alias ---------- This is the fontsAlias element. By default, it uses some of the standard PDF fonts:: "fontsAlias" : { "stdFont": "Helvetica", "stdBold": "Helvetica-Bold", "stdItalic": "Helvetica-Oblique", "stdBoldItalic": "Helvetica-BoldOblique", "stdMono": "Courier" }, This defines the fonts used in the styles. You can use, for example, Helvetica directly in a style, but if later you want to use another font all through your document, you will haveto change it in each style. So, I suggest you use aliases. The standard PDF fonts are these: Times_Roman Times-Bold Times-Italic Times-Bold-Italic Helvetica Helvetica_Bold Helvetica-Oblique Helvetica-Bold-Oblique Courier Courier-Bold Courier-Oblique Courier-Bold-Oblique Symbol Zapf-Dingbats Style Definition ---------------- Then you have a 'styles' which is a list of [ stylename, styleproperties ]. For example:: ["normal" , { "parent": "base" }], This means that the style called "normal" inherits style "base". So, each property not defined in the normal style will be taken from the base style. I suggest you do not remove any style from the default stylesheet. Add or modify at will, though. If your document requires a style that is not defined in your stylesheet, it will print a warning and use bodytext instead. Also, the order of the styles is important: if styleA is the parent of styleB, styleA should be earlier in the stylesheet. These are all the possible attributes for a style and their default values. Some of them, like alignment, apply only when used to paragraphs, and not on inline styles:: "fontName":"Helvetica", "fontSize":10, "leading":12, "leftIndent":0, "rightIndent":0, "firstLineIndent":0, "alignment":"left", "spaceBefore":0, "spaceAfter":0, "bulletFontName":"Helvetica", "bulletFontSize":10, "bulletText": "\u2022", "bulletIndent":0, "textColor": black, "backColor":None, "wordWrap":None, "borderWidth": 0, "borderPadding": 0, "borderColor": None, "borderRadius": None, "allowWidows": 5, "allowOrphans": 4 The following are the only attributes that work on styles when used for interpreted roles (inline styles): * fontName * fontSize * textColor * backColor (if your reportlab is version 2.3 or newer) Widows and Orphans ------------------ Widow A paragraph-ending line that falls at the beginning of the following page/column, thus separated from the remainder of the text. Orphan A paragraph-opening line that appears by itself at the bottom of a page/column. Rst2pdf has *some* widow/orphan control. Specifically, here's what's currently implemented: On ordinary paragraphs, allowWidows ans allowOrphans is passed to reportlab, which is supposed to do something about it if they are non-zero. In practice, it doesn't seem to have much effect. The plan is to change the semantics of those settings, so that they mean the minimum number of lines that can be left alone at the beginning of a page (widows) or at the end (orphans). Currently, these semantics only work for literal blocks and code blocks. .. code-block:: rst A literal block:: This is a literal block. A code block: .. code-block:: python def x(y): print y**2 In future versions this may extend to ordinary paragraphs. Font Embedding -------------- There are thousands of excelent free True Type and Type 1 fonts available on the web, and you can use many of them in your documents by declaring them in your stylesheet. The Easy Way ~~~~~~~~~~~~ Just use the font name in your style. For example, you can define this:: ["normal" , { "fontName" : "fonty" }] And then it *may* work. What would need to happen for this to work? Fonty is a True Type font: """""""""""""""""""""""""" 1. You need to have it installed in your system, and have the fc-match utility available (it's part of fontconfig_). You can test if it is so by running this command:: $ fc-match fonty fonty.ttf: "Fonty" "Normal" If you are in Windows, I need your help ;-) or you can use `The Harder Way (True Type)`_ 2. The folder where fonty.ttf is located needs to be in your font path. You can set it using the --font-path option. For example:: rst2pdf mydoc.txt -s mystyle.style --font-path /usr/share/fonts You don't need to put the *exact* folder, just something that is above it. In my own case, fonty is in /usr/share/fonts/TTF Whenever a font is embedded, you can refer to it in a style by its name, and to its variants by the aliases Name-Oblique, Name-Bold, Name-BoldOblique. Fonty is a Type 1 font: """"""""""""""""""""""" You need it installed, and the folders where its font metric (.afm) and binary (.pfb) files are located need to be in your font fath. For example, the "URW Palladio L" font that came with my installation of TeX consists of the following files:: /usr/share/texmf-dist/fonts/type1/urw/palatino/uplb8a.pfb /usr/share/texmf-dist/fonts/type1/urw/palatino/uplbi8a.pfb /usr/share/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb /usr/share/texmf-dist/fonts/type1/urw/palatino/uplri8a.pfb /usr/share/texmf-dist/fonts/afm/urw/palatino/uplb8a.afm /usr/share/texmf-dist/fonts/afm/urw/palatino/uplbi8a.afm /usr/share/texmf-dist/fonts/afm/urw/palatino/uplr8a.afm /usr/share/texmf-dist/fonts/afm/urw/palatino/uplri8a.afm So, I can use it if I put ``/usr/share/texmf-dist/fonts`` in my font path:: rst2pdf mydoc.txt -s mystyle.style --font-path /usr/share/texmf-dist/fonts And putting this in my stylesheet, for example:: [ "title", { "fontName" : "URWPalladioL-Bold" } ] There are some standard aliases defined so you can use other names:: 'ITC Bookman' : 'URW Bookman L', 'ITC Avant Garde Gothic' : 'URW Gothic L', 'Palatino' : 'URW Palladio L', 'New Century Schoolbook' : 'Century Schoolbook L', 'ITC Zapf Chancery' : 'URW Chancery L' So, for example, you can use ``Palatino`` or ``New Century SchoolBook-Oblique`` And it will mean ``URWPalladioL`` or ``CenturySchL-Ital``, respectively. Whenever a font is embedded, you can refer to it in a style by its name, and to its variants by the aliases Name-Oblique, Name-Bold, Name-BoldOblique. The Harder Way (True Type) ~~~~~~~~~~~~~~~~~~~~~~~~~~ The stylesheet has an element is "embeddedFonts" that handles embedding True Type fonts in your PDF. Usually, it's empty, because with the default styles you are not using any font beyond the standard PDF fonts:: "embeddedFonts" : [ ], You can put there the name of the font, and rst2pdf will try to embed it as described above. Example:: "embeddedFonts" : [ "Tuffy" ], Or you can be explicit and tell rst2pdf the files that contain each variant of the font. Suppose you want to use the nice public domain `Tuffy font`_, then you need to give the filenames of all variants:: "embeddedFonts" : [ ["Tuffy.ttf","Tuffy_Bold.ttf","Tuffy_Italic.ttf","Tuffy_Bold_Italic.ttf"] ], This will provide your styles with fonts called "Tuffy" "Tuffy_Bold" and so on. They will be available with the names based on the filenames (Tuffy_Bold) and also by standard aliases similar to those of the standard PDF fonts (Tuffy-Bold/Tuffy-Oblique/Tuffy-BoldOblique). Now, if you use *italics* in a paragraph whose style uses the Tuffy font, it will use Tuffy_Italic. That's why it's better if you use fonts that provide the four variants, and you should put them in **that** order. If your font lacks a variant, use the "normal" variant instead. For example, if you only had Tuffy.ttf:: "embeddedFonts" : [ ["Tuffy.ttf","Tuffy.ttf","Tuffy.ttf","Tuffy.ttf"] ], However, that means that italics and bold in styles using Tuffy will not work correctly (they will display as regular text). If you want to use this as the base font for your document, you should change the fontsAlias section accordingly. For example:: "fontsAlias" : { "stdFont": "Tuffy", "stdBold": "Tuffy_Bold", "stdItalic": "Tuffy_Italic", "stdBoldItalic": "Tuffy_Bold_Italic", "stdMono": "Courier" }, If, on the other hand, you only want a specific style to use the Tuffy font, don't change the fontAlias, and set the fontName properties for that style. For example:: ["heading1" , { "parent": "normal", "fontName": "Tuffy_Bold", "fontSize": 18, "keepWithNext": true, "spaceAfter": 6 }], .. _tuffy font: http://tulrich.com/fonts/ By default, rst2pdf will search for the fonts in its fonts folder and in the current folder. You can make it search another folder by passing the --font-folder option, or you can use absolute paths in your stylesheet. The Harder Way (Type1) ~~~~~~~~~~~~~~~~~~~~~~ To be written (and implemented and tested) Page Size and Margins --------------------- In your stylesheet, the pageSetup element controls your page layout. Here's the default stylesheet's:: "pageSetup" : { "size": "A4", "width": null, "height": null, "margin-top": "2cm", "margin-bottom": "2cm", "margin-left": "2cm", "margin-right": "2cm", "spacing-header": "5mm", "spacing-footer": "5mm", "margin-gutter": "0cm" }, Size is one of the standard paper sizes, like A4 or LETTER. Here's a list: A0, A1, A2, A3, A4, A5, A6, B0, B1, B2, B3, B4, B5, B6, LETTER, LEGAL, ELEVENSEVENTEEN. If you want a non-standard size, set size to null and use width and height. When specifying width, height or margins, you need to use units, like inch (inches) or cm (centimeters). When both width/height and size are specified, size will be used, and width/height ignored. All margins should be self-explanatory, except for margin-gutter. That's the margin in the center of a two-page spread. This value is added to the left margin of odd pages and the right margin of even pages, adding (or removing, if it's negative) space "in the middle" of opposingpages. If you intend to bound a printed copy, you may need extra space there. OTOH, if you will display it on-screen on a two-page format (common in many PDF readers, nice for ebooks), a negative value may be pleasant. Advanced: table styles ---------------------- This is new in 0.12. These are a few extra options in styles that are only used when the style is applied to a table. This happens in two cases: 1) You are using the class directive on a table: .. code-block:: rest .. class:: thick +-------+---------+ | A | B | +-----------------+ 2) It's a style that automatically applies to something that is *drawn* using a table. Currently these include: * Footnotes / endnotes (endnote style) * Lists (item_list, bullet_list option_list and field_list styles) The options are as follows: Commands For a full reference of these, please check the Reportlab User Guide specifically the TableStyle Commands section (section 7.4 in the manual for version 2.3) Here, however, is a list of the possible commands:: BOX (or OUTLINE) FONT FONTNAME (or FACE) FONTSIZE (or SIZE) GRID INNERGRID LEADING LINEBELOW LINEABOVE LINEBEFORE LINEAFTER TEXTCOLOR ALIGNMENT (or ALIGN) LEFTPADDING RIGHTPADDING BOTTOMPADDING TOPPADDING BACKGROUND ROWBACKGROUNDS COLBACKGROUNDS VALIGN Each takes as argument a couple of coordinates, where (0,0) is top-left, and (-1,-1) is bottom-right, and 0 or more extra arguments. For example, INNERGRID takes a linewidth and a color:: [ "INNERGRID", [ 0, 0 ], [ -1, -1 ], 0.25, "black" ], That would mean "draw all lines inside the table with .25pt black" colWidths A list of the column widths you want, in the unit you prefer (default unit is pt). Example:: "colWidths": ["3cm",null] If your colWidths has fewer values than columns in your table, the rest are autocalculated. A column width of null means "guess". If you don't specify column widths, the table will try to look proportional to the restructured text source. Multiple Stylesheets -------------------- When you use a custom stylesheet, you don't need to define *everything* in it. Whatever you don't define will be taken from the default stylesheet. For example, if you only want to change page size, default font and font size, this would be enough: .. code-block:: js { "pageSetup" : { "size": "A5", }, "fontsAlias" : { "stdFont": "Times-Roman", }, "styles" : [ ["normal" , { "fontSize": 14 }] ] } .. Note:: The ``command`` option used for table styles is not kept across stylesheets. For example, the default stylesheet defines endnote with this command list:: "commands": [ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ] ] If you redefine endnote in another stylesheet and use this to create a vertical line between the endnote's columns:: "commands": [ [ "LINEAFTER", [ 0, 0 ], [ 1, -1 ], .25, "black" ] ] Then the footnotes will **not** have VALIGN TOP! To do that, you **MUST** use all commands in your stylesheet:: "commands": [ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ], [ "LINEAFTER", [ 0, 0 ], [ 1, -1 ], .25, "black" ] ] .. raw:: pdf PageBreak Styling Your Document --------------------- Which styles you need to modify to achieve your desired result is not obvious. In this section, you will see some hints and pointers to that effect. The Base Styles ~~~~~~~~~~~~~~~ There are three styles which have great effect, they are ``base``, ``normal`` and ``bodytext``. Here's an example, the twelvepoint stylesheet:: {"styles": [["base", {"fontSize": 12}]]} Since all other styles inherit ``base``, changing the fontSize changes the fontSize for everything in your document. The ``normal`` style is meant for most elements, so usually it's the same as changing ``base``. The ``bodytext`` style is for elements that form paragraphs. So, for example, you can set your document to be left-aligned like this:: {"styles": [["bodytext", {"alignment": "left"}]]} There are elements, however, that don't inherit from bodytext, for example headings and the styles used in the table of contents. Those are elements that are not real paragraphs, so they should not follow the indentation and spacing you use for your document's main content. The ``heading`` style is inherited by all sorts of titles: section titles, topic titles, admonition titles, etc. Lists ~~~~~ Styling lists is mostly a matter of spacing and indentation. The space before and after a list is taken from the ``item_list`` and ``bullet_list`` styles:: ["item_list", { "parent": "bodytext", "spaceBefore": 0, "commands": [ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ], [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ] ], "colWidths": ["20pt",null] }] ["bullet_list", { "parent": "bodytext", "spaceBefore": 0, "commands": [ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ], [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ] ], "colWidths": ["20",null] }], Yes, these are table styles, because they are implemented as tables. The RIGHTPADDING command and the colWidths option can be used to adjust the position of the bullet/item number. To control the separation between items, you use the item_list_item and ``bullet_list_item`` styles' spaceBefore and spaceAfter options, for example:: ["bullet_list_item" , { "parent": "bodytext", "spaceBefore": 20 }] Remember that this is only used **between items** and not before the first or after the last items. Syntax Highlighting =================== Rst2pdf adds a non-standard directive, called code-block, which produces syntax highlighted for many languages using Pygments_. For example, if you want to include a python fragment:: .. code-block:: python def myFun(x,y): print x+y .. code-block:: python def myFun(x,y): print x+y Notice that you need to declare the language of the fragment. Here's a list of the currently supported_. You can use the ``linenos`` option to display line numbers: .. code-block:: python :linenos: def myFun(x,y): print x+y Rst2pdf includes several stylesheets for highlighting code: * autumn * borland * bw * colorful * emacs * friendly * fruity * manni * murphy * native * pastie * perldoc * trac * vs You can use any of them instead of the default by adding, for example, a ``-s murphy`` to the command line. If you already are using a custom stylesheet, use both:: rst2pdf mydoc.rst -o mydoc.pdf -s mystyle.json,murphy The default is the same as "emacs". There is an online demo of pygments showing these styles: http://pygments.org/demo/1817/ The overal look of a code box is controlled by the "code" style or by a class you apply to it using the ``.. class::`` directive. Aditionally, if you want to change some properties when using different languages, you can define styles with the name of the language. For example, a ``python`` style will be applied to code blocks created with ``.. code-block:: python``. The look of the line numbers is controlled by the "linenumbers" style. As rst2pdf is written in python let's see some examples and variations around python. Python in console .. code-block:: pycon >>> my_string="python is great" >>> my_string.find('great') 10 >>> my_string.startswith('py') True Python traceback .. code-block:: pytb Traceback (most recent call last): File "error.py", line 9, in ? main() File "error.py", line 6, in main print call_error() File "error.py", line 2, in call_error r = 1/0 ZeroDivisionError: integer division or modulo by zero Exit 1 The code-block directive supports many options, that mirror pygments':: FIXME: fix this to really explain them all. This is a placeholder. 'stripnl' : string_bool, 'stripall': string_bool, 'ensurenl': string_bool, 'tabsize' : directives.positive_int, 'encoding': directives.encoding, # Lua 'func_name_hightlighting':string_bool, 'disabled_modules': string_list, # Python Console 'python3': string_bool, # Delphi 'turbopascal':string_bool, 'delphi' :string_bool, 'freepascal': string_bool, 'units': string_list, # Modula2 'pim' : string_bool, 'iso' : string_bool, 'objm2' : string_bool, 'gm2ext': string_bool, # CSharp 'unicodelevel' : csharp_unicodelevel, # Literate haskell 'litstyle' : lhs_litstyle, # Raw 'compress': raw_compress, # Rst 'handlecodeblocks': string_bool, # Php 'startinline': string_bool, 'funcnamehighlighting': string_bool, 'disabledmodules': string_list, You can find more information about them in the pygments manual. File inclusion -------------- Also, you can use the code-block directive with an external file, using the :include: option:: .. code-block:: python :include: setup.py This will give a warning if setup.py doesn't exist or can't be opened. Include with Boundaries ~~~~~~~~~~~~~~~~~~~~~~~ you can add selectors to limit the inclusion to a portion of the file. the options are: :start-at: string will include file beginning at the first occurence of string, string **included** :start-after: string will include file beginning at the first occurence of string, string **excluded** :end-before: string will include file up to the first occurence of string, string **excluded** :end-at: string will include file up to the first occurence of string, string **included** Let's display a class from rst2pdf:: .. code-block:: python :include: ../rst2pdf/flowables.py :start-at: class Separation(Flowable): :end-before: class Reference(Flowable): this command gives .. code-block:: python :include: ../rst2pdf/flowables.py :start-at: class Separation(Flowable): :end-before: class Reference(Flowable): .. _supported: http://pygments.org/docs/lexers/ .. _pygments: http://pygments.org/ Options ~~~~~~~ linenos Display line numbers along the code linenos_offset If you include a file and are skipping the beginning, using the linenos_offset makes the line count start from the real line number, instead of 1. Raw Directive ============= Raw PDF ------- Rst2pdf has a very limited mechanism to pass commands to reportlab, the PDF generation library. You can use the raw directive to insert pagebreaks and spacers (other reportlab flowables may be added if there's interest), and set page transitions. The syntax is shell-like, here's an example:: One page .. raw:: pdf PageBreak Another page. Now some space: .. raw:: pdf Spacer 0,200 Spacer 0 200 And another paragraph. The unit used by the spacer by default is points, and using a space or a comma is the same thing in all cases. Page Counters ------------- In some documents, you may not want your page counter to start in the first page. For example, if the first pages are a coverpage and a table of contents, you want page 1 to be where your first section starts. To do that, you have to use the SetPageCounter command. Here is a syntax example:: .. raw:: pdf SetPageCounter 0 lowerroman This sets the counter to 0, and makes it display in lower roman characters (i, ii, iii, etc) which is a style often used for the pages before the document proper (for example, TOCs and abstracts). It can take zero or two arguments. SetPageCounter When used with no arguments, it sets the counter to 0, and the style to arabic numerals. SetPageCounter number style When used with two arguments, the first argument must be a number, it sets the page counter to that number. The second number is a style of counter. Valid values are: * lowerroman: i, ii, iii, iv, v ... * roman: I, II, III, IV, V ... * arabic: 1, 2, 3, 4, 5 ... * loweralpha: a, b, c, d, e ... [Don't use for numbers above 26] * alpha: A, B, C, D, E ... [Don't use for numbers above 26] .. note:: Page counter changes take effect on the **current** page. Page Breaks ----------- There are three kinds of page breaks: PageBreak Break to the next page EvenPageBreak Break to the next **even** numbered page OddPageBreak Break to the next **odd** numbered page Each of them can take an additional number which is the name of the next page template. For example:: PageBreak twoColumn Frame Breaks ------------ If you want to jump to the next frame in the page (or the next page if the current frame is the last), you can use the FrameBreak command. It takes an optional height in points, and then it only breaks the frame if there is less than that vertical space available. For example, if you don't want a paragraph to begin if it's less than 50 points from the bottom of the frame:: .. raw:: pdf FrameBreak 50 This paragraph is so important that I don't want it at the very bottom of the page... Page Transitions ---------------- Page transitions are effects used when you change pages in *Presentation* or *Full Screen* mode (depends on the viewer). You can use it when creating a presentation using PDF files. The syntax is this:: .. raw:: pdf Transition effect duration [optional arguments] The optional arguments are: direction: Can be 0,90,180 or 270 (top,right,bottom,left) dimension: Can be H or V motion: Can be I or O (Inside or Outside) The effects with their arguments are: * Split duration direction motion * Blinds duration dimension * Box duration motion * Wipe duration direction * Dissolve duration * Glitter duration direction For example:: .. raw:: pdf Transition Glitter 3 90 Uses the Glitter effect, for 3 seconds, at direction 90 degress (from the right?) Keep in mind that Transition sets the transition *from this page to the next* so the natural thing is to use it before a PageBreak:: .. raw:: pdf Transition Dissolve 1 PageBreak Raw HTML -------- If you have a document that contais raw HTML, andhave xhtml2pdf installed, rst2pdf will try to render that HTML inside your documet. To enable this, use the --raw-html command line option. The counter role ================ This is a nonstandard interpreted text role, which means it will only work with rst2pdf. It implements an unlimited number of counters you can use in your text. For example, you could use it to have numbered figures, or numbered tables. The syntax is this: .. code-block:: rst Start a counter called seq1 that starts from 1: :counter:`seq1` Now this should print 2: :counter:`seq1` You can start counters from any number (this prints 12): :counter:`seq2:12` And have any number of counters with any name: :counter:`figures` So ``#seq1-2`` should link to `the number 2 above <#seq1-2>`_ The output is: Start a counter called seq1 that starts from 1: :counter:`seq1` Now this should print 2: :counter:`seq1` You can start counters from any number (this prints 12): :counter:`seq2:12` And have any number of counters with any name: :counter:`figures` Also, the counters create targets for links with this scheme: #countername-number. So ``#seq1-2`` should link to `the number 2 above <#seq1-2>`_ The oddeven directive ===================== This is a nonstandard directive, which means it will only work with rst2pdf, and not with rst2html or any other docutils tool. The contents of oddeven should consist of **exactly** two things (in this case, two paragraphs). The first will be used on odd pages, and the second one on even pages. If you want to use more complex content, you should wrap it with containers, like in this example: .. code-block:: rst .. oddeven:: .. container:: This will appear on odd pages. Both paragraphs in the container are for odd pages. This will appear on even pages. It's a single paragraph, so no need for containers. This directive has several limitations. * I intentionally have disabled splitting into pages for this, because I have no idea how that could make sense. That means that if its content is larger than a frame, you **will** make rst2pdf barf with one of those ugly errors. * It will reserve the space of the larger of the two sets of contents. So if one is small and the other large, it **will** look wrong. I may be able to fix this though. * If you try to generate HTML (or anything other than a PDF via rst2pdf) from a file containing this, it will not do what you want. Mathematics =========== If you have Matplotlib_ installed, rst2pdf supports a math role and a math directive. You can use them to insert formulae and mathematical notation in your documents using a subset of LaTeX syntax, but doesn't require you have LaTeX installed. For example, here's how you use the math directive:: .. math:: \frac{2 \pm \sqrt{7}}{3} And here's the result: .. math:: \frac{2 \pm \sqrt{7}}{3} If you want to insert mathematical notation in your text like this: :math:`\pi` that is the job of the math *role*:: This is :math:`\pi` Produces: This is :math:`\pi` Currently, the math role is slightly buggy, and in some cases will produce misaligned and generally broken output. Also, while the math directive embeds fonts and draws your formula as text, the math role embeds an image. That means: * You can't copy the text of inline math * Inline math will look worse when printed, or make your file larger. So, use it only in emergencies ;-) You can also use an inline substitution of the math directive for things you use often, which is the same as using the math role:: This is the square of x: |xsq| .. |xsq| math:: x^2 This is the square of x: |xsq| .. |xsq| math:: x^2 You don't need to worry about fonts, the correct math fonts will be used and embedded in your PDF automatically (they are included with matplotlib). .. _matplotlib: http://matplotlib.sf.net For an introduction to LaTeX syntax, see the "Typesetting Mathematical Formulae" chapter in "The Not So Short Introduction to LaTeX 2e": http://www.tex.ac.uk/tex-archive/info/lshort/english/lshort.pdf Basically, the inline form ``$a^2$`` is similar to the math role, and the display form is similar to the math directive. Rst2pdf doesn't support numbering equations yet. The math directive supports the following options: ``:fontsize:`` Sets the font size used in the math directive. By default it will use the paragraph's font and size. ``:color:`` Can change the color of the math directive's output. Can take either a color by name like ``red`` or a hex code like ``#4c050f`` Hyphenation =========== If you want good looking documents, you want to enable hyphenation. To do it, you need to install Wordaxe [#]_. .. [#] You can get Wordaxe from http://deco-cow.sf.net. Version 1.0.0 or later is recommended. If after installing it you get the letter "s" or a black square instead of a hyphen, that means you need to replace the rl_codecs.py file from reportlab with the one from wordaxe. For more information, see `this issue`_ in rst2pdf's bug tracker. .. _this issue: http://code.google.com/p/rst2pdf/issues/detail?id=5 Also, you may need to set hyphenation to true in one or more styles, and the language for hyphenation via the command line or paragraph styles. For english, this should be enough:: ["bodytext" , { "alignment": "justify", "hyphenation": true }], If you are not an english speaker, you need to change the language using the -l or --language option. Since Wordaxe version 0.2.6, it can use the PyHyphen library if it's available. PyHyphen can use any OpenOffice dictionary, and can even download them automatically. [#]_ .. [#] For more information, please check the PyHyphen website at http://pyhyphen.googlecode.com For example, this will enable german hyphenation globally: rst2pdf -l de_DE mydocument.txt If you are creating a multilingual document, you can declare styles with specific languages. For example, you could inherit bodytext for spanish:: ["bodytext_es" , { "parent": "bodytext", "alignment": "justify", "hyphenation": true, "language": "es_ES" }], And all paragraps declared of bodytext_es style would have spanish hyphenation:: .. class:: bodytext_es Debo a la conjunción de un espejo y de una enciclopedia el descubrimiento de Uqbar. El espejo inquietaba el fondo de un corredor en una quinta de la calle Gaona, en Ramos Mejía; la enciclopedia falazmente se llama *The Anglo-American Cyclopaedía* (New York, 1917) y es una reimpresión literal, pero también morosa, de la *Encyclopaedia Britannica* de 1902. Here is the result (made thinner to force hyphenation): .. class:: thin Debo a la conjunción de un espejo y de una enciclopedia el descubrimiento de Uqbar. El espejo inquietaba el fondo de un corredor en una quinta de la calle Gaona, en Ramos Mejía; la enciclopedia falazmente se llama *The Anglo-American Cyclopaedía* (New York, 1917) y es una reimpresión literal, pero también morosa, de la *Encyclopaedia Britannica* de 1902. BTW: That's the beginning of "Tlön, Uqbar, Orbis Tertius", read it, it's cool. If you explicitly configure a language in a paragraph style and also pass a language in the command line, the style has priority, so remember: .. important:: If you configure the bodytext style to have a language, your document is supposed to be in that language, regardless of what the command line says. If this is too confusing, let me know, I will try to figure out a simpler way. Page Layout =========== By default, your document will have a single column of text covering the space between the margins. You can change that, though, in fact you can do so even in the middle of your document! .. _page templates: To do it, you need to define *Page Templates* in your stylesheet. The default stylesheet already has 3 of them:: "pageTemplates" : { "coverPage": { "frames": [ ["0cm", "0cm", "100%", "100%"] ], "showHeader" : false, "showFooter" : false }, "oneColumn": { "frames": [ ["0cm", "0cm", "100%", "100%"] ] }, "twoColumn": { "frames": [ ["0cm", "0cm", "49%", "100%"], ["51%", "0cm", "49%", "100%"] ] } } A page template has a name (oneColumn, twoColumn), some options, and a list of frames. A frame is a list containing this:: [ left position, bottom position, width, height ] For example, this defines a frame "at the very left", "at the very bottom", "a bit less than half a page wide" and "as tall as possible":: ["0cm", "0cm", "49%", "100%"] And this means "the top third of the page":: ["0cm", "66.66%", "100%", "33.34%"] You can use all the usual units, cm, mm, inch, and % which means "percentage of the page (excluding margins and headers or footers)". Using % is probably the smartest for columns and gives you a fluid layout, while the other units are better for more "fixed" elements. Since we can have more than one template, there is a way to specify which one we want to use, and a way to change from one to another. To specify the first template, do it in your stylesheet, in pageSetup (oneColumn is the default):: "pageSetup" : { "firstTemplate": "oneColumn" } Then, to change to another template, in your document use this syntax (will change soon, though): .. code-block:: rst .. raw:: pdf PageBreak twoColumn That will trigger a page break, and the new page will use the twoColumn template. You can see an example of this in the *Montecristo* folder in the source package. The supported page template options and their defaults are: * showHeader : True * defaultHeader : None Has the same effect as the header directive in the document. * showFooter : True * defaultFooter : None Has the same effect as the footer directive in the document. * background: None The background should be an image, which will be centered in your page or stretched to match your page size, depending on the ``--fit-background-mode`` option, so use with caution. .. _fontconfig: http://www.freedesktop.org/fontconfig/ Smart Quotes ============ Quoted from the smartypants_ documentation: This feature can perform the following transformations: Straight quotes ( " and ' ) into "curly" quote HTML entities Backticks-style quotes (\`\`like this'') into "curly" quote HTML entities Dashes (-- and ---) into en- and em-dash entities Three consecutive dots (... or . . .) into an ellipsis entity This means you can write, edit, and save your posts using plain old ASCII straight quotes, plain dashes, and plain dots, but your published posts (and final PDF output) will appear with smart quotes, em-dashes, and proper ellipses. You can enable this by passing the ``--smart-quotes`` option in the command line. By default, it's disabled. Here are the different values you can use (again, from the smartypants docs): 0 Suppress all transformations. (Do nothing.) 1 Performs default SmartyPants transformations: quotes (including \`\`backticks'' -style), em-dashes, and ellipses. "--" (dash dash) is used to signify an em-dash; there is no support for en-dashes. 2 Same as smarty_pants="1", except that it uses the old-school typewriter shorthand for dashes: "--" (dash dash) for en-dashes, "---" (dash dash dash) for em-dashes. 3 Same as smarty_pants="2", but inverts the shorthand for dashes: "--" (dash dash) for em-dashes, and "---" (dash dash dash) for en-dashes. Currently, even if you enable it, this transformation will only take place in regular paragraphs, titles, headers, footers and block quotes. .. _smartypants: http://web.chad.org/projects/smartypants.py/ Kerning ======= Kerning is the process of adjusting letter spacing. It is usually accepted that kerning makes your text look better. For example, if you are using proper kerning, the As and Ws in AWAWA will overlap slightly. If you want kerning in your PDFs, you need to do the following: * Use wordaxe at least 1.0.0 * Use a TrueType font * Set kerning to true in your style. For example, if you want **all** text to be kerned, you can set it in the "base" style. For convenience, a stylesheet that uses DejaVu fonts with kerning is provided as kerning.json, so you can copy and adapt to your needs, or just use it with the ``-s`` option. Sphinx ====== Sphinx_ is a very popular tool. This is the description from its website: Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created to translate the new Python documentation, and it has excellent support for the documentation of Python projects, but other documents can be written with it too. Rst2pdf includes an experimental PDF extension for sphinx. To use it in your existing sphinx project you need to do the following: 1. Add rst2pdf.pdfbuilder in your conf.py's extensions. For example:: extensions = ['sphinx.ext.autodoc','rst2pdf.pdfbuilder'] 2. Add the PDF options at the end of conf.py, adapted to your project:: # -- Options for PDF output -------------------------------------------------- # Grouping the document tree into PDF files. List of tuples # (source start file, target name, title, author, options). # # If there is more than one author, separate them with \\. # For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor' # # The options element is a dictionary that lets you override # this config per-document. # For example, # ('index', u'MyProject', u'My Project', u'Author Name', # dict(pdf_compressed = True)) # would mean that specific document would be compressed # regardless of the global pdf_compressed setting. pdf_documents = [ ('index', u'MyProject', u'My Project', u'Author Name'), ] # A comma-separated list of custom stylesheets. Example: pdf_stylesheets = ['sphinx','kerning','a4'] # A list of folders to search for stylesheets. Example: pdf_style_path = ['.', '_styles'] # Create a compressed PDF # Use True/False or 1/0 # Example: compressed=True #pdf_compressed = False # A colon-separated list of folders to search for fonts. Example: # pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/'] # Language to be used for hyphenation support #pdf_language = "en_US" # Mode for literal blocks wider than the frame. Can be # overflow, shrink or truncate #pdf_fit_mode = "shrink" # Section level that forces a break page. # For example: 1 means top-level sections start in a new page # 0 means disabled #pdf_break_level = 0 # When a section starts in a new page, force it to be 'even', 'odd', # or just use 'any' #pdf_breakside = 'any' # Insert footnotes where they are defined instead of # at the end. #pdf_inline_footnotes = True # verbosity level. 0 1 or 2 #pdf_verbosity = 0 # If false, no index is generated. #pdf_use_index = True # If false, no modindex is generated. #pdf_use_modindex = True # If false, no coverpage is generated. #pdf_use_coverpage = True # Name of the cover page template to use #pdf_cover_template = 'sphinxcover.tmpl' # Documents to append as an appendix to all manuals. #pdf_appendices = [] # Enable experimental feature to split table cells. Use it # if you get "DelayedTable too big" errors #pdf_splittables = False # Set the default DPI for images #pdf_default_dpi = 72 # Enable rst2pdf extension modules (default is only vectorpdf) # you need vectorpdf if you want to use sphinx's graphviz support #pdf_extensions = ['vectorpdf'] # Page template name for "regular" pages #pdf_page_template = 'cutePage' # Show Table Of Contents at the beginning? #pdf_use_toc = True # How many levels deep should the table of contents be? pdf_toc_depth = 9999 # Add section number to section references pdf_use_numbered_links = False # Background images fitting mode pdf_fit_background_mode = 'scale' 3. (Maybe) add this in your Makefile (on unix-like systems): .. code-block:: makefile pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf." 4. (Maybe) add this to your make.bat (on windows): .. code-block:: bat if "%1" == "pdf" ( %SPHINXBUILD% -b pdf %ALLSPHINXOPTS% %BUILDDIR%/pdf echo. echo.Build finished. The PDF files are in %BUILDDIR%/pdf goto end ) Then you can run ``make pdf`` or ``sphinx-build -b pdf ...`` similar to how you did it before. .. _sphinx: http://sphinx.pocoo.org Extensions ========== Rst2pdf can get new features from *extensions*. Extensions are python modules that can be enabled with the -e option. Several are included with rst2pdf. Preprocess (``-e preprocess``) ------------------------------ .. include:: ../rst2pdf/extensions/preprocess_r2p.py :start-after: ''' :end-before: ''' Inkscape (``-e inkscape``) -------------------------- .. include:: ../rst2pdf/extensions/inkscape_r2p.py :start-after: ''' :end-before: ''' Dotted_TOC (``-e dotted_toc``) ------------------------------ .. include:: ../rst2pdf/extensions/dotted_toc.py :start-after: ''' :end-before: ''' Developers ========== .. include:: DEVELOPERS.txt :start-line: 8 Licenses ======== This is the license for rst2pdf:: Copyright (c) 2007,2008,2009 Roberto Alsina Nicolas Laurance, Christoph Zwerschke, Yasushi Masuda, Josh VanderLinden, Patrick Maupin. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Some fragments of rstpdf are copied from ReportLab under the following license:: Copyright (c) 2000-2008, ReportLab Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the company nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OFFICERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. rst2pdf-0.93/doc/config.sample0000664000175000017500000000472511724710567016136 0ustar ralsinaralsina# This is an example config file. Modify and place in ~/.rst2pdf/config [general] # A comma-separated list of custom stylesheets. Example: # stylesheets="fruity.json,a4paper.json,verasans.json" stylesheets="" # Create a compressed PDF # Use true/false (lower case) or 1/0 compressed=false # A colon-separated list of folders to search for fonts. Example: # font_path="/usr/share/fonts:/usr/share/texmf-dist/fonts/" font_path="" # A colon-separated list of folders to search for stylesheets. Example: # stylesheet_path="~/styles:/usr/share/styles" stylesheet_path="" # Language to be used for hyphenation support language="en_US" # Default page header and footer header=null footer=null # What to do if a literal block is too large. Can be # shrink/truncate/overflow fit_mode="shrink" # How to adjust the background image to the page. # Can be: "scale" and "center" fit_background_mode="center" # What is the maximum level of heading that starts in a new page. # 0 means no level starts in a new page. break_level=0 # How section breaks work. Can be "even", and sections start in an # even page, "odd", and sections start in odd pages, or "any" and # sections start in the next page, be it even or odd. break_side="any" # Add a blank page at the beginning of the document blank_first_page=false # Treat the first page as even (default false, treat it as odd) first_page_even=false # Smart quotes. # 0: Suppress all transformations. (Do nothing.) # 1: Performs default SmartyPants transformations: quotes (including ‘‘backticks'' # -style), em-dashes, and ellipses. "--" (dash dash) is used to signify an em-dash; # there is no support for en-dashes. # 2: Same as 1, except that it uses the old-school typewriter shorthand for # dashes: "--" (dash dash) for en-dashes, "---" (dash dash dash) for em-dashes. # 3: Same as 2, but inverts the shorthand for dashes: "--" (dash dash) for # em-dashes, and "---" (dash dash dash) for en-dashes. smartquotes=0 # Footnote backlinks enabled or not (default: enabled) footnote_backlinks=true # Show footnotes inline instead of at the end of the document inline_footnotes=false # Cover page template. # It will be searched in the document's folder, in ~/.rst2pdf/templates and # in the templates subfolder of the package folder # custom_cover = cover.tmpl # Use floating images. # Makes the behaviour of images with the :align: attribute more like rst2html's floating_images = false # Support the ..raw:: html directive raw_html = false rst2pdf-0.93/doc/INSTALL.txt0000664000175000017500000000000011055536477015316 0ustar ralsinaralsinarst2pdf-0.93/doc/manual.pdf0000664000175000017500000166066612064144400015434 0ustar ralsinaralsina%PDF-1.4 % ReportLab Generated PDF document http://www.reportlab.com % 'BasicFonts': class PDFDictionary 1 0 obj % The standard fonts dictionary << /F1 2 0 R /F10+0 240 0 R /F11+0 244 0 R /F2+0 232 0 R /F3 13 0 R /F4 113 0 R /F5 149 0 R /F6 150 0 R /F7 156 0 R /F8 163 0 R /F9+0 236 0 R >> endobj % 'F1': class PDFType1Font 2 0 obj % Font Helvetica << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> endobj % 'FormXob.pdfrw_3': class PDFStream 3 0 obj << /BBox [ 0 0 480 444 ] /Filter /FlateDecode /FormType 1 /Length 31 /Resources 4 0 R /Subtype /Form /Type /XObject >> stream x+*T/6UH/VЯ0SpW C endstream endobj % 'R4': class PDFDictionary 4 0 obj << /ExtGState << /s5 9 0 R >> /XObject << /x6 5 0 R >> >> endobj % 'FormXob.pdfrw_5': class PDFStream 5 0 obj << /BBox [ 0 0 480 444 ] /Filter /FlateDecode /Group << /CS /DeviceRGB /S /Transparency /Type /Group >> /Length 55 /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p9 6 0 R >> >> /Subtype /Form /Type /XObject >> stream x+TH,)I-SH.V/T(NSO4PH/2P0P0bT4@.Xt endstream endobj % 'R6': class PDFStream 6 0 obj << /BBox [ 0 0 480 444 ] /Length 11 /Matrix [ 1 0 0 1 0 0 ] /PaintType 1 /PatternType 1 /Resources << /XObject << /x12 7 0 R >> >> /TilingType 1 /XStep 1848 /YStep 1848 >> stream /x12 Do endstream endobj % 'FormXob.pdfrw_7': class PDFStream 7 0 obj << /BBox [ 0 0 480 444 ] /Filter /FlateDecode /Group << /CS /DeviceRGB /S /Transparency /Type /Group >> /Length 938 /Resources 8 0 R /Subtype /Form /Type /XObject >> stream xmUK9 )t?Q:Fpf^@QKUY˯߇^xs,;FMKrQܙZȊ;Y#bĕakm7"ɝ;[/U2Xh^j ]sBNw b/gD4\J!/m"ϝ; ^(f9f~Dk>[#Ľ"N Ø^T3p; Sj1Q6pX&݊ }ETg2x^jgJ:kʰUbV@nU.ô{2d ^JלH3Z&*r9*Nioi`PƒjM"(4< 9i +>eT! RhDT(yn UNÖ;6k gbt\ a v$ rzL#Ɩ0$+JAX~;zkvJ}\~Ía|5*Bg47Zz'2x">i-⊸ړdQ V6YXns+CTAP<v4 l@t!ZDJ u8Rt}M34Ӧ ba28w2FKǼ]a(|&s5 p̓s|!}N7rcKDxJYD*d~CTO#Nn8%=%ג$K!VBAroӶȝc@PңrQOen_VH+"Վ%ߒ`ks# u0񌁏z}\Ҭn #ەbwnErŝ"WXˇ> >> >> endobj % 'R9': class PDFDictionary 9 0 obj << /AIS false /CA 1 /SMask 10 0 R /Type /ExtGState /ca 1 >> endobj % 'R10': class PDFDictionary 10 0 obj << /G 11 0 R /S /Alpha /Type /Mask >> endobj % 'FormXob.pdfrw_11': class PDFStream 11 0 obj << /BBox [ 0 0 480 444 ] /Filter /FlateDecode /Group << /CS /DeviceRGB /S /Transparency /Type /Group >> /Length 39 /Resources << /ExtGState << /a0 << /CA 0.102128 /ca 0.102128 >> >> >> /Subtype /Form /Type /XObject >> stream x3T0¢tDb. 61Q(JUHx0 endstream endobj % 'Page1': class PDFPage 12 0 obj % Page dictionary << /Contents 309 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.pdfrw_3 3 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'F3': class PDFType1Font 13 0 obj % Font Helvetica-Bold << /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER1': class PDFDictionary 14 0 obj << /A << /S /URI /Type /Action /URI (mailto:ralsina@netmanagers.com.ar) >> /Border [ 0 0 0 ] /Rect [ 227.9323 735.7736 359.2323 747.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page2': class PDFPage 15 0 obj % Page dictionary << /Annots [ 14 0 R ] /Contents 310 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER2': class LinkAnnotation 16 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 145 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 705.7736 134.9229 717.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER3': class LinkAnnotation 17 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 145 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 527.0227 705.7736 532.5827 717.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER4': class LinkAnnotation 18 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 146 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 687.7736 184.3829 699.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER5': class LinkAnnotation 19 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 146 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 527.0227 687.7736 532.5827 699.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER6': class LinkAnnotation 20 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 151 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 669.7736 162.1529 681.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER7': class LinkAnnotation 21 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 151 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 527.0227 669.7736 532.5827 681.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER8': class LinkAnnotation 22 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 153 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 651.7736 129.3929 663.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER9': class LinkAnnotation 23 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 153 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 651.7736 532.5827 663.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER10': class LinkAnnotation 24 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 160 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 633.7736 176.0629 645.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER11': class LinkAnnotation 25 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 160 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 633.7736 532.5827 645.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER12': class LinkAnnotation 26 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 161 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 615.7736 124.9229 627.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER13': class LinkAnnotation 27 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 161 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 615.7736 532.5827 627.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER14': class LinkAnnotation 28 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 597.7736 111.0529 609.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER15': class LinkAnnotation 29 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 597.7736 532.5827 609.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER16': class LinkAnnotation 30 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 714.0236 0 ] /Rect [ 82.69291 579.7736 128.8329 591.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER17': class LinkAnnotation 31 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 714.0236 0 ] /Rect [ 521.4627 579.7736 532.5827 591.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER18': class LinkAnnotation 32 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 570.8236 0 ] /Rect [ 82.69291 561.7736 211.6529 573.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER19': class LinkAnnotation 33 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 570.8236 0 ] /Rect [ 521.4627 561.7736 532.5827 573.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER20': class LinkAnnotation 34 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 277.8236 0 ] /Rect [ 82.69291 543.7736 154.9529 555.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER21': class LinkAnnotation 35 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 164 0 R /XYZ 62.69291 277.8236 0 ] /Rect [ 521.4627 543.7736 532.5827 555.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER22': class LinkAnnotation 36 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 166 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 525.7736 106.0529 537.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER23': class LinkAnnotation 37 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 166 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 525.7736 532.5827 537.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER24': class LinkAnnotation 38 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 166 0 R /XYZ 62.69291 243.2236 0 ] /Rect [ 82.69291 507.7736 198.8729 519.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER25': class LinkAnnotation 39 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 166 0 R /XYZ 62.69291 243.2236 0 ] /Rect [ 521.4627 507.7736 532.5827 519.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER26': class LinkAnnotation 40 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 169 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 82.69291 489.7736 186.6429 501.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER27': class LinkAnnotation 41 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 169 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 489.7736 532.5827 501.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER28': class LinkAnnotation 42 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 169 0 R /XYZ 62.69291 699.0236 0 ] /Rect [ 82.69291 471.7736 149.3929 483.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER29': class LinkAnnotation 43 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 169 0 R /XYZ 62.69291 699.0236 0 ] /Rect [ 521.4627 471.7736 532.5827 483.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER30': class LinkAnnotation 44 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 169 0 R /XYZ 62.69291 441.8236 0 ] /Rect [ 82.69291 453.7736 171.6229 465.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER31': class LinkAnnotation 45 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 169 0 R /XYZ 62.69291 441.8236 0 ] /Rect [ 521.4627 453.7736 532.5827 465.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER32': class LinkAnnotation 46 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 170 0 R /XYZ 62.69291 473.8236 0 ] /Rect [ 82.69291 435.7736 200.5229 447.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER33': class LinkAnnotation 47 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 170 0 R /XYZ 62.69291 473.8236 0 ] /Rect [ 521.4627 435.7736 532.5827 447.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER34': class LinkAnnotation 48 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 82.69291 417.7736 178.3029 429.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER35': class LinkAnnotation 49 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 417.7736 532.5827 429.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER36': class LinkAnnotation 50 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 687.0236 0 ] /Rect [ 102.6929 399.7736 198.2929 411.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER37': class LinkAnnotation 51 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 687.0236 0 ] /Rect [ 521.4627 399.7736 532.5827 411.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER38': class LinkAnnotation 52 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 546.8236 0 ] /Rect [ 122.6929 381.7736 275.5529 393.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER39': class LinkAnnotation 53 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 546.8236 0 ] /Rect [ 521.4627 381.7736 532.5827 393.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER40': class LinkAnnotation 54 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 278.4236 0 ] /Rect [ 122.6929 363.7736 260.5529 375.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER41': class LinkAnnotation 55 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 173 0 R /XYZ 62.69291 278.4236 0 ] /Rect [ 521.4627 363.7736 532.5827 375.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER42': class LinkAnnotation 56 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 175 0 R /XYZ 62.69291 473.4236 0 ] /Rect [ 102.6929 345.7736 261.6329 357.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER43': class LinkAnnotation 57 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 175 0 R /XYZ 62.69291 473.4236 0 ] /Rect [ 521.4627 345.7736 532.5827 357.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER44': class LinkAnnotation 58 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 176 0 R /XYZ 62.69291 406.6236 0 ] /Rect [ 102.6929 327.7736 243.8529 339.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER45': class LinkAnnotation 59 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 176 0 R /XYZ 62.69291 406.6236 0 ] /Rect [ 521.4627 327.7736 532.5827 339.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER46': class LinkAnnotation 60 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 176 0 R /XYZ 62.69291 361.6236 0 ] /Rect [ 82.69291 309.7736 208.3129 321.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER47': class LinkAnnotation 61 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 176 0 R /XYZ 62.69291 361.6236 0 ] /Rect [ 521.4627 309.7736 532.5827 321.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER48': class LinkAnnotation 62 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 585.0236 0 ] /Rect [ 82.69291 291.7736 204.9829 303.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER49': class LinkAnnotation 63 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 177 0 R /XYZ 62.69291 585.0236 0 ] /Rect [ 521.4627 291.7736 532.5827 303.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER50': class LinkAnnotation 64 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 178 0 R /XYZ 62.69291 381.4236 0 ] /Rect [ 82.69291 273.7736 193.8529 285.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER51': class LinkAnnotation 65 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 178 0 R /XYZ 62.69291 381.4236 0 ] /Rect [ 521.4627 273.7736 532.5827 285.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER52': class LinkAnnotation 66 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 180 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 82.69291 255.7736 212.7529 267.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER53': class LinkAnnotation 67 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 180 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 255.7736 532.5827 267.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER54': class LinkAnnotation 68 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 180 0 R /XYZ 62.69291 687.0236 0 ] /Rect [ 102.6929 237.7736 211.6429 249.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER55': class LinkAnnotation 69 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 180 0 R /XYZ 62.69291 687.0236 0 ] /Rect [ 521.4627 237.7736 532.5827 249.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER56': class LinkAnnotation 70 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 180 0 R /XYZ 62.69291 415.6236 0 ] /Rect [ 102.6929 219.7736 159.3929 231.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER57': class LinkAnnotation 71 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 180 0 R /XYZ 62.69291 415.6236 0 ] /Rect [ 521.4627 219.7736 532.5827 231.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER58': class LinkAnnotation 72 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 184 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 201.7736 170.4929 213.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER59': class LinkAnnotation 73 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 184 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 201.7736 532.5827 213.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER60': class LinkAnnotation 74 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 569.8236 0 ] /Rect [ 82.69291 183.7736 162.7229 195.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER61': class LinkAnnotation 75 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 569.8236 0 ] /Rect [ 521.4627 183.7736 532.5827 195.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER62': class LinkAnnotation 76 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 456.6236 0 ] /Rect [ 102.6929 165.7736 239.4329 177.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER63': class LinkAnnotation 77 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 187 0 R /XYZ 62.69291 456.6236 0 ] /Rect [ 521.4627 165.7736 532.5827 177.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER64': class LinkAnnotation 78 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 188 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 102.6929 147.7736 167.7329 159.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER65': class LinkAnnotation 79 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 188 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 147.7736 532.5827 159.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER66': class LinkAnnotation 80 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 189 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 129.7736 147.7329 141.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER67': class LinkAnnotation 81 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 189 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 129.7736 532.5827 141.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER68': class LinkAnnotation 82 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 189 0 R /XYZ 62.69291 714.0236 0 ] /Rect [ 82.69291 111.7736 153.2729 123.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER69': class LinkAnnotation 83 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 189 0 R /XYZ 62.69291 714.0236 0 ] /Rect [ 521.4627 111.7736 532.5827 123.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER70': class LinkAnnotation 84 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 189 0 R /XYZ 62.69291 402.8236 0 ] /Rect [ 82.69291 93.77362 177.1929 105.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER71': class LinkAnnotation 85 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 189 0 R /XYZ 62.69291 402.8236 0 ] /Rect [ 521.4627 93.77362 532.5827 105.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page3': class PDFPage 86 0 obj % Page dictionary << /Annots [ 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R ] /Contents 311 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER72': class LinkAnnotation 87 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 190 0 R /XYZ 62.69291 577.0236 0 ] /Rect [ 82.69291 732.7736 167.7429 744.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER73': class LinkAnnotation 88 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 190 0 R /XYZ 62.69291 577.0236 0 ] /Rect [ 521.4627 732.7736 532.5827 744.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER74': class LinkAnnotation 89 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 190 0 R /XYZ 62.69291 366.8236 0 ] /Rect [ 82.69291 714.7736 173.2829 726.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER75': class LinkAnnotation 90 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 190 0 R /XYZ 62.69291 366.8236 0 ] /Rect [ 521.4627 714.7736 532.5827 726.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER76': class LinkAnnotation 91 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 190 0 R /XYZ 62.69291 203.0822 0 ] /Rect [ 82.69291 696.7736 185.5229 708.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER77': class LinkAnnotation 92 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 190 0 R /XYZ 62.69291 203.0822 0 ] /Rect [ 521.4627 696.7736 532.5827 708.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER78': class LinkAnnotation 93 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 191 0 R /XYZ 62.69291 309.6236 0 ] /Rect [ 82.69291 678.7736 160.4929 690.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER79': class LinkAnnotation 94 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 191 0 R /XYZ 62.69291 309.6236 0 ] /Rect [ 521.4627 678.7736 532.5827 690.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER80': class LinkAnnotation 95 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 193 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 660.7736 160.5029 672.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER81': class LinkAnnotation 96 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 193 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 660.7736 532.5827 672.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER82': class LinkAnnotation 97 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 194 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 642.7736 187.7429 654.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER83': class LinkAnnotation 98 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 194 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 642.7736 532.5827 654.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER84': class LinkAnnotation 99 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 201 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 624.7736 142.7229 636.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER85': class LinkAnnotation 100 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 201 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 624.7736 532.5827 636.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER86': class LinkAnnotation 101 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 205 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 606.7736 142.7129 618.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER87': class LinkAnnotation 102 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 205 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 606.7736 532.5827 618.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER88': class LinkAnnotation 103 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 207 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 588.7736 141.6129 600.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER89': class LinkAnnotation 104 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 207 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 588.7736 532.5827 600.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER90': class LinkAnnotation 105 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 570.7736 147.7229 582.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER91': class LinkAnnotation 106 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 210 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 570.7736 532.5827 582.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER92': class LinkAnnotation 107 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 211 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 552.7736 119.9329 564.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER93': class LinkAnnotation 108 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 211 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 552.7736 532.5827 564.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER94': class LinkAnnotation 109 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 534.7736 115.4929 546.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER95': class LinkAnnotation 110 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 213 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 534.7736 532.5827 546.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER96': class LinkAnnotation 111 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 216 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 516.7736 135.5029 528.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER97': class LinkAnnotation 112 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 216 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 516.7736 532.5827 528.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F4': class PDFType1Font 113 0 obj % Font Courier << /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER98': class LinkAnnotation 114 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 216 0 R /XYZ 62.69291 666.0236 0 ] /Rect [ 82.69291 498.7736 167.1729 510.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER99': class LinkAnnotation 115 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 216 0 R /XYZ 62.69291 666.0236 0 ] /Rect [ 167.1729 498.7736 245.1729 510.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER100': class LinkAnnotation 116 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 216 0 R /XYZ 62.69291 666.0236 0 ] /Rect [ 245.1729 498.7736 248.5029 510.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER101': class LinkAnnotation 117 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 216 0 R /XYZ 62.69291 666.0236 0 ] /Rect [ 521.4627 498.7736 532.5827 510.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER102': class LinkAnnotation 118 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 520.6772 0 ] /Rect [ 82.69291 480.7736 156.6229 492.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER103': class LinkAnnotation 119 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 520.6772 0 ] /Rect [ 156.6229 480.7736 222.6229 492.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER104': class LinkAnnotation 120 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 520.6772 0 ] /Rect [ 222.6229 480.7736 225.9529 492.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER105': class LinkAnnotation 121 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 520.6772 0 ] /Rect [ 521.4627 480.7736 532.5827 492.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER106': class LinkAnnotation 122 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 359.6772 0 ] /Rect [ 82.69291 462.7736 172.7329 474.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER107': class LinkAnnotation 123 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 359.6772 0 ] /Rect [ 172.7329 462.7736 250.7329 474.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER108': class LinkAnnotation 124 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 359.6772 0 ] /Rect [ 250.7329 462.7736 254.0629 474.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER109': class LinkAnnotation 125 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 359.6772 0 ] /Rect [ 521.4627 462.7736 532.5827 474.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER110': class LinkAnnotation 126 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 299.6772 0 ] /Rect [ 102.6929 444.7736 172.7229 456.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER111': class LinkAnnotation 127 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 217 0 R /XYZ 62.69291 299.6772 0 ] /Rect [ 521.4627 444.7736 532.5827 456.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER112': class LinkAnnotation 128 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 220 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 426.7736 136.0629 438.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER113': class LinkAnnotation 129 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 220 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 426.7736 532.5827 438.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER114': class LinkAnnotation 130 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 220 0 R /XYZ 62.69291 714.0236 0 ] /Rect [ 82.69291 408.7736 157.7329 420.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER115': class LinkAnnotation 131 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 220 0 R /XYZ 62.69291 714.0236 0 ] /Rect [ 521.4627 408.7736 532.5827 420.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER116': class LinkAnnotation 132 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 82.69291 390.7736 211.1029 402.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER117': class LinkAnnotation 133 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 390.7736 532.5827 402.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER118': class LinkAnnotation 134 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 627.0236 0 ] /Rect [ 82.69291 372.7736 171.6329 384.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER119': class LinkAnnotation 135 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 627.0236 0 ] /Rect [ 521.4627 372.7736 532.5827 384.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER120': class LinkAnnotation 136 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 102.6929 354.7736 172.1729 366.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER121': class LinkAnnotation 137 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 597.0236 0 ] /Rect [ 521.4627 354.7736 532.5827 366.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER122': class LinkAnnotation 138 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 494.8236 0 ] /Rect [ 102.6929 336.7736 179.9629 348.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER123': class LinkAnnotation 139 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 494.8236 0 ] /Rect [ 521.4627 336.7736 532.5827 348.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER124': class LinkAnnotation 140 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 416.6236 0 ] /Rect [ 82.69291 318.7736 204.9629 330.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER125': class LinkAnnotation 141 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 221 0 R /XYZ 62.69291 416.6236 0 ] /Rect [ 521.4627 318.7736 532.5827 330.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER126': class LinkAnnotation 142 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 62.69291 300.7736 124.9529 312.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER127': class LinkAnnotation 143 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 222 0 R /XYZ 62.69291 747.0236 0 ] /Rect [ 521.4627 300.7736 532.5827 312.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page4': class PDFPage 144 0 obj % Page dictionary << /Annots [ 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R ] /Contents 312 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page5': class PDFPage 145 0 obj % Page dictionary << /Contents 313 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page6': class PDFPage 146 0 obj % Page dictionary << /Contents 314 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page7': class PDFPage 147 0 obj % Page dictionary << /Contents 315 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER128': class LinkAnnotation 148 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 228 0 R /XYZ 68.69291 720.6772 0 ] /Rect [ 516.5929 678.7736 521.0409 690.7736 ] /Subtype /Link /Type /Annot >> endobj % 'F5': class PDFType1Font 149 0 obj % Font Courier-Oblique << /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> endobj % 'F6': class PDFType1Font 150 0 obj % Font Courier-Bold << /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font >> endobj % 'Page8': class PDFPage 151 0 obj % Page dictionary << /Annots [ 148 0 R ] /Contents 316 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page9': class PDFPage 152 0 obj % Page dictionary << /Contents 317 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page10': class PDFPage 153 0 obj % Page dictionary << /Contents 318 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER129': class LinkAnnotation 154 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 189 0 R /XYZ 62.69291 405.8236 0 ] /Rect [ 332.2015 440.5736 401.7852 452.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER130': class LinkAnnotation 155 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 207 0 R /XYZ 62.69291 692.0236 0 ] /Rect [ 440.9877 410.5736 520.9127 422.5736 ] /Subtype /Link /Type /Annot >> endobj % 'F7': class PDFType1Font 156 0 obj % Font Helvetica-Oblique << /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F7 /Subtype /Type1 /Type /Font >> endobj % 'Annot.NUMBER131': class LinkAnnotation 157 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 151 0 R /XYZ 62.69291 750.5236 0 ] /Rect [ 62.69291 386.5736 135.5029 398.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER132': class LinkAnnotation 158 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 194 0 R /XYZ 62.69291 750.5236 0 ] /Rect [ 472.3812 368.5736 530.7512 380.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER133': class LinkAnnotation 159 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 194 0 R /XYZ 62.69291 750.5236 0 ] /Rect [ 62.69291 356.5736 99.92291 368.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page11': class PDFPage 160 0 obj % Page dictionary << /Annots [ 154 0 R 155 0 R 157 0 R 158 0 R 159 0 R ] /Contents 319 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page12': class PDFPage 161 0 obj % Page dictionary << /Contents 320 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'FormXob.c8d097da4771654d12a9611e9af76669': class PDFImageXObject 162 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 16 /Length 99 /Mask [ 255 255 255 255 255 255 ] /Subtype /Image /Type /XObject /Width 16 >> stream Gatmt9+h4I#XZ*%V/<(u@uBmr=V8?K0\Z^q/;*/(FTbVb3Ll+WIX_`d$OKqrhCOVS4K[m&h"\hN?W/1;46b`nm1lVendstream endobj % 'F8': class PDFType1Font 163 0 obj % Font Helvetica-BoldOblique << /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F8 /Subtype /Type1 /Type /Font >> endobj % 'Page13': class PDFPage 164 0 obj % Page dictionary << /Contents 321 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.c8d097da4771654d12a9611e9af76669 162 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page14': class PDFPage 165 0 obj % Page dictionary << /Contents 322 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page15': class PDFPage 166 0 obj % Page dictionary << /Contents 323 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER134': class LinkAnnotation 167 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 184 0 R /XYZ 62.69291 750.5236 0 ] /Rect [ 103.2629 135.7736 188.8529 147.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page16': class PDFPage 168 0 obj % Page dictionary << /Annots [ 167 0 R ] /Contents 324 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page17': class PDFPage 169 0 obj % Page dictionary << /Contents 325 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page18': class PDFPage 170 0 obj % Page dictionary << /Contents 326 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER135': class PDFDictionary 171 0 obj << /A << /S /URI /Type /Action /URI (http://www.freedesktop.org/fontconfig/) >> /Border [ 0 0 0 ] /Rect [ 222.6429 493.5736 266.0029 505.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER136': class LinkAnnotation 172 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 175 0 R /XYZ 62.69291 475.9236 0 ] /Rect [ 361.9229 422.3736 490.2829 434.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page19': class PDFPage 173 0 obj % Page dictionary << /Annots [ 171 0 R 172 0 R ] /Contents 327 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER137': class PDFDictionary 174 0 obj << /A << /S /URI /Type /Action /URI (http://tulrich.com/fonts/) >> /Border [ 0 0 0 ] /Rect [ 291.1786 286.7736 334.107 298.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page20': class PDFPage 175 0 obj % Page dictionary << /Annots [ 174 0 R ] /Contents 328 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page21': class PDFPage 176 0 obj % Page dictionary << /Contents 329 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page22': class PDFPage 177 0 obj % Page dictionary << /Contents 330 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page23': class PDFPage 178 0 obj % Page dictionary << /Contents 331 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page24': class PDFPage 179 0 obj % Page dictionary << /Contents 332 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page25': class PDFPage 180 0 obj % Page dictionary << /Contents 333 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page26': class PDFPage 181 0 obj % Page dictionary << /Contents 334 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER138': class PDFDictionary 182 0 obj << /A << /S /URI /Type /Action /URI (http://pygments.org/) >> /Border [ 0 0 0 ] /Rect [ 138.2929 696.7736 182.7529 708.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER139': class PDFDictionary 183 0 obj << /A << /S /URI /Type /Action /URI (http://pygments.org/docs/lexers/) >> /Border [ 0 0 0 ] /Rect [ 460.9229 544.3736 505.3929 556.3736 ] /Subtype /Link /Type /Annot >> endobj % 'Page27': class PDFPage 184 0 obj % Page dictionary << /Annots [ 182 0 R 183 0 R ] /Contents 335 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER140': class PDFDictionary 185 0 obj << /A << /S /URI /Type /Action /URI (http://pygments.org/demo/1817/) >> /Border [ 0 0 0 ] /Rect [ 82.69291 735.7736 532.5827 747.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page28': class PDFPage 186 0 obj % Page dictionary << /Annots [ 185 0 R ] /Contents 336 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page29': class PDFPage 187 0 obj % Page dictionary << /Contents 337 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page30': class PDFPage 188 0 obj % Page dictionary << /Contents 338 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page31': class PDFPage 189 0 obj % Page dictionary << /Contents 339 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page32': class PDFPage 190 0 obj % Page dictionary << /Contents 340 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page33': class PDFPage 191 0 obj % Page dictionary << /Contents 341 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER141': class LinkAnnotation 192 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 193 0 R /XYZ 380.0629 524.8236 0 ] /Rect [ 186.8429 439.5736 275.7829 451.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page34': class PDFPage 193 0 obj % Page dictionary << /Annots [ 192 0 R ] /Contents 342 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page35': class PDFPage 194 0 obj % Page dictionary << /Contents 343 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER142': class PDFDictionary 195 0 obj << /A << /S /URI /Type /Action /URI (http://matplotlib.sf.net) >> /Border [ 0 0 0 ] /Rect [ 117.0229 708.7736 163.4695 720.7736 ] /Subtype /Link /Type /Annot >> endobj % 'FormXob.ee65afc714a21fa854c1b9cc08c5a03c': class PDFImageXObject 196 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 60 /Length 1375 /SMask 197 0 R /Subtype /Image /Type /XObject /Width 60 >> stream Gb"/h9.50b*66*(aEqF76;`@MB#]FY,-ggb`Zl(YP*3JpL;]=@'R=8BfZAa+Z(P228W?5cN0*QNk5XK*3<+&t1WR_p4.H+QIt,5jkKZ6br-mgfaWsNF/6T8hac[rCQ7P,`q>#;JAgSlQ8#]JaqYDZeP`Ll$8P.%IbKHN.Vl$=X6:.L/'WSLGPEY_1nM**egTe+VWMujZ^j<\#UX;%>p.&h2Bbl7/#"*3CXJ8@:e^;d\"u[BZ=]nmf`r&h==P2Hc*LjUR^>@8)5P"=585E#G5!EQ\0.\Y63B<4Qrr2ms@ckYK7CG331(lV-j5Y"=2/R8M4$,MS^'BgrUEfb'BW29Th;'(i4i;PgG(uVA5*Qk80CAFW43T4m+0enf-*ZlKEbcp-\`quV2rVa15[_BJiO,jhN-urb'[^NKd`PogK4>8Hs)mAp,:/8eGX/i:;F*Mph2T#_C%3_R+M[T.`J@rS/hqm3,Ao]VYf%8M"j!<10gIlGHD"I;k1s(,aE$,T8V3mVeb[@[f='&Iebie0PdQiuLg=d_gG'8&]rj]HtdVj-0'LNTM'c8&Q3;E+:P@8ogIhL0KO\EcP%Z>,;/sI^1d=F`:Tk(aZgRCM@Jp+8/>]nr[u'8>FT%"N!i-0c(Ni.M1=.aKRm\WLbTQZ*D+Y8DTR[^(3(s:JYF%_r6NR$g1?]dDuto2/X[dh%_UH/!)6LS"%S=Mf5"S2)[@M$EV_@KYQ($kU:('p#RA`1DQ1cVP]*J#Ubk[b=g.MUnf7Z1Lu$RMb(X0^#$rUMlN^VX8+Q5VcQc%?!SX/_hKKha8bT4W2HQ6/9=3IKG_K/K-;Wk86G:U6OnB]8ni-Zc0ieZX]AOpWDrjG#s>_uX/fB83%*FNg$Im3`B#iF7jM^*8-Z37MJLk,OV+qD@U+"O+!A5U\[a^Nnj(5pWDmCXB]sWPlDJC)\$q-IL;MROmh`\bX&Hj+R?s6F1EN'91G^gg<`Z:soafur4gY~>endstream endobj % 'FormXob.53a8e9e043abbb3ef6f96a5d92177037': class PDFImageXObject 197 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 60 /Length 784 /Subtype /Image /Type /XObject /Width 60 >> stream Gb"/e9kY2+(kuO!gXq<2NE*3k+JRMPKmN4n0aI5Ld9OUS'LWM+MU[P9eOgEA&@%scg5B(@=%-;s.-[Eies!M7OFplPBM9]a9q1ctk*opp-J>$5j&//15[%DFA(r=Y7ZNO$X?UDkK4Z,Ed:Sc-eVdads)/_TOsT")Jcofj>iV`S]60r@$CIgW^L`f@:elmB\Z;ol/J$O^=.nh-#E)>55ciNVI7@I-0,56:5CdImVs)g,p)aOStDM-]AF1OBf!e=B)&CrW;6`n5`QG0B"=6(tPD98]6SVHJ7rjnpg`7`Cilj%2sE.G:\bg:2hgEuS%f+Ibi>5).kq_DC,/9&&O#S"$RMIEL=k_lPt@ZU*DBrR.,gL.rpn>NWE>U?i3"Pq4a8]>pJCo[m>J1'e9`Z&Br)k`endstream endobj % 'FormXob.fddb44bbe3ec01aabf0db1a788f9f721': class PDFImageXObject 198 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2914 /SMask 199 0 R /Subtype /Image /Type /XObject /Width 130 >> stream Gb"/lGt:n?(ris$c##!X[g4LLN$K33/"t1__CWTj&YhcNZR@A.0Hs+na[h@!.T3"F,0J;r(,RNm'.#>,>:-[]VR3V-e9'K[n"g,Qq<$J#mYl5#hqWR-ImorQmW77JhQtutkKH0j&-rC?JNt=h#Qt3[5TgUD"9O->+:ne]!eG\Z3]cj&o%'mF'+b`5k2n!+M^9!mVl+/q7)[BA4,\uR]">Sbf#VJ<$H9GjgT7NZ/bJ&\i/jJ!>[Lja[9anpiPGb&>?h(%f0gksD;Mp.V,D:bS1!t%od(q3;X*lIp!(S!W3!(RVQ%>F?`@!gHhK!R4al>.M7=AkT+r(U>h=K:`5fonPWClfkN:n:%1U]#;leI,`McY/[#D5u[kBed.#ZXKnY4]<`Z^BY@#$c!O]T$mG#)uV;oUWDf0H)(j5B.7D*=9'75(Q=]NXHQ7ZFV/R!fHET4nCQ?;\b]"0qe]u\8c6XuhY`a*P(E[$QsTc?+8#\@r)W`:`$Jq9"Li@q1INOX9*-;/+L8pGTjnFG[6Y!iX)QruL33`6a'\[fD"onmN^_Et(s9pmbjZ2hm8+$P)1>*Q6fX47do&X3GB+X(]>D-Vu3(5%6l;Q5nd@-,OrbeFl=R#8"M[o+!;VP`W^\OU$<83=u/Q'G?E:(GlrKZLE.a,gI7`f)?!0'6>t&BW5C7M^5nGgt6mE%OS9_!K:ndLn,#naZGMnKX5/QoiNZ0dAeCS8E*E5pheP`F=`iMi5;urQ6fD2`DN^@Th5.&>8tD4aJsGF5FQT5C`ZC*gi+R!`9mpCg]u+:adtM\$ri%A4B'Zp[n(p'K]sQ*!eZPng$l^"@@6R20rgS+!3^$0OR^n='$3lPBc99*L>amJbSWj]=PR?)L(Z,D8a*Rp?gUJ5Xf!3),4%.PGb=VL#-Yh@*RWf@"3ZUDf9QBkbp:NuL"f_I6g_g"=#eH[^E-oA(C'D/G^p98>l"5eo)E1"+/)EiE"f&rH81-n6\R=p\K,d+?mYJ,asSR%X['aiMPR@eu@g<%?VH+N>!0(ME#4Yl[%lLCYK(?*]Im8\TTJ1B&HD'[3"'Mod?^PGRF]@H^TV6UQWqq#:=o@l&D-iVWBB*WD:a:XXG7n6)3M\\.=08i&)*bnR3p$:6"o$iS2*'65DP?,d&W3*0jmjI)N^3B#eo>%1qQdVa1f;mrI^d)0X5kAQ]g6aC3kKZMqfX5L]6%Sh!!!J7:BZn;<8XBf=%5^LRba#ean"MphH?pL@DBU8N"OAGh'6KL`F*"+a!.#iV?OXOrAk[/_0M9;gS0(=^C,t.ZKdMIeiNoa2=p0R8Zs[JPn4Fl;U..ERAZr"S<\*"(S.Ve5X[q3Qr&V$H>f02PFq(Z/JG)PMm:mPkhM6*??.rT0=hU.;!h"=n0RNQ^`Eh-$@gCVsKLJ^6&FMkN5loTK"GB[P`*Z5s6m?Z5njifa+oFWn3HHP!\qELmE\d%aoFtQr&f18a#/L37pUSj$+?k5MKNeG_n'93RY,)G\9:%9i/qet6Eihu:`5T^S/dVA:RLs.FBScAORR`D[E@jmMeC<"+(>.9l(qPb.Gk^VH1i>(:N")?U-8RFkGJUe+@fHB+-sYB@1P.6F/6RS:@)U2`\Qk/(I=-FpctRY[2`DNh(RLJTs7l+OJ'#F=52,UoT0.C.kXCOS5E94Im+GmME1Tm5?VdfE")Mgk%j!j3kM,1*Z812:92!H8^O@&Bh;7!pl6Q0A04#(!*bJ)G321P9s!Zo[;pKT1?/mB?qW*--R=48u7\32nQ;uckNlB=/`GME-*,#?VjQa>COPK'a@rih7@_W0K;$oi$Z"t=YECZm0as<>p7VCdEJe`PEUWnXKAU?CMQXG+gXS_:LRjHA`;aM[FX3khHE.kiofLFn=n:?;a5hJ(>G;1`m2kiecKOGnT/'rVPROMQ5gO9)$4:n-9ig_(/TX7W2M+32iR>@C<)MbCY,`.IhTAhV1n3!dI@f&XjDA6rd(Y6IXXKB@o-!`^u'_C$^#N]H2~>endstream endobj % 'FormXob.b9a97e5f924592b2c3faeb2e0ed92dca': class PDFImageXObject 199 0 obj << /BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1542 /Subtype /Image /Type /XObject /Width 130 >> stream Gb"/iInZ,-(rou9>S-B0Efi\^$o*uC[jEnr<@7%P/;0Im>gB=L[V.[*['IK9F"t!9Z^$t.eT0(KLM!\-+gl#nGCn*U:+TQ>K"!1S6/c/6IQR:Pc?o#.?S97PH-Y*srVh#THT9?,F5Q^Tc["AKdpe1`VO1hM.AiJAqL9uCq<)VNK:^B.GF,,(aIi.>(I@_3RjfB9R;4KjBR?2tr:Z[4BmXDgH@fX8om("+5>NWBDW&sC3'Km7r`;VR>9ja;27lrqB=RV,S;!rm^Hc8?!"+6D5h0QSE1:,)E9-NMqAGmi2R7s4eJpilbd:A7\ZVLooXuh`g1WO%_63QJI&85!,q;5,i(MFeTF>4+O8^\L-j.iilErp/3e.r+^n'`jnuj`tmb-k*d`sOsNbRbY&fV]R9;X`M>3YVaMgr"lPiG&n$D8B5\/:AilKX!gF.god5m/$8""68d=e6GdCD.3f*k.qlkR/`B/sDjT3Ti_Ba.V$ST-49D%9TtWCKDZ5ZMn+'+_FaomO)m>&%g":4HZGb(-&9c;*S-(H<$`(N$_$b`g&[GA'AE4;J[IPi(,cm`j^cQ%=eijdMLpA4cSc;,A23H\mN:%"P:6eVU2ThT&"D?%JETd^5'd;mc$c47n5XF&[`WqsaDOQ0h)W*F@mjlKP=8!'O8',Q9bg^S(#5lbF6VR2boui*sa2-YQanr.e@-!#,p[s,bq1L*nf9g/`jaPRrG=JTiYG"&HFWO8BBPfArO>^J3-+$_/\C)X*9sE5&ZB=na#[N&HMEQhlV53Di,^j^5oH(4>@A)3L,",U%MAS!:=2qqV@&W$d#U*h!bc"5P5d(Hmg><76/-o_ou^:OOL)YSm%Ur[8L[*p.pi=&4$h_I/7*72A5Ab6uYO3J@7sU/TP-Sj425!ap;Sk5ej][T\[>Z9Fem"F,_*d8K]BIr/K=;6nn!"QNs#qPVTj]re/Y>cJRgA@h!c"G[!`CMsD-`F8oendstream endobj % 'Annot.NUMBER143': class PDFDictionary 200 0 obj << /A << /S /URI /Type /Action /URI (http://www.tex.ac.uk/tex-archive/info/lshort/english/lshort.pdf) >> /Border [ 0 0 0 ] /Rect [ 62.69291 220.1736 532.5827 232.1736 ] /Subtype /Link /Type /Annot >> endobj % 'Page36': class PDFPage 201 0 obj % Page dictionary << /Annots [ 195 0 R 200 0 R ] /Contents 344 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << /FormXob.ee65afc714a21fa854c1b9cc08c5a03c 196 0 R /FormXob.fddb44bbe3ec01aabf0db1a788f9f721 198 0 R >> >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER144': class LinkAnnotation 202 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 228 0 R /XYZ 68.69291 684.6772 0 ] /Rect [ 227.7729 690.7736 232.2209 702.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER145': class PDFDictionary 203 0 obj << /A << /S /URI /Type /Action /URI (http://code.google.com/p/rst2pdf/issues/detail?id=5) >> /Border [ 0 0 0 ] /Rect [ 179.9529 642.7736 224.4129 654.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER146': class LinkAnnotation 204 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 228 0 R /XYZ 68.69291 660.6772 0 ] /Rect [ 361.7229 475.5736 366.1709 487.5736 ] /Subtype /Link /Type /Annot >> endobj % 'Page37': class PDFPage 205 0 obj % Page dictionary << /Annots [ 202 0 R 203 0 R 204 0 R ] /Contents 345 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page38': class PDFPage 206 0 obj % Page dictionary << /Contents 346 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page39': class PDFPage 207 0 obj % Page dictionary << /Contents 347 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page40': class PDFPage 208 0 obj % Page dictionary << /Contents 348 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER147': class PDFDictionary 209 0 obj << /A << /S /URI /Type /Action /URI (http://web.chad.org/projects/smartypants.py/) >> /Border [ 0 0 0 ] /Rect [ 137.7329 708.7736 194.9729 720.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page41': class PDFPage 210 0 obj % Page dictionary << /Annots [ 209 0 R ] /Contents 349 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page42': class PDFPage 211 0 obj % Page dictionary << /Contents 350 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER148': class PDFDictionary 212 0 obj << /A << /S /URI /Type /Action /URI (http://sphinx.pocoo.org) >> /Border [ 0 0 0 ] /Rect [ 62.69291 708.7736 96.04291 720.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page43': class PDFPage 213 0 obj % Page dictionary << /Annots [ 212 0 R ] /Contents 351 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page44': class PDFPage 214 0 obj % Page dictionary << /Contents 352 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page45': class PDFPage 215 0 obj % Page dictionary << /Contents 353 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page46': class PDFPage 216 0 obj % Page dictionary << /Contents 354 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page47': class PDFPage 217 0 obj % Page dictionary << /Contents 355 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page48': class PDFPage 218 0 obj % Page dictionary << /Contents 356 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER149': class PDFDictionary 219 0 obj << /A << /S /URI /Type /Action /URI (http://rst2pdf.googlecode.com) >> /Border [ 0 0 0 ] /Rect [ 313.8329 615.7736 448.3529 627.7736 ] /Subtype /Link /Type /Annot >> endobj % 'Page49': class PDFPage 220 0 obj % Page dictionary << /Annots [ 219 0 R ] /Contents 357 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page50': class PDFPage 221 0 obj % Page dictionary << /Contents 358 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Page51': class PDFPage 222 0 obj % Page dictionary << /Contents 359 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'Annot.NUMBER150': class LinkAnnotation 223 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 151 0 R /XYZ 516.5929 692.0236 0 ] /Rect [ 68.69291 707.4272 74.25291 719.4272 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER151': class LinkAnnotation 224 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 205 0 R /XYZ 227.7729 704.0236 0 ] /Rect [ 68.69291 671.4272 74.25291 683.4272 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER152': class PDFDictionary 225 0 obj << /A << /S /URI /Type /Action /URI (http://deco-cow.sf.net) >> /Border [ 0 0 0 ] /Rect [ 302.3025 671.4272 397.3525 683.4272 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER153': class LinkAnnotation 226 0 obj << /Border [ 0 0 0 ] /Contents () /Dest [ 205 0 R /XYZ 361.7229 488.8236 0 ] /Rect [ 68.69291 647.4272 74.25291 659.4272 ] /Subtype /Link /Type /Annot >> endobj % 'Annot.NUMBER154': class PDFDictionary 227 0 obj << /A << /S /URI /Type /Action /URI (http://pyhyphen.googlecode.com) >> /Border [ 0 0 0 ] /Rect [ 153.7323 635.4272 298.2623 647.4272 ] /Subtype /Link /Type /Annot >> endobj % 'Page52': class PDFPage 228 0 obj % Page dictionary << /Annots [ 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R ] /Contents 360 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 308 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj % 'toUnicodeCMap:AAAAAA+DejaVuSans': class PDFStream 229 0 obj << /Length 1882 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (AAAAAA+DejaVuSans) /Ordering (AAAAAA+DejaVuSans) /Supplement 0 >> def /CMapName /AAAAAA+DejaVuSans def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 128 beginbfchar <00> <0000> <01> <0001> <02> <0002> <03> <0003> <04> <0004> <05> <0005> <06> <0006> <07> <0007> <08> <0008> <09> <0009> <0A> <000A> <0B> <000B> <0C> <000C> <0D> <000D> <0E> <000E> <0F> <000F> <10> <0010> <11> <0011> <12> <0012> <13> <0013> <14> <0014> <15> <0015> <16> <0016> <17> <0017> <18> <0018> <19> <0019> <1A> <001A> <1B> <001B> <1C> <001C> <1D> <001D> <1E> <001E> <1F> <001F> <20> <0020> <21> <0021> <22> <0022> <23> <0023> <24> <0024> <25> <0025> <26> <0026> <27> <0027> <28> <0028> <29> <0029> <2A> <002A> <2B> <002B> <2C> <002C> <2D> <002D> <2E> <002E> <2F> <002F> <30> <0030> <31> <0031> <32> <0032> <33> <0033> <34> <0034> <35> <0035> <36> <0036> <37> <0037> <38> <0038> <39> <0039> <3A> <003A> <3B> <003B> <3C> <003C> <3D> <003D> <3E> <003E> <3F> <003F> <40> <0040> <41> <0041> <42> <0042> <43> <0043> <44> <0044> <45> <0045> <46> <0046> <47> <0047> <48> <0048> <49> <0049> <4A> <004A> <4B> <004B> <4C> <004C> <4D> <004D> <4E> <004E> <4F> <004F> <50> <0050> <51> <0051> <52> <0052> <53> <0053> <54> <0054> <55> <0055> <56> <0056> <57> <0057> <58> <0058> <59> <0059> <5A> <005A> <5B> <005B> <5C> <005C> <5D> <005D> <5E> <005E> <5F> <005F> <60> <0060> <61> <0061> <62> <0062> <63> <0063> <64> <0064> <65> <0065> <66> <0066> <67> <0067> <68> <0068> <69> <0069> <6A> <006A> <6B> <006B> <6C> <006C> <6D> <006D> <6E> <006E> <6F> <006F> <70> <0070> <71> <0071> <72> <0072> <73> <0073> <74> <0074> <75> <0075> <76> <0076> <77> <0077> <78> <0078> <79> <0079> <7A> <007A> <7B> <007B> <7C> <007C> <7D> <007D> <7E> <007E> <7F> <007F> endbfchar endcmap CMapName currentdict /CMap defineresource pop end endendstream endobj % 'fontFile:/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf(AAAAAA+DejaVuSans)': class PDFStream 230 0 obj << /Length 35460 /Length1 35460 >> stream  POS/2!r-Vcmap W 4cvt i9Lfpgmq4vjLglyf-@?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_5fqu-J3T99NR7s`s3VV9s3D{o{RoHT3fs +b-{T#\q#H99`#fy```{w``b{{Rffw;{J/}oo5jo{-{T7fD)fs, %Id@QX Y!-,%Id@QX Y!-,  P y PXY%%# P y PXY%-,KPX EDY!-,%E`D-,KSX%%EDY!!-,ED-,%%I%%I` ch #:e:-ff@ /10!%!!fsr)5 5@ K TX8Y<2991/0 P ]%3#3#5qeB@KTKT[X8Y1<20@0 @ P ` p ]#!#o$++`@1      91/<<<<<<<2220@   ]!! !3!!!!#!#!5!!5!T%Dh$ig8R>hggh`TifaabbNm!(/@U" '&( /)/))/B" ) *!#*- ) " & 0K TX8YK TKT[KT[X@8Y<<<1/299990KSX99Y"#.'5.546753.'>54&dijfod]SS\dtzq{---@A$*.U# jXV`OnZXhq) #'3@6$%&%&'$'B .$ &($4'!%   ! + 1 4K TK T[K T[KT[KT[K T[X18Y9912<0KSXY""32654&'2#"&546"32654&%3#2#"&546WccWUccUVcbWWcd1Zܻۻa ۻۼ 0@      !         B  (('+'$ .  .'.'!!199999991/9990KSX99999999Y"2]@ " ) **&:4D ^YZ UZZY0g{ "-  ' (   2'') #**(/2; 49?2J LKFO2VZ Y UY\_2j i`2uy z 2229]]3267 >73#'#"5467.54632.#"[UԠ_I{;B h]hΆ02޸SUWDi;#QX?@Yr~YW׀c?}<$$/1oX3go7@ KTKT[X8Y10@ @P`p]#o+{ 7@  KTX 8YKTX @8Y29910#&547{>;o @ <99103#654<:=JN@,       <2<2991<22990 %#'-73%g:r:g:PrPbybcy #@   <<1/<<0!!#!5!-Ө-Ӫ--@ 1073#ӤR@d10!!d1/073#B-@B/9910KSXY"3#m #@  10"32'2#"  P3343ssyzZ @@B  KTX@8Y1/20KSXY"]7!5%3!!JeJsHHժJ@'B   KTKT[KT[X8Y91/20KSX9Y"@2UVVzzvtvust]]%!!567>54&#"5>32Ls3aM_xzXE[w:mIwBC12\ps(p@.    #)&  )KTKT[X 8Y99190@ daa d!]!"&'532654&+532654&#"5>32?^jTmǹSrsY %Đ%%12wps{$& Ѳ|d @   B    K TK T[X 8Y<291/<290KSXY"@* *HYiw+&+6NO O Vfuz ]] !33##!55^%3`d^@#    KTKT[X8YKTX@8Y190!!>32!"&'532654&#",X,$^hZkʭQTժ 10$& $X@$  "% " !%190@]]"32654&.#">32# !2 LL;kPL;y$&W]ybhc@B991/0KSXY"KTX@878Y@X9Hg]]!#!3V+ #/C@% '-'0 $*$ !0991990"32654&%.54$32#"$54632654&#"HŚV г "Əُattt$X@# %!"" %190@]]7532#"543 !"&2654&#"LK:lL>$& V\s[#@<21/073#3### %@  <2103#3#ӤR#٬@^M@*B$#29190KSXY" 5Ѧ`@ #<210!!!!^O@+B$#<9190KSXY"55//m$e@+$     &%K TX8Y99991/9990y z z ]%3##546?>54&#"5>32ſ8ZZ93lOa^gHZX/'eVY5^1YnFC98ŸLVV/5<4q L@2  L4307$7CM34( (+(I+*(I,=M<9912990K TK T[KT[KT[KT[XMMM@878Y@ NN/N?N]32654&#"#"&5463253>54&'&$#"3267#"$'&5476$32|{zy!orqp ˘s'6@   0210].# !267# !2'ffjzSb_^^_HHghG.@   2 99991/0`]3 !%! )5BhPa/w.,~ .@   21/0 ]!!!!!!9>ժF# )@ 21/0 ]!!!!#ZpPժH7s9@ 43 1990%!5!# !2.# !26uu^opkSUmnHF_`%; ,@ 8  221/<20P ]3!3#!#"d+9.KTX@8Y1/0@ 0@P`]3#+f B@  9 KTX@8Y991990@ 0 @ P ` ]3+53265M?nj @(B  291/<290KSXY"]@ ((764GFCUgvw    (+*66650 A@E@@@ b`hgwp  ,]q]q3! !#3wH1j%@ :1/0@ 0P]3!!_ժ @4  B    >  91/<290KSXY"p]@V   && & 45 i|{y   #,'( 4<VY ej vy ]]! !###-}-+3 y@B6 991/<2990KSXY" ]@068HGif FIWXeiy ]]!3!#j+s #@  310"32' ! ':xyLHH[[bb:@   ? 291/0@ ?_]32654&#%!2+#8/ϒs R@*  B     39991990KSX9Y""32#'# ! '? !#y;:xLHHab[T@5  B    ?  299991/<9990KSX9Y"@]@Bz%%%&'&&& 66FFhuuw]]#.+#! 32654&#A{>ٿJx~hb؍O'~@<    B %( "-"(9999190KSX99Y")])/)O)].#"!"&'532654&/.54$32Hs_wzj{r{i76vce+ٶ0/EF~n|-&J@@@1/20K TX@878Y@  @ p ]!!#!ժ+)@@   8AKTX8Y1299990]332653! ˮ®u\*$h@'B91/290KSXY"P]@b*GGZ} *&&))% 833<<7HEEIIGYVfiizvvyyu)]]!3 3J+D {@I      B     91/<2290KSXY"]@  ($ >>4 0 LMB @ Yjkg ` {|      !   # $ %  <:5306 9 ? 0FFJ@E@BBB@@ D M @@XVY Pfgab```d d d wv{xwtyywpx   []]3 3 3# #D:9:9+=; f@  1 ]@ /<20KBPX@   @    Y3 3 # #su \Y+3{@(B@@ 91/290KSXY" ]@<5000F@@@QQQe &)78@ ghxp ]]3 3#f9\ @BB K TK T[X8Y991/0KSXY"@@ )&8HGH    / 59? GJO UYfio wx ]]!!!5!sP=g՚oX;@CK TX@8YKTKT[X8Y210!#3!XB-@B/9910KSXY"#mo0@CKTKT[X@8Y<10!53#5oXޏ@ 91290 # #HHu-10!5f1@ D10K TKT[X@878Y #ofv{-{ %@'   #   E&22991/9990@n0000 0!0"?'@@@@ @!@"PPPP P!P"P'p' !"'''000 0!@@@ @!PPP P!``` `!ppp p! !]]"326=7#5#"&5463!54&#"5>32߬o?`TeZ3f{bsٴ)Lfa..'' 8@  G F221/0`]4&#"326>32#"&'#3姒:{{:/Rdaadq{?@  HE210@ ].#"3267#"!2NPƳPNM]-U5++++$$>:#qZ8@G E221/0`]3#5#"3232654&#":||ǧ^daDDaq{p@$   KE9190@)?p?????,// , ooooo ]q]!3267# 32.#" ͷjbck)^Z44*,8 Cė/Y@     LK TX @8YKTX 8Y<<991/22990@P]#"!!##535463cM/ѹPhc/яNqVZ{ (J@#  &#' & G E)221/990`***]4&#"326!"&'5326=#"3253aQQR9||9=,*[cb::bcd4@  N  F21/<90`]#4&#"#3>32d||Bu\edy+@F<21/0@  @ P ` p ]3#3#`Vy D@   O  F<2991990@ @P`p]3+532653#F1iL`a( @)B F 291/<90KSXY" ]@_ ')+Vfgsw    ('(++@ h` ]q]33 ##%kǹi#y"F1/0@ @P`p]3#{"Z@&   PPF#291/<<<290@0$P$p$$$$$$$ ]>32#4&#"#4&#"#3>32)Erurw?yz|v\`gb|d{6@  N  F21/<90`]#4&#"#3>32d||Bu\`edqu{ J@  QE10@#?{{   {  {]"32654&'2#"s98V{>@ GF2210@ `]%#3>32#"&4&#"326s:{{8 daaqVZ{ >@   GE2210@ `]32654&#"#"3253#/s:||:/daDDadJ{0@    F21/90P].#"#3>32JI,:.˾`fco{'@<  S  SB %( R"E(9999190KSX99Y"']@m   . , , , ; ; ; ; $( ( *//*(() )!$'      '/)?)_))))))]]q.#"#"&'532654&/.54632NZb?ĥZlfae@f?((TT@I!*##55YQKP%$78@  F<<2991/<2990]!!;#"&5#53w{KsբN`>X{;@    NF921/290o]332653#5#"&||Cua{fc=`@'BK TX@8YKTKT[X8Y91/290KSXY"@Hj{  &&)) 55::0FFIIFH@VVYYPffiigh`ut{{uz>]]3 3#=^^\`TV5` @IU U U U   B     K TKT[KT[KT[K T[X@8YK TK T[KT[X8Y91/<2290KSXY"@" 5 IIF @ [[U P nnf yy          %%#'!%""%' $ ! # 9669 0FHF@B@@@D D D @@VVVPQRRPS T U cdejejjjn a g ouuy}x}zzxy  { v } @/   y]]333# #V`jjj;y` C@F      B   K TKT[KT[KT[X@8YKTX8Y91/<290KSXY"@   & =1 UWX f vzvt        )&% * :9746 9 0 IFE J @ YVYYWVYVV Y P o x  /]] # # 3 dkr))`HJq=V`@C        B     K TKT[X @8YKTX 8Y9129990KSX2Y"@     # 5 I O N Z Z j        '$$  )( % $ $ ' ** 755008 6 6 8 990A@@@@@@@@B E G II@TQQUPPVUVW W U U YYPffh ii`{xx   e]]+5326?3 3N|lLT3!;^^hzHTNlX` @B K TK T[X8YKTX@8Y2991/0KSXY"@B&GI  + 690 @@E@@CWY_ ``f``b ]]!!!5!qjL}e`ۓ%$w@4 %   !  % $  C %K TX@8Y<<29999999199999990&]#"&=4&+5326=46;#"3>l==k>DV[noZVtsݓXX10#$@6%   #%#C %K TX8YKTX@8Y<2<9999999199999990&]326=467.=4&+532;#"+FUZooZUF?l>>l?VWstݔ1#@  1990#"'&'&'&#"5>32326ian ^Xbian ^V1OD;>MSOE<>LTzK1_<˩˩ r Um Q r`f55q=3=dd?y}s)3s\\?uLsLsyD{={\{fqqq/q999qqJ+o#7=V;=3X""T6jFpVHr"  2 n  p , V 4 hB2(v* ,BjLN:b6&v.zNf `T+h >2   : `   (Z4;b ;; 0    " F m " : %: h: ; ;Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain DejaVu SansDejaVu SansBookBookDejaVu SansDejaVu SansDejaVu SansDejaVu SansVersion 2.33Version 2.33DejaVuSansDejaVuSansDejaVu fonts teamDejaVu fonts teamhttp://dejavu.sourceforge.nethttp://dejavu.sourceforge.netFonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) Bitstream Vera Fonts Copyright ------------------------------ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. Arev Fonts Copyright ------------------------------ Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev". This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names. The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.http://dejavu.sourceforge.net/wiki/index.php/Licensehttp://dejavu.sourceforge.net/wiki/index.php/LicenseDejaVu SansDejaVu SansBookBook~Z@%2%%A:B2SAS//2ݖ}ٻ֊A}G}G͖2ƅ%]%]@@%d%d%A2dA  d   A(]%]@%..%A  %d%@~}}~}}|d{T{%zyxw v utsrqponl!kjBjSih}gBfedcba:`^ ][ZYX YX WW2VUTUBTSSRQJQP ONMNMLKJKJIJI IH GFEDC-CBAK@?>=>=<=<; <@; :987876765 65 43 21 21 0/ 0 / .- .- ,2+*%+d*)*%)('%(A'%&% &% $#"!! d d BBBdB-B}d       -d@--d++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++endstream endobj % 'fontDescriptor:AAAAAA+DejaVuSans': class PDFDictionary 231 0 obj << /Ascent 759.7656 /CapHeight 759.7656 /Descent -240.2344 /Flags 4 /FontBBox [ -1020.508 -415.0391 1680.664 1166.504 ] /FontFile2 230 0 R /FontName /AAAAAA+DejaVuSans /ItalicAngle 0 /StemV 87 /Type /FontDescriptor >> endobj % 'F2+0': class PDFTrueTypeFont 232 0 obj % Font DejaVuSans subset 0 << /BaseFont /AAAAAA+DejaVuSans /FirstChar 0 /FontDescriptor 231 0 R /LastChar 127 /Name /F2+0 /Subtype /TrueType /ToUnicode 229 0 R /Type /Font /Widths [ 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 600.0977 317.8711 400.8789 459.9609 837.8906 636.2305 950.1953 779.7852 274.9023 390.1367 390.1367 500 837.8906 317.8711 360.8398 317.8711 336.9141 636.2305 636.2305 636.2305 636.2305 636.2305 636.2305 636.2305 636.2305 636.2305 636.2305 336.9141 336.9141 837.8906 837.8906 837.8906 530.7617 1000 684.082 686.0352 698.2422 770.0195 631.8359 575.1953 774.9023 751.9531 294.9219 294.9219 655.7617 557.1289 862.793 748.0469 787.1094 603.0273 787.1094 694.8242 634.7656 610.8398 731.9336 684.082 988.7695 685.0586 610.8398 685.0586 390.1367 336.9141 390.1367 837.8906 500 500 612.793 634.7656 549.8047 634.7656 615.2344 352.0508 634.7656 633.7891 277.832 277.832 579.1016 277.832 974.1211 633.7891 611.8164 634.7656 634.7656 411.1328 520.9961 392.0898 633.7891 591.7969 817.8711 591.7969 591.7969 524.9023 636.2305 336.9141 636.2305 837.8906 600.0977 ] >> endobj % 'toUnicodeCMap:AAAAAA+Cmr10': class PDFStream 233 0 obj << /Length 1867 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (AAAAAA+Cmr10) /Ordering (AAAAAA+Cmr10) /Supplement 0 >> def /CMapName /AAAAAA+Cmr10 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 128 beginbfchar <00> <0000> <01> <0001> <02> <0002> <03> <0003> <04> <0004> <05> <0005> <06> <0006> <07> <0007> <08> <0008> <09> <0009> <0A> <000A> <0B> <000B> <0C> <000C> <0D> <000D> <0E> <000E> <0F> <000F> <10> <0010> <11> <0011> <12> <0012> <13> <0013> <14> <0014> <15> <0015> <16> <0016> <17> <0017> <18> <0018> <19> <0019> <1A> <001A> <1B> <001B> <1C> <001C> <1D> <001D> <1E> <001E> <1F> <001F> <20> <0020> <21> <0021> <22> <0022> <23> <0023> <24> <0024> <25> <0025> <26> <0026> <27> <0027> <28> <0028> <29> <0029> <2A> <002A> <2B> <002B> <2C> <002C> <2D> <002D> <2E> <002E> <2F> <002F> <30> <0030> <31> <0031> <32> <0032> <33> <0033> <34> <0034> <35> <0035> <36> <0036> <37> <0037> <38> <0038> <39> <0039> <3A> <003A> <3B> <003B> <3C> <003C> <3D> <003D> <3E> <003E> <3F> <003F> <40> <0040> <41> <0041> <42> <0042> <43> <0043> <44> <0044> <45> <0045> <46> <0046> <47> <0047> <48> <0048> <49> <0049> <4A> <004A> <4B> <004B> <4C> <004C> <4D> <004D> <4E> <004E> <4F> <004F> <50> <0050> <51> <0051> <52> <0052> <53> <0053> <54> <0054> <55> <0055> <56> <0056> <57> <0057> <58> <0058> <59> <0059> <5A> <005A> <5B> <005B> <5C> <005C> <5D> <005D> <5E> <005E> <5F> <005F> <60> <0060> <61> <0061> <62> <0062> <63> <0063> <64> <0064> <65> <0065> <66> <0066> <67> <0067> <68> <0068> <69> <0069> <6A> <006A> <6B> <006B> <6C> <006C> <6D> <006D> <6E> <006E> <6F> <006F> <70> <0070> <71> <0071> <72> <0072> <73> <0073> <74> <0074> <75> <0075> <76> <0076> <77> <0077> <78> <0078> <79> <0079> <7A> <007A> <7B> <007B> <7C> <007C> <7D> <007D> <7E> <007E> <7F> <007F> endbfchar endcmap CMapName currentdict /CMap defineresource pop end endendstream endobj % 'fontFile:/usr/share/fonts/truetype/lyx/cmr10.ttf(AAAAAA+Cmr10)': class PDFStream 234 0 obj << /Length 19112 /Length1 19112 >> stream  POS/2P7Ncmap W ,cvt MOJDfpgma glyf@,headfHE$6hhea _lE\$hmtxA"Eloca$GmaxpOG name7G|post~J` prepVbJ(qZqf @ &kZ    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_+BZsswmjh^VRNJHB=;753/!{RmZ'm%}ysojbRHB;5!@ ,C b#BfV-,*CTx+X9Y+X54'#"&54632#"&%47>54'#"&54632#"&bLV9.BB.3@aT NT8/BB/2@aS ; Bf 'B/0@Df/qJ Dg 'B/0@Df/qKss5GKO@D'K. I0B7  E;"  4KJIHBA@>80/'& .+ M+1????+047!"&5463!!"&5463!>32!>32!2#!!2#!#"&547!#"&!!V}Q2fR  Ql<  l<sOX_\@SYXA2 @ *<9Z@!+ PN" ( HT<;N/5 PNAZh*( "^N a+1?++05".54632+"'.#3.'&=467>3532#"&546;23.##5>54.''mX:((::(W|B<373r<6+=Hf\:((::(Xy>Tj/oKH?uDs_lj(::((:Al;V"tK:+H^\ai(::((:=Z210323267632#"&2654.#"".54>32'2>54&#"{)@eD`EE`L?yC  eh+\FfBD`EE`Yx7?eEE^*hefBDJ fESbyB}Q][=kd UwCyㆁ][WBQ6{CvㅂV:FSY@Q=/* 'N @!G" 5;7*"3 /!JR '=j J@_RUCU+++++04?.54>32>?654!"32>53#"'#"&&27&'>54.#"VR'+GV^WqBUe3=[S3 X8ɹGBDqDCJ;g=54'#"&54632#"&NT8/BB/2@aS ; Dg 'B/0@Df/qK @ `"++..0. 54674;2+"{ri44ko  dQ$\  Z   W  bu  sT@ `++..0"547&546;2 #^ [1kr VR  tđZy70@)50+( %543-+*"!: 9+1*0"&547-&54632'4632%632 #"'%#"&57%'$%% #'# %% L'""& L  &""'  !K sV&@  g !++..+0"&5463!4632!2#!#"&5ZZ\\s @  k+1?+047>=#"&54632#"&JR!1/BB/I>[S  Gg!B/0@RrR{5@@+1+05!{ @ H+1+074632#"&D-6B.-Dq.B6-DDs@ 8 +1..047>32#"&s 8 ) JPT #@' ' U U"+1+0"4632'2654&#"AZ!Arpostp 0k-:ۄ5rד^T$@ "  Z ++?+035 5#52732!j HA33H GAHfT2D@;.) +  " 1+ )  120.O$ *H4++1++03547>54.#"632#"&54>323267673f>HZX3>{WY.AA.0A:mMuvNző<:7`NjPT\kU>1/AC-Mi8cyYVTKP@G%D  %, 5$ #= " J95N1K"(GHAM++1+*0732654.+"=4372>54&#">32#"&54>32#".54632#0]wd2W?qH_,\^N*.>>.-@jT>pGMPYa|p`{D3!7F1FDˁ:td< lFb~;<@-,@@,XC%ElEVjdZqgIf3D8 2D9T/@&"   W ++?..+056;23#3!52655%!9yxOOx'RH ]H*HH*HfTFC@;D>  +), '/ #7 &$Q3A;h,H+1++0732654&'.#"#"&546;32732##"'>32#".54632#"&Ww@p _EEc>0  FqRVDkSq`yzea<--==-  BB  ]h}7/m{|hc.:;-,=VT,B@@8$ % !6&$ -# P)2N <?!N:D+1++0".54632#"&546;.#">32'2>54.#"]$~FyE9*(::( _3>iT8$S[l9k{O`- beSk1$f-yF5gI*9:)(:%#6\o|^TkJVxـAHwyXt}pOX|sh $@   N"++?+0%4>7# #33!#"&d(MmA ;C++1++0467'.54>32#"&&732654.'%>54.#"VLFXga[mAq@uQcwmj{oYPw7"@k>VnM|G>~R7{?1.TbZJ_Ev^!K5_odVkQLs'M?"h)2YEs@0_@`VT(:;@3  2% "&) # N/N%P7<+1++073267>5#".54>32#"&54632#2>=4&#"8N%+#Uwdp~|X#ty9*)9:(Tk0ZQe0 bVBjMWŒSjw{}trs*99*(:qS'GvOt}s "@   H +1+074632#"&4>32#"&D-6B.-D55A/.Cq.B6-DD4 4.CCss&)@!$    !k(+1?+0476=#"&54632#"&4>32#"&#/BB/G/#G1 55A/.C  B/0@VH5}4 4.CCF@H  +1..+0546;2#"&4632#"&T  RC-,ED-6B.-D  P +;;-D6,DDs  @2  +1+0"&5463!2#"&5463!2#s\R,96@,7 07'* # N& H4-U;+1?.++0467>=46;23267#"&54632#"&4632#"&s..Ea5  KJ+GI\. )::)(:zYD-6B.-D;o%8Xd he:pK]854.#"32#"&54>32+"&VD-6B.-DTbZ&^UO& )9:((:cSau83u  q.B6-DDTh] Y1T`,@?9*(::(TD3~f32#"&'#".54>323232654.#"32>732267.#"eedLHx0KvjjvW/g $^5\鄄][aüY\ R&Mg5Bd> 9tw  vvHA>KrpbN *Kpqp:, PkR4U3Ox;TB1@(" "  1!+1..+035276;23!52=!3!B*kPŪo\a8#Hy+HH7 @31HF5w%6:@42" &'%" L M ,&U8+++035254#5!22#%3!2>54.#!5!2>54.#!"Fhԋ͉YxkZ26PPB{Ow3>mW/#D\5%)HAeAHQl}b\p],TPN`6-Uk<5bP-sR:8@/0* 2 2"# " 08 'j J8<++1++0%32>54;2#"$&546$3276;2+"54.'&#"Fq_yARjmmiHw  %/I0sqGK::YgK^kǗTwu[S ;2pfZ`Dw(*@$$" " L S*+++035254#5!2#%;267>54&'.+"DYZ26i>A,,A=k%)HAeAHyr,[QVՏXW]?7w-D@=! "  ,"!&" , j"Q/+++*035254#5!#.+"32>53#4.+;2>73?9;O%)hg'<<'gh26َa5;VHAeAH+< #cihd#,-i?w&;@2 "  "" &j#Q(++?.++035254#5!#.+"32>53#4.+!?i9;/Z%)ib%;;%biHAeAH+U"%biib%AHs?D@:60 8 "%8") "  6 > -%QJ>A++1?++0%326=4!5!"#"&'#"$546$3276;2+"54.'&#"JtrKAL Y2unjJw  %/I0srGK:ZftkAHH+l Z#VTWőu[S ;2pfZ`?w#:@/"    #  Q Q %+++????+035254#5!"!4#5!"3!525!3?e\dHAeAHHAAHHAAHHA+AH5w@  Q ++??035254#5!"35yHAeAHHAAHLw#(@'  R G %+1?.+0732>54!5!"#".54632#%vCB[-hEXq_SaD3!6D2s47[?AHH+3bTCT3D8 2D?w*A@:&%$   " )" *"  'Q ,++++035254#5!"654!" 3!52654'3?ey7#7Sc1CHAeAHHAh` !HHygQ(HH%' AH?w$@"   Q ++?.+035254#5! ;2>73?26E;9HAeAHHA,pH w%7@+!     % " Vi"'+++?????*035254#5!2 63!"3!525#"'3H  Hy-AHyHAAHHA yH?w2@&       i i!+++????..03525!24#5!"+"'3?C  Hyb HryHHy\ yHs*#@ $ $ JJ',+1+0"$54>3232>76'.#"ɰeb54&+"DpqqA%)HAeAH\urY AHApss&1NO@E9, D$ '6,M'%  % 9)%>/ L>Mk/2LJP++1?++0"$54>3232654632#".''27.#"'4>32>54&'.#"&ɰebc~'RIMnsH^1 Zf\VOP1DAv,O/Yh(D\39D;eg54.'%.54>3276;2+"54.'&#"#".'+"s GxC2^;ljyT #>$cFvFmX BuN,fnDx1V  RG>uVA#هjl %4|r$dGzCXASnHox>1J{w"&@ "  "Q$++?..+0!52654&+"#!#.'&+"3Zg17VG% ;''< &HV%)fH*e,J%{+$J*H?w"-@$ "    hQ $+++??+04#5!"32>54#5!"#"&&e?xu`CaAHHAr{uyHHy_T'w*@!"    / +1?.+0.#5!" 654!"+"fO3s\9Mu1+HH52.HH9@3%w09@/!"" + / (   ,"2+1??*+0.#5!" '.#5!" 654!"+"' +"}^\J%G/\J$F3r>&p+HH7 ^+HH7  60HHy3/w1F@>*)  " 0$!#" 1-*)'$ 0"3+1++03527 .#5!"654!" 3!52654' 3/ST mT=%` S.S#kS!eR-Ht>&HHh` *0HHu]l'HHI *0Hw!/@' "  !  S#++?.+0!525.#5!" 654!"3RlSArR G,P'sHA)HH/ +)%HH973_<-m;).<#L (:)|tb  @g +1+0!#3RR/75@+20 %    5(k.k9++1??+0"&5467632632!"&54>7632632ID_U 1L%8 3A^JD,S6  1J&91?@RqL +xB '2!/ARN/ +uB 'A0.B-F @g +1+053#5!-R\RN@ ?+1?*0' '()N++yZ @  H+1+04632#"&D-6B.-D-D6,DD@  k+1?+0"&54>7632632JD,S6  1J&91?@RN/  +uB 'A0.BR2>G@>   & $';,6&/ ) j%";,[3W @+1?++0746$354.#"2#"&54632326=3#"&'#"&&732>="R y4b;G'3:():vSk"$"!<0Q/32#"&'732>54'.#"!>A/"[h6\tAy}N0FZ"Nj4-EU/R)71 H&9JZ|PB{K_zgZ(D'WIDR*0@(($ $ $ (N U,+1++0".54>32#"&5467&#"32674;2|ts|x9))9."Gbx0;ca yyޅ^k(;;($5-^cyw` yD;.=@3( ('  &   $ [U,0+1??++0".54>324.#5%35%3267.#"yoy}K1!=A/!=A5#uEU#I[3k4x|~?871 H-61 H=DCPbN-G&ygRz9R (3@+ && ("$  \"!T*+1++0".54>32#!32>7>;2!4.#"}wmx^Z.?kO y+dQtzx؅?p[8d9 t#MiB(=@4 '  ""  ("R \$*+1?++035265#5354>32#"&547&#"3#3BEZ7]yAEo5''77!32>32#"&547"#"';2#"&&732>54&+"254&#"9jI)+=^7bx?za*s>,8&&jL%-`Sp]G6ząZ[ԘspFEoČ/O0JddJLIm^5`J\w@pR+G-1?,&&&I%k5WM=(26Q,yZw55wZE]--]Ek?-QkkDnF=L(3@)  '  [(  [$*+1???+0352654.#5%>323!52654&#"3=FZ!>A0+]ZF+FZ:ZwZEH+371 H@Ug+HH+dyl+H?Z%@   \ +1??+0352654%34632#"&?FZ=Z'NAD,6D-,DH+/O$H+H-D6,DD\Z)=@1 ' ' '   $] N+++1??.++032654.#5%#"&546324632#"&)/;Q?(EC?NOY:((:#D-6B.-D`"71 HOUXP(::(48-D6,DD5*A@9%$#  " )"  !* &] ,++?++0352654.#5%%654!"3!5254'35FZ!>A/)"6IThF%}[EH+371 H4'!HHyM,HH+/l+H?@  \ +1??0352654.#5%3?FZ!>A0ZEH+371 H+H=?G@<  7&' /  [#.0[*4?  [;A+1????+0352654.#5%>32>323!52654&#"3!52654&#"3=FZ!>A))_))^]@[E+FZ:ZvZF+FZ:ZwZEH+/71 HXpVj<{]+HH+g~yl+HH+dyl+H=L(5@+   '  [(  [$*+1???+0352654.#5%>323!52654&#"3=FZ!>A))_ZF+FZ:ZwZEH+/71 HXp+HH+dyl+H9$#@& $ T T!&+1+0".54>32'2654&'.#"{zC}a~xzzn%GO*@s&&(y}|^M~{}@4*!  *% !&  U&  [/+1??++052654%>32#"'332>54.#"5FZPP/8Tymy}g[E$LGmJ#;yVS)sG*8H>Aw|y*GTI_LBRUIDs;+4@,#% &  [U( -+1?+05265#".54>32733267.#"fFZ0P\uAxyW,I6ZE["\FnI$:xsG*{@NLXz~bRs*Gy\hbJ|@R5#.@&  '  #  ] %++??+0352654.#5%>32#"&547#"35FZ!>A%!zW=`5'&6' Si,H+/71 HYoH;%76&7xQAHD@L@B0/$) )) ;?&9  ;0/ , !e4 e,B++1?++04;232654&/.54>3274;2+"54&#"#"'+"D 9afFEqH_XiN;  wk\aAFyG3[|D[K NX\B]>gDZs383 kDS9ILtIJmH"VQ'7@. " $  j [ +1.++07#52653!!326=3#"&Ѫ~;!9JF>;/\B{55HUNy}@}P=L#2@(! &    [[%+1???+074.#5%32654.#5%35#"&!>A6KRn"=A5!>A&R71 HkPY,ul71 H161 HM`}'s!@     7+1???.0!.#5!"654!"+"O@s;(T?_&HH1 '-HH:9H%s21@%- 1 * "   !  1#4+1?????*0!.#5!"'.#5!"654!"+"' +"DAyŪF@yͺI-\>Y -HH3G-HH3  +1HHA8NH!s3D@<,+    " 2&#%" 3/,+)& 5$5+1++03526?.#5!"7654!"3!52654/3N0$UM/{!yO0'TNV."H=<;-HH ՞$HH=<-HH "$H'\s/.@$'#)   T-&1++??..+032?.#5!"654.#5!"#"&54632'/RFNAq+T?_Kl@Kq4&),ì&HH1%HH:9BoGcI&4(!495s3@+  & %   9!+1++03"=47#"#!23267>73P+1??..0632%632o1(!o1(334&34&TX%@   < +1+07632327#".#";PP']]'RL);QO']]'RLF\..\#E]/.]_<F7`7Dsss7V7s7s77sPfV9fVsVV7777sss7sBFsDq?7?Fs?5L7??TH?7sqD7sDqsJ?'7%/s7/7-77Rq5DqD9qB9q=7?q757?=q=9q57D!5'D'q=7'%77'9&&dfdBjL^ L  P * " P >(p(Bd ,Vjd`X`&lb,x `` b__dk{    P Z  h      Copyright (C) 1994, Basil K. Malyshev. All Rights Reserved.012BaKoMa Fonts Collection, Level-B.cmr10RegularFontMonger:cmr10cmr101.1/12-Nov-94Cmr10Copyright (C) 1994, Basil K. Malyshev. All Rights Reserved.012BaKoMa Fonts Collection, Level-B.cmr10RegularFontMonger:cmr10cmr101.1/12-Nov-94Cmr10{@'" '] j ]UQ#J]]+ 5<++endstream endobj % 'fontDescriptor:AAAAAA+Cmr10': class PDFDictionary 235 0 obj << /Ascent 705.0781 /CapHeight 705.0781 /Descent -206.0547 /Flags 4 /FontBBox [ -43.94531 -250 1008.789 750 ] /FontFile2 234 0 R /FontName /AAAAAA+Cmr10 /ItalicAngle 0 /StemV 87 /Type /FontDescriptor >> endobj % 'F9+0': class PDFTrueTypeFont 236 0 obj % Font /usr/share/fonts/truetype/lyx/cmr10.ttf subset 0 << /BaseFont /AAAAAA+Cmr10 /FirstChar 0 /FontDescriptor 235 0 R /LastChar 127 /Name /F9+0 /Subtype /TrueType /ToUnicode 233 0 R /Type /Font /Widths [ 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 333.0078 276.8555 500 833.0078 500 833.0078 776.8555 276.8555 388.1836 388.1836 500 776.8555 276.8555 333.0078 276.8555 500 500 500 500 500 500 500 500 500 500 500 276.8555 276.8555 276.8555 776.8555 472.168 472.168 776.8555 750 708.0078 722.168 763.1836 680.1758 651.8555 784.1797 750 360.8398 513.1836 776.8555 625 916.0156 750 776.8555 680.1758 776.8555 735.8398 555.1758 722.168 750 750 1026.855 750 750 610.8398 276.8555 500 276.8555 500 276.8555 276.8555 500 555.1758 443.8477 555.1758 443.8477 305.1758 500 555.1758 276.8555 305.1758 526.8555 276.8555 833.0078 555.1758 500 555.1758 526.8555 391.1133 394.043 388.1836 555.1758 526.8555 722.168 526.8555 526.8555 443.8477 500 1000 500 500 750 ] >> endobj % 'toUnicodeCMap:AAAAAA+Cmsy10': class PDFStream 237 0 obj << /Length 1882 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (AAAAAA+Cmsy10) /Ordering (AAAAAA+Cmsy10) /Supplement 0 >> def /CMapName /AAAAAA+Cmsy10 def /CMapType 2 def 1 begincodespacerange <00> <80> endcodespacerange 129 beginbfchar <00> <0000> <01> <0001> <02> <0002> <03> <0003> <04> <0004> <05> <0005> <06> <0006> <07> <0007> <08> <0008> <09> <0009> <0A> <000A> <0B> <000B> <0C> <000C> <0D> <000D> <0E> <000E> <0F> <000F> <10> <0010> <11> <0011> <12> <0012> <13> <0013> <14> <0014> <15> <0015> <16> <0016> <17> <0017> <18> <0018> <19> <0019> <1A> <001A> <1B> <001B> <1C> <001C> <1D> <001D> <1E> <001E> <1F> <001F> <20> <0020> <21> <0021> <22> <0022> <23> <0023> <24> <0024> <25> <0025> <26> <0026> <27> <0027> <28> <0028> <29> <0029> <2A> <002A> <2B> <002B> <2C> <002C> <2D> <002D> <2E> <002E> <2F> <002F> <30> <0030> <31> <0031> <32> <0032> <33> <0033> <34> <0034> <35> <0035> <36> <0036> <37> <0037> <38> <0038> <39> <0039> <3A> <003A> <3B> <003B> <3C> <003C> <3D> <003D> <3E> <003E> <3F> <003F> <40> <0040> <41> <0041> <42> <0042> <43> <0043> <44> <0044> <45> <0045> <46> <0046> <47> <0047> <48> <0048> <49> <0049> <4A> <004A> <4B> <004B> <4C> <004C> <4D> <004D> <4E> <004E> <4F> <004F> <50> <0050> <51> <0051> <52> <0052> <53> <0053> <54> <0054> <55> <0055> <56> <0056> <57> <0057> <58> <0058> <59> <0059> <5A> <005A> <5B> <005B> <5C> <005C> <5D> <005D> <5E> <005E> <5F> <005F> <60> <0060> <61> <0061> <62> <0062> <63> <0063> <64> <0064> <65> <0065> <66> <0066> <67> <0067> <68> <0068> <69> <0069> <6A> <006A> <6B> <006B> <6C> <006C> <6D> <006D> <6E> <006E> <6F> <006F> <70> <0070> <71> <0071> <72> <0072> <73> <0073> <74> <0074> <75> <0075> <76> <0076> <77> <0077> <78> <0078> <79> <0079> <7A> <007A> <7B> <007B> <7C> <007C> <7D> <007D> <7E> <007E> <7F> <007F> <80> <00A7> endbfchar endcmap CMapName currentdict /CMap defineresource pop end endendstream endobj % 'fontFile:/usr/share/fonts/truetype/lyx/cmsy10.ttf(AAAAAA+Cmsy10)': class PDFStream 238 0 obj << /Length 22176 /Length1 22176 >> stream  POS/2.Ncmap z,cvt J!EDDfpgmaglyfnbL@headgCQ6hhea4Q@$hmtx'^QdlocaRmaxpS nameSpost~V\ prepo-)5V|"Zqqf @ "R;    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a $2'ysm`\RNHB;95!s?)TRPsou% }ysbZTRNJHF;95!@ ,C b#BfV-,*CTx+X9Y+X7NxP) InVkt )q8_ X^ %q P#s,@*&  M&.++*0#"=47>7>32#"'.'#"&.}Tsx T}.LtQ-w ' - QtL%#s)@(  M+++*0.'&=46324632>7632#"xsDD}wÇ- p%p - %s?5@**& 8> 2 ;874*&! &(A+1??..+0.'&547>76;2!.'4;2+"5>7!+"'InRSnI)uZNxP) InVkt )qs)Tb_SU8_ X^ %q PRsu2,@$0) $0N .4++..+0"&547#"&'&54?63232732#"'.547 ND7n^ Ĕ At @E u N E@ tC ĭ ^n7D s=3,@$/)+ %N!5++..+047>32&54632&54>7632+&#"#"/&^n7D  N :, tA ĭ o @E N  D7K@ Ė CtsJ /.@'*%!R S.1+1+07"&5463!2#"'546323265632#".#"’\ϏXpXa\ҒZJOJ3 SOn33 biOQJ}J3s314@* % , ".)& & 3+1?.++0&547>76;2!2#!!2#!+"'.&l1 ) ,xx3'&) @`d ",c;;c%$ חs314@*%!   1+ 1-%! &#3+1?.++0"&5463!67&'!"&5463!.546;2+"54>71xx3 ) 3mc )Qac;;c5" d^ 6 }{=s1"@/)#M&M+3++*0#"&=4767632#"&'#"&5&'#"&-# 5 $Մ #2c:8f- -bT A - /%5z}=s0(@!/#  ' MM 2+++*0&'&=46324632674632>32#"Z5 #&e99d)# Ք$Ta - (}z5%) - AF3:DB@6"C> C>/ 6 ( B@=;82/.+" % F+1??..++0&547676;2!.546;2+"&5467!+"'&'!67&'!VI ) -1) 2}L )+( ) J+zaazzazaF $3;$z˙0 F&2,&[B\\BB\\=u3,@$-$"*'$ -N/ 5++..+0"/&547654'&546;327632#"'#"'otA ĭ @K7DN  E@ Ė Ct ,:  ND7n^==3,@$2+ / &N5++..+047654'&54?632632632#"'&#"#"sAt ,: N  D7K@ ĕĭ @K7DN  :, tCs(78@0% 0) 0 )!  ,T49++?++0"54>32>32&#"327#"&/'267'.#"զRrN-L'c|(_.^{I"1L-1xB_HgZ}?=!n֋zD?f^IrOV xD`^BϗuqWY{;Xy@ 9 +1..07&5>32#"&H :%0I  /o&.?0s!0?<@3?$=" (= 4" ?$9, T9T,A++1++0".54>32>32#"&/' '.#"32>54.# t^7hY\>==jYf4aw^=^l^k[M+Ru^kDrS,L`qWNFtLRa^OSt׆wRH\|gZErE+|5!"&5463!4.'&#!"&5463!2#ddJ/S2{2S/j RB?'s;;s'便y"@) +1..+03"&547632#%!  hPX i RyF!@ ) +1..+0 &5463!2#"7!j Xk  F@ 4 +1..047>32#"& O o +  s@ M+1..07463232+#"&ss$@   2+1?*+0&54632!632#"7! o j's (@" M"+++03"&5463!!"&5463!!"&5463!2#?LKs@M ++.+0"&5463!2#"&5"'\`-"-8J@@1% - " 1. "% .- *6 /E*#E6:++1?++04?&5327632#"'#"&732>54' &#"-oGVN' /LR;\L# BQ_r4 +`bCN`r3 weZ.+G+32325#"#"&54;2324&'.54>326$327632+".5465##"'!2>7w    !GyP/GW#y9:: !]B9++;gA;nWG% ){B27 4) %>nB %[M7w"     SzG#,eAj> )N 8Z;1K.AtG7_7sp  D $-% 1Z An? ' jh!)p`=w>s5cP@F";RH"BM"$"Z`" 1 ^ V JEP! A,A'PV6e++1?.+0"=4;2>54.54>32+"54&#"+".&4>3232654;2#".#"32#"&&UXF@qE2g0OB9qI%iC8'/f4gYYkH|So׬9>n%YkwR^ena p҂BPC GoB0JkO2En=/[;BQuE-HjR5\MVXSi9Zc"$.6NGkgY_cU csT@  M++?+0%!"&5463!2#!#"&'%sT@ M++.+03"&5463!4632!2#Z\#soT/@'H73&SC@<0# O  EJV++??*07543254.5467'.54632>7.54632#"54'#"54'+"s#9XLB,=0 m'>G (A^+!B?EU!mH.[0zIH*YiR*s{L1KY',m hy+u69]3,mFd X<,/lGM,|8IMw8.lgy.MiQ5A<9q=F;@17 >@7*' ;D1 >,A6@CH++?..++074632326?>734>;3673+"'&5!#"&67!593Z/A])dB4I #:( e >1Qu=Fu8 kL#} -<;!8%;M.w;2+"&'&5467332>54.#"#.547>54.#"LDkP8= P+! 4|N b瞇p Q/v( MHVnih]"> +)p;a3rHFk)3n]+-EcK "-NBmW1q`GxȏLC> EI#HnbI 9SpW6Q)|{צ$6F78@/3/(  ( $ 31/.@@$9++1++0".54$;2#&54>54&#"327>73#a_+O CSB/Y/ A/?5SEPHv|a QF7 :l1K]u)DA9T%6 q)20wqx\k2  ``'!w$3/@( & 0&"%@+5++++074677"+&5>$;2 +&&%32$654&$+^%u;Omj79`% $&znj g,GM; +?,'E="< |W0oo`Q;HD@;@<!6  !6E -% *@><;@@%@2J++1++074>7.54>;2#.547>54&#"3"32>73+"&&;`SexZ X6X0   sJNU܀w%9P\H[qzC; Ao Oejӧ0!rScH>K2Z;=-@wQvp D{=FJe0@9 _^9s#w@N@F%- 8 #+40-8> 87430-+(%#" 'B+1+*07467336767#"#&5>3!2#&5>54#!!#&=!+"&#t' 5MF g8YV6[+ qXl4 :\ `5 }Z{3^ P\$EW9I$6 mdN-I- 1E[UZ PN@DEC%".:   .: O %$ + 'ECB"@+5@ R++1?+*0&54673327>7#".546$;2#&54>54&#"32>7>73+"mx& ayZ-Jv(^oxNA f3I" C]Y'jw^H@@ 15$ +TR  \MG>I3 TR+@;PU*@'`++*++047>7#&54673654&#"+&547>;2!>73327>7673#"&54!#&&SDx&K#56$u3`% +_ 1HF)VzX, !R1+/#.6 ;8 [3Bk''&];[-  DNf "B_$0Vi"< Wb5D1t)>&3 Q昑$!1 +Rk2B0#6wE@@8A;! ,#'?6A?>;5-,#!0)G+1++0#.5467326767>7>7#"#&567>3!#!27>7>73#' w$!82 *=O2}|N!R( 2Yυx&>M7(;[;%)S) K!D%)]"c7Y4  T#- Z DLo4 3 0 Gt?` wD7@.610# .) A!+#@ F++..++07467673327>767!"#&5>3!""0 +"&&`=B  z*' DGeK h* mw$DuaKr \[B-=5 0$},x.al*JpG"? jJ D9Nk̤[M= S=@5PL;E 3 ,; E!  N85/ F@&U++?++0&54765#&54?673 !"& 546,;2#&54654&#"3267>73#L7we?A P =c6]+Nb0H 1?73 '!+]CW :  -^kR}  "-V $6/!GLɅK0/8 ".j1AUO# ??O@@9C:&$1 $>.1M6H .A:6?!Q++++0"547>7676767>;2#"54654&#"6;22>7>7320+".'L < 44&8[J:l 5H%Ga BAL8gM<O6# GƄI Z- O GƍG[a- ;K:l|`_5Y3NM :Bb ']eR8(G "2P[8d 7U/@'5H2SN@&; 7(@@.>W++?*+0746323267>7476767367>7632673+"&5#&'&' #"&73U*,sh%?/!!#WqDt.  [( .8& 2 @#cOb#{0N$xP3$|%Ep}  a{Ы9#*>-FGN\* )bi:Ng%U@Z_V=;R0@'K1 +1!A>PF $-T+1?++0'46323267>7>747676737>7>32" 2&5#&' #"&;4A`6S(=' 3LEbOkj,9,$tK$Q4 4QJ#/="*~dS5&zDÁAA6O  ~v_E8@"K:"1Hf\ϛ(8excSL<u7C>@51,%# 7 #  1/,+%  @;@E++1++0"5>7332>54.#"#.54767>;2#T/A  ^DGLeˌ`Co-)Cy)\+  \Ve |JG_a|-?/ >~   Rdj펕'py$c$6JXx__U'wB.@& * 6*$?'@1D++.++04767"+&5>$3!2+.5467267>54.+ #.&Eq.Umj79`% $&WbZW  w%eM5Q2i\=Sp?X- ZV[E'E="< |W!L\]7654.#"327>73+".54,;227>7>73+"&$&y#a4gaK`@T&*  ? jS A jr9+C2 R) S fܾ;"BGLxG\KԖ]_ ,K-gh4Nh34)7#. TN/f2'wRB@: @0:% I @:+P%5  =- @DT++?+*04767"+&5>$;232>73+"&&#.54672>54.+ #&&Gh,Pmj79`% $&׏WWS^]3;32>54.'.546$;2#&5>54&#"+"&&%Z'f/   uQht=hdEwr Ef+H7 judm Vv]$2   *,Qy@@i@fP37d{t%XHV+6  ZLzmo,Y[HFu2$@ ( 1# ?4++..+047>767!"#"54>3!276732#!#" 6) dC@AX gHu-EJ Dz6_ =N GL=N7(Lp@;V=.!wUJ@BQ9* ( 571 BI?( 7*L$ DQ@=L @$W+++++0"&547>54#"#&54$;232767>7>73 673+"&54>7#b_DnJ!;-5- W \HoA!H5 CF +Y* 4732>7>54.#"54632#"u /Fr,@cI3MD/R34 A`0 =3V{ ',QZBp-2M+%'yBoA]BJwL@@83C  K=& CA& + 0J6+DN+++*+04>7654#&54>7326'4673>654&#"54632#".'#"#2{,@Ȉ+M X' v8 9jE@4 QQbl HX%=  }f '!#5 KuE IBQ%'yWllfqΈ8+hwwZS@KLKC84#  = /(AUH=ZWURLKCA@=84.+%# *2\+1++03"&547>?4&+#&5>;2>7654&#.546732;>73+"&53,5))J@GY+ k XP b#! u& -30Ҋ%?HZ* lD WP#}'# x&F/1/9}x-?U&5 \ibfZK"#$2"CF/4,ESU%6 ?X.cogK1%$2 D?wKB@874 :"  I+ 40' 7K?0+D'M+++?.++05>32327>54 &##&54>;267654.#&'5>32#"&?# |TZP*:_OUD/O0 &?]0nFAU]Pk1 -LP^Gf+"  83Ƒ[YhP/K*  *OCl? dyqafỀJ%wse@])%ebLI U 63. >FN gPUojZsgeaZPNLIFEB>53)'$ ,9u+1+*03"547>76767#&54673>7+"$'"#"547>;2367322#&=.'&'>;2267>732+".#"X 55PGmP PWOVz+ c 9eu8@; ӂ$F54632#".&sWQRXf``ʧfYY.-XYhn66ns!"@  M M#+1??+046$32#"&54.#"#"&s aǩfYSrߔd5ohZV.Pus#C;@3*C3: ? /7M;BM2+ 'ME+1*+0463232>54632#".&"&5463!4632!2#!#"&5sWQRXf``ʧfDFYY.-XYhn66n+EDs@ 3 +1??..047632#"' #"&s   \ Os@  3+1?*0&54632 632#"   P [so @ M++?.+074632!2#!#"&s{'Aso @ M++?.+0"&5463!4632#"&5xwd`@ M++.+04632!2#!"&dP%w+'@ M++.+0"&5463!4632#P Jd`@ M ++.+0463!2#!#"&d{%w+'@ M ++.+0!"&5463!2#"&{%Jo3-@'""" ")1-%"E 5+++04&#"=4632654>;2#"32+"$l l\ CRFqAgl g g]w6 2bE BhDb fs  o2-@'" "")"1& ,E4+++054632>5467.54.#"=4;232#"+" BRfhRC[~l l 2bEbbEb26x\ g  g @:  +1..0 &547632 #"Zuq 77s9@ :+1..047 &54632#"&sn t ))'F @ M+1..04632#"&%J @ MM+1*04632#"&%4632#"&%JJ#-H$@G:54/# >,&M5J++*0.'&=4632#"&=47>7>32#"'.'>7632#"xqR-D~qx |DC|qxwÉ - OwJ$o - w ' - on - w=-=G.@'C><0-,) 4&AF M-AMFI+++*0.'&=4632#"&=467>7632#"&'>32#"767&'\0z#./# x̙3E#30#x͕4 A\\A@^^yӝ2 - *) - 0 I - *0* - 0́ xclcxuffs@ 7 +1..0 &54632#"=: PsV)@"! !I I !+1+0".54>54&#&547323[|;poWU33 8o9YS44hYaabԎQ̓PbRR@ (+1*0 #"&54?632 632+"hy   of H  ^\   IFwI2@)"?G/C3+%#! A;#A! K+++..+07546327654'&#"&=463!2#"!4'&#"&=463!2#"32#!"&F ++ h++ +# \/  " " _/  " " .  # ^Jw#@  + +1?.+04&'43!2+"7!!?? d'-sXsF90@&  " "-4BB70;+1..++032>7>7>7>32#"&5463&#"#"&54>32*/5 flFZ1%'13#)/5  FikD[(%12'eiOq7]MlF%33%#3'eiOq7}nD(1'$2}!@  M M+1..+074632!4632#!"&}'}R}"@ M M+1??+07463!2#"&5!#"&}J'} P %'@!# M'+++0"&5463!2#463!2#!!2#!"&0VV  %'@! M"'+++0"&5463!2#"&5463!!"&5463!2#@}   \GTL@B5# & "&";OHB * 75 L#G1ER ?G*V++1*++032654&'.5467&54>32#"&5463.#"#".546322>54&'"v@\`kU~b0[p?IQ(!)*wB>U*lWPX8dCTTIQ)!()=S(iUXaj:Ea]"6vh{?p]0@vF *+*8GP{<\$"^QC}[{RW@uG+* +Sy:]#_ZsF?0@('-2$ >*62$E! A++..+0.&5465"#"&5463234.546322632#".# +"1-HM*) , * )1,)*I=>1  VN=s?: * )/5se8*)UL/) *5D՜ s\/eQ@Ic8 PV[MA3>8 $'  G-S;! `J*D0[MA3'E g++*++0465"#"&5463234&546322632#"&##"&465"#"&5463234&546322632#".##"&}1#, )) / 1* )1"/)),%1) *1-HM**,1* )1,**I=>  (!)B=1++1=@*)E81++18G+,A< * (/3!2+#"&5##"&ˊ絎?sב|]]9;.@%80) % 8753,)( -!=+1??*0".54>327.54>32632#"&5#+"&54765#gXC_wF/LR^eOb5SK0Fx`CWg^f9y8gJq-rd^xX^:^cq@tN^8^Xx^drbZ=V)s-@& )&!./+1*0&54767632#"7>7.' ~P  P~ 9SOw;wR Y  q3q  mNKpLµs!H0@% ?28&  /D M/MDJ++1?..+0.5432>32#"'.&'>7>54&#"#"&'.#"Z[Ih 2pZ` >@ &U9rR(A@d"^UrMS " RQMe93Tf}Zs;hBg~sٸ` IsNgx8olQ=^Fa"^jRK'NREqFPws/$@-%  -,*(!.1+1??*0"547>7632#".=#+"&54765#tĪZ4 hti;lQAzSf9y8g-SjwPZ&U?^^sT(.@' !% !M *++.+03"&5463!!"&5463!4632!2#!!2#ZZZZ/\:ɝ_<R;;R bs##sss7sss==F==7s3;sTTyysqqsTs\Zs7s7ssb9?=5+'7;#Z'Zj`=? 7^u''%ZFBBhX?JTsTsTsTsTsssd+d+s7#=s7sF^TsT}T}77sss797s7s7s7s&&tN p(t 4j> , 2  D V n `~*.V .RPH~PV&T<,f` !,!b!!"4"#>#$.$$%v%& b  __el}    T ` "n      Copyright (C) 1994, Basil K. Malyshev. All Rights Reserved.012BaKoMa Fonts Collection, Level-B.cmsy10RegularFontMonger:cmsy10cmsy101.1/12-Nov-94Cmsy10Copyright (C) 1994, Basil K. Malyshev. All Rights Reserved.012BaKoMa Fonts Collection, Level-B.cmsy10RegularFontMonger:cmsy10cmsy101.1/12-Nov-94Cmsy10{@"M R M"@MM$ Q<++endstream endobj % 'fontDescriptor:AAAAAA+Cmsy10': class PDFDictionary 239 0 obj << /Ascent 706.0547 /CapHeight 706.0547 /Descent -959.9609 /Flags 4 /FontBBox [ -28.80859 -959.9609 1123.047 778.8086 ] /FontFile2 238 0 R /FontName /AAAAAA+Cmsy10 /ItalicAngle 0 /StemV 87 /Type /FontDescriptor >> endobj % 'F10+0': class PDFTrueTypeFont 240 0 obj % Font /usr/share/fonts/truetype/lyx/cmsy10.ttf subset 0 << /BaseFont /AAAAAA+Cmsy10 /FirstChar 0 /FontDescriptor 239 0 R /LastChar 128 /Name /F10+0 /Subtype /TrueType /ToUnicode 237 0 R /Type /Font /Widths [ 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 0 1000 500 500 1000 1000 1000 776.8555 1000 1000 610.8398 610.8398 1000 1000 1000 776.8555 274.9023 1000 666.0156 666.0156 888.1836 888.1836 0 0 555.1758 555.1758 666.0156 500 722.168 722.168 776.8555 776.8555 610.8398 797.8516 655.7617 525.8789 770.9961 526.8555 717.7734 594.2383 844.2383 543.9453 676.7578 762.207 688.9648 1200.195 819.8242 795.8984 694.8242 815.918 847.168 604.9805 543.9453 625 611.8164 986.8164 712.8906 667.9688 724.1211 666.0156 666.0156 666.0156 666.0156 666.0156 610.8398 610.8398 443.8477 443.8477 443.8477 443.8477 500 500 388.1836 388.1836 276.8555 500 500 610.8398 500 276.8555 833.0078 750 833.0078 416.0156 666.0156 666.0156 776.8555 776.8555 443.8477 443.8477 443.8477 610.8398 776.8555 776.8555 776.8555 776.8555 776.8555 ] >> endobj % 'toUnicodeCMap:AAAAAA+Cmex10': class PDFStream 241 0 obj << /Length 1870 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (AAAAAA+Cmex10) /Ordering (AAAAAA+Cmex10) /Supplement 0 >> def /CMapName /AAAAAA+Cmex10 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 128 beginbfchar <00> <0000> <01> <0001> <02> <0002> <03> <0003> <04> <0004> <05> <0005> <06> <0006> <07> <0007> <08> <0008> <09> <0009> <0A> <000A> <0B> <000B> <0C> <000C> <0D> <000D> <0E> <000E> <0F> <000F> <10> <0010> <11> <0011> <12> <0012> <13> <0013> <14> <0014> <15> <0015> <16> <0016> <17> <0017> <18> <0018> <19> <0019> <1A> <001A> <1B> <001B> <1C> <001C> <1D> <001D> <1E> <001E> <1F> <001F> <20> <0020> <21> <0021> <22> <0022> <23> <0023> <24> <0024> <25> <0025> <26> <0026> <27> <0027> <28> <0028> <29> <0029> <2A> <002A> <2B> <002B> <2C> <002C> <2D> <002D> <2E> <002E> <2F> <002F> <30> <0030> <31> <0031> <32> <0032> <33> <0033> <34> <0034> <35> <0035> <36> <0036> <37> <0037> <38> <0038> <39> <0039> <3A> <003A> <3B> <003B> <3C> <003C> <3D> <003D> <3E> <003E> <3F> <003F> <40> <0040> <41> <0041> <42> <0042> <43> <0043> <44> <0044> <45> <0045> <46> <0046> <47> <0047> <48> <0048> <49> <0049> <4A> <004A> <4B> <004B> <4C> <004C> <4D> <004D> <4E> <004E> <4F> <004F> <50> <0050> <51> <0051> <52> <0052> <53> <0053> <54> <0054> <55> <0055> <56> <0056> <57> <0057> <58> <0058> <59> <0059> <5A> <005A> <5B> <005B> <5C> <005C> <5D> <005D> <5E> <005E> <5F> <005F> <60> <0060> <61> <0061> <62> <0062> <63> <0063> <64> <0064> <65> <0065> <66> <0066> <67> <0067> <68> <0068> <69> <0069> <6A> <006A> <6B> <006B> <6C> <006C> <6D> <006D> <6E> <006E> <6F> <006F> <70> <0070> <71> <0071> <72> <0072> <73> <0073> <74> <0074> <75> <0075> <76> <0076> <77> <0077> <78> <0078> <79> <0079> <7A> <007A> <7B> <007B> <7C> <007C> <7D> <007D> <7E> <007E> <7F> <007F> endbfchar endcmap CMapName currentdict /CMap defineresource pop end endendstream endobj % 'fontFile:/usr/share/fonts/truetype/lyx/cmex10.ttf(AAAAAA+Cmex10)': class PDFStream 242 0 obj << /Length 14644 /Length1 14644 >> stream  POS/2&$\Ncmap W ,cvt TNO[Dfpgmaglyf.headj3z36hhea3$hmtx'_b3loca/$#5|maxpH6@ name@6`post~8 prepyy:9,qqf @ &k-R-    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ "'m\3#uomdbXRP5! RsH{q9H\m\B3#ubXR!@ ,C b#BfV-,*CTx+X9Y+X #++..0"547 &54;2 #VXJJ; \\ T ,  *-FH//TR@C +++0!!!/gT TyR@C +++05!!5!gT/TR@C++.+03!/TT臅TR@C++.+05!3TTy/TR@C++.+0!!/TTR@C++.+0!5!fTy'TJR9@73' ,>" ;++..0&54&'&=47>54732+&&rdco83= ^n=lM ;5)r#K<;oy <3hP8|j< 'TJR6@5) />! 8++..054765467.54'&=4;#"'pL<%v}rdd<d< jp/L=|rh < KcrݜN< LKTR@ /  +1..0 &547632 #" -((*  +( ZZ (TTR@ /+1..047 &54632#"&*' ,* (+A D+(sT R@ %+1..047632#"&s'$+#& %$%&sT R@ % +1..0 &54632#" N+%#%'y %%} %sR@ - +1..05>5673#&s3! ! ! ! % sR@ - +1..0 '56732#"%  5%   !  ! TP@ =++..0"56;2 #f[6 ? F hp \I ?P@ =++..0 &54;2+"D?6ZizQ?JP@B++.+0!!d2 P@B++.+0!5!' ΖJR@B++.+03!d1 R@B++.+05!3  1-@ B+1?.031/'1@ B+1?.03'1/@ <++?.0476;2+"&? gl:  eZ @Byq \@  <++?.04.'&=4;2+"&8lg?  ־A@Ym @ < ++?.0.546;2+"dڞX   ?D q;@ \@ <++?.05476546;2+"\b  W܀?@ W : mC\)@( $< +++?.04.'&=47>546;2+"6jkkh6  R}yՕR z K@ L } IE '@&!< )++?.04>7.546;2 +"Py}ϚP  __ EI d@d @ < +1?.046;2+"  j  1@ F+1?.03X1/Tf@= ++..0 4;2+"&`f[ Fc ?oj I] ?f@ = ++..0"54746;2 #RdD  Zf|i ?RT?@ = +1?.046;2+"T  1 / @ = +1?.046;2+"  1 / -R@ 4 +1..0 4&'5>56; 2#"&  $!%  !%  %R@ 4 +1..05>5 "=67322"+& &    '  % s5&@ B B+1??+0673!673!&s < <  < < <7.54676>32#"&5467&#"#".54632>54&'67>73L2 uŽ "Jo6kB3%%5,"4Ke/t )Lx6kB4&)"Cp@hR   gg-FrsJ(z^ .V8%33%$1-HMIx!&zG.U7&4(( U|GZ"|\2nalXs9NZc^@U*$,H; , W1][ O; B][WO;1 Sa *>!'G6SGa>LEe++1+*03266767.54>3>?>632#"&5463&#" # #"&546322>54.'"3JJz\+ &TeT"#X.2iU5!%!"!4'.#m h36eBrFPW˼CBrFe@Zq * gdCTFtBCU8d@rGs  .=J5@/J1 ?0. !?/->1?! L+++0 5!3 !3!2>767>765!%!"!4.'&'&%.#o~ p`}QGwW>[K2o>?l(=[xFQ'Q='F+;*J"Y~PF} }l l~^0.nw_?Jo$o-a'b[6FIM?d-so%.6D@;60/.-&  3 3 60/.-&  )# B)B#8++1++0"$=!3 #32$7 654.''&$#"m v!!vd3cjicj/[Ch1vߚvq * bbjjb4733uژxu#gƷOj4dhhds *5?D@;?7654+"!  < < ?7654+"!  0' ?0?'A++1++0 5!3 !32>7 >54 ''.#"o~ pXqqֿTN5KpP(HKqO)Ga}5ToU} }l l~LqN((PrI5H78WrpUn$ r6IrO)s#4@,"  "!) %+1++0"547 &=463!#.$&#!!26$673 ǰ;3T%0;- !K`Is7@0    > >++++05254#5!"3!525!3sRJRRRR-RsB/@'; " "  4 ???8D+1++032767>7>7632#"&5467&#"#".546323L2  6kB3%%5,"4Ke/  Qn6kB4&)"-FdpCѯrg.V8%33%$1-HEɯ7nx8rґ.U7&4((s5!"@ BB#+1??+067332>5673+"$s < < \uuե] < < v = =wΛSSu= =kBs5!!@ B B#+1..+04$;2#&'4.#"#&sU  t < < ]vtץ\ < 5673+"$%!&'5>7!673!!#&s < < \uuե] < < v < %'@ = %$ <% ?= =wΛSSu= =kB% < &'; :$ < %s5@, +1?*0547673#&' #&s2 / < //  1+1ms 7@0    9 9++++05 54!5! !!5 5!!sP RPPPnooCnn wns9F6@-@5$& &  :5!D $>!>D=H++1++03266767667>632#"&5463&#"  #"&546323JJz\+ 69?(6/`I.2iU73!!#.'s J J 10 I $, J K,% ".#, J/! %, J Jyy(K ."h J J %,.#+% J !/+$so@( +1?*0567673#&' #&s5 1 I 31 J!  //t K / j/ so@ (+1??..0 &=673 673#&X J 0RT2 $,[2 6  J 0j /." /s7@0     >> ++++05254#5!"!4#5!"3stcuRJRR-ӉRRRs 7@0     99 ++++05 54!5! !4!5! !sP/Pnoov ooCny@.+1*0' %GFy5F5-@&+1*0'  :`: -@"+1*0'   B:`:q$@  0 +1+0'7632327#".#"##HFF#HFF);FF)3232$7#".#"RնKeҘcy#RնKdУdM/)CL#.X,R`/)CL#,W/#L $@   #+1+0'76,32 32,7 #",#"VY rNMq WVqT3AV%^^%VA3AV%^^+MR @ E +++0!!!odb`b%R @ E +++05!!5!%nb bR@E++.+03!bdb%hR@E++.+05!3%bbR@ E++.+0!!Cdb%hR@ E++.+0!5!Cb`R8@62( +A" :++..0.54&'&=47>5467>732+&&9DĒ[^D99L/ ZaEpPƒ /J9L> / &bM79s 0 #o\{TtZ!F{9 / s`R8@7* 0A" :++..0547>54>7.54.'&=4;#"rpmraY/#_YS9D_[ `_DrI// 8ʆn.-p\n$ 0*4=7M{b% / )}a{Lrs)R@+ +1*0 '% 632#d2%%' 4o% )R@+ +1*0 ' 632#d/%%! X'X )R@+ +1*0 ' 632#d-%%  $ pR)R@ + +1*0 ' >32#d+%%  R 'D P )@ G ++*0 ' 4632%%' 'C# N  ) @ G+1..04632#"&/+\R@ G ++.+0463!2#!#"&y 1+@FF +1??..03!3XmX1//3s@  F++?*05>7.'YsMLs]3\'R12R'_3s@   F++?*05367&&XLMRLLR2J@2 +1.+05476$32#"+"&1_+v @B Z@  1ho J@2 +1.+0#"=432+"'.$ F ??Uۃ@ pf1@2+1.+0&=46;232#"$- BA R@ oi2  @ 2+1.+0'54632$>76;2#" ?? F 3fo @ڞWs3*@"   FF+++?*05>7.'#&'sȰ25rv\XhNPg3\X,mo,X/xO>j{}hyo_<R -->  `TD///q'q'qq 7s 7s}s}sT?TT TT TT'\\\TT?Tsssqss ss ss sqssssssss s 7sqsssssss 7sq q %77%77%TTqqq7TT7s&&r0*^>tR@:^6v$ X R |  j " j <vL&t D&Ff"FjF2d :f6x`d ^__el}    T ` "n      Copyright (C) 1994, Basil K. Malyshev. All Rights Reserved.012BaKoMa Fonts Collection, Level-B.cmex10RegularFontMonger:cmex10cmex101.1/12-Nov-94Cmex10Copyright (C) 1994, Basil K. Malyshev. All Rights Reserved.012BaKoMa Fonts Collection, Level-B.cmex10RegularFontMonger:cmex10cmex101.1/12-Nov-94Cmex10{@"  B GB?>BB" 0<++endstream endobj % 'fontDescriptor:AAAAAA+Cmex10': class PDFDictionary 243 0 obj << /Ascent 771.9727 /CapHeight 771.9727 /Descent -2959.961 /Flags 4 /FontBBox [ -23.92578 -2959.961 1454.102 771.9727 ] /FontFile2 242 0 R /FontName /AAAAAA+Cmex10 /ItalicAngle 0 /StemV 87 /Type /FontDescriptor >> endobj % 'F11+0': class PDFTrueTypeFont 244 0 obj % Font /usr/share/fonts/truetype/lyx/cmex10.ttf subset 0 << /BaseFont /AAAAAA+Cmex10 /FirstChar 0 /FontDescriptor 243 0 R /LastChar 127 /Name /F11+0 /Subtype /TrueType /ToUnicode 241 0 R /Type /Font /Widths [ 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 750 0 791.0156 583.0078 583.0078 638.1836 638.1836 638.1836 638.1836 805.1758 805.1758 805.1758 805.1758 1276.855 1276.855 811.0352 811.0352 875 875 666.0156 666.0156 666.0156 666.0156 666.0156 666.0156 888.1836 888.1836 888.1836 888.1836 888.1836 888.1836 888.1836 666.0156 875 875 875 875 610.8398 610.8398 833.0078 1110.84 472.168 555.1758 1110.84 1511.23 1110.84 1511.23 1110.84 1511.23 1055.176 943.8477 472.168 833.0078 833.0078 833.0078 833.0078 833.0078 1443.848 1276.855 555.1758 1110.84 1110.84 1110.84 1110.84 1110.84 943.8477 1276.855 555.1758 1000 1443.848 555.1758 1000 1443.848 472.168 472.168 526.8555 526.8555 526.8555 526.8555 666.0156 666.0156 1000 1000 1000 1000 1055.176 1055.176 1055.176 776.8555 666.0156 666.0156 450.1953 450.1953 450.1953 450.1953 776.8555 750 ] >> endobj % 'R245': class PDFCatalog 245 0 obj % Document Root << /Outlines 247 0 R /PageLabels 361 0 R /PageMode /UseNone /Pages 308 0 R /Type /Catalog >> endobj % 'R246': class PDFInfo 246 0 obj << /Author (Roberto Alsina ) /CreationDate (D:20121218164823+03'00') /Creator (\(unspecified\)) /Keywords () /Producer (ReportLab PDF Library - www.reportlab.com) /Subject (\(unspecified\)) /Title (How to use rst2pdf) >> endobj % 'R247': class PDFOutlines 247 0 obj << /Count 72 /First 248 0 R /Last 307 0 R /Type /Outlines >> endobj % 'Outline.0': class OutlineEntryObject 248 0 obj << /Dest [ 145 0 R /XYZ 62.69291 747.0236 0 ] /Next 249 0 R /Parent 247 0 R /Title (\376\377\0001\000\240\000\240\000\240\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) >> endobj % 'Outline.1': class OutlineEntryObject 249 0 obj << /Dest [ 146 0 R /XYZ 62.69291 747.0236 0 ] /Next 250 0 R /Parent 247 0 R /Prev 248 0 R /Title (\376\377\0002\000\240\000\240\000\240\000C\000o\000m\000m\000a\000n\000d\000 \000l\000i\000n\000e\000 \000o\000p\000t\000i\000o\000n\000s) >> endobj % 'Outline.2': class OutlineEntryObject 250 0 obj << /Dest [ 151 0 R /XYZ 62.69291 747.0236 0 ] /Next 251 0 R /Parent 247 0 R /Prev 249 0 R /Title (\376\377\0003\000\240\000\240\000\240\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000 \000F\000i\000l\000e) >> endobj % 'Outline.3': class OutlineEntryObject 251 0 obj << /Dest [ 153 0 R /XYZ 62.69291 747.0236 0 ] /Next 252 0 R /Parent 247 0 R /Prev 250 0 R /Title (\376\377\0004\000\240\000\240\000\240\000P\000i\000p\000e\000 \000u\000s\000a\000g\000e) >> endobj % 'Outline.4': class OutlineEntryObject 252 0 obj << /Dest [ 160 0 R /XYZ 62.69291 747.0236 0 ] /Next 253 0 R /Parent 247 0 R /Prev 251 0 R /Title (\376\377\0005\000\240\000\240\000\240\000H\000e\000a\000d\000e\000r\000s\000 \000a\000n\000d\000 \000F\000o\000o\000t\000e\000r\000s) >> endobj % 'Outline.5': class OutlineEntryObject 253 0 obj << /Dest [ 161 0 R /XYZ 62.69291 747.0236 0 ] /Next 254 0 R /Parent 247 0 R /Prev 252 0 R /Title (\376\377\0006\000\240\000\240\000\240\000F\000o\000o\000t\000n\000o\000t\000e\000s) >> endobj % 'Outline.6': class OutlineEntryObject 254 0 obj << /Count 3 /Dest [ 164 0 R /XYZ 62.69291 747.0236 0 ] /First 255 0 R /Last 257 0 R /Next 258 0 R /Parent 247 0 R /Prev 253 0 R /Title (\376\377\0007\000\240\000\240\000\240\000I\000m\000a\000g\000e\000s) >> endobj % 'Outline.61.0': class OutlineEntryObject 255 0 obj << /Dest [ 164 0 R /XYZ 62.69291 714.0236 0 ] /Next 256 0 R /Parent 254 0 R /Title (\376\377\0007\000.\0001\000\240\000\240\000\240\000I\000n\000l\000i\000n\000e) >> endobj % 'Outline.61.1': class OutlineEntryObject 256 0 obj << /Dest [ 164 0 R /XYZ 62.69291 570.8236 0 ] /Next 257 0 R /Parent 254 0 R /Prev 255 0 R /Title (\376\377\0007\000.\0002\000\240\000\240\000\240\000S\000u\000p\000p\000o\000r\000t\000e\000d\000 \000I\000m\000a\000g\000e\000 \000T\000y\000p\000e\000s) >> endobj % 'Outline.61.2': class OutlineEntryObject 257 0 obj << /Dest [ 164 0 R /XYZ 62.69291 277.8236 0 ] /Parent 254 0 R /Prev 256 0 R /Title (\376\377\0007\000.\0003\000\240\000\240\000\240\000I\000m\000a\000g\000e\000 \000S\000i\000z\000e) >> endobj % 'Outline.7': class OutlineEntryObject 258 0 obj << /Count 17 /Dest [ 166 0 R /XYZ 62.69291 747.0236 0 ] /First 259 0 R /Last 273 0 R /Next 276 0 R /Parent 247 0 R /Prev 254 0 R /Title (\376\377\0008\000\240\000\240\000\240\000S\000t\000y\000l\000e\000s) >> endobj % 'Outline.62.0': class OutlineEntryObject 259 0 obj << /Dest [ 166 0 R /XYZ 62.69291 243.2236 0 ] /Next 260 0 R /Parent 258 0 R /Title (\376\377\0008\000.\0001\000\240\000\240\000\240\000I\000n\000c\000l\000u\000d\000e\000d\000 \000S\000t\000y\000l\000e\000S\000h\000e\000e\000t\000s) >> endobj % 'Outline.62.1': class OutlineEntryObject 260 0 obj << /Dest [ 169 0 R /XYZ 62.69291 747.0236 0 ] /Next 261 0 R /Parent 258 0 R /Prev 259 0 R /Title (\376\377\0008\000.\0002\000\240\000\240\000\240\000S\000t\000y\000l\000e\000S\000h\000e\000e\000t\000 \000S\000y\000n\000t\000a\000x) >> endobj % 'Outline.62.2': class OutlineEntryObject 261 0 obj << /Dest [ 169 0 R /XYZ 62.69291 699.0236 0 ] /Next 262 0 R /Parent 258 0 R /Prev 260 0 R /Title (\376\377\0008\000.\0003\000\240\000\240\000\240\000F\000o\000n\000t\000 \000A\000l\000i\000a\000s) >> endobj % 'Outline.62.3': class OutlineEntryObject 262 0 obj << /Dest [ 169 0 R /XYZ 62.69291 441.8236 0 ] /Next 263 0 R /Parent 258 0 R /Prev 261 0 R /Title (\376\377\0008\000.\0004\000\240\000\240\000\240\000S\000t\000y\000l\000e\000 \000D\000e\000f\000i\000n\000i\000t\000i\000o\000n) >> endobj % 'Outline.62.4': class OutlineEntryObject 263 0 obj << /Dest [ 170 0 R /XYZ 62.69291 473.8236 0 ] /Next 264 0 R /Parent 258 0 R /Prev 262 0 R /Title (\376\377\0008\000.\0005\000\240\000\240\000\240\000W\000i\000d\000o\000w\000s\000 \000a\000n\000d\000 \000O\000r\000p\000h\000a\000n\000s) >> endobj % 'Outline.62.5': class OutlineEntryObject 264 0 obj << /Count 5 /Dest [ 173 0 R /XYZ 62.69291 747.0236 0 ] /First 265 0 R /Last 269 0 R /Next 270 0 R /Parent 258 0 R /Prev 263 0 R /Title (\376\377\0008\000.\0006\000\240\000\240\000\240\000F\000o\000n\000t\000 \000E\000m\000b\000e\000d\000d\000i\000n\000g) >> endobj % 'Outline.63.0': class OutlineEntryObject 265 0 obj << /Count 2 /Dest [ 173 0 R /XYZ 62.69291 687.0236 0 ] /First 266 0 R /Last 267 0 R /Next 268 0 R /Parent 264 0 R /Title (\376\377\0008\000.\0006\000.\0001\000\240\000\240\000\240\000T\000h\000e\000 \000E\000a\000s\000y\000 \000W\000a\000y) >> endobj % 'Outline.64.0': class OutlineEntryObject 266 0 obj << /Dest [ 173 0 R /XYZ 62.69291 546.8236 0 ] /Next 267 0 R /Parent 265 0 R /Title (\376\377\0008\000.\0006\000.\0001\000.\0001\000\240\000\240\000\240\000F\000o\000n\000t\000y\000 \000i\000s\000 \000a\000 \000T\000r\000u\000e\000 \000T\000y\000p\000e\000 \000f\000o\000n\000t\000:) >> endobj % 'Outline.64.1': class OutlineEntryObject 267 0 obj << /Dest [ 173 0 R /XYZ 62.69291 278.4236 0 ] /Parent 265 0 R /Prev 266 0 R /Title (\376\377\0008\000.\0006\000.\0001\000.\0002\000\240\000\240\000\240\000F\000o\000n\000t\000y\000 \000i\000s\000 \000a\000 \000T\000y\000p\000e\000 \0001\000 \000f\000o\000n\000t\000:) >> endobj % 'Outline.63.1': class OutlineEntryObject 268 0 obj << /Dest [ 175 0 R /XYZ 62.69291 473.4236 0 ] /Next 269 0 R /Parent 264 0 R /Prev 265 0 R /Title (\376\377\0008\000.\0006\000.\0002\000\240\000\240\000\240\000T\000h\000e\000 \000H\000a\000r\000d\000e\000r\000 \000W\000a\000y\000 \000\(\000T\000r\000u\000e\000 \000T\000y\000p\000e\000\)) >> endobj % 'Outline.63.2': class OutlineEntryObject 269 0 obj << /Dest [ 176 0 R /XYZ 62.69291 406.6236 0 ] /Parent 264 0 R /Prev 268 0 R /Title (\376\377\0008\000.\0006\000.\0003\000\240\000\240\000\240\000T\000h\000e\000 \000H\000a\000r\000d\000e\000r\000 \000W\000a\000y\000 \000\(\000T\000y\000p\000e\0001\000\)) >> endobj % 'Outline.62.6': class OutlineEntryObject 270 0 obj << /Dest [ 176 0 R /XYZ 62.69291 361.6236 0 ] /Next 271 0 R /Parent 258 0 R /Prev 264 0 R /Title (\376\377\0008\000.\0007\000\240\000\240\000\240\000P\000a\000g\000e\000 \000S\000i\000z\000e\000 \000a\000n\000d\000 \000M\000a\000r\000g\000i\000n\000s) >> endobj % 'Outline.62.7': class OutlineEntryObject 271 0 obj << /Dest [ 177 0 R /XYZ 62.69291 585.0236 0 ] /Next 272 0 R /Parent 258 0 R /Prev 270 0 R /Title (\376\377\0008\000.\0008\000\240\000\240\000\240\000A\000d\000v\000a\000n\000c\000e\000d\000:\000 \000t\000a\000b\000l\000e\000 \000s\000t\000y\000l\000e\000s) >> endobj % 'Outline.62.8': class OutlineEntryObject 272 0 obj << /Dest [ 178 0 R /XYZ 62.69291 381.4236 0 ] /Next 273 0 R /Parent 258 0 R /Prev 271 0 R /Title (\376\377\0008\000.\0009\000\240\000\240\000\240\000M\000u\000l\000t\000i\000p\000l\000e\000 \000S\000t\000y\000l\000e\000s\000h\000e\000e\000t\000s) >> endobj % 'Outline.62.9': class OutlineEntryObject 273 0 obj << /Count 2 /Dest [ 180 0 R /XYZ 62.69291 747.0236 0 ] /First 274 0 R /Last 275 0 R /Parent 258 0 R /Prev 272 0 R /Title (\376\377\0008\000.\0001\0000\000\240\000\240\000\240\000S\000t\000y\000l\000i\000n\000g\000 \000Y\000o\000u\000r\000 \000D\000o\000c\000u\000m\000e\000n\000t) >> endobj % 'Outline.65.0': class OutlineEntryObject 274 0 obj << /Dest [ 180 0 R /XYZ 62.69291 687.0236 0 ] /Next 275 0 R /Parent 273 0 R /Title (\376\377\0008\000.\0001\0000\000.\0001\000\240\000\240\000\240\000T\000h\000e\000 \000B\000a\000s\000e\000 \000S\000t\000y\000l\000e\000s) >> endobj % 'Outline.65.1': class OutlineEntryObject 275 0 obj << /Dest [ 180 0 R /XYZ 62.69291 415.6236 0 ] /Parent 273 0 R /Prev 274 0 R /Title (\376\377\0008\000.\0001\0000\000.\0002\000\240\000\240\000\240\000L\000i\000s\000t\000s) >> endobj % 'Outline.8': class OutlineEntryObject 276 0 obj << /Count 3 /Dest [ 184 0 R /XYZ 62.69291 747.0236 0 ] /First 277 0 R /Last 277 0 R /Next 280 0 R /Parent 247 0 R /Prev 258 0 R /Title (\376\377\0009\000\240\000\240\000\240\000S\000y\000n\000t\000a\000x\000 \000H\000i\000g\000h\000l\000i\000g\000h\000t\000i\000n\000g) >> endobj % 'Outline.66.0': class OutlineEntryObject 277 0 obj << /Count 2 /Dest [ 187 0 R /XYZ 62.69291 569.8236 0 ] /First 278 0 R /Last 279 0 R /Parent 276 0 R /Title (\376\377\0009\000.\0001\000\240\000\240\000\240\000F\000i\000l\000e\000 \000i\000n\000c\000l\000u\000s\000i\000o\000n) >> endobj % 'Outline.67.0': class OutlineEntryObject 278 0 obj << /Dest [ 187 0 R /XYZ 62.69291 456.6236 0 ] /Next 279 0 R /Parent 277 0 R /Title (\376\377\0009\000.\0001\000.\0001\000\240\000\240\000\240\000I\000n\000c\000l\000u\000d\000e\000 \000w\000i\000t\000h\000 \000B\000o\000u\000n\000d\000a\000r\000i\000e\000s) >> endobj % 'Outline.67.1': class OutlineEntryObject 279 0 obj << /Dest [ 188 0 R /XYZ 62.69291 747.0236 0 ] /Parent 277 0 R /Prev 278 0 R /Title (\376\377\0009\000.\0001\000.\0002\000\240\000\240\000\240\000O\000p\000t\000i\000o\000n\000s) >> endobj % 'Outline.9': class OutlineEntryObject 280 0 obj << /Count 6 /Dest [ 189 0 R /XYZ 62.69291 747.0236 0 ] /First 281 0 R /Last 286 0 R /Next 287 0 R /Parent 247 0 R /Prev 276 0 R /Title (\376\377\0001\0000\000\240\000\240\000\240\000R\000a\000w\000 \000D\000i\000r\000e\000c\000t\000i\000v\000e) >> endobj % 'Outline.68.0': class OutlineEntryObject 281 0 obj << /Dest [ 189 0 R /XYZ 62.69291 714.0236 0 ] /Next 282 0 R /Parent 280 0 R /Title (\376\377\0001\0000\000.\0001\000\240\000\240\000\240\000R\000a\000w\000 \000P\000D\000F) >> endobj % 'Outline.68.1': class OutlineEntryObject 282 0 obj << /Dest [ 189 0 R /XYZ 62.69291 402.8236 0 ] /Next 283 0 R /Parent 280 0 R /Prev 281 0 R /Title (\376\377\0001\0000\000.\0002\000\240\000\240\000\240\000P\000a\000g\000e\000 \000C\000o\000u\000n\000t\000e\000r\000s) >> endobj % 'Outline.68.2': class OutlineEntryObject 283 0 obj << /Dest [ 190 0 R /XYZ 62.69291 577.0236 0 ] /Next 284 0 R /Parent 280 0 R /Prev 282 0 R /Title (\376\377\0001\0000\000.\0003\000\240\000\240\000\240\000P\000a\000g\000e\000 \000B\000r\000e\000a\000k\000s) >> endobj % 'Outline.68.3': class OutlineEntryObject 284 0 obj << /Dest [ 190 0 R /XYZ 62.69291 366.8236 0 ] /Next 285 0 R /Parent 280 0 R /Prev 283 0 R /Title (\376\377\0001\0000\000.\0004\000\240\000\240\000\240\000F\000r\000a\000m\000e\000 \000B\000r\000e\000a\000k\000s) >> endobj % 'Outline.68.4': class OutlineEntryObject 285 0 obj << /Dest [ 190 0 R /XYZ 62.69291 203.0822 0 ] /Next 286 0 R /Parent 280 0 R /Prev 284 0 R /Title (\376\377\0001\0000\000.\0005\000\240\000\240\000\240\000P\000a\000g\000e\000 \000T\000r\000a\000n\000s\000i\000t\000i\000o\000n\000s) >> endobj % 'Outline.68.5': class OutlineEntryObject 286 0 obj << /Dest [ 191 0 R /XYZ 62.69291 309.6236 0 ] /Parent 280 0 R /Prev 285 0 R /Title (\376\377\0001\0000\000.\0006\000\240\000\240\000\240\000R\000a\000w\000 \000H\000T\000M\000L) >> endobj % 'Outline.10': class OutlineEntryObject 287 0 obj << /Dest [ 193 0 R /XYZ 62.69291 747.0236 0 ] /Next 288 0 R /Parent 247 0 R /Prev 280 0 R /Title (\376\377\0001\0001\000\240\000\240\000\240\000T\000h\000e\000 \000c\000o\000u\000n\000t\000e\000r\000 \000r\000o\000l\000e) >> endobj % 'Outline.11': class OutlineEntryObject 288 0 obj << /Dest [ 194 0 R /XYZ 62.69291 747.0236 0 ] /Next 289 0 R /Parent 247 0 R /Prev 287 0 R /Title (\376\377\0001\0002\000\240\000\240\000\240\000T\000h\000e\000 \000o\000d\000d\000e\000v\000e\000n\000 \000d\000i\000r\000e\000c\000t\000i\000v\000e) >> endobj % 'Outline.12': class OutlineEntryObject 289 0 obj << /Dest [ 201 0 R /XYZ 62.69291 747.0236 0 ] /Next 290 0 R /Parent 247 0 R /Prev 288 0 R /Title (\376\377\0001\0003\000\240\000\240\000\240\000M\000a\000t\000h\000e\000m\000a\000t\000i\000c\000s) >> endobj % 'Outline.13': class OutlineEntryObject 290 0 obj << /Dest [ 205 0 R /XYZ 62.69291 747.0236 0 ] /Next 291 0 R /Parent 247 0 R /Prev 289 0 R /Title (\376\377\0001\0004\000\240\000\240\000\240\000H\000y\000p\000h\000e\000n\000a\000t\000i\000o\000n) >> endobj % 'Outline.14': class OutlineEntryObject 291 0 obj << /Dest [ 207 0 R /XYZ 62.69291 747.0236 0 ] /Next 292 0 R /Parent 247 0 R /Prev 290 0 R /Title (\376\377\0001\0005\000\240\000\240\000\240\000P\000a\000g\000e\000 \000L\000a\000y\000o\000u\000t) >> endobj % 'Outline.15': class OutlineEntryObject 292 0 obj << /Dest [ 210 0 R /XYZ 62.69291 747.0236 0 ] /Next 293 0 R /Parent 247 0 R /Prev 291 0 R /Title (\376\377\0001\0006\000\240\000\240\000\240\000S\000m\000a\000r\000t\000 \000Q\000u\000o\000t\000e\000s) >> endobj % 'Outline.16': class OutlineEntryObject 293 0 obj << /Dest [ 211 0 R /XYZ 62.69291 747.0236 0 ] /Next 294 0 R /Parent 247 0 R /Prev 292 0 R /Title (\376\377\0001\0007\000\240\000\240\000\240\000K\000e\000r\000n\000i\000n\000g) >> endobj % 'Outline.17': class OutlineEntryObject 294 0 obj << /Dest [ 213 0 R /XYZ 62.69291 747.0236 0 ] /Next 295 0 R /Parent 247 0 R /Prev 293 0 R /Title (\376\377\0001\0008\000\240\000\240\000\240\000S\000p\000h\000i\000n\000x) >> endobj % 'Outline.18': class OutlineEntryObject 295 0 obj << /Count 4 /Dest [ 216 0 R /XYZ 62.69291 747.0236 0 ] /First 296 0 R /Last 298 0 R /Next 300 0 R /Parent 247 0 R /Prev 294 0 R /Title (\376\377\0001\0009\000\240\000\240\000\240\000E\000x\000t\000e\000n\000s\000i\000o\000n\000s) >> endobj % 'Outline.69.0': class OutlineEntryObject 296 0 obj << /Dest [ 216 0 R /XYZ 62.69291 666.0236 0 ] /Next 297 0 R /Parent 295 0 R /Title (\376\377\0001\0009\000.\0001\000\240\000\240\000\240\000P\000r\000e\000p\000r\000o\000c\000e\000s\000s\000 \000\(\000-\000e\000&\000n\000b\000s\000p\000;\000p\000r\000e\000p\000r\000o\000c\000e\000s\000s\000\)) >> endobj % 'Outline.69.1': class OutlineEntryObject 297 0 obj << /Dest [ 217 0 R /XYZ 62.69291 520.6772 0 ] /Next 298 0 R /Parent 295 0 R /Prev 296 0 R /Title (\376\377\0001\0009\000.\0002\000\240\000\240\000\240\000I\000n\000k\000s\000c\000a\000p\000e\000 \000\(\000-\000e\000&\000n\000b\000s\000p\000;\000i\000n\000k\000s\000c\000a\000p\000e\000\)) >> endobj % 'Outline.69.2': class OutlineEntryObject 298 0 obj << /Count 1 /Dest [ 217 0 R /XYZ 62.69291 359.6772 0 ] /First 299 0 R /Last 299 0 R /Parent 295 0 R /Prev 297 0 R /Title (\376\377\0001\0009\000.\0003\000\240\000\240\000\240\000D\000o\000t\000t\000e\000d\000_\000T\000O\000C\000 \000\(\000-\000e\000&\000n\000b\000s\000p\000;\000d\000o\000t\000t\000e\000d\000_\000t\000o\000c\000\)) >> endobj % 'Outline.70.0': class OutlineEntryObject 299 0 obj << /Dest [ 217 0 R /XYZ 62.69291 299.6772 0 ] /Parent 298 0 R /Title (\376\377\0001\0009\000.\0003\000.\0001\000\240\000\240\000\240\000H\000i\000s\000t\000o\000r\000y\000:) >> endobj % 'Outline.19': class OutlineEntryObject 300 0 obj << /Count 6 /Dest [ 220 0 R /XYZ 62.69291 747.0236 0 ] /First 301 0 R /Last 306 0 R /Next 307 0 R /Parent 247 0 R /Prev 295 0 R /Title (\376\377\0002\0000\000\240\000\240\000\240\000D\000e\000v\000e\000l\000o\000p\000e\000r\000s) >> endobj % 'Outline.71.0': class OutlineEntryObject 301 0 obj << /Dest [ 220 0 R /XYZ 62.69291 714.0236 0 ] /Next 302 0 R /Parent 300 0 R /Title (\376\377\0002\0000\000.\0001\000\240\000\240\000\240\000G\000u\000i\000d\000e\000l\000i\000n\000e\000s) >> endobj % 'Outline.71.1': class OutlineEntryObject 302 0 obj << /Dest [ 221 0 R /XYZ 62.69291 747.0236 0 ] /Next 303 0 R /Parent 300 0 R /Prev 301 0 R /Title (\376\377\0002\0000\000.\0002\000\240\000\240\000\240\000C\000o\000n\000t\000i\000n\000u\000o\000u\000s\000 \000I\000n\000t\000e\000g\000r\000a\000t\000i\000o\000n) >> endobj % 'Outline.71.2': class OutlineEntryObject 303 0 obj << /Count 2 /Dest [ 221 0 R /XYZ 62.69291 627.0236 0 ] /First 304 0 R /Last 305 0 R /Next 306 0 R /Parent 300 0 R /Prev 302 0 R /Title (\376\377\0002\0000\000.\0003\000\240\000\240\000\240\000R\000u\000n\000n\000i\000n\000g\000 \000t\000e\000s\000t\000s) >> endobj % 'Outline.72.0': class OutlineEntryObject 304 0 obj << /Dest [ 221 0 R /XYZ 62.69291 597.0236 0 ] /Next 305 0 R /Parent 303 0 R /Title (\376\377\0002\0000\000.\0003\000.\0001\000\240\000\240\000\240\000f\000i\000r\000s\000t\000 \000r\000u\000n) >> endobj % 'Outline.72.1': class OutlineEntryObject 305 0 obj << /Dest [ 221 0 R /XYZ 62.69291 494.8236 0 ] /Parent 303 0 R /Prev 304 0 R /Title (\376\377\0002\0000\000.\0003\000.\0002\000\240\000\240\000\240\000n\000e\000x\000t\000 \000r\000u\000n\000s) >> endobj % 'Outline.71.3': class OutlineEntryObject 306 0 obj << /Dest [ 221 0 R /XYZ 62.69291 416.6236 0 ] /Parent 300 0 R /Prev 303 0 R /Title (\376\377\0002\0000\000.\0004\000\240\000\240\000\240\000G\000e\000t\000t\000i\000n\000g\000 \000c\000o\000m\000m\000i\000t\000 \000r\000i\000g\000h\000t\000s) >> endobj % 'Outline.20': class OutlineEntryObject 307 0 obj << /Dest [ 222 0 R /XYZ 62.69291 747.0236 0 ] /Parent 247 0 R /Prev 300 0 R /Title (\376\377\0002\0001\000\240\000\240\000\240\000L\000i\000c\000e\000n\000s\000e\000s) >> endobj % 'R308': class PDFPages 308 0 obj % page tree << /Count 52 /Kids [ 12 0 R 15 0 R 86 0 R 144 0 R 145 0 R 146 0 R 147 0 R 151 0 R 152 0 R 153 0 R 160 0 R 161 0 R 164 0 R 165 0 R 166 0 R 168 0 R 169 0 R 170 0 R 173 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 184 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 193 0 R 194 0 R 201 0 R 205 0 R 206 0 R 207 0 R 208 0 R 210 0 R 211 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 220 0 R 221 0 R 222 0 R 228 0 R ] /Type /Pages >> endobj % 'R309': class PDFStream 309 0 obj % page stream << /Length 512 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 57.6378 198.9449 cm /FormXob.pdfrw_3 Do Q q 1 0 0 1 62.69291 558.0945 cm Q q 1 0 0 1 62.69291 200.4945 cm q 0 0 0 rg BT 1 0 0 1 0 249.6 Tm 66.78082 0 Td /F2+0 96 Tf 115.2 TL (How to) Tj T* 83.20312 0 Td (use) Tj T* -86.97652 0 Td (rst2pdf) Tj T* -63.00738 0 Td ET Q Q q 1 0 0 1 62.69291 178.4945 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 206.8749 0 Td (Version 0.93) Tj T* -206.8749 0 Td ET Q Q q 1 0 0 1 62.69291 178.4945 cm Q endstream endobj % 'R310': class PDFStream 310 0 obj % page stream << /Length 1412 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 732.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 36.93937 0 Td (Author:) Tj T* -36.93937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Roberto Alsina <) Tj 0 0 .501961 rg (ralsina@netmanagers.com.ar) Tj 0 0 0 rg (>) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 717.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 33.02937 0 Td (Version:) Tj T* -33.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (0.93) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 702.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 28.02937 0 Td (Revision:) Tj T* -28.02937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2626) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 2) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 121.8919 0 Td (Section) Tj T* -121.8919 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R311': class PDFStream 311 0 obj % page stream << /Length 9605 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Contents) Tj T* ET Q Q q 1 0 0 1 62.69291 90.02362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 615 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (1 Introduction) Tj T* ET Q Q q 1 0 0 1 397.8898 615 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 597 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (2 Command line options) Tj T* ET Q Q q 1 0 0 1 397.8898 597 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 579 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (3 Configuration File) Tj T* ET Q Q q 1 0 0 1 397.8898 579 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 561 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (4 Pipe usage) Tj T* ET Q Q q 1 0 0 1 397.8898 561 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 543 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (5 Headers and Footers) Tj T* ET Q Q q 1 0 0 1 397.8898 543 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (11) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 525 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (6 Footnotes) Tj T* ET Q Q q 1 0 0 1 397.8898 525 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (12) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 507 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (7 Images) Tj T* ET Q Q q 1 0 0 1 397.8898 507 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 489 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (7.1 Inline) Tj T* ET Q Q q 1 0 0 1 397.8898 489 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 471 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (7.2 Supported Image Types) Tj T* ET Q Q q 1 0 0 1 397.8898 471 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 453 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (7.3 Image Size) Tj T* ET Q Q q 1 0 0 1 397.8898 453 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (13) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 435 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (8 Styles) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (15) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.1 Included StyleSheets) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (15) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.2 StyleSheet Syntax) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.3 Font Alias) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.4 Style Definition) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (17) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.5 Widows and Orphans) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (18) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.6 Font Embedding) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.6.1 The Easy Way) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.6.1.1 Fonty is a True Type font:) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.6.1.2 Fonty is a Type 1 font:) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (19) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.6.2 The Harder Way \(True Type\)) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (20) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.6.3 The Harder Way \(Type1\)) Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.7 Page Size and Margins) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (21) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.8 Advanced: table styles) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (22) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.9 Multiple Stylesheets) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (23) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.10 Styling Your Document) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (25) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.10.1 The Base Styles) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (25) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (8.10.2 Lists) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (25) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (9 Syntax Highlighting) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (27) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (9.1 File inclusion) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (29) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (9.1.1 Include with Boundaries) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (29) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (9.1.2 Options) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (30) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (10 Raw Directive) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (10.1 Raw PDF) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (10.2 Page Counters) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (31) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 121.8919 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section) Tj T* -121.8919 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 52.68795 0 Td (Page 3) Tj T* -52.68795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R312': class PDFStream 312 0 obj % page stream << /Length 7100 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 297.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 435 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (10.3 Page Breaks) Tj T* ET Q Q q 1 0 0 1 397.8898 435 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (32) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 417 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (10.4 Frame Breaks) Tj T* ET Q Q q 1 0 0 1 397.8898 417 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (32) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 399 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (10.5 Page Transitions) Tj T* ET Q Q q 1 0 0 1 397.8898 399 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (32) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 381 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (10.6 Raw HTML) Tj T* ET Q Q q 1 0 0 1 397.8898 381 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (33) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 363 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (11 The counter role) Tj T* ET Q Q q 1 0 0 1 397.8898 363 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (34) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 345 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (12 The oddeven directive) Tj T* ET Q Q q 1 0 0 1 397.8898 345 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (35) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 327 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (13 Mathematics) Tj T* ET Q Q q 1 0 0 1 397.8898 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (36) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (14 Hyphenation) Tj T* ET Q Q q 1 0 0 1 397.8898 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (37) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (15 Page Layout) Tj T* ET Q Q q 1 0 0 1 397.8898 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (39) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (16 Smart Quotes) Tj T* ET Q Q q 1 0 0 1 397.8898 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (41) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (17 Kerning) Tj T* ET Q Q q 1 0 0 1 397.8898 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (42) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (18 Sphinx) Tj T* ET Q Q q 1 0 0 1 397.8898 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (43) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (19 Extensions) Tj T* ET Q Q q 1 0 0 1 397.8898 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (46) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (19.1 Preprocess \() Tj /F4 10 Tf 0 0 0 rg (-e) Tj ( ) Tj (preprocess) Tj /F1 10 Tf 0 0 .501961 rg (\)) Tj T* ET Q Q q 1 0 0 1 397.8898 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (46) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (19.2 Inkscape \() Tj /F4 10 Tf 0 0 0 rg (-e) Tj ( ) Tj (inkscape) Tj /F1 10 Tf 0 0 .501961 rg (\)) Tj T* ET Q Q q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (47) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (19.3 Dotted_TOC \() Tj /F4 10 Tf 0 0 0 rg (-e) Tj ( ) Tj (dotted_toc) Tj /F1 10 Tf 0 0 .501961 rg (\)) Tj T* ET Q Q q 1 0 0 1 397.8898 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (47) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (19.3.1 History:) Tj T* ET Q Q q 1 0 0 1 397.8898 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (47) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (20 Developers) Tj T* ET Q Q q 1 0 0 1 397.8898 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (49) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (20.1 Guidelines) Tj T* ET Q Q q 1 0 0 1 397.8898 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (49) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (20.2 Continuous Integration) Tj T* ET Q Q q 1 0 0 1 397.8898 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (50) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (20.3 Running tests) Tj T* ET Q Q q 1 0 0 1 397.8898 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (50) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (20.3.1 first run) Tj T* ET Q Q q 1 0 0 1 397.8898 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (50) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (20.3.2 next runs) Tj T* ET Q Q q 1 0 0 1 397.8898 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (50) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (20.4 Getting commit rights) Tj T* ET Q Q q 1 0 0 1 397.8898 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (50) Tj T* -60.88 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (21 Licenses) Tj T* ET Q Q q 1 0 0 1 397.8898 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (51) Tj T* -60.88 0 Td ET Q Q q Q Q q 1 0 0 1 62.69291 297.0236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 4) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 121.8919 0 Td (Section) Tj T* -121.8919 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R313': class PDFStream 313 0 obj % page stream << /Length 2020 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (1 Introduction) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This document explains how to use rst2pdf. Here is the very short version:) Tj T* ET Q Q q 1 0 0 1 62.69291 674.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (rst2pdf.py mydocument.txt -o mydocument.pdf) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 642.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .53811 Tw (That will, as long as mydocument.txt is a valid Restructured Text \(ReST\) document, produce a file called) Tj T* 0 Tw (mydocument.pdf which is a PDF version of your document.) Tj T* ET Q Q q 1 0 0 1 62.69291 600.8236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .448409 Tw (Of course, that means you just used default styles and settings. If it looks good enough for you, then you) Tj T* 0 Tw 1.039488 Tw (may stop reading this document, because you are done with it. If you are reading this in a PDF, it was) Tj T* 0 Tw (generated using those default settings.) Tj T* ET Q Q q 1 0 0 1 62.69291 582.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (However, if you want to customize the output, or are just curious to see what can be done, let\264s continue.) Tj T* ET Q Q q 1 0 0 1 62.69291 582.8236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 87.42693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 1 Introduction) Tj T* -87.42693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 52.68795 0 Td (Page 5) Tj T* -52.68795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R314': class PDFStream 314 0 obj % page stream << /Length 12355 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (2 Command line options) Tj T* ET Q Q q 1 0 0 1 62.69291 704.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-h, --help) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Show this help message and exit) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 689.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--config=FILE) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Config file to use. Default=~/.rst2pdf/config) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 674.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-o FILE, --output=FILE) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Write the PDF to FILE) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 647.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 15.95237 cm q q .905544 0 0 .905544 0 0 cm q 1 0 0 1 .1 .110431 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-s STYLESHEETS, --stylesheets=STYLESHEETS) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7638 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .877198 Tw (A comma-separated list of custom stylesheets.) Tj T* 0 Tw (Default="") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 620.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--stylesheet-path=FOLDERLIST) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.81784 Tw (A colon-separated list of folders to search for) Tj T* 0 Tw (stylesheets. Default="") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 605.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-c, --compressed) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Create a compressed PDF. Default=False) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 590.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--print-stylesheet) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print the default stylesheet and exit) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 574.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--font-folder=FOLDER) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Search this folder for fonts. \(Deprecated\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 547.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--font-path=FOLDERLIST) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.81784 Tw (A colon-separated list of folders to search for) Tj T* 0 Tw (fonts. Default="") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 532.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--baseurl=URL) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The base URL for relative URLs.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 505.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-l LANG, --language=LANG) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 4.335814 Tw (Language to be used for hyphenation and) Tj T* 0 Tw (docutils localization. Default=None) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 490.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--header=HEADER) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page header if not specified in the document.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 475.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--footer=FOOTER) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page footer if not specified in the document.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 436.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--section-header-depth=N) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 2.770542 Tw (Sections up to this dept will be used in the) Tj T* 0 Tw 14.09372 Tw (header and footer's replacement of) Tj T* 0 Tw (###Section###. Default=2) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 397.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--smart-quotes=VALUE) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 5.549147 Tw (Try to convert ASCII quotes, ellipsis and) Tj T* 0 Tw 12.07372 Tw (dashes to the typographically correct) Tj T* 0 Tw (equivalent. Default=0) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 379.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The possible values are:) Tj T* ET Q Q q 1 0 0 1 62.69291 373.2236 cm Q q 1 0 0 1 62.69291 373.2236 cm Q q 1 0 0 1 62.69291 361.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Suppress all transformations. \(Do nothing.\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 355.2236 cm Q q 1 0 0 1 62.69291 331.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.53622 Tw (Performs default SmartyPants transformations: quotes \(including backticks-style\), em-dashes, and) Tj T* 0 Tw (ellipses. "--" \(dash dash\) is used to signify an em-dash; there is no support for en-dashes.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 325.2236 cm Q q 1 0 0 1 62.69291 301.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.145366 Tw (Same as --smart-quotes=1, except that it uses the old-school typewriter shorthand for dashes: "--") Tj T* 0 Tw (\(dash dash\) for en-dashes, "---" \(dash dash dash\) for em-dashes.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 295.2236 cm Q q 1 0 0 1 62.69291 271.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.444597 Tw (Same as --smart-quotes=2, but inverts the shorthand for dashes: "--" \(dash dash\) for em-dashes,) Tj T* 0 Tw (and "---" \(dash dash dash\) for en-dashes.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 271.2236 cm Q q 1 0 0 1 62.69291 244.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--fit-literal-mode=MODE) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.549488 Tw (What to do when a literal is too wide. One of) Tj T* 0 Tw (error,overflow,shrink,truncate. Default="shrink") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 217.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--fit-background-mode=MODE) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.51811 Tw (How to fit the background image to the page.) Tj T* 0 Tw (One of scale or center. Default="center") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 190.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--inline-links) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.318976 Tw (Shows target between parenthesis instead of) Tj T* 0 Tw (active link) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 175.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--repeat-table-rows) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Repeats header row for each splitted table) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 159.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--raw-html) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Support embeddig raw HTML. Default: False) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 144.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-q, --quiet) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print less information.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 129.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-v, --verbose) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print debug information.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 114.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--very-verbose) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print even more debug information.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 99.02362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--version) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Print version number and exit.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 83.82362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--no-footnote-backlinks) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Disable footnote backlinks. Default: False) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 6) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 63.81193 0 Td (Section 2 Command line options) Tj T* -63.81193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R315': class PDFStream 315 0 obj % page stream << /Length 7136 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 731.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--inline-footnotes) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Show footnotes inline. Default: True) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 716.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--default-dpi=NUMBER) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (DPI for objects sized in pixels. Default=300) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 689.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--show-frame-boundary) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 10.55098 Tw (Show frame borders \(only useful for) Tj T* 0 Tw (debugging\). Default=False) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 650.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--disable-splittables) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 8.944976 Tw (Don't use splittable flowables in some) Tj T* 0 Tw 1.97811 Tw (elements. Only try this if you can't process a) Tj T* 0 Tw (document any other way.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 623.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-b LEVEL, --break-level=LEVEL) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 3.329269 Tw (Maximum section level that starts in a new) Tj T* 0 Tw (page. Default: 0) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 607.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (--first-page-on-right When using double sided pages, the first page will start) Tj T* ET Q Q q 1 0 0 1 62.69291 592.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (on the right hand side. \(Book Style\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 565.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--blank-first-page) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 3.94686 Tw (Add a blank page at the beginning of the) Tj T* 0 Tw (document.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 502.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 50.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--break-side=VALUE) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F1 10 Tf 12 TL 1.200697 Tw (How section breaks work. Can be "even", and) Tj T* 0 Tw 4.915814 Tw (sections start in an even page,"odd", and) Tj T* 0 Tw 4.612126 Tw (sections start in odd pages, or "any" and) Tj T* 0 Tw 2.56061 Tw (sections start in the next page,be it even or) Tj T* 0 Tw (odd. See also the -b option.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 463.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--date-invariant) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .79561 Tw (Don't store the current date in the PDF. Useful) Tj T* 0 Tw 1.49061 Tw (mainly for the test suite, where we don't want) Tj T* 0 Tw (the PDFs to change.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 448.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (-e EXTENSIONS) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Alias for --extension-module) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 409.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--extension-module=EXTENSIONS) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 7.305814 Tw (Add a helper extension module to this) Tj T* 0 Tw 1.73784 Tw (invocation of rst2pdf \(module must end in .py) Tj T* 0 Tw (and be on the python path\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 382.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--custom-cover=FILE) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .863555 Tw (Template file used for the cover page. Default:) Tj T* 0 Tw (cover.tmpl) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 355.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--use-floating-images) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.384147 Tw (Makes images with :aling: attribute work more) Tj T* 0 Tw (like in rst2html. Default: False) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 316.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 26.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--use-numbered-links) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 5.432976 Tw (When using numbered sections, adds the) Tj T* 0 Tw 3.32784 Tw (numbers to all links referring to the section) Tj T* 0 Tw (headers. Default: False) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 289.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 14.8 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (--strip-elements-with-class=CLASS) Tj T* ET Q Q Q Q Q q 1 0 0 1 252.7449 3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.77248 Tw (Remove elements with this CLASS from the) Tj T* 0 Tw (output. Can be used multiple times.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 289.4236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 63.81193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 2 Command line options) Tj T* -63.81193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 52.68795 0 Td (Page 7) Tj T* -52.68795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R316': class PDFStream 316 0 obj % page stream << /Length 7659 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (3 Configuration File) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 14 Tm 1.75284 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since version 0.8, rst2pdf will read \(if it is available\) configuration files in ) Tj /F4 10 Tf (/etc/rst2pdf.conf ) Tj /F1 10 Tf (and) Tj T* 0 Tw /F4 10 Tf (~/.rst2pdf/config) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 678.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The user's file at ) Tj /F4 10 Tf (~/.rst2pdf/config ) Tj /F1 10 Tf (will have priority over the system's at ) Tj /F4 10 Tf (/etc/rst2pdf.conf) Tj /F1 10 Tf ( ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (1) Tj T* ET Q Q q 1 0 0 1 62.69291 660.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Here's an example file showing some of the currently available options:) Tj T* ET Q Q q 1 0 0 1 62.69291 86.82362 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 564 re B* Q q .960784 .960784 .862745 rg n 0 540.75 426 12 re f* .960784 .960784 .862745 rg n 0 516.75 54 12 re f* .960784 .960784 .862745 rg n 0 504.75 336 12 re f* .960784 .960784 .862745 rg n 0 492.75 324 12 re f* .960784 .960784 .862745 rg n 0 468.75 66 12 re f* .960784 .960784 .862745 rg n 66 468.75 6 12 re f* .960784 .960784 .862745 rg n 72 468.75 12 12 re f* .960784 .960784 .862745 rg n 0 444.75 150 12 re f* .960784 .960784 .862745 rg n 0 432.75 216 12 re f* .960784 .960784 .862745 rg n 0 420.75 60 12 re f* .960784 .960784 .862745 rg n 60 420.75 6 12 re f* .960784 .960784 .862745 rg n 66 420.75 30 12 re f* .960784 .960784 .862745 rg n 0 396.75 390 12 re f* .960784 .960784 .862745 rg n 0 384.75 354 12 re f* .960784 .960784 .862745 rg n 0 360.75 54 12 re f* .960784 .960784 .862745 rg n 54 360.75 6 12 re f* .960784 .960784 .862745 rg n 60 360.75 12 12 re f* .960784 .960784 .862745 rg n 0 336.75 426 12 re f* .960784 .960784 .862745 rg n 0 324.75 276 12 re f* .960784 .960784 .862745 rg n 0 312.75 90 12 re f* .960784 .960784 .862745 rg n 90 312.75 6 12 re f* .960784 .960784 .862745 rg n 96 312.75 12 12 re f* .960784 .960784 .862745 rg n 0 288.75 270 12 re f* .960784 .960784 .862745 rg n 0 264.75 48 12 re f* .960784 .960784 .862745 rg n 48 264.75 6 12 re f* .960784 .960784 .862745 rg n 54 264.75 42 12 re f* .960784 .960784 .862745 rg n 0 240.75 192 12 re f* .960784 .960784 .862745 rg n 0 228.75 36 12 re f* .960784 .960784 .862745 rg n 36 228.75 6 12 re f* .960784 .960784 .862745 rg n 42 228.75 24 12 re f* .960784 .960784 .862745 rg n 0 216.75 36 12 re f* .960784 .960784 .862745 rg n 36 216.75 6 12 re f* .960784 .960784 .862745 rg n 42 216.75 24 12 re f* .960784 .960784 .862745 rg n 0 192.75 312 12 re f* .960784 .960784 .862745 rg n 0 180.75 156 12 re f* .960784 .960784 .862745 rg n 0 156.75 48 12 re f* .960784 .960784 .862745 rg n 48 156.75 6 12 re f* .960784 .960784 .862745 rg n 54 156.75 48 12 re f* .960784 .960784 .862745 rg n 0 132.75 294 12 re f* .960784 .960784 .862745 rg n 0 120.75 180 12 re f* .960784 .960784 .862745 rg n 0 96.75 114 12 re f* .960784 .960784 .862745 rg n 114 96.75 6 12 re f* .960784 .960784 .862745 rg n 120 96.75 48 12 re f* .960784 .960784 .862745 rg n 0 72.75 390 12 re f* .960784 .960784 .862745 rg n 0 60.75 240 12 re f* .960784 .960784 .862745 rg n 0 36.75 66 12 re f* .960784 .960784 .862745 rg n 66 36.75 6 12 re f* .960784 .960784 .862745 rg n 72 36.75 6 12 re f* .960784 .960784 .862745 rg n 0 12.75 402 12 re f* .960784 .960784 .862745 rg n 0 .75 396 12 re f* BT 1 0 0 1 0 542 Tm 12 TL /F5 10 Tf .25098 .501961 .501961 rg (# This is an example config file. Modify and place in ~/.rst2pdf/config) Tj /F4 10 Tf 0 0 0 rg T* T* /F6 10 Tf 0 .501961 0 rg ([general]) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# A comma-separated list of custom stylesheets. Example:) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# stylesheets="fruity.json,a4paper.json,verasans.json") Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (stylesheets) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("") Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Create a compressed PDF) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# Use true/false \(lower case\) or 1/0) Tj /F4 10 Tf 0 0 0 rg T* .490196 .564706 .160784 rg (compressed) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (false) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# A colon-separated list of folders to search for fonts. Example:) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# font_path="/usr/share/fonts:/usr/share/texmf-dist/fonts/") Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (font_path) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("") Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# A colon-separated list of folders to search for stylesheets. Example:) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# stylesheet_path="~/styles:/usr/share/styles") Tj /F4 10 Tf 0 0 0 rg T* .490196 .564706 .160784 rg (stylesheet_path) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("") Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Language to be used for hyphenation support) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (language) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("en_US") Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Default page header and footer) Tj /F4 10 Tf 0 0 0 rg T* .490196 .564706 .160784 rg (header) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (null) Tj 0 0 0 rg T* .490196 .564706 .160784 rg (footer) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (null) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# What to do if a literal block is too large. Can be) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# shrink/truncate/overflow) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (fit_mode) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("shrink") Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# How to adjust the background image to the page.) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# Can be: "scale" and "center") Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (fit_background_mode) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("center") Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# What is the maximum level of heading that starts in a new page.) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# 0 means no level starts in a new page.) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (break_level) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (0) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# How section breaks work. Can be "even", and sections start in an ) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# even page, "odd", and sections start in odd pages, or "any" and ) Tj /F4 10 Tf 0 0 0 rg T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 8) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 74.37193 0 Td (Section 3 Configuration File) Tj T* -74.37193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R317': class PDFStream 317 0 obj % page stream << /Length 6723 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 238.5279 cm q q .91919 0 0 .91919 0 0 cm q 1 0 0 1 6.6 7.180237 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 510 552 re B* Q q .960784 .960784 .862745 rg n 0 528.75 318 12 re f* .960784 .960784 .862745 rg n 0 504.75 60 12 re f* .960784 .960784 .862745 rg n 60 504.75 6 12 re f* .960784 .960784 .862745 rg n 66 504.75 30 12 re f* .960784 .960784 .862745 rg n 0 480.75 306 12 re f* .960784 .960784 .862745 rg n 0 456.75 96 12 re f* .960784 .960784 .862745 rg n 96 456.75 6 12 re f* .960784 .960784 .862745 rg n 102 456.75 30 12 re f* .960784 .960784 .862745 rg n 0 432.75 378 12 re f* .960784 .960784 .862745 rg n 0 408.75 90 12 re f* .960784 .960784 .862745 rg n 90 408.75 6 12 re f* .960784 .960784 .862745 rg n 96 408.75 30 12 re f* .960784 .960784 .862745 rg n 0 384.75 90 12 re f* .960784 .960784 .862745 rg n 0 372.75 306 12 re f* .960784 .960784 .862745 rg n 0 360.75 492 12 re f* .960784 .960784 .862745 rg n 0 348.75 498 12 re f* .960784 .960784 .862745 rg n 0 336.75 216 12 re f* .960784 .960784 .862745 rg n 0 324.75 456 12 re f* .960784 .960784 .862745 rg n 0 312.75 474 12 re f* .960784 .960784 .862745 rg n 0 300.75 444 12 re f* .960784 .960784 .862745 rg n 0 288.75 330 12 re f* .960784 .960784 .862745 rg n 0 264.75 66 12 re f* .960784 .960784 .862745 rg n 66 264.75 6 12 re f* .960784 .960784 .862745 rg n 72 264.75 6 12 re f* .960784 .960784 .862745 rg n 0 240.75 324 12 re f* .960784 .960784 .862745 rg n 0 216.75 108 12 re f* .960784 .960784 .862745 rg n 108 216.75 6 12 re f* .960784 .960784 .862745 rg n 114 216.75 24 12 re f* .960784 .960784 .862745 rg n 0 192.75 366 12 re f* .960784 .960784 .862745 rg n 0 168.75 96 12 re f* .960784 .960784 .862745 rg n 96 168.75 6 12 re f* .960784 .960784 .862745 rg n 102 168.75 30 12 re f* .960784 .960784 .862745 rg n 0 144.75 132 12 re f* .960784 .960784 .862745 rg n 0 132.75 456 12 re f* .960784 .960784 .862745 rg n 0 120.75 300 12 re f* .960784 .960784 .862745 rg n 0 96.75 168 12 re f* .960784 .960784 .862745 rg n 0 72.75 132 12 re f* .960784 .960784 .862745 rg n 0 60.75 474 12 re f* .960784 .960784 .862745 rg n 0 36.75 90 12 re f* .960784 .960784 .862745 rg n 96 36.75 6 12 re f* .960784 .960784 .862745 rg n 108 36.75 30 12 re f* .960784 .960784 .862745 rg n 0 12.75 216 12 re f* .960784 .960784 .862745 rg n 0 .75 48 12 re f* .960784 .960784 .862745 rg n 54 .75 6 12 re f* .960784 .960784 .862745 rg n 66 .75 30 12 re f* BT 1 0 0 1 0 530 Tm 12 TL /F5 10 Tf .25098 .501961 .501961 rg (# sections start in the next page, be it even or odd.) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (break_side) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("any") Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Add a blank page at the beginning of the document) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (blank_first_page) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (false) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Treat the first page as even \(default false, treat it as odd\)) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (first_page_even) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (false) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Smart quotes.) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# 0: Suppress all transformations. \(Do nothing.\)) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# 1: Performs default SmartyPants transformations: quotes \(including \221\221backticks'') Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# -style\), em-dashes, and ellipses. "--" \(dash dash\) is used to signify an em-dash;) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# there is no support for en-dashes.) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# 2: Same as 1, except that it uses the old-school typewriter shorthand for) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# dashes: "--" \(dash dash\) for en-dashes, "---" \(dash dash dash\) for em-dashes.) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# 3: Same as 2, but inverts the shorthand for dashes: "--" \(dash dash\) for) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# em-dashes, and "---" \(dash dash dash\) for en-dashes.) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (smartquotes) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (0) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Footnote backlinks enabled or not \(default: enabled\)) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (footnote_backlinks) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (true) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Show footnotes inline instead of at the end of the document) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (inline_footnotes) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg (false) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Cover page template.) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# It will be searched in the document's folder, in ~/.rst2pdf/templates and ) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# in the templates subfolder of the package folder) Tj /F4 10 Tf 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# custom_cover = cover.tmpl ) Tj /F4 10 Tf 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Use floating images.) Tj /F4 10 Tf 0 0 0 rg T* /F5 10 Tf .25098 .501961 .501961 rg (# Makes the behaviour of images with the :align: attribute more like rst2html's) Tj /F4 10 Tf 0 0 0 rg T* T* .490196 .564706 .160784 rg (floating_images) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (false) Tj 0 0 0 rg T* T* /F5 10 Tf .25098 .501961 .501961 rg (# Support the ..raw:: html directive) Tj /F4 10 Tf 0 0 0 rg T* .490196 .564706 .160784 rg (raw_html) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (false) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 230.5279 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 74.37193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 3 Configuration File) Tj T* -74.37193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 52.68795 0 Td (Page 9) Tj T* -52.68795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R318': class PDFStream 318 0 obj % page stream << /Length 2617 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (4 Pipe usage) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If no input nor output are provided, stdin and stdout will be used respectively) Tj T* ET Q Q q 1 0 0 1 62.69291 690.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You may want to use rst2pdf in a linux pipe as such:) Tj T* ET Q Q q 1 0 0 1 62.69291 656.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (cat readme.txt | rst2pdf | gzip -c ) Tj (>) Tj ( readme.pdf.gz) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 636.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (or:) Tj T* ET Q Q q 1 0 0 1 62.69291 607.8731 cm q q .831369 0 0 .831369 0 0 cm q 1 0 0 1 6.6 7.938713 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 564 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (curl http://docutils.sourceforge.net/docs/user/rst/quickstart.txt | rst2pdf ) Tj (>) Tj ( quickstart.pdf) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 587.8731 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If no input argument is provided, stdin will be used:) Tj T* ET Q Q q 1 0 0 1 62.69291 554.6731 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (cat readme.txt | rst2pdf -o readme.pdf) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 534.6731 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If outpufile is set to dash '-', output goes to stdout:) Tj T* ET Q Q q 1 0 0 1 62.69291 501.4731 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (rst2pdf -o - readme.txt ) Tj (>) Tj ( output.pdf) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 493.4731 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 10) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 88.53693 0 Td (Section 4 Pipe usage) Tj T* -88.53693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R319': class PDFStream 319 0 obj % page stream << /Length 4250 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (5 Headers and Footers) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ReST supports headers and footers, using the header and footer directive:) Tj T* ET Q Q q 1 0 0 1 62.69291 650.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (.. header::) Tj T* T* ( This will be at the top of every page.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 618.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .877209 Tw (Often, you may want to put a page number there, or a section name.The following magic tokens will be) Tj T* 0 Tw (replaced \(More may be added as rst2pdf evolves\):) Tj T* ET Q Q q 1 0 0 1 62.69291 602.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (###Page###) Tj T* ET Q Q q 1 0 0 1 62.69291 587.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Replaced by the current page number.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 571.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (###Title###) Tj T* ET Q Q q 1 0 0 1 62.69291 556.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Replaced by the document title) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 540.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (###Section###) Tj T* ET Q Q q 1 0 0 1 62.69291 525.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Replaced by the currect section title) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 509.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (###SectNum###) Tj T* ET Q Q q 1 0 0 1 62.69291 482.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .870651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Replaced by the currect section number. ) Tj /F3 10 Tf (Important: ) Tj /F1 10 Tf (You must use the sectnum directive for this to) Tj T* 0 Tw (work.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 466.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (###Total###) Tj T* ET Q Q q 1 0 0 1 62.69291 427.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 26 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 26 Tm .39104 Tw 12 TL /F1 10 Tf 0 0 0 rg (Replaced by the total number of pages in the document. Keep in mind that this is the ) Tj /F3 10 Tf (real ) Tj /F1 10 Tf (number of) Tj T* 0 Tw 1.71686 Tw (pages, not the displayed number, so if you play with ) Tj 0 0 .501961 rg (page counters ) Tj 0 0 0 rg (this number will probably be) Tj T* 0 Tw (wrong.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 385.8236 cm q BT 1 0 0 1 0 26 Tm 2.167485 Tw 12 TL /F1 10 Tf 0 0 0 rg (Headers and footers are visible by default but they can be disabled by specific ) Tj 0 0 .501961 rg (Page Templates ) Tj 0 0 0 rg (for) Tj T* 0 Tw 3.793984 Tw (example, cover pages. You can also set headers and footers via ) Tj /F7 10 Tf (command line options ) Tj /F1 10 Tf (or the) Tj T* 0 Tw 0 0 .501961 rg (configuration file) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 355.8236 cm q BT 1 0 0 1 0 14 Tm 1.831488 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you want to do things like "put the page number on the ) Tj /F7 10 Tf (out ) Tj /F1 10 Tf (side of the page, check ) Tj 0 0 .501961 rg (The oddeven) Tj T* 0 Tw (directive) Tj T* ET Q Q q 1 0 0 1 62.69291 355.8236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 66.58693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 5 Headers and Footers) Tj T* -66.58693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 11) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R320': class PDFStream 320 0 obj % page stream << /Length 1306 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (6 Footnotes) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 3.531412 Tw (Currently rst2pdf doesn't support real footnotes, and converts them to endnotes. There is a real) Tj T* 0 Tw (complicated technical reason for this: I can't figure out a clean way to do it right.) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .717984 Tw (You can get the same behaviour as with rst2html by specifying --inline-footnotes, and then the footnotes) Tj T* 0 Tw 1.654269 Tw (will appear where you put them \(in other words, not footnotes, but "in-the-middle-of-text-notes" or just) Tj T* 0 Tw (plain notes.\)) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 12) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 91.31693 0 Td (Section 6 Footnotes) Tj T* -91.31693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R321': class PDFStream 321 0 obj % page stream << /Length 5532 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (7 Images) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (7.1 Inline) Tj T* ET Q Q q 1 0 0 1 62.69291 678.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can insert images in the middle of your text like this:) Tj T* ET Q Q q 1 0 0 1 62.69291 620.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (This |biohazard| means you have to run.) Tj T* T* (.. |biohazard| image:: ../rst2pdf/tests/input/images/biohazard.png) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 600.8236 cm q q 12 0 0 12 21.67 0 cm /FormXob.c8d097da4771654d12a9611e9af76669 Do Q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (This ) Tj 33.67 0 Td (means you have to run.) Tj T* -33.67 0 Td ET Q Q q 1 0 0 1 62.69291 582.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This only works correctly with reportlab 2.2 or later.) Tj T* ET Q Q q 1 0 0 1 62.69291 552.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (7.2 Supported Image Types) Tj T* ET Q Q q 1 0 0 1 62.69291 522.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .461318 Tw (For raster images, rst2pdf supports anything PIL \(The Python Imaging Library\) supports. The exact list of) Tj T* 0 Tw (supported formats varies according to your PIL version and system.) Tj T* ET Q Q q 1 0 0 1 62.69291 504.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For SVG support, you need to install svg2rlg or use the inkscape extension.) Tj T* ET Q Q q 1 0 0 1 62.69291 474.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.239984 Tw (Some features will not work when using these images.For example, gradients will not display, and text) Tj T* 0 Tw (may cause problems depending on font availability.) Tj T* ET Q Q q 1 0 0 1 62.69291 456.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can also use PDF images, via pdfrw.) Tj T* ET Q Q q 1 0 0 1 62.69291 426.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.763555 Tw (If you can choose between raster and vectorial images, for non-photographic images, vector files are) Tj T* 0 Tw (usually smaller and look better, specially when printed.) Tj T* ET Q Q q 1 0 0 1 62.69291 414.8236 cm Q q 1 0 0 1 62.69291 295.8236 cm .960784 .960784 .862745 rg n 0 119 469.8898 -119 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 93 Tm T* ET q 1 0 0 1 16 88 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F8 12.5 Tf 15 TL (Note) Tj T* ET Q Q q 1 0 0 1 16 64 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Image URLs) Tj T* ET Q Q q 1 0 0 1 16 34 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.020697 Tw (Attempting to be more compatible with rst2html, rst2pdf will try to handle images specified as) Tj T* 0 Tw (HTTP or FTP URLs by downloading them to a temporary file and including them in the PDF.) Tj T* ET Q Q q 1 0 0 1 16 16 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (This is probably not a good idea unless you are ) Tj /F3 10 Tf (really ) Tj /F1 10 Tf (sure the image won't go away.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 119 m 469.8898 119 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 119 l S n 469.8898 0 m 469.8898 119 l S Q Q q 1 0 0 1 62.69291 289.8236 cm Q q 1 0 0 1 62.69291 259.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (7.3 Image Size) Tj T* ET Q Q q 1 0 0 1 62.69291 241.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (PDFs are meant to reflect paper. A PDF has a specific size in centimeters or inches.) Tj T* ET Q Q q 1 0 0 1 62.69291 211.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .60686 Tw (Images usually are measured in pixels, which are meaningless in a PDF. To convert between pixels and) Tj T* 0 Tw (inches or centimeters, we use a DPI \(dots-per-inch\) value.) Tj T* ET Q Q q 1 0 0 1 62.69291 193.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, 300 pixels, with a 300DPI, are exactly one inch. 300 pixels at 100DPI are 3 inches.) Tj T* ET Q Q q 1 0 0 1 62.69291 151.8236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .818084 Tw (For that reason, to achieve a nice layout of the page, it's usually a good idea to specify the size of your) Tj T* 0 Tw .332619 Tw (images in those units, or as a percentage of the available width and you can ignore all this DPI nonsense) Tj T* 0 Tw (;-\)) Tj T* ET Q Q q 1 0 0 1 62.69291 121.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.887485 Tw (The rst2pdf default is 300DPI, but you can change it using the --default-dpi option or the default_dpi) Tj T* 0 Tw (setting in the config file.) Tj T* ET Q Q q 1 0 0 1 62.69291 103.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Examples of images with specified sizes:) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 97.15693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 7 Images) Tj T* -97.15693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 13) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R322': class PDFStream 322 0 obj % page stream << /Length 6379 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 637.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 108 re B* Q q 0 0 0 rg BT 1 0 0 1 0 86 Tm /F4 10 Tf 12 TL (.. image:: home.png) Tj T* ( :width: 3in) Tj T* T* (.. image:: home.png) Tj T* ( :width: 80%) Tj T* T* (.. image:: home.png) Tj T* ( :width: 7cm) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 617.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The valid units you can use are:) Tj T* ET Q Q q 1 0 0 1 62.69291 599.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL ("em" "ex" "px" "in" "cm" "mm" "pt" "pc" "%" "".) Tj T* ET Q Q q 1 0 0 1 62.69291 593.8236 cm Q q 1 0 0 1 62.69291 593.8236 cm Q q 1 0 0 1 62.69291 569.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .235251 Tw (px: Pixels. If you specify the size using this unit, rst2pdf will convert it to inches using the default DPI) Tj T* 0 Tw (explained above.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 563.8236 cm Q q 1 0 0 1 62.69291 539.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .558876 Tw 12 TL /F1 10 Tf 0 0 0 rg (No unit. If you just use a number, it will be considered as pixels. \() Tj /F3 10 Tf (IMPORTANT: ) Tj /F1 10 Tf (this used to default) Tj T* 0 Tw (to points. It was changed to be more compatible with rst2html\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 533.8236 cm Q q 1 0 0 1 62.69291 521.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (em: This is the same as your base style's font size. By default: 10 points.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 515.8236 cm Q q 1 0 0 1 62.69291 491.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .818409 Tw (ex: rst2pdf will use the same broken definition as IE: em/2. In truth this should be the height of the) Tj T* 0 Tw (lower-case x character in your base style.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 485.8236 cm Q q 1 0 0 1 62.69291 473.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (in: Inches \(1 inch = 2.54 cm\).) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 467.8236 cm Q q 1 0 0 1 62.69291 455.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (cm: centimeters \(1cm = 0.39 inches\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 449.8236 cm Q q 1 0 0 1 62.69291 437.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (mm: millimeters \(10mm = 1cm\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 431.8236 cm Q q 1 0 0 1 62.69291 419.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (pt: 1/72 inch) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 413.8236 cm Q q 1 0 0 1 62.69291 401.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (pc: 1/6 inch) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 395.8236 cm Q q 1 0 0 1 62.69291 371.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .686457 Tw 12 TL /F1 10 Tf 0 0 0 rg (%: percentage of available width in the frame. Setting a percentage as a height does ) Tj /F3 10 Tf (not ) Tj /F1 10 Tf (work and) Tj T* 0 Tw (probably never will.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 371.8236 cm Q q 1 0 0 1 62.69291 353.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you don't specify a size at all, rst2pdf will do its best to figure out what it should do:) Tj T* ET Q Q q 1 0 0 1 62.69291 311.8236 cm q BT 1 0 0 1 0 26 Tm .848935 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since there is no specified size, rst2pdf will try to convert the image's pixel size to inches using the DPI) Tj T* 0 Tw .95311 Tw (information available in the image itself. You can set that value using most image editors. For example,) Tj T* 0 Tw (using Gimp, it's in the Image -) Tj (> Print Size menu.) Tj T* ET Q Q q 1 0 0 1 62.69291 293.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (So, if your image is 6000 pixels wide, and is set to 1200DPI, it will be 5 inches wide.) Tj T* ET Q Q q 1 0 0 1 62.69291 263.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.311163 Tw (If your image doesn't have a DPI property set, and doesn't have it's desired size specified, rst2pdf will) Tj T* 0 Tw (arbitrarily decide it should use 300DPI \(or whatever you choose with the --default-dpi option\).) Tj T* ET Q Q q 1 0 0 1 62.69291 263.8236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 14) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 97.15693 0 Td (Section 7 Images) Tj T* -97.15693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R323': class PDFStream 323 0 obj % page stream << /Length 5611 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (8 Styles) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can style paragraphs with a style using the class directive:) Tj T* ET Q Q q 1 0 0 1 62.69291 626.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 72 re B* Q q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F4 10 Tf 12 TL (.. class:: special) Tj T* T* (This paragraph is special.) Tj T* T* (This one is not.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 606.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Or inline styles using custom interpreted roles:) Tj T* ET Q Q q 1 0 0 1 62.69291 549.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (.. role:: redtext) Tj T* T* (I like color :redtext:`red`.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 529.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For more information about this, please check the ReST docs.) Tj T* ET Q Q q 1 0 0 1 62.69291 511.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The only special thing about using rst2pdf here is the syntax of the stylesheet.) Tj T* ET Q Q q 1 0 0 1 62.69291 493.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can make rst2pdf print the default stylesheet:) Tj T* ET Q Q q 1 0 0 1 62.69291 460.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (rst2pdf --print-stylesheet) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 428.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .157356 Tw (If you want to add styles, just create a stylesheet, \(or take the standard stylesheet and modify it\) and pass) Tj T* 0 Tw (it with the -s option:) Tj T* ET Q Q q 1 0 0 1 62.69291 395.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (rst2pdf mydoc.txt -s mystyles.txt) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 375.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Those styles will always be searched in these places, in order:) Tj T* ET Q Q q 1 0 0 1 62.69291 369.2236 cm Q q 1 0 0 1 62.69291 369.2236 cm Q q 1 0 0 1 62.69291 357.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (What you specify using --stylesheet_path) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 351.2236 cm Q q 1 0 0 1 62.69291 339.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The option stylesheet_path in the config file) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 333.2236 cm Q q 1 0 0 1 62.69291 321.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The current folder) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 315.2236 cm Q q 1 0 0 1 62.69291 303.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (~/.rst2pdf/styles) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 297.2236 cm Q q 1 0 0 1 62.69291 285.2236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The styles folder within rst2pdf's installation folder.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 285.2236 cm Q q 1 0 0 1 62.69291 255.2236 cm q BT 1 0 0 1 0 14 Tm 1.508735 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can use multiple -s options, or pass more than one stylesheet separated with commas. They are) Tj T* 0 Tw (processed in the order you give them so the ) Tj /F7 10 Tf (last ) Tj /F1 10 Tf (one has priority.) Tj T* ET Q Q q 1 0 0 1 62.69291 225.2236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.1 Included StyleSheets) Tj T* ET Q Q q 1 0 0 1 62.69291 195.2236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .757984 Tw (To make some of the more common adjustments easier, rst2pdf includes a collection of stylesheets you) Tj T* 0 Tw (can use:) Tj T* ET Q Q q 1 0 0 1 62.69291 179.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Font styles) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 99.93693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 8 Styles) Tj T* -99.93693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 15) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R324': class PDFStream 324 0 obj % page stream << /Length 10799 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 606.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 128 Tm T* ET q 1 0 0 1 20 126 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (These stylesheets modfy your font settings.) Tj T* ET Q Q q 1 0 0 1 20 120 cm Q q 1 0 0 1 20 120 cm Q q 1 0 0 1 20 108 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (serif ) Tj /F1 10 Tf (uses the PDF serif font \(Times\) instead of the default Sans Serif \(Arial\)) Tj T* ET Q Q q Q Q q 1 0 0 1 20 102 cm Q q 1 0 0 1 20 90 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (freetype-sans ) Tj /F1 10 Tf (uses your system's default TrueType Sans Serif font) Tj T* ET Q Q q Q Q q 1 0 0 1 20 84 cm Q q 1 0 0 1 20 72 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (freetype-serif ) Tj /F1 10 Tf (uses your system's default TrueType Serif font) Tj T* ET Q Q q Q Q q 1 0 0 1 20 66 cm Q q 1 0 0 1 20 54 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (twelvepoint ) Tj /F1 10 Tf (makes the base font 12pt \(default is 10pt\)) Tj T* ET Q Q q Q Q q 1 0 0 1 20 48 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (tenpoint ) Tj /F1 10 Tf (makes the base font 10pt) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (eightpoint ) Tj /F1 10 Tf (makes the base font 8pt) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (kerning ) Tj /F1 10 Tf (switches to document to DejaVu Sans font and enables kerning.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 590.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Page layout styles) Tj T* ET Q Q q 1 0 0 1 62.69291 539.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 38 Tm T* ET q 1 0 0 1 20 36 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (These stylesheets modify your page layout.) Tj T* ET Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (twocolumn ) Tj /F1 10 Tf (uses the twoColumn layout as the initial page layout.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (double-sided ) Tj /F1 10 Tf (adds a gutter margin \(margin at the "in side" of the pages\)) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 523.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Page size styles) Tj T* ET Q Q q 1 0 0 1 62.69291 166.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 344 Tm T* ET q 1 0 0 1 20 342 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Stylesheets that change the paper size.) Tj T* ET Q Q q 1 0 0 1 20 324 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The usual standard paper sizes are supported:) Tj T* ET Q Q q 1 0 0 1 20 318 cm Q q 1 0 0 1 20 318 cm Q q 1 0 0 1 20 306 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A0) Tj T* ET Q Q q Q Q q 1 0 0 1 20 300 cm Q q 1 0 0 1 20 288 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A1) Tj T* ET Q Q q Q Q q 1 0 0 1 20 282 cm Q q 1 0 0 1 20 270 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A2) Tj T* ET Q Q q Q Q q 1 0 0 1 20 264 cm Q q 1 0 0 1 20 252 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A3) Tj T* ET Q Q q Q Q q 1 0 0 1 20 246 cm Q q 1 0 0 1 20 234 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A4 \(default\)) Tj T* ET Q Q q Q Q q 1 0 0 1 20 228 cm Q q 1 0 0 1 20 216 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A5) Tj T* ET Q Q q Q Q q 1 0 0 1 20 210 cm Q q 1 0 0 1 20 198 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A6) Tj T* ET Q Q q Q Q q 1 0 0 1 20 192 cm Q q 1 0 0 1 20 180 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (B0) Tj T* ET Q Q q Q Q q 1 0 0 1 20 174 cm Q q 1 0 0 1 20 162 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (B1) Tj T* ET Q Q q Q Q q 1 0 0 1 20 156 cm Q q 1 0 0 1 20 144 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (B2) Tj T* ET Q Q q Q Q q 1 0 0 1 20 138 cm Q q 1 0 0 1 20 126 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (B3) Tj T* ET Q Q q Q Q q 1 0 0 1 20 120 cm Q q 1 0 0 1 20 108 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (B4) Tj T* ET Q Q q Q Q q 1 0 0 1 20 102 cm Q q 1 0 0 1 20 90 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (B5) Tj T* ET Q Q q Q Q q 1 0 0 1 20 84 cm Q q 1 0 0 1 20 72 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (B6) Tj T* ET Q Q q Q Q q 1 0 0 1 20 66 cm Q q 1 0 0 1 20 54 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Letter) Tj T* ET Q Q q Q Q q 1 0 0 1 20 48 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Legal) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (11x17) Tj T* ET Q Q q Q Q q 1 0 0 1 20 18 cm Q q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The name of the stylesheet is lowercase.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 150.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Code block styles) Tj T* ET Q Q q 1 0 0 1 62.69291 135.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (See ) Tj 0 0 .501961 rg (Syntax Highlighting) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 117.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (So, if you want to have a two-column, legal size, serif document with code in murphy style:) Tj T* ET Q Q q 1 0 0 1 62.69291 83.82362 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (rst2pdf mydoc.txt -s twocolumn,serif,murphy,legal) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 16) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 99.93693 0 Td (Section 8 Styles) Tj T* -99.93693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R325': class PDFStream 325 0 obj % page stream << /Length 4923 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.2 StyleSheet Syntax) Tj T* ET Q Q q 1 0 0 1 62.69291 711.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (It\264s a JSON file with several elements in it.) Tj T* ET Q Q q 1 0 0 1 62.69291 681.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.3 Font Alias) Tj T* ET Q Q q 1 0 0 1 62.69291 663.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This is the fontsAlias element. By default, it uses some of the standard PDF fonts:) Tj T* ET Q Q q 1 0 0 1 62.69291 557.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 96 re B* Q q 0 0 0 rg BT 1 0 0 1 0 74 Tm /F4 10 Tf 12 TL ("fontsAlias" : {) Tj T* ( "stdFont": "Helvetica",) Tj T* ( "stdBold": "Helvetica-Bold",) Tj T* ( "stdItalic": "Helvetica-Oblique",) Tj T* ( "stdBoldItalic": "Helvetica-BoldOblique",) Tj T* ( "stdMono": "Courier") Tj T* (},) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 513.8236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .150488 Tw (This defines the fonts used in the styles. You can use, for example, Helvetica directly in a style, but if later) Tj T* 0 Tw 1.385251 Tw (you want to use another font all through your document, you will haveto change it in each style. So, I) Tj T* 0 Tw (suggest you use aliases.) Tj T* ET Q Q q 1 0 0 1 62.69291 495.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The standard PDF fonts are these:) Tj T* ET Q Q q 1 0 0 1 62.69291 489.8236 cm Q q 1 0 0 1 62.69291 453.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .893294 Tw (Times_Roman Times-Bold Times-Italic Times-Bold-Italic Helvetica Helvetica_Bold Helvetica-Oblique) Tj T* 0 Tw 9.403953 Tw (Helvetica-Bold-Oblique Courier Courier-Bold Courier-Oblique Courier-Bold-Oblique Symbol) Tj T* 0 Tw (Zapf-Dingbats) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 453.8236 cm Q q 1 0 0 1 62.69291 423.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.4 Style Definition) Tj T* ET Q Q q 1 0 0 1 62.69291 405.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Then you have a 'styles' which is a list of [ stylename, styleproperties ]. For example:) Tj T* ET Q Q q 1 0 0 1 62.69291 348.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (["normal" , {) Tj T* ( "parent": "base") Tj T* (}],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 316.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .126457 Tw (This means that the style called "normal" inherits style "base". So, each property not defined in the normal) Tj T* 0 Tw (style will be taken from the base style.) Tj T* ET Q Q q 1 0 0 1 62.69291 298.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (I suggest you do not remove any style from the default stylesheet. Add or modify at will, though.) Tj T* ET Q Q q 1 0 0 1 62.69291 268.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.504198 Tw (If your document requires a style that is not defined in your stylesheet, it will print a warning and use) Tj T* 0 Tw (bodytext instead.) Tj T* ET Q Q q 1 0 0 1 62.69291 238.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .900988 Tw (Also, the order of the styles is important: if styleA is the parent of styleB, styleA should be earlier in the) Tj T* 0 Tw (stylesheet.) Tj T* ET Q Q q 1 0 0 1 62.69291 208.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.321163 Tw (These are all the possible attributes for a style and their default values. Some of them, like alignment,) Tj T* 0 Tw (apply only when used to paragraphs, and not on inline styles:) Tj T* ET Q Q q 1 0 0 1 62.69291 79.42362 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 120 re B* Q q 0 0 0 rg BT 1 0 0 1 0 98 Tm /F4 10 Tf 12 TL ("fontName":"Helvetica",) Tj T* ("fontSize":10,) Tj T* ("leading":12,) Tj T* ("leftIndent":0,) Tj T* ("rightIndent":0,) Tj T* ("firstLineIndent":0,) Tj T* ("alignment":"left",) Tj T* ("spaceBefore":0,) Tj T* ("spaceAfter":0,) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 68.52693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 8.2 StyleSheet Syntax) Tj T* -68.52693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 17) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R326': class PDFStream 326 0 obj % page stream << /Length 5744 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 577.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 168 re B* Q q 0 0 0 rg BT 1 0 0 1 0 146 Tm /F4 10 Tf 12 TL ("bulletFontName":"Helvetica",) Tj T* ("bulletFontSize":10,) Tj T* ("bulletText": "\\u2022",) Tj T* ("bulletIndent":0,) Tj T* ("textColor": black,) Tj T* ("backColor":None,) Tj T* ("wordWrap":None,) Tj T* ("borderWidth": 0,) Tj T* ("borderPadding": 0,) Tj T* ("borderColor": None,) Tj T* ("borderRadius": None,) Tj T* ("allowWidows": 5,) Tj T* ("allowOrphans": 4) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 557.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The following are the only attributes that work on styles when used for interpreted roles \(inline styles\):) Tj T* ET Q Q q 1 0 0 1 62.69291 551.8236 cm Q q 1 0 0 1 62.69291 551.8236 cm Q q 1 0 0 1 62.69291 539.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (fontName) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 533.8236 cm Q q 1 0 0 1 62.69291 521.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (fontSize) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 515.8236 cm Q q 1 0 0 1 62.69291 503.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (textColor) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 497.8236 cm Q q 1 0 0 1 62.69291 485.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (backColor \(if your reportlab is version 2.3 or newer\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 485.8236 cm Q q 1 0 0 1 62.69291 455.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.5 Widows and Orphans) Tj T* ET Q Q q 1 0 0 1 62.69291 437.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Widow) Tj T* ET Q Q q 1 0 0 1 62.69291 410.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .372126 Tw (A paragraph-ending line that falls at the beginning of the following page/column, thus separated from) Tj T* 0 Tw (the remainder of the text.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 394.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Orphan) Tj T* ET Q Q q 1 0 0 1 62.69291 379.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A paragraph-opening line that appears by itself at the bottom of a page/column.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 361.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Rst2pdf has ) Tj /F7 10 Tf (some ) Tj /F1 10 Tf (widow/orphan control. Specifically, here's what's currently implemented:) Tj T* ET Q Q q 1 0 0 1 62.69291 331.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .534269 Tw (On ordinary paragraphs, allowWidows ans allowOrphans is passed to reportlab, which is supposed to do) Tj T* 0 Tw (something about it if they are non-zero. In practice, it doesn't seem to have much effect.) Tj T* ET Q Q q 1 0 0 1 62.69291 301.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.000542 Tw (The plan is to change the semantics of those settings, so that they mean the minimum number of lines) Tj T* 0 Tw (that can be left alone at the beginning of a page \(widows\) or at the end \(orphans\).) Tj T* ET Q Q q 1 0 0 1 62.69291 283.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Currently, these semantics only work for literal blocks and code blocks.) Tj T* ET Q Q q 1 0 0 1 62.69291 142.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 132 re B* Q q .960784 .960784 .862745 rg n 90 108.75 12 12 re f* .960784 .960784 .862745 rg n 0 84.75 168 12 re f* .960784 .960784 .862745 rg n 0 72.75 0 12 re f* .960784 .960784 .862745 rg n 0 36.75 12 12 re f* .960784 .960784 .862745 rg n 18 36.75 60 12 re f* .960784 .960784 .862745 rg n 78 36.75 12 12 re f* BT 1 0 0 1 0 110 Tm 12 TL /F4 10 Tf 0 0 0 rg (A literal block) Tj /F6 10 Tf .733333 .4 .133333 rg (::) Tj /F4 10 Tf 0 0 0 rg T* T* .729412 .129412 .129412 rg ( This is a literal block.) Tj 0 0 0 rg T* .729412 .129412 .129412 rg T* 0 0 0 rg (A code block:) Tj T* T* (..) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (code-block) Tj /F4 10 Tf 0 0 0 rg (::) Tj ( python) Tj T* T* ( def x\(y\):) Tj T* ( print y**2) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 122.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In future versions this may extend to ordinary paragraphs.) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 18) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 61.58693 0 Td (Section 8.5 Widows and Orphans) Tj T* -61.58693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R327': class PDFStream 327 0 obj % page stream << /Length 6040 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.6 Font Embedding) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .419461 Tw (There are thousands of excelent free True Type and Type 1 fonts available on the web, and you can use) Tj T* 0 Tw (many of them in your documents by declaring them in your stylesheet.) Tj T* ET Q Q q 1 0 0 1 62.69291 672.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (8.6.1 The Easy Way) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Just use the font name in your style. For example, you can define this:) Tj T* ET Q Q q 1 0 0 1 62.69291 596.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (["normal" , {) Tj T* ( "fontName" : "fonty") Tj T* (}]) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 576.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (And then it ) Tj /F7 10 Tf (may ) Tj /F1 10 Tf (work.) Tj T* ET Q Q q 1 0 0 1 62.69291 558.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (What would need to happen for this to work?) Tj T* ET Q Q q 1 0 0 1 62.69291 534.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F8 10 Tf 0 0 0 rg (8.6.1.1 Fonty is a True Type font:) Tj T* ET Q Q q 1 0 0 1 62.69291 522.8236 cm Q q 1 0 0 1 62.69291 522.8236 cm Q q 1 0 0 1 62.69291 424.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 83.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 83.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (You need to have it installed in your system, and have the fc-match) Tj T* ET Q Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 73.2 Tm T* ET q 1 0 0 1 20 71.2 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (utility available \(it's part of ) Tj 0 0 .501961 rg (fontconfig) Tj 0 0 0 rg (\). You can test if it is so by running this command:) Tj T* ET Q Q q 1 0 0 1 20 26 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 425.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL ($ fc-match fonty) Tj T* (fonty.ttf: "Fonty" "Normal") Tj T* ET Q Q Q Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If you are in Windows, I need your help ;-\) or you can use ) Tj 0 0 .501961 rg (The Harder Way \(True Type\)) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 418.6236 cm Q q 1 0 0 1 62.69291 320.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 83.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 83.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (The folder where fonty.ttf is located needs to be in your font path. You can set it) Tj T* ET Q Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 73.2 Tm T* ET q 1 0 0 1 20 71.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (using the --font-path option. For example:) Tj T* ET Q Q q 1 0 0 1 20 38 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 425.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (rst2pdf mydoc.txt -s mystyle.style --font-path /usr/share/fonts) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .042988 Tw 12 TL /F1 10 Tf 0 0 0 rg (You don't need to put the ) Tj /F7 10 Tf (exact ) Tj /F1 10 Tf (folder, just something that is above it. In my own case, fonty is in) Tj T* 0 Tw (/usr/share/fonts/TTF) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 320.4236 cm Q q 1 0 0 1 62.69291 290.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .439535 Tw (Whenever a font is embedded, you can refer to it in a style by its name, and to its variants by the aliases) Tj T* 0 Tw (Name-Oblique, Name-Bold, Name-BoldOblique.) Tj T* ET Q Q q 1 0 0 1 62.69291 266.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F8 10 Tf 0 0 0 rg (8.6.1.2 Fonty is a Type 1 font:) Tj T* ET Q Q q 1 0 0 1 62.69291 236.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .128935 Tw (You need it installed, and the folders where its font metric \(.afm\) and binary \(.pfb\) files are located need to) Tj T* 0 Tw (be in your font fath.) Tj T* ET Q Q q 1 0 0 1 62.69291 206.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.232339 Tw (For example, the "URW Palladio L" font that came with my installation of TeX consists of the following) Tj T* 0 Tw (files:) Tj T* ET Q Q q 1 0 0 1 62.69291 89.22362 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 108 re B* Q q 0 0 0 rg BT 1 0 0 1 0 86 Tm /F4 10 Tf 12 TL (/usr/share/texmf-dist/fonts/type1/urw/palatino/uplb8a.pfb) Tj T* (/usr/share/texmf-dist/fonts/type1/urw/palatino/uplbi8a.pfb) Tj T* (/usr/share/texmf-dist/fonts/type1/urw/palatino/uplr8a.pfb) Tj T* (/usr/share/texmf-dist/fonts/type1/urw/palatino/uplri8a.pfb) Tj T* (/usr/share/texmf-dist/fonts/afm/urw/palatino/uplb8a.afm) Tj T* (/usr/share/texmf-dist/fonts/afm/urw/palatino/uplbi8a.afm) Tj T* (/usr/share/texmf-dist/fonts/afm/urw/palatino/uplr8a.afm) Tj T* (/usr/share/texmf-dist/fonts/afm/urw/palatino/uplri8a.afm) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 72.69693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 8.6 Font Embedding) Tj T* -72.69693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 19) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R328': class PDFStream 328 0 obj % page stream << /Length 6296 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (So, I can use it if I put ) Tj /F4 10 Tf (/usr/share/texmf-dist/fonts ) Tj /F1 10 Tf (in my font path:) Tj T* ET Q Q q 1 0 0 1 62.69291 701.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (rst2pdf mydoc.txt -s mystyle.style --font-path /usr/share/texmf-dist/fonts) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 681.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (And putting this in my stylesheet, for example:) Tj T* ET Q Q q 1 0 0 1 62.69291 648.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ([ "title", { "fontName" : "URWPalladioL-Bold" } ]) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 628.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (There are some standard aliases defined so you can use other names:) Tj T* ET Q Q q 1 0 0 1 62.69291 547.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 72 re B* Q q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F4 10 Tf 12 TL ('ITC Bookman' : 'URW Bookman L',) Tj T* ('ITC Avant Garde Gothic' : 'URW Gothic L',) Tj T* ('Palatino' : 'URW Palladio L',) Tj T* ('New Century Schoolbook' : 'Century Schoolbook L',) Tj T* ('ITC Zapf Chancery' : 'URW Chancery L') Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 515.4236 cm q BT 1 0 0 1 0 14 Tm 1.136412 Tw 12 TL /F1 10 Tf 0 0 0 rg (So, for example, you can use ) Tj /F4 10 Tf (Palatino ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (New) Tj ( ) Tj (Century) Tj ( ) Tj (SchoolBook-Oblique ) Tj /F1 10 Tf (And it will mean) Tj T* 0 Tw /F4 10 Tf (URWPalladioL ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (CenturySchL-Ital) Tj /F1 10 Tf (, respectively.) Tj T* ET Q Q q 1 0 0 1 62.69291 485.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .439535 Tw (Whenever a font is embedded, you can refer to it in a style by its name, and to its variants by the aliases) Tj T* 0 Tw (Name-Oblique, Name-Bold, Name-BoldOblique.) Tj T* ET Q Q q 1 0 0 1 62.69291 458.4236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (8.6.2 The Harder Way \(True Type\)) Tj T* ET Q Q q 1 0 0 1 62.69291 440.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The stylesheet has an element is "embeddedFonts" that handles embedding True Type fonts in your PDF.) Tj T* ET Q Q q 1 0 0 1 62.69291 410.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .782927 Tw (Usually, it's empty, because with the default styles you are not using any font beyond the standard PDF) Tj T* 0 Tw (fonts:) Tj T* ET Q Q q 1 0 0 1 62.69291 377.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ("embeddedFonts" : [ ],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 357.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can put there the name of the font, and rst2pdf will try to embed it as described above. Example:) Tj T* ET Q Q q 1 0 0 1 62.69291 324.0236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ("embeddedFonts" : [ "Tuffy" ],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 304.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Or you can be explicit and tell rst2pdf the files that contain each variant of the font.) Tj T* ET Q Q q 1 0 0 1 62.69291 274.0236 cm q BT 1 0 0 1 0 14 Tm 1.238409 Tw 12 TL /F1 10 Tf 0 0 0 rg (Suppose you want to use the nice public domain ) Tj 0 0 .501961 rg (Tuffy font) Tj 0 0 0 rg (, then you need to give the filenames of all) Tj T* 0 Tw (variants:) Tj T* ET Q Q q 1 0 0 1 62.69291 245.9265 cm q q .797505 0 0 .797505 0 0 cm q 1 0 0 1 6.6 8.275813 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 588 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ("embeddedFonts" : [ ["Tuffy.ttf","Tuffy_Bold.ttf","Tuffy_Italic.ttf","Tuffy_Bold_Italic.ttf"] ],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 201.9265 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .97881 Tw (This will provide your styles with fonts called "Tuffy" "Tuffy_Bold" and so on. They will be available with) Tj T* 0 Tw 2.028735 Tw (the names based on the filenames \(Tuffy_Bold\) and also by standard aliases similar to those of the) Tj T* 0 Tw (standard PDF fonts \(Tuffy-Bold/Tuffy-Oblique/Tuffy-BoldOblique\).) Tj T* ET Q Q q 1 0 0 1 62.69291 159.9265 cm q BT 1 0 0 1 0 26 Tm .071988 Tw 12 TL /F1 10 Tf 0 0 0 rg (Now, if you use ) Tj /F7 10 Tf (italics ) Tj /F1 10 Tf (in a paragraph whose style uses the Tuffy font, it will use Tuffy_Italic. That's why it's) Tj T* 0 Tw .954988 Tw (better if you use fonts that provide the four variants, and you should put them in ) Tj /F3 10 Tf (that ) Tj /F1 10 Tf (order. If your font) Tj T* 0 Tw (lacks a variant, use the "normal" variant instead.) Tj T* ET Q Q q 1 0 0 1 62.69291 141.9265 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, if you only had Tuffy.ttf:) Tj T* ET Q Q q 1 0 0 1 62.69291 108.7265 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ("embeddedFonts" : [ ["Tuffy.ttf","Tuffy.ttf","Tuffy.ttf","Tuffy.ttf"] ],) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 20) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 72.69693 0 Td (Section 8.6 Font Embedding) Tj T* -72.69693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R329': class PDFStream 329 0 obj % page stream << /Length 4209 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 723.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .541098 Tw (However, that means that italics and bold in styles using Tuffy will not work correctly \(they will display as) Tj T* 0 Tw (regular text\).) Tj T* ET Q Q q 1 0 0 1 62.69291 693.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.616098 Tw (If you want to use this as the base font for your document, you should change the fontsAlias section) Tj T* 0 Tw (accordingly. For example:) Tj T* ET Q Q q 1 0 0 1 62.69291 587.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 96 re B* Q q 0 0 0 rg BT 1 0 0 1 0 74 Tm /F4 10 Tf 12 TL ("fontsAlias" : {) Tj T* ( "stdFont": "Tuffy",) Tj T* ( "stdBold": "Tuffy_Bold",) Tj T* ( "stdItalic": "Tuffy_Italic",) Tj T* ( "stdBoldItalic": "Tuffy_Bold_Italic",) Tj T* ( "stdMono": "Courier") Tj T* (},) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 555.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .607488 Tw (If, on the other hand, you only want a specific style to use the Tuffy font, don't change the fontAlias, and) Tj T* 0 Tw (set the fontName properties for that style. For example:) Tj T* ET Q Q q 1 0 0 1 62.69291 450.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 96 re B* Q q 0 0 0 rg BT 1 0 0 1 0 74 Tm /F4 10 Tf 12 TL (["heading1" , {) Tj T* ( "parent": "normal",) Tj T* ( "fontName": "Tuffy_Bold",) Tj T* ( "fontSize": 18,) Tj T* ( "keepWithNext": true,) Tj T* ( "spaceAfter": 6) Tj T* (}],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 418.6236 cm q BT 1 0 0 1 0 14 Tm 1.150488 Tw 12 TL /F1 10 Tf 0 0 0 rg (By default, rst2pdf will search for the fonts in its fonts folder and in the current folder. You can make it) Tj T* 0 Tw (search another folder by passing the --font-folder option, or you can use absolute paths in your stylesheet.) Tj T* ET Q Q q 1 0 0 1 62.69291 391.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (8.6.3 The Harder Way \(Type1\)) Tj T* ET Q Q q 1 0 0 1 62.69291 373.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To be written \(and implemented and tested\)) Tj T* ET Q Q q 1 0 0 1 62.69291 343.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.7 Page Size and Margins) Tj T* ET Q Q q 1 0 0 1 62.69291 325.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In your stylesheet, the pageSetup element controls your page layout.) Tj T* ET Q Q q 1 0 0 1 62.69291 307.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Here's the default stylesheet's:) Tj T* ET Q Q q 1 0 0 1 62.69291 142.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 156 re B* Q q 0 0 0 rg BT 1 0 0 1 0 134 Tm /F4 10 Tf 12 TL ("pageSetup" : {) Tj T* ( "size": "A4",) Tj T* ( "width": null,) Tj T* ( "height": null,) Tj T* ( "margin-top": "2cm",) Tj T* ( "margin-bottom": "2cm",) Tj T* ( "margin-left": "2cm",) Tj T* ( "margin-right": "2cm",) Tj T* ( "spacing-header": "5mm",) Tj T* ( "spacing-footer": "5mm",) Tj T* ( "margin-gutter": "0cm") Tj T* (},) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 122.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Size is one of the standard paper sizes, like A4 or LETTER.) Tj T* ET Q Q q 1 0 0 1 62.69291 92.42362 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 4.690542 Tw (Here's a list: A0, A1, A2, A3, A4, A5, A6, B0, B1, B2, B3, B4, B5, B6, LETTER, LEGAL,) Tj T* 0 Tw (ELEVENSEVENTEEN.) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 57.69193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 8.7 Page Size and Margins) Tj T* -57.69193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 21) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R330': class PDFStream 330 0 obj % page stream << /Length 6079 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you want a non-standard size, set size to null and use width and height.) Tj T* ET Q Q q 1 0 0 1 62.69291 717.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When specifying width, height or margins, you need to use units, like inch \(inches\) or cm \(centimeters\).) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When both width/height and size are specified, size will be used, and width/height ignored.) Tj T* ET Q Q q 1 0 0 1 62.69291 669.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.963984 Tw (All margins should be self-explanatory, except for margin-gutter. That's the margin in the center of a) Tj T* 0 Tw (two-page spread.) Tj T* ET Q Q q 1 0 0 1 62.69291 639.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.999461 Tw (This value is added to the left margin of odd pages and the right margin of even pages, adding \(or) Tj T* 0 Tw (removing, if it's negative\) space "in the middle" of opposingpages.) Tj T* ET Q Q q 1 0 0 1 62.69291 597.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.971567 Tw (If you intend to bound a printed copy, you may need extra space there. OTOH, if you will display it) Tj T* 0 Tw .60686 Tw (on-screen on a two-page format \(common in many PDF readers, nice for ebooks\), a negative value may) Tj T* 0 Tw (be pleasant.) Tj T* ET Q Q q 1 0 0 1 62.69291 567.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.8 Advanced: table styles) Tj T* ET Q Q q 1 0 0 1 62.69291 549.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This is new in 0.12.) Tj T* ET Q Q q 1 0 0 1 62.69291 519.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.844988 Tw (These are a few extra options in styles that are only used when the style is applied to a table. This) Tj T* 0 Tw (happens in two cases:) Tj T* ET Q Q q 1 0 0 1 62.69291 513.0236 cm Q q 1 0 0 1 62.69291 513.0236 cm Q q 1 0 0 1 62.69291 501.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You are using the class directive on a table:) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 501.0236 cm Q q 1 0 0 1 62.69291 419.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 72 re B* Q q .960784 .960784 .862745 rg n 0 48.75 12 12 re f* .960784 .960784 .862745 rg n 18 48.75 30 12 re f* .960784 .960784 .862745 rg n 48 48.75 12 12 re f* .960784 .960784 .862745 rg n 0 12.75 6 12 re f* BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (class) Tj /F4 10 Tf 0 0 0 rg (::) Tj ( thick) Tj T* T* (+-------+---------+) Tj T* .4 .4 .4 rg (|) Tj 0 0 0 rg ( A | B |) Tj T* (+-----------------+) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 405.8236 cm Q q 1 0 0 1 62.69291 405.8236 cm Q q 1 0 0 1 62.69291 345.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 45 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 33 cm q BT 1 0 0 1 0 14 Tm 2.356651 Tw 12 TL /F1 10 Tf 0 0 0 rg (It's a style that automatically applies to something that is ) Tj /F7 10 Tf (drawn ) Tj /F1 10 Tf (using a table. Currently these) Tj T* 0 Tw (include:) Tj T* ET Q Q q 1 0 0 1 23 27 cm Q q 1 0 0 1 23 27 cm Q q 1 0 0 1 23 15 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Footnotes / endnotes \(endnote style\)) Tj T* ET Q Q q Q Q q 1 0 0 1 23 9 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Lists \(item_list, bullet_list option_list and field_list styles\)) Tj T* ET Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 345.8236 cm Q q 1 0 0 1 62.69291 327.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The options are as follows:) Tj T* ET Q Q q 1 0 0 1 62.69291 311.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Commands) Tj T* ET Q Q q 1 0 0 1 62.69291 76.86614 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 221.9575 Tm T* ET q 1 0 0 1 20 207.9575 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.122126 Tw (For a full reference of these, please check the Reportlab User Guide specifically the TableStyle) Tj T* 0 Tw (Commands section \(section 7.4 in the manual for version 2.3\)) Tj T* ET Q Q q 1 0 0 1 20 189.9575 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Here, however, is a list of the possible commands:) Tj T* ET Q Q q 1 0 0 1 20 .75748 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 180 re B* Q q 0 0 0 rg BT 1 0 0 1 0 158 Tm /F4 10 Tf 12 TL (BOX \(or OUTLINE\)) Tj T* (FONT) Tj T* (FONTNAME \(or FACE\)) Tj T* (FONTSIZE \(or SIZE\)) Tj T* (GRID) Tj T* (INNERGRID) Tj T* (LEADING) Tj T* (LINEBELOW) Tj T* (LINEABOVE) Tj T* (LINEBEFORE) Tj T* (LINEAFTER) Tj T* (TEXTCOLOR) Tj T* (ALIGNMENT \(or ALIGN\)) Tj T* (LEFTPADDING) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 22) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 59.35693 0 Td (Section 8.8 Advanced: table styles) Tj T* -59.35693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R331': class PDFStream 331 0 obj % page stream << /Length 6386 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 531.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 202.4 Tm T* ET q 1 0 0 1 20 115.2 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 96 re B* Q q 0 0 0 rg BT 1 0 0 1 0 74 Tm /F4 10 Tf 12 TL (RIGHTPADDING) Tj T* (BOTTOMPADDING) Tj T* (TOPPADDING) Tj T* (BACKGROUND) Tj T* (ROWBACKGROUNDS) Tj T* (COLBACKGROUNDS) Tj T* (VALIGN) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 77.2 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.017318 Tw (Each takes as argument a couple of coordinates, where \(0,0\) is top-left, and \(-1,-1\) is bottom-right,) Tj T* 0 Tw (and 0 or more extra arguments.) Tj T* ET Q Q q 1 0 0 1 20 59.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, INNERGRID takes a linewidth and a color:) Tj T* ET Q Q q 1 0 0 1 20 26 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 448.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ([ "INNERGRID", [ 0, 0 ], [ -1, -1 ], 0.25, "black" ],) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (That would mean "draw all lines inside the table with .25pt black") Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 515.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (colWidths) Tj T* ET Q Q q 1 0 0 1 62.69291 393.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 109.2 Tm T* ET q 1 0 0 1 20 107.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A list of the column widths you want, in the unit you prefer \(default unit is pt\).) Tj T* ET Q Q q 1 0 0 1 20 89.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Example:) Tj T* ET Q Q q 1 0 0 1 20 56 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 448.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ("colWidths": ["3cm",null]) Tj T* ET Q Q Q Q Q q 1 0 0 1 20 18 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .50186 Tw (If your colWidths has fewer values than columns in your table, the rest are autocalculated. A column) Tj T* 0 Tw (width of null means "guess".) Tj T* ET Q Q q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you don't specify column widths, the table will try to look proportional to the restructured text source.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 363.4236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.9 Multiple Stylesheets) Tj T* ET Q Q q 1 0 0 1 62.69291 321.4236 cm q BT 1 0 0 1 0 26 Tm .832927 Tw 12 TL /F1 10 Tf 0 0 0 rg (When you use a custom stylesheet, you don't need to define ) Tj /F7 10 Tf (everything ) Tj /F1 10 Tf (in it. Whatever you don't define) Tj T* 0 Tw .659987 Tw (will be taken from the default stylesheet. For example, if you only want to change page size, default font) Tj T* 0 Tw (and font size, this would be enough:) Tj T* ET Q Q q 1 0 0 1 62.69291 144.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 168 re B* Q q .960784 .960784 .862745 rg n 0 144.75 6 12 re f* .960784 .960784 .862745 rg n 24 132.75 66 12 re f* .960784 .960784 .862745 rg n 96 132.75 6 12 re f* .960784 .960784 .862745 rg n 108 132.75 6 12 re f* .960784 .960784 .862745 rg n 48 120.75 36 12 re f* .960784 .960784 .862745 rg n 84 120.75 6 12 re f* .960784 .960784 .862745 rg n 96 120.75 24 12 re f* .960784 .960784 .862745 rg n 120 120.75 6 12 re f* .960784 .960784 .862745 rg n 24 108.75 12 12 re f* .960784 .960784 .862745 rg n 24 96.75 72 12 re f* .960784 .960784 .862745 rg n 102 96.75 6 12 re f* .960784 .960784 .862745 rg n 114 96.75 6 12 re f* .960784 .960784 .862745 rg n 48 84.75 54 12 re f* .960784 .960784 .862745 rg n 102 84.75 6 12 re f* .960784 .960784 .862745 rg n 114 84.75 78 12 re f* .960784 .960784 .862745 rg n 192 84.75 6 12 re f* .960784 .960784 .862745 rg n 24 72.75 12 12 re f* .960784 .960784 .862745 rg n 24 60.75 48 12 re f* .960784 .960784 .862745 rg n 78 60.75 6 12 re f* .960784 .960784 .862745 rg n 90 60.75 6 12 re f* .960784 .960784 .862745 rg n 48 48.75 6 12 re f* .960784 .960784 .862745 rg n 54 48.75 48 12 re f* .960784 .960784 .862745 rg n 108 48.75 6 12 re f* .960784 .960784 .862745 rg n 120 48.75 6 12 re f* .960784 .960784 .862745 rg n 48 36.75 60 12 re f* .960784 .960784 .862745 rg n 108 36.75 6 12 re f* .960784 .960784 .862745 rg n 120 36.75 12 12 re f* .960784 .960784 .862745 rg n 48 24.75 12 12 re f* .960784 .960784 .862745 rg n 24 12.75 6 12 re f* .960784 .960784 .862745 rg n 0 .75 6 12 re f* BT 1 0 0 1 0 146 Tm 12 TL /F4 10 Tf 0 0 0 rg ({) Tj T* ( ) Tj .729412 .129412 .129412 rg ("pageSetup") Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (:) Tj 0 0 0 rg ( ) Tj ({) Tj T* ( ) Tj .729412 .129412 .129412 rg ("size") Tj .4 .4 .4 rg (:) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ("A5") Tj 0 0 0 rg (,) Tj T* ( ) Tj (},) Tj T* ( ) Tj .729412 .129412 .129412 rg ("fontsAlias") Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (:) Tj 0 0 0 rg ( ) Tj ({) Tj T* ( ) Tj .729412 .129412 .129412 rg ("stdFont") Tj .4 .4 .4 rg (:) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ("Times-Roman") Tj 0 0 0 rg (,) Tj T* ( ) Tj (},) Tj T* ( ) Tj .729412 .129412 .129412 rg ("styles") Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (:) Tj 0 0 0 rg ( ) Tj ([) Tj T* ( ) Tj ([) Tj .729412 .129412 .129412 rg ("normal") Tj 0 0 0 rg ( ) Tj (,) Tj ( ) Tj ({) Tj T* ( ) Tj .729412 .129412 .129412 rg ("fontSize") Tj .4 .4 .4 rg (:) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (14) Tj 0 0 0 rg T* ( ) Tj (}]) Tj T* ( ) Tj (]) Tj T* (}) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 124.2236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 64.92193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 8.9 Multiple Stylesheets) Tj T* -64.92193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 23) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R332': class PDFStream 332 0 obj % page stream << /Length 2825 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 53.29291 446.4236 cm .960784 .960784 .862745 rg n 0 300.6 488.6898 -300.6 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 274.6 Tm T* ET q 1 0 0 1 16 269.6 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F8 12.5 Tf 15 TL (Note) Tj T* ET Q Q q 1 0 0 1 16 233.6 cm q BT 1 0 0 1 0 14 Tm 1.529984 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (command ) Tj /F1 10 Tf (option used for table styles is not kept across stylesheets. For example, the default) Tj T* 0 Tw (stylesheet defines endnote with this command list:) Tj T* ET Q Q q 1 0 0 1 16 200.4 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 436.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ("commands": [ [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ] ]) Tj T* ET Q Q Q Q Q q 1 0 0 1 16 162.4 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.66061 Tw (If you redefine endnote in another stylesheet and use this to create a vertical line between the) Tj T* 0 Tw (endnote's columns:) Tj T* ET Q Q q 1 0 0 1 16 129.2 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 436.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ("commands": [ [ "LINEAFTER", [ 0, 0 ], [ 1, -1 ], .25, "black" ] ]) Tj T* ET Q Q Q Q Q q 1 0 0 1 16 103.2 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Then the footnotes will ) Tj /F3 10 Tf (not ) Tj /F1 10 Tf (have VALIGN TOP!) Tj T* ET Q Q q 1 0 0 1 16 85.2 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (To do that, you ) Tj /F3 10 Tf (MUST ) Tj /F1 10 Tf (use all commands in your stylesheet:) Tj T* ET Q Q q 1 0 0 1 16 16 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 436.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL ("commands": [) Tj T* ( [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],) Tj T* ( [ "LINEAFTER", [ 0, 0 ], [ 1, -1 ], .25, "black" ]) Tj T* (]) Tj T* ET Q Q Q Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 300.6 m 488.6898 300.6 l S n 0 0 m 488.6898 0 l S n 0 0 m 0 300.6 l S n 488.6898 0 m 488.6898 300.6 l S Q Q q 1 0 0 1 62.69291 440.4236 cm Q q 1 0 0 1 62.69291 440.4236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 24) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 64.92193 0 Td (Section 8.9 Multiple Stylesheets) Tj T* -64.92193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R333': class PDFStream 333 0 obj % page stream << /Length 5171 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (8.10 Styling Your Document) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .276303 Tw (Which styles you need to modify to achieve your desired result is not obvious. In this section, you will see) Tj T* 0 Tw (some hints and pointers to that effect.) Tj T* ET Q Q q 1 0 0 1 62.69291 672.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (8.10.1 The Base Styles) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (There are three styles which have great effect, they are ) Tj /F4 10 Tf (base) Tj /F1 10 Tf (, ) Tj /F4 10 Tf (normal ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (bodytext) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 636.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Here's an example, the twelvepoint stylesheet:) Tj T* ET Q Q q 1 0 0 1 62.69291 602.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ({"styles": [["base", {"fontSize": 12}]]}) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 570.8236 cm q BT 1 0 0 1 0 14 Tm 1.823318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since all other styles inherit ) Tj /F4 10 Tf (base) Tj /F1 10 Tf (, changing the fontSize changes the fontSize for everything in your) Tj T* 0 Tw (document.) Tj T* ET Q Q q 1 0 0 1 62.69291 552.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (normal ) Tj /F1 10 Tf (style is meant for most elements, so usually it's the same as changing ) Tj /F4 10 Tf (base) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 522.8236 cm q BT 1 0 0 1 0 14 Tm .66936 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (bodytext ) Tj /F1 10 Tf (style is for elements that form paragraphs. So, for example, you can set your document) Tj T* 0 Tw (to be left-aligned like this:) Tj T* ET Q Q q 1 0 0 1 62.69291 489.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ({"styles": [["bodytext", {"alignment": "left"}]]}) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 445.6236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .665318 Tw (There are elements, however, that don't inherit from bodytext, for example headings and the styles used) Tj T* 0 Tw .967765 Tw (in the table of contents. Those are elements that are not real paragraphs, so they should not follow the) Tj T* 0 Tw (indentation and spacing you use for your document's main content.) Tj T* ET Q Q q 1 0 0 1 62.69291 427.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (heading ) Tj /F1 10 Tf (style is inherited by all sorts of titles: section titles, topic titles, admonition titles, etc.) Tj T* ET Q Q q 1 0 0 1 62.69291 400.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (8.10.2 Lists) Tj T* ET Q Q q 1 0 0 1 62.69291 382.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Styling lists is mostly a matter of spacing and indentation.) Tj T* ET Q Q q 1 0 0 1 62.69291 364.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The space before and after a list is taken from the ) Tj /F4 10 Tf (item_list ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (bullet_list ) Tj /F1 10 Tf (styles:) Tj T* ET Q Q q 1 0 0 1 62.69291 115.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 240 re B* Q q 0 0 0 rg BT 1 0 0 1 0 218 Tm /F4 10 Tf 12 TL (["item_list", {) Tj T* ( "parent": "bodytext",) Tj T* ( "spaceBefore": 0,) Tj T* ( "commands": [) Tj T* ( [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],) Tj T* ( [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ]) Tj T* ( ],) Tj T* ( "colWidths": ["20pt",null]) Tj T* (}]) Tj T* T* (["bullet_list", {) Tj T* ( "parent": "bodytext",) Tj T* ( "spaceBefore": 0,) Tj T* ( "commands": [) Tj T* ( [ "VALIGN", [ 0, 0 ], [ -1, -1 ], "TOP" ],) Tj T* ( [ "RIGHTPADDING", [ 0, 0 ], [ 1, -1 ], 0 ]) Tj T* ( ],) Tj T* ( "colWidths": ["20",null]) Tj T* (}],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 83.42362 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.430751 Tw (Yes, these are table styles, because they are implemented as tables. The RIGHTPADDING command) Tj T* 0 Tw (and the colWidths option can be used to adjust the position of the bullet/item number.) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 55.47193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 8.10 Styling Your Document) Tj T* -55.47193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 25) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R334': class PDFStream 334 0 obj % page stream << /Length 1394 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 723.0236 cm q BT 1 0 0 1 0 14 Tm 1.596647 Tw 12 TL /F1 10 Tf 0 0 0 rg (To control the separation between items, you use the item_list_item and ) Tj /F4 10 Tf (bullet_list_item ) Tj /F1 10 Tf (styles') Tj T* 0 Tw (spaceBefore and spaceAfter options, for example:) Tj T* ET Q Q q 1 0 0 1 62.69291 653.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (["bullet_list_item" , {) Tj T* ( "parent": "bodytext",) Tj T* ( "spaceBefore": 20) Tj T* (}]) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 633.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Remember that this is only used ) Tj /F3 10 Tf (between items ) Tj /F1 10 Tf (and not before the first or after the last items.) Tj T* ET Q Q q 1 0 0 1 62.69291 633.8236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 26) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 55.47193 0 Td (Section 8.10 Styling Your Document) Tj T* -55.47193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R335': class PDFStream 335 0 obj % page stream << /Length 9757 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (9 Syntax Highlighting) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 14 Tm 1.548314 Tw 12 TL /F1 10 Tf 0 0 0 rg (Rst2pdf adds a non-standard directive, called code-block, which produces syntax highlighted for many) Tj T* 0 Tw (languages using ) Tj 0 0 .501961 rg (Pygments) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 678.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, if you want to include a python fragment:) Tj T* ET Q Q q 1 0 0 1 62.69291 608.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (.. code-block:: python) Tj T* T* ( def myFun\(x,y\):) Tj T* ( print x+y) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 563.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q .960784 .960784 .862745 rg n 0 12.75 18 12 re f* .960784 .960784 .862745 rg n 24 12.75 30 12 re f* .960784 .960784 .862745 rg n 54 12.75 6 12 re f* .960784 .960784 .862745 rg n 60 12.75 6 12 re f* .960784 .960784 .862745 rg n 66 12.75 6 12 re f* .960784 .960784 .862745 rg n 72 12.75 6 12 re f* .960784 .960784 .862745 rg n 78 12.75 12 12 re f* .960784 .960784 .862745 rg n 24 .75 30 12 re f* .960784 .960784 .862745 rg n 60 .75 6 12 re f* .960784 .960784 .862745 rg n 66 .75 6 12 re f* .960784 .960784 .862745 rg n 72 .75 6 12 re f* BT 1 0 0 1 0 14 Tm 12 TL /F6 10 Tf 0 .501961 0 rg (def) Tj /F4 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (myFun) Tj 0 0 0 rg (\() Tj (x) Tj (,) Tj (y) Tj (\):) Tj T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (print) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (x) Tj .4 .4 .4 rg (+) Tj 0 0 0 rg (y) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 543.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Notice that you need to declare the language of the fragment. Here's a list of the currently ) Tj 0 0 .501961 rg (supported) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 62.69291 525.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can use the ) Tj /F4 10 Tf (linenos ) Tj /F1 10 Tf (option to display line numbers:) Tj T* ET Q Q q 1 0 0 1 62.69291 480.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q .960784 .960784 .862745 rg n 0 12.75 12 12 re f* .960784 .960784 .862745 rg n 12 12.75 18 12 re f* .960784 .960784 .862745 rg n 36 12.75 30 12 re f* .960784 .960784 .862745 rg n 66 12.75 6 12 re f* .960784 .960784 .862745 rg n 72 12.75 6 12 re f* .960784 .960784 .862745 rg n 78 12.75 6 12 re f* .960784 .960784 .862745 rg n 84 12.75 6 12 re f* .960784 .960784 .862745 rg n 90 12.75 12 12 re f* .960784 .960784 .862745 rg n 102 12.75 0 12 re f* .960784 .960784 .862745 rg n 0 .75 12 12 re f* .960784 .960784 .862745 rg n 36 .75 30 12 re f* .960784 .960784 .862745 rg n 72 .75 6 12 re f* .960784 .960784 .862745 rg n 78 .75 6 12 re f* .960784 .960784 .862745 rg n 84 .75 6 12 re f* BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (1 ) Tj /F6 10 Tf 0 .501961 0 rg (def) Tj /F4 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (myFun) Tj 0 0 0 rg (\() Tj (x) Tj (,) Tj (y) Tj (\):) Tj T* (2 ) Tj ( ) Tj /F6 10 Tf 0 .501961 0 rg (print) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (x) Tj .4 .4 .4 rg (+) Tj 0 0 0 rg (y) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 460.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Rst2pdf includes several stylesheets for highlighting code:) Tj T* ET Q Q q 1 0 0 1 62.69291 454.4236 cm Q q 1 0 0 1 62.69291 454.4236 cm Q q 1 0 0 1 62.69291 442.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (autumn) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 436.4236 cm Q q 1 0 0 1 62.69291 424.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (borland) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 418.4236 cm Q q 1 0 0 1 62.69291 406.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (bw) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 400.4236 cm Q q 1 0 0 1 62.69291 388.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (colorful) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 382.4236 cm Q q 1 0 0 1 62.69291 370.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (emacs) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 364.4236 cm Q q 1 0 0 1 62.69291 352.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (friendly) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 346.4236 cm Q q 1 0 0 1 62.69291 334.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (fruity) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 328.4236 cm Q q 1 0 0 1 62.69291 316.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (manni) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 310.4236 cm Q q 1 0 0 1 62.69291 298.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (murphy) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 292.4236 cm Q q 1 0 0 1 62.69291 280.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (native) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 274.4236 cm Q q 1 0 0 1 62.69291 262.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (pastie) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 256.4236 cm Q q 1 0 0 1 62.69291 244.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (perldoc) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 238.4236 cm Q q 1 0 0 1 62.69291 226.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (trac) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 220.4236 cm Q q 1 0 0 1 62.69291 208.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (vs) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 208.4236 cm Q q 1 0 0 1 62.69291 178.4236 cm q BT 1 0 0 1 0 14 Tm .742619 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can use any of them instead of the default by adding, for example, a ) Tj /F4 10 Tf (-s) Tj ( ) Tj (murphy ) Tj /F1 10 Tf (to the command) Tj T* 0 Tw (line.) Tj T* ET Q Q q 1 0 0 1 62.69291 160.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you already are using a custom stylesheet, use both:) Tj T* ET Q Q q 1 0 0 1 62.69291 127.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (rst2pdf mydoc.rst -o mydoc.pdf -s mystyle.json,murphy) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 107.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The default is the same as "emacs".) Tj T* ET Q Q q 1 0 0 1 62.69291 89.22362 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (There is an online demo of pygments showing these styles:) Tj T* ET Q Q q 1 0 0 1 62.69291 83.22362 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 70.75693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 9 Syntax Highlighting) Tj T* -70.75693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 27) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R336': class PDFStream 336 0 obj % page stream << /Length 9315 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (http://pygments.org/demo/1817/) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 735.0236 cm Q q 1 0 0 1 62.69291 681.0236 cm q BT 1 0 0 1 0 38 Tm 1.404989 Tw 12 TL /F1 10 Tf 0 0 0 rg (The overal look of a code box is controlled by the "code" style or by a class you apply to it using the) Tj T* 0 Tw .01784 Tw /F4 10 Tf (..) Tj ( ) Tj (class:: ) Tj /F1 10 Tf (directive. Aditionally, if you want to change some properties when using different languages,) Tj T* 0 Tw .053145 Tw (you can define styles with the name of the language. For example, a ) Tj /F4 10 Tf (python ) Tj /F1 10 Tf (style will be applied to code) Tj T* 0 Tw (blocks created with ) Tj /F4 10 Tf (..) Tj ( ) Tj (code-block::) Tj ( ) Tj (python) Tj /F1 10 Tf (.) Tj T* ET Q Q q 1 0 0 1 62.69291 663.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The look of the line numbers is controlled by the "linenumbers" style.) Tj T* ET Q Q q 1 0 0 1 62.69291 645.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (As rst2pdf is written in python let's see some examples and variations around python.) Tj T* ET Q Q q 1 0 0 1 62.69291 627.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Python in console) Tj T* ET Q Q q 1 0 0 1 62.69291 545.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 72 re B* Q q .960784 .960784 .862745 rg n 0 48.75 6 12 re f* .960784 .960784 .862745 rg n 6 48.75 6 12 re f* .960784 .960784 .862745 rg n 12 48.75 6 12 re f* .960784 .960784 .862745 rg n 18 48.75 6 12 re f* .960784 .960784 .862745 rg n 24 48.75 54 12 re f* .960784 .960784 .862745 rg n 78 48.75 6 12 re f* .960784 .960784 .862745 rg n 84 48.75 102 12 re f* .960784 .960784 .862745 rg n 0 36.75 6 12 re f* .960784 .960784 .862745 rg n 6 36.75 6 12 re f* .960784 .960784 .862745 rg n 12 36.75 6 12 re f* .960784 .960784 .862745 rg n 18 36.75 6 12 re f* .960784 .960784 .862745 rg n 24 36.75 54 12 re f* .960784 .960784 .862745 rg n 78 36.75 6 12 re f* .960784 .960784 .862745 rg n 84 36.75 24 12 re f* .960784 .960784 .862745 rg n 108 36.75 6 12 re f* .960784 .960784 .862745 rg n 114 36.75 42 12 re f* .960784 .960784 .862745 rg n 156 36.75 6 12 re f* .960784 .960784 .862745 rg n 0 24.75 12 12 re f* .960784 .960784 .862745 rg n 0 12.75 6 12 re f* .960784 .960784 .862745 rg n 6 12.75 6 12 re f* .960784 .960784 .862745 rg n 12 12.75 6 12 re f* .960784 .960784 .862745 rg n 18 12.75 6 12 re f* .960784 .960784 .862745 rg n 24 12.75 54 12 re f* .960784 .960784 .862745 rg n 78 12.75 6 12 re f* .960784 .960784 .862745 rg n 84 12.75 60 12 re f* .960784 .960784 .862745 rg n 144 12.75 6 12 re f* .960784 .960784 .862745 rg n 150 12.75 24 12 re f* .960784 .960784 .862745 rg n 174 12.75 6 12 re f* .960784 .960784 .862745 rg n 0 .75 24 12 re f* BT 1 0 0 1 0 50 Tm 12 TL /F6 10 Tf 0 0 .501961 rg (>) Tj (>) Tj (>) Tj ( ) Tj /F4 10 Tf 0 0 0 rg (my_string) Tj .4 .4 .4 rg (=) Tj .729412 .129412 .129412 rg ("python is great") Tj 0 0 0 rg T* /F6 10 Tf 0 0 .501961 rg (>) Tj (>) Tj (>) Tj ( ) Tj /F4 10 Tf 0 0 0 rg (my_string) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (find) Tj (\() Tj .729412 .129412 .129412 rg ('great') Tj 0 0 0 rg (\)) Tj T* .501961 .501961 .501961 rg (10) Tj T* /F6 10 Tf 0 0 .501961 rg (>) Tj (>) Tj (>) Tj ( ) Tj /F4 10 Tf 0 0 0 rg (my_string) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (startswith) Tj (\() Tj .729412 .129412 .129412 rg ('py') Tj 0 0 0 rg (\)) Tj T* .501961 .501961 .501961 rg (True) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 525.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Python traceback) Tj T* ET Q Q q 1 0 0 1 62.69291 396.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 120 re B* Q q .960784 .960784 .862745 rg n 0 96.75 204 12 re f* .960784 .960784 .862745 rg n 24 84.75 24 12 re f* .960784 .960784 .862745 rg n 54 84.75 60 12 re f* .960784 .960784 .862745 rg n 114 84.75 6 12 re f* .960784 .960784 .862745 rg n 126 84.75 24 12 re f* .960784 .960784 .862745 rg n 156 84.75 6 12 re f* .960784 .960784 .862745 rg n 162 84.75 6 12 re f* .960784 .960784 .862745 rg n 174 84.75 12 12 re f* .960784 .960784 .862745 rg n 192 84.75 6 12 re f* .960784 .960784 .862745 rg n 24 72.75 24 12 re f* .960784 .960784 .862745 rg n 48 72.75 12 12 re f* .960784 .960784 .862745 rg n 24 60.75 24 12 re f* .960784 .960784 .862745 rg n 54 60.75 60 12 re f* .960784 .960784 .862745 rg n 114 60.75 6 12 re f* .960784 .960784 .862745 rg n 126 60.75 24 12 re f* .960784 .960784 .862745 rg n 156 60.75 6 12 re f* .960784 .960784 .862745 rg n 162 60.75 6 12 re f* .960784 .960784 .862745 rg n 174 60.75 12 12 re f* .960784 .960784 .862745 rg n 192 60.75 24 12 re f* .960784 .960784 .862745 rg n 24 48.75 30 12 re f* .960784 .960784 .862745 rg n 60 48.75 60 12 re f* .960784 .960784 .862745 rg n 120 48.75 12 12 re f* .960784 .960784 .862745 rg n 24 36.75 24 12 re f* .960784 .960784 .862745 rg n 54 36.75 60 12 re f* .960784 .960784 .862745 rg n 114 36.75 6 12 re f* .960784 .960784 .862745 rg n 126 36.75 24 12 re f* .960784 .960784 .862745 rg n 156 36.75 6 12 re f* .960784 .960784 .862745 rg n 162 36.75 6 12 re f* .960784 .960784 .862745 rg n 174 36.75 12 12 re f* .960784 .960784 .862745 rg n 192 36.75 60 12 re f* .960784 .960784 .862745 rg n 24 24.75 6 12 re f* .960784 .960784 .862745 rg n 36 24.75 6 12 re f* .960784 .960784 .862745 rg n 48 24.75 6 12 re f* .960784 .960784 .862745 rg n 54 24.75 6 12 re f* .960784 .960784 .862745 rg n 60 24.75 6 12 re f* .960784 .960784 .862745 rg n 0 12.75 102 12 re f* .960784 .960784 .862745 rg n 114 12.75 204 12 re f* .960784 .960784 .862745 rg n 0 .75 36 12 re f* BT 1 0 0 1 0 98 Tm 12 TL /F4 10 Tf 0 .25098 .815686 rg (Traceback \(most recent call last\):) Tj T* 0 0 0 rg ( ) Tj (File) Tj ( ) Tj .729412 .129412 .129412 rg ("error.py") Tj 0 0 0 rg (,) Tj ( ) Tj (line) Tj ( ) Tj .4 .4 .4 rg (9) Tj 0 0 0 rg (,) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (in) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (?) Tj T* ( ) Tj (main) Tj (\(\)) Tj T* ( ) Tj (File) Tj ( ) Tj .729412 .129412 .129412 rg ("error.py") Tj 0 0 0 rg (,) Tj ( ) Tj (line) Tj ( ) Tj .4 .4 .4 rg (6) Tj 0 0 0 rg (,) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (in) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (main) Tj T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (print) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (call_error) Tj (\(\)) Tj T* ( ) Tj (File) Tj ( ) Tj .729412 .129412 .129412 rg ("error.py") Tj 0 0 0 rg (,) Tj ( ) Tj (line) Tj ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (in) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (call_error) Tj T* ( ) Tj (r) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (1) Tj (/) Tj (0) Tj 0 0 0 rg T* 1 0 0 rg (ZeroDivisionError) Tj 0 0 0 rg (: ) Tj (integer division or modulo by zero) Tj T* (Exit 1) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 376.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The code-block directive supports many options, that mirror pygments':) Tj T* ET Q Q q 1 0 0 1 62.69291 79.42362 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 288 re B* Q q 0 0 0 rg BT 1 0 0 1 0 266 Tm /F4 10 Tf 12 TL (FIXME: fix this to really explain them all. This is a placeholder.) Tj T* T* ( 'stripnl' : string_bool,) Tj T* ( 'stripall': string_bool,) Tj T* ( 'ensurenl': string_bool,) Tj T* ( 'tabsize' : directives.positive_int,) Tj T* ( 'encoding': directives.encoding,) Tj T* ( # Lua) Tj T* ( 'func_name_hightlighting':string_bool,) Tj T* ( 'disabled_modules': string_list,) Tj T* ( # Python Console) Tj T* ( 'python3': string_bool,) Tj T* ( # Delphi) Tj T* ( 'turbopascal':string_bool,) Tj T* ( 'delphi' :string_bool,) Tj T* ( 'freepascal': string_bool,) Tj T* ( 'units': string_list,) Tj T* ( # Modula2) Tj T* ( 'pim' : string_bool,) Tj T* ( 'iso' : string_bool,) Tj T* ( 'objm2' : string_bool,) Tj T* ( 'gm2ext': string_bool,) Tj T* ( # CSharp) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 28) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 70.75693 0 Td (Section 9 Syntax Highlighting) Tj T* -70.75693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R337': class PDFStream 337 0 obj % page stream << /Length 9193 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 601.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 144 re B* Q q 0 0 0 rg BT 1 0 0 1 0 122 Tm /F4 10 Tf 12 TL ( 'unicodelevel' : csharp_unicodelevel,) Tj T* ( # Literate haskell) Tj T* ( 'litstyle' : lhs_litstyle,) Tj T* ( # Raw) Tj T* ( 'compress': raw_compress,) Tj T* ( # Rst) Tj T* ( 'handlecodeblocks': string_bool,) Tj T* ( # Php) Tj T* ( 'startinline': string_bool,) Tj T* ( 'funcnamehighlighting': string_bool,) Tj T* ( 'disabledmodules': string_list,) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 581.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can find more information about them in the pygments manual.) Tj T* ET Q Q q 1 0 0 1 62.69291 551.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (9.1 File inclusion) Tj T* ET Q Q q 1 0 0 1 62.69291 533.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Also, you can use the code-block directive with an external file, using the :include: option:) Tj T* ET Q Q q 1 0 0 1 62.69291 488.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (.. code-block:: python) Tj T* ( :include: setup.py) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 468.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This will give a warning if setup.py doesn't exist or can't be opened.) Tj T* ET Q Q q 1 0 0 1 62.69291 441.6236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (9.1.1 Include with Boundaries) Tj T* ET Q Q q 1 0 0 1 62.69291 423.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (you can add selectors to limit the inclusion to a portion of the file. the options are:) Tj T* ET Q Q q 1 0 0 1 62.69291 417.6236 cm Q q 1 0 0 1 62.69291 402.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 35.81937 0 Td (start-at:) Tj T* -35.81937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (string will include file beginning at the first occurence of string, string ) Tj /F3 10 Tf (included) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 387.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 23.03937 0 Td (start-after:) Tj T* -23.03937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (string will include file beginning at the first occurence of string, string ) Tj /F3 10 Tf (excluded) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 372.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 18.03937 0 Td (end-before:) Tj T* -18.03937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (string will include file up to the first occurence of string, string ) Tj /F3 10 Tf (excluded) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 357.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 39.70937 0 Td (end-at:) Tj T* -39.70937 0 Td ET Q Q q 1 0 0 1 91.03937 3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (string will include file up to the first occurence of string, string ) Tj /F3 10 Tf (included) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 339.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Let's display a class from rst2pdf:) Tj T* ET Q Q q 1 0 0 1 62.69291 270.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (.. code-block:: python) Tj T* ( :include: ../rst2pdf/flowables.py) Tj T* ( :start-at: class Separation\(Flowable\):) Tj T* ( :end-before: class Reference\(Flowable\):) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 250.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (this command gives) Tj T* ET Q Q q 1 0 0 1 62.69291 121.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 120 re B* Q q .960784 .960784 .862745 rg n 0 96.75 30 12 re f* .960784 .960784 .862745 rg n 36 96.75 60 12 re f* .960784 .960784 .862745 rg n 96 96.75 6 12 re f* .960784 .960784 .862745 rg n 102 96.75 48 12 re f* .960784 .960784 .862745 rg n 150 96.75 12 12 re f* .960784 .960784 .862745 rg n 24 84.75 72 12 re f* .960784 .960784 .862745 rg n 96 84.75 6 12 re f* .960784 .960784 .862745 rg n 102 84.75 12 12 re f* .960784 .960784 .862745 rg n 114 84.75 6 12 re f* .960784 .960784 .862745 rg n 120 84.75 102 12 re f* .960784 .960784 .862745 rg n 24 60.75 18 12 re f* .960784 .960784 .862745 rg n 48 60.75 24 12 re f* .960784 .960784 .862745 rg n 72 60.75 6 12 re f* .960784 .960784 .862745 rg n 78 60.75 24 12 re f* .960784 .960784 .862745 rg n 102 60.75 6 12 re f* .960784 .960784 .862745 rg n 114 60.75 6 12 re f* .960784 .960784 .862745 rg n 120 60.75 6 12 re f* .960784 .960784 .862745 rg n 132 60.75 6 12 re f* .960784 .960784 .862745 rg n 138 60.75 12 12 re f* .960784 .960784 .862745 rg n 48 48.75 24 12 re f* .960784 .960784 .862745 rg n 72 48.75 6 12 re f* .960784 .960784 .862745 rg n 78 48.75 6 12 re f* .960784 .960784 .862745 rg n 90 48.75 6 12 re f* .960784 .960784 .862745 rg n 102 48.75 6 12 re f* .960784 .960784 .862745 rg n 48 36.75 36 12 re f* .960784 .960784 .862745 rg n 90 36.75 6 12 re f* .960784 .960784 .862745 rg n 96 36.75 6 12 re f* .960784 .960784 .862745 rg n 108 36.75 6 12 re f* .960784 .960784 .862745 rg n 114 36.75 6 12 re f* .960784 .960784 .862745 rg n 120 36.75 12 12 re f* .960784 .960784 .862745 rg n 24 12.75 18 12 re f* .960784 .960784 .862745 rg n 48 12.75 24 12 re f* .960784 .960784 .862745 rg n 72 12.75 6 12 re f* .960784 .960784 .862745 rg n 78 12.75 24 12 re f* .960784 .960784 .862745 rg n 102 12.75 12 12 re f* .960784 .960784 .862745 rg n 48 .75 24 12 re f* .960784 .960784 .862745 rg n 72 .75 6 12 re f* .960784 .960784 .862745 rg n 78 .75 24 12 re f* .960784 .960784 .862745 rg n 102 .75 6 12 re f* .960784 .960784 .862745 rg n 108 .75 24 12 re f* .960784 .960784 .862745 rg n 132 .75 6 12 re f* .960784 .960784 .862745 rg n 138 .75 6 12 re f* .960784 .960784 .862745 rg n 144 .75 6 12 re f* .960784 .960784 .862745 rg n 156 .75 18 12 re f* .960784 .960784 .862745 rg n 174 .75 6 12 re f* .960784 .960784 .862745 rg n 180 .75 12 12 re f* .960784 .960784 .862745 rg n 192 .75 6 12 re f* .960784 .960784 .862745 rg n 204 .75 24 12 re f* .960784 .960784 .862745 rg n 228 .75 6 12 re f* .960784 .960784 .862745 rg n 234 .75 6 12 re f* .960784 .960784 .862745 rg n 240 .75 6 12 re f* .960784 .960784 .862745 rg n 252 .75 18 12 re f* .960784 .960784 .862745 rg n 270 .75 6 12 re f* .960784 .960784 .862745 rg n 276 .75 12 12 re f* .960784 .960784 .862745 rg n 288 .75 6 12 re f* BT 1 0 0 1 0 98 Tm 12 TL /F6 10 Tf 0 .501961 0 rg (class) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F6 10 Tf 0 0 1 rg (Separation) Tj /F4 10 Tf 0 0 0 rg (\() Tj (Flowable) Tj (\):) Tj T* ( ) Tj /F5 10 Tf .729412 .129412 .129412 rg ("""A simple ) Tj (<) Tj (hr) Tj (>) Tj (-like flowable""") Tj /F4 10 Tf 0 0 0 rg T* T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (def) Tj /F4 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (wrap) Tj 0 0 0 rg (\() Tj 0 .501961 0 rg (self) Tj 0 0 0 rg (,) Tj ( ) Tj (w) Tj (,) Tj ( ) Tj (h) Tj (\):) Tj T* ( ) Tj 0 .501961 0 rg (self) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (w) Tj ( ) Tj .4 .4 .4 rg (=) Tj 0 0 0 rg ( ) Tj (w) Tj T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (return) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (w) Tj (,) Tj ( ) Tj .4 .4 .4 rg (1) Tj (*) Tj 0 0 0 rg (cm) Tj T* T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (def) Tj /F4 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (draw) Tj 0 0 0 rg (\() Tj 0 .501961 0 rg (self) Tj 0 0 0 rg (\):) Tj T* ( ) Tj 0 .501961 0 rg (self) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (canv) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (line) Tj (\() Tj .4 .4 .4 rg (0) Tj 0 0 0 rg (,) Tj ( ) Tj .4 .4 .4 rg (0.5) Tj (*) Tj 0 0 0 rg (cm) Tj (,) Tj ( ) Tj 0 .501961 0 rg (self) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (w) Tj (,) Tj ( ) Tj .4 .4 .4 rg (0.5) Tj (*) Tj 0 0 0 rg (cm) Tj (\)) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 80.48693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 9.1 File inclusion) Tj T* -80.48693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 29) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R338': class PDFStream 338 0 obj % page stream << /Length 1434 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 732.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (9.1.2 Options) Tj T* ET Q Q q 1 0 0 1 62.69291 714.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (linenos) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Display line numbers along the code) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 683.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (linenos_offset) Tj T* ET Q Q q 1 0 0 1 62.69291 656.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .044692 Tw (If you include a file and are skipping the beginning, using the linenos_offset makes the line count start) Tj T* 0 Tw (from the real line number, instead of 1.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 656.0236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 30) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 80.48693 0 Td (Section 9.1 File inclusion) Tj T* -80.48693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R339': class PDFStream 339 0 obj % page stream << /Length 4919 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (10 Raw Directive) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (10.1 Raw PDF) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.017984 Tw (Rst2pdf has a very limited mechanism to pass commands to reportlab, the PDF generation library. You) Tj T* 0 Tw 1.19561 Tw (can use the raw directive to insert pagebreaks and spacers \(other reportlab flowables may be added if) Tj T* 0 Tw (there's interest\), and set page transitions.) Tj T* ET Q Q q 1 0 0 1 62.69291 636.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The syntax is shell-like, here's an example:) Tj T* ET Q Q q 1 0 0 1 62.69291 446.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 180 re B* Q q 0 0 0 rg BT 1 0 0 1 0 158 Tm /F4 10 Tf 12 TL (One page) Tj T* T* (.. raw:: pdf) Tj T* T* ( PageBreak) Tj T* T* (Another page. Now some space:) Tj T* T* (.. raw:: pdf) Tj T* T* ( Spacer 0,200) Tj T* ( Spacer 0 200) Tj T* T* (And another paragraph.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 414.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .767717 Tw (The unit used by the spacer by default is points, and using a space or a comma is the same thing in all) Tj T* 0 Tw (cases.) Tj T* ET Q Q q 1 0 0 1 62.69291 384.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (10.2 Page Counters) Tj T* ET Q Q q 1 0 0 1 62.69291 366.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (In some documents, you may not want your page counter to start in the first page.) Tj T* ET Q Q q 1 0 0 1 62.69291 336.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .141417 Tw (For example, if the first pages are a coverpage and a table of contents, you want page 1 to be where your) Tj T* 0 Tw (first section starts.) Tj T* ET Q Q q 1 0 0 1 62.69291 318.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To do that, you have to use the SetPageCounter command.) Tj T* ET Q Q q 1 0 0 1 62.69291 300.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Here is a syntax example:) Tj T* ET Q Q q 1 0 0 1 62.69291 243.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (.. raw:: pdf) Tj T* T* ( SetPageCounter 0 lowerroman) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 211.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .992846 Tw (This sets the counter to 0, and makes it display in lower roman characters \(i, ii, iii, etc\) which is a style) Tj T* 0 Tw (often used for the pages before the document proper \(for example, TOCs and abstracts\).) Tj T* ET Q Q q 1 0 0 1 62.69291 193.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (It can take zero or two arguments.) Tj T* ET Q Q q 1 0 0 1 62.69291 177.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (SetPageCounter) Tj T* ET Q Q q 1 0 0 1 62.69291 162.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (When used with no arguments, it sets the counter to 0, and the style to arabic numerals.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 146.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (SetPageCounter number style) Tj T* ET Q Q q 1 0 0 1 62.69291 77.62362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 56 Tm T* ET q 1 0 0 1 20 42 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .197765 Tw (When used with two arguments, the first argument must be a number, it sets the page counter to that) Tj T* 0 Tw (number.) Tj T* ET Q Q q 1 0 0 1 20 24 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The second number is a style of counter. Valid values are:) Tj T* ET Q Q q 1 0 0 1 20 18 cm Q q 1 0 0 1 20 18 cm Q q 1 0 0 1 20 6 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (lowerroman: i, ii, iii, iv, v ...) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 79.93693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 10 Raw Directive) Tj T* -79.93693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 31) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R340': class PDFStream 340 0 obj % page stream << /Length 6461 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 678.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 56 Tm T* ET q 1 0 0 1 20 54 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (roman: I, II, III, IV, V ...) Tj T* ET Q Q q Q Q q 1 0 0 1 20 48 cm Q q 1 0 0 1 20 36 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (arabic: 1, 2, 3, 4, 5 ...) Tj T* ET Q Q q Q Q q 1 0 0 1 20 30 cm Q q 1 0 0 1 20 18 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (loweralpha: a, b, c, d, e ... [Don't use for numbers above 26]) Tj T* ET Q Q q Q Q q 1 0 0 1 20 12 cm Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (alpha: A, B, C, D, E ... [Don't use for numbers above 26]) Tj T* ET Q Q q Q Q q 1 0 0 1 20 0 cm Q q Q Q q 1 0 0 1 62.69291 666.0236 cm Q q 1 0 0 1 62.69291 595.0236 cm .960784 .960784 .862745 rg n 0 71 469.8898 -71 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 45 Tm T* ET q 1 0 0 1 16 40 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F8 12.5 Tf 15 TL (Note) Tj T* ET Q Q q 1 0 0 1 16 16 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Page counter changes take effect on the ) Tj /F3 10 Tf (current ) Tj /F1 10 Tf (page.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 71 m 469.8898 71 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 71 l S n 469.8898 0 m 469.8898 71 l S Q Q q 1 0 0 1 62.69291 589.0236 cm Q q 1 0 0 1 62.69291 559.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (10.3 Page Breaks) Tj T* ET Q Q q 1 0 0 1 62.69291 541.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (There are three kinds of page breaks:) Tj T* ET Q Q q 1 0 0 1 62.69291 525.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (PageBreak) Tj T* ET Q Q q 1 0 0 1 62.69291 510.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Break to the next page) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 494.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (EvenPageBreak) Tj T* ET Q Q q 1 0 0 1 62.69291 479.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Break to the next ) Tj /F3 10 Tf (even ) Tj /F1 10 Tf (numbered page) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 463.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (OddPageBreak) Tj T* ET Q Q q 1 0 0 1 62.69291 448.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Break to the next ) Tj /F3 10 Tf (odd ) Tj /F1 10 Tf (numbered page) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 430.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Each of them can take an additional number which is the name of the next page template.) Tj T* ET Q Q q 1 0 0 1 62.69291 412.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example:) Tj T* ET Q Q q 1 0 0 1 62.69291 378.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (PageBreak twoColumn) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 348.8236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (10.4 Frame Breaks) Tj T* ET Q Q q 1 0 0 1 62.69291 306.8236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .077907 Tw (If you want to jump to the next frame in the page \(or the next page if the current frame is the last\), you can) Tj T* 0 Tw .783876 Tw (use the FrameBreak command. It takes an optional height in points, and then it only breaks the frame if) Tj T* 0 Tw (there is less than that vertical space available.) Tj T* ET Q Q q 1 0 0 1 62.69291 288.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, if you don't want a paragraph to begin if it's less than 50 points from the bottom of the frame:) Tj T* ET Q Q q 1 0 0 1 62.69291 215.0822 cm q q .898107 0 0 .898107 0 0 cm q 1 0 0 1 6.6 7.348787 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 522 72 re B* Q q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F4 10 Tf 12 TL (.. raw:: pdf) Tj T* T* ( FrameBreak 50) Tj T* T* (This paragraph is so important that I don't want it at the very bottom of the page...) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 185.0822 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (10.5 Page Transitions) Tj T* ET Q Q q 1 0 0 1 62.69291 155.0822 cm q BT 1 0 0 1 0 14 Tm .421318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Page transitions are effects used when you change pages in ) Tj /F7 10 Tf (Presentation ) Tj /F1 10 Tf (or ) Tj /F7 10 Tf (Full Screen ) Tj /F1 10 Tf (mode \(depends) Tj T* 0 Tw (on the viewer\). You can use it when creating a presentation using PDF files.) Tj T* ET Q Q q 1 0 0 1 62.69291 137.0822 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The syntax is this:) Tj T* ET Q Q q 1 0 0 1 62.69291 79.88216 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (.. raw:: pdf) Tj T* T* ( Transition effect duration [optional arguments]) Tj T* ET Q Q Q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 32) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 77.97693 0 Td (Section 10.3 Page Breaks) Tj T* -77.97693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R341': class PDFStream 341 0 obj % page stream << /Length 5476 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 735.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The optional arguments are:) Tj T* ET Q Q q 1 0 0 1 62.69291 719.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (direction:) Tj T* ET Q Q q 1 0 0 1 62.69291 704.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Can be 0,90,180 or 270 \(top,right,bottom,left\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 688.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (dimension:) Tj T* ET Q Q q 1 0 0 1 62.69291 673.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Can be H or V) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 657.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (motion:) Tj T* ET Q Q q 1 0 0 1 62.69291 642.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Can be I or O \(Inside or Outside\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 624.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The effects with their arguments are:) Tj T* ET Q Q q 1 0 0 1 62.69291 618.0236 cm Q q 1 0 0 1 62.69291 618.0236 cm Q q 1 0 0 1 62.69291 606.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Split duration direction motion) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 600.0236 cm Q q 1 0 0 1 62.69291 588.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Blinds duration dimension) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 582.0236 cm Q q 1 0 0 1 62.69291 570.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Box duration motion) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 564.0236 cm Q q 1 0 0 1 62.69291 552.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Wipe duration direction) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 546.0236 cm Q q 1 0 0 1 62.69291 534.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Dissolve duration) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 528.0236 cm Q q 1 0 0 1 62.69291 516.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Glitter duration direction) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 516.0236 cm Q q 1 0 0 1 62.69291 498.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example:) Tj T* ET Q Q q 1 0 0 1 62.69291 440.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (.. raw:: pdf) Tj T* T* ( Transition Glitter 3 90) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 420.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Uses the Glitter effect, for 3 seconds, at direction 90 degress \(from the right?\)) Tj T* ET Q Q q 1 0 0 1 62.69291 390.8236 cm q BT 1 0 0 1 0 14 Tm .61856 Tw 12 TL /F1 10 Tf 0 0 0 rg (Keep in mind that Transition sets the transition ) Tj /F7 10 Tf (from this page to the next ) Tj /F1 10 Tf (so the natural thing is to use it) Tj T* 0 Tw (before a PageBreak:) Tj T* ET Q Q q 1 0 0 1 62.69291 321.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (.. raw:: pdf) Tj T* T* ( Transition Dissolve 1) Tj T* ( PageBreak) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 291.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (10.6 Raw HTML) Tj T* ET Q Q q 1 0 0 1 62.69291 261.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .27528 Tw (If you have a document that contais raw HTML, andhave xhtml2pdf installed, rst2pdf will try to render that) Tj T* 0 Tw (HTML inside your documet. To enable this, use the --raw-html command line option.) Tj T* ET Q Q q 1 0 0 1 62.69291 261.6236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 81.60193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 10.6 Raw HTML) Tj T* -81.60193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 33) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R342': class PDFStream 342 0 obj % page stream << /Length 3946 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (11 The counter role) Tj T* ET Q Q q 1 0 0 1 62.69291 684.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.127633 Tw (This is a nonstandard interpreted text role, which means it will only work with rst2pdf. It implements an) Tj T* 0 Tw .722765 Tw (unlimited number of counters you can use in your text. For example, you could use it to have numbered) Tj T* 0 Tw (figures, or numbered tables.) Tj T* ET Q Q q 1 0 0 1 62.69291 666.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The syntax is this:) Tj T* ET Q Q q 1 0 0 1 62.69291 548.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 108 re B* Q q .960784 .960784 .862745 rg n 288 84.75 54 12 re f* .960784 .960784 .862745 rg n 342 84.75 36 12 re f* .960784 .960784 .862745 rg n 150 72.75 54 12 re f* .960784 .960784 .862745 rg n 204 72.75 36 12 re f* .960784 .960784 .862745 rg n 342 48.75 54 12 re f* .960784 .960784 .862745 rg n 396 48.75 54 12 re f* .960784 .960784 .862745 rg n 282 24.75 54 12 re f* .960784 .960784 .862745 rg n 336 24.75 54 12 re f* .960784 .960784 .862745 rg n 18 .75 66 12 re f* .960784 .960784 .862745 rg n 180 .75 120 12 re f* .960784 .960784 .862745 rg n 300 .75 6 12 re f* .960784 .960784 .862745 rg n 306 .75 42 12 re f* .960784 .960784 .862745 rg n 348 .75 6 12 re f* .960784 .960784 .862745 rg n 354 .75 12 12 re f* BT 1 0 0 1 0 86 Tm 12 TL /F4 10 Tf 0 0 0 rg (Start a counter called seq1 that starts from 1: ) Tj .490196 .564706 .160784 rg (:counter:) Tj .098039 .090196 .486275 rg (`seq1`) Tj 0 0 0 rg T* (Now this should print 2: ) Tj .490196 .564706 .160784 rg (:counter:) Tj .098039 .090196 .486275 rg (`seq1`) Tj 0 0 0 rg T* T* (You can start counters from any number \(this prints 12\): ) Tj .490196 .564706 .160784 rg (:counter:) Tj .098039 .090196 .486275 rg (`seq2:12`) Tj 0 0 0 rg T* T* (And have any number of counters with any name: ) Tj .490196 .564706 .160784 rg (:counter:) Tj .098039 .090196 .486275 rg (`figures`) Tj 0 0 0 rg T* T* (So ) Tj .729412 .129412 .129412 rg (``#seq1-2``) Tj 0 0 0 rg ( should link to ) Tj .729412 .129412 .129412 rg (`the number 2 above ) Tj /F6 10 Tf .733333 .4 .533333 rg (<) Tj (#seq1-2) Tj (>) Tj /F4 10 Tf .729412 .129412 .129412 rg (`_) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 528.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The output is:) Tj T* ET Q Q q 1 0 0 1 62.69291 510.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Start a counter called seq1 that starts from 1: ) Tj (1 Now this should print 2: ) Tj (2) Tj T* ET Q Q q 1 0 0 1 62.69291 492.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can start counters from any number \(this prints 12\): ) Tj (12) Tj T* ET Q Q q 1 0 0 1 62.69291 474.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (And have any number of counters with any name: ) Tj (1) Tj T* ET Q Q q 1 0 0 1 62.69291 456.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Also, the counters create targets for links with this scheme: #countername-number.) Tj T* ET Q Q q 1 0 0 1 62.69291 438.8236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (So ) Tj /F4 10 Tf (#seq1-2 ) Tj /F1 10 Tf (should link to ) Tj 0 0 .501961 rg (the number 2 above) Tj T* ET Q Q q 1 0 0 1 62.69291 438.8236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 34) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 74.36693 0 Td (Section 11 The counter role) Tj T* -74.36693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R343': class PDFStream 343 0 obj % page stream << /Length 4240 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (12 The oddeven directive) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.034431 Tw (This is a nonstandard directive, which means it will only work with rst2pdf, and not with rst2html or any) Tj T* 0 Tw (other docutils tool.) Tj T* ET Q Q q 1 0 0 1 62.69291 666.0236 cm q BT 1 0 0 1 0 14 Tm .340574 Tw 12 TL /F1 10 Tf 0 0 0 rg (The contents of oddeven should consist of ) Tj /F3 10 Tf (exactly ) Tj /F1 10 Tf (two things \(in this case, two paragraphs\). The first will) Tj T* 0 Tw (be used on odd pages, and the second one on even pages.) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you want to use more complex content, you should wrap it with containers, like in this example:) Tj T* ET Q Q q 1 0 0 1 62.69291 533.6136 cm q q .87797 0 0 .87797 0 0 cm q 1 0 0 1 6.6 7.517338 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 534 120 re B* Q q .960784 .960784 .862745 rg n 0 96.75 12 12 re f* .960784 .960784 .862745 rg n 18 96.75 42 12 re f* .960784 .960784 .862745 rg n 60 96.75 12 12 re f* .960784 .960784 .862745 rg n 0 72.75 36 12 re f* .960784 .960784 .862745 rg n 42 72.75 54 12 re f* .960784 .960784 .862745 rg n 96 72.75 12 12 re f* BT 1 0 0 1 0 98 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (oddeven) Tj /F4 10 Tf 0 0 0 rg (::) Tj T* T* ( ..) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (container) Tj /F4 10 Tf 0 0 0 rg (::) Tj T* T* ( This will appear on odd pages.) Tj T* T* ( Both paragraphs in the container are for odd pages.) Tj T* T* ( This will appear on even pages. It's a single paragraph, so no need for containers.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 513.6136 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This directive has several limitations.) Tj T* ET Q Q q 1 0 0 1 62.69291 507.6136 cm Q q 1 0 0 1 62.69291 507.6136 cm Q q 1 0 0 1 62.69291 471.6136 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 21 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 26 Tm .129986 Tw 12 TL /F1 10 Tf 0 0 0 rg (I intentionally have disabled splitting into pages for this, because I have no idea how that could make) Tj T* 0 Tw .877882 Tw (sense. That means that if its content is larger than a frame, you ) Tj /F3 10 Tf (will ) Tj /F1 10 Tf (make rst2pdf barf with one of) Tj T* 0 Tw (those ugly errors.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 465.6136 cm Q q 1 0 0 1 62.69291 441.6136 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm 1.164751 Tw 12 TL /F1 10 Tf 0 0 0 rg (It will reserve the space of the larger of the two sets of contents. So if one is small and the other) Tj T* 0 Tw (large, it ) Tj /F3 10 Tf (will ) Tj /F1 10 Tf (look wrong. I may be able to fix this though.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 435.6136 cm Q q 1 0 0 1 62.69291 411.6136 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .762093 Tw (If you try to generate HTML \(or anything other than a PDF via rst2pdf\) from a file containing this, it) Tj T* 0 Tw (will not do what you want.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 411.6136 cm Q q 1 0 0 1 62.69291 411.6136 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 61.58193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 12 The oddeven directive) Tj T* -61.58193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 35) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R344': class PDFStream 344 0 obj % page stream << /Length 7185 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (13 Mathematics) Tj T* ET Q Q q 1 0 0 1 62.69291 684.0236 cm q BT 1 0 0 1 0 26 Tm .876654 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you have ) Tj 0 0 .501961 rg (Matplotlib ) Tj 0 0 0 rg (installed, rst2pdf supports a math role and a math directive. You can use them to) Tj T* 0 Tw .183318 Tw (insert formulae and mathematical notation in your documents using a subset of LaTeX syntax, but doesn't) Tj T* 0 Tw (require you have LaTeX installed.) Tj T* ET Q Q q 1 0 0 1 62.69291 666.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, here's how you use the math directive:) Tj T* ET Q Q q 1 0 0 1 62.69291 608.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (.. math::) Tj T* T* ( \\frac{2 \\pm \\sqrt{7}}{3}) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 588.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (And here's the result:) Tj T* ET Q Q q 1 0 0 1 286.1378 571.8236 cm 0 0 0 rg BT 1 0 0 1 0 9.6675 Tm /F9+0 7 Tf 8.4 TL (2) Tj T* ET 0 0 0 rg BT 1 0 0 1 4.729102 9.6675 Tm /F10+0 7 Tf 8.4 TL (\200) Tj T* ET 0 0 0 rg BT 1 0 0 1 10.60664 16.33 Tm /F11+0 5.889467 Tf 7.06736 TL (p) Tj T* ET 0 0 0 rg BT 1 0 0 1 17.36602 9.826563 Tm /F9+0 7 Tf 8.4 TL (7) Tj T* ET 0 0 0 rg BT 1 0 0 1 9 1.73 Tm /F9+0 7 Tf 8.4 TL (3) Tj T* ET 0 w [] 0 d n 16.49102 17 5.25 .4375 re B* n 0 8.264375 21.74102 .625 re B* Q q 1 0 0 1 62.69291 553.8236 cm q q 6 0 0 6 280.68 1 cm /FormXob.ee65afc714a21fa854c1b9cc08c5a03c Do Q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If you want to insert mathematical notation in your text like this: ) Tj 286.68 0 Td (that is the job of the math ) Tj /F7 10 Tf (role) Tj /F1 10 Tf (:) Tj T* -286.68 0 Td ET Q Q q 1 0 0 1 62.69291 520.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (This is :math:`\\pi`) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 500.6236 cm q q 6 0 0 6 79.47 1 cm /FormXob.ee65afc714a21fa854c1b9cc08c5a03c Do Q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Produces: This is ) Tj 85.47 0 Td T* -85.47 0 Td ET Q Q q 1 0 0 1 62.69291 458.6236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .051235 Tw (Currently, the math role is slightly buggy, and in some cases will produce misaligned and generally broken) Tj T* 0 Tw .144692 Tw (output. Also, while the math directive embeds fonts and draws your formula as text, the math role embeds) Tj T* 0 Tw (an image. That means:) Tj T* ET Q Q q 1 0 0 1 62.69291 452.6236 cm Q q 1 0 0 1 62.69291 452.6236 cm Q q 1 0 0 1 62.69291 440.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can't copy the text of inline math) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 434.6236 cm Q q 1 0 0 1 62.69291 422.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Inline math will look worse when printed, or make your file larger.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 422.6236 cm Q q 1 0 0 1 62.69291 404.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (So, use it only in emergencies ;-\)) Tj T* ET Q Q q 1 0 0 1 62.69291 374.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .093988 Tw (You can also use an inline substitution of the math directive for things you use often, which is the same as) Tj T* 0 Tw (using the math role:) Tj T* ET Q Q q 1 0 0 1 62.69291 317.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (This is the square of x: |xsq|) Tj T* T* (.. |xsq| math:: x^2) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 297.4236 cm q q 13 0 0 10 103.38 1 cm /FormXob.fddb44bbe3ec01aabf0db1a788f9f721 Do Q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (This is the square of x: ) Tj 116.38 0 Td T* -116.38 0 Td ET Q Q q 1 0 0 1 62.69291 267.4236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.665542 Tw (You don't need to worry about fonts, the correct math fonts will be used and embedded in your PDF) Tj T* 0 Tw (automatically \(they are included with matplotlib\).) Tj T* ET Q Q q 1 0 0 1 62.69291 237.4236 cm q BT 1 0 0 1 0 14 Tm .046651 Tw 12 TL /F1 10 Tf 0 0 0 rg (For an introduction to LaTeX syntax, see the "Typesetting Mathematical Formulae" chapter in "The Not So) Tj T* 0 Tw (Short Introduction to LaTeX 2e":) Tj T* ET Q Q q 1 0 0 1 62.69291 219.4236 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (http://www.tex.ac.uk/tex-archive/info/lshort/english/lshort.pdf) Tj T* ET Q Q q 1 0 0 1 62.69291 189.4236 cm q BT 1 0 0 1 0 14 Tm 1.162619 Tw 12 TL /F1 10 Tf 0 0 0 rg (Basically, the inline form ) Tj /F4 10 Tf ($a^2$ ) Tj /F1 10 Tf (is similar to the math role, and the display form is similar to the math) Tj T* 0 Tw (directive.) Tj T* ET Q Q q 1 0 0 1 62.69291 171.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Rst2pdf doesn't support numbering equations yet.) Tj T* ET Q Q q 1 0 0 1 62.69291 153.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The math directive supports the following options:) Tj T* ET Q Q q 1 0 0 1 62.69291 137.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (:fontsize:) Tj T* ET Q Q q 1 0 0 1 62.69291 122.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Sets the font size used in the math directive. By default it will use the paragraph's font and size.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 106.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F6 10 Tf 12 TL (:color:) Tj T* ET Q Q q 1 0 0 1 62.69291 79.42362 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q BT 1 0 0 1 0 14 Tm .813145 Tw 12 TL /F1 10 Tf 0 0 0 rg (Can change the color of the math directive's output. Can take either a color by name like ) Tj /F4 10 Tf (red ) Tj /F1 10 Tf (or a) Tj T* 0 Tw (hex code like ) Tj /F4 10 Tf (#4c050f) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 79.42362 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 36) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 82.43193 0 Td (Section 13 Mathematics) Tj T* -82.43193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R345': class PDFStream 345 0 obj % page stream << /Length 5801 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (14 Hyphenation) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you want good looking documents, you want to enable hyphenation.) Tj T* ET Q Q q 1 0 0 1 62.69291 690.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (To do it, you need to install Wordaxe ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (2) Tj /F1 10 Tf 0 0 0 rg 0 Ts (.) Tj T* ET Q Q q 1 0 0 1 62.69291 660.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .967608 Tw (If after installing it you get the letter "s" or a black square instead of a hyphen, that means you need to) Tj T* 0 Tw (replace the rl_codecs.py file from reportlab with the one from wordaxe.) Tj T* ET Q Q q 1 0 0 1 62.69291 642.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (For more information, see ) Tj 0 0 .501961 rg (this issue ) Tj 0 0 0 rg (in rst2pdf's bug tracker.) Tj T* ET Q Q q 1 0 0 1 62.69291 612.0236 cm q BT 1 0 0 1 0 14 Tm .038935 Tw 12 TL /F1 10 Tf 0 0 0 rg (Also, you may need to set hyphenation to true in one or more styles, and the language for hyphenation via) Tj T* 0 Tw (the command line or paragraph styles.) Tj T* ET Q Q q 1 0 0 1 62.69291 594.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For english, this should be enough:) Tj T* ET Q Q q 1 0 0 1 62.69291 524.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (["bodytext" , {) Tj T* ( "alignment": "justify",) Tj T* ( "hyphenation": true) Tj T* (}],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 504.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you are not an english speaker, you need to change the language using the -l or --language option.) Tj T* ET Q Q q 1 0 0 1 62.69291 474.8236 cm q BT 1 0 0 1 0 14 Tm 1.56311 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since Wordaxe version 0.2.6, it can use the PyHyphen library if it's available. PyHyphen can use any) Tj T* 0 Tw (OpenOffice dictionary, and can even download them automatically. ) Tj /F1 8 Tf 0 0 .501961 rg 5 Ts (3) Tj T* ET Q Q q 1 0 0 1 62.69291 456.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, this will enable german hyphenation globally:) Tj T* ET Q Q q 1 0 0 1 62.69291 450.8236 cm Q q 1 0 0 1 62.69291 438.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (rst2pdf -l de_DE mydocument.txt) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 438.8236 cm Q q 1 0 0 1 62.69291 408.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .535318 Tw (If you are creating a multilingual document, you can declare styles with specific languages. For example,) Tj T* 0 Tw (you could inherit bodytext for spanish:) Tj T* ET Q Q q 1 0 0 1 62.69291 315.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 84 re B* Q q 0 0 0 rg BT 1 0 0 1 0 62 Tm /F4 10 Tf 12 TL (["bodytext_es" , {) Tj T* ( "parent": "bodytext",) Tj T* ( "alignment": "justify",) Tj T* ( "hyphenation": true,) Tj T* ( "language": "es_ES") Tj T* (}],) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 295.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (And all paragraps declared of bodytext_es style would have spanish hyphenation:) Tj T* ET Q Q q 1 0 0 1 62.69291 199.3149 cm q q .908526 0 0 .908526 0 0 cm q 1 0 0 1 6.6 7.264512 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 516 96 re B* Q q 0 0 0 rg BT 1 0 0 1 0 74 Tm /F4 10 Tf 12 TL (.. class:: bodytext_es) Tj T* T* (Debo a la conjunci\363n de un espejo y de una enciclopedia el descubrimiento de Uqbar.) Tj T* (El espejo inquietaba el fondo de un corredor en una quinta de la calle Gaona,) Tj T* (en Ramos Mej\355a; la enciclopedia falazmente se llama *The Anglo-American Cyclopaed\355a*) Tj T* (\(New York, 1917\) y es una reimpresi\363n literal, pero tambi\351n morosa, de la) Tj T* (*Encyclopaedia Britannica* de 1902.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 179.3149 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Here is the result \(made thinner to force hyphenation\):) Tj T* ET Q Q q 1 0 0 1 62.69291 101.1149 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 .1 .1 cm q BT 1 0 0 1 0 62 Tm 3.795304 Tw 12 TL /F1 10 Tf 0 0 0 rg (Debo a la conjunci\363n de un espejo y de una enciclopedia el) Tj T* 0 Tw 3.527594 Tw (descubrimiento de Uqbar. El espejo inquietaba el fondo de un) Tj T* 0 Tw 2.938031 Tw (corredor en una quinta de la calle Gaona, en Ramos Mej\355a; la) Tj T* 0 Tw .944724 Tw (enciclopedia falazmente se llama ) Tj /F7 10 Tf (The Anglo-American Cyclopaed\355a) Tj T* 0 Tw .234835 Tw /F1 10 Tf (\(New York, 1917\) y es una reimpresi\363n literal, pero tambi\351n morosa,) Tj T* 0 Tw (de la ) Tj /F7 10 Tf (Encyclopaedia Britannica ) Tj /F1 10 Tf (de 1902.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 83.11487 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (BTW: That's the beginning of "Tl\366n, Uqbar, Orbis Tertius", read it, it's cool.) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 82.70193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 14 Hyphenation) Tj T* -82.70193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 37) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R346': class PDFStream 346 0 obj % page stream << /Length 1683 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 723.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .351098 Tw (If you explicitly configure a language in a paragraph style and also pass a language in the command line,) Tj T* 0 Tw (the style has priority, so remember:) Tj T* ET Q Q q 1 0 0 1 62.69291 711.0236 cm Q q 1 0 0 1 62.69291 610.0236 cm .960784 .960784 .862745 rg n 0 101 469.8898 -101 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 75 Tm T* ET q 1 0 0 1 16 70 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F8 12.5 Tf 15 TL (Important) Tj T* ET Q Q q 1 0 0 1 16 34 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.070574 Tw (If you configure the bodytext style to have a language, your document is supposed to be in that) Tj T* 0 Tw (language, regardless of what the command line says.) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If this is too confusing, let me know, I will try to figure out a simpler way.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 101 m 469.8898 101 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 101 l S n 469.8898 0 m 469.8898 101 l S Q Q q 1 0 0 1 62.69291 604.0236 cm Q q 1 0 0 1 62.69291 604.0236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 38) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 82.70193 0 Td (Section 14 Hyphenation) Tj T* -82.70193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R347': class PDFStream 347 0 obj % page stream << /Length 4373 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (15 Page Layout) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .274692 Tw (By default, your document will have a single column of text covering the space between the margins. You) Tj T* 0 Tw (can change that, though, in fact you can do so even in the middle of your document!) Tj T* ET Q Q q 1 0 0 1 62.69291 666.0236 cm q BT 1 0 0 1 0 14 Tm .844431 Tw 12 TL /F1 10 Tf 0 0 0 rg (To do it, you need to define ) Tj /F7 10 Tf (Page Templates ) Tj /F1 10 Tf (in your stylesheet. The default stylesheet already has 3 of) Tj T* 0 Tw (them:) Tj T* ET Q Q q 1 0 0 1 62.69291 404.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 252 re B* Q q 0 0 0 rg BT 1 0 0 1 0 230 Tm /F4 10 Tf 12 TL ("pageTemplates" : {) Tj T* ( "coverPage": {) Tj T* ( "frames": [) Tj T* ( ["0cm", "0cm", "100%", "100%"]) Tj T* ( ],) Tj T* ( "showHeader" : false,) Tj T* ( "showFooter" : false) Tj T* ( },) Tj T* ( "oneColumn": {) Tj T* ( "frames": [) Tj T* ( ["0cm", "0cm", "100%", "100%"]) Tj T* ( ]) Tj T* ( },) Tj T* ( "twoColumn": {) Tj T* ( "frames": [) Tj T* ( ["0cm", "0cm", "49%", "100%"],) Tj T* ( ["51%", "0cm", "49%", "100%"]) Tj T* ( ]) Tj T* ( }) Tj T* (}) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 372.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .662209 Tw (A page template has a name \(oneColumn, twoColumn\), some options, and a list of frames. A frame is a) Tj T* 0 Tw (list containing this:) Tj T* ET Q Q q 1 0 0 1 62.69291 339.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL ([ left position, bottom position, width, height ]) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 307.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .292846 Tw (For example, this defines a frame "at the very left", "at the very bottom", "a bit less than half a page wide") Tj T* 0 Tw (and "as tall as possible":) Tj T* ET Q Q q 1 0 0 1 62.69291 274.4236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (["0cm", "0cm", "49%", "100%"]) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 254.4236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (And this means "the top third of the page":) Tj T* ET Q Q q 1 0 0 1 62.69291 221.2236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (["0cm", "66.66%", "100%", "33.34%"]) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 177.2236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .926654 Tw (You can use all the usual units, cm, mm, inch, and % which means "percentage of the page \(excluding) Tj T* 0 Tw 1.408221 Tw (margins and headers or footers\)". Using % is probably the smartest for columns and gives you a fluid) Tj T* 0 Tw (layout, while the other units are better for more "fixed" elements.) Tj T* ET Q Q q 1 0 0 1 62.69291 147.2236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .830465 Tw (Since we can have more than one template, there is a way to specify which one we want to use, and a) Tj T* 0 Tw (way to change from one to another.) Tj T* ET Q Q q 1 0 0 1 62.69291 129.2236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To specify the first template, do it in your stylesheet, in pageSetup \(oneColumn is the default\):) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 82.69693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 15 Page Layout) Tj T* -82.69693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 39) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R348': class PDFStream 348 0 obj % page stream << /Length 4415 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 697.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL ("pageSetup" : {) Tj T* ( "firstTemplate": "oneColumn") Tj T* (}) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 677.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Then, to change to another template, in your document use this syntax \(will change soon, though\):) Tj T* ET Q Q q 1 0 0 1 62.69291 620.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q .960784 .960784 .862745 rg n 0 24.75 12 12 re f* .960784 .960784 .862745 rg n 18 24.75 18 12 re f* .960784 .960784 .862745 rg n 36 24.75 12 12 re f* BT 1 0 0 1 0 26 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj /F6 10 Tf .666667 .133333 1 rg (raw) Tj /F4 10 Tf 0 0 0 rg (::) Tj ( pdf) Tj T* T* ( PageBreak twoColumn) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 600.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (That will trigger a page break, and the new page will use the twoColumn template.) Tj T* ET Q Q q 1 0 0 1 62.69291 582.6236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can see an example of this in the ) Tj /F7 10 Tf (Montecristo ) Tj /F1 10 Tf (folder in the source package.) Tj T* ET Q Q q 1 0 0 1 62.69291 564.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The supported page template options and their defaults are:) Tj T* ET Q Q q 1 0 0 1 62.69291 558.6236 cm Q q 1 0 0 1 62.69291 558.6236 cm Q q 1 0 0 1 62.69291 546.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (showHeader : True) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 540.6236 cm Q q 1 0 0 1 62.69291 510.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (defaultHeader : None) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Has the same effect as the header directive in the document.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 504.6236 cm Q q 1 0 0 1 62.69291 492.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (showFooter : True) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 486.6236 cm Q q 1 0 0 1 62.69291 456.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (defaultFooter : None) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Has the same effect as the footer directive in the document.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 450.6236 cm Q q 1 0 0 1 62.69291 408.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 27 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 27 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (background: None) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .262339 Tw 12 TL /F1 10 Tf 0 0 0 rg (The background should be an image, which will be centered in your page or stretched to match your) Tj T* 0 Tw (page size, depending on the ) Tj /F4 10 Tf (--fit-background-mode ) Tj /F1 10 Tf (option, so use with caution.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 408.6236 cm Q q 1 0 0 1 62.69291 408.6236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 40) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 82.69693 0 Td (Section 15 Page Layout) Tj T* -82.69693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R349': class PDFStream 349 0 obj % page stream << /Length 4290 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (16 Smart Quotes) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Quoted from the ) Tj 0 0 .501961 rg (smartypants ) Tj 0 0 0 rg (documentation:) Tj T* ET Q Q q 1 0 0 1 62.69291 702.0236 cm Q q 1 0 0 1 62.69291 624.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 66 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This feature can perform the following transformations:) Tj T* ET Q Q q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 50 Tm /F1 10 Tf 12 TL 1.494985 Tw (Straight quotes \( " and ' \) into "curly" quote HTML entities Backticks-style quotes \(``like this''\) into) Tj T* 0 Tw .434651 Tw ("curly" quote HTML entities Dashes \(-- and ---\) into en- and em-dash entities Three consecutive dots) Tj T* 0 Tw .699989 Tw (\(... or . . .\) into an ellipsis entity This means you can write, edit, and save your posts using plain old) Tj T* 0 Tw .755318 Tw (ASCII straight quotes, plain dashes, and plain dots, but your published posts \(and final PDF output\)) Tj T* 0 Tw (will appear with smart quotes, em-dashes, and proper ellipses.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 624.0236 cm Q q 1 0 0 1 62.69291 594.0236 cm q BT 1 0 0 1 0 14 Tm 2.334651 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can enable this by passing the ) Tj /F4 10 Tf (--smart-quotes ) Tj /F1 10 Tf (option in the command line. By default, it's) Tj T* 0 Tw (disabled. Here are the different values you can use \(again, from the smartypants docs\):) Tj T* ET Q Q q 1 0 0 1 62.69291 588.0236 cm Q q 1 0 0 1 62.69291 432.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 144 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (0) Tj T* ET Q Q q 1 0 0 1 20 129 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Suppress all transformations. \(Do nothing.\)) Tj T* ET Q Q q Q Q q 1 0 0 1 20 113 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (1) Tj T* ET Q Q q 1 0 0 1 20 86 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .18622 Tw (Performs default SmartyPants transformations: quotes \(including ``backticks'' -style\), em-dashes,) Tj T* 0 Tw (and ellipses. "--" \(dash dash\) is used to signify an em-dash; there is no support for en-dashes.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 70 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (2) Tj T* ET Q Q q 1 0 0 1 20 43 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.026647 Tw (Same as smarty_pants="1", except that it uses the old-school typewriter shorthand for dashes:) Tj T* 0 Tw ("--" \(dash dash\) for en-dashes, "---" \(dash dash dash\) for em-dashes.) Tj T* ET Q Q q Q Q q 1 0 0 1 20 27 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (3) Tj T* ET Q Q q 1 0 0 1 20 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 4.55748 Tw (Same as smarty_pants="2", but inverts the shorthand for dashes: "--" \(dash dash\) for) Tj T* 0 Tw (em-dashes, and "---" \(dash dash dash\) for en-dashes.) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 432.0236 cm Q q 1 0 0 1 62.69291 402.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.277318 Tw (Currently, even if you enable it, this transformation will only take place in regular paragraphs, titles,) Tj T* 0 Tw (headers, footers and block quotes.) Tj T* ET Q Q q 1 0 0 1 62.69291 402.0236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 79.92693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 16 Smart Quotes) Tj T* -79.92693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 41) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R350': class PDFStream 350 0 obj % page stream << /Length 2756 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (17 Kerning) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .405868 Tw (Kerning is the process of adjusting letter spacing. It is usually accepted that kerning makes your text look) Tj T* 0 Tw (better.) Tj T* ET Q Q q 1 0 0 1 62.69291 678.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, if you are using proper kerning, the As and Ws in AWAWA will overlap slightly.) Tj T* ET Q Q q 1 0 0 1 62.69291 660.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you want kerning in your PDFs, you need to do the following:) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm Q q 1 0 0 1 62.69291 654.0236 cm Q q 1 0 0 1 62.69291 642.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Use wordaxe at least 1.0.0) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 636.0236 cm Q q 1 0 0 1 62.69291 624.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Use a TrueType font) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 618.0236 cm Q q 1 0 0 1 62.69291 594.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 14 Tm .530444 Tw 12 TL /F1 10 Tf 0 0 0 rg (Set kerning to true in your style. For example, if you want ) Tj /F3 10 Tf (all ) Tj /F1 10 Tf (text to be kerned, you can set it in the) Tj T* 0 Tw ("base" style.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 594.0236 cm Q q 1 0 0 1 62.69291 564.0236 cm q BT 1 0 0 1 0 14 Tm .15311 Tw 12 TL /F1 10 Tf 0 0 0 rg (For convenience, a stylesheet that uses DejaVu fonts with kerning is provided as kerning.json, so you can) Tj T* 0 Tw (copy and adapt to your needs, or just use it with the ) Tj /F4 10 Tf (-s ) Tj /F1 10 Tf (option.) Tj T* ET Q Q q 1 0 0 1 62.69291 564.0236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 42) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 93.54193 0 Td (Section 17 Kerning) Tj T* -93.54193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R351': class PDFStream 351 0 obj % page stream << /Length 4684 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (18 Sphinx) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Sphinx ) Tj 0 0 0 rg (is a very popular tool. This is the description from its website:) Tj T* ET Q Q q 1 0 0 1 62.69291 702.0236 cm Q q 1 0 0 1 62.69291 648.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 30 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .29186 Tw (Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg) Tj T* 0 Tw (Brandl and licensed under the BSD license.) Tj T* ET Q Q q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .755984 Tw (It was originally created to translate the new Python documentation, and it has excellent support for) Tj T* 0 Tw (the documentation of Python projects, but other documents can be written with it too.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 648.0236 cm Q q 1 0 0 1 62.69291 630.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Rst2pdf includes an experimental PDF extension for sphinx.) Tj T* ET Q Q q 1 0 0 1 62.69291 612.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To use it in your existing sphinx project you need to do the following:) Tj T* ET Q Q q 1 0 0 1 62.69291 606.0236 cm Q q 1 0 0 1 62.69291 606.0236 cm Q q 1 0 0 1 62.69291 560.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 30.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 30.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Add rst2pdf.pdfbuilder in your conf.py's extensions. For example:) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 445.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (extensions = ['sphinx.ext.autodoc','rst2pdf.pdfbuilder']) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 62.69291 554.8236 cm Q q 1 0 0 1 62.69291 76.86614 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 462.9575 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 462.9575 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Add the PDF options at the end of conf.py, adapted to your project:) Tj T* ET Q Q q 1 0 0 1 23 30.35648 cm q q .928699 0 0 .928699 0 0 cm q 1 0 0 1 6.6 7.106719 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 480 456 re B* Q q 0 0 0 rg BT 1 0 0 1 0 434 Tm /F4 10 Tf 12 TL (# -- Options for PDF output --------------------------------------------------) Tj T* T* (# Grouping the document tree into PDF files. List of tuples) Tj T* (# \(source start file, target name, title, author, options\).) Tj T* (#) Tj T* (# If there is more than one author, separate them with \\\\.) Tj T* (# For example: r'Guido van Rossum\\\\Fred L. Drake, Jr., editor') Tj T* (#) Tj T* (# The options element is a dictionary that lets you override) Tj T* (# this config per-document.) Tj T* (# For example,) Tj T* (# \('index', u'MyProject', u'My Project', u'Author Name',) Tj T* (# dict\(pdf_compressed = True\)\)) Tj T* (# would mean that specific document would be compressed) Tj T* (# regardless of the global pdf_compressed setting.) Tj T* T* (pdf_documents = [) Tj T* ( \('index', u'MyProject', u'My Project', u'Author Name'\),) Tj T* (]) Tj T* T* (# A comma-separated list of custom stylesheets. Example:) Tj T* (pdf_stylesheets = ['sphinx','kerning','a4']) Tj T* T* (# A list of folders to search for stylesheets. Example:) Tj T* (pdf_style_path = ['.', '_styles']) Tj T* T* (# Create a compressed PDF) Tj T* (# Use True/False or 1/0) Tj T* (# Example: compressed=True) Tj T* (#pdf_compressed = False) Tj T* T* (# A colon-separated list of folders to search for fonts. Example:) Tj T* (# pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/']) Tj T* T* (# Language to be used for hyphenation support) Tj T* (#pdf_language = "en_US") Tj T* T* ET Q Q Q Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 95.48693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 18 Sphinx) Tj T* -95.48693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 43) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R352': class PDFStream 352 0 obj % page stream << /Length 2596 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 76.86614 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 657.1575 Tm T* ET q 1 0 0 1 23 5.95748 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 660 re B* Q q 0 0 0 rg BT 1 0 0 1 0 638 Tm /F4 10 Tf 12 TL (# Mode for literal blocks wider than the frame. Can be) Tj T* (# overflow, shrink or truncate) Tj T* (#pdf_fit_mode = "shrink") Tj T* T* (# Section level that forces a break page.) Tj T* (# For example: 1 means top-level sections start in a new page) Tj T* (# 0 means disabled) Tj T* (#pdf_break_level = 0) Tj T* T* (# When a section starts in a new page, force it to be 'even', 'odd',) Tj T* (# or just use 'any') Tj T* (#pdf_breakside = 'any') Tj T* T* (# Insert footnotes where they are defined instead of) Tj T* (# at the end.) Tj T* (#pdf_inline_footnotes = True) Tj T* T* (# verbosity level. 0 1 or 2) Tj T* (#pdf_verbosity = 0) Tj T* T* (# If false, no index is generated.) Tj T* (#pdf_use_index = True) Tj T* T* (# If false, no modindex is generated.) Tj T* (#pdf_use_modindex = True) Tj T* T* (# If false, no coverpage is generated.) Tj T* (#pdf_use_coverpage = True) Tj T* T* (# Name of the cover page template to use) Tj T* (#pdf_cover_template = 'sphinxcover.tmpl') Tj T* T* (# Documents to append as an appendix to all manuals.) Tj T* (#pdf_appendices = []) Tj T* T* (# Enable experimental feature to split table cells. Use it) Tj T* (# if you get "DelayedTable too big" errors) Tj T* (#pdf_splittables = False) Tj T* T* (# Set the default DPI for images) Tj T* (#pdf_default_dpi = 72) Tj T* T* (# Enable rst2pdf extension modules \(default is only vectorpdf\)) Tj T* (# you need vectorpdf if you want to use sphinx's graphviz support) Tj T* (#pdf_extensions = ['vectorpdf']) Tj T* T* (# Page template name for "regular" pages) Tj T* (#pdf_page_template = 'cutePage') Tj T* T* (# Show Table Of Contents at the beginning?) Tj T* (#pdf_use_toc = True) Tj T* T* (# How many levels deep should the table of contents be?) Tj T* (pdf_toc_depth = 9999) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 44) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 95.48693 0 Td (Section 18 Sphinx) Tj T* -95.48693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R353': class PDFStream 353 0 obj % page stream << /Length 5167 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 661.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 72.2 Tm T* ET q 1 0 0 1 23 -3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 442.6898 84 re B* Q q 0 0 0 rg BT 1 0 0 1 0 62 Tm /F4 10 Tf 12 TL T* (# Add section number to section references) Tj T* (pdf_use_numbered_links = False) Tj T* T* (# Background images fitting mode) Tj T* (pdf_fit_background_mode = 'scale') Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 62.69291 655.8236 cm Q q 1 0 0 1 62.69291 576.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 64.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 64.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (\(Maybe\) add this in your Makefile \(on unix-like systems\):) Tj T* ET Q Q q 1 0 0 1 23 58.2 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 425.6898 60 re B* Q q .960784 .960784 .862745 rg n 0 36.75 18 12 re f* .960784 .960784 .862745 rg n 18 36.75 6 12 re f* .960784 .960784 .862745 rg n 24 24.75 12 12 re f* .960784 .960784 .862745 rg n 102 24.75 6 12 re f* .960784 .960784 .862745 rg n 156 24.75 12 12 re f* .960784 .960784 .862745 rg n 246 24.75 6 12 re f* .960784 .960784 .862745 rg n 60 .75 300 12 re f* BT 1 0 0 1 0 38 Tm 12 TL /F4 10 Tf 0 0 1 rg (pdf) Tj .4 .4 .4 rg (:) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf 0 .501961 0 rg ($\() Tj /F4 10 Tf 0 0 0 rg (SPHINXBUILD) Tj /F6 10 Tf 0 .501961 0 rg (\)) Tj /F4 10 Tf 0 0 0 rg ( -b pdf ) Tj /F6 10 Tf 0 .501961 0 rg ($\() Tj /F4 10 Tf 0 0 0 rg (ALLSPHINXOPTS) Tj /F6 10 Tf 0 .501961 0 rg (\)) Tj /F4 10 Tf 0 0 0 rg ( _build/pdf) Tj T* ( @echo) Tj T* ( @echo ) Tj .729412 .129412 .129412 rg ("Build finished. The PDF files are in _build/pdf.") Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 570.6236 cm Q q 1 0 0 1 62.69291 467.4236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 88.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 88.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (\(Maybe\) add this to your make.bat \(on windows\):) Tj T* ET Q Q q 1 0 0 1 23 82.2 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 425.6898 84 re B* Q q .960784 .960784 .862745 rg n 0 60.75 12 12 re f* .960784 .960784 .862745 rg n 18 60.75 24 12 re f* .960784 .960784 .862745 rg n 48 60.75 12 12 re f* .960784 .960784 .862745 rg n 66 60.75 30 12 re f* .960784 .960784 .862745 rg n 24 48.75 78 12 re f* .960784 .960784 .862745 rg n 150 48.75 90 12 re f* .960784 .960784 .862745 rg n 246 48.75 60 12 re f* .960784 .960784 .862745 rg n 306 48.75 24 12 re f* .960784 .960784 .862745 rg n 24 36.75 24 12 re f* .960784 .960784 .862745 rg n 24 24.75 24 12 re f* .960784 .960784 .862745 rg n 276 24.75 60 12 re f* .960784 .960784 .862745 rg n 336 24.75 24 12 re f* .960784 .960784 .862745 rg n 24 12.75 24 12 re f* .960784 .960784 .862745 rg n 54 12.75 18 12 re f* BT 1 0 0 1 0 62 Tm 12 TL /F6 10 Tf 0 .501961 0 rg (if) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ("%1") Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (==) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ("pdf") Tj 0 0 0 rg ( \() Tj T* ( ) Tj .098039 .090196 .486275 rg (%SPHINXBUILD%) Tj 0 0 0 rg ( -b pdf ) Tj .098039 .090196 .486275 rg (%ALLSPHINXOPTS%) Tj 0 0 0 rg ( ) Tj .098039 .090196 .486275 rg (%BUILDDIR%) Tj 0 0 0 rg (/pdf) Tj T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (echo) Tj /F4 10 Tf 0 0 0 rg (.) Tj T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (echo) Tj /F4 10 Tf 0 0 0 rg (.Build finished. The PDF files are in ) Tj .098039 .090196 .486275 rg (%BUILDDIR%) Tj 0 0 0 rg (/pdf) Tj T* ( ) Tj /F6 10 Tf 0 .501961 0 rg (goto) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .627451 .627451 0 rg (end) Tj 0 0 0 rg T* (\)) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 467.4236 cm Q q 1 0 0 1 62.69291 449.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Then you can run ) Tj /F4 10 Tf (make) Tj ( ) Tj (pdf ) Tj /F1 10 Tf (or ) Tj /F4 10 Tf (sphinx-build) Tj ( ) Tj (-b) Tj ( ) Tj (pdf) Tj ( ) Tj (... ) Tj /F1 10 Tf (similar to how you did it before.) Tj T* ET Q Q q 1 0 0 1 62.69291 449.4236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 95.48693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 18 Sphinx) Tj T* -95.48693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 45) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R354': class PDFStream 354 0 obj % page stream << /Length 7145 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (19 Extensions) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 14 Tm .680651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Rst2pdf can get new features from ) Tj /F7 10 Tf (extensions) Tj /F1 10 Tf (. Extensions are python modules that can be enabled with) Tj T* 0 Tw (the -e option.) Tj T* ET Q Q q 1 0 0 1 62.69291 678.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Several are included with rst2pdf.) Tj T* ET Q Q q 1 0 0 1 62.69291 648.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (19.1 Preprocess \() Tj /F6 15 Tf (-e) Tj ( ) Tj (preprocess) Tj /F3 15 Tf (\)) Tj T* ET Q Q q 1 0 0 1 62.69291 630.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (preprocess is a rst2pdf extension module \(invoked by -e preprocess on the rst2pdf command line.) Tj T* ET Q Q q 1 0 0 1 62.69291 612.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (There is a testcase for this file at rst2pdf/tests/test_preprocess.txt) Tj T* ET Q Q q 1 0 0 1 62.69291 594.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This preprocesses the source text file before handing it to docutils.) Tj T* ET Q Q q 1 0 0 1 62.69291 576.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This module serves two purposes:) Tj T* ET Q Q q 1 0 0 1 62.69291 570.0236 cm Q q 1 0 0 1 62.69291 570.0236 cm Q q 1 0 0 1 62.69291 546.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 3.25152 Tw (It demonstrates the technique and can be a starting point for similar user-written processing) Tj T* 0 Tw (modules; and) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 540.0236 cm Q q 1 0 0 1 62.69291 516.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .594651 Tw (It provides a simplified syntax for documents which are targeted only at rst2pdf, rather than docutils) Tj T* 0 Tw (in general.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 516.0236 cm Q q 1 0 0 1 62.69291 486.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .082209 Tw (The design goal of "base rst2pdf" is to be completely compatible with docutils, such that a file which works) Tj T* 0 Tw (as a PDF can also work as HTML, etc.) Tj T* ET Q Q q 1 0 0 1 62.69291 444.0236 cm q BT 1 0 0 1 0 26 Tm 1.387318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Unfortunately, base docutils is a slow-moving target, and does not make this easy. For example, SVG) Tj T* 0 Tw 1.779398 Tw (images do not work properly with the HTML backend unless you install a patch, and docutils has no) Tj T* 0 Tw (concept of page breaks or additional vertical space \(other than the <) Tj (hr) Tj (>) Tj (\).) Tj T* ET Q Q q 1 0 0 1 62.69291 402.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .625777 Tw (So, while it would be nice to have documents that render perfectly with any backend, this goal is hard to) Tj T* 0 Tw 1.311984 Tw (achieve for some documents, and once you are restricted to a particular transformation type, then you) Tj T* 0 Tw (might as well have a slightly nicer syntax for your source document.) Tj T* ET Q Q q 1 0 0 1 62.69291 373.6772 cm n 0 14.17323 m 469.8898 14.17323 l S Q q 1 0 0 1 62.69291 355.6772 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Preprocessor extensions:) Tj T* ET Q Q q 1 0 0 1 62.69291 337.6772 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (All current extensions except style occupy a single line in the source file.) Tj T* ET Q Q q 1 0 0 1 62.69291 319.6772 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj (include::) Tj T* ET Q Q q 1 0 0 1 62.69291 313.6772 cm Q q 1 0 0 1 62.69291 277.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .159988 Tw (Processes the include file as well. An include file may either be a restructured text file, OR may be an) Tj T* 0 Tw .102619 Tw (RSON or JSON stylesheet. The determination is made by trying to parse it as RSON. If it passes, it is) Tj T* 0 Tw (a stylesheet; if not, well, we'll let the docutils parser have its way with it.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 277.6772 cm Q q 1 0 0 1 62.69291 259.6772 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj (page::) Tj T* ET Q Q q 1 0 0 1 62.69291 253.6772 cm Q q 1 0 0 1 62.69291 241.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Is translated into a raw PageBreak.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 241.6772 cm Q q 1 0 0 1 62.69291 223.6772 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj (space::) Tj T* ET Q Q q 1 0 0 1 62.69291 217.6772 cm Q q 1 0 0 1 62.69291 193.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.835542 Tw (Is translated into a raw Spacer. If only one number given, is used for vertical space. This is the) Tj T* 0 Tw (canonical use case, since horizontal space is ignored anyway!) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 193.6772 cm Q q 1 0 0 1 62.69291 175.6772 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj (style::) Tj T* ET Q Q q 1 0 0 1 62.69291 169.6772 cm Q q 1 0 0 1 62.69291 145.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.173828 Tw (Allows you to create in-line stylesheets. As with other restructured text components, the stylesheet) Tj T* 0 Tw (data must be indented. Stylesheets are in RSON or JSON.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 145.6772 cm Q q 1 0 0 1 62.69291 127.6772 cm q BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (..) Tj ( ) Tj (widths::) Tj T* ET Q Q q 1 0 0 1 62.69291 121.6772 cm Q q 1 0 0 1 62.69291 76.86614 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .962339 Tw (creates a new table style \(based on table or the first non-numeric token\) and creates a class using) Tj T* 0 Tw .785542 Tw (that style specifically for the next table in the document. \(Creates a .. class::, so you must specify ..) Tj T* 0 Tw ET Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 46) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 86.31693 0 Td (Section 19 Extensions) Tj T* -86.31693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R355': class PDFStream 355 0 obj % page stream << /Length 6617 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 723.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.223516 Tw (widths:: immediately before the table it applies to. Allows you to set the widths for the table, using) Tj T* 0 Tw (percentages.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 723.0236 cm Q q 1 0 0 1 62.69291 705.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (SingleWordAtLeftColumn) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm Q q 1 0 0 1 62.69291 651.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .734692 Tw (If a single word at the left column is surrounded by blank lines, the singleword style is automatically) Tj T* 0 Tw 1.201318 Tw (applied to the word. This is a workaround for the broken interaction between docutils subtitles and) Tj T* 0 Tw .73284 Tw (bibliographic metadata. \(I found that docutils was referencing my subtitles from inside the TOC, and) Tj T* 0 Tw (that seemed silly. Perhaps there is a better workaround at a lower level in rst2pdf.\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 651.0236 cm Q q 1 0 0 1 62.69291 622.6772 cm n 0 14.17323 m 469.8898 14.17323 l S Q q 1 0 0 1 62.69291 604.6772 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Preprocessor operation:) Tj T* ET Q Q q 1 0 0 1 62.69291 574.6772 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .08311 Tw (The preprocessor generates a file that has the same name as the source file, with .build_temp. embedded) Tj T* 0 Tw (in the name, and then passes that file to the restructured text parser.) Tj T* ET Q Q q 1 0 0 1 62.69291 532.6772 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.527765 Tw (This file is left on the disk after operation, because any error messages from docutils will refer to line) Tj T* 0 Tw 3.47881 Tw (numbers in it, rather than in the original source, so debugging could be difficult if the file were) Tj T* 0 Tw (automatically removed.) Tj T* ET Q Q q 1 0 0 1 62.69291 502.6772 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (19.2 Inkscape \() Tj /F6 15 Tf (-e) Tj ( ) Tj (inkscape) Tj /F3 15 Tf (\)) Tj T* ET Q Q q 1 0 0 1 62.69291 472.6772 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .609984 Tw (inkscape.py is an rst2pdf extension \(e.g. rst2pdf -e inkscape xxx xxxx\) which uses the inkscape program) Tj T* 0 Tw (to convert an svg to a PDF, then uses the vectorpdf code to process the PDF.) Tj T* ET Q Q q 1 0 0 1 62.69291 460.6772 cm Q q 1 0 0 1 62.69291 377.6772 cm .960784 .960784 .862745 rg n 0 83 469.8898 -83 re f* 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 57 Tm T* ET q 1 0 0 1 16 52 cm q 0 0 0 rg BT 1 0 0 1 0 2.5 Tm /F8 12.5 Tf 15 TL (Note) Tj T* ET Q Q q 1 0 0 1 16 16 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .339986 Tw (The initial version is a proof of concept; uses subprocess in a naive way, and doesn't check return) Tj T* 0 Tw (from inkscape for errors.) Tj T* ET Q Q q 1 J 1 j .662745 .662745 .662745 RG .5 w n 0 83 m 469.8898 83 l S n 0 0 m 469.8898 0 l S n 0 0 m 0 83 l S n 469.8898 0 m 469.8898 83 l S Q Q q 1 0 0 1 62.69291 371.6772 cm Q q 1 0 0 1 62.69291 341.6772 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (19.3 Dotted_TOC \() Tj /F6 15 Tf (-e) Tj ( ) Tj (dotted_toc) Tj /F3 15 Tf (\)) Tj T* ET Q Q q 1 0 0 1 62.69291 311.6772 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.781163 Tw (All I did was take the wrap\(\) method from the stock reportlab TOC generator, and make the minimal) Tj T* 0 Tw (changes to make it work on MY documents in rst2pdf.) Tj T* ET Q Q q 1 0 0 1 62.69291 284.6772 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (19.3.1 History:) Tj T* ET Q Q q 1 0 0 1 62.69291 254.6772 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.50561 Tw (The reportlab TOC generator adds nice dots between the text and the page number. The rst2pdf one) Tj T* 0 Tw (does not.) Tj T* ET Q Q q 1 0 0 1 62.69291 212.6772 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.206412 Tw (A closer examination reveals that the rst2pdf one probably deliberately stripped this code, because the) Tj T* 0 Tw 1.201984 Tw (reportlab implementation only allowed a single TOC, and this is unacceptable for at least some rst2pdf) Tj T* 0 Tw (users.) Tj T* ET Q Q q 1 0 0 1 62.69291 170.6772 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .436303 Tw (There are other differences in the rst2pdf one I don't understand. This module is a hack to add back dots) Tj T* 0 Tw .035444 Tw (between the lines. Maybe at some point we can figure out if this is right, or how to support dots in the TOC) Tj T* 0 Tw (in the main code.) Tj T* ET Q Q q 1 0 0 1 62.69291 152.6772 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Mind you, the original RL implementation is a complete hack in any case:) Tj T* ET Q Q q 1 0 0 1 62.69291 146.6772 cm Q q 1 0 0 1 62.69291 146.6772 cm Q q 1 0 0 1 62.69291 107.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 24 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 24 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (It uses a callback to a nested function which doesn't even bother to) Tj T* ET Q Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .107485 Tw (assume the original enclosing scope is available at callback time. This leads it to do crazy things) Tj T* 0 Tw (like eval\(\)) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 101.6772 cm Q q 1 0 0 1 62.69291 89.67717 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (It uses a single name in the canvas for the callback function) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 56.30693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 19.2 Inkscape \(-e) Tj ( ) Tj (inkscape\)) Tj T* -56.30693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 47) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R356': class PDFStream 356 0 obj % page stream << /Length 983 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 720.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 6 14 Tm T* ET q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 14 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .247485 Tw (\(this is what kills multiple TOC capability\) when it would be extremely easy to generate a unique) Tj T* 0 Tw (name.) Tj T* ET Q Q q Q Q q Q Q q 1 0 0 1 62.69291 720.0236 cm Q q 1 0 0 1 62.69291 720.0236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 48) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 56.30693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 19.2 Inkscape \(-e) Tj ( ) Tj (inkscape\)) Tj T* -56.30693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R357': class PDFStream 357 0 obj % page stream << /Length 9037 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (20 Developers) Tj T* ET Q Q q 1 0 0 1 62.69291 696.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (20.1 Guidelines) Tj T* ET Q Q q 1 0 0 1 62.69291 654.0236 cm q BT 1 0 0 1 0 26 Tm .890514 Tw 12 TL /F1 10 Tf 0 0 0 rg (In rst2pdf we want many things. We want ponies and icecream. But most of all, we want rst2pdf to kick) Tj T* 0 Tw .427988 Tw (ass. The best way to achieve that is making rst2pdf work right. The best way to do ) Tj /F7 10 Tf (that ) Tj /F1 10 Tf (is through testing) Tj T* 0 Tw (and documenting.) Tj T* ET Q Q q 1 0 0 1 62.69291 636.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (So, if you want to do something inside rst2pdf, you are welcome, but...) Tj T* ET Q Q q 1 0 0 1 62.69291 630.0236 cm Q q 1 0 0 1 62.69291 630.0236 cm Q q 1 0 0 1 62.69291 618.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Create an Issue for the task. That's easy, just go to ) Tj 0 0 .501961 rg (http://rst2pdf.googlecode.com ) Tj 0 0 0 rg (and do it.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 612.0236 cm Q q 1 0 0 1 62.69291 323.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 273.4 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 273.4 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you intend to fix a bug:) Tj T* ET Q Q q 1 0 0 1 23 267.4 cm Q q 1 0 0 1 23 267.4 cm Q q 1 0 0 1 23 255.4 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Create a ) Tj /F3 10 Tf (minimal ) Tj /F1 10 Tf (test case that shows the bug.) Tj T* ET Q Q q Q Q q 1 0 0 1 23 249.4 cm Q q 1 0 0 1 23 183.4 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 51 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 51 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Put it inside rst2pdf/tests/input like the others:) Tj T* ET Q Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 45 cm Q q 1 0 0 1 23 33 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (mytest.txt is the test itself) Tj T* ET Q Q q Q Q q 1 0 0 1 23 27 cm Q q 1 0 0 1 23 15 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (mytest.cli is any needed command line arguments \(if needed\)) Tj T* ET Q Q q Q Q q 1 0 0 1 23 9 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (mytest.style is a custom stylesheet \(if needed\)) Tj T* ET Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 23 177.4 cm Q q 1 0 0 1 23 120.2 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 42.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 42.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Run the test suite on it:) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 422.6898 36 re B* Q q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (cd rst2pdf/tests) Tj T* (./autotest.py input/mytest.txt) Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 23 114.2 cm Q q 1 0 0 1 23 84.2 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 15 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Check the output:) Tj T* ET Q Q q 1 0 0 1 23 9 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET q 1 0 0 1 20 0 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (less output/mytest.log acroread output/mytest.pdf) Tj T* ET Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 23 78.2 cm Q q 1 0 0 1 23 -3 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 66.2 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 66.2 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If it's really a bug, mark the test as ) Tj /F7 10 Tf (bad ) Tj /F1 10 Tf (and save everything in SVN:) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 422.6898 60 re B* Q q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F4 10 Tf 12 TL (setmd5 bad input/mytest.txt) Tj T* (svn add input/mytest.*) Tj T* (svn add md5/mytest.json) Tj T* (svn commit -m "Test case for Issue X") Tj T* ET Q Q Q Q Q q Q Q q 1 0 0 1 23 -3 cm Q q Q Q q 1 0 0 1 62.69291 317.6236 cm Q q 1 0 0 1 62.69291 275.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 27 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 15 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .484651 Tw (Always, when committing something, check for regressions running the full test suite, it takes only a) Tj T* 0 Tw (minute or two. Keep in mind that regressions can be trivial!) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example, if you change the spacing of definition lists, 3 or 4 tests will regress.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 269.6236 cm Q q 1 0 0 1 62.69291 245.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .092209 Tw (Keep your Issues updated. If you are working on frobnozzing the gargles, then by all means post it in) Tj T* 0 Tw (the issue. There's no issue about it? You were meant to create one, remember? ;-\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 239.6236 cm Q q 1 0 0 1 62.69291 197.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 27 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 15 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .981163 Tw (If you added a command line option, document it in doc/rst2pdf.txt. That will make it appear in the) Tj T* 0 Tw (manual and in the man page.) Tj T* ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Maybe it should also be available for sphinx users, let me know about it.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 191.6236 cm Q q 1 0 0 1 62.69291 167.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .339431 Tw (If you implemented a new feature, please document it in manual.txt \(or in a separate file and add an) Tj T* 0 Tw (include in manual.txt\)) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 161.6236 cm Q q 1 0 0 1 62.69291 137.6236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 9 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET Q Q q 1 0 0 1 23 -3 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.07811 Tw (If you implement an extension, make the docstring valid restructured text and link it to the manual) Tj T* 0 Tw (like the others.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 137.6236 cm Q q 1 0 0 1 62.69291 119.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Why should you bother with all this?) Tj T* ET Q Q q 1 0 0 1 62.69291 89.62362 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .326807 Tw (It's important that you do it this way because it means that the rest of us know what you are doing. It also) Tj T* 0 Tw (means you don't break rst2pdf.) Tj T* ET Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 85.48693 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 20 Developers) Tj T* -85.48693 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 49) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R358': class PDFStream 358 0 obj % page stream << /Length 2988 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (20.2 Continuous Integration) Tj T* ET Q Q q 1 0 0 1 62.69291 699.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .481098 Tw (rst2pdf has a semi-public CI server running Hudson. What's CI? It's a server running the test suite all the) Tj T* 0 Tw (time. That means that if a commit breaks something, we can find out about it.) Tj T* ET Q Q q 1 0 0 1 62.69291 657.0236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 1.333735 Tw (And yes, you are supposed to check for regressions yourself, but will you test against ReportLab 2.3?) Tj T* 0 Tw .815542 Tw (How about Python 2.4? Hudson allows us to have all those builds \(and more\) running every day, so we) Tj T* 0 Tw (know it doesn't break for anyone else.) Tj T* ET Q Q q 1 0 0 1 62.69291 639.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Or at least, we hope so, this is a work in progress ;-\)) Tj T* ET Q Q q 1 0 0 1 62.69291 609.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (20.3 Running tests) Tj T* ET Q Q q 1 0 0 1 62.69291 582.0236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (20.3.1 first run) Tj T* ET Q Q q 1 0 0 1 62.69291 564.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (while in project:) Tj T* ET Q Q q 1 0 0 1 62.69291 506.8236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 48 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (python bootstrap.py) Tj T* (./bin/buildout) Tj T* (./bin/nosetests -i regulartest -i sphinxtest) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 479.8236 cm q BT 1 0 0 1 0 2.5 Tm 15 TL /F8 12.5 Tf 0 0 0 rg (20.3.2 next runs) Tj T* ET Q Q q 1 0 0 1 62.69291 461.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (while in project:) Tj T* ET Q Q q 1 0 0 1 62.69291 428.6236 cm q q 1 0 0 1 0 0 cm q 1 0 0 1 6.6 6.6 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 468.6898 24 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (./bin/nosetests -i regulartest -i sphinxtest) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 398.6236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (20.4 Getting commit rights) Tj T* ET Q Q q 1 0 0 1 62.69291 380.6236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Just ask in the mailing list.) Tj T* ET Q Q q 1 0 0 1 62.69291 380.6236 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 50) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 56.29693 0 Td (Section 20.2 Continuous Integration) Tj T* -56.29693 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R359': class PDFStream 359 0 obj % page stream << /Length 4577 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 726.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (21 Licenses) Tj T* ET Q Q q 1 0 0 1 62.69291 708.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (This is the license for rst2pdf:) Tj T* ET Q Q q 1 0 0 1 62.69291 425.9213 cm q q .988825 0 0 .988825 0 0 cm q 1 0 0 1 6.6 6.674587 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 474 276 re B* Q q 0 0 0 rg BT 1 0 0 1 0 254 Tm /F4 10 Tf 12 TL (Copyright \(c\) 2007,2008,2009 Roberto Alsina) Tj T* (Nicolas Laurance, Christoph Zwerschke, Yasushi Masuda, Josh VanderLinden,) Tj T* (Patrick Maupin.) Tj T* T* T* (Permission is hereby granted, free of charge, to any person obtaining a copy) Tj T* (of this software and associated documentation files \(the "Software"\), to deal) Tj T* (in the Software without restriction, including without limitation the rights) Tj T* (to use, copy, modify, merge, publish, distribute, sublicense, and/or sell) Tj T* (copies of the Software, and to permit persons to whom the Software is) Tj T* (furnished to do so, subject to the following conditions:) Tj T* T* (The above copyright notice and this permission notice shall be included in) Tj T* (all copies or substantial portions of the Software.) Tj T* T* (THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR) Tj T* (IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,) Tj T* (FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE) Tj T* (AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER) Tj T* (LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,) Tj T* (OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN) Tj T* (THE SOFTWARE.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 405.9213 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Some fragments of rstpdf are copied from ReportLab under the following license:) Tj T* ET Q Q q 1 0 0 1 62.69291 128.9712 cm q q .858717 0 0 .858717 0 0 cm q 1 0 0 1 6.6 7.685888 cm q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg n -6 -6 546 312 re B* Q q 0 0 0 rg BT 1 0 0 1 0 290 Tm /F4 10 Tf 12 TL (Copyright \(c\) 2000-2008, ReportLab Inc.) Tj T* (All rights reserved.) Tj T* T* (Redistribution and use in source and binary forms, with or without modification,) Tj T* (are permitted provided that the following conditions are met:) Tj T* T* ( * Redistributions of source code must retain the above copyright notice,) Tj T* ( this list of conditions and the following disclaimer.) Tj T* ( * Redistributions in binary form must reproduce the above copyright notice,) Tj T* ( this list of conditions and the following disclaimer in the documentation) Tj T* ( and/or other materials provided with the distribution.) Tj T* ( * Neither the name of the company nor the names of its contributors may be) Tj T* ( used to endorse or promote products derived from this software without) Tj T* ( specific prior written permission.) Tj T* T* (THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND) Tj T* (ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED) Tj T* (WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.) Tj T* (IN NO EVENT SHALL THE OFFICERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,) Tj T* (INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES \(INCLUDING, BUT NOT LIMITED) Tj T* (TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;) Tj T* (OR BUSINESS INTERRUPTION\) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER) Tj T* (IN CONTRACT, STRICT LIABILITY, OR TORT \(INCLUDING NEGLIGENCE OR OTHERWISE\) ARISING) Tj T* (IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF) Tj T* (SUCH DAMAGE.) Tj T* ET Q Q Q Q Q q 1 0 0 1 62.69291 76.86614 cm Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 102.378 3 cm q BT 1 0 0 1 0 2 Tm 91.04193 0 Td 12 TL /F1 10 Tf 0 0 0 rg (Section 21 Licenses) Tj T* -91.04193 0 Td ET Q Q q 1 0 0 1 391.5118 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 47.12795 0 Td (Page 51) Tj T* -47.12795 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R360': class PDFStream 360 0 obj % page stream << /Length 1877 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 718.6772 cm n 0 14.17323 m 469.8898 14.17323 l S Q q 1 0 0 1 62.69291 682.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 24 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (1) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 26 Tm .242039 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (/etc/rst2pdf.conf ) Tj /F1 10 Tf (location makes sense for Linux and linux-like systems. if) Tj T* 0 Tw 1.771457 Tw (you are using rst2pdf in other systems, please contact me and tell me where the) Tj T* 0 Tw (system-wide config file should be.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 658.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 12 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 14 Tm 5.370039 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can get Wordaxe from ) Tj 0 0 .501961 rg (http://deco-cow.sf.net) Tj 0 0 0 rg (. Version 1.0.0 or later is) Tj T* 0 Tw (recommended.) Tj T* ET Q Q q Q Q q 1 0 0 1 62.69291 634.6772 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 12 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3) Tj T* ET Q Q q 1 0 0 1 91.03937 0 cm q BT 1 0 0 1 0 14 Tm 13.59255 Tw 12 TL /F1 10 Tf 0 0 0 rg (For more information, please check the PyHyphen website at) Tj T* 0 Tw 0 0 .501961 rg (http://pyhyphen.googlecode.com) Tj T* ET Q Q q Q Q q 1 0 0 1 56.69291 767.1969 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 0 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Page 52) Tj T* ET Q Q q 1 0 0 1 102.378 3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 91.04193 0 Td (Section 21 Licenses) Tj T* -91.04193 0 Td ET Q Q q Q Q q Q Q q Q Q endstream endobj % 'R361': class PDFPageLabels 361 0 obj % Document Root << /Nums [ 0 362 0 R 1 363 0 R 2 364 0 R 3 365 0 R 4 366 0 R 5 367 0 R 6 368 0 R 7 369 0 R 8 370 0 R 9 371 0 R 10 372 0 R 11 373 0 R 12 374 0 R 13 375 0 R 14 376 0 R 15 377 0 R 16 378 0 R 17 379 0 R 18 380 0 R 19 381 0 R 20 382 0 R 21 383 0 R 22 384 0 R 23 385 0 R 24 386 0 R 25 387 0 R 26 388 0 R 27 389 0 R 28 390 0 R 29 391 0 R 30 392 0 R 31 393 0 R 32 394 0 R 33 395 0 R 34 396 0 R 35 397 0 R 36 398 0 R 37 399 0 R 38 400 0 R 39 401 0 R 40 402 0 R 41 403 0 R 42 404 0 R 43 405 0 R 44 406 0 R 45 407 0 R 46 408 0 R 47 409 0 R 48 410 0 R 49 411 0 R 50 412 0 R 51 413 0 R ] >> endobj % 'R362': class PDFPageLabel 362 0 obj % None << /S /D /St 1 >> endobj % 'R363': class PDFPageLabel 363 0 obj % None << /S /D /St 2 >> endobj % 'R364': class PDFPageLabel 364 0 obj % None << /S /D /St 3 >> endobj % 'R365': class PDFPageLabel 365 0 obj % None << /S /D /St 4 >> endobj % 'R366': class PDFPageLabel 366 0 obj % None << /S /D /St 5 >> endobj % 'R367': class PDFPageLabel 367 0 obj % None << /S /D /St 6 >> endobj % 'R368': class PDFPageLabel 368 0 obj % None << /S /D /St 7 >> endobj % 'R369': class PDFPageLabel 369 0 obj % None << /S /D /St 8 >> endobj % 'R370': class PDFPageLabel 370 0 obj % None << /S /D /St 9 >> endobj % 'R371': class PDFPageLabel 371 0 obj % None << /S /D /St 10 >> endobj % 'R372': class PDFPageLabel 372 0 obj % None << /S /D /St 11 >> endobj % 'R373': class PDFPageLabel 373 0 obj % None << /S /D /St 12 >> endobj % 'R374': class PDFPageLabel 374 0 obj % None << /S /D /St 13 >> endobj % 'R375': class PDFPageLabel 375 0 obj % None << /S /D /St 14 >> endobj % 'R376': class PDFPageLabel 376 0 obj % None << /S /D /St 15 >> endobj % 'R377': class PDFPageLabel 377 0 obj % None << /S /D /St 16 >> endobj % 'R378': class PDFPageLabel 378 0 obj % None << /S /D /St 17 >> endobj % 'R379': class PDFPageLabel 379 0 obj % None << /S /D /St 18 >> endobj % 'R380': class PDFPageLabel 380 0 obj % None << /S /D /St 19 >> endobj % 'R381': class PDFPageLabel 381 0 obj % None << /S /D /St 20 >> endobj % 'R382': class PDFPageLabel 382 0 obj % None << /S /D /St 21 >> endobj % 'R383': class PDFPageLabel 383 0 obj % None << /S /D /St 22 >> endobj % 'R384': class PDFPageLabel 384 0 obj % None << /S /D /St 23 >> endobj % 'R385': class PDFPageLabel 385 0 obj % None << /S /D /St 24 >> endobj % 'R386': class PDFPageLabel 386 0 obj % None << /S /D /St 25 >> endobj % 'R387': class PDFPageLabel 387 0 obj % None << /S /D /St 26 >> endobj % 'R388': class PDFPageLabel 388 0 obj % None << /S /D /St 27 >> endobj % 'R389': class PDFPageLabel 389 0 obj % None << /S /D /St 28 >> endobj % 'R390': class PDFPageLabel 390 0 obj % None << /S /D /St 29 >> endobj % 'R391': class PDFPageLabel 391 0 obj % None << /S /D /St 30 >> endobj % 'R392': class PDFPageLabel 392 0 obj % None << /S /D /St 31 >> endobj % 'R393': class PDFPageLabel 393 0 obj % None << /S /D /St 32 >> endobj % 'R394': class PDFPageLabel 394 0 obj % None << /S /D /St 33 >> endobj % 'R395': class PDFPageLabel 395 0 obj % None << /S /D /St 34 >> endobj % 'R396': class PDFPageLabel 396 0 obj % None << /S /D /St 35 >> endobj % 'R397': class PDFPageLabel 397 0 obj % None << /S /D /St 36 >> endobj % 'R398': class PDFPageLabel 398 0 obj % None << /S /D /St 37 >> endobj % 'R399': class PDFPageLabel 399 0 obj % None << /S /D /St 38 >> endobj % 'R400': class PDFPageLabel 400 0 obj % None << /S /D /St 39 >> endobj % 'R401': class PDFPageLabel 401 0 obj % None << /S /D /St 40 >> endobj % 'R402': class PDFPageLabel 402 0 obj % None << /S /D /St 41 >> endobj % 'R403': class PDFPageLabel 403 0 obj % None << /S /D /St 42 >> endobj % 'R404': class PDFPageLabel 404 0 obj % None << /S /D /St 43 >> endobj % 'R405': class PDFPageLabel 405 0 obj % None << /S /D /St 44 >> endobj % 'R406': class PDFPageLabel 406 0 obj % None << /S /D /St 45 >> endobj % 'R407': class PDFPageLabel 407 0 obj % None << /S /D /St 46 >> endobj % 'R408': class PDFPageLabel 408 0 obj % None << /S /D /St 47 >> endobj % 'R409': class PDFPageLabel 409 0 obj % None << /S /D /St 48 >> endobj % 'R410': class PDFPageLabel 410 0 obj % None << /S /D /St 49 >> endobj % 'R411': class PDFPageLabel 411 0 obj % None << /S /D /St 50 >> endobj % 'R412': class PDFPageLabel 412 0 obj % None << /S /D /St 51 >> endobj % 'R413': class PDFPageLabel 413 0 obj % None << /S /D /St 52 >> endobj xref 0 414 0000000000 65535 f 0000000113 00000 n 0000000358 00000 n 0000000533 00000 n 0000000768 00000 n 0000000885 00000 n 0000001258 00000 n 0000001549 00000 n 0000002742 00000 n 0000002837 00000 n 0000002954 00000 n 0000003055 00000 n 0000003401 00000 n 0000003725 00000 n 0000003913 00000 n 0000004151 00000 n 0000004469 00000 n 0000004712 00000 n 0000004955 00000 n 0000005198 00000 n 0000005441 00000 n 0000005684 00000 n 0000005927 00000 n 0000006170 00000 n 0000006414 00000 n 0000006658 00000 n 0000006902 00000 n 0000007146 00000 n 0000007390 00000 n 0000007634 00000 n 0000007878 00000 n 0000008122 00000 n 0000008366 00000 n 0000008610 00000 n 0000008854 00000 n 0000009098 00000 n 0000009342 00000 n 0000009586 00000 n 0000009830 00000 n 0000010074 00000 n 0000010318 00000 n 0000010562 00000 n 0000010806 00000 n 0000011050 00000 n 0000011294 00000 n 0000011538 00000 n 0000011782 00000 n 0000012026 00000 n 0000012270 00000 n 0000012514 00000 n 0000012758 00000 n 0000013002 00000 n 0000013246 00000 n 0000013490 00000 n 0000013734 00000 n 0000013978 00000 n 0000014222 00000 n 0000014466 00000 n 0000014710 00000 n 0000014954 00000 n 0000015198 00000 n 0000015442 00000 n 0000015686 00000 n 0000015930 00000 n 0000016174 00000 n 0000016418 00000 n 0000016662 00000 n 0000016906 00000 n 0000017150 00000 n 0000017394 00000 n 0000017638 00000 n 0000017882 00000 n 0000018126 00000 n 0000018370 00000 n 0000018614 00000 n 0000018858 00000 n 0000019102 00000 n 0000019346 00000 n 0000019590 00000 n 0000019834 00000 n 0000020078 00000 n 0000020322 00000 n 0000020566 00000 n 0000020810 00000 n 0000021054 00000 n 0000021298 00000 n 0000021526 00000 n 0000022466 00000 n 0000022710 00000 n 0000022954 00000 n 0000023198 00000 n 0000023442 00000 n 0000023686 00000 n 0000023930 00000 n 0000024174 00000 n 0000024418 00000 n 0000024662 00000 n 0000024906 00000 n 0000025150 00000 n 0000025394 00000 n 0000025638 00000 n 0000025883 00000 n 0000026128 00000 n 0000026373 00000 n 0000026618 00000 n 0000026863 00000 n 0000027108 00000 n 0000027353 00000 n 0000027598 00000 n 0000027843 00000 n 0000028088 00000 n 0000028333 00000 n 0000028578 00000 n 0000028809 00000 n 0000028986 00000 n 0000029231 00000 n 0000029477 00000 n 0000029723 00000 n 0000029969 00000 n 0000030215 00000 n 0000030461 00000 n 0000030707 00000 n 0000030953 00000 n 0000031199 00000 n 0000031445 00000 n 0000031691 00000 n 0000031937 00000 n 0000032183 00000 n 0000032429 00000 n 0000032675 00000 n 0000032921 00000 n 0000033167 00000 n 0000033413 00000 n 0000033659 00000 n 0000033905 00000 n 0000034151 00000 n 0000034397 00000 n 0000034643 00000 n 0000034889 00000 n 0000035135 00000 n 0000035381 00000 n 0000035627 00000 n 0000035873 00000 n 0000036119 00000 n 0000036348 00000 n 0000037190 00000 n 0000037473 00000 n 0000037756 00000 n 0000038056 00000 n 0000038287 00000 n 0000038466 00000 n 0000038637 00000 n 0000038942 00000 n 0000039226 00000 n 0000039526 00000 n 0000039772 00000 n 0000040003 00000 n 0000040201 00000 n 0000040447 00000 n 0000040693 00000 n 0000040923 00000 n 0000041269 00000 n 0000041595 00000 n 0000041976 00000 n 0000042166 00000 n 0000042517 00000 n 0000042801 00000 n 0000043101 00000 n 0000043331 00000 n 0000043637 00000 n 0000043921 00000 n 0000044220 00000 n 0000044481 00000 n 0000044711 00000 n 0000045042 00000 n 0000045273 00000 n 0000045579 00000 n 0000045863 00000 n 0000046147 00000 n 0000046431 00000 n 0000046715 00000 n 0000046999 00000 n 0000047298 00000 n 0000047540 00000 n 0000047779 00000 n 0000048110 00000 n 0000048347 00000 n 0000048653 00000 n 0000048937 00000 n 0000049221 00000 n 0000049505 00000 n 0000049789 00000 n 0000050089 00000 n 0000050319 00000 n 0000050625 00000 n 0000050924 00000 n 0000051197 00000 n 0000052868 00000 n 0000053951 00000 n 0000057163 00000 n 0000058980 00000 n 0000059250 00000 n 0000059701 00000 n 0000059946 00000 n 0000060220 00000 n 0000060450 00000 n 0000060776 00000 n 0000061060 00000 n 0000061344 00000 n 0000061643 00000 n 0000061894 00000 n 0000062200 00000 n 0000062499 00000 n 0000062729 00000 n 0000063035 00000 n 0000063319 00000 n 0000063603 00000 n 0000063887 00000 n 0000064171 00000 n 0000064470 00000 n 0000064706 00000 n 0000065012 00000 n 0000065296 00000 n 0000065596 00000 n 0000065842 00000 n 0000066087 00000 n 0000066332 00000 n 0000066577 00000 n 0000066814 00000 n 0000067187 00000 n 0000069230 00000 n 0000104826 00000 n 0000105122 00000 n 0000106776 00000 n 0000108787 00000 n 0000128030 00000 n 0000128311 00000 n 0000129691 00000 n 0000131719 00000 n 0000154027 00000 n 0000154320 00000 n 0000155763 00000 n 0000157779 00000 n 0000172555 00000 n 0000172848 00000 n 0000174292 00000 n 0000174456 00000 n 0000174767 00000 n 0000174896 00000 n 0000175158 00000 n 0000175476 00000 n 0000175784 00000 n 0000176052 00000 n 0000176365 00000 n 0000176628 00000 n 0000176923 00000 n 0000177168 00000 n 0000177504 00000 n 0000177766 00000 n 0000178062 00000 n 0000178377 00000 n 0000178693 00000 n 0000178974 00000 n 0000179285 00000 n 0000179606 00000 n 0000179951 00000 n 0000180280 00000 n 0000180645 00000 n 0000180995 00000 n 0000181368 00000 n 0000181705 00000 n 0000182041 00000 n 0000182382 00000 n 0000182713 00000 n 0000183082 00000 n 0000183387 00000 n 0000183639 00000 n 0000183999 00000 n 0000184312 00000 n 0000184652 00000 n 0000184909 00000 n 0000185244 00000 n 0000185499 00000 n 0000185800 00000 n 0000186091 00000 n 0000186387 00000 n 0000186703 00000 n 0000186961 00000 n 0000187265 00000 n 0000187594 00000 n 0000187873 00000 n 0000188152 00000 n 0000188431 00000 n 0000188715 00000 n 0000188974 00000 n 0000189228 00000 n 0000189548 00000 n 0000189925 00000 n 0000190298 00000 n 0000190719 00000 n 0000190971 00000 n 0000191291 00000 n 0000191561 00000 n 0000191907 00000 n 0000192252 00000 n 0000192527 00000 n 0000192802 00000 n 0000193125 00000 n 0000193357 00000 n 0000193976 00000 n 0000194588 00000 n 0000196101 00000 n 0000205807 00000 n 0000213008 00000 n 0000215129 00000 n 0000227586 00000 n 0000234823 00000 n 0000242583 00000 n 0000249407 00000 n 0000252125 00000 n 0000256476 00000 n 0000257883 00000 n 0000263516 00000 n 0000269996 00000 n 0000275708 00000 n 0000286609 00000 n 0000291633 00000 n 0000297478 00000 n 0000303619 00000 n 0000310016 00000 n 0000314326 00000 n 0000320506 00000 n 0000326993 00000 n 0000329919 00000 n 0000335191 00000 n 0000336686 00000 n 0000346544 00000 n 0000355960 00000 n 0000365254 00000 n 0000366789 00000 n 0000371809 00000 n 0000378371 00000 n 0000383948 00000 n 0000387995 00000 n 0000392336 00000 n 0000399622 00000 n 0000405524 00000 n 0000407308 00000 n 0000411782 00000 n 0000416298 00000 n 0000420689 00000 n 0000423546 00000 n 0000428331 00000 n 0000431028 00000 n 0000436296 00000 n 0000443542 00000 n 0000450260 00000 n 0000451343 00000 n 0000460481 00000 n 0000463570 00000 n 0000468248 00000 n 0000470230 00000 n 0000471082 00000 n 0000471161 00000 n 0000471240 00000 n 0000471319 00000 n 0000471398 00000 n 0000471477 00000 n 0000471556 00000 n 0000471635 00000 n 0000471714 00000 n 0000471793 00000 n 0000471873 00000 n 0000471953 00000 n 0000472033 00000 n 0000472113 00000 n 0000472193 00000 n 0000472273 00000 n 0000472353 00000 n 0000472433 00000 n 0000472513 00000 n 0000472593 00000 n 0000472673 00000 n 0000472753 00000 n 0000472833 00000 n 0000472913 00000 n 0000472993 00000 n 0000473073 00000 n 0000473153 00000 n 0000473233 00000 n 0000473313 00000 n 0000473393 00000 n 0000473473 00000 n 0000473553 00000 n 0000473633 00000 n 0000473713 00000 n 0000473793 00000 n 0000473873 00000 n 0000473953 00000 n 0000474033 00000 n 0000474113 00000 n 0000474193 00000 n 0000474273 00000 n 0000474353 00000 n 0000474433 00000 n 0000474513 00000 n 0000474593 00000 n 0000474673 00000 n 0000474753 00000 n 0000474833 00000 n 0000474913 00000 n 0000474993 00000 n 0000475073 00000 n 0000475153 00000 n trailer << /ID % ReportLab generated PDF document -- digest (http://www.reportlab.com) [("R\2529\326}\352Y\322\343.\001\230\037\361\377) ("R\2529\326}\352Y\322\343.\001\230\037\361\377)] /Info 246 0 R /Root 245 0 R /Size 414 >> startxref 475202 %%EOF rst2pdf-0.93/doc/biohazard.pdf0000664000175000017500000000665311354472411016116 0ustar ralsinaralsina%PDF-1.4 % 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x+*T/6UH/VЯ0SpW C endstream endobj 4 0 obj 31 endobj 2 0 obj << /ExtGState << /s5 5 0 R >> /XObject << /x6 6 0 R >> >> endobj 7 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 480 444 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 2 0 R >> endobj 8 0 obj << /Type /XObject /Length 39 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 480 444 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 0.102128 /ca 0.102128 >> >> >> >> stream x3T0¢tDb. 61Q(JUHx0 endstream endobj 6 0 obj << /Type /XObject /Length 55 /Filter /FlateDecode /Subtype /Form /BBox [ 0 0 480 444 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Pattern << /p9 9 0 R >> >> >> stream x+TH,)I-SH.V/T(NSO4PH/2P0P0bT4@.Xt endstream endobj 10 0 obj << /Type /Mask /S /Alpha /G 8 0 R >> endobj 5 0 obj << /Type /ExtGState /SMask 10 0 R /ca 1 /CA 1 /AIS false >> endobj 12 0 obj << /Length 13 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /BBox [ 0 0 480 444 ] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 11 0 R >> stream xmUK9 )t?Q:Fpf^@QKUY˯߇^xs,;FMKrQܙZȊ;Y#bĕakm7"ɝ;[/U2Xh^j ]sBNw b/gD4\J!/m"ϝ; ^(f9f~Dk>[#Ľ"N Ø^T3p; Sj1Q6pX&݊ }ETg2x^jgJ:kʰUbV@nU.ô{2d ^JלH3Z&*r9*Nioi`PƒjM"(4< 9i +>eT! RhDT(yn UNÖ;6k gbt\ a v$ rzL#Ɩ0$+JAX~;zkvJ}\~Ía|5*Bg47Zz'2x">i-⊸ړdQ V6YXns+CTAP<v4 l@t!ZDJ u8Rt}M34Ӧ ba28w2FKǼ]a(|&s5 p̓s|!}N7rcKDxJYD*d~CTO#Nn8%=%ג$K!VBAroӶȝc@PңrQOen_VH+"Վ%ߒ`ks# u0񌁏z}\Ҭn #ەbwnErŝ"WXˇ> >> >> endobj 9 0 obj << /Length 14 0 R /PatternType 1 /BBox [0 0 480 444] /XStep 1848 /YStep 1848 /TilingType 1 /PaintType 1 /Matrix [ 1 0 0 1 0 0 ] /Resources << /XObject << /x12 12 0 R >> >> >> stream /x12 Do endstream endobj 14 0 obj 11 endobj 1 0 obj << /Type /Pages /Kids [ 7 0 R ] /Count 1 >> endobj 15 0 obj << /Creator (cairo 1.8.10 (http://cairographics.org)) /Producer (cairo 1.8.10 (http://cairographics.org)) >> endobj 16 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 17 0000000000 65535 f 0000002827 00000 n 0000000143 00000 n 0000000015 00000 n 0000000122 00000 n 0000001200 00000 n 0000000771 00000 n 0000000231 00000 n 0000000431 00000 n 0000002563 00000 n 0000001141 00000 n 0000002490 00000 n 0000001287 00000 n 0000002467 00000 n 0000002805 00000 n 0000002892 00000 n 0000003020 00000 n trailer << /Size 17 /Root 16 0 R /Info 15 0 R >> startxref 3073 %%EOF rst2pdf-0.93/doc/DEVELOPERS.txt0000664000175000017500000000631411350473272015665 0ustar ralsinaralsina=========================== Help for rst2pdf developers =========================== ----------------------------- Or, how do I hack this thing? ----------------------------- Guidelines ---------- In rst2pdf we want many things. We want ponies and icecream. But most of all, we want rst2pdf to kick ass. The best way to achieve that is making rst2pdf work right. The best way to do *that* is through testing and documenting. So, if you want to do something inside rst2pdf, you are welcome, but... * Create an Issue for the task. That's easy, just go to http://rst2pdf.googlecode.com and do it. * If you intend to fix a bug: + Create a **minimal** test case that shows the bug. + Put it inside rst2pdf/tests/input like the others: - mytest.txt is the test itself - mytest.cli is any needed command line arguments (if needed) - mytest.style is a custom stylesheet (if needed) + Run the test suite on it:: cd rst2pdf/tests ./autotest.py input/mytest.txt + Check the output: less output/mytest.log acroread output/mytest.pdf + If it's really a bug, mark the test as *bad* and save everything in SVN:: setmd5 bad input/mytest.txt svn add input/mytest.* svn add md5/mytest.json svn commit -m "Test case for Issue X" * Always, when committing something, check for regressions running the full test suite, it takes only a minute or two. Keep in mind that regressions can be trivial! For example, if you change the spacing of definition lists, 3 or 4 tests will regress. * Keep your Issues updated. If you are working on frobnozzing the gargles, then by all means post it in the issue. There's no issue about it? You were meant to create one, remember? ;-) * If you added a command line option, document it in doc/rst2pdf.txt. That will make it appear in the manual and in the man page. Maybe it should also be available for sphinx users, let me know about it. * If you implemented a new feature, please document it in manual.txt (or in a separate file and add an include in manual.txt) * If you implement an extension, make the docstring valid restructured text and link it to the manual like the others. Why should you bother with all this? It's important that you do it this way because it means that the rest of us know what you are doing. It also means you don't break rst2pdf. Continuous Integration ---------------------- rst2pdf has a semi-public CI server running Hudson. What's CI? It's a server running the test suite all the time. That means that if a commit breaks something, we can find out about it. And yes, you are supposed to check for regressions yourself, but will you test against ReportLab 2.3? How about Python 2.4? Hudson allows us to have all those builds (and more) running every day, so we know it doesn't break for anyone else. Or at least, we hope so, this is a work in progress ;-) Running tests ------------- first run ~~~~~~~~~ while in project:: python bootstrap.py ./bin/buildout ./bin/nosetests -i regulartest -i sphinxtest next runs ~~~~~~~~~ while in project:: ./bin/nosetests -i regulartest -i sphinxtest Getting commit rights --------------------- Just ask in the mailing list. rst2pdf-0.93/doc/rst2pdf.txt0000664000175000017500000001371312062712200015566 0ustar ralsinaralsina======= rst2pdf ======= ----------------------------------------- Convert reStructuredText documents to PDF ----------------------------------------- :Author: Chris Lamb for the Debian project :Manual section: 1 :Manual group: text processing SYNOPSIS -------- rst2pdf [options] [input] [-o output] DESCRIPTION ----------- The usual way of creating PDF from reStructuredText (ReST) is by going through LaTeX. The rst2pdf utility provides an alternative by producing PDF directly using the ReportLab library. OPTIONS ------- -h, --help Show this help message and exit --config=FILE Config file to use. Default=~/.rst2pdf/config -o FILE, --output=FILE Write the PDF to FILE -s STYLESHEETS, --stylesheets=STYLESHEETS A comma-separated list of custom stylesheets. Default="" --stylesheet-path=FOLDERLIST A colon-separated list of folders to search for stylesheets. Default="" -c, --compressed Create a compressed PDF. Default=False --print-stylesheet Print the default stylesheet and exit --font-folder=FOLDER Search this folder for fonts. (Deprecated) --font-path=FOLDERLIST A colon-separated list of folders to search for fonts. Default="" --baseurl=URL The base URL for relative URLs. -l LANG, --language=LANG Language to be used for hyphenation and docutils localization. Default=None --header=HEADER Page header if not specified in the document. --footer=FOOTER Page footer if not specified in the document. --section-header-depth=N Sections up to this dept will be used in the header and footer's replacement of ###Section###. Default=2 --smart-quotes=VALUE Try to convert ASCII quotes, ellipsis and dashes to the typographically correct equivalent. Default=0 The possible values are: 0. Suppress all transformations. (Do nothing.) 1. Performs default SmartyPants transformations: quotes (including backticks-style), em-dashes, and ellipses. "--" (dash dash) is used to signify an em-dash; there is no support for en-dashes. 2. Same as --smart-quotes=1, except that it uses the old-school typewriter shorthand for dashes: "--" (dash dash) for en-dashes, "---" (dash dash dash) for em-dashes. 3. Same as --smart-quotes=2, but inverts the shorthand for dashes: "--" (dash dash) for em-dashes, and "---" (dash dash dash) for en-dashes. --fit-literal-mode=MODE What to do when a literal is too wide. One of error,overflow,shrink,truncate. Default="shrink" --fit-background-mode=MODE How to fit the background image to the page. One of scale or center. Default="center" --inline-links Shows target between parenthesis instead of active link --repeat-table-rows Repeats header row for each splitted table --raw-html Support embeddig raw HTML. Default: False -q, --quiet Print less information. -v, --verbose Print debug information. --very-verbose Print even more debug information. --version Print version number and exit. --no-footnote-backlinks Disable footnote backlinks. Default: False --inline-footnotes Show footnotes inline. Default: True --default-dpi=NUMBER DPI for objects sized in pixels. Default=300 --show-frame-boundary Show frame borders (only useful for debugging). Default=False --disable-splittables Don't use splittable flowables in some elements. Only try this if you can't process a document any other way. -b LEVEL, --break-level=LEVEL Maximum section level that starts in a new page. Default: 0 --first-page-on-right When using double sided pages, the first page will start on the right hand side. (Book Style) --blank-first-page Add a blank page at the beginning of the document. --break-side=VALUE How section breaks work. Can be "even", and sections start in an even page,"odd", and sections start in odd pages, or "any" and sections start in the next page,be it even or odd. See also the -b option. --date-invariant Don't store the current date in the PDF. Useful mainly for the test suite, where we don't want the PDFs to change. -e EXTENSIONS Alias for --extension-module --extension-module=EXTENSIONS Add a helper extension module to this invocation of rst2pdf (module must end in .py and be on the python path) --custom-cover=FILE Template file used for the cover page. Default: cover.tmpl --use-floating-images Makes images with :aling: attribute work more like in rst2html. Default: False --use-numbered-links When using numbered sections, adds the numbers to all links referring to the section headers. Default: False --strip-elements-with-class=CLASS Remove elements with this CLASS from the output. Can be used multiple times. EXAMPLES -------- $ rst2pdf rest.txt -o out.pdf Produce an out.pdf file which is a PDF version of the ReST document rest.txt. rst2pdf-0.93/doc/gen_docs.sh0000664000175000017500000000014511350144236015560 0ustar ralsinaralsina#!/bin/sh ../bin/rst2pdf manual.txt -o manual.pdf -s manual.style -b1 rst2man rst2pdf.txt rst2pdf.1 rst2pdf-0.93/doc/cover.tmpl0000664000175000017500000000020512064144167015462 0ustar ralsinaralsina.. raw:: pdf Spacer 0 73mm .. class:: title #{title} .. class:: centered Version 0.93 .. raw:: pdf PageBreak oneColumn rst2pdf-0.93/setup.cfg0000664000175000017500000000006411136220700014510 0ustar ralsinaralsina[egg_info] tag_build = .dev tag_svn_revision = true rst2pdf-0.93/README.txt0000664000175000017500000000152011265224103014367 0ustar ralsinaralsinaIntro ===== The usual way of creating PDF from reStructuredText is by going through LaTeX. This tool provides an alternative by producing PDF directly using the ReportLab library. Installing ========== python setup.py install should do the trick. Features ======== * User-defined page layout. Multiple frames per page, multiple layouts per document. * Page transitions * Cascading stylesheet mechanism, define only what you want changed. * Supports TTF and Type1 font embedding. * Any number of paragraph styles using the class directive. * Any number of character styles using text roles. * Custom page sizes and margins. * Syntax highlighter for many languages, using Pygments. * Supports embedding almost any kind of raster or vector images. * Supports hyphenation and kerning (using wordaxe). * Full user's manual rst2pdf-0.93/setup.py0000664000175000017500000000666512064143151014423 0ustar ralsinaralsina# -*- coding: utf-8 -*- #$HeadURL$ #$LastChangedDate$ #$LastChangedRevision$ import os from setuptools import setup, find_packages version = '0.93' def read(*rnames): return open(os.path.join(os.path.dirname(__file__), *rnames)).read() long_description = ( read('LICENSE.txt') + '\n' + 'Detailed Documentation\n' '**********************\n' + '\n' + read('README.txt') + '\n' + 'Contributors\n' '************\n' + '\n' + read('Contributors.txt') + '\n' + 'Change history\n' '**************\n' + '\n' + read('CHANGES.txt') + '\n' + 'Download\n' '********\n' ) install_requires = [ 'setuptools', 'docutils', 'reportlab>=2.4', 'Pygments', 'pdfrw', ] try: import json except ImportError: install_requires.append('simplejson') tests_require = ['pyPdf'] sphinx_require = ['sphinx'] hyphenation_require = ['wordaxe>=1.0'] images_require = ['PIL'] pdfimages_require = ['pyPdf','PythonMagick'] pdfimages2_require = ['pyPdf','SWFTools'] svgsupport_require = ['svg2rlg'] sk1support_require = ['uniconvertor'] aafiguresupport_require = ['aafigure>=0.4'] mathsupport_require = ['matplotlib'] rawhtmlsupport_require = ['xhtml2pdf'] setup( name="rst2pdf", version=version, packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), package_data=dict(rst2pdf=['styles/*.json', 'styles/*.style', 'images/*png', 'images/*jpg', 'templates/*tmpl' ]), include_package_data=True, dependency_links=[ # Reportlab (now on PyPI) #"http://ftp.schooltool.org/schooltool/eggs/3.4", # Wordaxe (now on PyPI) # "http://sourceforge.net/project/platformdownload.php?group_id=105867", # UniConvertor "http://sk1project.org/downloads/uniconvertor/v1.1.4/uniconvertor-1.1.4.tar.gz", ], install_requires=install_requires, tests_require=tests_require, extras_require=dict( tests=tests_require, sphinx=sphinx_require, hyphenation=hyphenation_require, images=images_require, pdfimages=pdfimages_require, pdfimages2=pdfimages2_require, svgsupport=svgsupport_require, sk1support=sk1support_require, aafiguresupport=aafiguresupport_require, mathsupport=mathsupport_require, rawhtmlsupport=rawhtmlsupport_require, ), # metadata for upload to PyPI # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers classifiers=[ 'Development Status :: 4 - Beta', 'Environment :: Console', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Topic :: Documentation', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: Text Processing', 'Topic :: Utilities', ], author="Roberto Alsina", author_email="ralsina at netmanagers dot com dot ar", description="Convert restructured text to PDF via reportlab.", long_description=long_description, license="MIT", keywords="restructured convert rst pdf docutils pygments reportlab", url="http://rst2pdf.googlecode.com", download_url="http://code.google.com/p/rst2pdf/downloads/list", entry_points={'console_scripts': ['rst2pdf = rst2pdf.createpdf:main']}, test_suite='rst2pdf.tests.test_rst2pdf.test_suite', ) rst2pdf-0.93/Contributors.txt0000664000175000017500000000061311771132117016136 0ustar ralsinaralsina* Roberto Alsina * Nicolas Laurance * Christoph Zwerschke * Yasushi Masuda * Josh VanderLinden * Runar Tenfjord * Patrick Maupin * Joshua J. Kugler * Patrick Maupin * anatoly techtonik * Joaquin Sorianello * tyler at datastax.com * charles at stanhope.com * al.yazdi * Dimitri Christodoulou * Paul Nation * Robert Johansson rst2pdf-0.93/buildout.cfg0000775000175000017500000000214712060431456015217 0ustar ralsinaralsina[buildout] develop = . parts = rst2pdf [rst2pdf] recipe = zc.recipe.egg:scripts eggs = rst2pdf [svgsupport, images, aafiguresupport, tests] sphinx docutils>0.9 reportlab aafigure nose coverage PIL pdfrw svg2rlg find-links = http://distfiles.minitage.org/public/externals/minitage/ [rst2pdf-rl24] recipe = zc.recipe.egg:scripts eggs = rst2pdf [svgsupport, images, aafiguresupport, tests] sphinx docutils reportlab==2.4 aafigure nose coverage PIL pdfrw svg2rlg find-links = http://distfiles.minitage.org/public/externals/minitage/ [rst2pdf-rl25] recipe = zc.recipe.egg:scripts eggs = rst2pdf [svgsupport, images, aafiguresupport, tests] sphinx docutils reportlab==2.5 aafigure nose coverage PIL pdfrw svg2rlg find-links = http://distfiles.minitage.org/public/externals/minitage/ [wordaxe] recipe = zc.recipe.egg eggs = wordaxe pyhyphen find-links = http://sourceforge.net/projects/deco-cow/files/ rst2pdf-0.93/LICENSE.txt0000664000175000017500000000216711205012506014520 0ustar ralsinaralsinaCopyright (c) 2007,2008,2009 Roberto Alsina Nicolas Laurance, Christoph Zwerschke, Yasushi Masuda, Josh VanderLinden. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. rst2pdf-0.93/CHANGES.txt0000664000175000017500000006007412064143151014514 0ustar ralsinaralsinaNew in 0.93 ----------- * Fixed Issue 447: Double-sided always starts on the right (By Rob Ludwick) * Removed --first-page-even as it was not used anywhere. * Added --first-page-on-right * Fixed Issue 464: support alignment via :class: in image directives. * Fixed Issue 482: Line blocks with indented parts get extraneous spacing * Fixed Issue 470: Support for :target: in figures. * New style "image" to be applied to image directives. * Fixed Issue 485: Better styling support for figures/images (spaceBefore/After) * Support rst2pdf [inf [outf]] syntax to be more compatible with rst2* * Implemented Issue 389: New --strip-element-with-class option * Fixed Issue 474: CellStyle1 is not there in reportlab 2.6 * Removed default padding from DelayedTable, which looked bad on headers/footers. * Improvements to the math directive (font color and size) * Better support for styling literals. * Fixed Issue 454 (Splitting failure) * Regressed Issue 374 (some literal blocks get oversplit) * Switched from svglib to svg2rlg * Removed uniconvertor support * Fixed Issue 477: Sink footnote separator (patch by asermax) * Fixed Issue 473: Support "code" directive like an alias of code-block. * Fixed Issue 472: Implemented MyImage._unRestrictSize * Fixed Issue 471: Respect class in lineblocks. * Fixed Issue 455: New pisa/xhtml2pdf has very different imports * Reopened Issue 289: Broken bullet customization. * Reopened Issue 310: Line numbers in code blocks are wrong * Reopened Issue 337: Bad layout with inline images in tables * Marked Issue 358 as fixed. * Fixed Issue 410: always include full lines in code-blocks (mmueller patch) * Regression in fancytitles extension: Issue 486 New in 0.92 ----------- * Fixed Issue 394; missing _restrictSize method with RL 2.5 * Fixed Issue 452: applying missing classes to lists crashed rst2pdf * Fixed Issue 427: multiple spaces collapsed on inline literals. * Fixed Issue 451: roman.py was moved in docutils 0.9 * Fixed Issue 446: made it work again with python 2.4 New in 0.91 ----------- * Fixed Issue 438: sphinx support was completely broken in 0.90 New in 0.90 ----------- * Added raw HTML support, by Dimitri Christodoulou * Fixed Issue 422: Having no .afm files made font lookup slow. * Fixed Issue 411: Sometimes the windows registry has the font's abspath. * Fixed Issue 430: Using --config option caused other options to be ignored (by charles at cstanhope dot com) * Fixed Issue 436: Add pdf_style_path to sphinx (by tyler@datastax.com) * Fixed Issue 428: page numbers logged as errors * Added support for many pygments options in code-block (by Joaquin Sorianello) * Implemented Issue 404: plantuml support * Issue 399: support sphinx's template path option * Fixed Issue 406: calls to the wrong logging function * Implemented Issue 391: New --section-header-depth option. * Fixed Issue 390: the --config option was ignored. * Added support for many pygments options in code-block (by Joaquin Sorianello) * Fixed Issue 379: Wrong style applied to paragraphs in definitions. * Fixed Issue 378: Multiline :address: were shown collapsed. * Implemented Issue 11: FrameBreak (and conditional FrameBreak) * The description of frames in page templates was just wrong. * Fixed Issue 374: in some cases, literal blocks were split inside a page, or the pagebreak came too early. * Fixed Issue 370: warning about sphinx.addnodes.highlightlang not being handled removed. * Fixed Issue 369: crash in hyphenator when specifying "en" as a language. * Compatibility fix to Sphinx 0.6.x (For python 2.7 docs) New in 0.16 ----------- * Fixed Issue 343: Plugged memory leak in the RSON parser. * Fix for Issue 287: there is still a corner case if you have two sections with the same title, at the same level, in the same page, in different files where the links will break. * Fixed Issue 367: german-localized dates are MM. DD. YYYY so when used in sphinx's template cover they appeared weird, like a list item. Fixed with a minor workaround in the template. * Fixed Issue 366: links to "#" make no sense on a PDF file * Made definitions from definition lists more stylable. * Moved definition lists to SplitTables, so you can have very long definitions. * Fixed Issue 318: Implemented Domain specific indexes for Sphinx 1.0.x * Fixed Index links when using Sphinx/pdfbuilder. * Fixed Issue 360: Set literal.wordWrap to None by default so it doesn't inherit wordWrap CJK when you use the otherwise correct japanese settings. In any case, literal blocks are not supposed to wrap at all. * Switched pdfbuilder to use SplitTables by default (it made no sense not to do it) * Fixed Issue 365: some TTF fonts don't validate but they work anyway. * Set a valid default baseurl for Sphinx (makes it much faster!) * New feature: --use-numbered-links to show section numbers in links to sections, like "See section 2.3 Termination" * Added stylesheets for landscape paper sizes (i.e: a4-landscape.style) * Fixed Issue 364: Some options not respected when passed in per-doc options in sphinx. * Fixed Issue 361: multiple linebreaks in line blocks were collapsed. * Fixed Issue 363: strange characters in some cases in math directive. * Fixed Issue 362: Smarter auto-enclosing of equations in $...$ * Fixed Issue 358: --real--footnotes defaults to False, but help text indicates default is True * Fixed Issue 359: Wrong --fit-background-mode help string * Fixed Issue 356: missing cells if a cell spawns rows and columns. * Fixed Issue 349: Work correctly with languages that are available in form aa_bb and not aa (example: zh_cn) * Fixed Issue 345: give file/line info when there is an error in a raw PDF directive. * Fixed Issue 336: JPEG images should work even without PIL (but give a warning because sizes will probably be wrong) * Fixed Issue 351: footnote/citation references were generated incorrectly, which caused problems if there was a citation with the same text as a heading. * Fixed Issue 353: better handling of graphviz, so that it works without vectorpdf but gives a warning about it. * Fixed Issue 354: make todo_node from sphinx customizable. * Fixed bug where nested lists broke page layout if the page was small. * Smarter --inline-links option * New extension: fancytitles, see http://lateral.netmanagers.com.ar/weblog/posts/BB906.html * New feature: tab-width option in code-block directive (defaults to 8). * Fixed Issue 340: endnotes/footnotes were not styled. * Fixed Issue 339: class names using _ were not usable. * Fixed Issue 335: ugly crash when using images in some specific places (looks like a reportlab bug) * Fixed Issue 329: make the figure alignment/class attributes work more like LaTeX than HTML. * Fixed Issue 328: list item styles were being ignored. * Fixed Issue 186: new --use-floating-images makes images with :align: set work like in HTML, with the next flowable flowing beside it. * Fixed Issue 307: header/footer from stylesheet now supports inline rest markup and substitutions defined in the main document. * New pdf_toc_depth option for Sphinx/pdfbuilder * New pdf_use_toc option for Sphinx/pdfbuilder * Fixed Issue 308: compatibility with reportlab from SVN * Fixed Issue 323: errors in the config.sample made it work weird. * Fixed Issue 322: Image substitutions didn't work in document title. * Implemented Issue 321: underline and strikethrough available in stylesheet. * Fixed Issue 317: Ugly error message when file does not exist New in 0.15 ----------- * Fixed Issue 315: crash when using an undefined class for a list. * Implemented Issue 279: images can be specified as URLs. * Fixed Issue 313: new --fit-background-mode option. * Fixed Issue 110: new --real-footnotes option (buggy). * Fixed Issue 176: spacers larger than a page don't crash. * Fixed Issue 65: References to Helvetica/Times when it was not used. * Fixed Issue 310: added option linenos_offset to code blocks. * Fixed Issue 309: style for blockquotes was not respected. * Custom cover page support (related to Issue 157) * Fixed Issue 305: support wildcards in image names and then use the best one available. * Implemented Issue 298: counters * Improved widow/orphan support for literal blocks * Fixed Issue 304: Code blocks didn't respect fontSize in class. New in 0.14.2 ------------- * Regained compatibility with reportlab 2.3 * Fixed regression in Issue 152: right-edege of boxes not aligned inside list items. * Fixed Issue 301: accept padding parameters in bullet/item lists New in 0.14.1 ------------- * Make it compatible with Sphinx 0.6.3 again * Fixed Issue 300: image-missing.jpg was not installed New in 0.14 ----------- * Fixed Issue 197: Table borders were confusing. * Fixed Issue 297: styles from default.json leaked onto other syntax highlighting stylesheets. * Fixed Issue 295: keyword replacement in headers/footers didn't work if ###Page### and others was inside a table. * New feature: oddeven directive to display alternative content on odd/even pages (good for headers/footers!) * Switched all stylesheets to more readable RSON format. * Fixed Issue 294: Images were deformed when only height was specified. * Fixed Issue 293: Accept left/center/right as alignments in stylesheets. * Fixed Issue 292: separate style for line numbers in codeblocks * Fixed Issue 291: support class directive for codeblocks * Fixed Issue 104: total number of pages in header/footer works in all cases now. * Fixed Issue 168: linenos and linenothreshold options in Sphinx now work correctly. * Fixed regression in 0.12 (interaction between rst2pdf and sphinx math) * Documented extensions in the manual * Better styling of bullets/items (Issue 289) * Fixed Issue 290: don't fail on broken images * Better font finding in windows (patch by techtonik, Issue 282). * Fixed Issue 166: Implemented Sphinx's hlist (horizontal lists) * Fixed Issue 284: Implemented production lists for sphinx * Fixed Issue 165: Definition lists not properly indented inside admonitions or tables. * SVG Images work inline when using the inkscape extension. * Fixed Issue 268: TOCs shifted to the left on RL 2.4 * Fixed Issue 281: sphinx test automation was broken * Fixed Issue 280: wrong page templates used in sphinx New in 0.13 ----------- * New TOC code (supports dots between title and page number) * New extension framework * New preprocessor extension * New vectorpdf extension * Support for nested stylesheets * New headerSeparator/footerSeparator stylesheet options * Foreground image support (useful for watermarks) * Support transparency (alpha channel) when specifying colors * Inkscape extension for much better SVG support * Ability to show total page count in header/footer * New RSON format for stylesheets (JSON superset) * Fixed Issue 267: Support :align: in figures * Fixed Issue 174 regression (Indented lines in line blocks) * Fixed Issue 276: Load stylesheets from strings * Fixed Issue 275: Extra space before lineblocks * Fixed Issue 262: Full support for Reportlab 2.4 * Fixed Issue 264: Splitting error in some documents * Fixed Issue 261: Assert error with wordaxe * Fixed Issue 251: added support for rst2pdf extensions when using sphinx * Fixed Issue 256: ugly crash when using SVG images without SVG support * Fixed Issue 257: support aafigure when using sphinx/pdfbuilder * Initial support for graphviz extension in pdfbuilder * Fixed Issue 249: Images distorted when specifiying width and height * Fixed Issue 252: math directive conflicted with sphinx * Fixed Issue 224: Tables can be left/center/right aligned in the page. * Fixed Issue 243: Wrong spacing for second paragraphs in bullet lists. * Big refactoring of the code. * Support for Python 2.4 * Fully reworked test suite, continuous integration site. * Optionally use SWFtools for PDF images * Fixed Issue 231 (Smarter TTF autoembed) * Fixed Issue 232 (HTML tags in title metadata) * Fixed Issue 247 (printing stylesheet) New in 0.12.3 ------------- * Fixed Issue 230 (Admonition titles were not translated) * Fixed Issue 228 (page labels and numbers match, so page ii is the same on-page and in the PDF TOC) * Fixed Issue 227 (missing background should not be fatal error) * Fixed Issue 225 (bad spacing in lineblocks) * Fixed Issue 223 (non-monospaced styles used in code) New in 0.12.2 ------------- * Fix Issue 219 (incompatibility with reportlab 2.1) * Added pdf_default_dpi option for pdfbuilder * More style docs in the manual * Better styling of lists * Fix bug reported in comments in my blog where a stylesheet with showHeader=True and no explicit header caused an exception. * Fixed Issue 215: crashes in bookrest's background renderer. New in 0.12.1 ------------- * Ship local patched copy of pypoppler-qt4 * Partial fix for Issue 205: KeyError: 'format' * Fixed Issue 212: XML parsing error in bookrest * Fixed Issue 210: pickle error in bookrest * Switched --enable-splittables to True by default * Fixed Issue 204: syntax error on font importing code New in 0.12 ----------- * Fixed Issue 202: broken processing of HTML raw nodes * New "options" section in stylesheets. New ["options"]["stylesheets"] subsection, which works similar to -s or to an include file: a list of stylesheets to be processed before the current one. * New --config option * Fix for Issue 200 (position of frames was miscalculated) * Fix For Issue 188 (uniconvertor "'unicode' object has no attribute 'readline'" error) * New raw directive command: SetPageCounter. This enables page counter manipulation, and use of different styles, roman, lowerroman, alpha, loweralpha and arabic. * New raw directive commands: EvenPageBreak and OddPageBreak * New option to make sections break to odd or even pages: --break-side=VALUE * New option to add an empty page at the beginning of the document: --blank-first-page. * Fixed bug in authors field width calculation * Support % in bullet and field lists column widths * Use bullet_list or item_list styles for bullet and item lists respectively. * Support % in field list column width description. * Fix for Issue 184 (font metrics go crazy with TT font) * New admonition code based on SplitTable (beta quality) * Fix for Issue 180 (support for very very long list items. Needs testing) * Fix for Issue 175 (widow/orphan titles) * Fix for Issue 174 (line blocks didn't respect indentation) * Worked around Issue 173 (quotes didn't indent inside table cells) * Respect spaceBefore and spaceAfter for footnotes/endnotes * Added tests for (almost) all of sphinx's custom markup * Fixed Issue 170 (Wrong font embedding) * Fixed Issue 171 (Damaged xref table) * Fixed Issue 159 (Admonition and table widths were miscalculated) * Fixed Issue 162 (wrong highlighting using sphinx) * Changed default language policy as described in Issue 53 * Fixed Issue 148 (Images should be looked for relative to source document) * Fixed Issue 158 (Some admonitions crashed pdfbuilder) * Fixed Issue 154 (incompatibility with RL 2.1) * Fixed Issue 155 (crash when sidebars split in a certain way) * Fixed issue 152 (padding and alignment of table styles, like when using literal blocks inside lists) * Integrated pdfbuilder sphinx extension (more work needed) * Kerning support for true type fonts (thanks to wordaxe!), added to the docs, added convenience stylesheet. * Fixed Issue 151 and behaviour on Issue 116, about images too large for available space / the full frame height. * Fixed problem in admonition titles. * Fixed section names in headers/footers: FIRST section on the page is used, not LAST. * Fixed Issue 145: padding of literal blocks was broken. * Fixed bug: paragraphs with ids should have the matching anchors * Fixed bug: internal references were not linked correctly * Fixed Issue 144: PDF TOC had wrong page numbers in some cases * More sphinx compatibility * New table styles code, also make class directive work for tables * Fixed Issue 140: html-like markup in titles was kept in the PDF TOC * Fixed Issue 138: Redid figure styling. Also fixed bugs in BoxedContainer * Fixed Issue 137: bugs in escaping characters in interpreted roles * Make it work (in a slightly degraded mode) without PIL, as long as you are only using JPGs or have PythonMagick installed. This is good for OS X, where "installing PIL is a PITA" * Fixed issue 134: entities were replaced in interpreted roles (not needed) * Support for aafigure (http://launchpad.net/aafigure) * Spacers support units * TOC styles now configurable in stylesheet New in 0.11 ----------- * Degrade more gracefully when one or more wordaxe hyphenators are broken (currently DWC is the broken one) * Fixed issue 132: in some cases, with user-defined fontAlias, bold and italic would get confused (getting italic instead of bold in inline markup, for instance). * New stylesheet no-compact-lists to make lists... less compact * SVG images now handle % as a width unit correctly. * Implemented issue 127: support images in PDF format. Right now they are rasterized, so it's not ideal. Perhaps something better will come up later. * Fixed issue 129: make it work around a prblem with KeepTogether in RL 2.1 it probably makes the output look worse in some cases when using that. RL 2.1 is not really supported, so added a warning. * Fixed issue 130: use os.pathsep instead of ":" since ":" in windows is used in disk names (and we still pay for DOS idiocy, in 2009) * Fixed issue 128: headings level 3+ all looked the same * Ugly bugfix for Issue 126: crashes when using images in header + TOC * New tstyles section in the stylesheet provides more configurable list layouts and more powerful table styling. * Better syntax highlighting (supports bold/italic) * Workaround for issue 103 so you can use borderPadding as a list (but it will look wrong if you are using wordaxe <= 0.3.2) * Added fieldvalue style for field lists * Added optionlist tstyle, for option lists * Added collection of utility stylesheets and documented it * Improved command line parsing and stylesheet loading (guess extension like latest rst2latex does) * Fixed Issue 67: completely new list layouting code * Fixed Issue 116: crashes caused by huge images * Better support for %width in images, n2ow it's % of the container frame's width, not of the text area. * Fixed bug in SVG scaling * Better handling of missing images * Added missing styles abstract, contents, dedication to the default stylesheet * Tables style support spaceBefore and spaceAfter * New topic-title style for topic titles (obvious ;-) * Vertical alignment for inline images (:align: parameter) * Issue 118: Support for :scale: in images and handle resizing of inline images * Issue 119: Fix placement of headers and footers * New background property for page templates (nice for presentations, for example) * Default to px for image width specifications instead of pt * Support all required measurement units ("em" "ex" "px" "in" "cm" "mm" "pt" "pc" "%" "") * New automated scripts to check test cases for "visual differences" * Respect images DPI property a bit like rst2latex does. * Issue 110: New --inline-footnotes option * Tested with reportlab from SVN trunk * Support for Dinu Gherman's svglib. If both svglib and uniconvertor are available, svglib is preferred (for SVG, of course). Patch originally by rute. * Issue 109: Separate styles for each kind of admonition * For Issue 109: missing styles are not a fatal error * Issue 117: TOCs with more than 6 levels now supported (raised limit to 9, which is silly deep) New in 0.10.1 ------------- * Issue 114: Fixed bug in PDF TOC for sections containing ampersands New in 0.10 ----------- * Issue 87: Table headers can be repeated in each page (thanks to Yasushi Masuda) * Issue 93: Line number support for code blocks (:linenos: true) * Issue 111: Added --no-footnote-backlinks option * Issue 107: Support localized directives/roles (example: sommaire instead of contents) * Issue 112: Fixed crash when processing empty list items * Issue 98: Nobreak support, and set as default for inline-literals so they don't hyphenate. * Slightly better tests * Background colors in text styles work with reportlab 2.3 * Issue 99: Fixed hyphenation in headers/footers (requires wordaxe 0.3.2) * Issue 106: Crash on demo.txt fixed (requires wordxe 0.3.2) * Issue 102: Implemented styles for bulleted and numbered lists * Issue 38: Default headers/footers via options, config file or stylesheet * Issue 88: Implemented much better book-style TOCs * Issue 100: Fixed bug with headers/footers and Reportlab 2.3 * Issue 95: Fixed bug with indented tables * Issue 89: Implemented --version * Issue 84: Fixed bug with relative include paths * Issue 85: Fixed bug with table cell styles * Issue 83: Fixed bug with numeric colors in backColor attribute * Issue 44: Support for stdin and stdout * Issue 79: Added --stylesheet-path option * Issue 80: Send warnings to stderr, not stdout * Issue 66: Implemented "smart quotes" * Issue 77: Work around missing matplotlib * Proper translation of labels (such as "Author", "Version" etc.) using the docutils languages package. (r473) * Fixed problems with wrong or non-existing fonts. (r484) * Page transition effect support for presentations (r423) New in 0.9 ---------- * Math support via Mathplotlib * Huge bug in header/footer page numbers/section names fixed * Several bugs in nested lists fixed (not 100% correct yet, but better) * Lists that don't start at 1 work now * Nicer definition lists New in 0.8.1 ------------ * Support for more complex headers and footers (including image directives and tables) * Optional inline links * Wordaxe 0.2.6 support * Several bugs fixed (issues 48,68,41,60,58,64,67) * Support for system-wide config file * Better author metadata New in 0.8 ---------- * Support for vector graphics: SVG, EPS, PS, CDR and others (requires uniconvertor) * Support for stdin and stdout, so you can use rst2pdf in pipes. * Works with reportlab 2.1 and 2.2 * Simpler stylesheets (guess bulletFontName, leading, bulletFontSize from other parameters) * Some support for sphinx * Fixed the docutils Writer interface * Continue processing when an image is missing * Support for user config file * Font sizes can be expressed in units or % of parent style's size * Larger font size in the default stylesheet New in 0.7 ---------- * Automatic Type1 and True Type font embedding. Just use the font or family name, and (with a little luck), it will be embedded for you. * width attribute in styles, to create narrow paragraphs/tables * Styles for table headers and table cells * "Zebra tables" * Improvements in the handling of overflowing literal blocks (code, for instance) * Different modes to handle too-large literal blocks: overflow/truncate/shrink. * Real sidebars and "floating" elements. * Fixed link style (no ugly black underlining!) New in 0.6 ---------- * Stylesheet-defined page layout (For example, multicolumn) and layout switching * Cascading Stylesheets (change exactly what you need changed) * PDF table of contents * Current section names and numbers in headers/footers * Support for compressed PDF files * Link color is configurable * Fixed bugs in color handling * Multilingual hyphenation * Auto-guessing image size, support for sizes in % * Gutter margins * Big refactoring * More tolerant of minor problems * Limited _raw_ directive (you can insert pagebreaks and vertical space) * Implemented a "traditional" docutils writer * Offer a reasonable API for use as a library * Fixed copyright/licensing * code-block now supports including files (whole or in part) so you can highlight external code. New in 0.5 ---------- * Support for :widths: in tables * Support for captions in tables * Support for multi-row headers in tables * Improved definition lists * Fixed bug in image directive * Whitespace conforming to PEP8 * Fixed bug in text size on code-block * Package is more setuptools compliant * Fix for option groups in option lists * Citations support * Title reference role fix New in 0.4 ---------- * Fixed bullet and item lists indentation/nesting. * Implemented citations * Working links between footnotes and its references * Justification enabled by default * Fixed table bug (demo.txt works now) * Title and author support in PDF properties * Support for document title in header/footer * Custom page sizes and margins New in 0.3 ---------- * Font embedding (use any True Type font in your PDFs) * Syntax highlighter using Pygments * User's manual * External/custom stylesheets * Support for page numbers in header/footer rst2pdf-0.93/gui/0000775000175000017500000000000012064144440013462 5ustar ralsinaralsinarst2pdf-0.93/gui/freeze.py0000664000175000017500000000172111256672474015334 0ustar ralsinaralsina# -*- coding: utf-8 -*- import cx_Freeze import sys base = None if sys.platform == "win32": base = "Win32GUI" includes = [ "sip", "PyQt4.QtXml" ] packages = [ "pygments" , "pygments.lexers", "pygments.styles", "docutils.writers", "docutils.readers", "docutils.languages", ] excludes = [ "matplotlib", "PythonMagick", "sphinx", "pyPdf" ] executables = [ cx_Freeze.Executable("main.py", base = base, ) ] includeFiles = [ ("../rst2pdf/styles", "styles"), ] options = dict( #copyDependentFiles = True, include_files = includeFiles, includes = includes, excludes = excludes, packages = packages) cx_Freeze.setup( name = "bookrest", version = "0.1", description = "A rst2pdf GUI", executables = executables, options = dict(build_exe = options) ) rst2pdf-0.93/gui/icons/0000775000175000017500000000000012064144440014575 5ustar ralsinaralsinarst2pdf-0.93/gui/icons/previous.svg0000664000175000017500000000105311256230677017203 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/up.svg0000664000175000017500000000126511261010013015730 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/kaddressbook.svg0000664000175000017500000000214411257041771020000 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/viewmag-.svg0000664000175000017500000000210411256230677017041 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/next.svg0000664000175000017500000000105311256230677016305 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/redo.svg0000664000175000017500000000200611256743473016262 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/pdf.svg0000664000175000017500000000301611256230677016101 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/color.svg0000664000175000017500000000756411260377526016462 0ustar ralsinaralsina image/svg+xml rst2pdf-0.93/gui/icons/close.svg0000664000175000017500000000441411257045062016431 0ustar ralsinaralsina image/svg+xml rst2pdf-0.93/gui/icons/find.svg0000664000175000017500000000146711257045601016250 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/viewmag+.svg0000664000175000017500000000243511256230677017046 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/file.svg0000664000175000017500000000221311260400172016225 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/fileopen.svg0000664000175000017500000000335711256230677017141 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/filesave.svg0000664000175000017500000000244511256230677017133 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/new.svg0000664000175000017500000000337011257517646016131 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/editcut.svg0000664000175000017500000000426311256743473017001 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/bookrest.jpg0000664000175000017500000003647311257150601017143 0ustar ralsinaralsinaJFIFHH:ICC_PROFILE*lcms0mntrGRAYXYZ  %acspAPPLlcms-lcmsdmndjdesc,tdmddhwtptkTRCdesc(lcms internal)desclcms gray virtual profiledescgray built-inXYZ -curv3C  !"$"$ vG!1"AQ2aq#BR3bCSr4$cs5DTd?j!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!kҩ&ꝇ;٪'*>7Pf~(BR!B!B!B!B!B!B! ܒg=lQ5vnL-kU]fZ]W0q;~:"n!B!B!B!B!B!B!wV9T{m=S&Vz;'v[̮PR3YNG3iK|@񷍽&‡$σ+NB!B!B!B!B!B!]^߽of}o)kW{r@ֳRĎVVNs i'M_fG73`i r7ijpK#;~nR~}R!B!B!B!B!B! >uҷm͛+ISfg ִ˽%0\*_/wTAGkvKq7~i0F~jE ܩrER3P4(veW [#fV B]RgIw(Ok^1l+ pэZe[V!7hc>L$ɎYEJ!B!B!B!B!z5m;&pxQUsk|Z UYpT`Q3eݴ6P5]Lbê<8w&ŪNiq؆痲[ OC쎸KQ!1F/,wy<.?]19Gj\F2XRͣ܌-{/chb"Wɗ׸ acXpJ:,S#2JڮV/Ύ7@ݫwǺHSyFW+ y#sOafB!B!B!B!B>YOhGV xFEWiU,i :x%?r -wV{#pK8듙8pkܺճp Xaqq'F}c6gqGjw'I44hyH3ZFUsv.2\zrz 6|`(f**Ky9ǘ'C>d@y){-dCJ|5I= gF*c=BsY8m\\VHtn\HB!B!B!B!^Hm/i x cz-x|tDdnRj,~R.;{jN4FXh⹢\+gbm@:+ gvHEIؗ4RxQAn.&h`IqS4bGy<;t)M[pyr{l: |qf!kC1Vc a [2H"QOS⩵r>9V5>˛Uz9?\|^[.$)\B!B!B!BSO MuWdrKw{a8~OsY7xKx˪p;%Fx9j7G3;=f}y$?r3GR:FJڄ8$7\YEVNa ,@5BxeK,m (G 5`M{RF9NJj\.~1FOv*O[TtXqx8q -+.6/K+w~q1#4om9CF}ظ0ʉ1^Y3wЙ!%ve2XSSJmCÌXf6DnW'ezJ=C44 ?5jٿzÌnx@[f3$73-,=[)ϩ^X+2X%M?呞?%GbqXo,ytq@ 4rt? SKG0CL$,.\n tv~%p^$sd:.>Ek_ӡZ!ż0/R ' e5G?5G]y AE5k2va05Hc9@ =Cs1<|9݀ l ռzV S%j%JYtTG*J͇d#7ԯ>@hP(&:[5Js͉Y,-/͕{6;`kv.&7d \F3;HB!B!B/\ml%`]b/R9Ka7b`Gݏ+$I!=9daalL20M> +d|'pm2!`תKpocNap2sd+XM(e-]-~ODXsy_2#yEҟuI|4`&! $8\xGR=˾!pPK)|D:%B!B!BِQ%ZM]CFW)ncb!Y7%}?k{6*:QW`kRzRڊ%x@\dpHI4or} <- 5 :3` FcwӐ]LK"!B!B}5oi>,K_Û0cTshќT(hk]Y,kxC=ea6']D[F`оGM&F9InA,z(&94,{O6~ Cg/.es q>yX]ܻFf;)M*ХYQ,$%y0$w ZgӶ9w4q?UAŒꤺ>*a4UU%YcH3j$C 6|$y0ksu{VU"qPb8lEL{T\ً>!5" )f4s6|BVo {da԰Q|5Ha$NkٙN}[{ms!B!BhuQ$1?ͣTo~*)cca\fEiٛ71Nj> [/E#RuqOzc쳗s[&DIɎ0>G֊yw8@8?W.E `P+Gjw%j[GSCNBn?~FKW'-w#C%: Kjj[k_-~a,wPKk@HR,zTꁨp,@i7!J+ )Ez$PR$͏9,'tTB!BˣFߑC]R{5Eحݳ2 f./}Y-$hS*ު<[2y8`i~&!y20 Į0YOl4+QXX$\ iàESR.G|a0=qnTXǖiR;;.nIsIV Ӎ֥huYWң1ymdjʓ |ǒ78+)ڏ" -:s̥J,~gӘ` Ӑ]I;/k#,i M?L5'(<ɫkuJxi* "A d*.:=%9)o+)>Js11p0I7w;[HtGFqnE)tY H3Bb!ܥB!^ 'U5Qg"( s.#ch #mWҪȀP>T[I#AK0ךWYhy1K9&+̸fgԯD3-/[nH(jRF\um%j˜hIVR~a]p> ~{tU,}:SAJy*Pò~z\ZhPr 6{CШU~tt:~WJ6Z+)=<#|R.H X %M8kJPU]G:T~}Z$_h;l; t%kLǹrqg{bM`&9]N(;$>4l T%SJB!^̮Ǽjg-{=mNӰy13Ctn콜,YIHvyҶ Maj4TjkE5P$ڕ\~;ݏcIɞS_xh.h+ekq`Y Z BX ?3c%? *=ʚZH_44&u@u|t5-k^)? xT~YgPVg<8ejC^%Z1AROwUaF[la%dx}5еM HZFrsn%0Ɨ{ݼ)Ab_K1j(wZ(X)gQ$䊑ߑ2W-,oAo/PlEԗUc+f#<C( 4\ ךC U g4N_^IU7iaVpF*Uq'tTB5m]N/k½/ ~$VY؏ҝWcN@VĩUR9tU{nt ;7 lp@=ίdog&LLv+|OEf*= ;hxZ'8Q7u}QwZEXg C$( .L>3A GPК;vj5"S@iueJs@!Y'mn5t+60ab#5uq3մνMqu;|R7*˗g%j@?&f$&Ϡ= m[\yU;4e5kKH7/9&1RSjT-s6M-{*T`o0r,?EݠQW*)Ts? . $Ƀcnث敺!+q܍rNM?p?of\^[f3igfl,Lg?¾\%M( S[+C&Hj`jh)5Vs,c1k"@96~6S3؏ עsԔRnWJ&Jz#3s!\G8黓dRdʪ8gpWUܖשNdx({XtJ rZq"3^k3_Z ɄcqTyb/ZIu ! {ebGq; oO_O886nϏ ̫I C*ַ$ֽ֗STy;Si7dNx`tO~k xl;0i<] }sMJWT @bdsû̵1Ԋ ӽAYBV< TU׆NVU/xe?z|Tȴܪ\H<60~)/,VQÑgR5 55Ԡ7ɛ #EG47S_J10༟Z"~v%d q윤yx<ގ#)QݫPJiBz9Q045~FmuZpPPF;Y<*? j0eL@"㪻R kFk['ڱ|k7u1Q/Cn*'Wܮnf߅[ԓś2CJ\hQŧolSgq-5^#!B@$D ";@%ir3wVD_Sԭq5bY@Bv !:EDgE+p5@Fjc 7SwZ<V  T:6f`,GƾY@T=9T[F dԦvW^JGc6ڱ)KЁUZ-E z^KHe9&fq{_BSlG(Aak("Ia;Ii◍y +Q&WKg@"¶(F0UkAMd glbT`Uֆ4ȸy:6fij8H{ZF- 1Vq4oJ'+ɕs7AmjhG 1sT 4jX|9u5x=f֥VFJ\t$|Ҙݹ?Z.oYO H8F wp*>Y"wjs\׷3\)P{MPNaBOHel,N%CQ ` gIq6Θ[:UP5ক9Q PУ>]_`%.>J)hTETx*T,4?%>MQM$a@Yy#3MtXhcəjwX~Tg{FY#~(^] ̣y#AEECCF}t&̩}iGppT|d^R4:8yW=&B+R- Uĺ36)`a"HuXd?t|Ә֊FT2IPlӺzu$\7{:/.[,CoGUpqgw Cifbքb䇴E $8U:*<;&7wԹ˦g_iSGO00aɻcTCEL<)Z#.:$(Vz/]S"^Ǧzzr]ެ+歕DqP. 0x Š=KXtUϓIejJ( K:v뢫$}Q!]b&a918j~5ёƃD:%b"?6ʃ%db(t׽̨Kq4U2 ZFO6\@s׭;.)%;)NX>jdEgG1ƲRp4xU!%k@^C|G8Z4A ܻU8 xM H_ U89?HyӴacs7)V Gb$,wd4&6Di^PZkF|9VYf͕D:VV{w] .u g |VH67Yrex+Ye~.y;s|^Vf ̂A񞱚a6PE)>Iz0=X=]P!#+SߔX%EX^].@ڰJ QJ.:JPZGj!vK {m pRݪ:C3\AlI*jk3H{ti%)uaIHh,- HLuik\?,G5GXEENyu0<Cxꥎp.G&._XG?wWȪҶֵjTxѫo{ D;yGM?"5->%o+/w"9{ɍzzu9ѝK'h} $ RWZw*d$V꛰vIAv+X ۲<n>I8[^Po}>Z.F0L,qK4)My AҽnгT:3G0^k*3d[J=7 ؅9pPǑBiAzVJ? ,->.I=#}+5MmsS']4{Akvk06Jty>kM Z~K ״?U&+"9@h~S^SQU/J.IHY/h6[f#n-8M(2?j uAudt* &cjDmU~7ĭ,ĭ 1z8MRs6[pF98b^|x;['Vi5vk~(~Ev6)2AݨS~ VlFnIo p!A.nXqUҴ #B2`5aFI[zN5mU7Vn!vQ1^LJhW[2L[gWsp8:CIElQX>کWk)1.Yl<q6E( w^Sy ϭ1VkJ 陮;0y:lOe{}TB3*OeItXGMN۳ۑ̪(B!B! !-c[15Z5S榺J514ҬGDi§wp)WV K{trkQoWlMMS鍓c\`#仸Huv}]>"9C#$a SՃ9;4m= y5ӨSEYSEni1Ԯ3;4R?_wO3MHB& G[Nw2xs#'z{/!B!B&C3ym]L6=Uƞ+\xF_湴sjqfկ)u^%=pieL9c62媠T҈!UUipRׂ4qGeUE:9E\8TUy!B!B!B.XZA=Vqqkpj[5UW'/5ej2::Q4 I/üq >'pvVc\:T6G Wd9̂Yc6ЮZxLF+$旰NjY9NZTHǰݥ.jb!Wg˕5U߷V6Њ`[NkiڨP/ VPܕs:hB!B!B!B>FvUZxp⣐4L'6tȥI^>ʊtSZ򫗏KjJ|-snԗNG6:*f?usOB7FK')^@ZN]>%0h8Z |2lNvTC ݶq{[ lVK5_;\(VKwz=+_Z/:!B!B!B!Mm7ժ,xr ɯMd'fۗ٢[NaKHD1D..э;+*6챎aWW !_wdIIg(1X_We W(ӝ 2;Jdsly.7}hvv޷6FBkO ++!B!B!B!BE4vMmж3h{f\X8Y k15Mf%7z-}AХJE2^)r4\$/%+ĵ1 %l:#Y|n؁{y&ňddg(1?=OG5풯5 F@KU#4>Xi4Z<2V|T-ipЄ!B!B!B!BҴǏhf`eEp)'oĜ4*Λ7><ю+7!jPFd*f Ll3\yey-0vO#w޲]#;P6!<5Y+d5 [u8\@ЍXǜ$IܕDzܯ%B!B!B!B!B!3sx}6l xLv.&k kb\G!EFoӠҭf1~V%v7 hd卤9uHy7R9RK(b=iDo"!Fکr4RY=YVmO%B!B!B!B!B!!Bۆ,bPbmtZˑB_Kvx6/X>9N~`RPzS)oߍ꬜g} KBjRrst2pdf-0.93/gui/icons/configure.svg0000664000175000017500000000221011260127470017273 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/down.svg0000664000175000017500000000105211261010013016245 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/editpaste.svg0000664000175000017500000000426511256743473017324 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/editcopy.svg0000664000175000017500000000403311256743473017153 0ustar ralsinaralsina rst2pdf-0.93/gui/icons/undo.svg0000664000175000017500000000211611256743473016300 0ustar ralsinaralsina rst2pdf-0.93/gui/Ui_style.py0000664000175000017500000004261011260431161015630 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'style.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(376, 611) self.formLayout = QtGui.QFormLayout(Form) self.formLayout.setObjectName("formLayout") self.label = QtGui.QLabel(Form) self.label.setObjectName("label") self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label) self.lineEdit = QtGui.QLineEdit(Form) self.lineEdit.setObjectName("lineEdit") self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.lineEdit) self.label_2 = QtGui.QLabel(Form) self.label_2.setObjectName("label_2") self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_2) self.comboBox = QtGui.QComboBox(Form) self.comboBox.setObjectName("comboBox") self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.comboBox) self.label_3 = QtGui.QLabel(Form) self.label_3.setObjectName("label_3") self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_3) self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.fontComboBox = QtGui.QFontComboBox(Form) self.fontComboBox.setObjectName("fontComboBox") self.gridLayout.addWidget(self.fontComboBox, 1, 0, 1, 2) self.checkBox = QtGui.QCheckBox(Form) self.checkBox.setObjectName("checkBox") self.gridLayout.addWidget(self.checkBox, 2, 0, 1, 1) self.checkBox_2 = QtGui.QCheckBox(Form) self.checkBox_2.setObjectName("checkBox_2") self.gridLayout.addWidget(self.checkBox_2, 2, 1, 1, 1) self.checkBox_3 = QtGui.QCheckBox(Form) self.checkBox_3.setObjectName("checkBox_3") self.gridLayout.addWidget(self.checkBox_3, 0, 0, 1, 1) self.formLayout.setLayout(2, QtGui.QFormLayout.FieldRole, self.gridLayout) self.label_4 = QtGui.QLabel(Form) self.label_4.setObjectName("label_4") self.formLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_4) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.spinBox = QtGui.QSpinBox(Form) self.spinBox.setObjectName("spinBox") self.horizontalLayout_2.addWidget(self.spinBox) self.comboBox_2 = QtGui.QComboBox(Form) self.comboBox_2.setObjectName("comboBox_2") self.horizontalLayout_2.addWidget(self.comboBox_2) self.checkBox_4 = QtGui.QCheckBox(Form) self.checkBox_4.setObjectName("checkBox_4") self.horizontalLayout_2.addWidget(self.checkBox_4) self.formLayout.setLayout(3, QtGui.QFormLayout.FieldRole, self.horizontalLayout_2) self.label_5 = QtGui.QLabel(Form) self.label_5.setObjectName("label_5") self.formLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_5) self.gridLayout_2 = QtGui.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") self.checkBox_11 = QtGui.QCheckBox(Form) self.checkBox_11.setObjectName("checkBox_11") self.gridLayout_2.addWidget(self.checkBox_11, 0, 0, 1, 1) self.comboBox_9 = QtGui.QComboBox(Form) self.comboBox_9.setObjectName("comboBox_9") self.gridLayout_2.addWidget(self.comboBox_9, 0, 1, 1, 1) self.spinBox_2 = QtGui.QSpinBox(Form) self.spinBox_2.setObjectName("spinBox_2") self.gridLayout_2.addWidget(self.spinBox_2, 1, 0, 1, 1) self.comboBox_3 = QtGui.QComboBox(Form) self.comboBox_3.setObjectName("comboBox_3") self.gridLayout_2.addWidget(self.comboBox_3, 1, 1, 1, 1) self.formLayout.setLayout(4, QtGui.QFormLayout.FieldRole, self.gridLayout_2) self.label_6 = QtGui.QLabel(Form) self.label_6.setObjectName("label_6") self.formLayout.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_6) self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.toolButton = QtGui.QToolButton(Form) self.toolButton.setObjectName("toolButton") self.horizontalLayout_3.addWidget(self.toolButton) self.toolButton_2 = QtGui.QToolButton(Form) self.toolButton_2.setObjectName("toolButton_2") self.horizontalLayout_3.addWidget(self.toolButton_2) self.toolButton_3 = QtGui.QToolButton(Form) self.toolButton_3.setObjectName("toolButton_3") self.horizontalLayout_3.addWidget(self.toolButton_3) self.toolButton_4 = QtGui.QToolButton(Form) self.toolButton_4.setObjectName("toolButton_4") self.horizontalLayout_3.addWidget(self.toolButton_4) self.checkBox_10 = QtGui.QCheckBox(Form) self.checkBox_10.setObjectName("checkBox_10") self.horizontalLayout_3.addWidget(self.checkBox_10) self.formLayout.setLayout(5, QtGui.QFormLayout.FieldRole, self.horizontalLayout_3) self.label_7 = QtGui.QLabel(Form) self.label_7.setObjectName("label_7") self.formLayout.setWidget(6, QtGui.QFormLayout.LabelRole, self.label_7) self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.spinBox_3 = QtGui.QSpinBox(Form) self.spinBox_3.setObjectName("spinBox_3") self.horizontalLayout_4.addWidget(self.spinBox_3) self.comboBox_4 = QtGui.QComboBox(Form) self.comboBox_4.setObjectName("comboBox_4") self.horizontalLayout_4.addWidget(self.comboBox_4) self.checkBox_9 = QtGui.QCheckBox(Form) self.checkBox_9.setObjectName("checkBox_9") self.horizontalLayout_4.addWidget(self.checkBox_9) self.formLayout.setLayout(6, QtGui.QFormLayout.FieldRole, self.horizontalLayout_4) self.label_8 = QtGui.QLabel(Form) self.label_8.setObjectName("label_8") self.formLayout.setWidget(7, QtGui.QFormLayout.LabelRole, self.label_8) self.horizontalLayout_5 = QtGui.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.spinBox_4 = QtGui.QSpinBox(Form) self.spinBox_4.setObjectName("spinBox_4") self.horizontalLayout_5.addWidget(self.spinBox_4) self.comboBox_5 = QtGui.QComboBox(Form) self.comboBox_5.setObjectName("comboBox_5") self.horizontalLayout_5.addWidget(self.comboBox_5) self.checkBox_8 = QtGui.QCheckBox(Form) self.checkBox_8.setObjectName("checkBox_8") self.horizontalLayout_5.addWidget(self.checkBox_8) self.formLayout.setLayout(7, QtGui.QFormLayout.FieldRole, self.horizontalLayout_5) self.label_9 = QtGui.QLabel(Form) self.label_9.setObjectName("label_9") self.formLayout.setWidget(8, QtGui.QFormLayout.LabelRole, self.label_9) self.horizontalLayout_6 = QtGui.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.spinBox_5 = QtGui.QSpinBox(Form) self.spinBox_5.setObjectName("spinBox_5") self.horizontalLayout_6.addWidget(self.spinBox_5) self.comboBox_6 = QtGui.QComboBox(Form) self.comboBox_6.setObjectName("comboBox_6") self.horizontalLayout_6.addWidget(self.comboBox_6) self.checkBox_7 = QtGui.QCheckBox(Form) self.checkBox_7.setObjectName("checkBox_7") self.horizontalLayout_6.addWidget(self.checkBox_7) self.formLayout.setLayout(8, QtGui.QFormLayout.FieldRole, self.horizontalLayout_6) self.label_10 = QtGui.QLabel(Form) self.label_10.setObjectName("label_10") self.formLayout.setWidget(9, QtGui.QFormLayout.LabelRole, self.label_10) self.horizontalLayout_7 = QtGui.QHBoxLayout() self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.spinBox_6 = QtGui.QSpinBox(Form) self.spinBox_6.setObjectName("spinBox_6") self.horizontalLayout_7.addWidget(self.spinBox_6) self.comboBox_7 = QtGui.QComboBox(Form) self.comboBox_7.setObjectName("comboBox_7") self.horizontalLayout_7.addWidget(self.comboBox_7) self.checkBox_6 = QtGui.QCheckBox(Form) self.checkBox_6.setObjectName("checkBox_6") self.horizontalLayout_7.addWidget(self.checkBox_6) self.formLayout.setLayout(9, QtGui.QFormLayout.FieldRole, self.horizontalLayout_7) self.label_11 = QtGui.QLabel(Form) self.label_11.setObjectName("label_11") self.formLayout.setWidget(10, QtGui.QFormLayout.LabelRole, self.label_11) self.horizontalLayout_8 = QtGui.QHBoxLayout() self.horizontalLayout_8.setObjectName("horizontalLayout_8") self.spinBox_7 = QtGui.QSpinBox(Form) self.spinBox_7.setObjectName("spinBox_7") self.horizontalLayout_8.addWidget(self.spinBox_7) self.comboBox_8 = QtGui.QComboBox(Form) self.comboBox_8.setObjectName("comboBox_8") self.horizontalLayout_8.addWidget(self.comboBox_8) self.checkBox_5 = QtGui.QCheckBox(Form) self.checkBox_5.setObjectName("checkBox_5") self.horizontalLayout_8.addWidget(self.checkBox_5) self.formLayout.setLayout(10, QtGui.QFormLayout.FieldRole, self.horizontalLayout_8) self.label_12 = QtGui.QLabel(Form) self.label_12.setObjectName("label_12") self.formLayout.setWidget(11, QtGui.QFormLayout.LabelRole, self.label_12) self.horizontalLayout_9 = QtGui.QHBoxLayout() self.horizontalLayout_9.setObjectName("horizontalLayout_9") self.label_14 = QtGui.QLabel(Form) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_14.sizePolicy().hasHeightForWidth()) self.label_14.setSizePolicy(sizePolicy) self.label_14.setObjectName("label_14") self.horizontalLayout_9.addWidget(self.label_14) self.toolButton_5 = QtGui.QToolButton(Form) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/color.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.toolButton_5.setIcon(icon) self.toolButton_5.setObjectName("toolButton_5") self.horizontalLayout_9.addWidget(self.toolButton_5) self.formLayout.setLayout(11, QtGui.QFormLayout.FieldRole, self.horizontalLayout_9) self.label_13 = QtGui.QLabel(Form) self.label_13.setObjectName("label_13") self.formLayout.setWidget(12, QtGui.QFormLayout.LabelRole, self.label_13) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label_15 = QtGui.QLabel(Form) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_15.sizePolicy().hasHeightForWidth()) self.label_15.setSizePolicy(sizePolicy) self.label_15.setObjectName("label_15") self.horizontalLayout.addWidget(self.label_15) self.toolButton_6 = QtGui.QToolButton(Form) self.toolButton_6.setIcon(icon) self.toolButton_6.setObjectName("toolButton_6") self.horizontalLayout.addWidget(self.toolButton_6) self.formLayout.setLayout(12, QtGui.QFormLayout.FieldRole, self.horizontalLayout) self.gridLayout_3 = QtGui.QGridLayout() self.gridLayout_3.setObjectName("gridLayout_3") self.checkBox_12 = QtGui.QCheckBox(Form) self.checkBox_12.setObjectName("checkBox_12") self.gridLayout_3.addWidget(self.checkBox_12, 0, 0, 1, 1) self.checkBox_13 = QtGui.QCheckBox(Form) self.checkBox_13.setObjectName("checkBox_13") self.gridLayout_3.addWidget(self.checkBox_13, 0, 1, 1, 1) self.checkBox_14 = QtGui.QCheckBox(Form) self.checkBox_14.setObjectName("checkBox_14") self.gridLayout_3.addWidget(self.checkBox_14, 1, 0, 1, 1) self.checkBox_15 = QtGui.QCheckBox(Form) self.checkBox_15.setObjectName("checkBox_15") self.gridLayout_3.addWidget(self.checkBox_15, 1, 1, 1, 1) self.formLayout.setLayout(13, QtGui.QFormLayout.FieldRole, self.gridLayout_3) self.label_16 = QtGui.QLabel(Form) self.label_16.setObjectName("label_16") self.formLayout.setWidget(14, QtGui.QFormLayout.LabelRole, self.label_16) self.lineEdit_2 = QtGui.QLineEdit(Form) self.lineEdit_2.setObjectName("lineEdit_2") self.formLayout.setWidget(14, QtGui.QFormLayout.FieldRole, self.lineEdit_2) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "Name:", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("Form", "Parent:", None, QtGui.QApplication.UnicodeUTF8)) self.label_3.setText(QtGui.QApplication.translate("Form", "Font:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox.setText(QtGui.QApplication.translate("Form", "Bold", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_2.setText(QtGui.QApplication.translate("Form", "Italic", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_3.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_4.setText(QtGui.QApplication.translate("Form", "Font Size:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_4.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_5.setText(QtGui.QApplication.translate("Form", "Leading:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_11.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_6.setText(QtGui.QApplication.translate("Form", "Alignment:", None, QtGui.QApplication.UnicodeUTF8)) self.toolButton.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.toolButton_2.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.toolButton_3.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.toolButton_4.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_10.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_7.setText(QtGui.QApplication.translate("Form", "Left Indent:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_9.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_8.setText(QtGui.QApplication.translate("Form", "Right Indent:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_8.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_9.setText(QtGui.QApplication.translate("Form", "First Line Indent:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_7.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_10.setText(QtGui.QApplication.translate("Form", "Space Before:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_6.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_11.setText(QtGui.QApplication.translate("Form", "Space After:", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_5.setText(QtGui.QApplication.translate("Form", "Inherited", None, QtGui.QApplication.UnicodeUTF8)) self.label_12.setText(QtGui.QApplication.translate("Form", "Text Color:", None, QtGui.QApplication.UnicodeUTF8)) self.label_14.setText(QtGui.QApplication.translate("Form", "#000000", None, QtGui.QApplication.UnicodeUTF8)) self.toolButton_5.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.label_13.setText(QtGui.QApplication.translate("Form", "Background Color:", None, QtGui.QApplication.UnicodeUTF8)) self.label_15.setText(QtGui.QApplication.translate("Form", "#ffffff", None, QtGui.QApplication.UnicodeUTF8)) self.toolButton_6.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_12.setText(QtGui.QApplication.translate("Form", "Allow Widows", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_13.setText(QtGui.QApplication.translate("Form", "Allow Orphans", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_14.setText(QtGui.QApplication.translate("Form", "Hyphenation", None, QtGui.QApplication.UnicodeUTF8)) self.checkBox_15.setText(QtGui.QApplication.translate("Form", "Kerning", None, QtGui.QApplication.UnicodeUTF8)) self.label_16.setText(QtGui.QApplication.translate("Form", "Languaje:", None, QtGui.QApplication.UnicodeUTF8)) import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/style.ui0000664000175000017500000002507211260377462015200 0ustar ralsinaralsina Form 0 0 376 611 Form Name: Parent: Font: Bold Italic Inherited Font Size: Inherited Leading: Inherited Alignment: ... ... ... ... Inherited Left Indent: Inherited Right Indent: Inherited First Line Indent: Inherited Space Before: Inherited Space After: Inherited Text Color: 0 0 #000000 ... :/icons/color.svg:/icons/color.svg Background Color: 0 0 #ffffff ... :/icons/color.svg:/icons/color.svg Allow Widows Allow Orphans Hyphenation Kerning Languaje: rst2pdf-0.93/gui/Ui_stylesheets.py0000664000175000017500000001231511261010013017031 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'stylesheets.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(619, 451) self.horizontalLayout_2 = QtGui.QHBoxLayout(Form) self.horizontalLayout_2.setMargin(0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.verticalLayout_2 = QtGui.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.label_2 = QtGui.QLabel(Form) self.label_2.setObjectName("label_2") self.verticalLayout_2.addWidget(self.label_2) self.system = QtGui.QListWidget(Form) self.system.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) self.system.setTextElideMode(QtCore.Qt.ElideMiddle) self.system.setObjectName("system") self.verticalLayout_2.addWidget(self.system) self.horizontalLayout_2.addLayout(self.verticalLayout_2) self.addFromSystem = QtGui.QToolButton(Form) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/next.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.addFromSystem.setIcon(icon) self.addFromSystem.setObjectName("addFromSystem") self.horizontalLayout_2.addWidget(self.addFromSystem) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label = QtGui.QLabel(Form) self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.addFromFile = QtGui.QToolButton(Form) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/icons/new.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.addFromFile.setIcon(icon1) self.addFromFile.setObjectName("addFromFile") self.horizontalLayout.addWidget(self.addFromFile) self.remove = QtGui.QToolButton(Form) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/icons/close.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.remove.setIcon(icon2) self.remove.setObjectName("remove") self.horizontalLayout.addWidget(self.remove) self.up = QtGui.QToolButton(Form) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/icons/up.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.up.setIcon(icon3) self.up.setObjectName("up") self.horizontalLayout.addWidget(self.up) self.down = QtGui.QToolButton(Form) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/icons/down.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.down.setIcon(icon4) self.down.setObjectName("down") self.horizontalLayout.addWidget(self.down) self.verticalLayout.addLayout(self.horizontalLayout) self.custom = QtGui.QListWidget(Form) self.custom.setSelectionMode(QtGui.QAbstractItemView.SingleSelection) self.custom.setTextElideMode(QtCore.Qt.ElideMiddle) self.custom.setObjectName("custom") self.verticalLayout.addWidget(self.custom) self.horizontalLayout_2.addLayout(self.verticalLayout) self.retranslateUi(Form) QtCore.QObject.connect(self.system, QtCore.SIGNAL("itemSelectionChanged()"), Form.applyChanges) QtCore.QObject.connect(self.custom, QtCore.SIGNAL("itemSelectionChanged()"), Form.applyChanges) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("Form", "System StyleSheets:", None, QtGui.QApplication.UnicodeUTF8)) self.addFromSystem.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "Custom StyleSheets:", None, QtGui.QApplication.UnicodeUTF8)) self.addFromFile.setToolTip(QtGui.QApplication.translate("Form", "Add another stylesheet", None, QtGui.QApplication.UnicodeUTF8)) self.addFromFile.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.remove.setToolTip(QtGui.QApplication.translate("Form", "Remove selected stylesheet", None, QtGui.QApplication.UnicodeUTF8)) self.remove.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.up.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.down.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/Ui_pagesetup.py0000664000175000017500000002466711260740467016515 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'pagesetup.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(367, 360) self.formLayout = QtGui.QFormLayout(Form) self.formLayout.setObjectName("formLayout") self.label = QtGui.QLabel(Form) self.label.setObjectName("label") self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label) self.firstTemplate = QtGui.QComboBox(Form) self.firstTemplate.setObjectName("firstTemplate") self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.firstTemplate) self.label_2 = QtGui.QLabel(Form) self.label_2.setObjectName("label_2") self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_2) self.size = QtGui.QComboBox(Form) self.size.setObjectName("size") self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.size.addItem(QtCore.QString()) self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.size) self.label_3 = QtGui.QLabel(Form) self.label_3.setObjectName("label_3") self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_3) self.height = QtGui.QLineEdit(Form) self.height.setObjectName("height") self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.height) self.label_4 = QtGui.QLabel(Form) self.label_4.setObjectName("label_4") self.formLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_4) self.width = QtGui.QLineEdit(Form) self.width.setObjectName("width") self.formLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.width) self.label_5 = QtGui.QLabel(Form) self.label_5.setObjectName("label_5") self.formLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_5) self.margin_top = QtGui.QLineEdit(Form) self.margin_top.setObjectName("margin_top") self.formLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.margin_top) self.label_6 = QtGui.QLabel(Form) self.label_6.setObjectName("label_6") self.formLayout.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_6) self.margin_bottom = QtGui.QLineEdit(Form) self.margin_bottom.setObjectName("margin_bottom") self.formLayout.setWidget(5, QtGui.QFormLayout.FieldRole, self.margin_bottom) self.label_7 = QtGui.QLabel(Form) self.label_7.setObjectName("label_7") self.formLayout.setWidget(6, QtGui.QFormLayout.LabelRole, self.label_7) self.margin_left = QtGui.QLineEdit(Form) self.margin_left.setObjectName("margin_left") self.formLayout.setWidget(6, QtGui.QFormLayout.FieldRole, self.margin_left) self.label_8 = QtGui.QLabel(Form) self.label_8.setObjectName("label_8") self.formLayout.setWidget(7, QtGui.QFormLayout.LabelRole, self.label_8) self.margin_right = QtGui.QLineEdit(Form) self.margin_right.setObjectName("margin_right") self.formLayout.setWidget(7, QtGui.QFormLayout.FieldRole, self.margin_right) self.label_9 = QtGui.QLabel(Form) self.label_9.setObjectName("label_9") self.formLayout.setWidget(8, QtGui.QFormLayout.LabelRole, self.label_9) self.spacing_header = QtGui.QLineEdit(Form) self.spacing_header.setObjectName("spacing_header") self.formLayout.setWidget(8, QtGui.QFormLayout.FieldRole, self.spacing_header) self.label_10 = QtGui.QLabel(Form) self.label_10.setObjectName("label_10") self.formLayout.setWidget(9, QtGui.QFormLayout.LabelRole, self.label_10) self.spacing_footer = QtGui.QLineEdit(Form) self.spacing_footer.setObjectName("spacing_footer") self.formLayout.setWidget(9, QtGui.QFormLayout.FieldRole, self.spacing_footer) self.label_11 = QtGui.QLabel(Form) self.label_11.setObjectName("label_11") self.formLayout.setWidget(10, QtGui.QFormLayout.LabelRole, self.label_11) self.margin_gutter = QtGui.QLineEdit(Form) self.margin_gutter.setObjectName("margin_gutter") self.formLayout.setWidget(10, QtGui.QFormLayout.FieldRole, self.margin_gutter) self.label.setBuddy(self.firstTemplate) self.label_2.setBuddy(self.size) self.label_3.setBuddy(self.height) self.label_4.setBuddy(self.width) self.label_5.setBuddy(self.margin_top) self.label_6.setBuddy(self.margin_bottom) self.label_7.setBuddy(self.margin_left) self.label_8.setBuddy(self.margin_right) self.label_9.setBuddy(self.spacing_header) self.label_10.setBuddy(self.spacing_footer) self.label_11.setBuddy(self.margin_gutter) self.retranslateUi(Form) QtCore.QObject.connect(self.firstTemplate, QtCore.SIGNAL("currentIndexChanged(QString)"), Form.applyChanges) QtCore.QObject.connect(self.size, QtCore.SIGNAL("currentIndexChanged(QString)"), Form.applyChanges) QtCore.QObject.connect(self.height, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.width, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.margin_top, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.margin_bottom, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.margin_left, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.margin_right, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.spacing_header, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.spacing_footer, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.margin_gutter, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "First Page Template:", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("Form", "Page Size:", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(0, QtGui.QApplication.translate("Form", "Custom", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(1, QtGui.QApplication.translate("Form", "A0", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(2, QtGui.QApplication.translate("Form", "A1", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(3, QtGui.QApplication.translate("Form", "A2", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(4, QtGui.QApplication.translate("Form", "A3", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(5, QtGui.QApplication.translate("Form", "A4", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(6, QtGui.QApplication.translate("Form", "A5", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(7, QtGui.QApplication.translate("Form", "A6", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(8, QtGui.QApplication.translate("Form", "B0", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(9, QtGui.QApplication.translate("Form", "B1", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(10, QtGui.QApplication.translate("Form", "B2", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(11, QtGui.QApplication.translate("Form", "B3", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(12, QtGui.QApplication.translate("Form", "B4", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(13, QtGui.QApplication.translate("Form", "B5", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(14, QtGui.QApplication.translate("Form", "B6", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(15, QtGui.QApplication.translate("Form", "letter", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(16, QtGui.QApplication.translate("Form", "legal", None, QtGui.QApplication.UnicodeUTF8)) self.size.setItemText(17, QtGui.QApplication.translate("Form", "11\"x17\"", None, QtGui.QApplication.UnicodeUTF8)) self.label_3.setText(QtGui.QApplication.translate("Form", "Height:", None, QtGui.QApplication.UnicodeUTF8)) self.label_4.setText(QtGui.QApplication.translate("Form", "Width:", None, QtGui.QApplication.UnicodeUTF8)) self.label_5.setText(QtGui.QApplication.translate("Form", "Top Margin:", None, QtGui.QApplication.UnicodeUTF8)) self.label_6.setText(QtGui.QApplication.translate("Form", "Bottom Margin:", None, QtGui.QApplication.UnicodeUTF8)) self.label_7.setText(QtGui.QApplication.translate("Form", "Left Margin:", None, QtGui.QApplication.UnicodeUTF8)) self.label_8.setText(QtGui.QApplication.translate("Form", "Right Margin:", None, QtGui.QApplication.UnicodeUTF8)) self.label_9.setText(QtGui.QApplication.translate("Form", "Header Margin:", None, QtGui.QApplication.UnicodeUTF8)) self.label_10.setText(QtGui.QApplication.translate("Form", "Footer Margin:", None, QtGui.QApplication.UnicodeUTF8)) self.label_11.setText(QtGui.QApplication.translate("Form", "Gutter Margin:", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/searchwidget.ui0000664000175000017500000000536211257045062016503 0ustar ralsinaralsina Form 0 0 369 32 Form 2 ... :/icons/close.svg:/icons/close.svg Esc true &Find: text &Previous :/icons/previous.svg:/icons/previous.svg Qt::ToolButtonIconOnly true &Next :/icons/next.svg:/icons/next.svg Qt::ToolButtonIconOnly true &Match Case text returnPressed() next animateClick() 122 14 247 21 rst2pdf-0.93/gui/codeeditor.py0000664000175000017500000001302711261250547016164 0ustar ralsinaralsina# -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class LineNumberArea(QtGui.QWidget): def __init__(self,editor): self.codeEditor=editor QtGui.QWidget.__init__(self, editor) def sizeHint(self): return QtCore.QSize(self.codeEditor.lineNumberAreaWidth(),0) def paintEvent(self, event): self.codeEditor.lineNumberAreaPaintEvent(event) class CodeEditor(QtGui.QPlainTextEdit): def __init__(self,parent=None): QtGui.QPlainTextEdit.__init__(self,parent) self.lineNumberArea = LineNumberArea (self) self.connect(self, QtCore.SIGNAL("blockCountChanged(int)"), self.updateLineNumberAreaWidth) self.connect(self, QtCore.SIGNAL("updateRequest(const QRect &, int)"), self.updateLineNumberArea) self.connect(self, QtCore.SIGNAL("cursorPositionChanged()"), self.highlightCurrentLine) self.updateLineNumberAreaWidth(0) self.errorPos=None self.highlightCurrentLine() def lineNumberAreaPaintEvent(self, event): painter=QtGui.QPainter(self.lineNumberArea) painter.fillRect(event.rect(), QtCore.Qt.lightGray) block = self.firstVisibleBlock() blockNumber = block.blockNumber(); top = int(self.blockBoundingGeometry(block).translated(self.contentOffset()).top()) bottom = top + int(self.blockBoundingRect(block).height()) while block.isValid() and top <= event.rect().bottom(): if block.isVisible() and bottom >= event.rect().top(): number = str(blockNumber + 1) painter.setPen(QtCore.Qt.black) painter.drawText(0, top, self.lineNumberArea.width(), self.fontMetrics().height(), QtCore.Qt.AlignRight, number) block = block.next() top = bottom bottom = top + int(self.blockBoundingRect(block).height()) blockNumber+=1 def lineNumberAreaWidth(self): digits = 1 _max = max (1, self.blockCount()) while (_max >= 10): _max = _max/10 digits+=1 space = 5 + self.fontMetrics().width('9') * digits return space def updateLineNumberAreaWidth(self, newBlockCount): self.setViewportMargins(self.lineNumberAreaWidth(), 0, 0, 0) def updateLineNumberArea(self, rect, dy): if dy: self.lineNumberArea.scroll(0, dy); else: self.lineNumberArea.update(0, rect.y(), self.lineNumberArea.width(), rect.height()) if rect.contains(self.viewport().rect()): self.updateLineNumberAreaWidth(0) def resizeEvent(self, e): QtGui.QPlainTextEdit.resizeEvent(self,e) self.cr = self.contentsRect() self.lineNumberArea.setGeometry(self.cr.left(), self.cr.top(), self.lineNumberAreaWidth(), self.cr.height()) def highlightError(self,pos): self.errorPos=pos self.highlightCurrentLine() def highlightCurrentLine(self): extraSelections=[] if not self.isReadOnly(): selection = QtGui.QTextEdit.ExtraSelection() lineColor = QtGui.QColor(QtCore.Qt.yellow).lighter(160) selection.format.setBackground(lineColor) selection.format.setProperty(QtGui.QTextFormat.FullWidthSelection, True) selection.cursor = self.textCursor() selection.cursor.clearSelection() extraSelections.append(selection) if self.errorPos is not None: errorSel = QtGui.QTextEdit.ExtraSelection() lineColor = QtGui.QColor(QtCore.Qt.red).lighter(160) errorSel.format.setBackground(lineColor) errorSel.format.setProperty(QtGui.QTextFormat.FullWidthSelection, True) errorSel.cursor = QtGui.QTextCursor(self.document()) errorSel.cursor.setPosition(self.errorPos) errorSel.cursor.clearSelection() extraSelections.append(errorSel) self.setExtraSelections(extraSelections) if __name__ == "__main__": try: import json except ImportError: import simplejson as json from highlighter import Highlighter app = QtGui.QApplication(sys.argv) js = CodeEditor() js.setWindowTitle('javascript') hl=Highlighter(js.document(),"javascript") js.show() def validateJSON(): style=unicode(js.toPlainText()) if not style.strip(): #no point in validating an empty string return pos=None try: json.loads(style) except ValueError, e: s=str(e) print s if s == 'No JSON object could be decoded': pos=0 elif s.startswith('Expecting '): pos=int(s.split(' ')[-1][:-1]) elif s.startswith('Extra data'): pos=int(s.split(' ')[-3]) else: print 'UNKNOWN ERROR' # This makes a red bar appear in the line # containing position pos js.highlightError(pos) # Run validateJSON on every keypress js.connect(js,QtCore.SIGNAL('textChanged()'),validateJSON) sys.exit(app.exec_()) rst2pdf-0.93/gui/stylesheets.ui0000664000175000017500000001120111261717445016401 0ustar ralsinaralsina Form 0 0 619 451 Form 0 System StyleSheets: QAbstractItemView::MultiSelection ... :/icons/next.svg:/icons/next.svg Custom StyleSheets: Qt::Horizontal 40 20 Add another stylesheet ... :/icons/new.svg:/icons/new.svg Remove selected stylesheet ... :/icons/close.svg:/icons/close.svg ... :/icons/up.svg:/icons/up.svg ... :/icons/down.svg:/icons/down.svg QAbstractItemView::SingleSelection Qt::ElideMiddle system itemSelectionChanged() Form applyChanges() 289 275 374 233 custom itemSelectionChanged() Form applyChanges() 281 159 377 158 applyChanges() rst2pdf-0.93/gui/icons.qrc0000664000175000017500000000144511261010013015272 0ustar ralsinaralsina icons/up.svg icons/down.svg icons/file.svg icons/color.svg icons/configure.svg icons/new.svg icons/bookrest.jpg icons/find.svg icons/close.svg icons/kaddressbook.svg icons/editcopy.svg icons/editcut.svg icons/editpaste.svg icons/redo.svg icons/undo.svg icons/filesave.svg icons/pdf.svg icons/fileopen.svg icons/viewmag+.svg icons/viewmag-.svg icons/next.svg icons/previous.svg rst2pdf-0.93/gui/pypoppler/0000775000175000017500000000000012064144440015514 5ustar ralsinaralsinarst2pdf-0.93/gui/pypoppler/test-poppler.py0000664000175000017500000000340411265225567020541 0ustar ralsinaralsinaimport sys from PyQt4 import QtCore, QtGui import QtPoppler class PDFDisplay(QtGui.QWidget): def __init__(self, doc): QtGui.QWidget.__init__(self, None) self.doc = doc self.pdfImage = None self.currentPage = 0 self.display() def paintEvent(self, event): painter = QtGui.QPainter(self) if self.pdfImage is not None: painter.drawImage(0, 0, self.pdfImage) else: print "No Pixmap" def keyPressEvent(self, event): if event.key() == QtCore.Qt.Key_Down: if self.currentPage + 1 < self.doc.numPages(): self.currentPage += 1 self.display() elif event.key() == QtCore.Qt.Key_Up: if self.currentPage > 0: self.currentPage -= 1 self.display() elif (event.key() == QtCore.Qt.Key_F): r = QtCore.QRectF() print self.doc.page(self.currentPage).search(QtCore.QString("Dinamis"), r, QtPoppler.Poppler.Page.FromTop, QtPoppler.Poppler.Page.CaseSensitive) print r elif (event.key() == QtCore.Qt.Key_Q): sys.exit(0) def display(self): if self.doc is not None: page = self.doc.page(self.currentPage) if page: self.pdfImage = None self.pdfImage = page.renderToImage() self.update() #delete page; else: print "doc not loaded" if __name__ == "__main__": app = QtGui.QApplication(sys.argv) d = QtPoppler.Poppler.Document.load(sys.argv[1]) d.setRenderHint(QtPoppler.Poppler.Document.Antialiasing and QtPoppler.Poppler.Document.TextAntialiasing) disp = PDFDisplay(d) disp.show() sys.exit(app.exec_())rst2pdf-0.93/gui/pypoppler/AUTHORS0000664000175000017500000000021611265225567016577 0ustar ralsinaralsinaCopyright 2007-2009 Rajeev J Sebastian Following persons contributed to this binding: Roberto Alsina (ralsina) rst2pdf-0.93/gui/pypoppler/__init__.py0000664000175000017500000000000011265225720017616 0ustar ralsinaralsinarst2pdf-0.93/gui/pypoppler/poppler-qt4.sip0000664000175000017500000001653111265225567020442 0ustar ralsinaralsina%Module QtPoppler 0 %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtXml/QtXmlmod.sip // %Include poppler-link.sip // %Include poppler-annotation.sip %ModuleHeaderCode #define UNSTABLE_POPPLER_QT4 1 #include #include %End /** The Poppler Qt bindings */ namespace Poppler { class LinkDestination { %TypeHeaderCode #define UNSTABLE_POPPLER_QT4 1 #include #include %End public: LinkDestination(const QString &description); enum Kind { /** * The new viewport is specified in terms of: * - possibile new left coordinate (see isChangeLeft() ) * - possibile new top coordinate (see isChangeTop() ) * - possibile new zoom level (see isChangeZoom() ) */ destXYZ = 1, destFit = 2, destFitH = 3, destFitV = 4, destFitR = 5, destFitB = 6, destFitBH = 7, destFitBV = 8 }; Kind kind() const; int pageNumber() const; double left() const; double bottom() const; double right() const; double top() const; }; class TextBox { %TypeHeaderCode #define UNSTABLE_POPPLER_QT4 1 #include %End public: TextBox(const QString& text, const QRectF &bBox); const QString &text() const; const QRectF &boundingBox() const; Poppler::TextBox *nextWord() const; bool hasSpaceAfter() const; private: TextBox( const Poppler::TextBox & ); }; class FontInfo { %TypeHeaderCode #define UNSTABLE_POPPLER_QT4 1 #include %End public: enum Type { unknown = 0, Type1 = 1, Type1C = 2, Type3 = 3, TrueType = 4, CIDType0 = 5, CIDType0C = 6, CIDTrueType = 7 }; // FontInfo( const FontInfoData &fid ); ~FontInfo(); const QString &name() const; const QString &file() const; bool isEmbedded() const; bool isSubset() const; Type type() const; const QString typeName() const; private: FontInfo(); // FontInfo(const FontInfo &); }; class EmbeddedFile { %TypeHeaderCode #define UNSTABLE_POPPLER_QT4 1 #include %End public: // EmbeddedFile(EmbFile *embfile); ~EmbeddedFile(); QString name() const; QString description() const; QDateTime modDate() const; QDateTime createDate() const; QByteArray data(); private: EmbeddedFile(); EmbeddedFile( const Poppler::EmbeddedFile & ); }; class Page { %TypeHeaderCode #define UNSTABLE_POPPLER_QT4 1 #include %End public: ~Page(); QImage renderToImage(double xres=72.0, double yres=72.0, int x=-1, int y=-1, int w=-1, int h=-1) const; QString text(const QRectF &rect) const; enum SearchDirection { FromTop, NextResult, PreviousResult }; enum SearchMode { CaseSensitive, CaseInsensitive }; bool search(const QString &text, QRectF &rect, SearchDirection direction, SearchMode caseSensitive) const; QList textList() const; QSizeF pageSizeF() const; QSize pageSize() const; // PageTransition *transition() const; enum Orientation { Landscape, ///< Landscape orientation (portrait, with 90 degrees clockwise rotation ) Portrait, ///< Normal portrait orientation Seascape, ///< Seascape orientation (portrait, with 270 degrees clockwise rotation) UpsideDown ///< Upside down orientation (portrait, with 180 degrees rotation) }; Orientation orientation() const; void defaultCTM(double *CTM, double dpiX, double dpiY, int rotate, bool upsideDown); // QList links() const; // QList annotations () const; private: Page(); Page( const Poppler::Page & ); }; class Document { %TypeHeaderCode #define UNSTABLE_POPPLER_QT4 1 #include %End public: enum PageMode { UseNone, ///< No mode - neither document outline nor thumbnail images are visible UseOutlines, ///< Document outline visible UseThumbs, ///< Thumbnail images visible FullScreen, ///< Fullscreen mode (no menubar, windows controls etc) UseOC, ///< Optional content group panel visible UseAttach ///< Attachments panel visible }; enum PageLayout { NoLayout, ///< Layout not specified SinglePage, ///< Display a single page OneColumn, ///< Display a single column of pages TwoColumnLeft, ///< Display the pages in two columns, with odd-numbered pages on the left TwoColumnRight, ///< Display the pages in two columns, with odd-numbered pages on the right TwoPageLeft, ///< Display the pages two at a time, with odd-numbered pages on the left TwoPageRight, ///< Display the pages two at a time, with odd-numbered pages on the right }; static Poppler::Document *load(const QString & filePath, const QByteArray &ownerPassword=QByteArray(), const QByteArray &userPassword=QByteArray()); static Poppler::Document *loadFromData(const QByteArray & fileContents, const QByteArray &ownerPassword=QByteArray(), const QByteArray &userPassword=QByteArray()); Poppler::Page *page(int index) const; Poppler::Page *page(QString label) const; int numPages() const; PageMode pageMode() const; PageLayout pageLayout() const; bool unlock(const QByteArray &ownerPassword, const QByteArray &userPassword); bool isLocked() const; QDateTime date( const QString & data ) const; QString info( const QString & data ) const; QStringList infoKeys() const; bool isEncrypted() const; bool isLinearized() const; bool okToPrint() const; bool okToPrintHighRes() const; bool okToChange() const; bool okToCopy() const; bool okToAddNotes() const; bool okToFillForm() const; bool okToCreateFormFields() const; bool okToExtractForAccessibility() const; bool okToAssemble() const; double pdfVersion() const; QList fonts() const; bool scanForFonts( int numPages, QList *fontList ) const; const QList &embeddedFiles() const; bool hasEmbeddedFiles() const; QDomDocument *toc() const; Poppler::LinkDestination *linkDestination( const QString &name ); // bool print(const QString &fileName, const QList pageList, double hDPI, double vDPI, int rotate); void setPaperColor(const QColor &color); QColor paperColor() const; enum RenderBackend { SplashBackend, ///< Splash backend ArthurBackend ///< Arthur (Qt4) backend }; enum RenderHint { Antialiasing = 0x00000001, ///< Antialiasing for graphics TextAntialiasing = 0x00000002 ///< Antialiasing for text }; // void setRenderBackend( RenderBackend backend ); // RenderBackend renderBackend() const; // static QSet availableRenderBackends(); void setRenderHint( RenderHint hint, bool on = true ); // RenderHints renderHints() const; ~Document(); private: Document(); Document(const Poppler::Document &); }; QDateTime convertDate( char *dateString ); }; rst2pdf-0.93/gui/pypoppler/configure.py0000664000175000017500000000500411265225567020062 0ustar ralsinaralsina# -*- coding: utf-8 -*- import os import sipconfig import PyQt4.pyqtconfig as pyqtconfig # The name of the SIP build file generated by SIP and used by the build # system. build_file = "QtPoppler.sbf" # Get the PyQt configuration information. config = pyqtconfig.Configuration() print dir(config) # Get the extra SIP flags needed by the imported qt module. Note that # this normally only includes those flags (-x and -t) that relate to SIP's # versioning system. qt_sip_flags = config.pyqt_sip_flags # Run SIP to generate the code. Note that we tell SIP where to find the qt # module's specification files using the -I flag. os.system(" ".join([config.sip_bin, "-c", ".", "-b", build_file, "-I", config.pyqt_sip_dir, qt_sip_flags, "poppler-qt4.sip"])) # We are going to install the SIP specification file for this module and # its configuration module. installs = [] installs.append(["poppler-qt4.sip", os.path.join(config.default_sip_dir, "QtPoppler")]) installs.append(["pypopplerqt4config.py", config.default_mod_dir]) # Create the Makefile. The QtModuleMakefile class provided by the # pyqtconfig module takes care of all the extra preprocessor, compiler and # linker flags needed by the Qt library. makefile = pyqtconfig.QtGuiModuleMakefile( configuration=config, build_file=build_file, installs=installs ) # Add the library we are wrapping. The name doesn't include any platform # specific prefixes or extensions (e.g. the "lib" prefix on UNIX, or the # ".dll" extension on Windows). makefile.extra_lib_dirs = [config.qt_lib_dir] makefile.extra_libs = ["poppler-qt4"] makefile.extra_include_dirs = [config.qt_inc_dir+"/QtXml", "/usr/include/poppler"] # Generate the Makefile itself. makefile.generate() # Now we create the configuration module. This is done by merging a Python # dictionary (whose values are normally determined dynamically) with a # (static) template. content = { # Publish where the SIP specifications for this module will be # installed. "pypopplerqt4_sip_dir": config.default_sip_dir, # Publish the set of SIP flags needed by this module. As these are the # same flags needed by the qt module we could leave it out, but this # allows us to change the flags at a later date without breaking # scripts that import the configuration module. "pypopplerqt4_sip_flags": qt_sip_flags } # This creates the helloconfig.py module from the helloconfig.py.in # template and the dictionary. sipconfig.create_config_module("pypopplerqt4config.py", "pypopplerqt4config.py.in", content)rst2pdf-0.93/gui/pypoppler/LICENSE0000664000175000017500000000224411265225567016537 0ustar ralsinaralsinaThis binding is licensed under the MIT license to facilitate easiest use in any project. Copyright (c) 2007-2009 Rajeev J Sebastian Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. rst2pdf-0.93/gui/pypoppler/pypopplerqt4config.py.in0000664000175000017500000000231611265225567022362 0ustar ralsinaralsinaimport pyqtconfig # These are installation specific values created when Hello was configured. # The following line will be replaced when this template is used to create # the final configuration module. # @SIP_CONFIGURATION@ class Configuration(pyqtconfig.Configuration): """The class that represents Hello configuration values. """ def __init__(self, sub_cfg=None): """Initialise an instance of the class. sub_cfg is the list of sub-class configurations. It should be None when called normally. """ # This is all standard code to be copied verbatim except for the # name of the module containing the super-class. if sub_cfg: cfg = sub_cfg else: cfg = [] cfg.append(_pkg_config) pyqtconfig.Configuration.__init__(self, cfg) class HelloModuleMakefile(pyqtconfig.QtModuleMakefile): """The Makefile class for modules that %Import hello. """ def finalise(self): """Finalise the macros. """ # Make sure our C++ library is linked. self.extra_libs.append("QtPoppler") # Let the super-class do what it needs to. pyqtconfig.QtModuleMakefile.finalise(self)rst2pdf-0.93/gui/build.sh0000775000175000017500000000024111260431161015111 0ustar ralsinaralsina #!/bin/sh for a in *.ui do pyuic4 $a -o Ui_`basename $a .ui`.py -x sed -i 's/^# Created.*$//' Ui_`basename $a .ui`.py done pyrcc4 icons.qrc -o icons_rc.py rst2pdf-0.93/gui/Ui_main.py0000664000175000017500000005261611265475127015442 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'main.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(574, 601) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/kaddressbook.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) self.centralWidget = QtGui.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.horizontalLayout_3 = QtGui.QHBoxLayout(self.centralWidget) self.horizontalLayout_3.setMargin(3) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.tabs = QtGui.QTabWidget(self.centralWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.tabs.sizePolicy().hasHeightForWidth()) self.tabs.setSizePolicy(sizePolicy) self.tabs.setObjectName("tabs") self.tab = QtGui.QWidget() self.tab.setObjectName("tab") self.horizontalLayout = QtGui.QHBoxLayout(self.tab) self.horizontalLayout.setMargin(0) self.horizontalLayout.setObjectName("horizontalLayout") self.text = CodeEditor(self.tab) font = QtGui.QFont() font.setFamily("DejaVu Sans Mono") self.text.setFont(font) self.text.setFrameShape(QtGui.QFrame.NoFrame) self.text.setFrameShadow(QtGui.QFrame.Plain) self.text.setLineWidth(0) self.text.setObjectName("text") self.horizontalLayout.addWidget(self.text) self.tabs.addTab(self.tab, "") self.tab_2 = QtGui.QWidget() self.tab_2.setObjectName("tab_2") self.horizontalLayout_2 = QtGui.QHBoxLayout(self.tab_2) self.horizontalLayout_2.setMargin(0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.style = CodeEditor(self.tab_2) font = QtGui.QFont() font.setFamily("DejaVu Sans Mono") self.style.setFont(font) self.style.setFrameShape(QtGui.QFrame.NoFrame) self.style.setObjectName("style") self.horizontalLayout_2.addWidget(self.style) self.tabs.addTab(self.tab_2, "") self.horizontalLayout_3.addWidget(self.tabs) MainWindow.setCentralWidget(self.centralWidget) self.statusBar = QtGui.QStatusBar(MainWindow) self.statusBar.setObjectName("statusBar") MainWindow.setStatusBar(self.statusBar) self.menuBar = QtGui.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 574, 32)) self.menuBar.setObjectName("menuBar") self.menuText = QtGui.QMenu(self.menuBar) self.menuText.setObjectName("menuText") self.menuView = QtGui.QMenu(self.menuBar) self.menuView.setObjectName("menuView") self.menuEdit = QtGui.QMenu(self.menuBar) self.menuEdit.setObjectName("menuEdit") self.menuHelp = QtGui.QMenu(self.menuBar) self.menuHelp.setObjectName("menuHelp") MainWindow.setMenuBar(self.menuBar) self.toolBar = QtGui.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.pdfbar = QtGui.QToolBar(MainWindow) self.pdfbar.setObjectName("pdfbar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.pdfbar) self.dock = QtGui.QDockWidget(MainWindow) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/icons/pdf.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.dock.setWindowIcon(icon1) self.dock.setObjectName("dock") self.dockWidgetContents = QtGui.QWidget() self.dockWidgetContents.setObjectName("dockWidgetContents") self.verticalLayout = QtGui.QVBoxLayout(self.dockWidgetContents) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName("verticalLayout") self.dockLayout = QtGui.QVBoxLayout() self.dockLayout.setSpacing(0) self.dockLayout.setSizeConstraint(QtGui.QLayout.SetNoConstraint) self.dockLayout.setContentsMargins(-1, -1, -1, 0) self.dockLayout.setObjectName("dockLayout") self.verticalLayout.addLayout(self.dockLayout) self.dock.setWidget(self.dockWidgetContents) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dock) self.editbar = QtGui.QToolBar(MainWindow) self.editbar.setObjectName("editbar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.editbar) self.searchbar = QtGui.QToolBar(MainWindow) self.searchbar.setMovable(False) self.searchbar.setAllowedAreas(QtCore.Qt.BottomToolBarArea) self.searchbar.setFloatable(False) self.searchbar.setObjectName("searchbar") MainWindow.addToolBar(QtCore.Qt.BottomToolBarArea, self.searchbar) self.structure = QtGui.QDockWidget(MainWindow) self.structure.setObjectName("structure") self.dockWidgetContents_2 = QtGui.QWidget() self.dockWidgetContents_2.setObjectName("dockWidgetContents_2") self.verticalLayout_3 = QtGui.QVBoxLayout(self.dockWidgetContents_2) self.verticalLayout_3.setMargin(0) self.verticalLayout_3.setObjectName("verticalLayout_3") self.verticalLayout_2 = QtGui.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.tree = QtGui.QTreeWidget(self.dockWidgetContents_2) self.tree.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) self.tree.setProperty("showDropIndicator", QtCore.QVariant(False)) self.tree.setAlternatingRowColors(True) self.tree.setHeaderHidden(False) self.tree.setObjectName("tree") self.tree.header().setVisible(True) self.tree.header().setStretchLastSection(False) self.verticalLayout_2.addWidget(self.tree) self.verticalLayout_3.addLayout(self.verticalLayout_2) self.structure.setWidget(self.dockWidgetContents_2) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.structure) self.actionLoad_Text = QtGui.QAction(MainWindow) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/icons/fileopen.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionLoad_Text.setIcon(icon2) self.actionLoad_Text.setObjectName("actionLoad_Text") self.actionLoad_Style = QtGui.QAction(MainWindow) self.actionLoad_Style.setIcon(icon2) self.actionLoad_Style.setObjectName("actionLoad_Style") self.actionRender = QtGui.QAction(MainWindow) self.actionRender.setIcon(icon1) self.actionRender.setObjectName("actionRender") self.actionSave_Text = QtGui.QAction(MainWindow) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/icons/filesave.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionSave_Text.setIcon(icon3) self.actionSave_Text.setObjectName("actionSave_Text") self.actionSave_Style = QtGui.QAction(MainWindow) self.actionSave_Style.setIcon(icon3) self.actionSave_Style.setObjectName("actionSave_Style") self.actionSave_PDF = QtGui.QAction(MainWindow) self.actionSave_PDF.setIcon(icon1) self.actionSave_PDF.setObjectName("actionSave_PDF") self.actionSaveAs_Text = QtGui.QAction(MainWindow) self.actionSaveAs_Text.setIcon(icon3) self.actionSaveAs_Text.setObjectName("actionSaveAs_Text") self.actionSaveAs_Style = QtGui.QAction(MainWindow) self.actionSaveAs_Style.setIcon(icon3) self.actionSaveAs_Style.setObjectName("actionSaveAs_Style") self.actionSaveAs_PDF = QtGui.QAction(MainWindow) self.actionSaveAs_PDF.setIcon(icon1) self.actionSaveAs_PDF.setObjectName("actionSaveAs_PDF") self.actionUndo1 = QtGui.QAction(MainWindow) self.actionUndo1.setEnabled(False) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/icons/undo.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionUndo1.setIcon(icon4) self.actionUndo1.setObjectName("actionUndo1") self.actionRedo1 = QtGui.QAction(MainWindow) self.actionRedo1.setEnabled(False) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/icons/redo.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionRedo1.setIcon(icon5) self.actionRedo1.setObjectName("actionRedo1") self.actionCut1 = QtGui.QAction(MainWindow) self.actionCut1.setEnabled(False) icon6 = QtGui.QIcon() icon6.addPixmap(QtGui.QPixmap(":/icons/editcut.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionCut1.setIcon(icon6) self.actionCut1.setObjectName("actionCut1") self.actionCopy1 = QtGui.QAction(MainWindow) self.actionCopy1.setEnabled(False) icon7 = QtGui.QIcon() icon7.addPixmap(QtGui.QPixmap(":/icons/editcopy.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionCopy1.setIcon(icon7) self.actionCopy1.setObjectName("actionCopy1") self.actionPaste1 = QtGui.QAction(MainWindow) self.actionPaste1.setEnabled(False) icon8 = QtGui.QIcon() icon8.addPixmap(QtGui.QPixmap(":/icons/editpaste.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionPaste1.setIcon(icon8) self.actionPaste1.setObjectName("actionPaste1") self.actionUndo2 = QtGui.QAction(MainWindow) self.actionUndo2.setEnabled(False) self.actionUndo2.setIcon(icon4) self.actionUndo2.setObjectName("actionUndo2") self.actionRedo2 = QtGui.QAction(MainWindow) self.actionRedo2.setEnabled(False) self.actionRedo2.setIcon(icon5) self.actionRedo2.setObjectName("actionRedo2") self.actionCut2 = QtGui.QAction(MainWindow) self.actionCut2.setEnabled(False) self.actionCut2.setIcon(icon6) self.actionCut2.setObjectName("actionCut2") self.actionCopy2 = QtGui.QAction(MainWindow) self.actionCopy2.setEnabled(False) self.actionCopy2.setIcon(icon7) self.actionCopy2.setObjectName("actionCopy2") self.actionPaste2 = QtGui.QAction(MainWindow) self.actionPaste2.setEnabled(False) self.actionPaste2.setIcon(icon8) self.actionPaste2.setObjectName("actionPaste2") self.actionFind = QtGui.QAction(MainWindow) icon9 = QtGui.QIcon() icon9.addPixmap(QtGui.QPixmap(":/icons/find.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionFind.setIcon(icon9) self.actionFind.setObjectName("actionFind") self.actionAbout_Bookrest = QtGui.QAction(MainWindow) self.actionAbout_Bookrest.setObjectName("actionAbout_Bookrest") self.actionTest_Action = QtGui.QAction(MainWindow) self.actionTest_Action.setObjectName("actionTest_Action") self.actionSettings = QtGui.QAction(MainWindow) icon10 = QtGui.QIcon() icon10.addPixmap(QtGui.QPixmap(":/icons/configure.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actionSettings.setIcon(icon10) self.actionSettings.setObjectName("actionSettings") self.menuText.addAction(self.actionLoad_Text) self.menuText.addAction(self.actionLoad_Style) self.menuText.addSeparator() self.menuText.addAction(self.actionSave_Text) self.menuText.addAction(self.actionSaveAs_Text) self.menuText.addAction(self.actionSave_Style) self.menuText.addAction(self.actionSaveAs_Style) self.menuText.addAction(self.actionSave_PDF) self.menuText.addAction(self.actionSaveAs_PDF) self.menuEdit.addAction(self.actionUndo1) self.menuEdit.addAction(self.actionUndo2) self.menuEdit.addAction(self.actionRedo1) self.menuEdit.addAction(self.actionRedo2) self.menuEdit.addSeparator() self.menuEdit.addAction(self.actionCut1) self.menuEdit.addAction(self.actionCut2) self.menuEdit.addAction(self.actionCopy1) self.menuEdit.addAction(self.actionCopy2) self.menuEdit.addAction(self.actionPaste1) self.menuEdit.addAction(self.actionPaste2) self.menuEdit.addSeparator() self.menuEdit.addAction(self.actionFind) self.menuEdit.addSeparator() self.menuEdit.addAction(self.actionSettings) self.menuHelp.addAction(self.actionAbout_Bookrest) self.menuBar.addAction(self.menuText.menuAction()) self.menuBar.addAction(self.menuEdit.menuAction()) self.menuBar.addAction(self.menuView.menuAction()) self.menuBar.addAction(self.menuHelp.menuAction()) self.toolBar.addAction(self.actionLoad_Text) self.toolBar.addAction(self.actionRender) self.toolBar.addAction(self.actionSettings) self.editbar.addAction(self.actionUndo1) self.editbar.addAction(self.actionUndo2) self.editbar.addAction(self.actionRedo1) self.editbar.addAction(self.actionRedo2) self.editbar.addAction(self.actionCut1) self.editbar.addAction(self.actionCut2) self.editbar.addAction(self.actionCopy1) self.editbar.addAction(self.actionCopy2) self.editbar.addAction(self.actionPaste1) self.editbar.addAction(self.actionPaste2) self.retranslateUi(MainWindow) self.tabs.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) MainWindow.setTabOrder(self.text, self.tabs) MainWindow.setTabOrder(self.tabs, self.style) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Bookrest", None, QtGui.QApplication.UnicodeUTF8)) self.tabs.setTabText(self.tabs.indexOf(self.tab), QtGui.QApplication.translate("MainWindow", "Text", None, QtGui.QApplication.UnicodeUTF8)) self.tabs.setTabText(self.tabs.indexOf(self.tab_2), QtGui.QApplication.translate("MainWindow", "StyleSheet", None, QtGui.QApplication.UnicodeUTF8)) self.menuText.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8)) self.menuView.setTitle(QtGui.QApplication.translate("MainWindow", "View", None, QtGui.QApplication.UnicodeUTF8)) self.menuEdit.setTitle(QtGui.QApplication.translate("MainWindow", "Edit", None, QtGui.QApplication.UnicodeUTF8)) self.menuHelp.setTitle(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8)) self.toolBar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar", None, QtGui.QApplication.UnicodeUTF8)) self.pdfbar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar_2", None, QtGui.QApplication.UnicodeUTF8)) self.dock.setWindowTitle(QtGui.QApplication.translate("MainWindow", "PDF Preview", None, QtGui.QApplication.UnicodeUTF8)) self.editbar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar_2", None, QtGui.QApplication.UnicodeUTF8)) self.searchbar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar_2", None, QtGui.QApplication.UnicodeUTF8)) self.structure.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Document Structure", None, QtGui.QApplication.UnicodeUTF8)) self.tree.headerItem().setText(0, QtGui.QApplication.translate("MainWindow", "Section", None, QtGui.QApplication.UnicodeUTF8)) self.tree.headerItem().setText(1, QtGui.QApplication.translate("MainWindow", "Line", None, QtGui.QApplication.UnicodeUTF8)) self.actionLoad_Text.setText(QtGui.QApplication.translate("MainWindow", "Open Text", None, QtGui.QApplication.UnicodeUTF8)) self.actionLoad_Text.setToolTip(QtGui.QApplication.translate("MainWindow", "Open Text", None, QtGui.QApplication.UnicodeUTF8)) self.actionLoad_Text.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+O", None, QtGui.QApplication.UnicodeUTF8)) self.actionLoad_Style.setText(QtGui.QApplication.translate("MainWindow", "Open Style", None, QtGui.QApplication.UnicodeUTF8)) self.actionLoad_Style.setToolTip(QtGui.QApplication.translate("MainWindow", "Open Style", None, QtGui.QApplication.UnicodeUTF8)) self.actionRender.setText(QtGui.QApplication.translate("MainWindow", "Render", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_Text.setText(QtGui.QApplication.translate("MainWindow", "Save Text", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_Text.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Text", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_Text.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+S", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_Style.setText(QtGui.QApplication.translate("MainWindow", "Save Style", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_Style.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Style", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_PDF.setText(QtGui.QApplication.translate("MainWindow", "Save PDF", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_PDF.setToolTip(QtGui.QApplication.translate("MainWindow", "Save PDF", None, QtGui.QApplication.UnicodeUTF8)) self.actionSaveAs_Text.setText(QtGui.QApplication.translate("MainWindow", "Save Text As", None, QtGui.QApplication.UnicodeUTF8)) self.actionSaveAs_Text.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Text", None, QtGui.QApplication.UnicodeUTF8)) self.actionSaveAs_Style.setText(QtGui.QApplication.translate("MainWindow", "Save Style As", None, QtGui.QApplication.UnicodeUTF8)) self.actionSaveAs_Style.setToolTip(QtGui.QApplication.translate("MainWindow", "Save Style", None, QtGui.QApplication.UnicodeUTF8)) self.actionSaveAs_PDF.setText(QtGui.QApplication.translate("MainWindow", "Save PDF As", None, QtGui.QApplication.UnicodeUTF8)) self.actionSaveAs_PDF.setToolTip(QtGui.QApplication.translate("MainWindow", "Save PDF", None, QtGui.QApplication.UnicodeUTF8)) self.actionUndo1.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) self.actionUndo1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Z", None, QtGui.QApplication.UnicodeUTF8)) self.actionRedo1.setText(QtGui.QApplication.translate("MainWindow", "Redo", None, QtGui.QApplication.UnicodeUTF8)) self.actionRedo1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Shift+Z", None, QtGui.QApplication.UnicodeUTF8)) self.actionCut1.setText(QtGui.QApplication.translate("MainWindow", "Cut", None, QtGui.QApplication.UnicodeUTF8)) self.actionCut1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+X", None, QtGui.QApplication.UnicodeUTF8)) self.actionCopy1.setText(QtGui.QApplication.translate("MainWindow", "Copy", None, QtGui.QApplication.UnicodeUTF8)) self.actionCopy1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+C", None, QtGui.QApplication.UnicodeUTF8)) self.actionPaste1.setText(QtGui.QApplication.translate("MainWindow", "Paste", None, QtGui.QApplication.UnicodeUTF8)) self.actionPaste1.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+V", None, QtGui.QApplication.UnicodeUTF8)) self.actionUndo2.setText(QtGui.QApplication.translate("MainWindow", "Undo", None, QtGui.QApplication.UnicodeUTF8)) self.actionUndo2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Z", None, QtGui.QApplication.UnicodeUTF8)) self.actionRedo2.setText(QtGui.QApplication.translate("MainWindow", "Redo", None, QtGui.QApplication.UnicodeUTF8)) self.actionRedo2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Shift+Z", None, QtGui.QApplication.UnicodeUTF8)) self.actionCut2.setText(QtGui.QApplication.translate("MainWindow", "Cut", None, QtGui.QApplication.UnicodeUTF8)) self.actionCut2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+X", None, QtGui.QApplication.UnicodeUTF8)) self.actionCopy2.setText(QtGui.QApplication.translate("MainWindow", "Copy", None, QtGui.QApplication.UnicodeUTF8)) self.actionCopy2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+C", None, QtGui.QApplication.UnicodeUTF8)) self.actionPaste2.setText(QtGui.QApplication.translate("MainWindow", "Paste", None, QtGui.QApplication.UnicodeUTF8)) self.actionPaste2.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+V", None, QtGui.QApplication.UnicodeUTF8)) self.actionFind.setText(QtGui.QApplication.translate("MainWindow", "Find", None, QtGui.QApplication.UnicodeUTF8)) self.actionFind.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+F", None, QtGui.QApplication.UnicodeUTF8)) self.actionAbout_Bookrest.setText(QtGui.QApplication.translate("MainWindow", "About Bookrest", None, QtGui.QApplication.UnicodeUTF8)) self.actionTest_Action.setText(QtGui.QApplication.translate("MainWindow", "Test Action", None, QtGui.QApplication.UnicodeUTF8)) self.actionSettings.setText(QtGui.QApplication.translate("MainWindow", "Settings", None, QtGui.QApplication.UnicodeUTF8)) from codeeditor import CodeEditor import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/main.py0000775000175000017500000012613511402777327015006 0ustar ralsinaralsina#!/usr/bin/env python # -*- coding: utf-8 -*- """The user interface for our app""" import os,sys,tempfile,re,functools,time,types,glob,codecs from pprint import pprint from copy import copy from multiprocessing import Process, Queue from Queue import Empty from hashlib import md5 from StringIO import StringIO from rst2pdf.createpdf import RstToPdf from rst2pdf.styles import StyleSheet from rst2pdf.log import log import logging import reportlab.lib.pagesizes as pagesizes log.setLevel(logging.INFO) import docutils # Import Qt modules from PyQt4 import QtCore,QtGui from pypoppler import QtPoppler # Syntax HL from highlighter import Highlighter # Import the compiled UI module from Ui_main import Ui_MainWindow from Ui_pdf import Ui_Form try: import json except ImportError: import simplejson as json try: from lxml import etree print("running with lxml.etree") except ImportError: try: # Python 2.5 import xml.etree.cElementTree as etree print("running with cElementTree on Python 2.5+") except ImportError: try: # Python 2.5 import xml.etree.ElementTree as etree print("running with ElementTree on Python 2.5+") except ImportError: try: # normal cElementTree install import cElementTree as etree print("running with cElementTree") except ImportError: try: # normal ElementTree install import elementtree.ElementTree as etree print("running with ElementTree") except ImportError: print("Failed to import ElementTree from any known place") from pygments import highlight from pygments.lexers import * from pygments.formatters import HtmlFormatter StringTypes=types.StringTypes+(QtCore.QString,) def renderQueue(render_queue, pdf_queue, doctree_queue): _renderer = RstToPdf(splittables=True) def render(doctree, preview=True): '''Render text to PDF via rst2pdf''' # FIXME: get parameters for this from somewhere sio=StringIO() _renderer.createPdf(doctree=doctree, output=sio, debugLinesPdf=preview) return sio.getvalue() while True: try: style_file, text, preview = render_queue.get(10) style_file, text, preview = render_queue.get(False) except Empty: # no more things to render, so do it try: if style_file: _renderer.loadStyles([style_file]) flag = True #os.unlink(style_file) warnings=StringIO() doctree = docutils.core.publish_doctree(text, settings_overrides={'warning_stream':warnings}) doctree_queue.put([doctree,warnings.getvalue()]) pdf_queue.put(render(doctree, preview)) except Exception, e: # Don't crash ever ;-) print e pass if os.getppid()==1: # Parent died sys.exit(0) class Main(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.doctree=None self.lineMarks={} # We put things we want rendered here self.render_queue = Queue() # We get things rendered back self.pdf_queue = Queue() # We get doctrees for the outline viewer self.doctree_queue = Queue() print 'Starting background renderer...', self.renderProcess=Process(target = renderQueue, args=(self.render_queue, self.pdf_queue, self.doctree_queue)) self.renderProcess.daemon=True self.renderProcess.start() print 'DONE' # This is always the same self.ui=Ui_MainWindow() self.ui.setupUi(self) # Adjust column widths in the structure tree self.ui.tree.header().setStretchLastSection(False) self.ui.tree.header().setResizeMode(0, QtGui.QHeaderView.Stretch) self.ui.tree.header().setResizeMode(1, QtGui.QHeaderView.ResizeToContents) self.pdf=PDFWidget() self.ui.pageNum = QtGui.QSpinBox() self.ui.pageNum.setMinimum(1) self.ui.pageNum.setValue(1) self.connect(self.pdf,QtCore.SIGNAL('pageCount'), self.ui.pageNum.setMaximum) self.connect(self.pdf,QtCore.SIGNAL('pageChanged'), self.ui.pageNum.setValue) self.connect(self.ui.pageNum,QtCore.SIGNAL('valueChanged(int)'), self.pdf.gotoPage) self.ui.actionShow_ToolBar=self.ui.toolBar.toggleViewAction() self.ui.actionShow_ToolBar.setText("Show Main Toolbar") self.ui.menuView.addAction(self.ui.actionShow_ToolBar) self.ui.pdfbar.addAction(self.pdf.ui.previous) self.ui.pdfbar.addWidget(self.ui.pageNum) self.ui.pdfbar.addAction(self.pdf.ui.next) self.ui.pdfbar.addSeparator() self.ui.pdfbar.addAction(self.pdf.ui.zoomin) self.ui.pdfbar.addAction(self.pdf.ui.zoomout) self.ui.actionShow_PDFBar=self.ui.pdfbar.toggleViewAction() self.ui.actionShow_PDFBar.setText("Show PDF Toolbar") self.ui.menuView.addAction(self.ui.actionShow_PDFBar) self.ui.dockLayout.addWidget(self.ui.pdfbar) self.ui.dockLayout.addWidget(self.pdf) self.ui.dock.hide() self.ui.actionShow_PDF=self.ui.dock.toggleViewAction() self.ui.actionShow_PDF.setText('Show Preview') self.ui.menuView.addAction(self.ui.actionShow_PDF) self.ui.actionShow_Structure=self.ui.structure.toggleViewAction() self.ui.actionShow_Structure.setText('Show Document Outline') self.ui.menuView.addAction(self.ui.actionShow_Structure) self.text_md5='' self.style_md5='' self.hl1 = Highlighter(self.ui.text.document(),'rest') self.hl2 = Highlighter(self.ui.style.document(),'javascript') self.editorPos=QtGui.QLabel() self.ui.statusBar.addWidget(self.editorPos) self.editorPos.show() self.statusMessage=QtGui.QLabel() self.ui.statusBar.addWidget(self.statusMessage) self.statusMessage.show() self.on_text_cursorPositionChanged() self.on_actionRender_triggered() # Connect editing actions to the editors self.ui.text.undoAvailable.connect(self.ui.actionUndo1.setEnabled) self.ui.actionUndo1.triggered.connect(self.ui.text.undo) self.ui.text.redoAvailable.connect(self.ui.actionRedo1.setEnabled) self.ui.actionRedo1.triggered.connect(self.ui.text.redo) self.ui.text.copyAvailable.connect(self.ui.actionCopy1.setEnabled) self.ui.actionCopy1.triggered.connect(self.ui.text.copy) self.ui.text.copyAvailable.connect(self.ui.actionCut1.setEnabled) self.ui.actionCut1.triggered.connect(self.ui.text.cut) self.ui.actionPaste1.triggered.connect(self.ui.text.paste) self.ui.style.undoAvailable.connect(self.ui.actionUndo2.setEnabled) self.ui.actionUndo2.triggered.connect(self.ui.style.undo) self.ui.style.redoAvailable.connect(self.ui.actionRedo2.setEnabled) self.ui.actionRedo2.triggered.connect(self.ui.style.redo) self.ui.style.copyAvailable.connect(self.ui.actionCopy2.setEnabled) self.ui.actionCopy2.triggered.connect(self.ui.style.copy) self.ui.style.copyAvailable.connect(self.ui.actionCut2.setEnabled) self.ui.actionCut2.triggered.connect(self.ui.style.cut) self.ui.actionPaste2.triggered.connect(self.ui.style.paste) self.clipBoard=QtGui.QApplication.clipboard() self.clipBoard.changed.connect(self.clipChanged) self.hookEditToolbar(self.ui.text) self.clipChanged(QtGui.QClipboard.Clipboard) self.text_fname=None self.style_fname=None self.pdf_fname=None self.ui.searchbar.setVisible(False) self.ui.searchWidget=SearchWidget() self.ui.searchbar.addWidget(self.ui.searchWidget) self.ui.actionFind.triggered.connect(self.ui.searchbar.show) self.ui.actionFind.triggered.connect(self.ui.searchWidget.ui.text.setFocus) self.ui.searchWidget.ui.close.clicked.connect(self.ui.searchbar.hide) self.ui.searchWidget.ui.close.clicked.connect(self.returnFocus) self.ui.searchWidget.ui.next.clicked.connect(self.doFind) self.ui.searchWidget.ui.previous.clicked.connect(self.doFindBackwards) self.updatePdf() self.renderTimer=QtCore.QTimer() self.renderTimer.timeout.connect(self.on_actionRender_triggered) self.renderTimer.start(5000) def returnFocus(self): """after the search bar closes, focus on the editing widget""" print 'RF:', self.ui.tabs.currentIndex() if self.ui.tabs.currentIndex()==0: self.ui.text.setFocus() else: self.ui.style.setFocus() def doFindBackwards (self): return self.doFind(backwards=True) def doFind(self, backwards=False): flags=QtGui.QTextDocument.FindFlags() print flags if backwards: flags=QtGui.QTextDocument.FindBackward if self.ui.searchWidget.ui.matchCase.isChecked(): flags=flags|QtGui.QTextDocument.FindCaseSensitively text=unicode(self.ui.searchWidget.ui.text.text()) print 'Serching for:',text if self.ui.tabs.currentIndex()==0: r=self.ui.text.find(text,flags) else: r=self.ui.style.find(text,flags) if r: self.statusMessage.setText('') else: self.statusMessage.setText('%s not found'%text) def clipChanged(self, mode=None): if mode is None: return if mode == QtGui.QClipboard.Clipboard: if unicode(self.clipBoard.text()): self.ui.actionPaste1.setEnabled(True) self.ui.actionPaste2.setEnabled(True) else: self.ui.actionPaste1.setEnabled(False) self.ui.actionPaste2.setEnabled(False) def hookEditToolbar(self, editor): if editor == self.ui.text: self.ui.actionUndo2.setVisible(False) self.ui.actionRedo2.setVisible(False) self.ui.actionCut2.setVisible(False) self.ui.actionPaste2.setVisible(False) self.ui.actionCopy2.setVisible(False) self.ui.actionUndo1.setVisible(True) self.ui.actionRedo1.setVisible(True) self.ui.actionCut1.setVisible(True) self.ui.actionPaste1.setVisible(True) self.ui.actionCopy1.setVisible(True) else: self.ui.actionUndo1.setVisible(False) self.ui.actionRedo1.setVisible(False) self.ui.actionCut1.setVisible(False) self.ui.actionPaste1.setVisible(False) self.ui.actionCopy1.setVisible(False) self.ui.actionUndo2.setVisible(True) self.ui.actionRedo2.setVisible(True) self.ui.actionCut2.setVisible(True) self.ui.actionPaste2.setVisible(True) self.ui.actionCopy2.setVisible(True) def createPopupMenu(self): self.popup=QtGui.QMenu() self.popup.addAction(self.ui.actionShow_ToolBar) self.popup.addAction(self.ui.actionShow_PDFBar) self.popup.addAction(self.ui.actionShow_PDF) return self.popup def enableHL(self): self.hl1.enabled=True self.hl2.enabled=True self.hl1.rehighlight() self.hl2.rehighlight() def disableHL(self): self.hl1.enabled=False self.hl2.enabled=False def on_actionSettings_triggered(self, b=None): if b is not None: return # I need to create a stylesheet object so I can parse and merge # the current stylesheet try: data=json.loads(unicode(self.ui.style.toPlainText())) except: # TODO: fail if sheet doesn't validate data={} config=ConfigDialog(data=copy(data)) config.exec_() # merge the edited stylesheet with current one because the editor # is not complete yet. When it is, just replace it. data.update(config.data) self.ui.style.setPlainText(json.dumps(data, indent=2)) def on_actionTest_Action_triggered(self, b=None): if b is not None: return self.testwidget=PageTemplates(self.styles) self.testwidget.show() def on_tree_itemClicked(self, item=None, column=None): if item is None: return destline=int(item.text(1))-1 destblock=self.ui.text.document().findBlockByLineNumber(destline) cursor=self.ui.text.textCursor() cursor.setPosition(destblock.position()) self.ui.text.setTextCursor(cursor) self.ui.text.ensureCursorVisible() def on_actionAbout_Bookrest_triggered(self, b=None): if b is None: return dlg=AboutDialog() dlg.exec_() def on_actionSave_Text_triggered(self, b=None): if b is not None: return if self.text_fname is not None: f=codecs.open(self.text_fname,'w+','utf-8') f.seek(0) f.write(unicode(self.ui.text.toPlainText())) f.close() else: self.on_actionSaveAs_Text_triggered() def on_actionSaveAs_Text_triggered(self, b=None): if b is not None: return fname=unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save As', os.getcwd(), 'reSt files (*.txt *.rst)' )) if fname: self.text_fname=fname self.on_actionSave_Text_triggered() def on_actionLoad_Text_triggered(self, b=None): if b is None: return fname=QtGui.QFileDialog.getOpenFileName(self, 'Open File', os.getcwd(), 'reSt files (*.txt *.rst)' ) self.text_fname=fname self.disableHL() self.ui.text.setPlainText(codecs.open(self.text_fname,'r','utf-8').read()) self.enableHL() def on_actionSave_Style_triggered(self, b=None): if b is not None: return if self.style_fname is not None: f=codecs.open(self.style_fname,'w+','utf-8') f.seek(0) f.write(unicode(self.ui.style.toPlainText())) f.close() else: self.on_actionSaveAs_Style_triggered() def on_actionSaveAs_Style_triggered(self, b=None): if b is not None: return fname=unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save As', os.getcwd(), 'style files (*.json *.style)' )) if fname: self.style_fname=fname self.on_actionSave_Style_triggered() def on_actionLoad_Style_triggered(self, b=None): if b is None: return fname=QtGui.QFileDialog.getOpenFileName(self, 'Open File', os.getcwd(), 'style files (*.json *.style)' ) self.style_fname=fname self.disableHL() self.ui.style.setPlainText(codecs.open(self.style_fname,'rb', 'utf-8').read()) self.enableHL() def on_actionSave_PDF_triggered(self, b=None): if b is not None: return # render it without line numbers in the toc self.on_actionRender_triggered(preview=False) if self.pdf_fname is not None: f=open(self.pdf_fname,'wb+') f.seek(0) f.write(self.goodPDF) f.close() else: self.on_actionSaveAs_PDF_triggered() def on_actionSaveAs_PDF_triggered(self, b=None): if b is not None: return fname=unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save As', os.getcwd(), 'PDF files (*.pdf)' )) if fname: self.pdf_fname=fname self.on_actionSave_PDF_triggered() def on_tabs_currentChanged(self, i=None): print 'IDX:',self.ui.tabs.currentIndex() if self.ui.tabs.currentIndex() == 0: self.on_text_cursorPositionChanged() print 'hooking text editor' self.hookEditToolbar(self.ui.text) else: self.on_style_cursorPositionChanged() print 'hooking style editor' self.hookEditToolbar(self.ui.style) def on_style_cursorPositionChanged(self): cursor=self.ui.style.textCursor() self.editorPos.setText('Line: %d Col: %d'%(cursor.blockNumber(),cursor.columnNumber())) def on_text_cursorPositionChanged(self): cursor=self.ui.text.textCursor() row=cursor.blockNumber() column=cursor.columnNumber() self.editorPos.setText('Line: %d Col: %d'%(row,column)) l='line-%s'%(row+1) m=self.lineMarks.get(l,None) if m: self.pdf.gotoPosition(*m) def validateStyle(self): style=unicode(self.ui.style.toPlainText()) if not style.strip(): #no point in validating an empty string self.statusMessage.setText('') return pos=None try: json.loads(style) self.statusMessage.setText('') except ValueError, e: s=str(e) if s == 'No JSON object could be decoded': pos=0 elif s.startswith('Expecting '): pos=int(s.split(' ')[-1][:-1]) elif s.startswith('Extra data'): pos=int(s.split(' ')[-3]) else: pass self.statusMessage.setText('Stylesheet error: %s'%s) # This makes a red bar appear in the line # containing position pos self.ui.style.highlightError(pos) on_style_textChanged = validateStyle def on_actionRender_triggered(self, b=None, preview=True): if b is not None: return text=unicode(self.ui.text.toPlainText()) style=unicode(self.ui.style.toPlainText()) self.hl1.rehighlight() m1=md5() m1.update(text.encode('utf-8')) m1=m1.digest() m2=md5() m2.update(style.encode('utf-8')) m2=m2.digest() flag = m1 != self.text_md5 style_file=None if m2 != self.style_md5 and style: fd, style_file=tempfile.mkstemp() os.write(fd,style) os.close(fd) print 'Loading styles from style_file' flag = True if flag: if not preview: pass # Send text to the renderer in foreground # FIXME: render is no longer accessible from the parent # process #doctree = docutils.core.publish_doctree(text) #self.goodPDF=render(doctree, preview=False) else: # Que to render in background self.render_queue.put([style_file, text, preview]) self.text_md5=m1 self.style_md5=m2 def updatePdf(self): # See if there is something in the doctree Queue try: self.doctree, self.warnings = self.doctree_queue.get(False) self.doctree.reporter=log class Visitor(docutils.nodes.SparseNodeVisitor): def __init__(self, document, treeWidget): self.treeWidget=treeWidget self.treeWidget.clear() self.doctree=document self.nodeDict={} docutils.nodes.SparseNodeVisitor.__init__(self, document) def visit_section(self, node): print 'SECTION:',node.line, item=QtGui.QTreeWidgetItem(["",str(node.line)]) if node.parent==self.doctree: # Top level section self.treeWidget.addTopLevelItem(item) self.nodeDict[id(node)]=item else: self.nodeDict[id(node.parent)].addChild(item) self.nodeDict[id(node)]=item def visit_title(self, node): if id(node.parent) in self.nodeDict: self.nodeDict[id(node.parent)].setText(0,node.astext()) def visit_document(self,node): print 'DOC:',node.line print self.doctree.__class__ self.visitor=Visitor(self.doctree, self.ui.tree) self.doctree.walkabout(self.visitor) print self.visitor.nodeDict except Empty: pass # See if there is something in the PDF Queue try: self.lastPDF=self.pdf_queue.get(False) self.pdf.loadDocument(self.lastPDF) toc=self.pdf.document.toc() if toc: tempMarks=[] def traverse(node): children=node.childNodes() for i in range(children.length()): n=children.item(i) e=n.toElement() if e: tag=str(e.tagName()) if tag.startswith('LINE'): dest=str(e.attribute('Destination')) dest=QtPoppler.Poppler.LinkDestination(dest) tempMarks.append([int(tag.split('-')[1]), [dest.pageNumber(), dest.top(), dest.left(),1.]]) traverse(n) traverse(toc) tempMarks.sort() self.lineMarks={} lastMark=None lastKey=0 for key,dest in tempMarks: # Fix height of the previous mark, unless we changed pages if lastMark and self.lineMarks[lastMark][0]==dest[0]: self.lineMarks[lastMark][3]=dest[1] # Fill missing lines if lastMark: ldest=self.lineMarks[lastMark] else: ldest=[1,0,0,0] for n in range(lastKey,key): self.lineMarks['line-%s'%n]=ldest k='line-%s'%key self.lineMarks[k]=dest lastMark = k lastKey = key self.on_text_cursorPositionChanged() except Empty: #Nothing there pass # Schedule to run again QtCore.QTimer.singleShot(500,self.updatePdf) def main(): # Again, this is boilerplate, it's going to be the same on # almost every app you write app = QtGui.QApplication(sys.argv) window=Main() window.show() # It's exec_ because exec is a reserved word in Python sys.exit(app.exec_()) class PDFWidget(QtGui.QWidget): def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) self.ui=Ui_Form() self.ui.setupUi(self) self.pdfd = None def loadDocument(self,data): self.document = QtPoppler.Poppler.Document.loadFromData(data) self.emit(QtCore.SIGNAL('pageCount'),self.document.numPages()) self.document.setRenderHint(QtPoppler.Poppler.Document.Antialiasing and QtPoppler.Poppler.Document.TextAntialiasing) # When rerendering, keep state as much as possible in # the viewer if self.pdfd: res = self.pdfd.res xpos = self.ui.scroll.horizontalScrollBar().value() ypos = self.ui.scroll.verticalScrollBar().value() currentPage = self.pdfd.currentPage else: res=72. xpos=0 ypos=0 currentPage = 0 self.pdfd=PDFDisplay(self.document) self.connect(self.pdfd,QtCore.SIGNAL('pageChanged'), self,QtCore.SIGNAL('pageChanged')) self.pdfd.currentPage = currentPage self.checkActions() self.pdfd.res = res self.ui.scroll.setWidget(self.pdfd) self.ui.scroll.horizontalScrollBar().setValue(xpos) self.ui.scroll.verticalScrollBar().setValue(ypos) def checkActions(self): if not self.pdfd or \ self.pdfd.currentPage == self.document.numPages(): self.ui.next.setEnabled(False) else: self.ui.next.setEnabled(True) if not self.pdfd or \ self.pdfd.currentPage == 1: self.ui.previous.setEnabled(False) else: self.ui.previous.setEnabled(True) def gotoPosition(self, page, top, left, bottom): """The position is defined in terms of poppler's linkdestinations, top is in the range 0-1, page is one-based.""" if not self.pdfd: return self.gotoPage(page) # Draw a mark to see if we are calculating correctly pixmap=QtGui.QPixmap(self.pdfd.pdfImage) p=QtGui.QPainter(pixmap) c=QtGui.QColor(QtCore.Qt.yellow).lighter(160) c.setAlpha(150) p.setBrush(c) p.setPen(c) # FIXME, move the highlighting outside y1=self.pdfd.pdfImage.height()*top y2=self.pdfd.pdfImage.height()*(bottom-top) w=self.pdfd.pdfImage.width() p.drawRect(0,y1,w,y2) self.pdfd.setPixmap(pixmap) p.end() def gotoPage(self,n): if self.pdfd: self.pdfd.currentPage = n self.checkActions() def on_next_triggered(self, b=None): if b is None: return self.pdfd.nextPage() self.checkActions() def on_previous_triggered(self, b=None): if b is None: return self.pdfd.prevPage() self.checkActions() def on_zoomin_triggered(self, b=None): if b is None: return self.pdfd.zoomin() def on_zoomout_triggered(self, b=None): if b is None: return self.pdfd.zoomout() class PDFDisplay(QtGui.QLabel): def __init__(self, doc): QtGui.QLabel.__init__(self, None) self.doc = doc self.pdfImage = None self._res = self.physicalDpiX() self._currentPage = 1 self.display() @property def currentPage(self): '''The currently displayed page''' return self._currentPage @currentPage.setter def currentPage(self,value): value=int(value) if value != self._currentPage and \ 0 < value <= self.doc.numPages(): self._currentPage = value self.display() self.emit(QtCore.SIGNAL('pageChanged'),self._currentPage) # Just so I can connect a signal to this def setCurrentPage(self,value): self.currentPage=value def nextPage(self): self.currentPage += 1 def prevPage(self): self.currentPage -= 1 @property def res(self): '''Display resolution in DPI''' return self._res @res.setter def res(self,value): self._res=value self.display() def zoomin(self): self.res=self.res*1.25 def zoomout(self): self.res=self.res/1.25 def display(self): if self.doc is not None: if self.doc.numPages() == 0: self.pdfImage = QtGui.QImage() else: page = self.doc.page(self.currentPage-1) if page: self.pdfImage = None self.pdfImage = page.renderToImage(self.res, self.res) self.resize(self.pdfImage.width(),self.pdfImage.height()) self.setPixmap(QtGui.QPixmap.fromImage(self.pdfImage)) #self.update() #delete page; # Firefox-style in-window search widget, # copied from uRSSus: http://urssus.googlecode.com from Ui_searchwidget import Ui_Form as UI_SearchWidget class SearchWidget(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) # Set up the UI from designer self.ui=UI_SearchWidget() self.ui.setupUi(self) # Cute about dialog from Ui_about import Ui_Dialog as Ui_AboutDialog class AboutDialog(QtGui.QDialog): def __init__(self): QtGui.QDialog.__init__(self) # Set up the UI from designer self.ui=Ui_AboutDialog() self.ui.setupUi(self) # Configuration dialog from Ui_configdialog import Ui_Dialog as Ui_ConfigDialog class ConfigDialog(QtGui.QDialog): def __init__(self, data={}): QtGui.QDialog.__init__(self) # Set up the UI from designer self.ui=Ui_ConfigDialog() self.ui.setupUi(self) self.curPageWidget=None self.scale=.3 self.data=data # Load all config things self.pages={ 'Stylesheets':StyleSheets, 'Page Setup':PageSetup, 'Page Templates':PageTemplates, } keys=self.pages.keys() keys.sort() for page in keys: self.ui.pagelist.addItem(page) def on_pagelist_currentTextChanged(self, text=None): if text is None: return fd, style_file=tempfile.mkstemp() os.write(fd,json.dumps(self.data)) os.close(fd) self.styles = StyleSheet([style_file]) os.unlink(style_file) text=unicode(text) if self.curPageWidget: self.curPageWidget.hide() self.curPageWidget.deleteLater() widget=self.pages[text] self.curPageWidget=widget(self.styles, self.data, self.ui.preview, self.ui.snippet) self.ui.layout.addWidget(self.curPageWidget) self.curPageWidget.show() self.curPageWidget.updatePreview() def on_zoomin_clicked(self): self.scale=self.scale*1.25 if self.curPageWidget: self.curPageWidget.scale=self.scale self.curPageWidget.updatePreview() def on_zoomout_clicked(self): self.scale=self.scale/1.25 if self.curPageWidget: self.curPageWidget.scale=self.scale self.curPageWidget.updatePreview() # Widget to edit page templates from Ui_pagetemplates import Ui_Form as Ui_templates class PageTemplates(QtGui.QWidget): def __init__(self, stylesheet, data, preview, snippet, parent=None): QtGui.QWidget.__init__(self,parent) self.scale = .3 self.data = data self.ui=Ui_templates() self.ui.setupUi(self) self.ui.preview = preview self.ui.snippet = snippet self.stylesheet = stylesheet self.pw=self.stylesheet.ps[0] self.ph=self.stylesheet.ps[1] self.pageImage=QtGui.QImage(int(self.pw), int(self.ph), QtGui.QImage.Format_RGB32) self.templates = copy(self.stylesheet.pageTemplates) self.template = None for template in self.templates: self.ui.templates.addItem(template) def applyChanges(self): # TODO: validate everything self.frame=[unicode(w.text()) for w in [ self.ui.left, self.ui.top, self.ui.width, self.ui.height ]] self.template["frames"][self.frameIndex]=self.frame self.template['showFooter']=self.ui.footer.isChecked() self.template['showHeader']=self.ui.header.isChecked() if unicode(self.ui.background.text()): self.template['background']=unicode(self.ui.background.text()) self.updatePreview() def on_templates_currentIndexChanged(self, text): if not isinstance(text,StringTypes): return text=unicode(text) self.template=self.templates[text] self.ui.frames.clear() for i in range(0, len(self.template['frames'])): self.ui.frames.addItem('Frame %d'%(i+1)) self.ui.footer.setChecked(self.template['showFooter']) self.ui.header.setChecked(self.template['showHeader']) self.ui.background.setText(self.template.get("background","")) self.updatePreview() def on_frames_currentIndexChanged(self, index): if type(index) != types.IntType: return if not self.template: return self.frameIndex=index self.frame=self.template['frames'][index] self.ui.left.setText(self.frame[0]) self.ui.top.setText(self.frame[1]) self.ui.width.setText(self.frame[2]) self.ui.height.setText(self.frame[3]) self.updatePreview() def on_selectFile_clicked(self,b=None): if b is not None: return fname=QtGui.QFileDialog.getOpenFileName(self, 'Open Background Image', os.getcwd() ) self.ui.background.setText(fname) self.applyChanges() def updatePreview(self): pm=QtGui.QPixmap(self.pageImage) p=QtGui.QPainter(pm) # Draw white page p.setBrush(QtGui.QBrush(QtGui.QColor("white"))) p.drawRect(-1,-1,pm.width()+2,pm.height()+2) pen = QtGui.QPen() pen.setWidth(1/self.scale) # Make it be 1px wide when scaled p.setPen(pen) # Draw background bg=self.template.get("background",None) if bg: bg=QtGui.QImageReader(bg,) bg.setScaledSize(QtCore.QSize(pm.width(),pm.height())) p.drawImage(QtCore.QPoint(0,0),bg.read()) x1=self.stylesheet.lm y1=self.stylesheet.tm tw=self.stylesheet.pw-self.stylesheet.lm-self.stylesheet.rm th=self.stylesheet.ph-self.stylesheet.bm-self.stylesheet.tm def drawFrame(frame): x=self.stylesheet.adjustUnits(frame[0],tw) y=self.stylesheet.adjustUnits(frame[1],th) w=self.stylesheet.adjustUnits(frame[2],tw)-1 h=self.stylesheet.adjustUnits(frame[3],th)-1 p.drawRect(x1+x,y1+y,w,h) p.setBrush(QtGui.QBrush(QtGui.QColor(150,150,150,128))) for frame in self.template['frames']: drawFrame(frame) p.setBrush(QtGui.QBrush(QtGui.QColor(255,255,0,128))) drawFrame(self.frame) self.ui.preview.setPixmap(pm.scaled(self.pw*self.scale,self.ph*self.scale)) p.end() self.data['pageTemplates']=self.templates body=highlight(json.dumps(self.data, indent=2), JavascriptLexer(),HtmlFormatter()) head=HtmlFormatter().get_style_defs('.highlight') self.ui.snippet.setHtml( ''' %s '''%(head,body)) # Widget to edit page templates from Ui_pagesetup import Ui_Form as Ui_pagesetup class PageSetup(QtGui.QWidget): def __init__(self, stylesheet, data, preview, snippet, parent=None): QtGui.QWidget.__init__(self,parent) self.scale = .3 self.data = data self.ui=Ui_pagesetup() self.ui.setupUi(self) self.stylesheet=stylesheet self.ui.preview=preview self.ui.snippet=snippet ft=self.stylesheet.firstTemplate for template in self.stylesheet.pageTemplates: if ft == template: continue self.ui.firstTemplate.addItem(template) if 'size' in self.stylesheet.page: self.ui.size.insertItem(0,self.stylesheet.psname) self.ui.height.setEnabled(False) self.ui.width.setEnabled(False) self.ui.height.setText('') self.ui.width.setText('') else: self.ui.height.setEnabled(True) self.ui.width.setEnabled(True) self.ui.height.setText(self.stylesheet.page['height']) self.ui.width.setText(self.stylesheet.page['width']) self.ui.size.setCurrentIndex(0) self.ui.firstTemplate.insertItem(0,ft) self.ui.firstTemplate.setCurrentIndex(0) self.ui.margin_top.setText(unicode(self.stylesheet.page['margin-top'])) self.ui.margin_bottom.setText(unicode(self.stylesheet.page['margin-bottom'])) self.ui.margin_left.setText(unicode(self.stylesheet.page['margin-left'])) self.ui.margin_right.setText(unicode(self.stylesheet.page['margin-right'])) self.ui.margin_gutter.setText(unicode(self.stylesheet.page['margin-gutter'])) self.ui.spacing_header.setText(unicode(self.stylesheet.page['spacing-header'])) self.ui.spacing_footer.setText(unicode(self.stylesheet.page['spacing-footer'])) self.pageImage=None self.applyChanges() def applyChanges(self): if unicode(self.ui.size.currentText())==u'Custom': # FIXME: % makes no sense for page size self.ui.width.setEnabled(True) self.ui.height.setEnabled(True) self.pw=self.stylesheet.adjustUnits(unicode(self.ui.width.text()),1000) or 0 self.ph=self.stylesheet.adjustUnits(unicode(self.ui.height.text()),1000) or 0 else: self.ui.width.setEnabled(False) self.ui.height.setEnabled(False) self.size=unicode(self.ui.size.currentText()) self.pw=pagesizes.__dict__[self.size.upper()][0] self.ph=pagesizes.__dict__[self.size.upper()][1] self.lm=self.stylesheet.adjustUnits(unicode(self.ui.margin_left.text()),self.pw) or 0 self.rm=self.stylesheet.adjustUnits(unicode(self.ui.margin_right.text()),self.pw) or 0 self.tm=self.stylesheet.adjustUnits(unicode(self.ui.margin_top.text()),self.ph) or 0 self.bm=self.stylesheet.adjustUnits(unicode(self.ui.margin_bottom.text()),self.ph) or 0 self.ts=self.stylesheet.adjustUnits(unicode(self.ui.spacing_header.text()),self.ph) or 0 self.bs=self.stylesheet.adjustUnits(unicode(self.ui.spacing_footer.text()),self.ph) or 0 self.gm=self.stylesheet.adjustUnits(unicode(self.ui.margin_gutter.text()),self.pw) or 0 self.pageImage=QtGui.QImage(int(self.pw), int(self.ph), QtGui.QImage.Format_RGB32) self.updatePreview() def updatePreview(self): pm=QtGui.QPixmap(self.pageImage) p=QtGui.QPainter(pm) pen = QtGui.QPen() pen.setWidth(1/self.scale) # Make it be 1px wide when scaled p.setPen(pen) # Draw white page p.setBrush(QtGui.QBrush(QtGui.QColor("white"))) p.drawRect(-1,-1,pm.width()+2,pm.height()+2) for x in (self.gm, self.gm+self.lm, self.pw-self.rm): p.drawLine(x,0,x,pm.height()) for y in (self.tm, self.tm+self.ts, self.ph-self.bm, self.ph-self.bm-self.bs, ): p.drawLine(0,y,pm.width(),y) p.end() self.ui.preview.setPixmap(pm.scaled(self.pw*self.scale,self.ph*self.scale)) self.data["pageSetup"]= { "size": unicode(self.ui.size.currentText()).lower(), "width": unicode(self.ui.width.text()), "height": unicode(self.ui.height.text()), "margin-top": unicode(self.ui.margin_top.text()), "margin-bottom": unicode(self.ui.margin_bottom.text()), "margin-left": unicode(self.ui.margin_left.text()), "margin-right": unicode(self.ui.margin_right.text()), "margin-gutter": unicode(self.ui.margin_gutter.text()), "spacing-header": unicode(self.ui.spacing_header.text()), "spacing-footer": unicode(self.ui.spacing_footer.text()), "firstTemplate": unicode(self.ui.firstTemplate.currentText()) } if self.data['pageSetup']['size']==u'custom': del(self.data['pageSetup']['size']) else: del(self.data['pageSetup']['width']) del(self.data['pageSetup']['height']) body=highlight(json.dumps(self.data, indent=2), JavascriptLexer(),HtmlFormatter()) head=HtmlFormatter().get_style_defs('.highlight') self.ui.snippet.setHtml( ''' %s '''%(head,body)) # Widget to choose from system stylesheets from Ui_stylesheets import Ui_Form as Ui_stylesheets class StyleSheets(QtGui.QWidget): def __init__(self, stylesheet, data, preview, snippet, parent=None): QtGui.QWidget.__init__(self,parent) self.scale = .3 self.data = data self.ui=Ui_stylesheets() self.ui.setupUi(self) self.stylesheet=stylesheet self.ui.preview=preview self.ui.snippet=snippet sheets=[] for folder in self.stylesheet.StyleSearchPath: sheets.extend(glob.glob(os.path.join(folder,'*.style'))) sheets.extend(glob.glob(os.path.join(folder,'*.json'))) sheets.sort() for s in sheets: self.ui.system.addItem(os.path.basename(s)) self.applyChanges() def on_addFromFile_clicked(self, b = None): if b is None: return fname=QtGui.QFileDialog.getOpenFileName(self, 'Open Stylesheet', os.getcwd(), 'stylesheets (*.json *.style)' ) if fname: self.ui.custom.addItem(fname) self.applyChanges() def on_addFromSystem_clicked(self, b = None): if b is None: return for i in self.ui.system.selectedItems(): self.ui.custom.addItem(i.text()) i.setSelected(False) self.applyChanges() def on_remove_clicked(self, b = None): if b is None: return i=self.ui.custom.currentItem() if not i: return self.ui.custom.takeItem(self.ui.custom.currentRow()) self.applyChanges() def on_up_clicked(self, b = None): if b is None: return i=self.ui.custom.currentItem() if not i: return cr=self.ui.custom.currentRow() i=self.ui.custom.takeItem(cr) self.ui.custom.insertItem(cr-1,i) self.ui.custom.setCurrentItem(i) self.applyChanges() def on_down_clicked(self, b = None): if b is None: return i=self.ui.custom.currentItem() if not i: return cr=self.ui.custom.currentRow() i=self.ui.custom.takeItem(cr) self.ui.custom.insertItem(cr+1,i) self.ui.custom.setCurrentItem(i) self.applyChanges() def updatePreview(self): body=highlight(json.dumps(self.data, indent=2), JavascriptLexer(),HtmlFormatter()) head=HtmlFormatter().get_style_defs('.highlight') self.ui.snippet.setHtml( ''' %s '''%(head,body)) def applyChanges(self): self.data.update({'options':{'stylesheets':[unicode(self.ui.custom.item(x).text()) \ for x in range(self.ui.custom.count())]}}) self.updatePreview() if __name__ == "__main__": main() rst2pdf-0.93/gui/pagetemplates.ui0000664000175000017500000002050511260417775016671 0ustar ralsinaralsina Form 0 0 605 375 Form 0 Qt::Horizontal Page Template: templates ... :/icons/new.svg:/icons/new.svg ... :/icons/close.svg:/icons/close.svg Frame: ... :/icons/new.svg:/icons/new.svg ... :/icons/close.svg:/icons/close.svg Top: top Left: left Width: width Height: height Show Header Show Footer Background: background ... :/icons/file.svg:/icons/file.svg top textEdited(QString) Form applyChanges() 150 89 8 95 left textEdited(QString) Form applyChanges() 143 121 4 127 width textEdited(QString) Form applyChanges() 135 151 5 168 height textEdited(QString) Form applyChanges() 147 185 1 221 header toggled(bool) Form applyChanges() 167 212 6 264 footer toggled(bool) Form applyChanges() 196 242 5 315 background textEdited(QString) Form applyChanges() 225 273 1 356 applyChanges() rst2pdf-0.93/gui/icons_rc.py0000664000175000017500000057465011261713612015655 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Resource object code # # Created: Fri Oct 2 22:22:23 2009 # by: The Resource Compiler for PyQt (Qt v4.5.2) # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore qt_resource_data = "\ \x00\x00\x03\x37\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x35\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x65\x6c\x6c\x69\x70\x73\x65\x0a\x20\ \x20\x20\x20\x20\x63\x78\x3d\x22\x35\x36\x2e\x31\x31\x33\x32\x38\ \x31\x22\x0a\x20\x20\x20\x20\x20\x63\x79\x3d\x22\x35\x37\x2e\x36\ \x33\x36\x37\x31\x39\x22\x0a\x20\x20\x20\x20\x20\x72\x78\x3d\x22\ \x34\x34\x2e\x34\x33\x33\x35\x39\x34\x22\x0a\x20\x20\x20\x20\x20\ \x72\x79\x3d\x22\x34\x34\x2e\x34\x33\x33\x35\x39\x34\x22\x0a\x20\ \x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\ \x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x31\x2e\x31\x37\x31\x39\ \x2c\x2d\x31\x2e\x30\x31\x35\x36\x32\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x33\x32\ \x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\ \x20\x20\x64\x3d\x22\x4d\x20\x38\x31\x2e\x37\x35\x37\x38\x2c\x39\ \x36\x2e\x34\x38\x34\x34\x20\x4c\x20\x31\x32\x32\x2e\x38\x39\x31\ \x2c\x31\x35\x30\x2e\x38\x32\x22\x0a\x20\x20\x20\x20\x20\x74\x72\ \x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\ \x74\x65\x28\x31\x32\x2e\x31\x38\x37\x35\x2c\x2d\x33\x2e\x30\x34\ \x36\x38\x38\x29\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ \x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\ \x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\ \x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\ \x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\ \x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\ \x64\x3d\x22\x70\x61\x74\x68\x31\x33\x33\x22\x20\x2f\x3e\x0a\x3c\ \x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x06\xef\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x37\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\ \x33\x2e\x38\x36\x37\x20\x43\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x43\x20\x31\x33\x38\x2e\x31\x32\ \x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x43\x20\x31\x33\x38\x2e\ \x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\x31\x31\ \x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x35\x34\x2e\x38\x38\x33\x20\ \x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\ \x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x2e\ \x30\x31\x35\x36\x32\x2c\x30\x29\x22\x0a\x20\x20\x20\x20\x20\x73\ \x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\ \x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\x30\x66\ \x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\ \x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\ \x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x70\x61\x74\x68\x32\x31\x38\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ \x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\x31\x20\ \x43\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\ \x31\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\x20\ \x43\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\ \x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x2d\x33\x2e\x30\ \x34\x36\x38\x38\x2c\x33\x2e\x30\x34\x36\x38\x38\x29\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\ \x66\x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\ \x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\ \x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\ \x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ \x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\ \x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x39\x22\x20\ \x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\ \x64\x3d\x22\x4d\x20\x38\x34\x2e\x32\x39\x36\x39\x2c\x31\x33\x31\ \x2e\x30\x31\x36\x20\x4c\x20\x38\x33\x2e\x37\x38\x39\x31\x2c\x34\ \x36\x2e\x32\x31\x30\x39\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\ \x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\ \x65\x28\x2d\x30\x2e\x37\x39\x30\x39\x35\x38\x2c\x30\x29\x22\x0a\ \x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\ \x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\ \x23\x66\x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\ \x63\x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\ \x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x38\ \x2e\x37\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\ \x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x32\x37\ \x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x0a\ \x20\x20\x20\x20\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x38\x36\x2e\ \x38\x33\x35\x39\x2c\x35\x31\x2e\x37\x39\x36\x39\x20\x36\x31\x2e\ \x34\x31\x36\x32\x2c\x35\x31\x2e\x37\x34\x36\x34\x20\x33\x35\x2e\ \x39\x39\x36\x34\x2c\x35\x31\x2e\x36\x39\x36\x20\x34\x38\x2e\x37\ \x35\x2c\x32\x39\x2e\x37\x30\x37\x20\x36\x31\x2e\x35\x30\x33\x36\ \x2c\x37\x2e\x37\x31\x38\x31\x31\x20\x37\x34\x2e\x31\x36\x39\x38\ \x2c\x32\x39\x2e\x37\x35\x37\x35\x20\x38\x36\x2e\x38\x33\x35\x39\ \x2c\x35\x31\x2e\x37\x39\x36\x39\x20\x22\x0a\x20\x20\x20\x20\x20\ \x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\ \x6c\x61\x74\x65\x28\x32\x31\x2e\x38\x33\x35\x39\x2c\x31\x34\x2e\ \x38\x30\x36\x30\x39\x29\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\ \x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\ \x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\ \x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\ \x32\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\ \x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ \x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\ \x20\x20\x20\x20\x69\x64\x3d\x22\x70\x6f\x6c\x79\x67\x6f\x6e\x31\ \x32\x39\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x0f\x74\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x64\x63\ \x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\ \x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\x6e\x74\x73\x2f\x31\x2e\ \x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x63\x63\x3d\ \x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x65\x61\x74\x69\x76\x65\ \x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\x67\x2f\x6e\x73\x23\x22\ \x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\ \x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ \x2f\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\ \x73\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x0a\x20\x20\x20\x78\ \x6d\x6c\x6e\x73\x3a\x73\x76\x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\ \x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\ \x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\ \x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\ \x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\ \x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\x6f\x64\x69\x3d\x22\x68\ \x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\x70\x6f\x64\x69\x2e\x73\ \x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\x2e\x6e\x65\x74\x2f\x44\ \x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\x69\x2d\x30\x2e\x64\x74\ \x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x69\x6e\x6b\x73\ \x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ \x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x6e\x61\ \x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\x6e\x6b\x73\x63\x61\x70\ \x65\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\ \x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x36\ \x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\x73\x76\ \x67\x31\x30\x31\x22\x0a\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\ \x69\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x30\x2e\x33\x32\x22\ \x0a\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x76\x65\x72\ \x73\x69\x6f\x6e\x3d\x22\x30\x2e\x34\x36\x22\x0a\x20\x20\x20\x73\ \x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ \x22\x63\x6f\x6c\x6f\x72\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\ \x6e\x6b\x73\x63\x61\x70\x65\x3a\x6f\x75\x74\x70\x75\x74\x5f\x65\ \x78\x74\x65\x6e\x73\x69\x6f\x6e\x3d\x22\x6f\x72\x67\x2e\x69\x6e\ \x6b\x73\x63\x61\x70\x65\x2e\x6f\x75\x74\x70\x75\x74\x2e\x73\x76\ \x67\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x22\x3e\x0a\x20\x20\x3c\ \x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x31\x37\x22\x3e\x0a\x20\ \x20\x20\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x3c\x63\x63\x3a\x57\x6f\x72\x6b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x72\x64\x66\x3a\x61\x62\x6f\x75\x74\x3d\x22\ \x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\x3a\x66\ \x6f\x72\x6d\x61\x74\x3e\x69\x6d\x61\x67\x65\x2f\x73\x76\x67\x2b\ \x78\x6d\x6c\x3c\x2f\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\x3a\x74\x79\x70\x65\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\ \x72\x65\x73\x6f\x75\x72\x63\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ \x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x64\x63\x6d\ \x69\x74\x79\x70\x65\x2f\x53\x74\x69\x6c\x6c\x49\x6d\x61\x67\x65\ \x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x2f\x63\x63\x3a\ \x57\x6f\x72\x6b\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x72\x64\x66\x3a\ \x52\x44\x46\x3e\x0a\x20\x20\x3c\x2f\x6d\x65\x74\x61\x64\x61\x74\ \x61\x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\ \x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\x69\x6e\ \x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x68\x65\ \x69\x67\x68\x74\x3d\x22\x38\x35\x30\x22\x0a\x20\x20\x20\x20\x20\ \x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\ \x77\x69\x64\x74\x68\x3d\x22\x31\x34\x34\x30\x22\x0a\x20\x20\x20\ \x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x73\ \x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\x20\x20\x20\x20\x20\x69\ \x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x6f\x70\x61\x63\ \x69\x74\x79\x3d\x22\x30\x2e\x30\x22\x0a\x20\x20\x20\x20\x20\x67\ \x75\x69\x64\x65\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\ \x30\x2e\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x72\x69\x64\x74\x6f\ \x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x2e\x30\x22\x0a\x20\ \x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\ \x6e\x63\x65\x3d\x22\x31\x30\x2e\x30\x22\x0a\x20\x20\x20\x20\x20\ \x62\x6f\x72\x64\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\ \x2e\x30\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\ \x6f\x6c\x6f\x72\x3d\x22\x23\x36\x36\x36\x36\x36\x36\x22\x0a\x20\ \x20\x20\x20\x20\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\ \x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x62\x61\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x73\x68\x6f\x77\ \x67\x72\x69\x64\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\x20\x20\x20\ \x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\x3d\ \x22\x32\x2e\x38\x35\x35\x33\x38\x34\x36\x22\x0a\x20\x20\x20\x20\ \x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\x38\x31\ \x2e\x32\x35\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x3a\x63\x79\x3d\x22\x37\x31\x2e\x38\x38\x36\x38\x31\x39\ \x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ \x77\x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\x2d\x31\x22\x0a\x20\x20\ \x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\ \x6f\x77\x2d\x79\x3d\x22\x30\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\ \x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\x6c\ \x61\x79\x65\x72\x3d\x22\x73\x76\x67\x31\x30\x31\x22\x20\x2f\x3e\ \x0a\x20\x20\x3c\x64\x65\x66\x73\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x64\x65\x66\x73\x31\x31\x22\x3e\x0a\x20\x20\x20\x20\x3c\ \x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x65\x72\x73\x70\x65\x63\ \x74\x69\x76\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x64\x69\ \x70\x6f\x64\x69\x3a\x74\x79\x70\x65\x3d\x22\x69\x6e\x6b\x73\x63\ \x61\x70\x65\x3a\x70\x65\x72\x73\x70\x33\x64\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x76\x70\x5f\ \x78\x3d\x22\x30\x20\x3a\x20\x38\x31\x2e\x32\x35\x20\x3a\x20\x31\ \x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ \x65\x3a\x76\x70\x5f\x79\x3d\x22\x30\x20\x3a\x20\x31\x30\x30\x30\ \x20\x3a\x20\x30\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x3a\x76\x70\x5f\x7a\x3d\x22\x31\x36\x32\x2e\ \x35\x20\x3a\x20\x38\x31\x2e\x32\x35\x20\x3a\x20\x31\x22\x0a\x20\ \x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\ \x65\x72\x73\x70\x33\x64\x2d\x6f\x72\x69\x67\x69\x6e\x3d\x22\x38\ \x31\x2e\x32\x35\x20\x3a\x20\x35\x34\x2e\x31\x36\x36\x36\x36\x37\ \x20\x3a\x20\x31\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x70\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65\x31\x39\x22\x20\ \x2f\x3e\x0a\x20\x20\x3c\x2f\x64\x65\x66\x73\x3e\x0a\x20\x20\x3c\ \x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x32\ \x37\x2e\x31\x30\x35\x33\x32\x34\x2c\x31\x30\x2e\x36\x39\x34\x34\ \x36\x20\x4c\x20\x31\x33\x35\x2e\x33\x39\x34\x36\x38\x2c\x31\x30\ \x2e\x36\x39\x34\x34\x36\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\ \x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\ \x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\ \x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x37\x35\x3b\x66\ \x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x35\x32\x37\x32\x61\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\ \x30\x38\x38\x38\x37\x39\x35\x39\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\ \x74\x79\x3a\x30\x2e\x31\x30\x39\x35\x38\x38\x39\x38\x22\x0a\x20\ \x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x39\x31\x38\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x37\x2e\x31\x30\x35\x33\x32\x34\x2c\ \x31\x35\x32\x2e\x34\x35\x35\x31\x20\x4c\x20\x31\x33\x35\x2e\x33\ \x39\x34\x36\x38\x2c\x31\x35\x32\x2e\x34\x35\x35\x31\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\ \x66\x36\x33\x31\x33\x31\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x37\x35\x30\x30\x30\x30\x30\x30\x30\x30\ \x30\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\ \x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\ \x3a\x23\x35\x31\x37\x31\x61\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x30\x38\x38\x38\x37\x39\x35\ \x38\x39\x39\x39\x39\x39\x39\x39\x34\x35\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\ \x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\ \x63\x69\x74\x79\x3a\x30\x2e\x38\x39\x31\x36\x34\x36\x35\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x35\x31\ \x36\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\ \x20\x20\x20\x64\x3d\x22\x4d\x20\x32\x37\x2e\x31\x30\x35\x33\x32\ \x34\x2c\x31\x31\x33\x2e\x30\x37\x37\x31\x20\x4c\x20\x31\x33\x35\ \x2e\x33\x39\x34\x36\x38\x2c\x31\x31\x33\x2e\x30\x37\x37\x31\x22\ \x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\ \x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\ \x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\ \x74\x79\x3a\x30\x2e\x37\x35\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\ \x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\ \x3a\x23\x35\x32\x37\x32\x61\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x30\x38\x38\x38\x37\x39\x35\ \x39\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\ \x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ \x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x37\x35\ \x33\x34\x32\x35\x30\x33\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x70\x61\x74\x68\x31\x35\x31\x37\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ \x32\x37\x2e\x31\x30\x35\x33\x32\x34\x2c\x39\x32\x2e\x34\x30\x33\ \x36\x39\x20\x4c\x20\x31\x33\x35\x2e\x33\x39\x34\x36\x38\x2c\x39\ \x32\x2e\x34\x30\x33\x36\x39\x22\x0a\x20\x20\x20\x20\x20\x73\x74\ \x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\ \x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\ \x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x37\x35\x3b\ \x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x35\x32\x37\x32\x61\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\ \x2e\x30\x38\x38\x38\x37\x39\x35\x39\x3b\x73\x74\x72\x6f\x6b\x65\ \x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\ \x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x36\x35\x32\x39\x36\x37\x39\x38\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x35\x31\ \x38\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\ \x20\x20\x20\x64\x3d\x22\x4d\x20\x32\x37\x2e\x31\x30\x35\x33\x32\ \x34\x2c\x31\x33\x32\x2e\x37\x36\x36\x31\x20\x4c\x20\x31\x33\x35\ \x2e\x33\x39\x34\x36\x38\x2c\x31\x33\x32\x2e\x37\x36\x36\x31\x22\ \x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\ \x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\ \x3a\x23\x66\x36\x33\x31\x33\x31\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\ \x61\x63\x69\x74\x79\x3a\x30\x2e\x37\x35\x30\x30\x30\x30\x30\x30\ \x30\x30\x30\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x35\x31\x37\x31\x61\x64\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x30\x38\x38\x38\x37\ \x39\x35\x38\x39\x39\x39\x39\x39\x39\x39\x34\x35\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\ \x6e\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\ \x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x38\x39\x31\x36\x34\x36\x35\ \x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\ \x35\x31\x39\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\ \x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x32\x37\x2e\x31\x30\x35\ \x33\x32\x34\x2c\x37\x32\x2e\x37\x31\x34\x37\x32\x20\x4c\x20\x31\ \x33\x35\x2e\x33\x39\x34\x36\x38\x2c\x37\x32\x2e\x37\x31\x34\x37\ \x32\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\ \x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\ \x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\ \x63\x69\x74\x79\x3a\x30\x2e\x37\x35\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x35\x32\x37\x32\x61\x64\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x30\x38\x38\x38\x37\ \x39\x35\x39\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\ \x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\ \x34\x38\x34\x30\x31\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x70\x61\x74\x68\x31\x35\x32\x30\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ \x32\x37\x2e\x31\x30\x35\x33\x32\x34\x2c\x35\x32\x2e\x30\x34\x31\ \x33\x20\x4c\x20\x31\x33\x35\x2e\x33\x39\x34\x36\x38\x2c\x35\x32\ \x2e\x30\x34\x31\x33\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\ \x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\ \x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\ \x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x37\x35\x3b\x66\x69\ \x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x3a\x23\x35\x32\x37\x32\x61\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x30\ \x38\x38\x38\x37\x39\x35\x39\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ \x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\ \x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\ \x79\x3a\x30\x2e\x33\x35\x31\x35\x39\x37\x39\x38\x22\x0a\x20\x20\ \x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x35\x32\x31\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x37\x2e\x31\x30\x35\x33\x32\x34\x2c\ \x33\x31\x2e\x33\x36\x37\x38\x37\x20\x4c\x20\x31\x33\x35\x2e\x33\ \x39\x34\x36\x38\x2c\x33\x31\x2e\x33\x36\x37\x38\x37\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\ \x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x37\x35\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\ \x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\ \x35\x32\x37\x32\x61\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\ \x64\x74\x68\x3a\x31\x32\x2e\x30\x38\x38\x38\x37\x39\x35\x39\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\ \x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\ \x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x33\x31\x30\x35\ \x30\x31\x39\x34\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\ \x61\x74\x68\x31\x35\x32\x32\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\ \x67\x3e\x0a\ \x00\x00\x04\x64\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x35\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x38\x2e\x35\x38\x37\x32\x39\x2c\x37\x2e\ \x35\x38\x37\x33\x36\x20\x43\x20\x36\x35\x2e\x32\x38\x30\x32\x2c\ \x37\x2e\x35\x38\x37\x33\x36\x20\x37\x39\x2e\x34\x35\x33\x34\x2c\ \x32\x31\x2e\x37\x36\x30\x36\x20\x37\x39\x2e\x34\x35\x33\x34\x2c\ \x32\x31\x2e\x37\x36\x30\x36\x20\x43\x20\x37\x39\x2e\x34\x35\x33\ \x34\x2c\x32\x31\x2e\x37\x36\x30\x36\x20\x39\x33\x2e\x36\x32\x36\ \x37\x2c\x37\x2e\x35\x38\x37\x33\x36\x20\x31\x35\x30\x2e\x33\x32\ \x2c\x37\x2e\x35\x38\x37\x33\x36\x20\x43\x20\x31\x35\x30\x2e\x33\ \x32\x2c\x33\x35\x2e\x39\x33\x33\x38\x20\x31\x35\x30\x2e\x33\x32\ \x2c\x31\x31\x38\x2e\x38\x39\x36\x20\x31\x35\x30\x2e\x33\x32\x2c\ \x31\x33\x35\x2e\x31\x34\x36\x20\x43\x20\x39\x33\x2e\x36\x32\x36\ \x37\x2c\x31\x33\x35\x2e\x31\x34\x36\x20\x37\x39\x2e\x34\x35\x33\ \x34\x2c\x31\x34\x39\x2e\x33\x32\x20\x37\x39\x2e\x34\x35\x33\x34\ \x2c\x31\x34\x39\x2e\x33\x32\x20\x43\x20\x37\x39\x2e\x34\x35\x33\ \x34\x2c\x31\x34\x39\x2e\x33\x32\x20\x36\x35\x2e\x32\x38\x30\x32\ \x2c\x31\x33\x35\x2e\x31\x34\x36\x20\x38\x2e\x35\x38\x37\x32\x39\ \x2c\x31\x33\x35\x2e\x31\x34\x36\x20\x43\x20\x38\x2e\x35\x38\x37\ \x32\x39\x2c\x31\x31\x33\x2e\x38\x38\x37\x20\x38\x2e\x35\x38\x37\ \x32\x39\x2c\x33\x35\x2e\x39\x33\x33\x38\x20\x38\x2e\x35\x38\x37\ \x32\x39\x2c\x37\x2e\x35\x38\x37\x33\x36\x20\x7a\x20\x22\x0a\x20\ \x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\ \x61\x74\x72\x69\x78\x28\x30\x2e\x39\x37\x30\x31\x33\x39\x2c\x30\ \x2c\x30\x2c\x30\x2e\x39\x37\x30\x31\x33\x39\x2c\x34\x2e\x31\x36\ \x39\x31\x34\x2c\x35\x2e\x31\x33\x39\x32\x29\x22\x0a\x20\x20\x20\ \x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\ \x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\ \x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\ \x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\ \x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x39\x2e\x33\x32\ \x37\x31\x30\x30\x37\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ \x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\ \x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\ \x32\x31\x31\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\ \x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x37\x37\x2e\x39\x35\x32\ \x38\x2c\x32\x37\x2e\x38\x35\x34\x33\x20\x4c\x20\x37\x37\x2e\x39\ \x35\x32\x38\x2c\x31\x34\x38\x2e\x33\x32\x37\x22\x0a\x20\x20\x20\ \x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\ \x6e\x73\x6c\x61\x74\x65\x28\x33\x2e\x32\x39\x37\x32\x31\x2c\x30\ \x29\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\ \x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\ \x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\ \x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\ \x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\ \x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ \x70\x61\x74\x68\x32\x31\x32\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\ \x67\x3e\x0a\ \x00\x00\x04\x44\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x36\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x65\x6c\x6c\x69\x70\x73\x65\x0a\x20\ \x20\x20\x20\x20\x63\x78\x3d\x22\x35\x36\x2e\x31\x31\x33\x32\x38\ \x31\x22\x0a\x20\x20\x20\x20\x20\x63\x79\x3d\x22\x35\x37\x2e\x36\ \x33\x36\x37\x31\x39\x22\x0a\x20\x20\x20\x20\x20\x72\x78\x3d\x22\ \x34\x34\x2e\x34\x33\x33\x35\x39\x34\x22\x0a\x20\x20\x20\x20\x20\ \x72\x79\x3d\x22\x34\x34\x2e\x34\x33\x33\x35\x39\x34\x22\x0a\x20\ \x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\ \x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x31\x2e\x31\x37\x31\x39\ \x2c\x2d\x31\x2e\x30\x31\x35\x36\x32\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x33\x32\ \x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\ \x20\x20\x64\x3d\x22\x4d\x20\x38\x31\x2e\x37\x35\x37\x38\x2c\x39\ \x36\x2e\x34\x38\x34\x34\x20\x4c\x20\x31\x32\x32\x2e\x38\x39\x31\ \x2c\x31\x35\x30\x2e\x38\x32\x22\x0a\x20\x20\x20\x20\x20\x74\x72\ \x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\ \x74\x65\x28\x31\x32\x2e\x31\x38\x37\x35\x2c\x2d\x33\x2e\x30\x34\ \x36\x38\x38\x29\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ \x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\ \x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\ \x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\ \x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\ \x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\ \x64\x3d\x22\x70\x61\x74\x68\x31\x33\x33\x22\x20\x2f\x3e\x0a\x20\ \x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\ \x20\x33\x39\x2e\x31\x30\x31\x36\x2c\x35\x34\x2e\x38\x34\x33\x38\ \x20\x4c\x20\x39\x35\x2e\x39\x37\x36\x36\x2c\x35\x34\x2e\x38\x34\ \x33\x38\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x31\x2e\x30\x31\x37\ \x38\x36\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x31\x2e\x37\x31\x33\x38\ \x37\x2c\x32\x2e\x35\x33\x39\x30\x36\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\ \x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\ \x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\ \x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\ \x32\x2e\x33\x38\x39\x38\x30\x30\x30\x37\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\ \x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ \x70\x61\x74\x68\x31\x37\x32\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\ \x67\x3e\x0a\ \x00\x00\x02\x2b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x34\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x31\x33\x37\x2e\x36\x30\x30\x38\x2c\x31\ \x32\x2e\x38\x34\x32\x37\x38\x20\x4c\x20\x31\x33\x38\x2e\x31\x32\ \x34\x39\x2c\x31\x34\x39\x2e\x36\x35\x37\x33\x20\x4c\x20\x31\x37\ \x2e\x35\x36\x30\x34\x37\x2c\x37\x39\x2e\x39\x33\x39\x35\x34\x20\ \x4c\x20\x31\x33\x37\x2e\x36\x30\x30\x38\x2c\x31\x32\x2e\x38\x34\ \x32\x37\x38\x20\x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\ \x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\ \x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\ \x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x3a\x23\x34\x62\x34\x61\x35\x30\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x38\x2e\x37\x35\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\ \x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\ \x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\ \x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x33\x31\x34\x32\x22\x20\ \x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x02\xb5\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x34\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x0a\x20\ \x20\x20\x20\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x39\x33\x2e\x39\ \x34\x35\x33\x2c\x37\x31\x2e\x30\x39\x33\x38\x20\x31\x35\x2e\x37\ \x32\x32\x38\x2c\x37\x31\x2e\x30\x36\x30\x32\x20\x2d\x36\x32\x2e\ \x34\x39\x39\x37\x2c\x37\x31\x2e\x30\x32\x36\x36\x20\x2d\x32\x33\ \x2e\x33\x35\x39\x34\x2c\x33\x2e\x33\x30\x30\x37\x38\x20\x31\x35\ \x2e\x37\x38\x31\x2c\x2d\x36\x34\x2e\x34\x32\x35\x31\x20\x35\x34\ \x2e\x38\x36\x33\x31\x2c\x33\x2e\x33\x33\x34\x33\x32\x20\x39\x33\ \x2e\x39\x34\x35\x33\x2c\x37\x31\x2e\x30\x39\x33\x38\x20\x22\x0a\ \x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\ \x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x38\x38\x39\x36\x37\x2c\x30\ \x2c\x30\x2c\x30\x2e\x39\x32\x38\x36\x34\x36\x2c\x36\x36\x2e\x38\ \x39\x33\x32\x2c\x37\x39\x2e\x31\x38\x33\x32\x29\x22\x0a\x20\x20\ \x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\ \x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\ \x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\ \x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\ \x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x39\x2e\x39\ \x30\x32\x30\x39\x39\x36\x31\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ \x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\ \x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x6f\x6c\ \x79\x67\x6f\x6e\x31\x31\x36\x32\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\ \x76\x67\x3e\x0a\ \x00\x00\x04\x4e\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x35\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x34\x36\x2e\x39\x33\x30\x32\x35\x2c\x31\ \x34\x36\x2e\x37\x30\x35\x20\x43\x20\x32\x31\x2e\x31\x39\x36\x38\ \x31\x2c\x31\x33\x33\x2e\x38\x36\x31\x33\x20\x35\x2e\x34\x32\x34\ \x39\x31\x38\x2c\x31\x30\x37\x2e\x30\x38\x33\x32\x20\x36\x2e\x36\ \x36\x39\x38\x37\x34\x2c\x37\x38\x2e\x33\x34\x39\x35\x35\x20\x43\ \x20\x37\x2e\x39\x31\x34\x38\x33\x2c\x34\x39\x2e\x36\x31\x35\x39\ \x31\x20\x32\x35\x2e\x39\x34\x33\x37\x32\x2c\x32\x34\x2e\x33\x30\ \x32\x33\x33\x20\x35\x32\x2e\x36\x39\x31\x36\x32\x2c\x31\x33\x2e\ \x37\x33\x32\x34\x35\x20\x43\x20\x37\x39\x2e\x34\x33\x39\x35\x31\ \x2c\x33\x2e\x31\x36\x32\x35\x36\x33\x20\x31\x30\x39\x2e\x39\x30\ \x32\x33\x2c\x39\x2e\x33\x31\x33\x38\x33\x37\x20\x31\x33\x30\x2e\ \x34\x35\x32\x39\x2c\x32\x39\x2e\x34\x33\x34\x36\x22\x0a\x20\x20\ \x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\ \x74\x72\x69\x78\x28\x2d\x30\x2e\x38\x35\x34\x37\x33\x2c\x30\x2c\ \x30\x2c\x30\x2e\x38\x35\x34\x37\x33\x2c\x31\x34\x38\x2e\x32\x39\ \x31\x38\x2c\x31\x32\x2e\x33\x34\x36\x37\x36\x29\x22\x0a\x20\x20\ \x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\ \x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\ \x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\ \x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\x2d\ \x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x31\x2e\x39\x33\x36\x38\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\ \x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\ \x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\ \x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x34\x39\x22\x20\x2f\ \x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\ \x3d\x22\x4d\x20\x31\x31\x35\x2e\x32\x37\x33\x2c\x33\x37\x2e\x30\ \x37\x30\x33\x20\x43\x20\x31\x31\x35\x2e\x32\x37\x33\x2c\x33\x37\ \x2e\x30\x37\x30\x33\x20\x31\x33\x36\x2e\x30\x39\x34\x2c\x33\x30\ \x2e\x39\x37\x36\x36\x20\x31\x33\x36\x2e\x30\x39\x34\x2c\x33\x30\ \x2e\x39\x37\x36\x36\x20\x43\x20\x31\x33\x36\x2e\x30\x39\x34\x2c\ \x33\x30\x2e\x39\x37\x36\x36\x20\x31\x33\x33\x2e\x35\x35\x34\x2c\ \x39\x2e\x31\x34\x30\x36\x36\x20\x31\x33\x33\x2e\x35\x35\x34\x2c\ \x39\x2e\x31\x34\x30\x36\x36\x22\x0a\x20\x20\x20\x20\x20\x74\x72\ \x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\ \x2d\x30\x2e\x38\x35\x34\x37\x33\x2c\x30\x2c\x30\x2c\x30\x2e\x38\ \x35\x34\x37\x33\x2c\x31\x35\x30\x2e\x30\x32\x37\x39\x2c\x31\x31\ \x2e\x39\x31\x32\x36\x37\x29\x22\x0a\x20\x20\x20\x20\x20\x73\x74\ \x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\ \x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\ \x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x31\x2e\x39\ \x33\x36\x38\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\ \x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x32\x32\ \x33\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x02\x2b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x34\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x33\x2e\x33\x32\x36\x35\x32\x2c\x31\ \x34\x39\x2e\x36\x35\x37\x33\x20\x4c\x20\x32\x32\x2e\x38\x30\x32\ \x34\x32\x2c\x31\x32\x2e\x38\x34\x32\x37\x38\x20\x4c\x20\x31\x34\ \x33\x2e\x33\x36\x36\x38\x2c\x38\x32\x2e\x35\x36\x30\x35\x34\x20\ \x4c\x20\x32\x33\x2e\x33\x32\x36\x35\x32\x2c\x31\x34\x39\x2e\x36\ \x35\x37\x33\x20\x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\ \x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\ \x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\ \x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x3a\x23\x34\x62\x34\x61\x35\x30\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x38\x2e\x37\x35\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\ \x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\ \x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\ \x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x33\x31\x34\x32\x22\x20\ \x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x04\x8b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x35\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\ \x33\x2e\x38\x36\x37\x20\x43\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x43\x20\x31\x33\x38\x2e\x31\x32\ \x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x43\x20\x31\x33\x38\x2e\ \x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\x31\x31\ \x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x35\x34\x2e\x38\x38\x33\x20\ \x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\ \x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x2e\ \x30\x31\x35\x36\x32\x2c\x30\x29\x22\x0a\x20\x20\x20\x20\x20\x73\ \x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\ \x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\x30\x66\ \x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\ \x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\ \x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x70\x61\x74\x68\x32\x31\x38\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ \x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\x31\x20\ \x43\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\ \x31\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\x20\ \x43\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\ \x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x2d\x33\x2e\x30\ \x34\x36\x38\x38\x2c\x33\x2e\x30\x34\x36\x38\x38\x29\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\ \x66\x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\ \x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\ \x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\ \x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ \x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\ \x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x39\x22\x20\ \x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x08\xb3\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x38\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x39\x2e\x30\x30\x31\x37\x2c\x37\x30\ \x2e\x33\x36\x20\x43\x20\x32\x39\x2e\x30\x30\x31\x37\x2c\x37\x30\ \x2e\x33\x36\x20\x31\x33\x38\x2e\x36\x38\x39\x2c\x37\x30\x2e\x33\ \x36\x20\x31\x33\x38\x2e\x36\x38\x39\x2c\x37\x30\x2e\x33\x36\x20\ \x43\x20\x31\x33\x38\x2e\x36\x38\x39\x2c\x37\x30\x2e\x33\x36\x20\ \x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\ \x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\ \x43\x20\x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\ \x37\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\ \x32\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\ \x32\x20\x43\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\ \x35\x36\x32\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\ \x35\x36\x32\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\ \x35\x36\x32\x20\x43\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\ \x2e\x31\x35\x36\x32\x20\x32\x39\x2e\x35\x30\x39\x35\x2c\x37\x31\ \x2e\x33\x37\x36\x31\x20\x32\x39\x2e\x30\x30\x31\x37\x2c\x37\x30\ \x2e\x33\x36\x20\x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\ \x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x30\ \x2e\x39\x2c\x30\x2c\x30\x2c\x30\x2e\x39\x2c\x2d\x39\x2e\x34\x31\ \x39\x39\x36\x2c\x38\x2e\x32\x30\x31\x34\x33\x29\x22\x0a\x20\x20\ \x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\ \x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\ \x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\ \x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\ \x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\ \x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\ \x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\ \x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x38\x22\x20\x2f\ \x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\ \x3d\x22\x4d\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\ \x36\x34\x31\x20\x43\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\ \x2e\x36\x36\x34\x31\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\ \x36\x32\x35\x20\x43\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\ \x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\ \x2c\x30\x2c\x30\x2c\x30\x2e\x39\x2c\x2d\x31\x33\x2e\x30\x37\x36\ \x32\x2c\x31\x30\x2e\x39\x34\x33\x36\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\ \x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\ \x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x39\x22\x20\x2f\x3e\x0a\ \x20\x20\x3c\x72\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3d\x22\x39\x36\x2e\x39\x39\x32\x33\x37\x38\x22\x0a\x20\ \x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x34\x32\x2e\x31\ \x34\x38\x34\x32\x36\x22\x0a\x20\x20\x20\x20\x20\x78\x3d\x22\x31\ \x37\x2e\x32\x36\x35\x35\x37\x35\x22\x0a\x20\x20\x20\x20\x20\x79\ \x3d\x22\x31\x30\x34\x2e\x31\x30\x31\x35\x33\x22\x0a\x20\x20\x20\ \x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\ \x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\ \x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\ \x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\ \x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\ \x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\ \x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\ \x20\x69\x64\x3d\x22\x72\x65\x63\x74\x35\x31\x32\x22\x20\x2f\x3e\ \x0a\x20\x20\x3c\x72\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3d\x22\x31\x31\x34\x2e\x32\x35\x38\x22\x0a\x20\x20\ \x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x37\x2e\x30\x37\ \x30\x33\x30\x31\x22\x0a\x20\x20\x20\x20\x20\x78\x3d\x22\x33\x38\ \x2e\x30\x38\x35\x38\x38\x38\x22\x0a\x20\x20\x20\x20\x20\x79\x3d\ \x22\x36\x39\x2e\x30\x36\x32\x34\x36\x32\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x65\x33\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x37\x34\x39\x30\x31\x39\x39\x37\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\ \x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\ \x69\x64\x3d\x22\x72\x65\x63\x74\x35\x31\x31\x22\x20\x2f\x3e\x0a\ \x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\ \x4d\x20\x37\x38\x2e\x34\x35\x30\x35\x2c\x37\x38\x2e\x35\x33\x31\ \x34\x20\x43\x20\x37\x38\x2e\x34\x35\x30\x35\x2c\x37\x38\x2e\x35\ \x33\x31\x34\x20\x31\x32\x32\x2e\x38\x39\x31\x2c\x37\x38\x2e\x37\ \x31\x30\x39\x20\x31\x32\x32\x2e\x38\x39\x31\x2c\x37\x38\x2e\x37\ \x31\x30\x39\x20\x43\x20\x31\x32\x32\x2e\x38\x39\x31\x2c\x37\x38\ \x2e\x37\x31\x30\x39\x20\x31\x30\x34\x2e\x31\x30\x32\x2c\x36\x36\ \x2e\x30\x31\x35\x36\x20\x31\x30\x34\x2e\x31\x30\x32\x2c\x36\x36\ \x2e\x30\x31\x35\x36\x20\x43\x20\x31\x30\x34\x2e\x31\x30\x32\x2c\ \x36\x36\x2e\x30\x31\x35\x36\x20\x31\x30\x34\x2e\x32\x38\x32\x2c\ \x39\x31\x2e\x32\x30\x31\x32\x20\x31\x30\x34\x2e\x32\x38\x32\x2c\ \x39\x31\x2e\x32\x30\x31\x32\x20\x43\x20\x31\x30\x34\x2e\x32\x38\ \x32\x2c\x39\x31\x2e\x32\x30\x31\x32\x20\x31\x32\x32\x2e\x39\x35\ \x32\x2c\x37\x38\x2e\x37\x31\x30\x39\x20\x31\x32\x32\x2e\x39\x35\ \x32\x2c\x37\x38\x2e\x37\x31\x30\x39\x20\x43\x20\x31\x32\x32\x2e\ \x39\x35\x32\x2c\x37\x38\x2e\x37\x31\x30\x39\x20\x37\x38\x2e\x33\ \x38\x38\x39\x2c\x37\x38\x2e\x34\x36\x39\x39\x20\x37\x38\x2e\x34\ \x35\x30\x35\x2c\x37\x38\x2e\x35\x33\x31\x34\x20\x7a\x20\x22\x0a\ \x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\ \x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x31\x39\x33\x34\x39\x2c\ \x30\x2c\x30\x2c\x30\x2e\x39\x31\x39\x33\x34\x39\x2c\x39\x2e\x36\ \x34\x35\x31\x34\x2c\x31\x35\x2e\x33\x33\x31\x38\x29\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\ \x34\x61\x34\x62\x34\x66\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ \x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\ \x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\ \x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\x73\x74\x72\x6f\x6b\x65\ \x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\ \x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\ \x61\x74\x68\x35\x31\x33\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\ \x3e\x0a\ \x00\x00\x04\x88\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x34\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x31\x30\x2e\x31\x35\x36\x32\x2c\x33\x34\ \x2e\x35\x33\x31\x32\x20\x43\x20\x31\x30\x2e\x31\x35\x36\x32\x2c\ \x33\x34\x2e\x35\x33\x31\x32\x20\x33\x35\x2e\x30\x33\x39\x31\x2c\ \x39\x2e\x36\x34\x38\x34\x34\x20\x33\x35\x2e\x30\x33\x39\x31\x2c\ \x39\x2e\x36\x34\x38\x34\x34\x20\x43\x20\x33\x35\x2e\x30\x33\x39\ \x31\x2c\x39\x2e\x36\x34\x38\x34\x34\x20\x39\x35\x2e\x36\x36\x34\ \x31\x2c\x37\x30\x2e\x39\x39\x31\x37\x20\x39\x35\x2e\x36\x36\x34\ \x31\x2c\x37\x30\x2e\x39\x39\x31\x37\x20\x43\x20\x39\x35\x2e\x36\ \x36\x34\x31\x2c\x37\x30\x2e\x39\x39\x31\x37\x20\x39\x33\x2e\x35\ \x37\x31\x33\x2c\x38\x38\x2e\x31\x38\x30\x37\x20\x39\x33\x2e\x35\ \x37\x31\x33\x2c\x38\x38\x2e\x31\x38\x30\x37\x20\x43\x20\x39\x33\ \x2e\x35\x37\x31\x33\x2c\x38\x38\x2e\x31\x38\x30\x37\x20\x31\x33\ \x31\x2e\x37\x32\x39\x2c\x31\x32\x36\x2e\x37\x32\x34\x20\x31\x33\ \x31\x2e\x37\x32\x39\x2c\x31\x32\x36\x2e\x37\x32\x34\x20\x43\x20\ \x31\x33\x31\x2e\x37\x32\x39\x2c\x31\x32\x36\x2e\x37\x32\x34\x20\ \x31\x33\x37\x2e\x31\x39\x32\x2c\x31\x32\x37\x2e\x35\x32\x39\x20\ \x31\x33\x37\x2e\x31\x39\x32\x2c\x31\x32\x37\x2e\x35\x32\x39\x20\ \x43\x20\x31\x33\x37\x2e\x31\x39\x32\x2c\x31\x32\x37\x2e\x35\x32\ \x39\x20\x31\x34\x32\x2e\x38\x36\x36\x2c\x31\x33\x33\x2e\x34\x39\ \x39\x20\x31\x34\x32\x2e\x38\x36\x36\x2c\x31\x33\x33\x2e\x34\x39\ \x39\x20\x43\x20\x31\x34\x32\x2e\x38\x36\x36\x2c\x31\x33\x33\x2e\ \x34\x39\x39\x20\x31\x33\x33\x2e\x35\x37\x36\x2c\x31\x34\x33\x2e\ \x30\x38\x36\x20\x31\x33\x33\x2e\x35\x37\x36\x2c\x31\x34\x33\x2e\ \x30\x38\x36\x20\x43\x20\x31\x33\x33\x2e\x35\x37\x36\x2c\x31\x34\ \x33\x2e\x30\x38\x36\x20\x31\x32\x37\x2e\x38\x34\x31\x2c\x31\x33\ \x37\x2e\x34\x37\x35\x20\x31\x32\x37\x2e\x38\x34\x31\x2c\x31\x33\ \x37\x2e\x34\x37\x35\x20\x43\x20\x31\x32\x37\x2e\x38\x34\x31\x2c\ \x31\x33\x37\x2e\x34\x37\x35\x20\x31\x32\x36\x2e\x39\x34\x39\x2c\ \x31\x33\x30\x2e\x39\x39\x36\x20\x31\x32\x36\x2e\x39\x34\x39\x2c\ \x31\x33\x30\x2e\x39\x39\x36\x20\x43\x20\x31\x32\x36\x2e\x39\x34\ \x39\x2c\x31\x33\x30\x2e\x39\x39\x36\x20\x38\x38\x2e\x38\x35\x32\ \x32\x2c\x39\x32\x2e\x36\x30\x32\x33\x20\x38\x38\x2e\x38\x35\x32\ \x32\x2c\x39\x32\x2e\x36\x30\x32\x33\x20\x43\x20\x38\x38\x2e\x38\ \x35\x32\x32\x2c\x39\x32\x2e\x36\x30\x32\x33\x20\x37\x30\x2e\x37\ \x31\x39\x38\x2c\x39\x35\x2e\x36\x33\x38\x35\x20\x37\x30\x2e\x37\ \x31\x39\x38\x2c\x39\x35\x2e\x36\x33\x38\x35\x20\x43\x20\x37\x30\ \x2e\x37\x31\x39\x38\x2c\x39\x35\x2e\x36\x33\x38\x35\x20\x39\x2e\ \x36\x34\x38\x34\x34\x2c\x33\x35\x2e\x35\x34\x36\x39\x20\x31\x30\ \x2e\x31\x35\x36\x32\x2c\x33\x34\x2e\x35\x33\x31\x32\x20\x7a\x20\ \x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\ \x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x32\x2e\x33\x32\ \x37\x37\x2c\x32\x2e\x37\x32\x34\x37\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\ \x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\ \x69\x64\x3d\x22\x70\x61\x74\x68\x37\x35\x31\x22\x20\x2f\x3e\x0a\ \x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x06\x0e\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x36\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\ \x33\x2e\x38\x36\x37\x20\x43\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x43\x20\x31\x33\x38\x2e\x31\x32\ \x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x43\x20\x31\x33\x38\x2e\ \x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\x31\x31\ \x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x35\x34\x2e\x38\x38\x33\x20\ \x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\ \x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x2e\ \x30\x31\x35\x36\x32\x2c\x30\x29\x22\x0a\x20\x20\x20\x20\x20\x73\ \x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\ \x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\x30\x66\ \x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\ \x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\ \x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x70\x61\x74\x68\x32\x31\x38\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ \x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\x31\x20\ \x43\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\ \x31\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\x20\ \x43\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\ \x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x2d\x33\x2e\x30\ \x34\x36\x38\x38\x2c\x33\x2e\x30\x34\x36\x38\x38\x29\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\ \x66\x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\ \x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\ \x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\ \x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ \x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\ \x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x39\x22\x20\ \x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\ \x64\x3d\x22\x4d\x20\x34\x31\x2e\x36\x34\x30\x37\x2c\x31\x33\x32\ \x2e\x35\x33\x39\x20\x43\x20\x33\x31\x2e\x34\x38\x34\x34\x2c\x31\ \x31\x35\x2e\x32\x37\x33\x20\x31\x32\x39\x2e\x34\x39\x33\x2c\x31\ \x30\x30\x2e\x35\x34\x36\x20\x31\x31\x35\x2e\x37\x38\x32\x2c\x31\ \x31\x34\x2e\x32\x35\x37\x20\x43\x20\x39\x39\x2e\x35\x33\x31\x38\ \x2c\x31\x32\x38\x2e\x39\x38\x34\x20\x38\x35\x2e\x33\x31\x32\x35\ \x2c\x35\x32\x2e\x33\x30\x34\x36\x20\x39\x33\x2e\x39\x34\x35\x34\ \x2c\x35\x32\x2e\x33\x30\x34\x36\x20\x43\x20\x31\x30\x31\x2e\x30\ \x35\x35\x2c\x35\x32\x2e\x33\x30\x34\x36\x20\x35\x30\x2e\x37\x38\ \x31\x32\x2c\x31\x34\x35\x2e\x37\x34\x32\x20\x34\x31\x2e\x36\x34\ \x30\x37\x2c\x31\x33\x32\x2e\x35\x33\x39\x20\x7a\x20\x22\x0a\x20\ \x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\ \x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x2e\x35\x32\x33\x34\x34\ \x2c\x2d\x36\x2e\x30\x39\x33\x37\x35\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\ \x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\ \x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x66\x66\x30\x30\x30\ \x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\ \x2e\x32\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\ \x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x35\x30\ \x33\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x09\x0c\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x64\x63\ \x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\ \x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\x6e\x74\x73\x2f\x31\x2e\ \x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x63\x63\x3d\ \x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x65\x61\x74\x69\x76\x65\ \x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\x67\x2f\x6e\x73\x23\x22\ \x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\ \x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\ \x2f\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\ \x73\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x0a\x20\x20\x20\x78\ \x6d\x6c\x6e\x73\x3a\x73\x76\x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\ \x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\ \x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\ \x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\ \x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\ \x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\x6f\x64\x69\x3d\x22\x68\ \x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\x70\x6f\x64\x69\x2e\x73\ \x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\x2e\x6e\x65\x74\x2f\x44\ \x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\x69\x2d\x30\x2e\x64\x74\ \x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x69\x6e\x6b\x73\ \x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ \x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x6e\x61\ \x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\x6e\x6b\x73\x63\x61\x70\ \x65\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\ \x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x36\ \x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\x73\x76\ \x67\x31\x30\x31\x22\x0a\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\ \x69\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x30\x2e\x33\x32\x22\ \x0a\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x76\x65\x72\ \x73\x69\x6f\x6e\x3d\x22\x30\x2e\x34\x36\x22\x0a\x20\x20\x20\x73\ \x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ \x22\x63\x6c\x6f\x73\x65\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\ \x6e\x6b\x73\x63\x61\x70\x65\x3a\x6f\x75\x74\x70\x75\x74\x5f\x65\ \x78\x74\x65\x6e\x73\x69\x6f\x6e\x3d\x22\x6f\x72\x67\x2e\x69\x6e\ \x6b\x73\x63\x61\x70\x65\x2e\x6f\x75\x74\x70\x75\x74\x2e\x73\x76\ \x67\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x22\x3e\x0a\x20\x20\x3c\ \x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x37\x22\x3e\x0a\x20\x20\ \x20\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x3c\x63\x63\x3a\x57\x6f\x72\x6b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x72\x64\x66\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\x3a\x66\x6f\ \x72\x6d\x61\x74\x3e\x69\x6d\x61\x67\x65\x2f\x73\x76\x67\x2b\x78\ \x6d\x6c\x3c\x2f\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\x3a\x74\x79\x70\x65\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x72\ \x65\x73\x6f\x75\x72\x63\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x64\x63\x6d\x69\ \x74\x79\x70\x65\x2f\x53\x74\x69\x6c\x6c\x49\x6d\x61\x67\x65\x22\ \x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x2f\x63\x63\x3a\x57\ \x6f\x72\x6b\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x72\x64\x66\x3a\x52\ \x44\x46\x3e\x0a\x20\x20\x3c\x2f\x6d\x65\x74\x61\x64\x61\x74\x61\ \x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\x61\ \x6d\x65\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x68\x65\x69\ \x67\x68\x74\x3d\x22\x38\x35\x30\x22\x0a\x20\x20\x20\x20\x20\x69\ \x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x77\ \x69\x64\x74\x68\x3d\x22\x31\x34\x34\x30\x22\x0a\x20\x20\x20\x20\ \x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x73\x68\ \x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\ \x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x6f\x70\x61\x63\x69\ \x74\x79\x3d\x22\x30\x2e\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x75\ \x69\x64\x65\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\ \x2e\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x72\x69\x64\x74\x6f\x6c\ \x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x2e\x30\x22\x0a\x20\x20\ \x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\x6e\ \x63\x65\x3d\x22\x31\x30\x2e\x30\x22\x0a\x20\x20\x20\x20\x20\x62\ \x6f\x72\x64\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\x2e\ \x30\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\x6f\ \x6c\x6f\x72\x3d\x22\x23\x36\x36\x36\x36\x36\x36\x22\x0a\x20\x20\ \x20\x20\x20\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ \x62\x61\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x73\x68\x6f\x77\x67\ \x72\x69\x64\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\x20\x20\x20\x20\ \x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\ \x32\x2e\x38\x35\x35\x33\x38\x34\x36\x22\x0a\x20\x20\x20\x20\x20\ \x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\x31\x34\x30\ \x2e\x34\x33\x36\x34\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x3a\x63\x79\x3d\x22\x38\x31\x2e\x32\x35\x22\ \x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\ \x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\x2d\x31\x22\x0a\x20\x20\x20\ \x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\ \x77\x2d\x79\x3d\x22\x30\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\x6c\x61\ \x79\x65\x72\x3d\x22\x73\x76\x67\x31\x30\x31\x22\x20\x2f\x3e\x0a\ \x20\x20\x3c\x64\x65\x66\x73\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x64\x65\x66\x73\x35\x22\x3e\x0a\x20\x20\x20\x20\x3c\x69\x6e\ \x6b\x73\x63\x61\x70\x65\x3a\x70\x65\x72\x73\x70\x65\x63\x74\x69\ \x76\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\ \x64\x69\x3a\x74\x79\x70\x65\x3d\x22\x69\x6e\x6b\x73\x63\x61\x70\ \x65\x3a\x70\x65\x72\x73\x70\x33\x64\x22\x0a\x20\x20\x20\x20\x20\ \x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x76\x70\x5f\x78\x3d\ \x22\x30\x20\x3a\x20\x38\x31\x2e\x32\x35\x20\x3a\x20\x31\x22\x0a\ \x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ \x76\x70\x5f\x79\x3d\x22\x30\x20\x3a\x20\x31\x30\x30\x30\x20\x3a\ \x20\x30\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ \x61\x70\x65\x3a\x76\x70\x5f\x7a\x3d\x22\x31\x36\x32\x2e\x35\x20\ \x3a\x20\x38\x31\x2e\x32\x35\x20\x3a\x20\x31\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x65\x72\ \x73\x70\x33\x64\x2d\x6f\x72\x69\x67\x69\x6e\x3d\x22\x38\x31\x2e\ \x32\x35\x20\x3a\x20\x35\x34\x2e\x31\x36\x36\x36\x36\x37\x20\x3a\ \x20\x31\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\ \x65\x72\x73\x70\x65\x63\x74\x69\x76\x65\x39\x22\x20\x2f\x3e\x0a\ \x20\x20\x3c\x2f\x64\x65\x66\x73\x3e\x0a\x20\x20\x3c\x70\x61\x74\ \x68\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\ \x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\ \x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ \x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\ \x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\ \x69\x64\x74\x68\x3a\x32\x34\x2e\x30\x36\x34\x31\x34\x34\x31\x33\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\ \x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\ \x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\ \x20\x20\x64\x3d\x22\x4d\x20\x31\x34\x31\x2e\x34\x39\x31\x34\x37\ \x2c\x32\x31\x2e\x35\x31\x35\x39\x30\x37\x20\x43\x20\x31\x30\x31\ \x2e\x36\x36\x38\x35\x34\x2c\x36\x31\x2e\x33\x33\x38\x38\x33\x33\ \x20\x36\x31\x2e\x38\x34\x35\x36\x31\x38\x2c\x31\x30\x31\x2e\x31\ \x36\x31\x37\x36\x20\x32\x32\x2e\x30\x32\x32\x36\x39\x2c\x31\x34\ \x30\x2e\x39\x38\x34\x36\x39\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x70\x61\x74\x68\x31\x37\x32\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ \x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\ \x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\ \x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x34\x2e\x30\x36\x34\x31\ \x34\x34\x31\x33\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\ \x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\ \x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\ \x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x32\x32\x2e\x30\x32\ \x33\x38\x30\x37\x2c\x32\x31\x2e\x35\x31\x35\x35\x32\x39\x20\x43\ \x20\x36\x31\x2e\x38\x34\x36\x37\x33\x33\x2c\x36\x31\x2e\x33\x33\ \x38\x34\x35\x36\x20\x31\x30\x31\x2e\x36\x36\x39\x36\x36\x2c\x31\ \x30\x31\x2e\x31\x36\x31\x33\x38\x20\x31\x34\x31\x2e\x34\x39\x32\ \x35\x39\x2c\x31\x34\x30\x2e\x39\x38\x34\x33\x31\x22\x0a\x20\x20\ \x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x34\x30\x31\x22\ \x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x08\x1b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x37\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\ \x33\x2e\x38\x36\x37\x20\x43\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x43\x20\x31\x33\x38\x2e\x31\x32\ \x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x43\x20\x31\x33\x38\x2e\ \x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\x31\x31\ \x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x35\x34\x2e\x38\x38\x33\x20\ \x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\ \x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x2c\x30\ \x2c\x30\x2c\x30\x2e\x39\x2c\x2d\x31\x30\x2e\x39\x34\x33\x34\x2c\ \x2d\x30\x2e\x34\x33\x31\x33\x38\x35\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\ \x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\ \x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x38\x22\x20\x2f\x3e\x0a\ \x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\ \x4d\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\ \x31\x20\x43\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\ \x36\x34\x31\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\ \x32\x35\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\ \x35\x20\x43\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\ \x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\ \x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\ \x32\x35\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x2c\x30\ \x2c\x30\x2c\x30\x2e\x39\x2c\x2d\x31\x34\x2e\x35\x39\x39\x36\x2c\ \x32\x2e\x33\x31\x30\x37\x39\x29\x22\x0a\x20\x20\x20\x20\x20\x73\ \x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\ \x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\x30\x66\ \x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\ \x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\ \x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x70\x61\x74\x68\x32\x31\x39\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ \x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\ \x43\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\x33\x2e\x38\x36\ \x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\x31\x35\x33\x2e\x38\x36\ \x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\x31\x35\x33\x2e\x38\x36\ \x37\x20\x43\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\x31\x35\x33\x2e\ \x38\x36\x37\x20\x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\ \x31\x35\x37\x20\x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\ \x31\x35\x37\x20\x43\x20\x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\ \x2e\x35\x31\x35\x37\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\ \x2e\x31\x35\x36\x32\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\ \x2e\x31\x35\x36\x32\x20\x43\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\ \x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\ \x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\ \x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\x32\x38\x2e\x39\x34\x35\ \x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\x2e\x39\x34\x35\ \x33\x2c\x31\x35\x34\x2e\x38\x38\x33\x20\x32\x38\x2e\x34\x33\x37\ \x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\x7a\x20\x22\x0a\x20\x20\ \x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\ \x74\x72\x69\x78\x28\x30\x2e\x39\x2c\x30\x2c\x30\x2c\x30\x2e\x39\ \x2c\x32\x32\x2e\x30\x36\x34\x34\x2c\x31\x34\x2e\x38\x30\x33\x29\ \x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\ \x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\ \x6c\x3a\x23\x65\x33\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\ \x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x37\x34\x39\x30\x31\x39\x39\ \x37\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\ \x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\ \x34\x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\ \x31\x32\x2e\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\ \x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\ \x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x35\x30\ \x39\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\ \x20\x20\x20\x64\x3d\x22\x4d\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\ \x31\x30\x2e\x36\x36\x34\x31\x20\x43\x20\x31\x30\x38\x2e\x36\x37\ \x32\x2c\x31\x30\x2e\x36\x36\x34\x31\x20\x31\x30\x39\x2e\x31\x38\ \x2c\x33\x36\x2e\x35\x36\x32\x35\x20\x31\x30\x39\x2e\x31\x38\x2c\ \x33\x36\x2e\x35\x36\x32\x35\x20\x43\x20\x31\x30\x39\x2e\x31\x38\ \x2c\x33\x36\x2e\x35\x36\x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\ \x2c\x33\x36\x2e\x35\x36\x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\ \x2c\x33\x36\x2e\x35\x36\x32\x35\x22\x0a\x20\x20\x20\x20\x20\x74\ \x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\ \x28\x30\x2e\x39\x2c\x30\x2c\x30\x2c\x30\x2e\x39\x2c\x31\x38\x2e\ \x34\x30\x38\x32\x2c\x31\x37\x2e\x35\x34\x35\x32\x29\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\ \x66\x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\ \x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\ \x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\ \x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ \x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\ \x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x35\x31\x30\x22\x20\ \x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x05\x25\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x36\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x37\x2e\x31\x30\x39\x33\x38\x2c\x31\x36\ \x2e\x32\x35\x20\x43\x20\x37\x2e\x31\x30\x39\x33\x38\x2c\x31\x36\ \x2e\x32\x35\x20\x36\x2e\x36\x30\x31\x35\x36\x2c\x31\x35\x31\x2e\ \x33\x32\x38\x20\x36\x2e\x36\x30\x31\x35\x36\x2c\x31\x35\x31\x2e\ \x33\x32\x38\x20\x43\x20\x36\x2e\x36\x30\x31\x35\x36\x2c\x31\x35\ \x31\x2e\x33\x32\x38\x20\x31\x35\x34\x2e\x33\x37\x35\x2c\x31\x35\ \x31\x2e\x33\x32\x38\x20\x31\x35\x34\x2e\x33\x37\x35\x2c\x31\x35\ \x31\x2e\x33\x32\x38\x20\x43\x20\x31\x35\x34\x2e\x33\x37\x35\x2c\ \x31\x35\x31\x2e\x33\x32\x38\x20\x31\x35\x34\x2e\x33\x37\x35\x2c\ \x33\x32\x2e\x35\x20\x31\x35\x34\x2e\x33\x37\x35\x2c\x33\x32\x2e\ \x35\x20\x43\x20\x31\x35\x34\x2e\x33\x37\x35\x2c\x33\x32\x2e\x35\ \x20\x31\x33\x39\x2e\x36\x34\x38\x2c\x31\x36\x2e\x32\x35\x20\x31\ \x33\x39\x2e\x36\x34\x38\x2c\x31\x36\x2e\x32\x35\x20\x43\x20\x31\ \x33\x39\x2e\x36\x34\x38\x2c\x31\x36\x2e\x32\x35\x20\x37\x2e\x36\ \x31\x37\x31\x39\x2c\x31\x36\x2e\x32\x35\x20\x37\x2e\x31\x30\x39\ \x33\x38\x2c\x31\x36\x2e\x32\x35\x20\x7a\x20\x22\x0a\x20\x20\x20\ \x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\ \x72\x69\x78\x28\x31\x2c\x30\x2c\x30\x2c\x31\x2e\x30\x38\x36\x34\ \x37\x2c\x31\x2e\x30\x31\x35\x36\x32\x2c\x2d\x39\x2e\x30\x32\x32\ \x32\x35\x29\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\ \x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\ \x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\x30\x66\x38\x3b\x66\x69\x6c\ \x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\ \x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\ \x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\ \x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\ \x74\x68\x3a\x31\x31\x2e\x39\x39\x32\x33\x30\x30\x30\x33\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\ \x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\ \x69\x64\x3d\x22\x70\x61\x74\x68\x31\x30\x34\x37\x22\x20\x2f\x3e\ \x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\ \x22\x4d\x20\x33\x39\x2e\x36\x30\x39\x34\x2c\x31\x31\x2e\x31\x37\ \x31\x39\x20\x43\x20\x33\x39\x2e\x36\x30\x39\x34\x2c\x31\x31\x2e\ \x31\x37\x31\x39\x20\x33\x39\x2e\x31\x30\x31\x36\x2c\x36\x35\x2e\ \x35\x30\x37\x38\x20\x33\x39\x2e\x31\x30\x31\x36\x2c\x36\x35\x2e\ \x35\x30\x37\x38\x20\x43\x20\x33\x39\x2e\x31\x30\x31\x36\x2c\x36\ \x35\x2e\x35\x30\x37\x38\x20\x31\x32\x34\x2e\x34\x31\x34\x2c\x36\ \x35\x2e\x35\x30\x37\x38\x20\x31\x32\x34\x2e\x34\x31\x34\x2c\x36\ \x35\x2e\x35\x30\x37\x38\x20\x43\x20\x31\x32\x34\x2e\x34\x31\x34\ \x2c\x36\x35\x2e\x35\x30\x37\x38\x20\x31\x32\x33\x2e\x39\x30\x36\ \x2c\x31\x30\x2e\x36\x36\x34\x20\x31\x32\x33\x2e\x39\x30\x36\x2c\ \x31\x30\x2e\x36\x36\x34\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\ \x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\ \x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\ \x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\ \x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ \x70\x61\x74\x68\x31\x30\x34\x39\x22\x20\x2f\x3e\x0a\x20\x20\x3c\ \x72\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3d\ \x22\x31\x37\x2e\x32\x36\x35\x36\x22\x0a\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3d\x22\x33\x39\x2e\x36\x30\x39\x34\x31\x33\ \x22\x0a\x20\x20\x20\x20\x20\x72\x79\x3d\x22\x32\x2e\x30\x35\x37\ \x36\x33\x30\x31\x22\x0a\x20\x20\x20\x20\x20\x78\x3d\x22\x39\x38\ \x2e\x30\x30\x37\x38\x32\x38\x22\x0a\x20\x20\x20\x20\x20\x79\x3d\ \x22\x31\x38\x2e\x37\x38\x39\x31\x30\x38\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x34\x61\x34\ \x62\x34\x66\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\ \x65\x6e\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ \x72\x65\x63\x74\x31\x30\x35\x34\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\ \x76\x67\x3e\x0a\ \x00\x00\x04\x06\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x35\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x35\x32\x2e\x35\x34\x39\x31\x36\x33\x2c\ \x31\x34\x34\x2e\x32\x35\x38\x39\x34\x20\x43\x20\x33\x30\x2e\x35\ \x35\x34\x30\x31\x39\x2c\x31\x33\x33\x2e\x32\x38\x31\x30\x34\x20\ \x31\x37\x2e\x30\x37\x33\x33\x31\x2c\x31\x31\x30\x2e\x33\x39\x33\ \x20\x31\x38\x2e\x31\x33\x37\x34\x31\x31\x2c\x38\x35\x2e\x38\x33\ \x33\x34\x38\x37\x20\x43\x20\x31\x39\x2e\x32\x30\x31\x35\x31\x33\ \x2c\x36\x31\x2e\x32\x37\x33\x39\x38\x33\x20\x33\x34\x2e\x36\x31\ \x31\x33\x34\x36\x2c\x33\x39\x2e\x36\x33\x37\x37\x30\x37\x20\x35\ \x37\x2e\x34\x37\x33\x35\x37\x38\x2c\x33\x30\x2e\x36\x30\x33\x33\ \x31\x33\x20\x43\x20\x38\x30\x2e\x33\x33\x35\x38\x30\x32\x2c\x32\ \x31\x2e\x35\x36\x38\x39\x31\x33\x20\x31\x30\x36\x2e\x33\x37\x33\ \x32\x36\x2c\x32\x36\x2e\x38\x32\x36\x35\x39\x32\x20\x31\x32\x33\ \x2e\x39\x33\x38\x34\x38\x2c\x34\x34\x2e\x30\x32\x34\x34\x31\x32\ \x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\ \x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\ \x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\ \x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x38\x2e\ \x37\x35\x30\x30\x34\x31\x39\x36\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\ \x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\ \x74\x68\x32\x34\x39\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\ \x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x31\x30\x39\x2e\ \x32\x32\x37\x36\x36\x2c\x35\x30\x2e\x31\x31\x36\x38\x37\x34\x20\ \x43\x20\x31\x30\x39\x2e\x32\x32\x37\x36\x36\x2c\x35\x30\x2e\x31\ \x31\x36\x38\x37\x34\x20\x31\x32\x37\x2e\x30\x32\x33\x39\x39\x2c\ \x34\x34\x2e\x39\x30\x38\x34\x30\x35\x20\x31\x32\x37\x2e\x30\x32\ \x33\x39\x39\x2c\x34\x34\x2e\x39\x30\x38\x34\x30\x35\x20\x43\x20\ \x31\x32\x37\x2e\x30\x32\x33\x39\x39\x2c\x34\x34\x2e\x39\x30\x38\ \x34\x30\x35\x20\x31\x32\x34\x2e\x38\x35\x32\x39\x38\x2c\x32\x36\ \x2e\x32\x34\x34\x35\x37\x32\x20\x31\x32\x34\x2e\x38\x35\x32\x39\ \x38\x2c\x32\x36\x2e\x32\x34\x34\x35\x37\x32\x22\x0a\x20\x20\x20\ \x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\ \x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\ \x65\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\ \x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\ \x34\x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\ \x31\x38\x2e\x37\x35\x30\x30\x34\x31\x39\x36\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\ \x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x70\x61\x74\x68\x31\x32\x32\x33\x22\x20\x2f\x3e\x0a\x3c\x2f\ \x73\x76\x67\x3e\x0a\ \x00\x00\x02\x2a\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x34\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x31\x33\x2e\x36\x32\x39\x30\x33\x2c\x31\ \x39\x2e\x39\x31\x39\x33\x36\x20\x4c\x20\x31\x35\x30\x2e\x34\x34\ \x33\x35\x2c\x31\x39\x2e\x33\x39\x35\x31\x37\x20\x4c\x20\x38\x30\ \x2e\x37\x32\x35\x38\x2c\x31\x33\x39\x2e\x39\x35\x39\x37\x20\x4c\ \x20\x31\x33\x2e\x36\x32\x39\x30\x33\x2c\x31\x39\x2e\x39\x31\x39\ \x33\x36\x20\x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\ \x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\ \x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x62\x34\x61\x35\x30\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x38\x2e\x37\x35\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\ \x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\ \x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\ \x20\x69\x64\x3d\x22\x70\x61\x74\x68\x33\x31\x34\x32\x22\x20\x2f\ \x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x08\xb5\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x38\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x39\x2e\x30\x30\x31\x37\x2c\x37\x30\ \x2e\x33\x36\x20\x43\x20\x32\x39\x2e\x30\x30\x31\x37\x2c\x37\x30\ \x2e\x33\x36\x20\x31\x33\x38\x2e\x36\x38\x39\x2c\x37\x30\x2e\x33\ \x36\x20\x31\x33\x38\x2e\x36\x38\x39\x2c\x37\x30\x2e\x33\x36\x20\ \x43\x20\x31\x33\x38\x2e\x36\x38\x39\x2c\x37\x30\x2e\x33\x36\x20\ \x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\ \x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\ \x43\x20\x31\x33\x38\x2e\x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\ \x37\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\ \x32\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\ \x32\x20\x43\x20\x31\x31\x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\ \x35\x36\x32\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\ \x35\x36\x32\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\ \x35\x36\x32\x20\x43\x20\x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\ \x2e\x31\x35\x36\x32\x20\x32\x39\x2e\x35\x30\x39\x35\x2c\x37\x31\ \x2e\x33\x37\x36\x31\x20\x32\x39\x2e\x30\x30\x31\x37\x2c\x37\x30\ \x2e\x33\x36\x20\x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\ \x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x30\ \x2e\x39\x2c\x30\x2c\x30\x2c\x30\x2e\x39\x2c\x2d\x39\x2e\x34\x31\ \x39\x39\x36\x2c\x38\x2e\x32\x30\x31\x34\x33\x29\x22\x0a\x20\x20\ \x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\ \x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\ \x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\ \x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\ \x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\ \x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\ \x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\ \x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x38\x22\x20\x2f\ \x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\ \x3d\x22\x4d\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\ \x36\x34\x31\x20\x43\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\ \x2e\x36\x36\x34\x31\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\ \x36\x32\x35\x20\x43\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\ \x35\x36\x32\x35\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\ \x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\ \x2c\x30\x2c\x30\x2c\x30\x2e\x39\x2c\x2d\x31\x33\x2e\x30\x37\x36\ \x32\x2c\x31\x30\x2e\x39\x34\x33\x36\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\ \x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\ \x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x39\x22\x20\x2f\x3e\x0a\ \x20\x20\x3c\x72\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3d\x22\x39\x36\x2e\x39\x39\x32\x33\x37\x38\x22\x0a\x20\ \x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x34\x32\x2e\x31\ \x34\x38\x34\x32\x36\x22\x0a\x20\x20\x20\x20\x20\x78\x3d\x22\x31\ \x37\x2e\x32\x36\x35\x35\x37\x35\x22\x0a\x20\x20\x20\x20\x20\x79\ \x3d\x22\x31\x30\x34\x2e\x31\x30\x31\x35\x33\x22\x0a\x20\x20\x20\ \x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\ \x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\ \x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\ \x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\ \x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\ \x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\ \x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\ \x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\ \x20\x69\x64\x3d\x22\x72\x65\x63\x74\x35\x31\x32\x22\x20\x2f\x3e\ \x0a\x20\x20\x3c\x72\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3d\x22\x31\x31\x34\x2e\x32\x35\x38\x22\x0a\x20\x20\ \x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x37\x2e\x30\x37\ \x30\x33\x30\x31\x22\x0a\x20\x20\x20\x20\x20\x78\x3d\x22\x33\x38\ \x2e\x30\x38\x35\x38\x38\x38\x22\x0a\x20\x20\x20\x20\x20\x79\x3d\ \x22\x36\x39\x2e\x30\x36\x32\x34\x36\x32\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x65\x33\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x37\x34\x39\x30\x31\x39\x39\x37\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\x73\ \x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\ \x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\ \x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\ \x69\x64\x3d\x22\x72\x65\x63\x74\x35\x31\x31\x22\x20\x2f\x3e\x0a\ \x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\ \x4d\x20\x37\x38\x2e\x34\x35\x30\x35\x2c\x37\x38\x2e\x35\x33\x31\ \x34\x20\x43\x20\x37\x38\x2e\x34\x35\x30\x35\x2c\x37\x38\x2e\x35\ \x33\x31\x34\x20\x31\x32\x32\x2e\x38\x39\x31\x2c\x37\x38\x2e\x37\ \x31\x30\x39\x20\x31\x32\x32\x2e\x38\x39\x31\x2c\x37\x38\x2e\x37\ \x31\x30\x39\x20\x43\x20\x31\x32\x32\x2e\x38\x39\x31\x2c\x37\x38\ \x2e\x37\x31\x30\x39\x20\x31\x30\x34\x2e\x31\x30\x32\x2c\x36\x36\ \x2e\x30\x31\x35\x36\x20\x31\x30\x34\x2e\x31\x30\x32\x2c\x36\x36\ \x2e\x30\x31\x35\x36\x20\x43\x20\x31\x30\x34\x2e\x31\x30\x32\x2c\ \x36\x36\x2e\x30\x31\x35\x36\x20\x31\x30\x34\x2e\x32\x38\x32\x2c\ \x39\x31\x2e\x32\x30\x31\x32\x20\x31\x30\x34\x2e\x32\x38\x32\x2c\ \x39\x31\x2e\x32\x30\x31\x32\x20\x43\x20\x31\x30\x34\x2e\x32\x38\ \x32\x2c\x39\x31\x2e\x32\x30\x31\x32\x20\x31\x32\x32\x2e\x39\x35\ \x32\x2c\x37\x38\x2e\x37\x31\x30\x39\x20\x31\x32\x32\x2e\x39\x35\ \x32\x2c\x37\x38\x2e\x37\x31\x30\x39\x20\x43\x20\x31\x32\x32\x2e\ \x39\x35\x32\x2c\x37\x38\x2e\x37\x31\x30\x39\x20\x37\x38\x2e\x33\ \x38\x38\x39\x2c\x37\x38\x2e\x34\x36\x39\x39\x20\x37\x38\x2e\x34\ \x35\x30\x35\x2c\x37\x38\x2e\x35\x33\x31\x34\x20\x7a\x20\x22\x0a\ \x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\ \x6d\x61\x74\x72\x69\x78\x28\x2d\x30\x2e\x39\x31\x39\x33\x34\x39\ \x2c\x30\x2c\x30\x2c\x2d\x30\x2e\x39\x31\x39\x33\x34\x39\x2c\x31\ \x39\x34\x2e\x38\x30\x34\x2c\x31\x35\x39\x2e\x38\x36\x39\x29\x22\ \x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\ \x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\ \x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x66\x69\x6c\x6c\x2d\x72\x75\ \x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\ \x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\x65\ \x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\x35\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\ \x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x70\x61\x74\x68\x35\x31\x33\x22\x20\x2f\x3e\x0a\x3c\x2f\x73\ \x76\x67\x3e\x0a\ \x00\x00\x05\x1d\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x37\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x65\x6c\x6c\x69\x70\x73\x65\x0a\x20\ \x20\x20\x20\x20\x63\x78\x3d\x22\x35\x36\x2e\x31\x31\x33\x32\x38\ \x31\x22\x0a\x20\x20\x20\x20\x20\x63\x79\x3d\x22\x35\x37\x2e\x36\ \x33\x36\x37\x31\x39\x22\x0a\x20\x20\x20\x20\x20\x72\x78\x3d\x22\ \x34\x34\x2e\x34\x33\x33\x35\x39\x34\x22\x0a\x20\x20\x20\x20\x20\ \x72\x79\x3d\x22\x34\x34\x2e\x34\x33\x33\x35\x39\x34\x22\x0a\x20\ \x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\ \x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x31\x2e\x31\x37\x31\x39\ \x2c\x2d\x31\x2e\x30\x31\x35\x36\x32\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\ \x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\ \x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ \x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x31\x33\x32\ \x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\ \x20\x20\x64\x3d\x22\x4d\x20\x38\x31\x2e\x37\x35\x37\x38\x2c\x39\ \x36\x2e\x34\x38\x34\x34\x20\x4c\x20\x31\x32\x32\x2e\x38\x39\x31\ \x2c\x31\x35\x30\x2e\x38\x32\x22\x0a\x20\x20\x20\x20\x20\x74\x72\ \x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\ \x74\x65\x28\x31\x32\x2e\x31\x38\x37\x35\x2c\x2d\x33\x2e\x30\x34\ \x36\x38\x38\x29\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ \x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\ \x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\ \x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\ \x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\ \x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\ \x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\ \x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\ \x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\ \x64\x3d\x22\x70\x61\x74\x68\x31\x33\x33\x22\x20\x2f\x3e\x0a\x20\ \x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\ \x20\x33\x39\x2e\x31\x30\x31\x36\x2c\x35\x34\x2e\x38\x34\x33\x38\ \x20\x4c\x20\x39\x35\x2e\x39\x37\x36\x36\x2c\x35\x34\x2e\x38\x34\ \x33\x38\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x31\x2e\x30\x31\x37\ \x38\x36\x2c\x30\x2c\x30\x2c\x31\x2c\x2d\x31\x2e\x37\x31\x33\x38\ \x37\x2c\x32\x2e\x35\x33\x39\x30\x36\x29\x22\x0a\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\ \x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\ \x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\ \x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\ \x66\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\ \x32\x2e\x33\x38\x39\x38\x30\x30\x30\x37\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\ \x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ \x70\x61\x74\x68\x31\x37\x32\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x70\ \x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x36\x37\ \x2e\x30\x33\x31\x34\x38\x2c\x32\x38\x2e\x34\x33\x37\x34\x37\x20\ \x4c\x20\x36\x37\x2e\x30\x33\x31\x34\x38\x2c\x38\x36\x2e\x33\x32\ \x38\x32\x35\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\ \x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\ \x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x34\x39\x39\x39\x35\ \x30\x34\x31\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\ \x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ \x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\ \x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x39\x31\x39\ \x22\x20\x2f\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \x00\x00\x3d\x3b\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xe2\x02\x3a\x49\x43\x43\x5f\x50\x52\x4f\x46\x49\ \x4c\x45\x00\x01\x01\x00\x00\x02\x2a\x6c\x63\x6d\x73\x02\x30\x00\ \x00\x6d\x6e\x74\x72\x47\x52\x41\x59\x58\x59\x5a\x20\x07\xd9\x00\ \x09\x00\x18\x00\x17\x00\x19\x00\x25\x61\x63\x73\x70\x41\x50\x50\ \x4c\x00\x00\x00\x00\x6c\x63\x6d\x73\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xd6\x00\x01\x00\ \x00\x00\x00\xd3\x2d\x6c\x63\x6d\x73\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x05\x64\x6d\x6e\x64\x00\x00\x00\ \xc0\x00\x00\x00\x6a\x64\x65\x73\x63\x00\x00\x01\x2c\x00\x00\x00\ \x74\x64\x6d\x64\x64\x00\x00\x01\xa0\x00\x00\x00\x68\x77\x74\x70\ \x74\x00\x00\x02\x08\x00\x00\x00\x14\x6b\x54\x52\x43\x00\x00\x02\ \x1c\x00\x00\x00\x0e\x64\x65\x73\x63\x00\x00\x00\x00\x00\x00\x00\ \x10\x28\x6c\x63\x6d\x73\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x29\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x64\x65\x73\x63\x00\x00\x00\x00\x00\x00\x00\x1a\x6c\x63\x6d\ \x73\x20\x67\x72\x61\x79\x20\x76\x69\x72\x74\x75\x61\x6c\x20\x70\ \x72\x6f\x66\x69\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x64\x65\x73\x63\x00\x00\x00\x00\x00\x00\x00\ \x0e\x67\x72\x61\x79\x20\x62\x75\x69\x6c\x74\x2d\x69\x6e\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x59\x5a\ \x20\x00\x00\x00\x00\x00\x00\xf6\xd6\x00\x01\x00\x00\x00\x00\xd3\ \x2d\x63\x75\x72\x76\x00\x00\x00\x00\x00\x00\x00\x01\x02\x33\xff\ \xdb\x00\x43\x00\x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\ \x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\x09\x0c\x11\x0f\ \x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\ \x18\x21\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17\x22\x24\x22\x1e\x24\ \x1c\x1e\x1f\x1e\xff\xc0\x00\x0b\x08\x01\x76\x01\xf3\x01\x01\x11\ \x00\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x03\x01\x02\x04\x05\x06\x07\xff\xc4\ \x00\x47\x10\x00\x01\x03\x02\x03\x05\x04\x07\x05\x06\x04\x05\x04\ \x03\x00\x00\x01\x00\x02\x03\x11\x21\x04\x12\x31\x05\x13\x22\x41\ \x51\x32\x61\x71\x81\x06\x23\x42\x52\x91\xa1\xb1\x14\x33\x62\xc1\ \xd1\x43\x53\x72\x92\xe1\xf0\x15\x34\x82\xa2\x24\x63\x73\xb2\xd2\ \x35\x44\xc2\xf1\x54\x64\x93\xff\xda\x00\x08\x01\x01\x00\x00\x3f\ \x00\x6a\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\ \x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\ \x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\ \x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\ \x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\ \x6b\xfb\x18\xdc\xd2\xa9\x26\x1d\xcd\xea\x9d\x87\x3b\xd9\xaa\x8d\ \xca\x27\x88\x1f\xbe\x2a\x3e\xcb\x37\x50\xb2\xee\x66\xe8\x7e\x28\ \x42\x8d\xd1\x52\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\ \x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\ \x42\x10\x84\x21\x0b\xaf\x11\xca\xdc\x92\xe7\x67\x8a\xb3\xe0\x04\ \xe6\x3d\x9e\x89\x6c\xc1\xb0\xc6\xc0\xdb\x51\x35\xac\x76\x6e\xc8\ \x4c\x2d\x6b\xb8\x55\x5d\x87\x66\xac\x01\x8f\xea\x14\x18\x5a\x5d\ \x57\x30\x15\x93\x15\x82\x71\xa7\xd9\xe8\x3b\x92\x7e\xc0\x3a\x94\ \x9d\xce\x22\x1d\x12\xd4\x6e\x8a\x94\x21\x08\x42\x10\x84\x21\x08\ \x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\ \x10\x84\x21\x08\x42\x10\x84\x21\x77\x18\x03\x86\x56\x39\xb9\x54\ \xbe\x17\x8f\xba\x7b\x99\x6d\x3d\x95\x53\x26\x56\x7a\xc6\x3b\x0e\ \xe7\x0e\xd9\xec\x27\x76\x5b\x99\xdf\xcc\xae\x05\x50\x11\x92\xc9\ \x52\x33\xa6\x9e\xf2\x59\x7f\x15\x4e\x47\x33\xde\x69\x4b\x7c\x40\ \xf1\xb7\x8d\xbd\x12\x26\xc2\x87\x24\xcf\x83\xfd\xcf\xd5\x2b\xfe\ \xba\x4e\xe8\xa9\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\ \x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\ \x21\x08\x5d\x90\x5e\xdf\xbd\x6f\xfa\xd3\xda\xf7\xb4\x66\x7d\xed\ \xda\x6f\xfe\x29\xd4\x6b\x87\x0e\x57\x07\x7b\xa9\x72\x40\xd6\xb3\ \xd5\xe6\x8b\xf8\x52\xc4\x8e\x88\x56\x56\xf0\xfb\xcd\x4e\x8b\x73\ \x20\xcf\x09\x69\x27\x98\x4d\xc9\x5f\x66\x87\xa2\x87\x47\xe4\x96\ \xe8\xdb\xee\xa4\xba\x37\x33\x89\xa8\x60\x69\xed\x0c\xae\x72\xa9\ \x88\x37\xb3\xc4\xb3\xcb\x00\x70\x4b\x9a\x23\xbd\x06\x3b\x14\xad\ \x7e\xfe\x04\x6e\x52\x7e\xc6\x7d\xe4\x9d\xd1\x52\x84\x21\x08\x42\ \x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\ \x84\x21\x08\x42\x10\x84\x21\x0b\xd4\x3e\x8f\x75\xd2\xb7\x6d\xcd\ \x9b\x2b\x49\x53\xc4\xc7\x66\x67\x09\xf6\x90\xd6\xb4\xcb\xbd\x25\ \xc3\x30\xa6\x5c\xdc\x2a\x5f\x97\x2f\x77\x54\x87\x41\x47\xe7\x6b\ \xde\xd5\x76\x4b\x89\x88\x71\x37\x7e\xda\x7f\xad\x69\xc3\xe3\x30\ \xf8\x91\x46\x9a\x7e\x17\x6a\xac\x45\x0a\xa3\x9a\xdc\xa9\x72\x45\ \x99\xb9\x52\xdc\x1c\xde\x17\xb7\x33\x50\xd6\x34\xb7\x28\x76\x65\ \x57\xc4\x0e\xad\x07\xf8\x92\x9d\x0b\x5b\xc9\x23\xec\x8c\xde\x66\ \x56\x0c\x91\x9c\xd2\xcc\x42\x5d\x52\x67\xc2\x03\xa1\x49\xdc\x77\ \x28\xdc\x4f\xd5\x6b\xc0\xec\xfc\x5e\x31\xee\x18\x6c\x2b\xe5\x20\ \xf1\x70\xd1\x8d\x5a\x65\xd8\x5b\x56\x21\x99\xf8\x37\x1a\xf3\x68\ \x63\x97\x3e\x4c\x24\x90\x97\x89\x1a\xf8\x9d\xc9\x8e\x8e\xb5\xf3\ \x59\xb7\x45\x4a\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\ \x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x7a\x87\x35\xe0\xa9\ \x6d\x3b\x26\xc8\x70\xa7\x78\x51\x93\xde\x55\x73\x1f\xda\x6b\x7c\ \xd5\x5a\xf7\x0f\xc2\x15\xb8\x0b\x7f\x55\x59\x70\xf1\xbb\xb5\xfc\ \xcd\x54\x60\x9a\x16\x51\xaf\x33\xc6\x07\x65\xdd\xb4\x36\x50\xf2\ \xe6\x35\xd9\x5d\xee\x94\xfa\x4c\x06\x62\xcc\xc3\xaa\x1a\xf6\x9b\ \x3c\x38\x77\xaa\xba\x26\xd6\xc5\xaa\xb7\x4e\xd9\xf8\x69\x71\xd8\ \x86\xc1\x87\x88\xbd\xe7\x97\xb2\x5b\xef\x7f\x0a\xf4\xd8\x4f\x43\ \xb0\xec\x8e\xb8\xbc\x4b\xde\xfa\x51\xc2\x21\x94\x7f\x31\xe2\x46\ \x2f\xd1\x2c\x13\x9a\x77\x18\xb9\xe2\x79\xe6\xea\x3c\x2e\x1e\x3f\ \xd1\x5d\xa3\x13\x8b\xd9\x13\x31\x39\x47\x6a\x13\xc5\xfc\xae\x5c\ \x9c\x46\x15\xf0\x17\x32\x58\x9c\xd7\x52\xc5\xcd\xa3\xbf\xdc\x8c\ \xad\xf7\x9a\xef\xf5\x2d\x7b\x2f\x63\xbf\x68\x62\x18\x1b\x1d\x22\ \xcd\x57\xc9\x97\x84\x0f\xfc\xbb\xd7\xb8\x8b\x0b\x16\x1f\x0e\xc8\ \x61\x63\x58\xc6\x70\xb5\xad\x4a\x9a\x3a\x8b\x2c\x53\xe1\x99\x23\ \x32\xca\xc6\x4a\xdf\xc6\xda\xae\x56\x2f\xd1\xec\x04\x85\xce\x8e\ \x37\x40\xe3\xee\xdd\xab\x91\x8b\xf4\x77\x16\xc7\xba\x48\xcc\x53\ \x8e\x79\x46\x57\x7f\x2b\xaa\x17\x17\x15\x84\x9b\x0b\x79\x23\x73\ \x1c\x4f\x61\xcc\x05\x66\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\ \x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\xbd\x3e\x1f\x16\ \xd9\xce\x59\x19\x96\x4f\x68\x1d\x47\xfa\x56\xad\xd3\x0b\x78\x1f\ \x9d\x46\xe5\xe7\x45\x57\xc0\xf0\xdf\x69\x55\xad\x2c\xa7\x69\x0e\ \x0d\x3a\xf1\x78\x25\xbe\x3f\x72\xff\x00\x92\xa3\xb3\x0b\x85\x2d\ \x77\x56\xa8\x7b\x23\x95\xb4\x70\xa8\x4b\x89\x8f\x84\xf0\x38\xb9\ \xbe\xeb\x93\x99\x38\x70\xab\x9a\xe6\xbb\xda\x6b\x94\xb4\xb3\xdc\ \xba\xd5\xb3\x70\x12\xed\x0c\x58\xc3\x61\xa3\x71\x71\xb9\x27\x46\ \x0e\xa5\x7d\x07\x63\xec\x9c\x36\xc9\xc2\xe4\x84\x67\x71\xe2\x92\ \x47\x6a\xf3\xfa\x77\x27\xcc\x49\x34\x1f\x34\x9d\xd9\x04\xde\xca\ \x68\x79\xa5\x48\x33\x5a\x46\x07\x8e\x84\x55\x73\x76\xa7\xd9\xf0\ \xe1\xa2\x1c\x2e\x1b\xed\x32\x5c\x7a\x90\x72\x0e\xbf\xa7\x7a\xa0\ \x8b\x1c\xd0\x0b\x36\x83\xf3\x01\xd9\x7c\x60\xb0\x28\xfb\x66\x2a\ \x2a\xfd\xab\x06\x4b\x7f\x79\x87\x39\xc7\x98\xd4\x27\x43\x3e\x1f\ \x12\x0f\xd9\xe6\x64\x9d\x40\xd4\x79\x29\x7b\x2d\x64\xac\xa0\x9a\ \x11\x43\xf5\x4a\x7c\x35\x49\x9a\x06\xbc\x16\x3d\x81\xe3\xa1\x0b\ \x91\x8b\xf4\x7f\x67\xcc\x1d\x91\x8e\x82\xba\xee\xdd\x46\xff\x00\ \x2a\xe3\x63\x3d\x1d\xc6\x42\x73\xc2\x59\x38\xad\x6d\xc0\xff\x00\ \x88\x5c\x5c\x56\x1a\x48\x9f\xeb\xe3\x74\x6e\xf7\x5c\xc0\xc1\xf1\ \x48\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\ \x42\x10\x84\x21\x08\x5e\xaa\x48\xe3\x7f\x6d\xad\xfe\x2f\x69\x0c\ \x8e\x78\x0d\x63\x93\x7a\xcf\xf7\x2d\x78\x7c\x74\x44\x64\x95\x99\ \x0f\x82\xdc\xd1\x1c\x8d\xac\x6e\xcd\xe0\x52\xe5\x82\xf7\x6a\xcb\ \x2c\x15\x7e\x52\x2e\x90\xfc\x3b\xdb\xf8\x92\xdc\x1d\xd9\x7b\x6a\ \x8d\xdb\x4e\x9f\x34\xb7\x46\x58\xee\x88\x68\xe2\xb9\xa2\x1c\xd1\ \x5c\xba\xad\xbb\x2b\x67\x62\xb1\xf8\xc6\xe1\xf0\x6d\xac\x86\xe4\ \xbb\x40\x3a\x9e\xe5\xf4\x9d\x8f\xb2\xf0\xfb\x2b\x0a\x20\x84\x67\ \x76\xb2\x48\x45\xde\x7f\xbe\x49\xd8\x97\x10\x34\xb5\x52\x8b\x03\ \xcf\x78\x51\x96\xda\xd9\x41\x6e\xa6\xab\x2e\x26\x68\x60\x82\x49\ \xe5\xb4\x71\x8b\xd3\x53\xd0\x0e\xf5\xcc\xd9\xd0\xc9\x34\xae\xc7\ \x62\x47\xac\x79\xe0\x1d\x3c\x3b\x87\xd5\x74\x29\x4d\x02\x5b\xd9\ \xcf\xe8\xb2\xe2\x70\x18\x79\xf8\xa5\x8c\x17\x72\x7b\x6c\xf1\xe6\ \xb3\x3a\x0c\x7c\x1f\x71\x88\x66\x21\xbf\xbb\xc4\x6b\xfc\xe1\x43\ \x31\xd1\xc5\x56\x63\x20\x93\x08\xe3\xcd\xf7\x61\xf3\x0b\x5b\x32\ \x48\xcc\xec\xec\xf2\x22\xe1\x51\xcd\x07\x4f\x8a\x53\xe2\xa9\xb5\ \x15\x1d\x0f\x72\xcd\x3e\x1a\x39\x9b\x96\x56\x35\xec\x3e\xcb\x9b\ \x55\xc6\xc6\x7a\x39\x83\x90\xe7\x84\x3f\x0e\xee\xac\xb8\x5c\x7c\ \x5e\xc1\xc7\xe1\xda\xe3\x13\x04\xc0\xea\xe6\x5b\xfd\x9a\x2e\x24\ \xb0\xbe\x29\x03\x1d\x1b\xda\xfa\xf6\x5c\xa1\x08\x42\x10\x84\x21\ \x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\xbd\x53\x4f\ \x0f\x0b\x95\xda\x4d\x75\x57\xa3\x64\xed\xe5\x72\xab\x4b\xe2\x77\ \xa9\x7b\xbc\x0f\xea\xb6\x61\xf6\x8f\xb1\x38\xbf\x7e\xab\x4f\xa8\ \x9d\x9c\x0f\xa3\xba\x73\x59\xe6\x85\xf1\xba\xe3\x37\x78\x4b\x8d\ \x8c\x78\xcb\xaa\x89\x70\xb4\xd2\xcb\x3b\xc1\x1c\x25\x46\xec\x1f\ \x78\x39\x6a\xd9\xdb\x37\x11\x8f\xc6\x47\x85\xc3\x33\x3b\xdd\xf0\ \x03\x99\x3d\x02\xfa\x66\xc4\xd9\x18\x7d\x91\x81\x10\xc5\xc6\xe3\ \x79\x24\xa5\xe4\x3f\xa7\x72\xd1\x33\x47\x52\x3a\xa4\xba\x95\xa1\ \x46\x4a\xda\x84\x04\x38\x24\x11\x99\xc1\x94\x37\x5c\x59\x8f\xf8\ \x9e\xd0\xdd\x45\xfe\x56\x12\x4e\x61\xed\x9d\x09\xfc\x82\xe8\xe4\ \x01\x82\x80\x00\x2c\x07\x40\xa1\xcc\x16\xaf\x35\x42\xca\x78\xaa\ \x65\xae\x95\x4b\x2c\x6d\x0a\xa3\xe3\xcc\x28\x47\x09\x17\xaf\x35\ \x83\x11\xb3\x60\x89\xb2\x4d\x13\x9f\x85\x7b\x19\x52\xe8\x9f\x46\ \xf9\x8d\x15\x03\xf1\xb1\xb4\x39\xd1\xc7\x8a\x19\x6a\xd3\x1f\xab\ \x93\xe0\xee\x12\xac\xcc\x5c\x2e\x7e\xed\xef\x31\xc9\xfb\xb9\x46\ \xec\xfc\xf5\x4f\xa0\x76\xb5\xa8\xf2\x2a\xaf\x8c\x11\xa5\x4f\x8a\ \x5b\xe1\x54\x74\x14\xef\x58\x71\x78\x38\x71\x0d\x2d\x9e\x06\xc8\ \x2b\xed\x2e\x36\x2f\xd1\xc8\x4b\x2b\x83\x99\xd0\xd7\xd9\x77\x13\ \x7e\x05\x71\x31\xbb\x23\x1f\x86\x03\x34\x6f\x90\x0e\x6d\x39\x9a\ \x3c\x8a\xe6\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\ \x10\x84\x21\x08\x5e\xa5\xc1\xbc\xb3\x21\xb9\xc3\x7b\x4d\x77\x78\ \x43\x5f\x47\x73\x4d\xad\x41\xcd\xf2\x55\xb1\x6e\x5e\x48\x60\x7b\ \x38\x98\xeb\x74\x2b\x56\x1f\x68\x3c\x50\x49\x71\xde\xb4\xd2\x19\ \xf8\x98\x68\xfe\x8a\x29\x3c\x7f\x8c\x77\xa5\xb8\xc6\xe3\x76\x6e\ \xcf\xc9\x5b\x0d\x81\x9f\x15\x88\x8e\x08\x22\x32\x3e\x43\x46\x01\ \xcd\x7d\x1f\xd1\xfd\x91\x87\xd8\xb8\x30\xca\x89\x31\x12\x5e\x59\ \x07\x33\xd0\x77\x05\xd0\x99\xd5\x16\x21\x25\xed\xf5\x76\x65\xd5\ \x32\x58\xf3\xef\xee\x53\x92\x89\x53\x10\x05\x4a\xe6\x6d\xcc\x43\ \xda\x1b\x81\x80\x9d\xfc\xc3\x8c\x8d\x58\xc3\xf9\x9d\x02\x66\x17\ \x08\xcc\x36\x1c\x44\x05\xc7\x6e\x9a\x57\xfa\x27\x65\xbf\x7a\xae\ \x4a\xb8\x3d\x43\xe3\x34\xb9\xbf\x34\xbc\x84\x0d\x3f\x35\x05\x80\ \x6a\x92\xf6\xd3\xd9\xbf\x7a\xc3\x8c\x6e\xfa\x78\xf0\x40\x5b\xef\ \x66\xf0\x1a\x0f\x33\x7f\x24\xc6\x37\x33\xdd\x2d\x2c\x3d\x5b\x29\ \xcf\xa9\xf8\xd9\x5e\x58\x19\x2b\x32\xc8\xc0\xf1\xd1\xd7\x58\x25\ \xc0\x4d\x11\xae\x0f\x14\xf8\x3f\xe5\x91\x9e\x3f\x87\x25\x47\x62\ \x71\x58\x6f\xf3\x98\x2c\xcd\xfd\xee\x1b\x8c\x79\x8e\xd2\x74\x18\ \x88\x71\x40\xbb\x0d\x34\x72\x11\xab\x74\x3f\x0d\x53\x4b\x47\x30\ \x94\xf8\x43\x8a\x4c\x90\xf7\x24\xbe\x2c\xb6\x2e\xf3\x5c\xfc\x6e\ \xca\xc1\xe2\x09\x74\x98\x76\x87\x7e\xf1\x9c\x25\x70\xb1\x5e\x8f\ \xc8\x24\x73\xf0\xaf\x64\xad\x3a\xb5\xdc\x2e\xf8\x85\xc5\xc4\xc1\ \x3e\x19\xe2\x3c\x4b\x0c\x64\xe8\xd7\x46\x08\x59\x90\x84\x21\x08\ \x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x17\xa9\xb0\x71\xae\ \x60\x54\xff\x00\x0a\xbb\x83\x72\xfb\x29\x74\xe2\xb3\xa8\x7a\x14\ \x55\xc1\xdd\x97\x2b\xb4\x82\xac\xec\xa5\xa0\x56\xa1\x55\xb5\x69\ \xe0\x3e\x45\x6b\xc3\xe3\x5f\x1d\xa4\xd3\xa1\x5a\xd8\x21\xc5\xbc\ \x30\x03\x98\x9a\x00\x2f\x52\xbd\xef\xa2\xfb\x09\x9b\x27\x0c\x65\ \x90\x35\xf8\xc9\x47\x19\xf7\x07\xb8\x3f\x35\xbd\xe2\x47\x5d\xc2\ \xe8\x79\x0d\xa5\xab\x41\x45\x35\x06\xa0\x6b\xad\x94\xe5\xf9\xaa\ \xba\xcb\x1e\x32\x76\x61\x30\xa7\x13\x35\x48\x16\x63\x39\xbd\xe7\ \x40\xb9\xdb\x1f\x0c\xf7\x3d\xdb\x43\x10\x73\xcd\x31\xa8\x3c\xbc\ \x7c\x39\x05\xd5\xdd\x80\x0d\x6c\xab\x94\x0a\xd0\x0e\xf4\xb7\xd5\ \xbc\xc5\x7a\xaa\x11\x56\x0a\x0b\x95\x53\x1b\xf2\xd4\x25\x16\x81\ \xae\x6a\xf7\x25\x4a\x59\x10\x74\xb2\x54\x47\x1b\x2a\x4a\xcd\x87\ \x64\x82\x11\x23\xd8\x37\xf8\x87\xd4\xd2\xd4\xaf\xe8\x3e\x8b\x40\ \x68\xb3\x1b\x50\x18\x28\x14\xe4\x26\xfa\xaa\xbd\xbc\x3a\x5b\xa5\ \x35\x4a\x73\x07\x82\xcd\x89\xd9\xd8\x59\xef\x2c\x2d\x2f\x1a\x3c\ \x58\xfc\x42\xcf\xf6\x6c\x6c\x02\x98\x7c\x4e\xf5\x83\xf6\x78\x91\ \x5b\x77\x3c\x5d\x2f\xed\xb0\xe1\x9f\x93\x19\x0c\x98\x7e\x84\xf1\ \xc6\x7c\xc2\x64\x13\x19\x22\xde\x51\xaf\x63\xb8\xb7\x91\xbb\x3b\ \x1d\xf0\x57\x7c\x6c\x73\x39\x10\x52\x9d\x01\x1d\x9a\x51\x2a\x58\ \x6b\xa2\xcd\x3e\x19\xb2\xb5\xcd\x95\x8d\x7b\x0f\xb2\xe6\xae\x36\ \x3b\x60\xe1\xe4\x6b\x84\x0e\x76\x1c\xfb\xa2\xed\xf8\x2e\x26\x37\ \x64\xe3\xb0\xd9\xe9\x0b\x5c\xc3\xed\x46\x33\x3b\xe6\xb9\x48\x42\ \x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x2f\x5c\xec\xcf\ \xe1\x3c\x63\xa1\xed\x25\xd1\xcc\x71\xc8\xef\x22\x86\x9a\xf0\x9b\ \x78\xa8\x70\x73\x0d\x14\x35\xce\x0e\xcc\xa6\xad\x3d\xdd\xe1\x4d\ \x1c\x2e\x1d\x54\x35\xe9\x8d\x0d\x3c\xd7\xbd\xf4\x17\x60\x8c\x28\ \x1b\x47\x14\xca\x4e\xf1\x58\x63\x3f\xb3\x1d\x4f\x79\xf9\x05\xeb\ \x1c\x6c\x6b\x7f\x92\x43\xa4\x2e\x17\xf9\x28\x63\x28\x4b\xc9\xb5\ \x2f\x5d\x15\xbf\x17\x25\x67\xd8\x25\x53\x33\xaf\x41\xfa\x2f\x3e\ \xe7\xff\x00\x8d\x6d\x6c\xcd\xff\x00\x25\x07\x60\x91\xa8\xe6\xff\ \x00\x13\xa0\xee\x5d\xb8\x62\x2f\x90\x52\xcd\x1d\x39\x0e\x4b\x61\ \x85\x9d\x14\x37\x0f\x10\x16\x62\xb0\x8c\x01\x60\x02\xa9\xc3\xc6\ \x47\xdd\x8f\x2b\x24\x49\x82\x8d\xda\x17\xb7\xcd\x21\xfb\x3d\xf4\ \x39\x64\x1e\x61\x61\xc6\x6c\xcc\x4c\xbb\x98\x32\x30\xc2\x1f\xbc\ \x94\x87\xeb\x4d\x05\x3e\x7f\x05\x07\x0d\x2b\x64\x7c\x86\x27\x8a\ \x70\xc7\x6d\x07\x32\xa2\x21\x60\x08\xd7\xaa\x97\x0f\x8e\x8a\x84\ \x1e\xa6\xa8\xa0\x4b\x70\xad\xec\x96\xf1\x6f\x92\xe6\x63\x4e\xf7\ \x1c\x61\xaf\xab\x89\x80\x1f\x13\x7f\xa5\x12\x70\xfb\x32\x13\x1c\ \x73\xc6\x64\xc3\xe2\x1e\x2b\x58\x4d\x28\x0e\x96\xe7\x65\x2d\xff\ \x00\x11\x87\x5d\xde\x2d\x9d\x7e\xee\x4f\xd1\x44\x58\xe8\x73\xee\ \xe4\x79\x86\x5f\xdd\xcc\x32\x1f\x23\xa2\xd6\xe1\xd4\x79\xa4\xbd\ \x80\xe8\x45\xfb\xd2\x9f\x05\x75\x16\x49\x7c\x34\xd1\x60\xc6\xec\ \xac\x26\x21\xc4\xc9\x0d\x24\xfd\xe3\x38\x5c\xb8\x78\xcf\x47\xe6\ \x8d\xc1\xf8\x52\xc9\x1a\x3d\x9e\xcb\xbe\x21\x70\xf1\x50\x4b\x14\ \xc2\x29\xa2\x7c\x44\xe8\xc7\x3a\xa1\x25\x08\x42\x10\x84\x21\x08\ \x42\x10\x84\x21\x08\x42\xf6\x1b\xba\xb7\x81\xd9\x90\xe1\x51\x95\ \xed\xcd\xe3\xfa\xa3\x25\x5a\x1b\xdb\x1d\x1f\xf9\x15\x4d\xdd\x5d\ \x95\x87\xfd\x0f\xd5\x43\xd8\xde\xcb\x46\x57\xf4\x29\x6e\x63\x9b\ \x62\xd7\x21\x59\xa7\x37\x25\xeb\x7d\x07\xd8\x3f\x6b\x7b\x36\xa6\ \x2a\x3a\xe1\xd8\xff\x00\x51\x19\x16\x91\xe3\x99\xfc\x03\xe6\x57\ \xbf\x60\xc8\xc0\x01\xcc\x6b\x52\x7a\x95\x52\xec\xda\x8a\x25\xe4\ \xca\x78\x40\x01\x5c\x91\xe7\x64\x70\xa5\x48\x49\x34\x6f\xc5\x72\ \x7d\x20\xc4\x3c\x8f\xf0\xdc\x2d\xe5\x94\x0d\xf5\x35\x0c\x3a\x33\ \xcf\xe9\xe2\xb6\x60\xb0\x83\x0b\x86\x8e\x00\x46\x63\x77\x91\xed\ \x1f\xd3\x90\x5d\x4c\x3c\x42\x38\xc0\xa5\x0f\x3f\x15\x70\xd5\x7c\ \xa8\xca\x8c\xaa\x85\xb6\x4b\x0e\x8d\xd6\x6b\xc1\x3d\x2a\xa4\xb5\ \x54\xb1\x51\xec\xae\xbf\x34\x97\xe1\xa3\x3a\xc6\x3c\x96\x79\x30\ \x8c\x3a\x54\x7c\xd2\x1f\x86\x70\xae\x84\x2c\xef\x66\x5b\x17\x53\ \xa2\x4b\xf2\x35\x85\xf2\x59\xb1\x82\xf3\xe5\x75\xc7\x64\x2f\x7b\ \x5a\xc9\x03\x4c\x98\xa7\xd5\xfd\xd5\x35\x3f\x25\xd3\xcb\x5b\x81\ \x4e\xe5\x0f\x66\x6e\x5c\x92\x31\x10\x47\x34\x79\x24\x63\x5e\xcf\ \x68\x3d\xb5\x0b\x0f\xf8\x69\x87\xfc\x8c\xf2\x61\xff\x00\x07\x6e\ \x33\xe4\x52\x9f\x2e\x32\x11\x97\x13\x85\xce\x39\xc9\x85\x75\xfc\ \xd8\x53\x22\xc6\x45\x3f\xf9\x69\x5b\x33\xbd\xa8\xf4\x78\xf2\x4c\ \xcc\xc7\x5a\xe0\x8e\x47\x55\x57\x33\x9f\x24\x97\xc3\xdc\xb2\x62\ \x70\xd1\xcc\xdc\xb3\x46\xd9\x59\xf8\x97\x0b\x1b\xe8\xfc\x65\xae\ \x38\x53\x90\x9e\x44\x66\xff\x00\x72\xe1\x63\x70\x18\x9c\x27\x04\ \xac\x70\x04\xf6\xab\xc0\x3e\x4b\x22\x10\x84\x21\x08\x42\x10\x84\ \x21\x08\x42\x17\xa6\x0e\xc4\xc1\x9a\x83\x7d\x1d\x35\x6f\x69\x3e\ \x2c\x4b\x5f\xc3\x9b\x30\xf9\xad\x0e\x01\xcd\x0e\x63\xb5\x54\x73\ \x68\xd1\x9c\x54\x28\x68\x6b\xce\x5d\x59\xd1\xe8\x2c\x6b\x78\x43\ \x9c\xe2\x3d\x87\xaa\x65\x61\x36\xe0\x27\x91\x5d\x7f\x44\xf6\x04\ \x9b\x5b\x1f\x96\x46\x96\x60\xe2\xbc\xef\x1f\xf6\x0e\xf3\xfe\xd0\ \xbe\xa4\xc6\x47\x1c\x4d\x86\x26\x06\x46\xc0\x03\x1a\xdb\x00\x39\ \x05\x49\x9d\x6e\x41\x2c\x9b\x8e\xaa\xe0\x92\x05\xa8\x7a\x28\x26\ \xf6\xa5\x39\xa8\x34\xd4\x2c\x7b\x4f\x18\x36\x7e\x0c\xce\xe1\x9e\ \x43\xc1\x14\x67\xdb\x7f\x2f\x2e\x65\x73\xb6\x06\x0c\x80\x71\xf3\ \x17\x3e\x79\xaa\x58\x5d\xa9\xae\xaf\xf3\xe5\xdc\xbb\xf8\x46\x66\ \x3b\xc2\x29\x4d\x2a\xb5\xea\xac\xd0\xa5\x59\xa1\x51\xfc\x2c\x24\ \xd3\xcc\xd1\x25\xed\x79\x03\x30\x24\x77\x83\xf5\x0a\xa7\x5a\x67\ \xa9\xd3\xb6\x39\x77\x1f\x34\x71\xd4\x1a\x92\x3f\xe9\xeb\xf0\x55\ \xcf\x41\xc5\x92\xba\x8b\xd3\xea\xa4\xba\xc0\x96\x3e\xfd\xd5\xfa\ \x2a\xe6\x61\x34\x04\x55\x55\xe1\x25\xed\x59\xa6\x63\x48\xbd\xd7\ \x33\x6a\xc1\x24\x98\x43\x0c\x36\xce\xf0\x1f\xfc\x15\xa9\xfc\x96\ \x7c\x1c\x24\xe2\xe5\x79\xd2\x30\x1a\x08\xea\x7f\xa7\xd5\x6b\x73\ \x75\xe4\x7b\x92\xdf\x56\xdd\x55\xad\x06\x94\x22\xaa\x8e\x8e\x95\ \xe4\x96\xe8\xad\x71\x50\xb3\x62\xf0\x38\x6c\x45\x4c\xf1\xb5\xe0\ \x7b\x54\xb8\xf3\x5c\xf8\xd9\x8b\x8d\x91\x1c\x3e\x21\xd2\x35\xcd\ \x19\x22\xc4\x0c\xff\x00\xee\xed\x29\xfb\x66\xea\xd8\xcc\x34\x98\ \x73\xef\x8e\x36\x7c\x42\xd3\x16\xee\x56\x6f\x20\x7b\x64\x61\xd4\ \xb0\xd5\x51\xf1\x9a\x8a\x7c\xd2\x1f\x01\xb5\x35\x48\xc4\x61\xd9\ \x24\x4e\x6b\xd9\x99\xa7\xb4\xbc\x4e\xd9\xc1\x7d\x8f\x18\x5b\x11\ \xa3\x7b\x6d\x1d\xe1\x73\x90\x84\x21\x08\x42\x10\x84\x21\x08\x42\ \x17\xad\x68\xc8\x75\x51\x24\x31\x3f\x89\xcd\xa3\xbd\xe6\xf0\xb9\ \x54\x6f\xa2\xe2\xfb\xd6\x7e\x1e\xd2\xd1\x06\x2a\x29\x00\x04\x7f\ \x12\x63\x63\x61\xad\x15\x5c\xcf\x66\x9e\x45\x69\xd9\x9b\x37\x11\ \xb4\x31\x91\xe0\xb0\xe2\xa5\xc7\x8b\x3e\x8c\x1c\xc9\xee\x0b\xea\ \x5b\x2f\x03\x06\xcd\xc0\x45\x84\xc3\x02\x23\x8f\x52\x75\x71\xe6\ \x4f\x7a\x63\xe4\xab\xec\xb3\x97\xfa\xd3\x73\xe1\x5b\x26\x44\x49\ \x1d\xc9\x8e\x04\xfe\x8a\xa0\xd0\x04\x07\x30\x07\x3e\x47\x80\xd6\ \x8a\x92\x79\x0e\xf5\xe6\xe2\x77\xf8\xee\xd5\x38\x82\x08\xc1\x40\ \x38\x01\xf7\x3f\x57\xfd\x17\xa0\x85\xa5\xf2\x80\x1a\x07\x2e\xe0\ \x17\x45\x8d\x0d\x60\x00\x50\x2b\xf2\x47\xb2\xac\xd5\x6a\x77\x25\ \xc8\xea\x6a\xc0\x5b\xde\x47\xe6\x94\xe6\x01\x53\x92\xdd\xf1\x9f\ \xa8\x43\xcd\x4e\x42\x6e\x3f\xe6\x7e\xa1\x46\x4b\x57\x27\x2d\x77\ \x7f\xa7\x82\xa1\x23\x43\x25\x3a\x0d\xe7\xea\x15\x4b\x6a\x6a\x5b\ \x6b\x5f\x2d\x7e\x61\x2c\x80\xf6\xe4\x06\xa3\x98\xa8\x77\xc8\xdd\ \x50\x8a\x4b\x6b\x13\xc5\x40\x48\xf9\x15\x52\xf2\x2c\xed\x7a\x11\ \x94\xff\x00\x54\xa7\x90\xea\x81\xa8\xd4\x11\x70\xb2\xca\xdb\x2c\ \xf1\xb4\x02\x40\x14\xa9\xcc\x69\xcd\x37\x21\xa8\x14\xbf\x4a\x2b\ \xb7\x09\x29\xe4\x00\xfc\x45\x07\x04\x7a\x84\x97\xe1\x24\x03\x50\ \x52\x24\x85\xed\xd4\x1f\xaa\xcd\x8f\x01\x98\x39\x88\xb9\x2c\xc8\ \x3c\xcd\x3f\x34\xb1\x05\x31\x00\x83\x56\xc6\xc3\x41\xe3\x60\x83\ \x10\x22\xd7\x58\x71\x1b\x37\x0c\x64\x74\xec\x8c\xc3\x29\xfd\xa4\ \x27\x23\xbf\xaa\x56\x4d\xa5\x87\xd2\x46\x63\x18\xdf\x7f\x82\x5f\ \x8f\x64\xa2\x3c\x7c\x15\xc9\x3b\x65\xc2\xc8\xef\x66\x71\x4f\x9f\ \x65\x3a\x58\x43\x85\x6d\x7e\x7c\x97\x8e\xf4\xca\x2a\x62\x61\x39\ \x1e\x68\xc7\xe9\xe0\xbc\xc6\xe8\xa9\x42\x10\x84\x21\x08\x42\x10\ \x84\x21\x0b\xda\xb7\x21\xb8\x70\x51\x96\xbc\x3c\x92\xdc\x1a\x34\ \x72\x5c\x81\x8e\x7f\x1b\x6f\xd4\x76\x95\x99\x58\xda\xe7\x66\x74\ \x80\x74\x6d\xd3\x70\x58\x8f\xb4\xe5\x68\x69\xce\xf3\x40\xc2\xde\ \x22\x5d\xec\xaf\xa8\x7a\x2f\xb2\x59\xb2\xb0\x55\x90\x03\x8b\x96\ \x86\x53\xad\x3a\x30\x77\x0f\xaa\xe8\xce\xfa\x03\x64\x96\x10\xe0\ \x4d\x49\x23\x92\x96\x34\x6a\x45\xf5\x21\x5a\x94\xd0\xa3\x4a\x84\ \xb2\xfb\x8b\xdc\xe9\x55\xc5\xf4\x8f\x14\xf9\xe5\x6e\xc8\xc2\x82\ \xf7\x38\x8f\xb4\x65\xe7\xd2\x3f\xcc\xae\xa6\x17\x06\x30\xb8\x51\ \x86\x88\x82\x45\xde\xea\x58\xbf\xaf\xe5\xe0\xba\x38\x58\xf2\x45\ \x53\xa9\xbe\x8b\x43\x54\xab\x35\x48\x50\x49\x00\xd2\x95\xe5\x54\ \xa6\xd4\xbb\x76\x4d\x2d\xcd\xe1\xdf\x5f\x34\x52\x95\xa8\x00\x9b\ \x5c\x16\x9f\x92\x2b\xd1\xe4\x83\xd1\xc0\xdf\xb8\x1f\x24\x3a\x3a\ \xea\xca\x54\xf0\x56\x3a\x52\xfd\x42\xac\x6e\x14\xb1\x0f\x14\xb0\ \xde\x7e\x45\x0f\x6c\x4d\x15\x31\x98\xfb\xe8\x47\xd1\x2e\x48\x83\ \xfd\xac\xf4\xf7\x80\x72\x5c\x8c\x7d\x08\xa5\x41\xd4\x03\x51\xf0\ \x29\x0f\x01\xce\x21\xa6\xa0\xf4\xb8\xf3\x69\xfc\x92\x24\x69\x67\ \x68\x73\xb5\x4d\x87\x81\xe5\xe6\x90\x5d\x5a\x31\xda\x9d\x2a\x29\ \xf1\x4b\x7b\x40\x78\xe5\x7a\x2e\x8e\x09\x9c\x15\xa6\xbd\x56\x87\ \x31\x2c\xb4\x1e\x95\xf1\x4a\x7b\x12\x1e\xc5\x93\x13\x87\x8e\x51\ \x96\x46\x54\x54\x1f\x31\xa2\xcc\xec\x31\x6c\x92\x3c\x1e\xdd\x3c\ \xa8\x82\xce\x96\x3c\xc5\x12\x9e\xc0\x79\x04\xbc\xbe\x69\x72\xc2\ \x1d\x19\x63\xc0\x20\xf2\x22\xa1\x73\xdd\xb3\x44\x46\xb8\x39\xa4\ \xc2\x12\x74\x65\xd8\x7c\x8a\xe6\x6d\xbc\x14\xd8\xf8\x46\x16\x6d\ \xd7\xda\x07\x14\x32\x36\xcd\x93\xf0\xb8\x72\x5e\x4e\x68\xb2\x48\ \xe6\xce\x1f\x13\xda\x37\x6e\x6b\x8d\x88\x58\x37\x3e\xbd\x27\x74\ \x54\xa1\x08\x42\x10\x84\x21\x08\x42\x17\xb2\xcb\xa3\x85\x0f\xc9\ \xc1\x46\xf1\xc1\xdf\x91\x43\x8b\x5d\xdc\x52\xdc\xc7\x7b\xbf\x05\ \x35\xbd\xad\x45\xed\xbd\x00\xd8\xad\xcc\xdd\xb3\x8b\x89\xb9\xff\ \x00\xf6\xa0\xff\x00\xdf\xf9\x0f\x32\xbd\x94\x8e\x0d\x06\xe1\x66\ \x2e\x2f\x7d\x8d\x86\xa5\x59\x8d\x16\x2d\x24\x01\xc8\x68\x53\x2a\ \xde\xaa\xa4\xaa\x3c\xf2\x1a\xac\x9b\x5b\x17\xfe\x1f\x83\x32\x8c\ \xa6\x79\x38\x60\x69\xeb\xd7\xc0\x7e\x8b\x26\xc1\xc0\xfd\x9e\x21\ \x8c\x79\x32\xcd\x30\xcc\x0b\xb5\xbe\xa7\xc4\xae\xde\x16\x30\xf3\ \x9d\xdc\x59\x4f\xcd\x6c\xa2\xb7\x34\x2b\x51\x58\x58\x24\xcc\x5c\ \x0d\x69\xc3\xa0\xa3\xa8\x7f\x45\x53\x52\x2e\x1e\x47\x7c\x61\xdf\ \x30\xa5\x95\x3d\x93\x71\x6e\x17\x96\xfd\x54\xbc\x17\x1f\x58\xc7\ \x96\xf3\x69\x01\xc1\x52\xac\x00\x3b\x3b\x2e\x6e\x49\x73\x49\x56\ \x20\x96\xd3\x8d\xd6\xa5\x68\x1f\x75\x59\x0e\x57\xd2\xa3\x31\x02\ \xb4\x79\x6d\xbb\xab\x64\xb2\xc2\xe0\x6a\xca\x93\xef\x0a\x7c\xc7\ \x92\xac\x85\xed\x37\xce\x07\xe2\xb8\xf8\x8b\xa5\xc8\xe6\x38\x03\ \x2b\x29\xd1\xda\x8f\x22\x91\x20\x2d\x06\xbe\xb2\x3a\x73\xb9\xfe\ \xab\x1c\xcc\xa5\xc5\xc1\xb0\xf0\xfe\xf4\x4a\x99\xa5\xf8\x9c\x2c\ \x19\xb5\x7e\x67\xd3\x98\x60\xfc\xc9\x0b\xb2\xc0\x00\xdd\xd3\x90\ \xe7\xfa\x5d\x49\x88\x3b\x2f\x01\x14\xea\xcd\x6b\xe3\xe0\x97\x23\ \x2c\x69\x09\xa7\x4d\xd8\x3f\x9a\x4c\xc0\x35\xee\x27\x28\x3c\xc9\ \xab\x6b\xf9\x75\x4a\x78\x91\xbd\x69\xa7\x10\xaf\xcc\x2a\x17\x0c\ \x95\x22\xdd\x41\xa8\x09\x64\x02\x2a\x2e\x3a\xa5\x3d\x9d\xda\x25\ \x39\x94\x29\x6f\x89\xc1\x2b\x29\xe6\x3e\x4a\x92\xb1\x73\x31\x31\ \x83\xb6\x70\xa3\x98\x03\xff\x00\x9a\x8d\xad\xb1\x30\xdb\x49\xbb\ \xc7\x37\x77\x3b\x5b\x95\xb2\x0f\xfb\x48\xf6\x97\x90\xda\xdb\x0f\ \x1d\x82\x0e\x74\xb0\x87\x47\xce\x46\x71\x07\xff\x00\xe0\xb1\x6e\ \x45\x29\xec\x74\x59\xa7\xc3\x09\x48\x96\x33\x42\xb2\x62\x21\xdc\ \xa5\xa1\x08\x42\x10\x84\x21\x08\x5e\xaa\xb4\xec\xad\x0d\x07\x27\ \x1c\x55\x07\x98\x35\x51\x67\xd3\x22\x28\xd0\x0d\x73\x2e\xbf\xa2\ \xfb\x23\xfc\x63\x68\xd1\xc0\xb7\x0d\x15\x1f\x88\x23\x98\xe4\xcf\ \x13\xff\x00\x6d\x57\xd2\xaa\xc8\x80\xa0\x01\xa0\x50\x00\x3e\x8a\ \xb2\x54\xb6\xf4\xba\x5b\x1a\x49\x23\x41\x4b\x14\xc6\xf0\x30\x0f\ \xa2\x91\xd7\x9a\x87\xb8\x0e\x57\x59\xf7\xac\x68\x96\x79\xab\x1c\ \x31\x02\x4b\x8d\x85\x39\x95\xc2\xc2\x07\xed\xbd\xa3\x26\x2b\x10\ \xcc\xb8\x66\x8a\x06\xfb\x91\xf2\x67\x89\xd4\xaf\x44\x33\xb9\xe3\ \x2d\x2f\xa0\x5b\xe1\x6e\x48\xc0\x1a\x04\xc5\x28\x6a\xb8\x52\x94\ \xf7\x12\x46\x5c\xe4\x75\x6d\x08\xf8\x25\x1a\x02\x0f\xab\x15\xe4\ \x6a\xc2\x98\xe2\xfa\x8a\x19\x08\x1c\xc1\x05\x19\xcb\x68\x49\x14\ \xe7\x56\x52\xda\x7e\x61\x5d\x8e\x0e\x16\x70\x3e\x0a\x0b\x19\x7e\ \x11\x7b\x74\x55\x2c\xa6\x8f\x7d\x3a\x1b\x8f\x9a\x53\xd8\xf0\x1b\ \x41\xa5\xaa\xc3\x4a\x79\x2a\x19\x0e\xf1\xc0\x50\xde\xc3\xb2\x7e\ \x7a\xa4\xbd\xb1\xc8\x5c\x5a\x68\xea\x50\xd4\x72\xef\x09\x12\x13\ \x1b\xc8\x02\x95\x36\x15\xb1\xf0\xe8\x7b\x92\x98\xd1\x43\x97\xee\ \xcd\xe9\xd0\xa8\xd9\xec\xde\xed\x19\xa4\xe5\x18\x11\x0f\xa9\xfa\ \x8f\x82\xea\xb4\x55\x86\x94\xbe\xa3\xbf\xc0\x7e\xa8\x74\x74\xfd\ \x99\xa9\x3a\xee\x7e\x57\x4a\x9a\x36\x5a\xac\x03\xc6\x1f\xd1\x2b\ \x29\x3d\x9f\x3c\xaf\x23\xe4\x7c\x52\x1e\x00\x2e\xad\x1a\x48\xd4\ \xf0\x9f\x0a\x84\xb7\x8c\xa4\x17\x1c\xa4\x9b\x97\x58\x9b\xf5\x09\ \x25\xb9\x4d\x38\xf3\x6b\x4a\x50\x9f\x11\xa1\x55\xcd\x5d\x47\x3a\ \x54\x7e\x7d\x10\x5a\xa8\xf6\x24\xbd\x84\x5f\xe8\x96\xe0\xb9\xee\ \x68\x3b\x6c\x02\x3b\x0c\x1f\xf6\x1f\xd5\x74\x1a\xc1\x92\x89\x25\ \xb9\x6b\x4c\xc7\xb9\x72\x71\xfb\x0f\x67\xe2\x89\x7b\x62\xdc\x4d\ \xcd\xf1\xf0\xd7\xf8\x87\xb4\xbc\x96\xd3\xd9\xf2\x60\xf1\x26\x39\ \x83\x5d\x4e\x28\xde\x3b\x24\xac\xaf\x8c\x3e\xc4\x34\xf8\xac\xd2\ \xe1\x18\xe5\x9a\x6c\x20\x8c\x54\x25\x53\xff\x00\xd6\x4a\x42\x10\ \x84\x21\x08\x5e\xc9\xcc\xae\xa1\xc7\xbc\x6a\x86\x67\x8a\xcc\x2d\ \x7b\x3d\xa5\x6d\xe3\x4e\xba\xfc\xd3\xb0\xd8\x79\x31\x33\xc7\x06\ \x19\x9b\xc7\xc8\x43\x03\x74\xba\xfa\x6e\xc4\xd9\xf0\xec\xbd\x9c\ \xcc\x2c\x59\x49\xed\x48\xea\x76\xdf\xcc\xfe\x89\xcf\x79\xde\xd2\ \xb6\x0a\x99\xea\xfd\x0e\xba\xf4\x4d\x61\x19\x6a\x34\xe7\x54\x6a\ \x6b\x45\x35\xa0\xba\x50\x24\xda\x95\x5c\x1d\xbd\x89\x7e\x3b\x1c\ \xdd\x8f\x85\x19\xa3\x63\xc6\xfc\x8f\xda\x49\xc9\x9e\x03\x53\xfd\ \x17\x5f\x05\x04\x78\x68\x9b\x87\x8e\xa6\x97\x2e\xa7\x68\xf3\x2b\ \xa3\x82\x65\x1a\x1e\x6b\x71\x60\xb4\xb5\x59\x0a\x5a\x98\x92\xec\ \xe5\xf6\xde\x0f\x20\x42\x58\xa0\x1f\xb3\xb9\xe6\x0b\x3f\xbf\xea\ \xae\x33\x91\x63\x25\x3f\x0c\x81\xca\x2a\x3d\xa0\xca\x9a\x5a\x48\ \xa9\x5f\x82\x01\x34\x34\x26\xd6\xe0\x93\xe3\xaf\xf7\x75\x0f\x02\ \x9c\x40\x07\x75\x7c\x74\xf9\x8f\x35\x2d\xa9\x8e\x8d\x04\xf7\xb1\ \xf5\xa7\xc5\x19\xa4\xb5\x06\x6b\x5e\xa3\x29\x3f\x92\x83\x20\x16\ \x90\x16\x78\xe9\xf1\x54\x7e\x59\x1b\xc9\xcd\xe5\xcd\x67\x9d\xa5\ \xc4\x50\xf0\xf3\x1a\x1f\x10\x56\x67\x3c\x38\x65\x90\x12\xd3\x6a\ \x91\x43\x5e\x87\xa7\x25\x5a\x86\x31\xef\x93\x41\x52\x4f\x77\x55\ \xa3\x61\x46\x5b\x82\x6c\x8e\x61\xcd\x25\x64\x78\xef\x7d\xff\x00\ \x35\xd0\xb5\x4d\x0b\x05\xb4\xcc\x48\xa6\x9a\x05\x5a\x46\x05\x72\ \x8a\x73\xf5\x6e\xfe\xfa\x25\xb8\x30\x10\x1c\xf8\xc6\x97\x19\x9a\ \x7b\x92\xdd\xbc\xd4\x19\x29\xca\xe2\x41\xfa\xa5\x17\x93\x62\xcc\ \xe2\x80\xdb\x5f\x81\xf0\x4b\x31\x82\x0e\xe8\x96\x6a\x28\x05\xab\ \xde\x16\x77\xc6\x5a\x28\x58\x29\xf1\x67\xc3\x51\xa7\x24\xa7\xb6\ \xe4\x8a\x91\xec\x1a\xdc\xdf\x91\xfc\x8a\xa5\x32\x57\x2d\x2c\x6f\ \x41\x6f\x87\x2f\x10\xad\x50\x6c\x45\x0f\xcb\xe2\x82\xd4\x97\xc7\ \x55\xcc\x63\x2b\xb7\x66\xa8\xa5\x23\xb0\x3c\xc5\x18\x17\x43\x28\ \x0c\x1d\x34\xb2\x5c\xb1\x0a\xd7\x9a\x43\x99\xc6\x0d\x1b\x55\xc4\ \xf4\xa3\x0b\x9f\x67\xc8\xfc\xa3\x34\x4e\xce\xdf\xfe\x5f\xed\x5e\ \x49\xc1\x55\xc1\xca\x37\x69\x12\x61\x9a\xed\x56\x19\x70\xd3\x46\ \x2a\xd3\x55\x97\x9f\xad\xaa\x71\x87\x9c\x05\x27\x74\x54\xa1\x08\ \x42\xf6\x35\xab\xaa\x6d\xe0\x8d\xe3\x5d\x4e\x2f\xd5\x15\x6b\xdb\ \xc2\xbd\xaf\xa1\x1b\x2f\xec\xd0\x0c\x7e\x24\x56\x59\x87\xa9\x07\ \xd8\x8f\xaf\x9f\xd2\x9d\x57\xa5\x92\x63\x4e\x1b\x93\xd7\x40\x12\ \x04\x85\xd2\x56\xa6\xc4\xa9\x88\xf1\xd3\x55\xa6\xa1\xd4\x52\x39\ \x74\x55\x7b\xae\x05\x6e\x74\x0b\x9f\xe9\x06\xd1\x3b\x37\x06\x19\ \x09\x1f\x6c\xc4\x70\x40\x3d\xce\xaf\xf2\xfa\xd1\x64\xf4\x6f\x67\ \x9c\x26\x18\x4c\xf0\x4c\x93\x76\x2b\xa8\x1d\x7c\x4f\xf7\xaa\xed\ \xc0\xcc\xef\x16\xa8\x1a\x9a\xae\x83\x45\x95\xd4\x05\x66\xab\x2a\ \x3d\xe1\x84\x02\x0d\xfa\x0a\xaa\x3b\x8e\x94\x68\x78\xd7\x5a\x15\ \x27\x38\x03\x8a\x51\xce\xe3\x37\x75\x15\x7d\x51\xd7\x77\x5a\x8e\ \x45\x85\x58\x17\x97\x67\xc9\x20\xe6\x43\x24\x04\x28\x0c\x2e\x1c\ \x4c\x17\x17\xcd\x1d\x3e\x9d\xea\x1a\xd7\x33\x41\x20\xad\xce\x47\ \xd6\xfe\x05\x50\xd0\x9a\x3b\x76\xea\xe9\x98\x16\x9e\xff\x00\xa2\ \x8a\x90\x1a\x6a\xf6\xf7\xf6\x98\x7f\x35\x22\x53\x40\x69\x98\x75\ \x65\xfe\x4a\xad\x73\x08\x19\x08\xa7\x40\xa9\x21\x59\x27\x6d\x6e\ \x35\xd3\xc4\x74\x2b\x36\x30\x17\x61\xa3\x80\x93\x9a\x62\x23\x35\ \xe8\x75\xf9\x02\xbb\x71\x33\xd5\xb4\x01\xce\xbd\x9a\xd3\xf2\x4d\ \x71\xa1\xa1\x75\x3b\x8c\xc0\x7c\x82\xab\xb2\x52\xa1\xec\x15\x37\ \xff\x00\x88\x2a\xaf\xcf\xc8\xcb\x97\xb9\xe1\xc9\x12\x0e\x67\x25\ \x6a\x40\x04\x16\x10\x3f\xba\xdd\x26\x66\xea\x24\x26\x94\x14\xcf\ \xa0\x3d\xce\x0a\x92\x0a\x90\xc2\x6d\x5b\x17\x5c\x79\x11\xa1\x55\ \xab\xc3\xe8\xee\xb5\xa1\xe4\x3b\x8f\x34\xac\x81\xc4\xd0\x65\x35\ \xe3\x04\x6b\xe2\x12\x4b\x48\x37\xb7\x9d\xbc\x8f\x2f\x02\xa0\xb7\ \xb4\x39\xf3\x14\xfa\x8f\xcc\x26\x31\xbe\xac\x52\x84\x53\x92\xa1\ \x6a\xca\xf6\xb1\xb8\x8d\xe1\x1c\x54\x2d\xaa\x73\x81\x36\xa2\x4d\ \x2d\x7b\x2a\xb8\x54\x03\xc9\x60\xda\xf1\x6f\x30\x72\xb2\x97\x2c\ \x3f\x45\xf3\xf6\xdd\xa0\xfe\x14\x51\x57\x2a\x29\xf1\x54\x73\x3f\ \x0a\xcb\x2e\x0d\x8e\xd4\x24\xc9\x83\x63\x6e\xd8\xab\xe6\x95\xba\ \x9b\xf7\x21\x2b\x71\xdc\x8d\xc7\x72\x4e\xe8\xa9\x4d\xdc\xe2\x3f\ \x70\xbd\x3f\x6f\x8a\x17\x66\xfc\x95\x5c\xe7\x5e\xbf\x15\xd8\xf4\ \x5b\x66\x33\x69\xe3\x1c\x67\x66\x6c\x2c\x19\x4c\xbf\x8c\xf2\x67\ \x9f\x3f\xc2\xbe\x80\xcb\x5c\x9a\x13\xad\xb9\x25\x4d\x28\x20\xb0\ \x53\x5b\x2b\x43\x26\x48\xdb\x6a\x8e\x60\x6a\x9e\xcb\x68\x29\xd5\ \x35\xb5\x56\x73\xa8\x12\xa7\x9a\x1c\x2c\x12\x63\x31\x0f\x6b\x22\ \x89\x85\xcf\x7f\x40\xbc\xee\x02\x39\x36\xbe\xd2\x7e\xd1\xc6\x36\ \x91\x53\xee\xfa\x33\xd8\x8f\xf5\xf3\xea\xbd\x0d\xe4\xab\xe8\x09\ \xd7\xa2\xe8\xe1\xe3\xc8\xca\x73\xd4\x94\xf0\xa5\xa8\x52\xd5\x6e\ \x57\x4a\x26\x4a\x96\xe4\xb1\xf7\x1f\x7a\x23\x33\xdb\x73\x21\x00\ \x5c\x87\x47\xf9\xf9\xa9\x12\x38\xe9\xbb\x93\xf8\x64\x52\x64\xa5\ \x9d\x1c\x83\xca\xaa\x8e\x38\x67\x1a\x70\x57\xe0\x55\xf2\xdc\x96\ \xbd\xd7\xa9\xea\x15\x4e\xf4\x1b\x64\x78\xa0\xee\x28\x7b\xae\xe0\ \x58\xfa\x0e\x74\xb1\x4a\x0d\x89\xc3\x3c\x2f\xca\x7a\xb0\xaa\x3c\ \x3d\xaf\x71\xa3\x1c\x0f\x4b\x1f\xea\x90\xf3\x9a\xb4\xce\xe7\x37\ \xad\x9c\x2d\xf3\x54\x32\xd0\x51\xc4\x10\x35\x76\x94\x3d\x0a\x87\ \x24\x46\xdd\xf6\xd4\x60\xe5\x0c\x64\xf9\xbe\xdf\x40\x7e\x2b\xb4\ \xd0\xd2\x4e\x84\xb4\x72\x05\xc4\x79\x78\x95\x7a\x3c\x0e\x11\x20\ \xa7\x48\x80\x43\xcb\xf9\x89\x48\x04\x8f\xbb\x17\x59\xdf\xbb\x2c\ \xe2\x31\x38\x1e\x2e\x28\xcb\x6b\xaa\xab\x81\xca\x7b\x60\x53\x91\ \xce\xd4\x96\x80\x09\x31\x8b\x56\xa7\x74\x7e\xa3\xc0\x25\xb4\x1e\ \x2a\x1e\xf2\x58\x28\x74\xe6\xd4\xaa\x0c\x87\x28\x01\xbc\xe8\x2a\ \xca\xf7\xb7\x92\xab\xc0\x3c\xf8\x73\xd4\x17\x1a\x8f\x23\xc9\x43\ \x4b\x89\x20\xd5\xfd\x41\x1c\x63\xcb\x9f\x92\x87\xc6\x1c\xca\xc7\ \x42\x39\x0f\xd0\xf2\x57\xcb\x61\x55\x57\x35\x63\x9c\x56\x4f\x34\ \xf8\x48\x74\x5d\xe2\xc6\xaa\x92\x47\x5a\x8e\x81\x2d\xed\x34\x06\ \xbf\x05\x9f\x19\x1d\xa9\x4f\x15\xf2\xf9\xb0\xcf\x8a\x47\xfd\x9d\ \xf9\x5e\x0b\x80\x6b\xcf\x07\x6a\xaa\x8d\x9f\x77\xc3\x3b\x37\x56\ \xed\x57\x81\x3e\x95\xb8\x72\x8f\x15\x5a\x71\x22\x9e\xf2\x87\x33\ \x5e\x6b\x33\x99\x1b\x5f\x5a\x0a\xa4\xc9\x84\x63\x8e\xf1\xf1\xee\ \xcf\x71\x54\x18\x79\x62\x8f\x2f\xde\xc7\xd1\x5a\x13\xbd\x15\x49\ \xfb\x18\xe8\xa3\xec\xb3\x75\x0b\xa8\x21\x9e\x0b\xc4\xfd\xeb\x07\ \xb2\x7b\x7f\x14\xfd\x9c\x65\xc7\x62\xe3\xc2\x47\x1d\x71\x12\x3b\ \x20\x6f\x4f\xe2\x5f\x4f\xd9\x38\x38\x36\x6e\xcf\x8f\x09\x0f\x10\ \x8e\xe5\xe7\xb4\xf3\xcc\xab\xc8\xf2\x49\xbd\x0a\x43\x2a\x0e\x80\ \x85\xaa\x12\xca\xd6\xb7\x1f\x24\xd6\xbd\xe5\x80\xd6\x97\xe4\x53\ \xd8\xfe\x1a\x92\x54\x83\x98\xd5\x79\xbd\xbb\x8c\x3b\x53\x69\x37\ \x64\xe1\x4e\x78\x60\x92\x92\x74\x92\x4f\xd0\x7e\xbd\x17\x6b\x0b\ \x14\x78\x6c\x3b\x30\xf1\xf1\xb5\xb5\xce\x69\xdb\x3c\xcf\xf4\x5d\ \x0d\x9f\x18\xa0\x7d\x05\x06\x9d\xeb\x73\x4d\x02\xbb\x4a\x9a\xa9\ \x57\x54\x90\x17\x0a\x07\x96\xf7\x85\x40\x62\x98\x64\x73\xc3\xbb\ \x88\xa5\xd5\xd8\xcc\xb5\x31\xbc\xd4\x8a\x0a\x9a\xd3\xbd\x41\x8d\ \xf9\x83\xe9\x13\x88\xe6\x59\x42\xa1\xcd\xca\x0e\x56\x3c\x0a\xfb\ \x0f\xbf\x8a\x89\x1d\x97\xb4\xfa\x54\x0e\xdc\x7f\x9f\x55\x14\xce\ \x05\x18\xd7\x86\x8b\x18\xdf\x4e\x56\x55\x2f\x78\xaf\x19\x65\x3f\ \x7a\xcb\x7c\x54\xef\x0e\xa1\x99\xdb\xc8\xb4\xd6\xdc\xaa\x15\x5c\ \xe8\xde\x48\xaf\x11\x14\x3c\x8a\xa3\x84\x8d\x36\x93\x30\xe8\xed\ \x7e\x29\x2f\x2c\x93\x82\x56\x51\xc3\x91\xd7\xc9\x67\x91\x8f\xa9\ \xa1\x04\xe9\x52\x35\x1d\x0a\xa4\x35\x35\x02\xd4\xa0\xa1\x37\x1d\ \xc9\x9b\x09\xbb\xcd\xee\x23\x94\xb2\x12\x0f\xe1\x16\x1f\x45\xd7\ \xcd\xc3\x47\x34\x37\xb9\xd2\x53\x5f\x05\x4a\x31\xc0\x92\x30\xf4\ \x02\xe0\xbc\x9f\x9a\x1f\x90\x12\x5a\x22\xb5\xc1\x12\x11\xd4\x7e\ \xaa\x0e\x76\xe9\xbf\x03\xc9\xe2\xa9\x25\xc1\xc4\x64\x0c\x71\xa9\ \xec\x9c\xa4\x79\x78\xaa\x3c\xde\x8e\xb9\xae\x92\xf0\x9f\x23\xcd\ \x29\xe0\x96\x51\xdd\xab\x50\x4a\x69\x42\x7a\x39\x51\xee\xf5\x97\ \x07\x30\x16\x14\xa3\xfc\x8f\x34\xb0\x35\xcb\x7e\x46\x82\xfe\x6d\ \xe7\x75\x5a\x70\x50\x50\x46\x3b\xfd\x59\xf0\x3c\x8a\x1c\x0e\xf1\ \xda\xe6\xbf\x2a\x3f\xe1\xa1\x09\xee\x0a\xae\x6a\xc3\x30\xf5\x9e\ \x65\x4c\x15\xce\x40\xb8\x22\xe3\xaa\xbb\xf8\xac\xdb\x52\xea\x0b\ \x6b\x46\x6b\x5b\xdd\x27\x14\xda\xb1\x7c\xdb\x6b\x37\x75\xb5\x31\ \x51\xf4\x90\xff\x00\xe4\xb2\xea\x2f\xa2\x43\xb0\xb9\x1d\x9a\x07\ \x6e\x9d\xd3\xd8\xf8\x2a\x99\xdf\x1d\x1b\x8a\x8f\x27\x57\xb7\xb0\ \x9c\xdc\xae\x6e\x66\xba\xdf\x85\x5b\xc5\x14\xe8\xa1\xc1\xa7\xb4\ \xd4\x93\x1b\x9b\xc5\x9b\x32\xb3\x43\x4a\x5c\xb8\x68\xe5\xed\xb4\ \x1f\xc5\xcd\x51\xcc\xc4\xc5\xa7\xae\x6f\xc0\xa8\x6c\xd1\x53\xee\ \xa4\x67\x71\x1a\x2d\x8d\x35\x5e\xb7\xd0\xcc\x23\x21\x85\xfb\x42\ \x40\xd3\x24\xed\xa4\x44\x0d\x22\xe6\xef\xf5\x3b\xe4\x17\xa0\xfb\ \x40\x11\xf7\x25\xfd\xa0\x13\x7f\x0f\x05\x69\x1c\x72\x1d\xdd\x33\ \x77\xf5\x56\x84\x96\x44\xd0\x5f\x53\xd4\xad\x71\x90\x00\x15\x35\ \xa2\xbe\x62\x59\x40\x42\xc1\xe9\x06\xd2\x76\x0b\x06\x21\xc3\x3a\ \x98\xbc\x45\x44\x67\xdc\x1c\xdf\xfa\x7f\x45\x9b\xd1\xec\x2b\x70\ \xd0\x35\xf4\xa4\x92\x01\x40\x46\x8c\xeb\xe2\x6a\x0f\x85\x17\x63\ \x0c\x37\xb2\x01\x53\xfa\x77\xfc\x97\x5a\x3c\xad\x00\x0e\x56\x0a\ \xe0\xab\x02\xae\x0a\xbb\x54\xaa\x3a\x36\x97\x66\x04\x87\x1e\x60\ \xa3\x2c\x83\x47\xb1\xc6\xbe\xd0\xd3\xe0\xaa\x1a\x59\xa4\x40\x54\ \xd4\xe4\x3d\x39\xfc\x54\x02\x5b\x46\x09\x64\x05\xd4\xa6\x76\x57\ \x5e\x4a\xc2\x47\x93\x63\x13\x81\x36\xa3\xa9\xff\x00\xda\xb1\x93\ \x29\xbb\x1f\x4b\xd0\x81\x55\x5a\xc5\x2d\x45\x8d\x0d\x7a\x5e\x8a\ \x4b\x48\x65\x1a\xf2\x39\x8a\xdd\x26\x66\x71\x93\xbb\xaf\x7b\x5f\ \x42\xa9\x53\x94\x9e\xd5\x0f\xed\x6c\x47\x9f\xc9\x28\xbc\xb2\x80\ \x12\xde\x41\xaf\xd0\xf9\xaa\xbd\xe1\xdc\x0e\x61\x6b\xae\x28\x7f\ \x22\x90\x49\x61\xa4\x87\x3b\x49\x00\x1a\x69\xe2\x97\x8d\x79\x8b\ \x09\x2b\xd9\xf7\x84\x51\x9e\x26\xc3\xe6\x57\x4b\x67\x40\x22\xc2\ \xb6\x28\xe9\x46\xb0\x30\x55\x6b\x00\xb6\x99\x41\xa8\xa8\xe0\x89\ \x4d\x64\xc8\x0d\x67\x16\xfd\xd8\xfe\xf9\xfc\x92\xde\xe0\x6c\xe7\ \x7f\xfd\x62\xb2\x54\x60\x55\xa5\xac\x88\xd6\x86\xac\x34\xb7\x82\ \xa3\xc8\xb8\x79\xa9\x3a\x36\x66\x69\xe6\xaa\x6a\x38\x48\x7b\x5a\ \x46\x8e\xe2\x8f\xe3\xc9\x2d\xee\x0d\x14\x1c\x31\x56\xc4\x71\x34\ \x8d\x6f\xf3\x4a\x27\x2b\x00\xc9\x95\xa4\xd4\x02\x73\x37\xe3\xc9\ \x41\x6d\xb2\x10\x6a\xd1\xc0\x1c\x68\x47\x83\xba\x20\xd3\x31\xb5\ \x0e\x86\x82\xe3\xc4\x73\x54\xa0\x0c\x15\x00\x34\xdc\x6a\x58\x7c\ \x39\x85\xa4\x8b\xaa\x11\x75\x85\xe2\xb2\x1f\x35\x78\x07\x19\x3d\ \xca\xe0\x66\xb0\xd6\xa5\x56\x46\x90\xe2\x05\x4a\x5c\xd4\x74\x24\ \x8a\xe9\xcd\x7c\xe7\xd2\x98\xda\xdd\xb9\x3f\xb3\x5a\x1a\xf9\x2e\ \x6f\xcd\x59\x4f\x09\x48\x38\x46\x03\x9a\x02\x20\x77\x70\xe1\xf8\ \x2a\x3e\x59\x22\x77\xad\x8b\x83\xdf\x6a\x73\x5c\xd7\xb7\x33\x5c\ \x8a\x29\x50\xe8\xda\x7b\x4d\x50\xd1\x4e\xf5\x61\x42\x11\x4f\x05\ \x48\x9a\xf9\x65\x6c\x2c\xd5\xe4\x01\xfe\xa5\xed\x4e\x25\x90\x43\ \x1c\x51\xe5\x0c\x60\x0c\x67\x80\x49\xfb\x71\x36\xce\x98\xcc\x5b\ \x3a\xdf\x55\xa6\x3c\x63\x34\xe6\x56\x88\xa7\x25\xe0\x67\x14\x3d\ \x75\x5b\x61\x75\xbb\xd5\xa5\x9e\x2c\x16\x16\x4c\x46\x21\xfc\x11\ \x8a\x9e\xa7\xbb\xc5\x79\xed\x9d\x14\xbb\x53\x69\x49\x8d\xc5\xb4\ \xe5\xb1\x7b\x79\x65\xf6\x23\xfe\xfb\xfa\xaf\x45\x98\xef\x41\xa9\ \xf8\x7f\x74\x5d\x0c\x24\x62\x28\xe9\x40\x09\xb9\x5a\x9a\xeb\xab\ \xb5\xd5\x56\x0e\xaa\xb8\x29\x80\xa9\xaa\x9a\xf7\xa9\x69\x52\x0a\ \xb2\x59\x8e\x37\x13\x56\xb0\x93\xad\x90\x63\x15\x2f\x0f\x7b\x49\ \xd6\x85\x51\xed\x7b\x80\xae\xee\x41\xd1\xe2\xf5\xf1\x4a\xa6\x4b\ \x01\x24\x7a\x55\xcc\xb8\xad\x07\x23\xcb\x54\x35\xef\xc9\x50\x44\ \xbe\x16\x3c\xad\xf5\xaa\x83\x24\x4f\xe0\x75\x8f\xba\xe1\x4f\xef\ \x54\xb7\xb3\x24\x65\xb1\xe8\x45\x03\x5d\xa0\x59\x88\x36\x61\xb3\ \x5c\x0d\x58\x4d\x68\x3b\x8f\xc3\xe2\x96\x73\xe7\x31\xcb\xc6\xd7\ \x68\xee\xbd\xc9\x53\x0d\xe6\x33\x0d\x07\x2a\x99\x4f\x80\xd3\xe6\ \x7e\x4b\xbb\x13\x48\x6b\x43\x73\x83\x5a\xf0\x85\x7a\x12\xdb\x82\ \x6f\xed\x4c\xa2\x9e\xb0\x91\x1f\x11\xb9\xa4\xd7\x55\x21\xed\x02\ \x9f\x69\x6d\x05\x2c\x73\x7f\x7d\x12\x5e\xe0\x5f\x42\xf8\xdd\x51\ \xed\x33\x29\xa5\x0a\xa3\xdd\x93\x80\x97\xc7\x9a\x94\xcf\xc4\xde\ \xf0\x97\x4c\xa2\xad\x19\x1b\xa5\x62\x35\x1f\x05\x5b\xb8\x54\x69\ \x5e\xd4\x27\xea\x15\x19\x42\x09\x61\xb1\x79\xbb\x05\x5b\xe6\x0a\ \x81\x93\x5b\x06\x1d\x69\x78\xcf\xe9\xa2\xad\xaa\xd0\xeb\x74\x0e\ \x3a\x7f\x0b\x95\xdd\x1b\xc3\xc1\xb9\xd0\x17\x36\xc7\xcc\x73\xf1\ \x4e\xa2\xa9\xb2\xc1\xed\x79\x26\x40\x3b\x4a\xf0\x83\x96\xa4\xd8\ \xd7\x97\x7a\x29\x72\x05\x6f\xa9\xe8\x96\xf6\x11\x09\x14\xbf\x23\ \xd5\x7c\xff\x00\xd3\x08\x9e\x36\xb3\x1e\x3d\xb8\x45\x8f\x89\x5c\ \x27\x0e\x2e\x85\x56\xae\x6b\xb8\x93\x1a\xf6\xf3\x6a\x2b\x7a\x0c\ \xca\x75\xec\xa5\x4b\x84\x8d\xe4\xbd\xbe\xae\x43\xed\xb7\x54\x97\ \xbe\x78\x2f\x34\x59\xdb\xef\x33\xf4\x4f\x89\xf1\xc8\x2a\xd7\x02\ \x15\xd4\x70\xab\x52\xad\xcb\x95\x5b\x2b\xbd\xe5\x3b\x09\x8d\x76\ \xd3\x12\xf6\x44\x6d\xcc\xf6\xbb\xde\xec\xb4\xfc\x97\x57\x17\x35\ \x4e\x55\x8e\x59\x5c\x06\x60\x5d\xaa\xa0\xc4\x3d\xad\x63\xa9\x65\ \xba\x2c\x4e\x52\x38\xb9\xf3\x2b\xa7\x06\x21\xa2\x40\x77\x94\xa7\ \xb3\x4d\x57\x5b\x0d\x88\xcc\x06\x5c\x94\x06\xf4\x2b\x95\xe9\x2c\ \x92\xe2\x71\x0c\xc3\x5c\x41\x87\x8f\x7a\xfb\xf6\xdf\xec\xff\x00\ \x2f\xe6\xbb\x58\x48\x06\x1f\x0e\xd8\x5a\x41\xe6\xe7\xfb\xe4\xea\ \x7f\xbe\xe5\xbb\x08\xd0\x68\xfe\x9a\x78\xad\x6d\x72\x68\x72\xb6\ \x64\xd6\x39\x5c\x39\x4b\x9f\x41\x6a\x57\x95\x4d\x14\x67\x79\x61\ \xde\x35\xe2\x97\xe1\x35\xaa\x88\xe4\x35\xfb\xfa\x81\xdb\x0f\x65\ \xc5\xd3\x44\x8f\x07\x8e\x3a\xe9\x52\xc3\x5a\x1e\x6a\xfb\xe6\x73\ \x24\x5e\x94\x2c\x22\xea\xcc\x78\x7d\xda\x43\xfc\x0a\xb5\x47\x82\ \xac\xae\x78\x8c\xee\xc6\x67\x72\x59\xa1\x74\x82\x6a\x39\xe4\xe6\ \xd4\x11\xa7\x82\xd0\xe4\xb7\xaa\x48\x01\x17\x00\xac\xef\x69\x65\ \x4c\x47\x97\x64\xe9\xa5\x07\x87\x24\x87\xb9\x92\x02\xc3\x50\xee\ \x63\x42\x3b\xd5\x18\x5f\x52\x24\xa5\x46\x87\xaa\x36\x63\x77\xb8\ \xfc\x44\xbc\x9b\x48\x87\x96\xbf\x33\xf2\x5d\xbc\xac\x00\x17\x10\ \x3a\x66\x36\xf8\x2a\xd6\x2b\x5f\x0c\x4d\x2f\xc1\x55\x01\xc0\x1e\ \x17\xe1\x85\x45\x80\x14\x56\x2e\x7f\xee\xfa\xf6\x5d\x5e\x7a\x24\ \xbe\x48\xdc\x08\x78\x20\x5a\xa1\xec\xa2\xa9\x65\x2a\x63\x2f\x69\ \x26\xa6\x86\xdf\x04\x89\x1a\xf6\x90\xe0\xc2\x5d\xef\x45\x6f\x88\ \x54\x73\x49\xbf\xde\x5e\xb5\x6f\x0b\xc1\xea\x42\x8e\xd6\x77\x8e\ \x22\x39\xb2\xcf\xb7\x72\xa8\x69\x79\x24\x10\x01\x1f\x78\xde\x7e\ \x2d\x2a\xae\x6e\x52\x77\x80\x35\xa4\xde\xd5\x6b\xbf\x42\xae\xc2\ \xf6\xbd\xac\xbd\xfd\x97\x1a\xfc\x0f\x3f\x04\xe5\x0e\x58\x4f\x6c\ \xd3\xa2\x64\x1a\x1f\x14\xe8\xc0\xdd\xb7\x4a\x91\x5f\x15\x0e\x68\ \xa8\xa3\x41\x55\x91\xa2\x8e\x02\xdd\x57\x85\xf4\xd9\xad\x6e\x36\ \x1a\xf3\x8c\x8f\x9a\xf3\xaf\xbf\x09\x4b\xa3\x47\x69\x2d\xd1\xf0\ \xe6\x0a\x1a\xfa\x70\xb9\x5a\xa8\x75\xf8\x4a\xbc\x0d\xe1\x2d\x1f\ \x37\x24\xcd\x86\x8e\x47\xe7\x6e\x68\xe4\xf7\xdb\xaa\x87\x0c\x44\ \x03\x89\x9b\xe6\x34\x76\x9b\xaa\xb4\x52\x32\x56\xd5\x8f\x0f\x1d\ \xc9\xad\xd5\x4d\x3c\x53\x76\x35\x19\x81\x7c\xc5\xa3\x8a\x47\x35\ \xb4\xf7\x5a\x54\xbe\x4a\x95\x4c\xd5\xe1\x2a\x6b\xc1\x94\x72\x4c\ \x80\xb5\xcf\x15\xca\x4e\x6a\xae\xb6\x1e\xcf\x25\x8e\x35\x37\x5d\ \x3c\x24\xb1\xd8\x46\x6c\x6f\x60\xb5\x62\x30\xe2\x66\x97\x67\xc8\ \xea\x50\x9a\x54\x11\xd0\x85\x97\x0f\x84\xda\x98\x79\xe3\x8b\x0f\ \x89\x64\x98\x62\x68\xe6\x49\x70\xc1\xdd\xcd\x7a\x10\xe0\xd0\x18\ \xdb\x7e\x49\x81\xf4\x4c\x6b\xd5\xd8\xe4\xd6\x39\x30\x39\x5e\xce\ \x17\x00\x8e\xf4\x08\xd8\x3b\x39\xdb\xfc\x25\x5b\xd6\x65\x00\x38\ \x38\x83\x5e\x20\xaa\xe6\xe5\x93\x38\x8d\xe2\xbc\xd8\x74\xf2\xf8\ \xab\x32\x5a\xd2\x93\x3e\xa4\x50\x35\xec\xe7\xdf\xe0\xa6\x95\x39\ \xc4\x51\xb8\x0a\x50\xb4\xd0\xa3\x3e\x5d\x5f\x88\x8b\xf8\x86\x60\ \x98\x25\x2e\x3e\xad\xf1\x4a\x29\xa5\x68\x54\xef\xf2\xf6\xd8\xf8\ \xfc\x45\x54\x87\x87\x8a\xb4\x87\x78\x2a\x93\x54\xb7\x94\xa7\x9a\ \x2c\xf3\x34\x3f\xb8\x8d\x08\xd4\x25\x3e\x4d\xdc\x0e\x92\x51\x4d\ \xd8\x24\x8f\x05\xa7\x61\x40\x59\x83\x8f\x79\xda\x23\x33\xfc\x4d\ \xcf\xd5\x74\x58\xe1\xae\x68\x86\x63\xc9\x99\xbe\x6a\x77\xb5\x02\ \x93\xbc\x58\x7e\xc9\x54\x67\x7b\x46\x59\x23\x90\x7e\x28\xd5\x5e\ \xcb\xe7\xdc\xc6\x5d\x9c\x9a\xb4\xd3\xc3\xc5\x20\x90\xcc\xa3\x79\ \x23\x41\x1d\x99\x45\x45\x15\x43\x43\x46\x7d\xdd\x05\x89\x74\x26\ \xc7\xcb\xcc\xa9\x0f\x7d\xee\xc9\x69\xee\xd8\xfc\x12\xce\xea\x47\ \xf5\x70\xf2\x70\x54\x7c\x64\x5e\x86\x52\x34\x3a\x38\x79\xaa\x57\ \x3d\x08\x26\x42\x2b\x52\x2d\x20\xfd\x55\xc4\xba\x92\x33\x36\xf7\ \x02\xe3\xc4\x29\x60\x61\x22\x48\xdf\xc2\x75\x1a\x83\xfa\x14\xc5\ \x15\x58\x9d\xaf\x92\x64\x3f\x74\x7c\xd3\x98\xc0\xd6\x8a\x1d\x46\ \xa7\x54\x32\x81\x86\x82\xb4\xbd\x49\xb9\x50\xff\x00\x6c\xd3\xba\ \xcb\xc3\x7a\x75\x13\x24\x97\x0e\x5c\xe7\x37\x85\xe0\x10\x7b\x3a\ \x2f\x2e\x5b\x2c\x43\x88\x6f\x47\xbc\xcf\xfc\x55\xd8\x70\xf2\x71\ \x67\x77\xe2\x0a\xaf\x0c\xe5\xf1\x43\xe3\x69\x66\x62\xd6\x84\x96\ \xc6\xef\x62\xf4\xe4\x87\xb4\x8e\x45\xa5\x0c\x24\x38\x55\x3a\xad\ \x2a\xcd\xcc\x3c\x3b\x95\x26\xc3\xc5\x37\x10\xe1\x77\xbc\xd4\xb9\ \x04\xf0\x8e\xcb\xa6\x67\x5f\x69\x53\xed\x98\x7f\xde\x47\xf1\x4f\ \x8c\x98\x30\x30\x61\xc9\xbb\x63\xa3\xbf\x8b\x54\xba\xa9\xad\xf5\ \x43\x9f\x45\x4c\x3c\x9e\xbb\xb4\xbb\xd8\x29\x5a\x23\x2e\x3a\x00\ \xb7\xe0\x24\xcd\x28\xa5\x97\x56\xa4\xfb\x7a\xa7\xc4\xe0\x2f\x5d\ \x53\x9b\x22\xbb\x5e\x9a\x1e\x98\xc7\xa6\xb1\xe9\xad\x7a\xb8\x7a\ \xb8\x72\xbb\x5d\xde\xac\xd7\x2b\xe6\xad\x95\x44\x71\x83\x50\xc0\ \x2e\x0d\xac\x86\x30\xb7\xee\xe5\x78\x1d\x0d\xc2\x8a\x3d\xa5\xa4\ \xc4\xc9\x1d\x4b\xb8\x58\xff\x00\x74\x55\xcf\x93\x49\x65\x86\xba\ \x07\xdc\x6a\xab\x4a\x8e\x28\xa3\x20\x12\x4b\xa2\x3a\x1e\x76\xeb\ \xa2\xab\x24\x7d\x08\x8e\x51\x21\x14\x19\x5d\x62\x10\x26\x61\x39\ \x08\x31\xbb\xa3\x94\x38\xa5\x15\x93\x1f\xc6\xc8\xf0\xe3\xf6\xd2\ \x06\xf9\x6a\x7e\x9f\x35\xdb\xc3\xd1\x91\xd5\xc6\x83\x44\xf7\x3a\ \xbd\x99\x25\x02\x82\xcd\x62\xac\xce\x22\xa4\x3f\x13\xa0\x36\x15\ \xfe\xca\x83\x25\x64\x00\x62\x28\x74\x01\xd1\xeb\xe0\xa8\xd7\xbd\ \xcc\xa8\xdd\x4b\x71\xd8\x34\xf1\x55\x32\x86\x8e\x20\xf6\x5a\xa6\ \xa3\xbe\x9f\x9a\xa6\x46\xdc\xc7\xc2\x4f\x36\x14\xb9\x18\x5c\x40\ \x73\x04\x82\xd7\xad\x1c\x3b\xfe\xa9\x2e\xf5\x95\x16\x96\x80\x82\ \x1c\x29\x25\x3b\x94\xb5\xcf\x15\x00\x99\x29\x4e\x17\x58\x8f\x3e\ \x6a\xd5\x64\x9c\x8d\x45\xaf\x67\x05\x47\x31\xe1\xe1\xc6\xb2\x52\ \x94\x70\x34\x78\xfd\x55\x21\x25\xcf\x6b\x87\x16\xbc\x40\xd3\xf9\ \x87\x5e\xf5\xa1\x43\xcd\x1a\x7c\x16\x16\x9b\xa7\xc3\xf7\x47\xcd\ \x38\x02\x5a\xdd\x34\x41\x00\x0c\xdc\xbb\xf4\x55\x9c\xf0\x38\x0a\ \x83\xc9\x78\xdf\x4d\xab\x93\x0a\x48\xbd\x5f\xf4\x0b\xcb\xd7\xdd\ \x55\x92\x38\xa5\x39\x9c\xda\x3f\xdf\x1d\xa5\x9e\x48\xa7\x8c\xf0\ \x8d\xeb\x79\xd3\xb4\xdf\xf4\xa7\x61\xe5\x63\xda\xe8\xf8\x73\x37\ \x8b\x29\x56\xa0\x17\x0c\xba\xae\x47\xea\x62\x24\x2c\xef\xa8\x77\ \x64\x84\x34\xf9\x26\x36\x44\xc6\x1f\x69\x5e\xb5\x50\x5a\xd2\x6b\ \x46\x7c\x16\x39\xe5\xab\xca\x56\xf1\x59\xb2\x66\xcd\x95\x44\xd2\ \xd2\x3a\xe6\xba\x56\x19\xc0\xcd\x56\x7b\x77\x5d\xed\x9c\xec\xec\ \x0c\x2e\x75\x0d\x97\x67\x09\x91\x9a\x7c\x56\xf6\x48\x16\x1d\xa7\ \xb5\x0e\x15\x80\x36\x37\x1e\xfa\x59\x72\x65\xdb\x78\xd9\x05\x19\ \x2b\x59\xfc\x01\x65\x7e\x2e\x79\x3b\x73\xc8\x7c\x5e\x56\xec\x1e\ \xdb\xda\x18\x66\x86\x09\xb7\x8d\x1e\xcc\x82\xab\xb3\x83\xf4\x9e\ \x03\x41\x89\x81\xf1\x9e\xb1\x9a\x8f\x82\xec\x61\x36\xb6\xcf\xc4\ \x50\x45\x8b\x84\x93\xc9\xc7\x29\xf9\xad\xcd\x7f\x3e\x49\x8d\x7a\ \xbb\x1e\x98\x1f\xd1\x30\x3d\x58\x3d\x5d\xae\x50\xf3\x21\x23\x2b\ \x80\x1d\x08\xef\x53\x1b\xdf\x94\x19\x00\x0e\xa5\xc0\xd1\x58\xb9\ \x25\xf1\xc6\x45\x1b\x58\xef\x5e\x1b\x5d\x2e\x40\xff\x00\xda\xb0\ \x4a\x00\xa8\x20\x51\xd5\xee\x4a\x2e\xcd\x18\x8e\x3a\x4a\xd1\x50\ \x5a\xf3\x47\x6a\x97\xbc\x21\xa7\x76\x4b\x9a\x0d\xda\x7b\x6d\x0a\ \xc1\xc1\xc0\x16\x9a\x83\x70\x52\xe0\x1b\xdd\xaa\x3a\x43\x1f\xcd\ \xff\x00\xd0\x0f\x8a\xed\x82\x1a\x1a\x33\x96\x93\xee\xb2\xa5\x5c\ \x93\x41\x6c\x49\xef\x1e\x2a\xa4\x6a\x6b\x89\x14\x1a\xea\xaa\xf9\ \x05\xe4\x33\x96\x06\x92\x48\x7b\x74\xad\x69\xfd\xf7\x25\x91\x9e\ \x80\xb2\x29\x05\x75\x61\xa1\x1c\xaa\x96\xe7\xe5\x07\xd6\x49\x1d\ \x48\x68\x0f\x15\x15\xaa\xa3\xc1\x01\xaf\x2c\x2d\xe4\x1d\x0d\xc0\ \x1a\xe8\x86\x48\x4c\x75\x69\x13\x6b\x5c\xb6\x3f\x04\x13\x1c\x85\ \xd1\xd4\x12\x2c\x47\x35\x47\xb5\xe0\x58\xef\x45\x45\x9d\xa8\x1d\ \xdd\x4e\x9a\xa4\xba\x8e\xa4\x7f\x79\x97\xd9\x75\xa4\x1e\x05\x30\ \x3c\x99\x1f\x43\x9a\x9e\xc9\x14\x78\xf0\xea\xa5\x8e\x8d\xef\xa8\ \x70\x2e\x1e\x47\xcc\x26\xd1\x2e\x5f\xbb\x7f\x81\x58\x47\x3f\x15\ \xaa\x1f\xb8\x77\x81\x57\x84\xbc\xc6\x01\x03\xc8\xaa\xbd\xa5\xd2\ \xb6\xd6\xb5\xf9\x6a\x54\xce\x78\x08\xd1\xab\xc8\xfa\x6f\x19\x7b\ \x20\xab\xa8\x44\x84\xd4\x3b\xb9\x79\x47\xb5\xf9\xbb\x4d\x3f\x22\ \xab\xa6\xbf\x35\x2d\x3e\xca\x1f\x1b\x25\x6f\x1b\x2b\xdf\xcd\x2f\ \x77\x3c\x43\xd5\xbb\x7c\x3a\x3b\xb4\x88\xf1\x2d\x3c\x3c\x4c\x73\ \x7b\x43\xb2\x98\xe6\xb6\x46\xdd\x2d\xd0\xf4\x4b\x74\x6e\x1a\x28\ \xad\x3c\x53\x1a\xe5\x7c\xdf\xc2\xbc\xd4\xb8\xb1\x24\xa0\x0d\x14\ \xc1\x8b\x07\x50\x9b\x0e\x28\x39\x22\x7c\x4c\xa2\x3d\xd5\x2f\xd5\ \x68\xd9\x8e\xcb\x56\xaf\x51\xb2\xd8\xd1\x18\xae\xa7\xe8\xba\x4d\ \x92\xd4\xaa\xbe\xfa\xde\x3d\x15\x5c\xfa\x82\x38\x48\x5c\xac\x6e\ \x06\x27\xf1\x06\xd0\xf7\x2e\x74\xb8\x79\xe2\xec\x48\xe4\xb6\xcd\ \x2b\x3b\x6d\xcc\x9b\x1e\x25\x8e\x15\x39\x9b\xfc\x49\xe1\xe0\xf3\ \xcc\xb4\xe1\x31\xd8\xac\x31\xae\x1b\x13\x24\x7d\xcc\x36\xf8\x2e\ \xc6\x13\xd2\x7c\x6c\x74\x18\x88\xe1\x9c\x75\xa6\x43\xf2\xfd\x17\ \x5f\x09\xe9\x36\xcf\x96\xd2\xef\xa0\x3d\xe2\xa3\xe2\x17\x5f\x0b\ \x8d\xc3\xe2\x5b\x5c\x3e\x22\x39\x7b\x9a\xfa\x9f\x82\xd2\x1f\xd6\ \xc9\x8d\x7a\xb0\x7a\xb6\x75\x39\xd1\x9d\x19\x95\x4b\x92\x27\x68\ \x7d\x09\x24\x11\xed\x0d\x52\xa6\x19\xae\x0e\x57\x5a\x84\x77\x2a\ \xc3\xed\x1a\x64\x24\xdc\x56\xd5\xea\x9b\xb0\x06\x76\x49\x88\xfd\ \xf4\x85\xe3\xc3\x41\xf2\x01\x76\x2b\xc6\x58\x0c\xa0\xdb\xb2\x3c\ \xf5\xf3\x1f\x05\x6e\x96\xc4\x3e\xa2\xb5\xae\x95\xb5\x15\x49\x01\ \x97\x38\x91\x5b\x5e\xe4\x50\xaa\x6f\x01\x7d\x3e\xd1\x5a\x8d\x1c\ \xdf\x1f\xd1\x2e\x46\x30\x80\x4c\x2c\x71\xa5\x4b\xa2\x34\x29\x4d\ \x79\xe2\x0d\x93\xa7\x0c\xc3\x41\xd2\xbd\xea\xa4\x6e\xfd\x97\xc3\ \xd0\xb3\xb1\xdd\x54\x3a\x99\x33\x86\x17\xd7\x47\x30\x5e\x84\x6b\ \xfd\xf7\x2a\x8e\x33\xdb\x64\xa4\x5b\x4a\x3d\xb7\xa1\xf8\x05\x01\ \xe6\xe2\x37\xef\x0d\xa8\xc7\xd8\x85\x39\xa3\x92\x8c\x70\xab\x85\ \xf2\xb8\x50\xa5\xca\xc7\x91\x42\xcd\xeb\x69\x41\x7a\x3c\x79\xab\ \x40\xea\xca\x4d\x43\xe8\x35\x22\x8f\x17\xd0\xa7\x39\x2e\x63\xea\ \x9d\xe0\x56\x31\xa9\xf1\x5a\x23\xff\x00\x2e\x7c\x0a\x6c\x60\x37\ \xb8\x93\xcd\x4e\x5a\x11\xcf\xad\x52\xa4\xec\x53\x38\x27\xb8\x2f\ \x27\xe9\xd6\x76\xc1\x86\x31\x9f\xdb\x1a\xfc\x17\x93\x79\x12\xf0\ \xbb\x81\xff\x00\x25\x9a\x93\x46\xfa\x17\xfc\x53\x1a\x4f\x4a\x8e\ \xe5\x66\xc8\xae\xd9\x2a\x3b\x37\xef\x2a\x64\x8a\x39\x86\x59\x63\ \xcd\xee\xf5\x6a\xce\x60\xc4\x42\x73\x40\xf1\x2b\x5a\x2d\x1b\xbb\ \x5f\xcc\x99\x1e\x21\xae\x39\x24\x6b\x98\xff\x00\x74\xa7\xe5\x6b\ \x87\x55\x47\x44\xda\x14\xb7\x43\x4e\x20\xa3\x76\xef\xc3\xfc\xcb\ \xc9\x21\x08\x5d\x1d\x92\xcc\xce\x2c\x1d\x91\xdb\xf1\x5e\x86\x29\ \x69\xa3\x96\x86\xcf\x6b\x65\x53\xbe\xaf\x34\xc6\xcb\x5f\x14\x3e\ \x56\xa5\x4a\x3f\x0a\xcd\x2c\x2d\x3e\xca\xcd\x2e\x1a\xf6\x49\xdc\ \x3d\x9d\x97\x23\x7d\x2b\x35\xe2\xf1\x4d\x8f\x14\xde\x6d\x73\x53\ \xa3\x9e\x27\x5d\xb2\x34\xa6\x87\x7b\x41\xde\x6b\x76\x13\x6b\xed\ \x1c\x30\xcb\x16\x36\x4a\x74\x79\xce\x3e\x6b\xa5\x86\xf4\xa7\x1c\ \xcb\x4d\x0c\x12\x8e\xe0\x5a\x7e\x4b\xa9\x86\xf4\xa7\x04\xfa\x09\ \xa1\x9a\x03\xd7\xb4\x3f\x55\xd5\xc1\xed\x1c\x26\x2b\xfc\xb6\x22\ \x39\x0f\x40\x68\x7e\x06\xeb\x53\x5e\xad\xbc\x53\x9f\xbd\x51\xcf\ \x55\x2f\xef\x4a\x2e\x49\xc7\x48\x59\x85\x93\x2f\x68\x8c\xac\xf1\ \x36\xfc\xd7\x5b\x66\xc6\x23\x81\xac\x6e\x8d\x00\x2d\xe7\xb0\x07\ \x1d\xcd\x38\x4d\x28\x94\xf7\x32\x94\x3f\x6a\x00\x8f\x0a\x7f\x75\ \x41\x75\x64\xa0\x97\x11\x1d\x74\x05\x9a\x2a\xef\x0b\x81\xcb\x3c\ \x52\x0e\x8e\x14\x41\x8c\x1a\x12\xcd\xd9\x00\x0e\x07\xd3\xbe\x9e\ \x0a\x92\x35\xe5\x81\x9c\x13\x0a\xdc\x48\x93\x4a\x3c\x01\xbc\x81\ \xd5\xb0\xd5\x85\x41\x15\x0d\x24\x1a\x9e\x1c\xf0\x9f\x20\xa2\xcf\ \x66\x7a\x09\xa8\x72\xe6\x68\xa3\xc7\x22\x8a\x66\x07\xf6\xd6\xb5\ \x6c\xf0\x0d\x8a\x5f\x68\x1b\x99\xb2\xdc\x34\x8a\x3c\x5d\x4c\x4e\ \x26\xb9\x78\x80\x1f\x76\x6c\xf1\x6d\x13\xa3\x73\x1e\x49\x14\xcc\ \x2c\x7a\x8e\xe2\xad\xd5\x2e\x7f\xba\x77\x82\xc7\xed\x1f\x15\xa0\ \x5b\x0e\x7c\x13\x8e\xa4\xd9\x40\xb3\xe8\x09\x3e\x3c\x92\x64\x25\ \x84\x8a\x56\xf6\xa2\xf2\xfe\x9b\x65\x38\x68\x3f\xea\x57\xe4\xbc\ \x93\x98\xde\x61\x43\x9a\xec\xb9\x4f\x1b\x12\x9c\x32\xb8\xb3\x88\ \x8e\x9c\xc2\xab\x2a\x5d\x93\x37\xc5\x5e\x8f\x1e\xca\x96\xc9\xec\ \xa7\x30\xb8\xfb\x55\x44\xac\x6c\xb1\x96\x4b\x1b\x64\x6f\xe2\xe4\ \x90\xec\x3c\xd1\x38\x3b\x0b\x2e\x66\xb4\x76\x24\xe7\xfe\xa4\xc6\ \x62\x9a\x1f\x92\x76\x16\x3f\xdd\x36\x4e\xa8\x76\x97\x50\x5a\xda\ \xf6\x57\x89\x42\x10\x9f\x85\xc6\x3e\x26\xe5\x63\x6a\x17\x44\x6d\ \x06\xb7\x55\xa1\xb8\xd6\x7e\xf0\x37\xc4\xad\x2c\xc4\xad\x0c\x99\ \xa5\x31\xae\xaa\xb5\x7a\xab\x38\x82\xe5\x4d\xdd\x52\xdd\x15\x1a\ \x73\x36\xa9\x5b\x90\xe4\x89\x70\xe9\x0e\x88\x8e\x15\x46\x99\x18\ \xeb\x39\xc1\x38\x62\x5e\xce\xd2\x7c\x78\xc6\x3b\x5b\x27\xb6\x56\ \x1e\x69\x8d\x7f\x35\xbf\x07\xb6\x76\x96\x1a\x82\x3c\x53\xde\xd1\ \xec\x49\xc4\x3e\x6b\xb5\x83\xf4\xa1\x8e\xa0\xc5\xe1\xf2\x7e\x28\ \x8d\x7e\x45\x76\xb0\x98\xec\x36\x29\x99\xf0\xd3\x32\x41\xdd\xa8\ \xf1\x1a\xa7\x17\xf7\xaa\x97\xaa\xe6\xba\x53\xce\xf3\x1b\x87\x87\ \x90\xac\xa7\xca\xc3\xea\x7e\x0b\xbd\x85\xb3\x56\x90\x6c\xad\x99\ \x46\x6e\x49\x6f\x0c\x70\x21\xcc\x04\x10\x41\xb7\x2e\x89\x6e\x88\ \x03\x58\xde\xf8\xcf\x71\xa8\x55\x91\xd2\xb4\x9e\x01\x20\xaf\x23\ \x42\x14\x32\x60\xe2\x35\x61\x3c\x9d\x6d\x15\x4c\x40\x54\xc6\x4c\ \x4e\xee\xd2\xbe\x0a\xa6\x30\x5e\x5e\x6c\xee\x4e\x6d\x8f\xf5\x55\ \x31\x93\x95\xb2\x52\x40\x2c\x1e\x2c\xe1\xfd\xd9\x2f\x29\x94\x5d\ \xf9\xac\x08\x22\xd2\x35\x59\xa7\x39\x2f\x00\x3a\x95\xd0\x51\xcd\ \xd5\x5f\x0c\x6a\x0d\x24\xcf\x4b\x5c\x5c\x77\x14\xcd\x02\x5c\xff\ \x00\x74\xef\x05\x8f\xf5\x5a\x18\x7f\xe1\xc7\xf7\xcd\x5e\x36\x96\ \x8e\x2a\xf3\xad\x39\xf7\xab\x3b\x38\x75\x1b\x43\x41\xcd\x50\xb8\ \x16\x12\x6b\x56\xd8\xaf\x1d\xe9\xdc\x8d\x87\x0d\x87\x34\x6d\x1d\ \x31\x1f\x25\xe5\xda\xe6\x49\x76\x3d\x5f\xf1\x2a\xd4\x1d\x58\xd7\ \x04\x4b\x08\x31\x92\xc6\xd4\x8b\xa5\x34\x3c\x37\x33\x33\x59\xb5\ \x3d\xca\x73\xe6\x17\x6b\x5e\x86\x8b\xf0\x3b\x29\xe8\x55\xdb\x25\ \x28\x24\xcc\x3b\xd3\x3c\x2f\x45\x2e\x6b\x1f\x1e\xed\xed\x6b\x9b\ \xee\xb9\x21\xd8\x47\xc6\xec\xd8\x69\xb2\xb6\x9f\x76\xfe\xca\x37\ \xd8\xb1\x63\x84\x90\x9e\xad\x75\x97\x90\x42\x10\x84\x21\x32\x1c\ \x5c\xb1\x6b\x70\xba\x90\x63\x98\xfc\x94\x37\x3c\x96\xd8\xe7\xcd\ \xed\x27\xb6\x62\x5b\x67\x27\x32\x5b\x5e\xc9\x99\xaa\x2a\x8a\x92\ \xad\x4b\x55\x2d\xd1\xb4\x7b\x29\x66\x34\x97\x45\x5e\x49\x52\x61\ \xff\x00\x0a\x4b\xa3\x78\xef\x54\xcc\xe6\x3b\xdd\x4f\x66\x21\xc3\ \xfa\x2d\x2c\x9a\xbf\x89\x35\xb2\x34\xa6\x45\x2b\xe3\x78\x7c\x6f\ \x2c\x70\xd0\x83\x42\x17\x6b\x01\xe9\x04\xec\xa3\x31\x83\x7a\xdf\ \x78\x76\xff\x00\xaa\xef\xe1\xf1\x50\xe2\x22\x12\x43\x23\x5e\xc3\ \xcc\x26\xe6\xe6\xa3\x66\xfa\xcc\x64\xf3\x1d\x01\x11\x8f\x2d\x7e\ \x64\xae\xec\x0e\xa0\x09\xe1\xca\x73\x28\x2e\x50\xe7\x28\xcc\xa9\ \x99\x53\x34\x52\xd8\xe4\x70\xe8\x54\x65\x2d\x14\x89\xf4\x1d\x1d\ \x71\xe1\xdc\xaa\x1e\x45\x04\xac\xca\x49\xa0\xa5\xc1\xd1\x5f\x35\ \x40\x23\x43\xcc\x2a\x3d\x81\xd4\x37\x0e\xf7\x9b\xaa\x87\xb0\xd8\ \x91\x98\xde\xaf\x6d\x88\x56\x80\x92\xca\x99\x04\x87\xad\x29\xcb\ \x9a\x63\x92\xe7\xfb\x92\xb1\xfe\xa9\xed\xb4\x2d\xf2\xfa\xa6\x32\ \x4c\xc6\x80\x8a\xa9\xb6\xf8\x50\xf2\xb8\x54\x24\xee\x89\xad\xee\ \xbc\x8f\xa6\x24\x36\x1c\x33\x4e\x53\x57\xdc\x1f\x05\xe4\xa5\xc0\ \xc6\x5f\x9b\x0e\xe7\x40\xff\x00\x77\xd9\x49\x74\xf8\x9c\x30\xae\ \x2a\x3a\x34\x0a\x99\x1b\xc4\xd4\xf8\xe7\x8a\x46\xe6\x6b\xaa\x13\ \x78\xaa\x28\xab\xc5\xc9\xc9\x4f\x15\xed\x58\xa8\xce\x79\xdc\x29\ \x6b\xdd\x96\xdc\x43\xbd\x0c\x7b\x69\x63\x4f\xa2\x97\x4c\xe1\xdb\ \x6f\x98\xba\x63\x25\xce\x3b\x55\x57\xcc\x3f\xb0\xbc\x52\x10\x84\ \x21\x08\x42\x64\x38\xb9\x62\xd6\xe1\x6f\xc2\x63\xd8\x4e\xee\xe0\ \xae\x84\x78\x80\x74\x72\x73\x26\xbf\x69\x68\x64\x80\xab\xb6\x4e\ \xf5\x39\x9a\xa7\xda\x56\xca\x28\x92\xe8\xf8\x95\x5d\x10\x29\x2f\ \x87\xf0\xac\xef\x83\x2f\x67\x85\x53\x23\x87\x12\xbb\x65\x70\xe1\ \x75\xd3\xe3\x9a\xb6\x0e\x4d\x6c\x8b\x56\x07\x1b\x36\x12\x5d\xe4\ \x4f\xf1\x07\x42\x3b\xd7\xa9\xc3\x63\xe3\x9b\x08\x71\x4c\xd1\xa0\ \x92\x0f\x22\x39\x2e\x8e\xc9\x61\x8f\x0b\x18\x3d\xaa\x54\xf8\x9d\ \x57\x5e\x37\xa6\x09\x3b\xd4\xe7\xfc\x48\xcf\x54\x67\x50\x5c\xa3\ \x32\x80\x19\x98\x3f\x20\xa8\xe6\xad\x9a\xa8\xaa\x4b\xa3\xa1\xac\ \x4f\x31\xf3\xa0\xd0\xf9\x20\x48\x59\xf7\xc0\x33\xf1\x0d\x35\x4e\ \x04\x1d\x08\xf2\x56\x1c\xfa\x95\x29\x53\x9f\x54\x7c\x96\x30\x6d\ \xe6\x9e\x09\x18\x76\xd3\x5b\x7d\x54\xb4\x83\x29\x63\xa9\x63\xcc\ \x83\xf2\x4c\x78\x61\x90\x10\x59\x51\x6e\xf5\x13\x5e\x12\x2b\x42\ \x79\xaf\x17\xe9\xb1\x68\x6e\x14\x1d\x73\x1f\xa2\xf3\xad\x7d\x38\ \x45\xc7\x42\x9c\xc2\x08\xa0\x77\xfa\x0a\xcb\x89\xc1\xc4\xe3\x9a\ \x3c\xd0\xbf\xaa\xcc\x1d\x8c\xc2\xb8\xef\x9a\x1d\x1d\x6c\xe8\xff\ \x00\xf9\x27\xc1\x8a\x86\x61\x50\xf0\x4f\x72\x77\x0b\xf4\x54\xc9\ \x74\xb3\x1d\x38\x82\xa3\xbb\xd4\xb6\xca\x85\x9c\x56\xb1\x53\x9e\ \x65\xe5\x90\x84\x21\x08\x42\x10\x84\x45\x34\x91\x76\x4d\x96\xcc\ \x36\x3d\xfb\xca\x39\xb6\x5b\xe2\xc6\x33\x91\x5a\x9b\x3b\x5d\x94\ \x87\x2d\x0c\x91\xb4\x4c\x6b\xec\x98\xd9\x01\x14\xcd\x45\x6a\x34\ \xf1\x1c\xaa\x1e\xd7\x0d\x12\xf2\x55\xc8\x7c\x7c\x3d\xea\xbb\xa0\ \x78\x52\xe5\x81\xa9\x0f\xc3\x91\xc4\x33\x2a\xb5\xef\x6b\xae\xdf\ \x34\xf6\x4a\xd3\xa2\xe8\xec\xcc\x53\x62\x32\x47\x21\xcb\x13\xe8\ \x5f\xe4\x6a\xba\xef\xf4\x94\xb6\xd8\x6c\x38\xfe\x39\x4f\xe4\x16\ \x77\xfa\x49\xb5\x5d\xa6\x29\xb1\xff\x00\x0c\x60\x2a\x7f\x8f\x6d\ \x8c\xdf\xfa\x84\xdf\x2f\xd1\x36\x2f\x48\xf6\xb3\x7f\xf7\x4d\x93\ \xf8\xa3\x05\x6d\xc3\xfa\x59\x8a\x1f\xe6\x30\xb0\xc8\x3a\xb4\x96\ \x9f\xcd\x75\x30\xde\x93\xec\xe9\x6d\x23\xa6\x80\xfe\x36\x54\x7c\ \x42\xe9\xe1\xf1\x70\x62\x19\x9f\x0f\x33\x25\x1d\x63\x20\xa6\x36\ \x45\x66\xbf\xbd\x4e\x64\x66\x45\x55\x81\x05\x53\x76\x33\x97\x46\ \xf3\x19\x3a\xd3\x9f\x92\x6b\x09\x2c\x19\xa9\x5e\x74\xd1\x5a\xa9\ \x78\x97\x7a\xaf\x30\xb1\x83\x65\xa3\xf6\x4c\x1e\x1f\x55\x68\xda\ \x08\x3d\x49\xb5\x7f\x25\x62\xc0\x35\xd4\x68\x46\xa1\x57\x1a\xe2\ \x23\x00\x68\x4d\x17\x88\xf4\xed\xd5\x93\x0b\x7f\x7c\xfd\x17\x9b\ \x6b\xba\x39\x31\xb2\x57\x84\xea\x98\xd9\x9d\x97\x2b\xdb\x9d\x88\ \xde\x03\xd8\x75\x56\x5c\x4e\x1b\x0d\x29\xec\xba\x29\x29\x4c\xed\ \xd4\x24\x39\xb8\xcc\x2e\xbe\xbd\x83\x57\x37\xb5\xfc\xab\x46\x1f\ \x19\x14\xbe\xd8\x27\xb9\x3d\xb7\x6d\x9d\xf0\x50\xe1\x6b\xb7\x32\ \x53\x98\xda\x9a\x68\xa2\x95\x55\xe2\xfc\x3f\xcc\xbc\xb2\x10\x84\ \x21\x08\x42\x10\x84\x21\x32\x1c\x4c\xb1\xc9\x48\xae\x0f\x25\xd1\ \x87\x68\xc7\x4e\x33\x94\xad\xd1\xe2\x01\xd1\xc9\xdb\xc6\x94\xd6\ \xbf\xdd\x4c\xde\x36\x97\xd5\x5f\x78\xd2\x2d\x62\x98\xdb\x8b\xfc\ \xd5\x78\x2b\x41\x65\x67\x47\xcd\x29\xe1\xa6\xd4\x4b\x76\x1f\xda\ \xa2\x4b\xb0\xfe\xd7\x3e\xa1\x46\x49\x5b\xa5\xc7\x7a\x9d\xee\x4e\ \x17\x87\x35\x1b\xe6\xf2\x6d\x55\x9b\x37\xe0\x56\x6e\x21\xbc\xda\ \xe5\x76\xca\xc3\xed\x51\x31\xae\xae\x8e\xcd\xe0\x98\xc9\x5e\xc7\ \x87\xb1\xe5\x8f\x1a\x10\x68\x57\x5b\x03\xe9\x06\x32\x1b\x4c\x5b\ \x88\x67\xe2\xed\xfc\x57\x73\x07\xb7\x70\x38\x8b\x3a\x43\x03\xba\ \x49\xa7\xc7\x45\xd3\x6c\x95\x00\x83\x51\xc8\xd5\x58\x3e\xda\xa9\ \x0f\x57\x6b\x95\x83\x95\xda\xeb\x29\xad\x92\x31\x2e\xe1\x59\x9a\ \x6c\x3c\x13\xa7\x71\x10\x36\x95\xad\x45\x28\x9b\x05\x0d\x77\x83\ \x88\x5e\xb4\x53\x19\x79\xc4\x0c\xcf\xad\x02\x31\xce\xf5\x56\xe4\ \x6b\x4a\xaf\x09\xe9\x99\xae\x3b\x0e\xda\xd8\x30\x9a\x79\xaf\x3a\ \xf0\xd0\x6c\x8a\xd1\xd9\x4f\x12\x65\x7b\xd4\x7d\x54\xb9\xee\xa5\ \xc5\x42\x33\xd0\x0e\x2a\xf8\xaa\x4f\x06\x1f\x11\xdb\x65\x1d\xc9\ \xde\xd0\x49\x74\x58\xb8\x1f\x99\x8e\x13\x47\x4d\x1b\xdb\x4e\x8b\ \x18\xc3\xdb\xb3\x93\xdb\x91\xed\xcc\xcc\xaa\x1f\x1d\x15\x28\x17\ \x92\x42\x10\x84\x21\x08\x42\x10\x84\x21\x0a\x19\x21\x8c\xd0\x2d\ \xd1\x63\xdc\xde\xd3\xc1\xf2\x5b\xa0\xc6\x31\xe2\xad\x35\x5a\xdb\ \x35\x53\x98\xe6\xa6\xba\x4a\x35\x31\xb2\x34\xf1\x10\xac\xd2\xac\ \x47\x44\x69\xc2\xa7\x77\xe4\xa1\xd1\x70\xd5\x29\xf1\x57\x56\xac\ \xf2\xe1\xbf\x0a\x4b\xe3\x7b\x74\x72\x8a\xb8\x6b\x97\xf9\x51\xbc\ \x6f\xbb\xf0\x57\x6c\x8c\xfc\x4d\x4d\x8e\x53\xef\xb5\xe9\x8d\x93\ \xaf\x0f\x8a\x63\x5c\xb5\x60\xf1\xf8\xac\x19\xff\x00\x87\x99\xec\ \x1c\xc7\x23\xe4\xbb\xb8\x0f\x48\xa3\x75\x19\x8b\x8f\x76\x7d\xe6\ \xe9\xf0\x5d\xbc\x3e\x22\x39\xe3\xde\x43\x23\x24\x61\xe6\x0d\x53\ \x83\xd5\x83\x93\x1a\xe5\x39\xac\x91\x3b\xa8\xcf\x34\x80\x6d\xe4\ \xb4\x3d\xd4\x0c\xf1\x09\xcc\x79\x35\x0e\xd3\xa8\x53\x1c\x9c\x45\ \xda\x59\x53\x1c\xea\xc6\x45\x6e\x17\x83\xf4\xb4\xd7\x69\x31\xbf\ \xf2\xc7\xd4\xae\x33\x82\xa6\xef\xa2\xb3\x3b\x34\x52\xe0\x85\x14\ \xaa\xad\x1c\x3f\x12\xbb\x5f\xee\x9a\x77\x14\x4f\x14\x33\x8a\x4d\ \x1b\x48\xea\x42\xcb\x26\x1b\x15\x0b\xb7\x98\x47\x89\x5b\x4e\xc1\ \xe1\x77\xc5\x32\x1c\x78\xb4\x73\xb7\x23\xcf\x27\x15\xa7\x7a\xc3\ \x7b\x2f\x1e\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x26\x43\ \x8a\x9a\x33\x79\x6d\xf1\x5d\x4c\x36\x3d\x84\x55\xc6\x9e\x2b\x5c\ \x78\x86\x3c\x59\xe0\xa7\xb2\x56\xfb\xc9\x8d\x90\xda\x85\x31\xb2\ \x5c\x3b\x32\x6b\x64\x04\xfe\x69\x8d\x79\x06\xa5\xd5\x57\x71\x75\ \x9d\x4b\x2b\xe5\xae\x81\x2e\x58\xf8\x92\x77\x41\x55\xf0\x57\xd9\ \x59\xdf\x87\xfc\x29\x0e\x8c\xb5\x56\x88\x0e\x2c\xd1\xd4\x56\x64\ \xce\x1c\x9b\xe5\x65\xa1\x98\x86\x1e\x12\xea\x1e\xf4\xea\xa7\x61\ \xf1\x33\x61\xe4\x12\x43\x23\xda\x7a\x82\xbb\x98\x0f\x48\xb4\x66\ \x2e\x3a\xfe\x28\xf5\xf8\x2e\xf6\x13\x17\x06\x25\x99\xe0\x98\x49\ \xe1\xa8\xf2\x5a\x03\xd4\x97\xa4\x62\x5d\xc0\x92\xd7\x27\xcc\xf2\ \x0c\x64\x1a\x7f\xf4\x99\x9f\x84\x12\x6e\x75\x15\x4c\x8d\xd9\x47\ \x25\x4c\x53\x83\x98\x39\xd5\x78\x2f\x49\x0b\x8e\xd5\x90\x57\x3e\ \x46\x01\x5f\x9f\xe6\xb9\xb4\xad\xea\x87\x73\x6a\x8a\x14\x71\x66\ \xb5\xd4\xd5\xaf\xfe\xaa\x29\x75\x5e\x25\x3d\xa5\x15\x70\xd1\xc8\ \x69\xa7\x17\x65\x4c\xa2\x39\x63\xc9\x3c\x6d\x70\xea\x52\x1d\x83\ \x65\x6d\x34\xb4\xf1\x5e\x6d\x08\x42\x10\x84\x21\x08\x42\x10\x84\ \x21\x08\x42\x11\x04\xb2\xc6\x4e\xec\xfc\x96\xb8\x36\x83\xe2\x6d\ \x24\x6d\x4a\xe8\xb3\x18\xc7\x68\x56\x88\xf1\x0d\x3a\x39\x68\x64\ \xdd\x53\x99\x2b\x7a\xa7\xb2\x57\x26\xc5\x2b\x68\x6a\xae\xe7\x07\ \x72\x43\x80\x22\xca\x8e\x16\x50\xe8\xea\x94\xe8\xbd\x94\xb7\xc2\ \xdf\x75\x21\xf8\x7e\x8b\x3b\xe1\x21\x2d\xcc\x77\x36\xab\xb2\x59\ \x63\xd1\xd5\x1d\x0a\x74\x58\x96\x1e\xd7\x07\xfd\xa9\xf9\xd3\x22\ \x99\xec\x78\x7b\x5e\xe0\x46\x84\x1a\x10\xba\xf8\x1f\x48\x31\x51\ \xd1\x93\x65\x9d\xbd\xf6\x3f\x15\xdd\xc0\xed\x6c\x26\x2a\x81\x92\ \x64\x90\xfb\x12\x58\xff\x00\x55\xa7\x12\xee\x0b\xf5\x59\xc3\xb9\ \x27\xe7\x06\x50\x1e\x79\x27\x03\x18\xa1\x22\xfa\xab\xb8\x82\x2a\ \x12\x27\x92\xa0\x83\x5a\x51\x7c\xdf\xd2\x4c\x5c\xb1\xed\xdc\x4e\ \x58\xf3\xc6\xd7\x35\xa4\xfb\xbc\x2d\xfd\x56\x7c\x3e\x36\x19\xbb\ \x32\x02\xe5\xaa\xa0\xe8\x54\xd2\x88\x21\x55\xf7\x55\x69\x70\xef\ \x52\xd7\x82\x34\xa7\x71\x47\x65\x55\xdd\xed\x45\x3a\x39\x45\x5c\ \x38\x54\x55\x79\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\ \x08\x42\x10\x99\x0e\x2e\x58\xb5\xb8\x5a\xf0\xdb\x41\xc0\xee\xe6\ \x14\x3d\x56\xe8\x71\x71\xbd\x95\x6b\x85\x16\xb8\xa6\x70\x6a\xd0\ \xc9\xf8\xae\x9c\xc9\x5b\xec\xb9\x35\xb2\xab\xe7\x08\xcd\x55\x0e\ \x1a\x12\xd5\x57\xe5\x27\x2f\x35\x0e\x65\x6a\x32\xa5\x3a\x3a\xbe\ \x81\x51\xf1\x34\xa4\xbf\x0c\xde\x49\x2f\xc3\xbc\x71\x0b\xa5\x87\ \x3e\x27\x70\xe6\xfe\x17\x76\x56\x88\xa6\x63\xfb\x5c\x07\xbd\x3a\ \xbd\x54\x36\x47\x0d\x17\x57\x64\xed\x39\x04\xcc\x82\x59\x1e\x63\ \x36\x00\x9a\xd0\xae\xf3\x1f\x5a\x78\x85\x4c\x46\x2b\x24\xe6\x97\ \xb0\x4e\x18\xa0\xf6\x6a\x59\xd1\x39\x98\xa0\x1e\x05\x4e\x5a\x54\ \xa8\xc4\x48\xc7\xb0\xbc\x1e\xe5\xf3\xdd\xa5\x2e\xf3\x6a\x62\x9c\ \x01\xb4\xa4\x7f\x15\x96\x19\x21\x8e\x57\x67\xcb\x95\xde\xfb\x35\ \x55\x0f\xc4\xe1\x87\x08\xdf\xb7\xe0\x56\xac\x36\xd0\x8a\x60\xd1\ \x5b\x9e\x4e\xd5\x6b\x69\xae\x87\xe2\xa1\xda\xa8\x50\xeb\xb7\x2f\ \x0a\x8a\xbb\xb3\xa8\xe8\xab\x56\xe5\x50\xec\xdc\x95\x73\xa3\x3a\ \xf3\x68\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\ \x08\x42\xd1\x1e\x3e\x46\x76\x9b\x55\xb6\x1d\xa3\x17\x5a\x78\xad\ \x70\xe2\xa3\x90\x34\xb5\xe0\xad\x4c\x9b\xf1\x27\x36\x74\xc8\xa5\ \xfc\x49\xad\x97\x89\x5e\xad\x3e\xca\x8a\x74\x53\x5a\x1e\xf2\xab\ \x97\x8f\xb9\x4b\xa3\x6a\xab\xa1\x4a\x7c\x2d\x73\x6e\xd4\x97\xe0\ \xdb\x4e\x0e\x14\xa7\x47\x36\x1d\xbe\xfb\x3a\x2a\xb6\x66\x3f\x87\ \xb0\xef\x75\xca\xf5\x73\x4f\x42\x17\xa3\xc0\xe3\x37\xd1\x46\xf1\ \xe6\xb1\x4b\x8d\x27\x17\x29\xe4\x5e\x40\x5a\x19\x8d\xb6\x4e\x5d\ \xfc\xd6\xdc\x3e\x25\x82\x30\x05\xbe\x68\x38\x8a\x0e\xd9\xc9\x5a\ \xaf\x0c\xe7\x07\xe7\x7c\x9c\xde\xe7\xff\x00\xbf\x32\xae\x6c\xaf\ \xc9\x4e\x15\x76\xbe\x8e\x54\xc4\x43\x0c\xdd\xb6\x71\x7b\xed\xd5\ \x5b\x0d\x1b\xa2\x14\x6c\xa4\xb7\x95\x56\xa6\x4b\x9f\x84\x35\xce\ \x01\x5f\x3b\x5c\xdc\xc3\x28\x56\x4b\x77\x7a\x8f\xaa\x3d\x94\x91\ \x2b\x5f\xd9\xd5\x5a\x87\xf1\x2f\x3a\x84\x21\x08\x42\x10\x84\x21\ \x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\xdf\x4d\xd4\xfc\x16\ \xc6\x6d\x17\x37\xb4\xd5\xaa\x2c\x78\x72\xdb\x1e\x20\x1d\x1c\x9c\ \xc9\xaf\xda\x4d\x64\xfa\x27\xb2\x66\x94\xc6\xca\x15\xdb\x97\xd9\ \xa2\x96\x87\x5b\x89\x4e\x61\xcd\x4b\x83\x48\xd7\x44\x31\x83\xc9\ \x44\xcd\x04\x2e\x2e\xd1\x8d\xac\x3b\xc0\x2b\x9b\x87\x2a\xc4\x36\ \x86\xec\xb1\x8e\x61\x96\xbe\xcb\x57\x57\x09\xb4\x21\x8b\x08\x5f\ \x04\x85\xce\x77\x64\x1e\x49\x11\x49\xa3\xb9\xa7\xb6\x67\x07\x0e\ \xd2\xd1\x16\x28\xfb\xca\x31\x58\xa2\xd8\x5f\x57\x65\xaf\x0b\x57\ \x28\xe1\xd8\xd3\x9d\xb5\xf0\xcf\xc2\x90\xdc\xd1\x0c\x8e\x32\x3b\ \xbd\x4a\x9c\xc1\x19\x82\x64\x73\xf0\xe7\x6c\xa0\x0f\x79\xab\x2e\ \xe7\x11\x87\xe2\xc2\xce\x37\x7d\x1c\x9b\x16\xd2\x68\x76\xee\x76\ \x18\x9d\xde\xb7\x36\x46\xbf\x89\xae\x42\x8a\xa5\xe4\x6b\x4f\x0f\ \x0a\x2b\xfc\x2b\xcf\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\ \x08\x42\x10\x84\x21\x08\x42\x10\x84\x45\x34\x91\x76\x4d\x96\x96\ \x6d\x19\x05\x9c\xd0\xb6\x33\x68\xc4\x7b\x66\x8b\x5c\x58\x86\x38\ \x59\xe0\xad\x0c\x9a\x9e\xd2\x6b\x31\x35\x4d\x66\x25\x37\x7a\x1c\ \x99\x14\x8d\x03\x2d\x82\x7d\x41\xd0\xa5\x4a\x45\x32\xf5\x5e\x7f\ \xd2\x29\x72\xc4\xc6\xf5\x34\x5c\x24\xdc\x2f\x25\xd2\xc2\xef\x2b\ \xc4\xb5\xea\xd1\xdd\xd5\x31\x86\x8b\x06\xd6\xc4\x09\x25\x6c\x3a\ \xb2\x23\x59\x7c\x12\xb0\x6e\x98\x92\xd8\x81\x04\x7b\x0f\xec\x79\ \x26\xc5\x88\x64\xad\xac\xcc\x64\x67\xa1\x28\x31\x3f\x3d\x8e\x4f\ \x05\x47\x35\xed\x92\xaf\x35\x0a\x88\x46\xf6\xa3\xd4\xdd\x40\x90\ \x4b\x07\xad\x14\x55\x8a\x19\x23\x1b\xcc\x34\xc0\x83\xc8\xe8\x9d\ \x0e\x3e\x58\x8e\xef\x13\x11\x69\xea\x34\x5a\x99\x3c\x32\x8f\x56\ \xf0\x7c\x14\xbb\xde\x0e\x54\x2d\xbf\x69\x70\xd0\x84\x21\x08\x42\ \x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\ \x85\x1b\xd2\xb4\xc7\x8f\x91\x9d\xa6\xd5\x68\x66\xd2\x60\x65\xc1\ \xaf\x45\xb7\x0f\x8a\x8d\xe2\xad\x70\x29\xcd\xc4\x27\xb6\x6f\xc4\ \x9c\xc9\xdc\x34\x2a\xce\x9b\x37\xb4\xb8\x3e\x90\xbf\x3c\xd1\x8e\ \xad\x2b\x96\xb5\xc0\x37\x21\x6a\xde\x50\x46\x64\xb1\x2a\xe3\x14\ \xd3\x1e\x66\x09\x08\xf0\x4c\x6c\x9b\xb8\xe4\x95\xfa\x33\xd9\x5c\ \x79\x65\x0f\x93\x79\x2d\xa4\x1c\x82\x94\xe1\x30\x96\x7f\x05\x76\ \x4f\x23\x08\x77\xde\xb2\x5d\x23\xe8\x9f\x1c\xb1\xc8\xc3\x1b\x3b\ \x7f\xbb\x91\x50\x36\x21\x3c\x8e\xa6\xe0\xf5\x7f\x35\x59\x19\x2b\ \x05\x64\x35\x09\x5b\xe5\x75\x38\x5c\x40\x12\x16\x95\xd0\x8d\xb1\ \x16\xba\x8d\x17\xe2\x58\xa4\xc1\xc7\x9c\x18\x24\xdd\x49\xdc\x95\ \xf6\x8c\x44\x12\x7a\xe6\xc8\xe1\xdc\xaf\xfe\x25\x0f\xb8\xe5\xcf\ \x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\ \x10\x84\x21\x08\x42\x10\x84\x21\x33\xed\x73\xad\x78\x7d\xa3\xef\ \x36\x85\x6c\x8f\x1d\x0b\xb4\x78\x4c\x76\x2e\x26\x6b\x20\x1e\x6b\ \x93\xb5\xa5\x12\x62\x5c\x47\x21\x45\x99\x46\xf4\xa7\x6f\xfb\xd3\ \xa0\xfb\xd2\xad\xb4\x66\x0e\x31\xc4\x7e\xec\xea\x56\x25\x13\x76\ \x94\xa1\x37\x0b\xc9\x68\x64\xe5\x8d\xa4\x91\x39\xf1\x75\x91\x48\ \x79\x37\xc3\xc9\xff\x00\x52\x39\x52\xa4\x11\x4b\x28\x11\xc4\x62\ \x3d\x69\x44\xbf\xf8\x94\x6f\xfb\xd6\xec\x06\x22\x21\x1b\x9a\xe3\ \x46\xb8\xda\xa9\x72\xc9\x34\x52\x8f\x59\xbd\x07\x95\x11\xf6\x86\ \xe4\xdd\xca\x3d\x59\xb5\x56\x6d\xcc\x1d\x4f\xc5\x25\x08\x42\x10\ \x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\x21\x08\x42\x10\x84\ \x21\x08\x42\x10\x84\x21\x08\xdf\xcb\xef\x21\x08\x42\xdb\x86\xc3\ \xcb\x2c\x62\x50\x62\x6d\x74\xe1\x5a\x86\xcb\x91\xda\xe2\xbf\xd8\ \x14\xff\x00\x82\xb7\xf7\xc7\xf9\x42\x5f\xf8\x4b\xff\x00\xfc\x8f\ \xf6\xa8\x76\xca\x78\x36\x92\x2f\xe4\x58\xb1\x11\x3e\x39\x04\x4e\ \x7e\x60\x52\x50\xa3\x7a\x53\xdd\x29\x6f\xdf\x8d\xea\xac\x9c\x67\ \x7d\x1f\x09\x4b\x42\x6a\x52\x17\xff\xd9\ \x00\x00\x06\xf8\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ \x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ \x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\ \x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\ \x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\ \x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\ \x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\ \x67\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\ \x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\ \x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ \x73\x76\x67\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\ \x22\x31\x2e\x30\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\ \x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3d\x22\x31\x36\x32\x2e\x35\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\ \x73\x76\x67\x31\x30\x31\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\ \x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x37\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ \x20\x64\x3d\x22\x4d\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\ \x33\x2e\x38\x36\x37\x20\x43\x20\x32\x38\x2e\x34\x33\x37\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x31\x32\x35\x2c\ \x31\x35\x33\x2e\x38\x36\x37\x20\x43\x20\x31\x33\x38\x2e\x31\x32\ \x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x33\x38\x2e\x36\x33\ \x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x43\x20\x31\x33\x38\x2e\ \x36\x33\x33\x2c\x33\x33\x2e\x35\x31\x35\x37\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x31\x31\x30\x2e\ \x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\x31\x31\ \x30\x2e\x37\x30\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x32\x38\ \x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\x43\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x30\x2e\x31\x35\x36\x32\x20\ \x32\x38\x2e\x39\x34\x35\x33\x2c\x31\x35\x34\x2e\x38\x38\x33\x20\ \x32\x38\x2e\x34\x33\x37\x35\x2c\x31\x35\x33\x2e\x38\x36\x37\x20\ \x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x31\x2e\ \x30\x31\x35\x36\x32\x2c\x30\x29\x22\x0a\x20\x20\x20\x20\x20\x73\ \x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\ \x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x66\x30\x66\x30\x66\ \x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x30\ \x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\x69\x6c\x6c\x2d\x72\ \x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ \x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\x73\x74\x72\x6f\x6b\ \x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x32\x2e\x35\x3b\x73\x74\x72\ \x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\ \x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ \x3d\x22\x70\x61\x74\x68\x32\x31\x38\x22\x20\x2f\x3e\x0a\x20\x20\ \x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ \x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\x31\x20\ \x43\x20\x31\x30\x38\x2e\x36\x37\x32\x2c\x31\x30\x2e\x36\x36\x34\ \x31\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\x20\ \x43\x20\x31\x30\x39\x2e\x31\x38\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x20\x31\x34\x30\x2e\x36\x36\x34\x2c\x33\x36\x2e\x35\x36\x32\x35\ \x22\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\ \x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x2d\x33\x2e\x30\ \x34\x36\x38\x38\x2c\x33\x2e\x30\x34\x36\x38\x38\x29\x22\x0a\x20\ \x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\ \x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\ \x66\x30\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\ \x69\x74\x79\x3a\x30\x2e\x31\x39\x36\x30\x37\x37\x39\x35\x3b\x66\ \x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\ \x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\x34\x62\x34\x66\x3b\ \x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\x32\ \x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\ \x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ \x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\x20\ \x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x32\x31\x39\x22\x20\ \x2f\x3e\x0a\x20\x20\x3c\x72\x65\x63\x74\x0a\x20\x20\x20\x20\x20\ \x77\x69\x64\x74\x68\x3d\x22\x37\x35\x2e\x35\x39\x33\x33\x36\x31\ \x22\x0a\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x37\ \x35\x2e\x35\x39\x33\x33\x36\x31\x22\x0a\x20\x20\x20\x20\x20\x78\ \x3d\x22\x34\x2e\x31\x31\x33\x39\x33\x30\x32\x22\x0a\x20\x20\x20\ \x20\x20\x79\x3d\x22\x34\x2e\x36\x32\x38\x31\x34\x30\x39\x22\x0a\ \x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\ \x2d\x73\x69\x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\ \x23\x65\x33\x66\x30\x66\x38\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\ \x63\x69\x74\x79\x3a\x30\x2e\x37\x34\x39\x30\x31\x39\x39\x37\x3b\ \x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\ \x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x32\x66\x33\x33\x33\x38\ \x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x36\x2e\ \x32\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\ \x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ \x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x22\x0a\x20\ \x20\x20\x20\x20\x69\x64\x3d\x22\x72\x65\x63\x74\x37\x31\x31\x22\ \x20\x2f\x3e\x0a\x20\x20\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x0a\x20\ \x20\x20\x20\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x35\x33\x2e\x33\ \x32\x30\x33\x2c\x35\x30\x2e\x32\x37\x33\x34\x20\x33\x33\x2e\x37\ \x36\x36\x32\x2c\x34\x30\x2e\x33\x36\x39\x32\x20\x31\x34\x2e\x35\ \x32\x31\x38\x2c\x35\x30\x2e\x38\x36\x32\x35\x20\x31\x37\x2e\x38\ \x39\x38\x37\x2c\x32\x39\x2e\x32\x30\x34\x39\x20\x31\x2e\x39\x37\ \x32\x30\x39\x2c\x31\x34\x2e\x31\x34\x35\x20\x32\x33\x2e\x36\x31\ \x33\x33\x2c\x31\x30\x2e\x36\x36\x34\x31\x20\x33\x33\x2e\x30\x31\ \x34\x35\x2c\x2d\x39\x2e\x31\x33\x36\x38\x32\x20\x34\x33\x2e\x30\ \x31\x32\x36\x2c\x31\x30\x2e\x33\x36\x39\x35\x20\x36\x34\x2e\x37\ \x34\x39\x34\x2c\x31\x33\x2e\x31\x39\x31\x38\x20\x34\x39\x2e\x32\ \x38\x37\x34\x2c\x32\x38\x2e\x37\x32\x38\x33\x20\x35\x33\x2e\x33\ \x32\x30\x33\x2c\x35\x30\x2e\x32\x37\x33\x34\x20\x22\x0a\x20\x20\ \x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\ \x74\x72\x69\x78\x28\x31\x2e\x31\x38\x36\x30\x35\x2c\x30\x2c\x30\ \x2c\x31\x2e\x31\x36\x39\x32\x37\x2c\x32\x2e\x31\x39\x31\x34\x33\ \x33\x2c\x31\x37\x2e\x38\x36\x30\x38\x31\x29\x22\x0a\x20\x20\x20\ \x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x69\ \x7a\x65\x3a\x31\x32\x70\x78\x3b\x66\x69\x6c\x6c\x3a\x23\x37\x66\ \x37\x66\x37\x66\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\ \x76\x65\x6e\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ \x22\x70\x6f\x6c\x79\x67\x6f\x6e\x31\x32\x36\x22\x20\x2f\x3e\x0a\ \x3c\x2f\x73\x76\x67\x3e\x0a\ " qt_resource_name = "\ \x00\x05\ \x00\x6f\xa6\x53\ \x00\x69\ \x00\x63\x00\x6f\x00\x6e\x00\x73\ \x00\x08\ \x00\x47\x57\x67\ \x00\x66\ \x00\x69\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x0b\x21\x02\x07\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x09\ \x03\x65\x8e\x07\ \x00\x63\ \x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x10\ \x05\x5b\x57\x47\ \x00\x6b\ \x00\x61\x00\x64\x00\x64\x00\x72\x00\x65\x00\x73\x00\x73\x00\x62\x00\x6f\x00\x6f\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x08\x03\xc6\xa7\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x6d\x00\x61\x00\x67\x00\x2d\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x08\x37\xc0\xc7\ \x00\x70\ \x00\x72\x00\x65\x00\x76\x00\x69\x00\x6f\x00\x75\x00\x73\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x06\ \x07\xc3\x5a\xc7\ \x00\x75\ \x00\x70\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x08\ \x04\xb2\x55\x47\ \x00\x75\ \x00\x6e\x00\x64\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x08\ \x0c\xf7\x54\x47\ \x00\x6e\ \x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x08\ \x00\x28\x57\x67\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0b\ \x0a\x10\x3b\x87\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x63\x00\x75\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0d\ \x08\x51\xc4\xa7\ \x00\x63\ \x00\x6f\x00\x6e\x00\x66\x00\x69\x00\x67\x00\x75\x00\x72\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x07\ \x06\xa9\x5a\x27\ \x00\x70\ \x00\x64\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x09\ \x06\x98\x8e\xa7\ \x00\x63\ \x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x0b\x0e\x4f\x87\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x63\x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x05\x68\x03\xe7\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x73\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x08\ \x0b\xb2\x55\xc7\ \x00\x72\ \x00\x65\x00\x64\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x08\ \x06\xe1\x57\xa7\ \x00\x64\ \x00\x6f\x00\x77\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0d\ \x0d\xc9\x36\x67\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x70\x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x08\x05\xc6\xa7\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x6d\x00\x61\x00\x67\x00\x2b\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x01\x8b\x94\x67\ \x00\x62\ \x00\x6f\x00\x6f\x00\x6b\x00\x72\x00\x65\x00\x73\x00\x74\x00\x2e\x00\x6a\x00\x70\x00\x67\ \x00\x07\ \x04\xca\x5a\x27\ \x00\x6e\ \x00\x65\x00\x77\x00\x2e\x00\x73\x00\x76\x00\x67\ " qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\x02\ \x00\x00\x00\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xbf\ \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x02\x20\x00\x00\x00\x00\x00\x01\x00\x00\x70\x0d\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x2e\ \x00\x00\x00\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x27\x3e\ \x00\x00\x02\x3e\x00\x00\x00\x00\x00\x01\x00\x00\xad\x4c\ \x00\x00\x00\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x19\xa6\ \x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x56\xd2\ \x00\x00\x01\x62\x00\x00\x00\x00\x00\x01\x00\x00\x45\xa3\ \x00\x00\x01\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x91\ \x00\x00\x01\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x60\x05\ \x00\x00\x00\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x24\x85\ \x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x0e\ \x00\x00\x02\x02\x00\x00\x00\x00\x00\x01\x00\x00\x6a\xec\ \x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x22\x56\ \x00\x00\x01\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x05\ \x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x00\x32\x4e\ \x00\x00\x01\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x4e\xb3\ \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x03\x3b\ \x00\x00\x01\xb6\x00\x00\x00\x00\x00\x01\x00\x00\x5b\xfb\ \x00\x00\x00\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x90\ \x00\x00\x01\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x62\x33\ " def qInitResources(): QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() rst2pdf-0.93/gui/Ui_pdf.py0000664000175000017500000000557211260431161015247 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'pdf.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.verticalLayout = QtGui.QVBoxLayout(Form) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName("verticalLayout") self.scroll = QtGui.QScrollArea(Form) self.scroll.setFrameShape(QtGui.QFrame.NoFrame) self.scroll.setWidgetResizable(True) self.scroll.setObjectName("scroll") self.scrollAreaWidgetContents = QtGui.QWidget(self.scroll) self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 400, 300)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.scroll.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.scroll) self.zoomin = QtGui.QAction(Form) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/viewmag+.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.zoomin.setIcon(icon) self.zoomin.setObjectName("zoomin") self.zoomout = QtGui.QAction(Form) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/icons/viewmag-.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.zoomout.setIcon(icon1) self.zoomout.setObjectName("zoomout") self.next = QtGui.QAction(Form) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/icons/next.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.next.setIcon(icon2) self.next.setObjectName("next") self.previous = QtGui.QAction(Form) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/icons/previous.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.previous.setIcon(icon3) self.previous.setObjectName("previous") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.zoomin.setText(QtGui.QApplication.translate("Form", "Zoom In", None, QtGui.QApplication.UnicodeUTF8)) self.zoomout.setText(QtGui.QApplication.translate("Form", "Zoom Out", None, QtGui.QApplication.UnicodeUTF8)) self.next.setText(QtGui.QApplication.translate("Form", "Next Page", None, QtGui.QApplication.UnicodeUTF8)) self.previous.setText(QtGui.QApplication.translate("Form", "Previous Page", None, QtGui.QApplication.UnicodeUTF8)) import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/Ui_pagetemplates.py0000664000175000017500000002120111260431161017314 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'pagetemplates.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(605, 375) self.verticalLayout_4 = QtGui.QVBoxLayout(Form) self.verticalLayout_4.setMargin(0) self.verticalLayout_4.setObjectName("verticalLayout_4") self.splitter = QtGui.QSplitter(Form) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.layoutWidget = QtGui.QWidget(self.splitter) self.layoutWidget.setObjectName("layoutWidget") self.formLayout = QtGui.QFormLayout(self.layoutWidget) self.formLayout.setObjectName("formLayout") self.label_2 = QtGui.QLabel(self.layoutWidget) self.label_2.setObjectName("label_2") self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_2) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.templates = QtGui.QComboBox(self.layoutWidget) self.templates.setObjectName("templates") self.horizontalLayout_2.addWidget(self.templates) self.newTemplate = QtGui.QToolButton(self.layoutWidget) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/new.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.newTemplate.setIcon(icon) self.newTemplate.setObjectName("newTemplate") self.horizontalLayout_2.addWidget(self.newTemplate) self.delTemplate = QtGui.QToolButton(self.layoutWidget) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/icons/close.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.delTemplate.setIcon(icon1) self.delTemplate.setObjectName("delTemplate") self.horizontalLayout_2.addWidget(self.delTemplate) self.formLayout.setLayout(0, QtGui.QFormLayout.FieldRole, self.horizontalLayout_2) self.label = QtGui.QLabel(self.layoutWidget) self.label.setObjectName("label") self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.label) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.frames = QtGui.QComboBox(self.layoutWidget) self.frames.setObjectName("frames") self.horizontalLayout.addWidget(self.frames) self.newFrame = QtGui.QToolButton(self.layoutWidget) self.newFrame.setIcon(icon) self.newFrame.setObjectName("newFrame") self.horizontalLayout.addWidget(self.newFrame) self.delFrame = QtGui.QToolButton(self.layoutWidget) self.delFrame.setIcon(icon1) self.delFrame.setObjectName("delFrame") self.horizontalLayout.addWidget(self.delFrame) self.formLayout.setLayout(1, QtGui.QFormLayout.FieldRole, self.horizontalLayout) self.label_3 = QtGui.QLabel(self.layoutWidget) self.label_3.setObjectName("label_3") self.formLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_3) self.top = QtGui.QLineEdit(self.layoutWidget) self.top.setObjectName("top") self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.top) self.label_4 = QtGui.QLabel(self.layoutWidget) self.label_4.setObjectName("label_4") self.formLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_4) self.left = QtGui.QLineEdit(self.layoutWidget) self.left.setObjectName("left") self.formLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.left) self.label_5 = QtGui.QLabel(self.layoutWidget) self.label_5.setObjectName("label_5") self.formLayout.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_5) self.width = QtGui.QLineEdit(self.layoutWidget) self.width.setObjectName("width") self.formLayout.setWidget(4, QtGui.QFormLayout.FieldRole, self.width) self.label_6 = QtGui.QLabel(self.layoutWidget) self.label_6.setObjectName("label_6") self.formLayout.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_6) self.height = QtGui.QLineEdit(self.layoutWidget) self.height.setObjectName("height") self.formLayout.setWidget(5, QtGui.QFormLayout.FieldRole, self.height) self.header = QtGui.QCheckBox(self.layoutWidget) self.header.setObjectName("header") self.formLayout.setWidget(6, QtGui.QFormLayout.FieldRole, self.header) self.footer = QtGui.QCheckBox(self.layoutWidget) self.footer.setObjectName("footer") self.formLayout.setWidget(7, QtGui.QFormLayout.FieldRole, self.footer) self.label_7 = QtGui.QLabel(self.layoutWidget) self.label_7.setObjectName("label_7") self.formLayout.setWidget(8, QtGui.QFormLayout.LabelRole, self.label_7) self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.background = QtGui.QLineEdit(self.layoutWidget) self.background.setObjectName("background") self.horizontalLayout_3.addWidget(self.background) self.selectFile = QtGui.QToolButton(self.layoutWidget) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/icons/file.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.selectFile.setIcon(icon2) self.selectFile.setObjectName("selectFile") self.horizontalLayout_3.addWidget(self.selectFile) self.formLayout.setLayout(8, QtGui.QFormLayout.FieldRole, self.horizontalLayout_3) self.verticalLayout_4.addWidget(self.splitter) self.label_2.setBuddy(self.templates) self.label_3.setBuddy(self.top) self.label_4.setBuddy(self.left) self.label_5.setBuddy(self.width) self.label_6.setBuddy(self.height) self.label_7.setBuddy(self.background) self.retranslateUi(Form) QtCore.QObject.connect(self.top, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.left, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.width, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.height, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QObject.connect(self.header, QtCore.SIGNAL("toggled(bool)"), Form.applyChanges) QtCore.QObject.connect(self.footer, QtCore.SIGNAL("toggled(bool)"), Form.applyChanges) QtCore.QObject.connect(self.background, QtCore.SIGNAL("textEdited(QString)"), Form.applyChanges) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("Form", "Page Template:", None, QtGui.QApplication.UnicodeUTF8)) self.newTemplate.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.delTemplate.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "Frame:", None, QtGui.QApplication.UnicodeUTF8)) self.newFrame.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.delFrame.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.label_3.setText(QtGui.QApplication.translate("Form", "Top:", None, QtGui.QApplication.UnicodeUTF8)) self.label_4.setText(QtGui.QApplication.translate("Form", "Left:", None, QtGui.QApplication.UnicodeUTF8)) self.label_5.setText(QtGui.QApplication.translate("Form", "Width:", None, QtGui.QApplication.UnicodeUTF8)) self.label_6.setText(QtGui.QApplication.translate("Form", "Height:", None, QtGui.QApplication.UnicodeUTF8)) self.header.setText(QtGui.QApplication.translate("Form", "Show Header", None, QtGui.QApplication.UnicodeUTF8)) self.footer.setText(QtGui.QApplication.translate("Form", "Show Footer", None, QtGui.QApplication.UnicodeUTF8)) self.label_7.setText(QtGui.QApplication.translate("Form", "Background:", None, QtGui.QApplication.UnicodeUTF8)) self.selectFile.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/configdialog.ui0000664000175000017500000001705511260417775016471 0ustar ralsinaralsina Dialog 0 0 993 455 Bookrest Settings :/icons/kaddressbook.svg:/icons/kaddressbook.svg Qt::Horizontal 0 0 180 16777215 5 0 QFrame::NoFrame true 0 0 241 399 0 Qt::Horizontal 40 20 Close 0 Preview 0 true 0 0 532 405 3 0 3 0 ... :/icons/viewmag+.svg:/icons/viewmag+.svg ... :/icons/viewmag-.svg:/icons/viewmag-.svg Qt::Horizontal 40 20 0 0 QFrame::NoFrame Qt::Vertical 20 40 Output 0 pushButton_2 clicked() Dialog accept() 506 449 543 429 rst2pdf-0.93/gui/Ui_about.py0000664000175000017500000002463211260431161015606 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'about.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(493, 384) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/kaddressbook.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) Dialog.setWindowIcon(icon) self.verticalLayout = QtGui.QVBoxLayout(Dialog) self.verticalLayout.setObjectName("verticalLayout") self.textBrowser = QtGui.QTextBrowser(Dialog) self.textBrowser.setStyleSheet("""background-image: url(); background-color: rgba(255, 255, 255, 50);""") self.textBrowser.setFrameShape(QtGui.QFrame.NoFrame) self.textBrowser.setOpenExternalLinks(True) self.textBrowser.setObjectName("textBrowser") self.verticalLayout.addWidget(self.textBrowser) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.pushButton = QtGui.QPushButton(Dialog) self.pushButton.setStyleSheet("background-image: url();") self.pushButton.setObjectName("pushButton") self.horizontalLayout.addWidget(self.pushButton) self.verticalLayout.addLayout(self.horizontalLayout) self.retranslateUi(Dialog) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), Dialog.accept) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "About Bookrest", None, QtGui.QApplication.UnicodeUTF8)) Dialog.setStyleSheet(QtGui.QApplication.translate("Dialog", "background-image: url(:/icons/bookrest.jpg);", None, QtGui.QApplication.UnicodeUTF8)) self.textBrowser.setHtml(QtGui.QApplication.translate("Dialog", "\n" "\n" "

    Bookrest

    \n" "

    \n" "

    A tool to edit reStructured Text with included PDF generation and previewing.

    \n" "

    \n" "

    Credits

    \n" "

    \n" "

    * Roberto Alsina <ralsina@netmanagers.com.ar>

    \n" "

    * Bookrest image by truds9 (used with permission)

    \n" "

    \n" "

    Thanks

    \n" "

    \n" "

    Bookrest couldn\'t exist without these projects:

    \n" "

    \n" "

    * Python poppler-qt4 bindings by Rajeev J Sebastian

    \n" "

    * PyQt by Riverbank Computing

    \n" "

    * Qt by Nokia

    \n" "

    * Pygments by Armin Ronacher and others

    \n" "

    * Python by The Python Software Foundation

    \n" "

    * Simplejson by Bob Ippolito

    \n" "

    * Python processing by R Oudkerk

    \n" "

    * Beautiful Soup by Leonard Richardson

    \n" "

    * rst2pdf by Roberto Alsina Nicolas Laurance, Christoph Zwerschke, Yasushi Masuda, Josh VanderLinden.

    \n" "

    \n" "

    License

    \n" "

    \n" "

    Copyright (c) 2009 Roberto Alsina

    \n" "

    \n" "

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    \n" "

    \n" "

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    \n" "

    \n" "

    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    \n" "

    \n" "

    ", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("Dialog", "Close", None, QtGui.QApplication.UnicodeUTF8)) import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Dialog = QtGui.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/pdf.ui0000664000175000017500000000406011256310045014570 0ustar ralsinaralsina Form 0 0 400 300 Form 0 QFrame::NoFrame true 0 0 400 300 :/icons/viewmag+.svg:/icons/viewmag+.svg Zoom In :/icons/viewmag-.svg:/icons/viewmag-.svg Zoom Out :/icons/next.svg:/icons/next.svg Next Page :/icons/previous.svg:/icons/previous.svg Previous Page rst2pdf-0.93/gui/Ui_configdialog.py0000664000175000017500000001733411260431161017122 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'configdialog.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(993, 455) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/kaddressbook.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) Dialog.setWindowIcon(icon) self.verticalLayout_6 = QtGui.QVBoxLayout(Dialog) self.verticalLayout_6.setObjectName("verticalLayout_6") self.splitter = QtGui.QSplitter(Dialog) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.pagelist = QtGui.QListWidget(self.splitter) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.pagelist.sizePolicy().hasHeightForWidth()) self.pagelist.setSizePolicy(sizePolicy) self.pagelist.setMaximumSize(QtCore.QSize(180, 16777215)) self.pagelist.setObjectName("pagelist") self.layoutWidget = QtGui.QWidget(self.splitter) self.layoutWidget.setObjectName("layoutWidget") self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget) self.verticalLayout.setObjectName("verticalLayout") self.container = QtGui.QScrollArea(self.layoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(5) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.container.sizePolicy().hasHeightForWidth()) self.container.setSizePolicy(sizePolicy) self.container.setFrameShape(QtGui.QFrame.NoFrame) self.container.setWidgetResizable(True) self.container.setObjectName("container") self.scrollAreaWidgetContents = QtGui.QWidget(self.container) self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 241, 399)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.verticalLayout_3 = QtGui.QVBoxLayout(self.scrollAreaWidgetContents) self.verticalLayout_3.setMargin(0) self.verticalLayout_3.setObjectName("verticalLayout_3") self.layout = QtGui.QVBoxLayout() self.layout.setObjectName("layout") self.verticalLayout_3.addLayout(self.layout) self.container.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.container) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.pushButton_2 = QtGui.QPushButton(self.layoutWidget) self.pushButton_2.setObjectName("pushButton_2") self.horizontalLayout.addWidget(self.pushButton_2) self.verticalLayout.addLayout(self.horizontalLayout) self.tabWidget = QtGui.QTabWidget(self.splitter) self.tabWidget.setObjectName("tabWidget") self.tab = QtGui.QWidget() self.tab.setObjectName("tab") self.verticalLayout_2 = QtGui.QVBoxLayout(self.tab) self.verticalLayout_2.setMargin(0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.scrollArea = QtGui.QScrollArea(self.tab) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents_2 = QtGui.QWidget(self.scrollArea) self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 532, 405)) self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2") self.verticalLayout_4 = QtGui.QVBoxLayout(self.scrollAreaWidgetContents_2) self.verticalLayout_4.setSpacing(3) self.verticalLayout_4.setContentsMargins(0, 3, 0, -1) self.verticalLayout_4.setObjectName("verticalLayout_4") self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.zoomin = QtGui.QToolButton(self.scrollAreaWidgetContents_2) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/icons/viewmag+.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.zoomin.setIcon(icon1) self.zoomin.setObjectName("zoomin") self.horizontalLayout_4.addWidget(self.zoomin) self.zoomout = QtGui.QToolButton(self.scrollAreaWidgetContents_2) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/icons/viewmag-.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.zoomout.setIcon(icon2) self.zoomout.setObjectName("zoomout") self.horizontalLayout_4.addWidget(self.zoomout) spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem1) self.verticalLayout_4.addLayout(self.horizontalLayout_4) self.preview = QtGui.QLabel(self.scrollAreaWidgetContents_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.preview.sizePolicy().hasHeightForWidth()) self.preview.setSizePolicy(sizePolicy) self.preview.setFrameShape(QtGui.QFrame.NoFrame) self.preview.setObjectName("preview") self.verticalLayout_4.addWidget(self.preview) spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_4.addItem(spacerItem2) self.scrollArea.setWidget(self.scrollAreaWidgetContents_2) self.verticalLayout_2.addWidget(self.scrollArea) self.tabWidget.addTab(self.tab, "") self.tab_2 = QtGui.QWidget() self.tab_2.setObjectName("tab_2") self.verticalLayout_5 = QtGui.QVBoxLayout(self.tab_2) self.verticalLayout_5.setMargin(0) self.verticalLayout_5.setObjectName("verticalLayout_5") self.snippet = QtGui.QTextBrowser(self.tab_2) self.snippet.setObjectName("snippet") self.verticalLayout_5.addWidget(self.snippet) self.tabWidget.addTab(self.tab_2, "") self.verticalLayout_6.addWidget(self.splitter) self.retranslateUi(Dialog) self.tabWidget.setCurrentIndex(0) QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), Dialog.accept) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Bookrest Settings", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate("Dialog", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.zoomin.setText(QtGui.QApplication.translate("Dialog", "...", None, QtGui.QApplication.UnicodeUTF8)) self.zoomout.setText(QtGui.QApplication.translate("Dialog", "...", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QtGui.QApplication.translate("Dialog", "Preview", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QtGui.QApplication.translate("Dialog", "Output", None, QtGui.QApplication.UnicodeUTF8)) import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Dialog = QtGui.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) rst2pdf-0.93/gui/about.ui0000664000175000017500000002635411257204354015151 0ustar ralsinaralsina Dialog 0 0 493 384 About Bookrest :/icons/kaddressbook.svg:/icons/kaddressbook.svg background-image: url(:/icons/bookrest.jpg); background-image: url(); background-color: rgba(255, 255, 255, 50); QFrame::NoFrame <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Droid Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Bookrest</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A tool to edit reStructured Text with included PDF generation and previewing.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Credits</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">* Roberto Alsina &lt;<a href="mailto:ralsina@netmanagers.com.ar"><span style=" text-decoration: underline; color:#0000ff;">ralsina@netmanagers.com.ar</span></a>&gt;</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">* Bookrest image by <a href="http://www.flickr.com/photos/truds09/2738739779/"><span style=" text-decoration: underline; color:#0000ff;">truds9</span></a> (used with permission)</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Thanks</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bookrest couldn't exist without these projects:</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">* <span style=" font-weight:600;">Python poppler-qt4 bindings </span>by Rajeev J Sebastian</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">* <span style=" font-weight:600;">PyQt</span> by Riverbank Computing</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">* <span style=" font-weight:600;">Qt</span> by Nokia</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">* <span style=" font-weight:600;">Pygments</span> by Armin Ronacher and others</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600;">* Python by </span><span style=" font-family:'Sans Serif';">The Python Software Foundation</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600;">* Simplejson</span><span style=" font-family:'Sans Serif';"> by Bob Ippolito</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif'; font-weight:600;">* Python processing </span><span style=" font-family:'Sans Serif';">by R Oudkerk</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Bitstream Vera Sans'; font-weight:600;">* Beautiful Soup</span><span style=" font-family:'Bitstream Vera Sans';"> by Leonard Richardson</span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">* rst2pdf </span>by Roberto Alsina Nicolas Laurance, Christoph Zwerschke, Yasushi Masuda, Josh VanderLinden.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">License</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Copyright (c) 2009 Roberto Alsina</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> true Qt::Horizontal 40 20 background-image: url(); Close pushButton clicked() Dialog accept() 351 273 402 228 rst2pdf-0.93/gui/highlighter.py0000664000175000017500000001021111256230677016337 0ustar ralsinaralsina# -*- coding: utf-8 -*- import sys import re from PyQt4 import QtCore, QtGui from pygments import highlight from pygments.lexers import * from pygments.formatter import Formatter import time # Copyright (C) 2008 Christophe Kibleur # # This file is part of WikiParser (http://thewikiblog.appspot.com/). # def hex2QColor(c): r=int(c[0:2],16) g=int(c[2:4],16) b=int(c[4:6],16) return QtGui.QColor(r,g,b) class QFormatter(Formatter): def __init__(self): Formatter.__init__(self) self.data=[] # Create a dictionary of text styles, indexed # by pygments token names, containing QTextCharFormat # instances according to pygments' description # of each style self.styles={} for token, style in self.style: qtf=QtGui.QTextCharFormat() if style['color']: qtf.setForeground(hex2QColor(style['color'])) if style['bgcolor']: qtf.setBackground(hex2QColor(style['bgcolor'])) if style['bold']: qtf.setFontWeight(QtGui.QFont.Bold) if style['italic']: qtf.setFontItalic(True) if style['underline']: qtf.setFontUnderline(True) self.styles[str(token)]=qtf def format(self, tokensource, outfile): global styles # We ignore outfile, keep output in a buffer self.data=[] # Just store a list of styles, one for each character # in the input. Obviously a smarter thing with # offsets and lengths is a good idea! for ttype, value in tokensource: l=len(value) t=str(ttype) self.data.extend([self.styles[t],]*l) class Highlighter(QtGui.QSyntaxHighlighter): def __init__(self, parent, mode): QtGui.QSyntaxHighlighter.__init__(self, parent) self.tstamp=time.time() # Keep the formatter and lexer, initializing them # may be costly. self.formatter=QFormatter() self.lexer=get_lexer_by_name(mode) self.enabled=True # Connect the document's contentChanged to our # reparse slot self.connect(parent,QtCore.SIGNAL("contentsChanged()"), self.reparse) self.reparse() def reparse(self): # The \n is not really needed, but sometimes # you are in an empty last block, so your position is # **after** the end of the document. text=unicode(self.document().toPlainText())+'\n' # Yes, re-highlight the whole document. # There **must** be some optimizacion possibilities # but it seems fast enough. highlight(text,self.lexer,self.formatter) def highlightBlock(self, text): """Takes a block, applies format to the document. according to what's in it. """ if not self.enabled: return # I need to know where in the document we are, # because our formatting info is global to # the document cb = self.currentBlock() p = cb.position() # Just apply the formatting to this block. # For titles, it may be necessary to backtrack # and format a couple of blocks **earlier**. for i in range(len(unicode(text))): try: self.setFormat(i,1,self.formatter.data[p+i]) except IndexError: pass # I may need to do something about this being called # too quickly. self.tstamp=time.time() if __name__ == "__main__": app = QtGui.QApplication(sys.argv) rst = QtGui.QPlainTextEdit() rst.setWindowTitle('reSt') hl=Highlighter(rst.document(),"rest") rst.show() python = QtGui.QPlainTextEdit() python.setWindowTitle('python') hl=Highlighter(python.document(),"python") python.show() sys.exit(app.exec_())rst2pdf-0.93/gui/main.ui0000664000175000017500000004151411265474772014772 0ustar ralsinaralsina MainWindow 0 0 574 601 Bookrest :/icons/kaddressbook.svg:/icons/kaddressbook.svg 3 0 0 0 Text 0 DejaVu Sans Mono QFrame::NoFrame QFrame::Plain 0 StyleSheet 0 DejaVu Sans Mono QFrame::NoFrame 0 0 574 32 File View Edit Help toolBar TopToolBarArea false toolBar_2 TopToolBarArea false :/icons/pdf.svg:/icons/pdf.svg PDF Preview 2 0 0 QLayout::SetNoConstraint 0 toolBar_2 TopToolBarArea false toolBar_2 false Qt::BottomToolBarArea false BottomToolBarArea false Document Structure 1 0 QAbstractItemView::NoEditTriggers false true false true false Section Line AlignLeft|AlignVCenter :/icons/fileopen.svg:/icons/fileopen.svg Open Text Open Text Ctrl+O :/icons/fileopen.svg:/icons/fileopen.svg Open Style Open Style :/icons/pdf.svg:/icons/pdf.svg Render :/icons/filesave.svg:/icons/filesave.svg Save Text Save Text Ctrl+S :/icons/filesave.svg:/icons/filesave.svg Save Style Save Style :/icons/pdf.svg:/icons/pdf.svg Save PDF Save PDF :/icons/filesave.svg:/icons/filesave.svg Save Text As Save Text :/icons/filesave.svg:/icons/filesave.svg Save Style As Save Style :/icons/pdf.svg:/icons/pdf.svg Save PDF As Save PDF false :/icons/undo.svg:/icons/undo.svg Undo Ctrl+Z false :/icons/redo.svg:/icons/redo.svg Redo Ctrl+Shift+Z false :/icons/editcut.svg:/icons/editcut.svg Cut Ctrl+X false :/icons/editcopy.svg:/icons/editcopy.svg Copy Ctrl+C false :/icons/editpaste.svg:/icons/editpaste.svg Paste Ctrl+V false :/icons/undo.svg:/icons/undo.svg Undo Ctrl+Z false :/icons/redo.svg:/icons/redo.svg Redo Ctrl+Shift+Z false :/icons/editcut.svg:/icons/editcut.svg Cut Ctrl+X false :/icons/editcopy.svg:/icons/editcopy.svg Copy Ctrl+C false :/icons/editpaste.svg:/icons/editpaste.svg Paste Ctrl+V :/icons/find.svg:/icons/find.svg Find Ctrl+F About Bookrest Test Action :/icons/configure.svg:/icons/configure.svg Settings CodeEditor QPlainTextEdit
    codeeditor
    text tabs style tabChanged(int)
    rst2pdf-0.93/gui/configdialog.py0000664000175000017500000000663711256303040016470 0ustar ralsinaralsina# -*- coding: utf-8 -*- '''A completely generic, data-driven, configuration dialog''' class ConfigDialog(QtGui.QDialog): def __init__(self, parent): QtGui.QDialog.__init__(self, parent) # Set up the UI from designer self.ui=UI_ConfigDialog() self.ui.setupUi(self) pages=[] sections=[] self.values={} for sectionName, options in config.options: # Create a page widget/layout for this section: page=QtGui.QScrollArea() innerpage=QtGui.QFrame() layout=QtGui.QGridLayout() row=-2 for optionName, definition in options: row+=2 if definition[0]=='bool': cb=QtGui.QCheckBox(optionName) cb.setChecked(config.getValue(sectionName, optionName, definition[1])) layout.addWidget(cb, row, 0, 1, 2) self.values[sectionName+'/'+optionName]=[cb, lambda(cb): cb.isChecked()] elif definition[0]=='int': label=QtGui.QLabel(optionName+":") label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter) spin=QtGui.QSpinBox() if definition[3] is not None: spin.setMinimum(definition[3]) else: spin.setMinimum(-99999) if definition[4] is not None: spin.setMaximum(definition[4]) else: spin.setMaximum(99999) spin.setValue(config.getValue(sectionName, optionName, definition[1])) layout.addWidget(label, row, 0, 1, 1) layout.addWidget(spin, row, 1, 1, 1) self.values[sectionName+'/'+optionName]=[spin, lambda(spin): spin.value()] elif definition[0]=='string': label=QtGui.QLabel(optionName+":") label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter) text=QtGui.QLineEdit() text.setText(unicode(config.getValue(sectionName, optionName, definition[1]))) layout.addWidget(label, row, 0, 1, 1) layout.addWidget(text, row, 1, 1, 1) self.values[sectionName+'/'+optionName]=[text, lambda(text): unicode(text.text())] elif definition[0]=='password': label=QtGui.QLabel(optionName+":") label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter) text=QtGui.QLineEdit() text.setEchoMode(QtGui.QLineEdit.Password) text.setText(unicode(config.getValue(sectionName, optionName, definition[1]))) layout.addWidget(label, row, 0, 1, 1) layout.addWidget(text, row, 1, 1, 1) self.values[sectionName+'/'+optionName]=[text, lambda(text): unicode(text.text())] help=QtGui.QLabel(definition[2]) help.setWordWrap(True) layout.addWidget(help, row, 2, 1, 1) separator=QtGui.QFrame() separator.setFrameStyle(QtGui.QFrame.HLine|QtGui.QFrame.Plain) layout.addWidget(separator, row+1, 0, 1, 3) innerpage.setLayout(layout) innerpage.adjustSize() page.resize(QtCore.QSize(innerpage.width()+5, page.height())) page.setWidget(innerpage) pages.append(page) sections.append(sectionName) for page, name in zip(pages,sections) : # Make a tab out of it self.ui.tabs.addTab(page, name) self.ui.tabs.setCurrentIndex(1) self.ui.tabs.removeTab(0) def accept(self): for k in self.values: sec, opt=k.split('/') widget, l = self.values[k] config.setValue(sec, opt, l(widget)) QtGui.QDialog.accept(self) rst2pdf-0.93/gui/pagesetup.ui0000664000175000017500000002327711260740467016041 0ustar ralsinaralsina Form 0 0 367 360 Form First Page Template: firstTemplate Page Size: size Custom A0 A1 A2 A3 A4 A5 A6 B0 B1 B2 B3 B4 B5 B6 letter legal 11"x17" Height: height Width: width Top Margin: margin_top Bottom Margin: margin_bottom Left Margin: margin_left Right Margin: margin_right Header Margin: spacing_header Footer Margin: spacing_footer Gutter Margin: margin_gutter firstTemplate currentIndexChanged(QString) Form applyChanges() 185 19 316 21 size currentIndexChanged(QString) Form applyChanges() 211 49 271 38 height textEdited(QString) Form applyChanges() 338 81 365 71 width textEdited(QString) Form applyChanges() 345 113 367 101 margin_top textEdited(QString) Form applyChanges() 336 141 367 137 margin_bottom textEdited(QString) Form applyChanges() 351 171 370 169 margin_left textEdited(QString) Form applyChanges() 328 201 367 202 margin_right textEdited(QString) Form applyChanges() 328 235 375 228 spacing_header textEdited(QString) Form applyChanges() 334 258 385 257 spacing_footer textEdited(QString) Form applyChanges() 323 292 367 292 margin_gutter textEdited(QString) Form applyChanges() 336 331 366 331 applyChanges() rst2pdf-0.93/gui/README0000664000175000017500000000055611265226260014353 0ustar ralsinaralsinaRequirements: PyQt4, poppler-qt4, rst2pdf, pygments, simplejson (if your python < 2.6). Building instructions: 1) Enter the pypoppler folder 2) edit configure.py, specifically, I had to change makefile.extra_include_dirs so it could find the popplerqt4 and Qt includes. 3) run configure.py && make 4) Leave the pypoppler folder, and run python main.py rst2pdf-0.93/gui/Ui_searchwidget.py0000664000175000017500000000644411260431161017146 0ustar ralsinaralsina# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'searchwidget.ui' # # by: PyQt4 UI code generator 4.5.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(369, 32) self.horizontalLayout = QtGui.QHBoxLayout(Form) self.horizontalLayout.setMargin(2) self.horizontalLayout.setObjectName("horizontalLayout") self.close = QtGui.QToolButton(Form) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/close.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.close.setIcon(icon) self.close.setAutoRaise(True) self.close.setObjectName("close") self.horizontalLayout.addWidget(self.close) self.label = QtGui.QLabel(Form) self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) self.text = QtGui.QLineEdit(Form) self.text.setObjectName("text") self.horizontalLayout.addWidget(self.text) self.previous = QtGui.QToolButton(Form) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/icons/previous.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.previous.setIcon(icon1) self.previous.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.previous.setAutoRaise(True) self.previous.setObjectName("previous") self.horizontalLayout.addWidget(self.previous) self.next = QtGui.QToolButton(Form) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/icons/next.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.next.setIcon(icon2) self.next.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.next.setAutoRaise(True) self.next.setObjectName("next") self.horizontalLayout.addWidget(self.next) self.matchCase = QtGui.QCheckBox(Form) self.matchCase.setObjectName("matchCase") self.horizontalLayout.addWidget(self.matchCase) self.label.setBuddy(self.text) self.retranslateUi(Form) QtCore.QObject.connect(self.text, QtCore.SIGNAL("returnPressed()"), self.next.animateClick) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.close.setText(QtGui.QApplication.translate("Form", "...", None, QtGui.QApplication.UnicodeUTF8)) self.close.setShortcut(QtGui.QApplication.translate("Form", "Esc", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("Form", "&Find:", None, QtGui.QApplication.UnicodeUTF8)) self.previous.setText(QtGui.QApplication.translate("Form", "&Previous", None, QtGui.QApplication.UnicodeUTF8)) self.next.setText(QtGui.QApplication.translate("Form", "&Next", None, QtGui.QApplication.UnicodeUTF8)) self.matchCase.setText(QtGui.QApplication.translate("Form", "&Match Case", None, QtGui.QApplication.UnicodeUTF8)) import icons_rc if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) rst2pdf-0.93/bootstrap.py0000664000175000017500000000670211275303112015266 0ustar ralsinaralsina############################################################################## # # Copyright (c) 2006 Zope Corporation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Bootstrap a buildout-based project Simply run this script in a directory containing a buildout.cfg. The script accepts buildout command-line options, so you can use the -c option to specify an alternate configuration file. $Id: bootstrap.py 1458 2009-11-07 14:38:02Z roberto.alsina $ """ import os, shutil, sys, tempfile, urllib2 from optparse import OptionParser tmpeggs = tempfile.mkdtemp() is_jython = sys.platform.startswith('java') # parsing arguments parser = OptionParser() parser.add_option("-v", "--version", dest="version", help="use a specific zc.buildout version") parser.add_option("-d", "--distribute", action="store_true", dest="distribute", default=False, help="Use Disribute rather than Setuptools.") options, args = parser.parse_args() if options.version is not None: VERSION = '==%s' % options.version else: VERSION = '' USE_DISTRIBUTE = options.distribute args = args + ['bootstrap'] to_reload = False try: import pkg_resources if not hasattr(pkg_resources, '_distribute'): to_reload = True raise ImportError except ImportError: ez = {} if USE_DISTRIBUTE: exec urllib2.urlopen('http://python-distribute.org/distribute_setup.py' ).read() in ez ez['use_setuptools'](to_dir=tmpeggs, download_delay=0, no_fake=True) else: exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' ).read() in ez ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) if to_reload: reload(pkg_resources) else: import pkg_resources if sys.platform == 'win32': def quote(c): if ' ' in c: return '"%s"' % c # work around spawn lamosity on windows else: return c else: def quote (c): return c cmd = 'from setuptools.command.easy_install import main; main()' ws = pkg_resources.working_set if USE_DISTRIBUTE: requirement = 'distribute' else: requirement = 'setuptools' if is_jython: import subprocess assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd', quote(tmpeggs), 'zc.buildout' + VERSION], env=dict(os.environ, PYTHONPATH= ws.find(pkg_resources.Requirement.parse(requirement)).location ), ).wait() == 0 else: assert os.spawnle( os.P_WAIT, sys.executable, quote (sys.executable), '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout' + VERSION, dict(os.environ, PYTHONPATH= ws.find(pkg_resources.Requirement.parse(requirement)).location ), ) == 0 ws.add_entry(tmpeggs) ws.require('zc.buildout' + VERSION) import zc.buildout.buildout zc.buildout.buildout.main(args) shutil.rmtree(tmpeggs)