diff options
21 files changed, 2287 insertions, 0 deletions
diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components-small.png b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components-small.png Binary files differnew file mode 100644 index 000000000..69ac18f5b --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components-small.png diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components.png b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components.png Binary files differnew file mode 100644 index 000000000..19f68e0ce --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components.png diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components.svg b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components.svg new file mode 100644 index 000000000..1a7f60fe5 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/components.svg @@ -0,0 +1,414 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="612.00000pt" + height="792.00000pt" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.42" + sodipodi:docbase="/Users/david/projects/pycon/tx2006/talks/docutils-arch" + sodipodi:docname="components.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="TriangleOutL" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleOutL" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path4219" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="SemiCircleIn" + orient="auto" + refY="0.0" + refX="0.0" + id="SemiCircleIn" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path941" + d="M -0.37450702,-0.045692580 C -0.37450702,2.7143074 1.8654930,4.9543074 4.6254930,4.9543074 L 4.6254930,-5.0456926 C 1.8654930,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.045692580 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none" + transform="scale(0.6)" /> + </marker> + <marker + inkscape:stockid="SquareL" + orient="auto" + refY="0.0" + refX="0.0" + id="SquareL" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path4244" + d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Arrow2Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path4272" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Sstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Sstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="arrowMarkerPath2" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.3) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="DistanceIn" + orient="auto" + refY="0.0" + refX="0.0" + id="DistanceIn" + style="overflow:visible"> + <g + transform="scale(0.6,0.6) translate(8,0)" + id="g987"> + <path + sodipodi:nodetypes="ccccc" + id="path974" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" /> + <path + id="path976" + d="M -14.759949,-7 L -14.759949,65" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2pt;marker-start:none" /> + </g> + </marker> + <marker + inkscape:stockid="TriangleInS" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleInS" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path4222" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(-0.2)" /> + </marker> + <marker + inkscape:stockid="Legs" + orient="auto" + refY="0.0" + refX="0.0" + id="Legs" + style="overflow:visible"> + <g + id="g1163" + transform="scale(-0.7)"> + <g + transform="matrix(-1.836909e-16,-1.000000,-1.000000,1.836909e-16,20.70862,21.31391)" + id="g2032"> + <path + sodipodi:nodetypes="cc" + id="path2019" + d="M 21.221250,20.675360 C 14.311099,25.396517 18.766725,27.282204 15.380179,34.118595" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;marker-start:none;marker-end:none" /> + <path + sodipodi:nodetypes="cc" + id="path2026" + d="M 21.398110,20.548120 C 20.037601,28.895644 24.934182,29.318060 25.903151,34.373078" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;marker-start:none;marker-end:none" /> + </g> + <path + id="polygon2039" + d="M -14.090070,-6.7318716 L -15.012238,-2.6884886 L -11.049487,-3.9115586 L -14.090070,-6.7318716 z " + style="fill:#030300;fill-rule:evenodd;stroke-width:1.0000000pt;marker-end:none" /> + <path + id="path2041" + d="M -15.215679,4.5567534 L -13.341552,8.2563664 L -11.074678,4.7835114 L -15.215679,4.5567534 z " + style="fill:#030300;fill-rule:evenodd;stroke-width:1.0000000pt;marker-end:none" /> + </g> + </marker> + <marker + inkscape:stockid="Club" + orient="auto" + refY="0.0" + refX="0.0" + id="Club" + style="overflow:visible"> + <path + id="path1015" + d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:0.74587913pt;marker-start:none" + transform="scale(0.6)" /> + </marker> + <marker + inkscape:stockid="Torso" + orient="auto" + refY="0.0" + refX="0.0" + id="Torso" + style="overflow:visible"> + <g + id="g2045" + transform="scale(0.7)"> + <path + sodipodi:nodetypes="ccccc" + id="path1128" + d="M -4.7792281,-3.2395420 C -2.4288541,-2.8736027 0.52103922,-1.3019943 0.25792722,0.38794346 C -0.0051877922,2.0778819 -2.2126741,2.6176539 -4.5630471,2.2517169 C -6.9134221,1.8857769 -8.5210350,0.75201414 -8.2579220,-0.93792336 C -7.9948090,-2.6278615 -7.1296041,-3.6054813 -4.7792281,-3.2395420 z " + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;marker-start:none;marker-mid:none;marker-end:none" /> + <path + sodipodi:nodetypes="cc" + id="path1909" + d="M 4.4598789,0.088665736 C -2.5564571,-4.3783320 5.2248769,-3.9061806 -0.84829578,-8.7197331" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;marker-end:none" /> + <path + sodipodi:nodetypes="cc" + id="path1910" + d="M 4.9298719,0.057520736 C -1.3872731,1.7494689 1.8027579,5.4782079 -4.9448731,7.5462725" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;marker-start:none;marker-end:none" /> + <rect + transform="matrix(0.527536,-0.849533,0.887668,0.460484,0.000000,0.000000)" + y="-1.7408575" + x="-10.391706" + height="2.7608147" + width="2.6366582" + id="rect2035" + style="fill-rule:evenodd;stroke-width:1.0000000pt;marker-end:none" /> + <rect + transform="matrix(0.671205,-0.741272,0.790802,0.612072,0.000000,0.000000)" + y="-7.9629307" + x="4.9587269" + height="2.8614161" + width="2.7327356" + id="rect2036" + style="fill-rule:evenodd;stroke-width:1.0000000pt;marker-end:none" /> + <path + transform="matrix(6.793608e-17,-1.109517,1.109517,6.793608e-17,25.96648,19.71619)" + d="M 16.779951 -28.685045 A 0.60731727 0.60731727 0 1 0 15.565317,-28.685045 A 0.60731727 0.60731727 0 1 0 16.779951 -28.685045 z" + sodipodi:ry="0.60731727" + sodipodi:rx="0.60731727" + sodipodi:cy="-28.685045" + sodipodi:cx="16.172634" + id="path2037" + style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;marker-start:none;marker-end:none" + sodipodi:type="arc" /> + <path + transform="matrix(6.793608e-17,-1.109517,1.109517,6.793608e-17,26.82450,16.99126)" + d="M 16.779951 -28.685045 A 0.60731727 0.60731727 0 1 0 15.565317,-28.685045 A 0.60731727 0.60731727 0 1 0 16.779951 -28.685045 z" + sodipodi:ry="0.60731727" + sodipodi:rx="0.60731727" + sodipodi:cy="-28.685045" + sodipodi:cx="16.172634" + id="path2038" + style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;marker-start:none;marker-end:none" + sodipodi:type="arc" /> + </g> + </marker> + <marker + inkscape:stockid="TriangleInM" + orient="auto" + refY="0.0" + refX="0.0" + id="TriangleInM" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path4225" + d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(-0.4)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path4292" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + sodipodi:nodetypes="cccc" + id="path4284" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0000000" + inkscape:pageshadow="2" + inkscape:zoom="1.0000000" + inkscape:cx="382.50000" + inkscape:cy="828.80000" + inkscape:document-units="in" + inkscape:current-layer="layer1" + gridspacingy="0.12500000in" + gridspacingx="0.12500000in" + gridoriginy="0.0000000in" + gridoriginx="0.0000000in" + gridtolerance="0.060000000in" + gridempspacing="4" + guidetolerance="0.050000000in" + showgrid="false" + inkscape:window-width="1276" + inkscape:window-height="810" + inkscape:window-x="4" + inkscape:window-y="22" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:18.000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;marker-mid:none" + d="M 236.25000,191.25000 L 281.25000,191.25000" + id="path4163" /> + <path + id="path5538" + d="M 236.25000,191.25000 L 281.25000,191.25000" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:18.000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;marker-mid:none" + d="M 438.75000,191.25000 L 483.75000,191.25000" + id="path4165" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:18.000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;marker-mid:none" + d="M 168.75000,213.75000 L 236.25000,281.25000" + id="path4348" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 258.75000,101.25000 L 191.25000,168.75000" + id="path4344" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 146.25000,213.75000 L 78.750000,281.25000" + id="path4346" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none" + d="M 461.25000,101.25000 L 528.75000,168.75000" + id="path4350" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;marker-mid:none" + d="M 360.00000,112.50000 L 360.00000,157.50000" + id="path4157" /> + <path + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;marker-mid:none" + d="M 562.50000,225.00000 L 562.50000,270.00000" + id="path4167" /> + <path + style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-width:4.0000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 78.750000,157.50000 L 236.25000,157.50000 L 236.25000,225.00000 L 78.750000,225.00000 L 78.750000,157.50000 z " + id="rect2147" /> + <path + style="font-size:24.000000px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:0.0000000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 120.69019,197.76598 L 124.31419,197.76598 L 124.31419,191.40598 L 125.39419,191.40598 C 126.90619,191.42998 127.60219,191.95798 128.05819,193.99798 C 128.51419,195.98998 128.92219,197.30998 129.16219,197.76598 L 132.90619,197.76598 C 132.59419,197.14198 132.11419,195.02998 131.61019,193.18198 C 131.20219,191.69398 130.57819,190.63798 129.45019,190.18198 L 129.45019,190.10998 C 130.84219,189.60598 132.30619,188.18998 132.30619,186.14998 C 132.30619,184.66198 131.77819,183.53398 130.79419,182.76598 C 129.64219,181.82998 127.96219,181.46998 125.56219,181.46998 C 123.59419,181.46998 121.86619,181.61398 120.69019,181.82998 L 120.69019,197.76598 M 124.31419,184.32598 C 124.57819,184.25398 125.08219,184.20598 125.97019,184.20598 C 127.65019,184.20598 128.65819,184.97398 128.65819,186.43798 C 128.65819,187.85398 127.57819,188.76598 125.75419,188.76598 L 124.31419,188.76598 L 124.31419,184.32598 M 145.18819,193.06198 C 145.23619,192.77398 145.30819,192.22198 145.30819,191.59798 C 145.30819,188.69398 143.86819,185.74198 140.07619,185.74198 C 136.02019,185.74198 134.14819,189.02998 134.14819,192.00598 C 134.14819,195.70198 136.42819,198.00598 140.41219,198.00598 C 141.99619,198.00598 143.46019,197.76598 144.66019,197.26198 L 144.18019,194.78998 C 143.19619,195.12598 142.18819,195.29398 140.94019,195.29398 C 139.23619,195.29398 137.74819,194.57398 137.62819,193.03798 L 145.18819,193.06198 M 137.60419,190.54198 C 137.70019,189.58198 138.32419,188.16598 139.88419,188.16598 C 141.54019,188.16598 141.92419,189.67798 141.92419,190.54198 L 137.60419,190.54198 M 157.24444,190.82998 C 157.24444,188.06998 156.02044,185.76598 152.10844,185.76598 C 149.97244,185.76598 148.36444,186.36598 147.54844,186.82198 L 148.22044,189.14998 C 148.98844,188.69398 150.26044,188.28598 151.46044,188.28598 C 153.26044,188.28598 153.59644,189.17398 153.59644,189.79798 L 153.59644,189.94198 C 149.44444,189.94198 146.70844,191.38198 146.70844,194.42998 C 146.70844,196.30198 148.12444,198.02998 150.50044,198.02998 C 151.89244,198.02998 153.09244,197.52598 153.86044,196.58998 L 153.93244,196.58998 L 154.14844,197.76598 L 157.43644,197.76598 C 157.29244,197.11798 157.24444,196.03798 157.24444,194.93398 L 157.24444,190.82998 M 153.71644,193.49398 C 153.71644,193.70998 153.69244,193.92598 153.64444,194.11798 C 153.40444,194.86198 152.63644,195.46198 151.74844,195.46198 C 150.93244,195.46198 150.30844,195.00598 150.30844,194.06998 C 150.30844,192.67798 151.79644,192.22198 153.71644,192.22198 L 153.71644,193.49398 M 167.86069,180.72598 L 167.86069,187.08598 L 167.81269,187.08598 C 167.28469,186.29398 166.18069,185.76598 164.71669,185.76598 C 161.90869,185.76598 159.43669,188.06998 159.46069,192.00598 C 159.46069,195.65398 161.69269,198.02998 164.47669,198.02998 C 165.98869,198.02998 167.42869,197.35798 168.14869,196.06198 L 168.22069,196.06198 L 168.36469,197.76598 L 171.60469,197.76598 C 171.55669,196.97398 171.50869,195.60598 171.50869,194.26198 L 171.50869,180.72598 L 167.86069,180.72598 M 167.86069,192.55798 C 167.86069,192.84598 167.83669,193.13398 167.78869,193.37398 C 167.57269,194.40598 166.70869,195.12598 165.65269,195.12598 C 164.14069,195.12598 163.15669,193.87798 163.15669,191.90998 C 163.15669,190.06198 163.99669,188.57398 165.67669,188.57398 C 166.80469,188.57398 167.59669,189.36598 167.81269,190.34998 C 167.86069,190.56598 167.86069,190.80598 167.86069,191.02198 L 167.86069,192.55798 M 184.79756,193.06198 C 184.84556,192.77398 184.91756,192.22198 184.91756,191.59798 C 184.91756,188.69398 183.47756,185.74198 179.68556,185.74198 C 175.62957,185.74198 173.75757,189.02998 173.75757,192.00598 C 173.75757,195.70198 176.03757,198.00598 180.02157,198.00598 C 181.60556,198.00598 183.06957,197.76598 184.26957,197.26198 L 183.78957,194.78998 C 182.80557,195.12598 181.79756,195.29398 180.54957,195.29398 C 178.84557,195.29398 177.35756,194.57398 177.23756,193.03798 L 184.79756,193.06198 M 177.21356,190.54198 C 177.30956,189.58198 177.93357,188.16598 179.49356,188.16598 C 181.14956,188.16598 181.53357,189.67798 181.53357,190.54198 L 177.21356,190.54198 M 187.08581,197.76598 L 190.73381,197.76598 L 190.73381,191.83798 C 190.73381,191.52598 190.75782,191.26198 190.80581,191.02198 C 191.04581,189.86998 191.95782,189.17398 193.30182,189.17398 C 193.70981,189.17398 193.99782,189.22198 194.30981,189.26998 L 194.30981,185.83798 C 194.04582,185.78998 193.87781,185.76598 193.54181,185.76598 C 192.38982,185.76598 190.97381,186.48598 190.37382,188.21398 L 190.27782,188.21398 L 190.13382,186.02998 L 187.01381,186.02998 C 187.08581,187.03798 187.10981,188.16598 187.10981,189.89398 L 187.08581,197.76598" + id="text2121" /> + <path + style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-width:4.0000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 281.25000,157.50000 L 438.75000,157.50000 L 438.75000,225.00000 L 281.25000,225.00000 L 281.25000,157.50000 z " + id="rect2068" /> + <path + style="font-size:24.000000px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:0.0000000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 298.25869,198.03000 L 301.90669,198.03000 L 301.90669,184.92600 L 306.32269,184.92600 L 306.32269,181.85400 L 293.89069,181.85400 L 293.89069,184.92600 L 298.25869,184.92600 L 298.25869,198.03000 M 308.16656,198.03000 L 311.81456,198.03000 L 311.81456,192.10200 C 311.81456,191.79000 311.83856,191.52600 311.88656,191.28600 C 312.12656,190.13400 313.03856,189.43800 314.38256,189.43800 C 314.79056,189.43800 315.07856,189.48600 315.39056,189.53400 L 315.39056,186.10200 C 315.12656,186.05400 314.95856,186.03000 314.62256,186.03000 C 313.47056,186.03000 312.05456,186.75000 311.45456,188.47800 L 311.35856,188.47800 L 311.21456,186.29400 L 308.09456,186.29400 C 308.16656,187.30200 308.19056,188.43000 308.19056,190.15800 L 308.16656,198.03000 M 327.07519,191.09400 C 327.07519,188.33400 325.85118,186.03000 321.93919,186.03000 C 319.80319,186.03000 318.19519,186.63000 317.37919,187.08600 L 318.05119,189.41400 C 318.81919,188.95800 320.09119,188.55000 321.29119,188.55000 C 323.09118,188.55000 323.42719,189.43800 323.42719,190.06200 L 323.42719,190.20600 C 319.27519,190.20600 316.53919,191.64600 316.53919,194.69400 C 316.53919,196.56600 317.95519,198.29400 320.33119,198.29400 C 321.72318,198.29400 322.92319,197.79000 323.69119,196.85400 L 323.76319,196.85400 L 323.97919,198.03000 L 327.26719,198.03000 C 327.12319,197.38200 327.07519,196.30200 327.07519,195.19800 L 327.07519,191.09400 M 323.54719,193.75800 C 323.54719,193.97400 323.52319,194.19000 323.47519,194.38200 C 323.23519,195.12600 322.46719,195.72600 321.57919,195.72600 C 320.76319,195.72600 320.13919,195.27000 320.13919,194.33400 C 320.13919,192.94200 321.62719,192.48600 323.54719,192.48600 L 323.54719,193.75800 M 329.96344,198.03000 L 333.61144,198.03000 L 333.61144,191.26200 C 333.61144,190.92600 333.63544,190.59000 333.73144,190.35000 C 333.99544,189.67800 334.59544,188.98200 335.60344,188.98200 C 336.92343,188.98200 337.45144,190.01400 337.45144,191.52600 L 337.45144,198.03000 L 341.09944,198.03000 L 341.09944,191.09400 C 341.09944,187.63800 339.29943,186.03000 336.89944,186.03000 C 334.93144,186.03000 333.75544,187.15800 333.27544,187.92600 L 333.20344,187.92600 L 333.03544,186.29400 L 329.86744,186.29400 C 329.91544,187.35000 329.96344,188.57400 329.96344,190.03800 L 329.96344,198.03000 M 343.35394,197.45400 C 344.24194,197.93400 345.60994,198.29400 347.14594,198.29400 C 350.50593,198.29400 352.20994,196.68600 352.20994,194.47800 C 352.18594,192.77400 351.27393,191.62200 349.04194,190.87800 C 347.60194,190.37400 347.14594,190.08600 347.14594,189.51000 C 347.14594,188.93400 347.64994,188.57400 348.53794,188.57400 C 349.52193,188.57400 350.55394,188.95800 351.08194,189.22200 L 351.70594,186.72600 C 350.98594,186.36600 349.78593,186.03000 348.41794,186.03000 C 345.51394,186.03000 343.64194,187.68600 343.64194,189.89400 C 343.61794,191.26200 344.55394,192.60600 347.00194,193.39800 C 348.34593,193.85400 348.70594,194.14200 348.70594,194.76600 C 348.70594,195.36600 348.24993,195.72600 347.14594,195.72600 C 346.06594,195.72600 344.67394,195.27000 344.00194,194.86200 L 343.35394,197.45400 M 358.51219,198.03000 L 358.51219,188.98200 L 360.84019,188.98200 L 360.84019,186.29400 L 358.48819,186.29400 L 358.48819,185.69400 C 358.48819,184.54200 358.99219,183.60600 360.19219,183.60600 C 360.67219,183.60600 361.05619,183.67800 361.36819,183.77400 L 361.51219,180.96600 C 361.00819,180.84600 360.38419,180.72600 359.59219,180.72600 C 358.51219,180.72600 357.26419,181.03800 356.32819,181.90200 C 355.29619,182.86200 354.86419,184.42200 354.86419,185.83800 L 354.86419,186.29400 L 353.30419,186.29400 L 353.30419,188.98200 L 354.86419,188.98200 L 354.86419,198.03000 L 358.51219,198.03000 M 368.05931,198.29400 C 371.17931,198.29400 374.22731,196.32600 374.22731,192.05400 C 374.22731,188.50200 371.82731,186.03000 368.25131,186.03000 C 364.45931,186.03000 361.96331,188.45401 361.96331,192.24600 C 361.96331,196.03800 364.60331,198.29400 368.03531,198.29400 L 368.05931,198.29400 M 368.08331,195.67800 C 366.54731,195.67800 365.70731,194.16600 365.70731,192.17400 C 365.70731,190.42200 366.37931,188.64600 368.10731,188.64600 C 369.76331,188.64600 370.43531,190.42200 370.43531,192.15000 C 370.43531,194.26200 369.54731,195.67800 368.10731,195.67800 L 368.08331,195.67800 M 376.46344,198.03000 L 380.11144,198.03000 L 380.11144,192.10200 C 380.11144,191.79000 380.13544,191.52600 380.18344,191.28600 C 380.42344,190.13400 381.33544,189.43800 382.67944,189.43800 C 383.08744,189.43800 383.37544,189.48600 383.68744,189.53400 L 383.68744,186.10200 C 383.42344,186.05400 383.25544,186.03000 382.91944,186.03000 C 381.76744,186.03000 380.35144,186.75000 379.75144,188.47800 L 379.65544,188.47800 L 379.51144,186.29400 L 376.39144,186.29400 C 376.46344,187.30200 376.48744,188.43000 376.48744,190.15800 L 376.46344,198.03000 M 385.60406,198.03000 L 389.15606,198.03000 L 389.15606,191.21400 C 389.15606,190.90200 389.18006,190.56600 389.30006,190.27800 C 389.51606,189.70200 390.06806,188.98200 391.00406,188.98200 C 392.18006,188.98200 392.70806,189.99000 392.70806,191.45400 L 392.70806,198.03000 L 396.26006,198.03000 L 396.26006,191.16600 C 396.26006,190.87800 396.30806,190.51800 396.38006,190.25400 C 396.64406,189.55800 397.22006,188.98200 398.08406,188.98200 C 399.26006,188.98200 399.81206,189.96600 399.81206,191.67000 L 399.81206,198.03000 L 403.36406,198.03000 L 403.36406,191.11800 C 403.36406,187.61400 401.66006,186.03000 399.40406,186.03000 C 398.54006,186.03000 397.82006,186.24600 397.17206,186.60600 C 396.59606,186.94200 396.09206,187.42200 395.63606,188.04600 L 395.58806,188.04600 C 395.08406,186.82200 393.90806,186.03000 392.37206,186.03000 C 390.38006,186.03000 389.32406,187.13400 388.82006,187.90200 L 388.74806,187.90200 L 388.60406,186.29400 L 385.50806,186.29400 C 385.55606,187.35000 385.60406,188.57400 385.60406,190.03800 L 385.60406,198.03000 M 416.59706,193.32600 C 416.64506,193.03800 416.71706,192.48600 416.71706,191.86200 C 416.71706,188.95800 415.27706,186.00600 411.48506,186.00600 C 407.42907,186.00600 405.55706,189.29400 405.55706,192.27000 C 405.55706,195.96600 407.83706,198.27000 411.82106,198.27000 C 413.40506,198.27000 414.86906,198.03000 416.06906,197.52600 L 415.58906,195.05400 C 414.60506,195.39000 413.59706,195.55800 412.34906,195.55800 C 410.64506,195.55800 409.15706,194.83800 409.03706,193.30200 L 416.59706,193.32600 M 409.01306,190.80600 C 409.10906,189.84600 409.73306,188.43000 411.29306,188.43000 C 412.94906,188.43000 413.33306,189.94200 413.33306,190.80600 L 409.01306,190.80600 M 418.88531,198.03000 L 422.53331,198.03000 L 422.53331,192.10200 C 422.53331,191.79000 422.55731,191.52600 422.60531,191.28600 C 422.84531,190.13400 423.75731,189.43800 425.10131,189.43800 C 425.50931,189.43800 425.79731,189.48600 426.10931,189.53400 L 426.10931,186.10200 C 425.84531,186.05400 425.67731,186.03000 425.34131,186.03000 C 424.18931,186.03000 422.77331,186.75000 422.17331,188.47800 L 422.07731,188.47800 L 421.93331,186.29400 L 418.81331,186.29400 C 418.88531,187.30200 418.90931,188.43000 418.90931,190.15800 L 418.88531,198.03000" + id="text2125" /> + <path + style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-width:4.0000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 483.75000,157.50000 L 641.25000,157.50000 L 641.25000,225.00000 L 483.75000,225.00000 L 483.75000,157.50000 z " + id="rect2149" /> + <path + style="font-size:24.000000px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:0.0000000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 536.93400,197.88600 L 538.47000,190.92600 C 538.85400,189.29400 539.11800,187.75800 539.40600,185.93400 L 539.45400,185.93400 C 539.64600,187.78200 539.91000,189.29400 540.22200,190.92600 L 541.59000,197.88600 L 545.55000,197.88600 L 549.72600,181.71000 L 546.00600,181.71000 L 544.68600,188.31000 C 544.35000,190.25400 543.99000,192.15000 543.75000,193.95000 L 543.70200,193.95000 C 543.46200,192.15000 543.19800,190.42200 542.83800,188.52600 L 541.54200,181.71000 L 537.65400,181.71000 L 536.28600,188.31000 C 535.87801,190.32600 535.49400,192.27000 535.23000,194.04600 L 535.18200,194.04600 C 534.91800,192.39000 534.58200,190.30200 534.22200,188.35800 L 532.99800,181.71000 L 529.08600,181.71000 L 532.92600,197.88600 L 536.93400,197.88600 M 551.51813,197.88600 L 555.16613,197.88600 L 555.16613,191.95800 C 555.16613,191.64600 555.19013,191.38200 555.23813,191.14200 C 555.47813,189.99000 556.39013,189.29400 557.73413,189.29400 C 558.14213,189.29400 558.43013,189.34200 558.74213,189.39000 L 558.74213,185.95800 C 558.47813,185.91000 558.31013,185.88600 557.97413,185.88600 C 556.82213,185.88600 555.40613,186.60600 554.80613,188.33400 L 554.71013,188.33400 L 554.56613,186.15000 L 551.44613,186.15000 C 551.51813,187.15800 551.54213,188.28600 551.54213,190.01400 L 551.51813,197.88600 M 564.30675,197.88600 L 564.30675,186.15000 L 560.65875,186.15000 L 560.65875,197.88600 L 564.30675,197.88600 M 562.48275,184.61400 C 563.75475,184.61400 564.54675,183.75000 564.54675,182.67000 C 564.52275,181.56600 563.75475,180.72600 562.50675,180.72600 C 561.25876,180.72600 560.44275,181.56600 560.44275,182.67000 C 560.44275,183.75000 561.23476,184.61400 562.45875,184.61400 L 562.48275,184.61400 M 567.72525,183.94200 L 567.72525,186.15000 L 566.16525,186.15000 L 566.16525,188.83800 L 567.72525,188.83800 L 567.72525,193.66200 C 567.72525,195.31800 568.06126,196.44600 568.73325,197.14200 C 569.33325,197.74200 570.31726,198.15000 571.49325,198.15000 C 572.50125,198.15000 573.38926,198.00600 573.84525,197.83800 L 573.82125,195.07800 C 573.48525,195.15000 573.24525,195.17400 572.74125,195.17400 C 571.66126,195.17400 571.30125,194.52600 571.30125,193.11000 L 571.30125,188.83800 L 573.91725,188.83800 L 573.91725,186.15000 L 571.30125,186.15000 L 571.30125,182.95800 L 567.72525,183.94200 M 586.40175,193.18200 C 586.44975,192.89400 586.52175,192.34200 586.52175,191.71800 C 586.52175,188.81400 585.08175,185.86200 581.28975,185.86200 C 577.23376,185.86200 575.36175,189.15000 575.36175,192.12600 C 575.36175,195.82199 577.64176,198.12600 581.62575,198.12600 C 583.20975,198.12600 584.67376,197.88600 585.87375,197.38200 L 585.39375,194.91000 C 584.40976,195.24600 583.40175,195.41400 582.15375,195.41400 C 580.44976,195.41400 578.96175,194.69400 578.84175,193.15800 L 586.40175,193.18200 M 578.81775,190.66200 C 578.91375,189.70200 579.53776,188.28600 581.09775,188.28600 C 582.75375,188.28600 583.13775,189.79800 583.13775,190.66200 L 578.81775,190.66200 M 588.69000,197.88600 L 592.33800,197.88600 L 592.33800,191.95800 C 592.33800,191.64600 592.36200,191.38200 592.41000,191.14200 C 592.65000,189.99000 593.56201,189.29400 594.90600,189.29400 C 595.31400,189.29400 595.60200,189.34200 595.91400,189.39000 L 595.91400,185.95800 C 595.65000,185.91000 595.48200,185.88600 595.14600,185.88600 C 593.99401,185.88600 592.57800,186.60600 591.97800,188.33400 L 591.88200,188.33400 L 591.73800,186.15000 L 588.61800,186.15000 C 588.69000,187.15800 588.71400,188.28600 588.71400,190.01400 L 588.69000,197.88600" + id="text2129" /> + <path + style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-width:4.0000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 33.750000,270.00000 L 146.25000,270.00000 L 146.25000,326.25000 L 33.750000,326.25000 L 33.750000,270.00000 z " + id="rect1308" /> + <path + style="font-size:24.000000px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:0.0000000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 62.091190,287.66100 L 62.091190,303.83700 L 65.739190,303.83700 L 65.739190,287.66100 L 62.091190,287.66100 M 68.790940,303.83700 L 72.438940,303.83700 L 72.438940,297.06900 C 72.438940,296.73300 72.462940,296.39700 72.558940,296.15700 C 72.822940,295.48500 73.422940,294.78900 74.430940,294.78900 C 75.750940,294.78900 76.278940,295.82100 76.278940,297.33300 L 76.278940,303.83700 L 79.926940,303.83700 L 79.926940,296.90100 C 79.926940,293.44500 78.126940,291.83700 75.726940,291.83700 C 73.758940,291.83700 72.582940,292.96500 72.102940,293.73300 L 72.030940,293.73300 L 71.862940,292.10100 L 68.694940,292.10100 C 68.742940,293.15700 68.790940,294.38100 68.790940,295.84500 L 68.790940,303.83700 M 82.853440,308.58900 L 86.501440,308.58900 L 86.501440,302.75700 L 86.549440,302.75700 C 87.077440,303.52500 88.181440,304.10100 89.597440,304.10100 C 92.213440,304.10100 94.925440,302.08499 94.925440,297.81300 C 94.925440,294.06900 92.621440,291.83700 90.053440,291.83700 C 88.349440,291.83700 87.005440,292.50900 86.141440,293.73300 L 86.093440,293.73300 L 85.925440,292.10100 L 82.757440,292.10100 C 82.805440,293.20500 82.853440,294.50100 82.853440,296.03700 L 82.853440,308.58900 M 86.501440,297.18900 C 86.501440,296.97300 86.525440,296.73300 86.573440,296.54100 C 86.813440,295.46100 87.725440,294.69300 88.757440,294.69300 C 90.389440,294.69300 91.229440,296.10900 91.229440,297.98100 C 91.229440,299.97300 90.293440,301.29300 88.709440,301.29300 C 87.653440,301.29300 86.813440,300.54900 86.573440,299.56500 C 86.525440,299.32500 86.501440,299.08500 86.501440,298.79700 L 86.501440,297.18900 M 108.26119,292.10100 L 104.61319,292.10100 L 104.61319,299.08500 C 104.61319,299.39700 104.56519,299.66100 104.46919,299.87700 C 104.25319,300.45300 103.65319,301.14900 102.64519,301.14900 C 101.34919,301.14900 100.79719,300.11700 100.79719,298.41300 L 100.79719,292.10100 L 97.149190,292.10100 L 97.149190,298.98900 C 97.149190,302.61299 98.877190,304.10100 101.27719,304.10100 C 103.38919,304.10100 104.49319,302.90100 104.94919,302.18100 L 105.02119,302.18100 L 105.18919,303.83700 L 108.35719,303.83700 C 108.30919,302.85300 108.26119,301.60500 108.26119,300.06900 L 108.26119,292.10100 M 111.71681,289.89300 L 111.71681,292.10100 L 110.15681,292.10100 L 110.15681,294.78900 L 111.71681,294.78900 L 111.71681,299.61300 C 111.71681,301.26900 112.05281,302.39700 112.72481,303.09300 C 113.32481,303.69300 114.30881,304.10100 115.48481,304.10100 C 116.49281,304.10100 117.38081,303.95700 117.83681,303.78900 L 117.81281,301.02900 C 117.47681,301.10100 117.23681,301.12500 116.73281,301.12500 C 115.65281,301.12500 115.29281,300.47700 115.29281,299.06100 L 115.29281,294.78900 L 117.90881,294.78900 L 117.90881,292.10100 L 115.29281,292.10100 L 115.29281,288.90900 L 111.71681,289.89300" + id="text2133" /> + <path + style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-width:4.0000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 168.75000,270.00000 L 281.25000,270.00000 L 281.25000,326.25000 L 168.75000,326.25000 L 168.75000,270.00000 z " + id="rect2113" /> + <path + style="font-size:24.000000px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:0.0000000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 192.05738,303.82501 L 195.68138,303.82501 L 195.68138,298.01701 C 196.01738,298.08901 196.44937,298.11301 196.92937,298.11301 C 199.08938,298.11301 200.96137,297.56101 202.20937,296.40901 C 203.16937,295.52101 203.67338,294.17701 203.67338,292.56901 C 203.67338,290.98501 203.00137,289.64101 201.96937,288.84901 C 200.88937,287.96101 199.25738,287.52901 197.00137,287.52901 C 194.76937,287.52901 193.18538,287.67301 192.05738,287.86501 L 192.05738,303.82501 M 195.68138,290.43301 C 195.94538,290.36101 196.44937,290.31301 197.19338,290.31301 C 199.04138,290.31301 200.04937,291.20101 200.04937,292.68901 C 200.04937,294.32101 198.84937,295.30501 196.90537,295.30501 C 196.37738,295.30501 195.99338,295.28101 195.68138,295.20901 L 195.68138,290.43301 M 215.62726,296.88901 C 215.62726,294.12901 214.40324,291.82501 210.49126,291.82501 C 208.35525,291.82501 206.74726,292.42501 205.93125,292.88101 L 206.60326,295.20901 C 207.37125,294.75301 208.64326,294.34501 209.84325,294.34501 C 211.64324,294.34501 211.97926,295.23301 211.97926,295.85701 L 211.97926,296.00101 C 207.82726,296.00101 205.09126,297.44101 205.09126,300.48901 C 205.09126,302.36101 206.50726,304.08901 208.88326,304.08901 C 210.27525,304.08901 211.47526,303.58501 212.24326,302.64901 L 212.31526,302.64901 L 212.53125,303.82501 L 215.81925,303.82501 C 215.67526,303.17701 215.62726,302.09701 215.62726,300.99301 L 215.62726,296.88901 M 212.09926,299.55301 C 212.09926,299.76901 212.07526,299.98501 212.02726,300.17701 C 211.78726,300.92101 211.01925,301.52101 210.13126,301.52101 C 209.31526,301.52101 208.69126,301.06501 208.69126,300.12901 C 208.69126,298.73701 210.17926,298.28101 212.09926,298.28101 L 212.09926,299.55301 M 218.51551,303.82501 L 222.16350,303.82501 L 222.16350,297.89701 C 222.16350,297.58501 222.18751,297.32101 222.23551,297.08101 C 222.47551,295.92901 223.38751,295.23301 224.73150,295.23301 C 225.13950,295.23301 225.42750,295.28101 225.73951,295.32901 L 225.73951,291.89701 C 225.47551,291.84901 225.30751,291.82501 224.97150,291.82501 C 223.81950,291.82501 222.40350,292.54501 221.80351,294.27301 L 221.70751,294.27301 L 221.56351,292.08901 L 218.44351,292.08901 C 218.51551,293.09701 218.53951,294.22501 218.53951,295.95301 L 218.51551,303.82501 M 226.98413,303.24901 C 227.87212,303.72901 229.24013,304.08901 230.77613,304.08901 C 234.13612,304.08901 235.84013,302.48100 235.84013,300.27301 C 235.81612,298.56901 234.90412,297.41701 232.67212,296.67301 C 231.23212,296.16901 230.77613,295.88101 230.77613,295.30501 C 230.77613,294.72901 231.28013,294.36901 232.16812,294.36901 C 233.15213,294.36901 234.18412,294.75301 234.71213,295.01701 L 235.33612,292.52101 C 234.61613,292.16101 233.41612,291.82501 232.04813,291.82501 C 229.14412,291.82501 227.27213,293.48101 227.27213,295.68901 C 227.24813,297.05701 228.18412,298.40101 230.63213,299.19301 C 231.97613,299.64901 232.33612,299.93701 232.33612,300.56101 C 232.33612,301.16101 231.88013,301.52101 230.77613,301.52101 C 229.69612,301.52101 228.30412,301.06501 227.63213,300.65701 L 226.98413,303.24901 M 248.43037,299.12101 C 248.47838,298.83301 248.55038,298.28101 248.55038,297.65701 C 248.55038,294.75301 247.11038,291.80101 243.31838,291.80101 C 239.26238,291.80101 237.39038,295.08901 237.39038,298.06501 C 237.39038,301.76100 239.67037,304.06501 243.65437,304.06501 C 245.23838,304.06501 246.70238,303.82501 247.90238,303.32101 L 247.42237,300.84901 C 246.43838,301.18501 245.43037,301.35301 244.18238,301.35301 C 242.47838,301.35301 240.99038,300.63301 240.87037,299.09701 L 248.43037,299.12101 M 240.84637,296.60101 C 240.94238,295.64101 241.56637,294.22501 243.12637,294.22501 C 244.78238,294.22501 245.16637,295.73701 245.16637,296.60101 L 240.84637,296.60101 M 250.71862,303.82501 L 254.36662,303.82501 L 254.36662,297.89701 C 254.36662,297.58501 254.39062,297.32101 254.43863,297.08101 C 254.67863,295.92901 255.59063,295.23301 256.93462,295.23301 C 257.34262,295.23301 257.63063,295.28101 257.94263,295.32901 L 257.94263,291.89701 C 257.67863,291.84901 257.51063,291.82501 257.17462,291.82501 C 256.02263,291.82501 254.60663,292.54501 254.00662,294.27301 L 253.91062,294.27301 L 253.76662,292.08901 L 250.64662,292.08901 C 250.71862,293.09701 250.74263,294.22501 250.74263,295.95301 L 250.71862,303.82501" + id="text2137" /> + <path + style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-width:4.0000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 506.25000,270.00000 L 618.75000,270.00000 L 618.75000,326.25000 L 506.25000,326.25000 L 506.25000,270.00000 z " + id="rect2151" /> + <path + style="font-size:24.000000px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:0.0000000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 532.27669,304.23300 C 537.00469,304.23300 540.19669,301.04100 540.19669,295.71300 C 540.19669,291.24901 537.48469,287.52900 532.51669,287.52900 C 527.76470,287.52900 524.64469,291.15301 524.64469,296.00100 C 524.64469,300.60900 527.47670,304.23300 532.25269,304.23300 L 532.27669,304.23300 M 532.39669,301.32900 C 529.94870,301.32900 528.48469,298.95300 528.48469,295.90500 C 528.48469,292.88101 529.90070,290.43300 532.42069,290.43300 C 534.94069,290.43300 536.30869,292.92901 536.30869,295.83300 C 536.30869,299.00100 534.89269,301.32900 532.42069,301.32900 L 532.39669,301.32900 M 553.53582,292.23300 L 549.88782,292.23300 L 549.88782,299.21700 C 549.88782,299.52900 549.83982,299.79300 549.74382,300.00900 C 549.52782,300.58500 548.92782,301.28100 547.91982,301.28100 C 546.62382,301.28100 546.07182,300.24900 546.07182,298.54500 L 546.07182,292.23300 L 542.42382,292.23300 L 542.42382,299.12100 C 542.42382,302.74500 544.15182,304.23300 546.55182,304.23300 C 548.66382,304.23300 549.76782,303.03300 550.22382,302.31300 L 550.29582,302.31300 L 550.46382,303.96900 L 553.63182,303.96900 C 553.58382,302.98500 553.53582,301.73700 553.53582,300.20100 L 553.53582,292.23300 M 556.99144,290.02500 L 556.99144,292.23300 L 555.43144,292.23300 L 555.43144,294.92100 L 556.99144,294.92100 L 556.99144,299.74500 C 556.99144,301.40100 557.32745,302.52900 557.99944,303.22500 C 558.59944,303.82500 559.58345,304.23300 560.75944,304.23300 C 561.76744,304.23300 562.65545,304.08900 563.11144,303.92100 L 563.08744,301.16100 C 562.75145,301.23300 562.51144,301.25700 562.00744,301.25700 C 560.92745,301.25700 560.56744,300.60900 560.56744,299.19300 L 560.56744,294.92100 L 563.18344,294.92100 L 563.18344,292.23300 L 560.56744,292.23300 L 560.56744,289.04100 L 556.99144,290.02500 M 565.29994,308.72100 L 568.94794,308.72100 L 568.94794,302.88900 L 568.99594,302.88900 C 569.52394,303.65700 570.62795,304.23300 572.04394,304.23300 C 574.65994,304.23300 577.37194,302.21700 577.37194,297.94500 C 577.37194,294.20101 575.06794,291.96900 572.49994,291.96900 C 570.79595,291.96900 569.45194,292.64100 568.58794,293.86500 L 568.53994,293.86500 L 568.37194,292.23300 L 565.20394,292.23300 C 565.25194,293.33700 565.29994,294.63300 565.29994,296.16900 L 565.29994,308.72100 M 568.94794,297.32100 C 568.94794,297.10500 568.97194,296.86500 569.01994,296.67300 C 569.25994,295.59300 570.17195,294.82500 571.20394,294.82500 C 572.83594,294.82500 573.67594,296.24101 573.67594,298.11300 C 573.67594,300.10500 572.73994,301.42500 571.15594,301.42500 C 570.09995,301.42500 569.25994,300.68100 569.01994,299.69700 C 568.97194,299.45700 568.94794,299.21700 568.94794,298.92900 L 568.94794,297.32100 M 590.70769,292.23300 L 587.05969,292.23300 L 587.05969,299.21700 C 587.05969,299.52900 587.01169,299.79300 586.91569,300.00900 C 586.69970,300.58500 586.09969,301.28100 585.09169,301.28100 C 583.79570,301.28100 583.24369,300.24900 583.24369,298.54500 L 583.24369,292.23300 L 579.59569,292.23300 L 579.59569,299.12100 C 579.59569,302.74500 581.32370,304.23300 583.72369,304.23300 C 585.83569,304.23300 586.93970,303.03300 587.39569,302.31300 L 587.46769,302.31300 L 587.63569,303.96900 L 590.80369,303.96900 C 590.75569,302.98500 590.70769,301.73700 590.70769,300.20100 L 590.70769,292.23300 M 594.16332,290.02500 L 594.16332,292.23300 L 592.60332,292.23300 L 592.60332,294.92100 L 594.16332,294.92100 L 594.16332,299.74500 C 594.16332,301.40100 594.49932,302.52900 595.17132,303.22500 C 595.77132,303.82500 596.75532,304.23300 597.93132,304.23300 C 598.93932,304.23300 599.82732,304.08900 600.28332,303.92100 L 600.25932,301.16100 C 599.92332,301.23300 599.68332,301.25700 599.17932,301.25700 C 598.09932,301.25700 597.73932,300.60900 597.73932,299.19300 L 597.73932,294.92100 L 600.35532,294.92100 L 600.35532,292.23300 L 597.73932,292.23300 L 597.73932,289.04100 L 594.16332,290.02500" + id="text2141" /> + <path + style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#000000;stroke-width:4.0000000;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" + d="M 213.75000,22.500000 L 506.25000,22.500000 L 506.25000,112.50000 L 213.75000,112.50000 L 213.75000,22.500000 z " + id="rect1306" /> + <path + id="path2167" + style="font-size:23.999994px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 314.61163,49.466972 C 315.49151,49.588081 316.84699,49.709189 318.72564,49.709189 C 321.86464,49.709189 324.45672,49.030981 326.14512,47.601905 C 327.66706,46.269715 328.78474,44.113982 328.78474,40.989392 C 328.78474,38.082796 327.73839,36.048172 326.07377,34.788648 C 324.55183,33.601787 322.55427,33.093131 319.48661,33.093131 C 317.67930,33.093131 315.94333,33.214240 314.61163,33.456456 L 314.61163,49.466972 M 318.22625,36.072395 C 318.53540,35.999730 319.08235,35.927065 319.86710,35.927065 C 323.00610,35.927065 324.95609,37.598363 324.95609,41.110500 C 324.95609,45.010183 322.79207,46.851034 319.48661,46.826812 C 319.05856,46.826812 318.53540,46.826812 318.22625,46.754147 L 318.22625,36.072395 M 336.40188,49.806076 C 339.49333,49.806076 342.51344,47.819895 342.51344,43.508445 C 342.51344,39.923643 340.13540,37.428808 336.59213,37.428808 C 332.83483,37.428808 330.36167,39.875199 330.36167,43.702217 C 330.36167,47.529236 332.97753,49.806076 336.37811,49.806076 L 336.40188,49.806076 M 336.42566,47.165915 C 334.90373,47.165915 334.07140,45.639948 334.07140,43.629553 C 334.07140,41.861374 334.73726,40.068969 336.44944,40.068969 C 338.09029,40.068969 338.75614,41.861374 338.75614,43.605332 C 338.75614,45.736835 337.87626,47.165915 336.44944,47.165915 L 336.42566,47.165915 M 353.02846,46.536152 C 352.48150,46.778369 351.81565,46.923698 350.95955,46.923698 C 349.19980,46.923698 347.77298,45.761057 347.77298,43.581110 C 347.74920,41.643379 348.98578,40.262742 350.88822,40.262742 C 351.83943,40.262742 352.48150,40.432294 352.90954,40.626067 L 353.48028,37.889020 C 352.71931,37.598360 351.67296,37.428808 350.72175,37.428808 C 346.39373,37.428808 344.06324,40.262746 344.06324,43.726439 C 344.06324,47.456571 346.46508,49.806076 350.22236,49.806076 C 351.60162,49.806076 352.81442,49.563859 353.45650,49.248977 L 353.02846,46.536152 M 366.42090,37.695247 L 362.80628,37.695247 L 362.80628,44.743749 C 362.80628,45.058630 362.75871,45.325069 362.66359,45.543064 C 362.44957,46.124383 361.85506,46.826812 360.85629,46.826812 C 359.57214,46.826812 359.02519,45.785278 359.02519,44.065542 L 359.02519,37.695247 L 355.41058,37.695247 L 355.41058,44.646862 C 355.41058,48.304329 357.12276,49.806076 359.50080,49.806076 C 361.59348,49.806076 362.68737,48.594992 363.13921,47.868342 L 363.21054,47.868342 L 363.37700,49.539637 L 366.51601,49.539637 C 366.46846,48.546550 366.42090,47.287021 366.42090,45.736837 L 366.42090,37.695247 M 369.84490,35.466853 L 369.84490,37.695247 L 368.29916,37.695247 L 368.29916,40.408072 L 369.84490,40.408072 L 369.84490,45.276625 C 369.84490,46.947918 370.17781,48.086338 370.84366,48.788766 C 371.43818,49.394307 372.41317,49.806076 373.57842,49.806076 C 374.57718,49.806076 375.45707,49.660746 375.90888,49.491194 L 375.88510,46.705704 C 375.55218,46.778369 375.31436,46.802590 374.81498,46.802590 C 373.74487,46.802590 373.38816,46.148603 373.38816,44.719527 L 373.38816,40.408072 L 375.98021,40.408072 L 375.98021,37.695247 L 373.38816,37.695247 L 373.38816,34.473766 L 369.84490,35.466853 M 381.69197,49.539637 L 381.69197,37.695247 L 378.07736,37.695247 L 378.07736,49.539637 L 381.69197,49.539637 M 379.88466,36.145060 C 381.14502,36.145060 381.92978,35.273079 381.92978,34.183106 C 381.90600,33.068911 381.14502,32.221151 379.90844,32.221151 C 378.67188,32.221151 377.86333,33.068911 377.86333,34.183106 C 377.86333,35.273079 378.64808,36.145060 379.86088,36.145060 L 379.88466,36.145060 M 384.57980,49.539637 L 388.19442,49.539637 L 388.19442,32.342260 L 384.57980,32.342260 L 384.57980,49.539637 M 390.41640,48.958317 C 391.29628,49.442751 392.65175,49.806076 394.17370,49.806076 C 397.50294,49.806076 399.19135,48.183222 399.19135,45.954832 C 399.16757,44.235096 398.26391,43.072454 396.05234,42.321583 C 394.62552,41.812928 394.17370,41.522267 394.17370,40.940948 C 394.17370,40.359630 394.67309,39.996304 395.55296,39.996304 C 396.52795,39.996304 397.55051,40.383851 398.07367,40.650289 L 398.69196,38.131236 C 397.97856,37.767912 396.78953,37.428808 395.43407,37.428808 C 392.55663,37.428808 390.70176,39.100105 390.70176,41.328495 C 390.67798,42.709128 391.60542,44.065543 394.03102,44.864857 C 395.36271,45.325069 395.71942,45.615730 395.71942,46.245492 C 395.71942,46.851032 395.26759,47.214358 394.17370,47.214358 C 393.10358,47.214358 391.72432,46.754146 391.05847,46.342379 L 390.41640,48.958317 M 403.27191,41.982480 C 404.55606,41.982480 405.38836,41.037834 405.38836,39.778309 C 405.36458,38.446119 404.53228,37.549917 403.27191,37.549917 C 402.03533,37.549917 401.15546,38.470341 401.15546,39.778309 C 401.15546,41.037834 402.01155,41.982480 403.24813,41.982480 L 403.27191,41.982480 M 403.24813,49.806076 C 404.53228,49.806076 405.36458,48.861430 405.36458,47.601905 C 405.34080,46.269715 404.50849,45.373512 403.24813,45.373512 C 402.01155,45.373512 401.13169,46.293936 401.13169,47.601905 C 401.13169,48.861430 401.98777,49.806076 403.22436,49.806076 L 403.24813,49.806076" /> + <path + id="path5267" + style="font-size:24.000000px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad" + d="M 468.97734,60.366805 L 467.58534,64.062805 L 467.53734,64.062805 L 466.21734,60.366805 L 464.08134,61.590805 L 466.60134,64.638805 L 466.60134,64.686805 L 462.85734,63.918805 L 462.85734,66.342805 L 466.62534,65.670805 L 466.64934,65.718805 L 464.08134,68.718805 L 466.14534,69.942805 L 467.51334,66.270805 L 467.56134,66.246805 L 468.95334,69.942805 L 471.06534,68.718805 L 468.47334,65.742805 L 468.47334,65.694805 L 472.33734,66.342805 L 472.33734,63.918805 L 468.49734,64.686805 L 468.49734,64.638805 L 471.06534,61.566805 L 468.97734,60.366805M 234.79809,56.634805 L 234.79809,62.994805 L 234.75009,62.994805 C 234.22209,62.202805 233.11809,61.674805 231.65409,61.674805 C 228.84609,61.674805 226.37409,63.978809 226.39809,67.914805 C 226.39809,71.562801 228.63009,73.938805 231.41409,73.938805 C 232.92609,73.938805 234.36609,73.266803 235.08609,71.970805 L 235.15809,71.970805 L 235.30209,73.674805 L 238.54209,73.674805 C 238.49409,72.882805 238.44609,71.514803 238.44609,70.170805 L 238.44609,56.634805 L 234.79809,56.634805M 234.79809,68.466805 C 234.79809,68.754804 234.77409,69.042805 234.72609,69.282805 C 234.51009,70.314804 233.64609,71.034805 232.59009,71.034805 C 231.07809,71.034805 230.09409,69.786803 230.09409,67.818805 C 230.09409,65.970807 230.93409,64.482805 232.61409,64.482805 C 233.74209,64.482805 234.53409,65.274806 234.75009,66.258805 C 234.79809,66.474804 234.79809,66.714805 234.79809,66.930805 L 234.79809,68.466805M 246.79096,73.938805 C 249.91096,73.938805 252.95896,71.970800 252.95896,67.698805 C 252.95896,64.146808 250.55896,61.674805 246.98296,61.674805 C 243.19097,61.674805 240.69496,64.098808 240.69496,67.890805 C 240.69496,71.682801 243.33497,73.938805 246.76696,73.938805 L 246.79096,73.938805M 246.81496,71.322805 C 245.27896,71.322805 244.43896,69.810803 244.43896,67.818805 C 244.43896,66.066806 245.11096,64.290805 246.83896,64.290805 C 248.49496,64.290805 249.16696,66.066806 249.16696,67.794805 C 249.16696,69.906803 248.27896,71.322805 246.83896,71.322805 L 246.81496,71.322805M 263.57109,70.698805 C 263.01909,70.938804 262.34709,71.082805 261.48309,71.082805 C 259.70709,71.082805 258.26709,69.930803 258.26709,67.770805 C 258.24309,65.850807 259.49109,64.482805 261.41109,64.482805 C 262.37109,64.482805 263.01909,64.650805 263.45109,64.842805 L 264.02709,62.130805 C 263.25909,61.842805 262.20309,61.674805 261.24309,61.674805 C 256.87509,61.674805 254.52309,64.482808 254.52309,67.914805 C 254.52309,71.610801 256.94709,73.938805 260.73909,73.938805 C 262.13109,73.938805 263.35509,73.698804 264.00309,73.386805 L 263.57109,70.698805M 277.08721,61.938805 L 273.43921,61.938805 L 273.43921,68.922805 C 273.43921,69.234804 273.39121,69.498805 273.29521,69.714805 C 273.07921,70.290804 272.47921,70.986805 271.47121,70.986805 C 270.17522,70.986805 269.62321,69.954803 269.62321,68.250805 L 269.62321,61.938805 L 265.97521,61.938805 L 265.97521,68.826805 C 265.97521,72.450801 267.70322,73.938805 270.10321,73.938805 C 272.21521,73.938805 273.31921,72.738804 273.77521,72.018805 L 273.84721,72.018805 L 274.01521,73.674805 L 277.18321,73.674805 C 277.13521,72.690806 277.08721,71.442803 277.08721,69.906805 L 277.08721,61.938805M 280.54284,59.730805 L 280.54284,61.938805 L 278.98284,61.938805 L 278.98284,64.626805 L 280.54284,64.626805 L 280.54284,69.450805 C 280.54284,71.106803 280.87884,72.234805 281.55084,72.930805 C 282.15084,73.530804 283.13484,73.938805 284.31084,73.938805 C 285.31884,73.938805 286.20684,73.794804 286.66284,73.626805 L 286.63884,70.866805 C 286.30284,70.938805 286.06284,70.962805 285.55884,70.962805 C 284.47884,70.962805 284.11884,70.314803 284.11884,68.898805 L 284.11884,64.626805 L 286.73484,64.626805 L 286.73484,61.938805 L 284.11884,61.938805 L 284.11884,58.746805 L 280.54284,59.730805M 292.49934,73.674805 L 292.49934,61.938805 L 288.85134,61.938805 L 288.85134,73.674805 L 292.49934,73.674805M 290.67534,60.402805 C 291.94734,60.402805 292.73934,59.538804 292.73934,58.458805 C 292.71534,57.354806 291.94734,56.514805 290.69934,56.514805 C 289.45134,56.514805 288.63534,57.354806 288.63534,58.458805 C 288.63534,59.538804 289.42734,60.402805 290.65134,60.402805 L 290.67534,60.402805M 295.41384,73.674805 L 299.06184,73.674805 L 299.06184,56.634805 L 295.41384,56.634805 L 295.41384,73.674805M 301.30434,73.098805 C 302.19234,73.578804 303.56034,73.938805 305.09634,73.938805 C 308.45634,73.938805 310.16034,72.330802 310.16034,70.122805 C 310.13634,68.418806 309.22434,67.266804 306.99234,66.522805 C 305.55234,66.018805 305.09634,65.730804 305.09634,65.154805 C 305.09634,64.578805 305.60034,64.218805 306.48834,64.218805 C 307.47234,64.218805 308.50434,64.602805 309.03234,64.866805 L 309.65634,62.370805 C 308.93634,62.010805 307.73634,61.674805 306.36834,61.674805 C 303.46434,61.674805 301.59234,63.330807 301.59234,65.538805 C 301.56834,66.906803 302.50434,68.250805 304.95234,69.042805 C 306.29634,69.498804 306.65634,69.786805 306.65634,70.410805 C 306.65634,71.010804 306.20034,71.370805 305.09634,71.370805 C 304.01634,71.370805 302.62434,70.914804 301.95234,70.506805 L 301.30434,73.098805M 314.25459,73.938805 C 315.55059,73.938805 316.41459,73.002803 316.41459,71.730805 C 316.39059,70.386806 315.52659,69.498805 314.27859,69.498805 C 313.00659,69.498805 312.11859,70.410806 312.11859,71.730805 C 312.11859,73.002803 313.00659,73.938805 314.23059,73.938805 L 314.25459,73.938805M 326.99296,70.698805 C 326.44096,70.938804 325.76896,71.082805 324.90496,71.082805 C 323.12897,71.082805 321.68896,69.930803 321.68896,67.770805 C 321.66496,65.850807 322.91297,64.482805 324.83296,64.482805 C 325.79296,64.482805 326.44096,64.650805 326.87296,64.842805 L 327.44896,62.130805 C 326.68096,61.842805 325.62496,61.674805 324.66496,61.674805 C 320.29697,61.674805 317.94496,64.482808 317.94496,67.914805 C 317.94496,71.610801 320.36897,73.938805 324.16096,73.938805 C 325.55296,73.938805 326.77696,73.698804 327.42496,73.386805 L 326.99296,70.698805M 334.86909,73.938805 C 337.98909,73.938805 341.03709,71.970800 341.03709,67.698805 C 341.03709,64.146808 338.63709,61.674805 335.06109,61.674805 C 331.26909,61.674805 328.77309,64.098808 328.77309,67.890805 C 328.77309,71.682801 331.41309,73.938805 334.84509,73.938805 L 334.86909,73.938805M 334.89309,71.322805 C 333.35709,71.322805 332.51709,69.810803 332.51709,67.818805 C 332.51709,66.066806 333.18909,64.290805 334.91709,64.290805 C 336.57309,64.290805 337.24509,66.066806 337.24509,67.794805 C 337.24509,69.906803 336.35709,71.322805 334.91709,71.322805 L 334.89309,71.322805M 343.27321,73.674805 L 346.92121,73.674805 L 346.92121,67.746805 C 346.92121,67.434805 346.94521,67.170804 346.99321,66.930805 C 347.23321,65.778806 348.14522,65.082805 349.48921,65.082805 C 349.89721,65.082805 350.18521,65.130805 350.49721,65.178805 L 350.49721,61.746805 C 350.23321,61.698805 350.06521,61.674805 349.72921,61.674805 C 348.57721,61.674805 347.16121,62.394806 346.56121,64.122805 L 346.46521,64.122805 L 346.32121,61.938805 L 343.20121,61.938805 C 343.27321,62.946804 343.29721,64.074806 343.29721,65.802805 L 343.27321,73.674805M 362.78184,68.970805 C 362.82984,68.682805 362.90184,68.130804 362.90184,67.506805 C 362.90184,64.602808 361.46183,61.650805 357.66984,61.650805 C 353.61384,61.650805 351.74184,64.938808 351.74184,67.914805 C 351.74184,71.610801 354.02184,73.914805 358.00584,73.914805 C 359.58984,73.914805 361.05384,73.674804 362.25384,73.170805 L 361.77384,70.698805 C 360.78984,71.034804 359.78184,71.202805 358.53384,71.202805 C 356.82984,71.202805 355.34184,70.482803 355.22184,68.946805 L 362.78184,68.970805M 355.19784,66.450805 C 355.29384,65.490806 355.91784,64.074805 357.47784,64.074805 C 359.13384,64.074805 359.51784,65.586806 359.51784,66.450805 L 355.19784,66.450805M 366.94209,73.938805 C 368.23809,73.938805 369.10209,73.002803 369.10209,71.730805 C 369.07809,70.386806 368.21409,69.498805 366.96609,69.498805 C 365.69409,69.498805 364.80609,70.410806 364.80609,71.730805 C 364.80609,73.002803 365.69409,73.938805 366.91809,73.938805 L 366.94209,73.938805M 371.30446,78.426805 L 374.95246,78.426805 L 374.95246,72.594805 L 375.00046,72.594805 C 375.52846,73.362804 376.63247,73.938805 378.04846,73.938805 C 380.66446,73.938805 383.37646,71.922800 383.37646,67.650805 C 383.37646,63.906808 381.07246,61.674805 378.50446,61.674805 C 376.80047,61.674805 375.45646,62.346806 374.59246,63.570805 L 374.54446,63.570805 L 374.37646,61.938805 L 371.20846,61.938805 C 371.25646,63.042804 371.30446,64.338806 371.30446,65.874805 L 371.30446,78.426805M 374.95246,67.026805 C 374.95246,66.810805 374.97646,66.570804 375.02446,66.378805 C 375.26446,65.298806 376.17646,64.530805 377.20846,64.530805 C 378.84046,64.530805 379.68046,65.946807 379.68046,67.818805 C 379.68046,69.810803 378.74446,71.130805 377.16046,71.130805 C 376.10446,71.130805 375.26446,70.386804 375.02446,69.402805 C 374.97646,69.162805 374.95246,68.922804 374.95246,68.634805 L 374.95246,67.026805M 396.71221,61.938805 L 393.06421,61.938805 L 393.06421,68.922805 C 393.06421,69.234804 393.01621,69.498805 392.92021,69.714805 C 392.70421,70.290804 392.10421,70.986805 391.09621,70.986805 C 389.80022,70.986805 389.24821,69.954803 389.24821,68.250805 L 389.24821,61.938805 L 385.60021,61.938805 L 385.60021,68.826805 C 385.60021,72.450801 387.32822,73.938805 389.72821,73.938805 C 391.84021,73.938805 392.94421,72.738804 393.40021,72.018805 L 393.47221,72.018805 L 393.64021,73.674805 L 396.80821,73.674805 C 396.76021,72.690806 396.71221,71.442803 396.71221,69.906805 L 396.71221,61.938805M 399.66384,70.170805 C 399.66384,71.490803 399.61584,72.906805 399.56784,73.674805 L 402.66384,73.674805 L 402.80784,72.042805 L 402.85584,72.042805 C 403.67184,73.434803 405.01584,73.938805 406.38384,73.938805 C 409.07184,73.938805 411.73584,71.826800 411.73584,67.602805 C 411.75984,64.002808 409.71984,61.674805 406.91184,61.674805 C 405.27984,61.674805 404.05584,62.322806 403.35984,63.330805 L 403.31184,63.330805 L 403.31184,56.634805 L 399.66384,56.634805 L 399.66384,70.170805M 403.31184,66.954805 C 403.31184,66.714805 403.33584,66.498804 403.38384,66.282805 C 403.62384,65.226806 404.53584,64.482805 405.51984,64.482805 C 407.22384,64.482805 408.03984,65.922806 408.03984,67.746805 C 408.03984,69.858803 407.07984,71.058805 405.51984,71.058805 C 404.46384,71.058805 403.62384,70.290804 403.38384,69.330805 C 403.33584,69.138805 403.31184,68.922804 403.31184,68.682805 L 403.31184,66.954805M 414.00759,73.674805 L 417.65559,73.674805 L 417.65559,56.634805 L 414.00759,56.634805 L 414.00759,73.674805M 424.21809,73.674805 L 424.21809,61.938805 L 420.57009,61.938805 L 420.57009,73.674805 L 424.21809,73.674805M 422.39409,60.402805 C 423.66609,60.402805 424.45809,59.538804 424.45809,58.458805 C 424.43409,57.354806 423.66609,56.514805 422.41809,56.514805 C 421.17009,56.514805 420.35409,57.354806 420.35409,58.458805 C 420.35409,59.538804 421.14609,60.402805 422.37009,60.402805 L 422.39409,60.402805M 426.46059,73.098805 C 427.34859,73.578804 428.71659,73.938805 430.25259,73.938805 C 433.61259,73.938805 435.31659,72.330802 435.31659,70.122805 C 435.29259,68.418806 434.38059,67.266804 432.14859,66.522805 C 430.70859,66.018805 430.25259,65.730804 430.25259,65.154805 C 430.25259,64.578805 430.75659,64.218805 431.64459,64.218805 C 432.62859,64.218805 433.66059,64.602805 434.18859,64.866805 L 434.81259,62.370805 C 434.09259,62.010805 432.89259,61.674805 431.52459,61.674805 C 428.62059,61.674805 426.74859,63.330807 426.74859,65.538805 C 426.72459,66.906803 427.66059,68.250805 430.10859,69.042805 C 431.45259,69.498804 431.81259,69.786805 431.81259,70.410805 C 431.81259,71.010804 431.35659,71.370805 430.25259,71.370805 C 429.17259,71.370805 427.78059,70.914804 427.10859,70.506805 L 426.46059,73.098805M 437.53884,73.674805 L 441.18684,73.674805 L 441.18684,66.714805 C 441.18684,66.450805 441.21084,66.138804 441.30684,65.922805 C 441.57084,65.250805 442.17084,64.626805 443.13084,64.626805 C 444.49884,64.626805 445.02684,65.682806 445.02684,67.218805 L 445.02684,73.674805 L 448.67484,73.674805 L 448.67484,66.834805 C 448.67484,63.282808 446.89884,61.674805 444.57084,61.674805 C 443.89884,61.674805 443.22684,61.842805 442.67484,62.130805 C 442.09884,62.418804 441.61884,62.826805 441.23484,63.354805 L 441.18684,63.354805 L 441.18684,56.634805 L 437.53884,56.634805 L 437.53884,73.674805M 450.13734,75.474805 L 450.13734,76.674805 L 462.13734,76.674805 L 462.13734,75.474805 L 450.13734,75.474805M 477.18834,57.090805 C 475.91634,58.962803 474.47634,62.130809 474.45234,66.810805 C 474.45234,71.442800 475.91634,74.610807 477.18834,76.482805 L 479.73234,76.482805 C 478.38834,74.226807 477.30834,71.034800 477.30834,66.810805 C 477.30834,62.514809 478.38834,59.298802 479.73234,57.090805 L 477.18834,57.090805M 483.94321,76.482805 C 485.21521,74.586807 486.65521,71.442800 486.67921,66.786805 C 486.67921,62.106809 485.21521,58.938803 483.94321,57.090805 L 481.39921,57.090805 C 482.74321,59.322802 483.82321,62.514809 483.82321,66.762805 C 483.82321,71.010800 482.74321,74.250807 481.39921,76.482805 L 483.94321,76.482805M 490.57809,76.314805 C 491.73009,74.442807 492.81009,71.922802 493.60209,69.474805 L 489.88209,69.714805 C 489.54609,71.898802 488.89809,74.394807 488.13009,76.530805 L 490.57809,76.314805M 234.79809,80.634808 L 234.79809,86.994808 L 234.75009,86.994808 C 234.22209,86.202808 233.11809,85.674808 231.65409,85.674808 C 228.84609,85.674808 226.37409,87.978808 226.39809,91.914808 C 226.39809,95.562798 228.63009,97.938798 231.41409,97.938798 C 232.92609,97.938798 234.36609,97.266798 235.08609,95.970798 L 235.15809,95.970798 L 235.30209,97.674798 L 238.54209,97.674798 C 238.49409,96.882798 238.44609,95.514798 238.44609,94.170798 L 238.44609,80.634808 L 234.79809,80.634808M 234.79809,92.466808 C 234.79809,92.754808 234.77409,93.042808 234.72609,93.282808 C 234.51009,94.314798 233.64609,95.034798 232.59009,95.034798 C 231.07809,95.034798 230.09409,93.786798 230.09409,91.818808 C 230.09409,89.970808 230.93409,88.482808 232.61409,88.482808 C 233.74209,88.482808 234.53409,89.274808 234.75009,90.258808 C 234.79809,90.474808 234.79809,90.714808 234.79809,90.930808 L 234.79809,92.466808M 246.79096,97.938798 C 249.91096,97.938798 252.95896,95.970798 252.95896,91.698808 C 252.95896,88.146808 250.55896,85.674808 246.98296,85.674808 C 243.19097,85.674808 240.69496,88.098808 240.69496,91.890808 C 240.69496,95.682798 243.33497,97.938798 246.76696,97.938798 L 246.79096,97.938798M 246.81496,95.322798 C 245.27896,95.322798 244.43896,93.810798 244.43896,91.818808 C 244.43896,90.066808 245.11096,88.290808 246.83896,88.290808 C 248.49496,88.290808 249.16696,90.066808 249.16696,91.794808 C 249.16696,93.906798 248.27896,95.322798 246.83896,95.322798 L 246.81496,95.322798M 263.57109,94.698798 C 263.01909,94.938798 262.34709,95.082798 261.48309,95.082798 C 259.70709,95.082798 258.26709,93.930798 258.26709,91.770808 C 258.24309,89.850808 259.49109,88.482808 261.41109,88.482808 C 262.37109,88.482808 263.01909,88.650808 263.45109,88.842808 L 264.02709,86.130808 C 263.25909,85.842808 262.20309,85.674808 261.24309,85.674808 C 256.87509,85.674808 254.52309,88.482808 254.52309,91.914808 C 254.52309,95.610798 256.94709,97.938798 260.73909,97.938798 C 262.13109,97.938798 263.35509,97.698798 264.00309,97.386798 L 263.57109,94.698798M 277.08721,85.938808 L 273.43921,85.938808 L 273.43921,92.922808 C 273.43921,93.234808 273.39121,93.498808 273.29521,93.714798 C 273.07921,94.290798 272.47921,94.986798 271.47121,94.986798 C 270.17522,94.986798 269.62321,93.954798 269.62321,92.250808 L 269.62321,85.938808 L 265.97521,85.938808 L 265.97521,92.826808 C 265.97521,96.450798 267.70322,97.938798 270.10321,97.938798 C 272.21521,97.938798 273.31921,96.738798 273.77521,96.018798 L 273.84721,96.018798 L 274.01521,97.674798 L 277.18321,97.674798 C 277.13521,96.690798 277.08721,95.442798 277.08721,93.906798 L 277.08721,85.938808M 280.54284,83.730808 L 280.54284,85.938808 L 278.98284,85.938808 L 278.98284,88.626808 L 280.54284,88.626808 L 280.54284,93.450808 C 280.54284,95.106798 280.87884,96.234798 281.55084,96.930798 C 282.15084,97.530798 283.13484,97.938798 284.31084,97.938798 C 285.31884,97.938798 286.20684,97.794798 286.66284,97.626798 L 286.63884,94.866798 C 286.30284,94.938798 286.06284,94.962798 285.55884,94.962798 C 284.47884,94.962798 284.11884,94.314798 284.11884,92.898808 L 284.11884,88.626808 L 286.73484,88.626808 L 286.73484,85.938808 L 284.11884,85.938808 L 284.11884,82.746808 L 280.54284,83.730808M 292.49934,97.674798 L 292.49934,85.938808 L 288.85134,85.938808 L 288.85134,97.674798 L 292.49934,97.674798M 290.67534,84.402808 C 291.94734,84.402808 292.73934,83.538808 292.73934,82.458808 C 292.71534,81.354808 291.94734,80.514808 290.69934,80.514808 C 289.45134,80.514808 288.63534,81.354808 288.63534,82.458808 C 288.63534,83.538808 289.42734,84.402808 290.65134,84.402808 L 290.67534,84.402808M 295.41384,97.674798 L 299.06184,97.674798 L 299.06184,80.634808 L 295.41384,80.634808 L 295.41384,97.674798M 301.30434,97.098798 C 302.19234,97.578798 303.56034,97.938798 305.09634,97.938798 C 308.45634,97.938798 310.16034,96.330798 310.16034,94.122798 C 310.13634,92.418808 309.22434,91.266808 306.99234,90.522808 C 305.55234,90.018808 305.09634,89.730808 305.09634,89.154808 C 305.09634,88.578808 305.60034,88.218808 306.48834,88.218808 C 307.47234,88.218808 308.50434,88.602808 309.03234,88.866808 L 309.65634,86.370808 C 308.93634,86.010808 307.73634,85.674808 306.36834,85.674808 C 303.46434,85.674808 301.59234,87.330808 301.59234,89.538808 C 301.56834,90.906798 302.50434,92.250808 304.95234,93.042808 C 306.29634,93.498808 306.65634,93.786798 306.65634,94.410798 C 306.65634,95.010798 306.20034,95.370798 305.09634,95.370798 C 304.01634,95.370798 302.62434,94.914798 301.95234,94.506798 L 301.30434,97.098798M 314.25459,97.938798 C 315.55059,97.938798 316.41459,97.002798 316.41459,95.730798 C 316.39059,94.386798 315.52659,93.498808 314.27859,93.498808 C 313.00659,93.498808 312.11859,94.410798 312.11859,95.730798 C 312.11859,97.002798 313.00659,97.938798 314.23059,97.938798 L 314.25459,97.938798M 326.99296,94.698798 C 326.44096,94.938798 325.76896,95.082798 324.90496,95.082798 C 323.12897,95.082798 321.68896,93.930798 321.68896,91.770808 C 321.66496,89.850808 322.91297,88.482808 324.83296,88.482808 C 325.79296,88.482808 326.44096,88.650808 326.87296,88.842808 L 327.44896,86.130808 C 326.68096,85.842808 325.62496,85.674808 324.66496,85.674808 C 320.29697,85.674808 317.94496,88.482808 317.94496,91.914808 C 317.94496,95.610798 320.36897,97.938798 324.16096,97.938798 C 325.55296,97.938798 326.77696,97.698798 327.42496,97.386798 L 326.99296,94.698798M 334.86909,97.938798 C 337.98909,97.938798 341.03709,95.970798 341.03709,91.698808 C 341.03709,88.146808 338.63709,85.674808 335.06109,85.674808 C 331.26909,85.674808 328.77309,88.098808 328.77309,91.890808 C 328.77309,95.682798 331.41309,97.938798 334.84509,97.938798 L 334.86909,97.938798M 334.89309,95.322798 C 333.35709,95.322798 332.51709,93.810798 332.51709,91.818808 C 332.51709,90.066808 333.18909,88.290808 334.91709,88.290808 C 336.57309,88.290808 337.24509,90.066808 337.24509,91.794808 C 337.24509,93.906798 336.35709,95.322798 334.91709,95.322798 L 334.89309,95.322798M 343.27321,97.674798 L 346.92121,97.674798 L 346.92121,91.746808 C 346.92121,91.434808 346.94521,91.170808 346.99321,90.930808 C 347.23321,89.778808 348.14522,89.082808 349.48921,89.082808 C 349.89721,89.082808 350.18521,89.130808 350.49721,89.178808 L 350.49721,85.746808 C 350.23321,85.698808 350.06521,85.674808 349.72921,85.674808 C 348.57721,85.674808 347.16121,86.394808 346.56121,88.122808 L 346.46521,88.122808 L 346.32121,85.938808 L 343.20121,85.938808 C 343.27321,86.946808 343.29721,88.074808 343.29721,89.802808 L 343.27321,97.674798M 362.78184,92.970808 C 362.82984,92.682808 362.90184,92.130808 362.90184,91.506808 C 362.90184,88.602808 361.46183,85.650808 357.66984,85.650808 C 353.61384,85.650808 351.74184,88.938808 351.74184,91.914808 C 351.74184,95.610798 354.02184,97.914798 358.00584,97.914798 C 359.58984,97.914798 361.05384,97.674798 362.25384,97.170798 L 361.77384,94.698798 C 360.78984,95.034798 359.78184,95.202798 358.53384,95.202798 C 356.82984,95.202798 355.34184,94.482798 355.22184,92.946808 L 362.78184,92.970808M 355.19784,90.450808 C 355.29384,89.490808 355.91784,88.074808 357.47784,88.074808 C 359.13384,88.074808 359.51784,89.586808 359.51784,90.450808 L 355.19784,90.450808M 366.94209,97.938798 C 368.23809,97.938798 369.10209,97.002798 369.10209,95.730798 C 369.07809,94.386798 368.21409,93.498808 366.96609,93.498808 C 365.69409,93.498808 364.80609,94.410798 364.80609,95.730798 C 364.80609,97.002798 365.69409,97.938798 366.91809,97.938798 L 366.94209,97.938798M 371.42446,97.674798 L 375.04846,97.674798 L 375.04846,91.866808 C 375.38446,91.938808 375.81646,91.962808 376.29646,91.962808 C 378.45646,91.962808 380.32846,91.410808 381.57646,90.258808 C 382.53646,89.370808 383.04046,88.026798 383.04046,86.418808 C 383.04046,84.834808 382.36846,83.490808 381.33646,82.698808 C 380.25646,81.810808 378.62446,81.378808 376.36846,81.378808 C 374.13647,81.378808 372.55246,81.522808 371.42446,81.714808 L 371.42446,97.674798M 375.04846,84.282808 C 375.31246,84.210808 375.81646,84.162808 376.56046,84.162808 C 378.40846,84.162808 379.41646,85.050808 379.41646,86.538808 C 379.41646,88.170798 378.21646,89.154808 376.27246,89.154808 C 375.74446,89.154808 375.36046,89.130808 375.04846,89.058808 L 375.04846,84.282808M 396.29034,85.938808 L 392.64234,85.938808 L 392.64234,92.922808 C 392.64234,93.234808 392.59434,93.498808 392.49834,93.714798 C 392.28234,94.290798 391.68234,94.986798 390.67434,94.986798 C 389.37834,94.986798 388.82634,93.954798 388.82634,92.250808 L 388.82634,85.938808 L 385.17834,85.938808 L 385.17834,92.826808 C 385.17834,96.450798 386.90634,97.938798 389.30634,97.938798 C 391.41834,97.938798 392.52234,96.738798 392.97834,96.018798 L 393.05034,96.018798 L 393.21834,97.674798 L 396.38634,97.674798 C 396.33834,96.690798 396.29034,95.442798 396.29034,93.906798 L 396.29034,85.938808M 399.24196,94.170798 C 399.24196,95.490798 399.19396,96.906798 399.14596,97.674798 L 402.24196,97.674798 L 402.38596,96.042798 L 402.43396,96.042798 C 403.24996,97.434798 404.59397,97.938798 405.96196,97.938798 C 408.64996,97.938798 411.31396,95.826798 411.31396,91.602808 C 411.33796,88.002808 409.29796,85.674808 406.48996,85.674808 C 404.85797,85.674808 403.63396,86.322808 402.93796,87.330808 L 402.88996,87.330808 L 402.88996,80.634808 L 399.24196,80.634808 L 399.24196,94.170798M 402.88996,90.954808 C 402.88996,90.714808 402.91396,90.498808 402.96196,90.282808 C 403.20196,89.226808 404.11396,88.482808 405.09796,88.482808 C 406.80196,88.482808 407.61796,89.922808 407.61796,91.746808 C 407.61796,93.858798 406.65796,95.058798 405.09796,95.058798 C 404.04196,95.058798 403.20196,94.290798 402.96196,93.330808 C 402.91396,93.138808 402.88996,92.922808 402.88996,92.682808 L 402.88996,90.954808M 413.58571,97.674798 L 417.23371,97.674798 L 417.23371,80.634808 L 413.58571,80.634808 L 413.58571,97.674798M 423.79621,97.674798 L 423.79621,85.938808 L 420.14821,85.938808 L 420.14821,97.674798 L 423.79621,97.674798M 421.97221,84.402808 C 423.24421,84.402808 424.03621,83.538808 424.03621,82.458808 C 424.01221,81.354808 423.24421,80.514808 421.99621,80.514808 C 420.74821,80.514808 419.93221,81.354808 419.93221,82.458808 C 419.93221,83.538808 420.72421,84.402808 421.94821,84.402808 L 421.97221,84.402808M 426.03871,97.098798 C 426.92671,97.578798 428.29472,97.938798 429.83071,97.938798 C 433.19071,97.938798 434.89471,96.330798 434.89471,94.122798 C 434.87071,92.418808 433.95871,91.266808 431.72671,90.522808 C 430.28672,90.018808 429.83071,89.730808 429.83071,89.154808 C 429.83071,88.578808 430.33471,88.218808 431.22271,88.218808 C 432.20671,88.218808 433.23871,88.602808 433.76671,88.866808 L 434.39071,86.370808 C 433.67071,86.010808 432.47071,85.674808 431.10271,85.674808 C 428.19872,85.674808 426.32671,87.330808 426.32671,89.538808 C 426.30271,90.906798 427.23872,92.250808 429.68671,93.042808 C 431.03071,93.498808 431.39071,93.786798 431.39071,94.410798 C 431.39071,95.010798 430.93471,95.370798 429.83071,95.370798 C 428.75071,95.370798 427.35871,94.914798 426.68671,94.506798 L 426.03871,97.098798M 437.11696,97.674798 L 440.76496,97.674798 L 440.76496,90.714808 C 440.76496,90.450808 440.78896,90.138808 440.88496,89.922808 C 441.14896,89.250808 441.74896,88.626808 442.70896,88.626808 C 444.07696,88.626808 444.60496,89.682808 444.60496,91.218808 L 444.60496,97.674798 L 448.25296,97.674798 L 448.25296,90.834808 C 448.25296,87.282808 446.47696,85.674808 444.14896,85.674808 C 443.47696,85.674808 442.80496,85.842808 442.25296,86.130808 C 441.67696,86.418808 441.19696,86.826808 440.81296,87.354808 L 440.76496,87.354808 L 440.76496,80.634808 L 437.11696,80.634808 L 437.11696,97.674798M 461.54746,92.970808 C 461.59546,92.682808 461.66746,92.130808 461.66746,91.506808 C 461.66746,88.602808 460.22746,85.650808 456.43546,85.650808 C 452.37947,85.650808 450.50746,88.938808 450.50746,91.914808 C 450.50746,95.610798 452.78747,97.914798 456.77146,97.914798 C 458.35546,97.914798 459.81946,97.674798 461.01946,97.170798 L 460.53946,94.698798 C 459.55546,95.034798 458.54746,95.202798 457.29946,95.202798 C 455.59547,95.202798 454.10746,94.482798 453.98746,92.946808 L 461.54746,92.970808M 453.96346,90.450808 C 454.05946,89.490808 454.68347,88.074808 456.24346,88.074808 C 457.89946,88.074808 458.28346,89.586808 458.28346,90.450808 L 453.96346,90.450808M 463.83571,97.674798 L 467.48371,97.674798 L 467.48371,91.746808 C 467.48371,91.434808 467.50771,91.170808 467.55571,90.930808 C 467.79571,89.778808 468.70772,89.082808 470.05171,89.082808 C 470.45971,89.082808 470.74771,89.130808 471.05971,89.178808 L 471.05971,85.746808 C 470.79571,85.698808 470.62771,85.674808 470.29171,85.674808 C 469.13971,85.674808 467.72371,86.394808 467.12371,88.122808 L 467.02771,88.122808 L 466.88371,85.938808 L 463.76371,85.938808 C 463.83571,86.946808 463.85971,88.074808 463.85971,89.802808 L 463.83571,97.674798" /> + </g> +</svg> diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/endnotes.py b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/endnotes.py new file mode 100644 index 000000000..de9d2a49f --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/endnotes.py @@ -0,0 +1,18 @@ +""" +Move footnotes to the end of the document. +""" + +from docutils import transforms +from docutils import nodes + +class EndNotes(transforms.Transform): + + default_priority = 950 + + def apply(self): + all_footnotes = [] + assert isinstance(self.document, nodes.document) + for footnote in self.document.traverse(nodes.footnote): + all_footnotes.append(footnote) + footnote.parent.remove(footnote) + self.document += all_footnotes diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/rst2html_endnotes.py b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/rst2html_endnotes.py new file mode 100755 index 000000000..73971b3d6 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/rst2html_endnotes.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python + +# Author: David Goodger +# Contact: goodger@python.org +# Revision: $Revision$ +# Date: $Date$ +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing HTML. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except: + pass + +from docutils.core import publish_cmdline, default_description + + +description = ('Generates (X)HTML documents from standalone reStructuredText ' + 'sources. ' + default_description) + + + +# Inserted ---------------------------------------- +import endnotes +from docutils.readers import standalone + +class EndNotesReader(standalone.Reader): + + def get_transforms(self): + return standalone.Reader.get_transforms(self) + \ + [endnotes.EndNotes] +# Inserted ---------------------------------------- + + +publish_cmdline(reader=EndNotesReader(), + writer_name='html', description=description) diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/test.html b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/test.html new file mode 100644 index 000000000..7bf8c6c33 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/test.html @@ -0,0 +1,307 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> +<title></title> +<style type="text/css"> + +/* +:Author: David Goodger +:Contact: goodger@users.sourceforge.net +:Date: $Date$ +:Revision: $Revision$ +:Copyright: This stylesheet has been placed in the public domain. + +Default cascading style sheet for the HTML output of Docutils. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. +*/ + +/* used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0 } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 ! important } + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 ! important } + +.last, .with-subtitle { + margin-bottom: 0 ! important } + +.hidden { + display: none } + +a.toc-backref { + text-decoration: none ; + color: black } + +blockquote.epigraph { + margin: 2em 5em ; } + +dl.docutils dd { + margin-bottom: 0.5em } + +/* Uncomment (and remove this text!) to get bold-faced definition list terms +dl.docutils dt { + font-weight: bold } +*/ + +div.abstract { + margin: 2em 5em } + +div.abstract p.topic-title { + font-weight: bold ; + text-align: center } + +div.admonition, div.attention, div.caution, div.danger, div.error, +div.hint, div.important, div.note, div.tip, div.warning { + margin: 2em ; + border: medium outset ; + padding: 1em } + +div.admonition p.admonition-title, div.hint p.admonition-title, +div.important p.admonition-title, div.note p.admonition-title, +div.tip p.admonition-title { + font-weight: bold ; + font-family: sans-serif } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title { + color: red ; + font-weight: bold ; + font-family: sans-serif } + +/* Uncomment (and remove this text!) to get reduced vertical space in + compound paragraphs. +div.compound .compound-first, div.compound .compound-middle { + margin-bottom: 0.5em } + +div.compound .compound-last, div.compound .compound-middle { + margin-top: 0.5em } +*/ + +div.dedication { + margin: 2em 5em ; + text-align: center ; + font-style: italic } + +div.dedication p.topic-title { + font-weight: bold ; + font-style: normal } + +div.figure { + margin-left: 2em ; + margin-right: 2em } + +div.footer, div.header { + clear: both; + font-size: smaller } + +div.line-block { + display: block ; + margin-top: 1em ; + margin-bottom: 1em } + +div.line-block div.line-block { + margin-top: 0 ; + margin-bottom: 0 ; + margin-left: 1.5em } + +div.sidebar { + margin-left: 1em ; + border: medium outset ; + padding: 1em ; + background-color: #ffffee ; + width: 40% ; + float: right ; + clear: right } + +div.sidebar p.rubric { + font-family: sans-serif ; + font-size: medium } + +div.system-messages { + margin: 5em } + +div.system-messages h1 { + color: red } + +div.system-message { + border: medium outset ; + padding: 1em } + +div.system-message p.system-message-title { + color: red ; + font-weight: bold } + +div.topic { + margin: 2em } + +h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, +h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { + margin-top: 0.4em } + +h1.title { + text-align: center } + +h2.subtitle { + text-align: center } + +hr.docutils { + width: 75% } + +img.align-left { + clear: left } + +img.align-right { + clear: right } + +ol.simple, ul.simple { + margin-bottom: 1em } + +ol.arabic { + list-style: decimal } + +ol.loweralpha { + list-style: lower-alpha } + +ol.upperalpha { + list-style: upper-alpha } + +ol.lowerroman { + list-style: lower-roman } + +ol.upperroman { + list-style: upper-roman } + +p.attribution { + text-align: right ; + margin-left: 50% } + +p.caption { + font-style: italic } + +p.credits { + font-style: italic ; + font-size: smaller } + +p.label { + white-space: nowrap } + +p.rubric { + font-weight: bold ; + font-size: larger ; + color: maroon ; + text-align: center } + +p.sidebar-title { + font-family: sans-serif ; + font-weight: bold ; + font-size: larger } + +p.sidebar-subtitle { + font-family: sans-serif ; + font-weight: bold } + +p.topic-title { + font-weight: bold } + +pre.address { + margin-bottom: 0 ; + margin-top: 0 ; + font-family: serif ; + font-size: 100% } + +pre.literal-block, pre.doctest-block { + margin-left: 2em ; + margin-right: 2em } + +span.classifier { + font-family: sans-serif ; + font-style: oblique } + +span.classifier-delimiter { + font-family: sans-serif ; + font-weight: bold } + +span.interpreted { + font-family: sans-serif } + +span.option { + white-space: nowrap } + +span.pre { + white-space: pre } + +span.problematic { + color: red } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80% } + +table.citation { + border-left: solid 1px gray; + margin-left: 1px } + +table.docinfo { + margin: 2em 4em } + +table.docutils { + margin-top: 0.5em ; + margin-bottom: 0.5em } + +table.footnote { + border-left: solid 1px black; + margin-left: 1px } + +table.docutils td, table.docutils th, +table.docinfo td, table.docinfo th { + padding-left: 0.5em ; + padding-right: 0.5em ; + vertical-align: top } + +table.docutils th.field-name, table.docinfo th.docinfo-name { + font-weight: bold ; + text-align: left ; + white-space: nowrap ; + padding-left: 0 } + +h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, +h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { + font-size: 100% } + +ul.auto-toc { + list-style-type: none } + +</style> +</head> +<body> +<div class="document"> +<p>Test. <a class="footnote-reference" href="#id2" id="id1" name="id1">[1]</a></p> +<p>Second. <a class="footnote-reference" href="#id4" id="id3" name="id3">[2]</a></p> +<p>Another test.</p> +<table class="docutils footnote" frame="void" id="id2" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id1" name="id2">[1]</a></td><td>First footnote.</td></tr> +</tbody> +</table> +<table class="docutils footnote" frame="void" id="id4" rules="none"> +<colgroup><col class="label" /><col /></colgroup> +<tbody valign="top"> +<tr><td class="label"><a class="fn-backref" href="#id3" name="id4">[2]</a></td><td>Second footnote.</td></tr> +</tbody> +</table> +</div> +</body> +</html> diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/test.txt b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/test.txt new file mode 100644 index 000000000..c06ab7136 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/demo/test.txt @@ -0,0 +1,9 @@ +Test. [1]_ + +.. [1] First footnote. + +Second. [2]_ + +.. [2] Second footnote. + +Another test. diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/doctree-demo.txt b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/doctree-demo.txt new file mode 100644 index 000000000..a291c09bd --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/doctree-demo.txt @@ -0,0 +1,3 @@ +I like the Python_ language. + +.. _Python: http://www.python.org/ diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/outline.txt b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/outline.txt new file mode 100644 index 000000000..339c0bc5f --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/outline.txt @@ -0,0 +1,90 @@ +====================================================================== + Docutils Developers Tutorial: Architecture, Extending, and Embedding +====================================================================== + +:Author: David Goodger <goodger@python.org> +:Author: Felix Wiemann <Felix.Wiemann@ososo.de> +:Timeslot: 45 minutes +:Intended audience: intermediate to advanced programmers + + +Summary of Presentation +======================= + +A very quick overview of the Docutils architecture, followed by +examples of using Docutils in applications, extending Docutils with +new plug-ins, languages, and Writers, and extending reStructuredText +with directives and interpreted text roles. Finally, we will create +and test a new directive, live! + + +Presentation Outline +==================== + +* Introductions + + - David Goodger: project founder & architect + + - Felix Wiemann: release manager, joined the project about 2 years + ago + +* What is Docutils? + + - Vision -- mission statement [DJG: docs/ref/rst/introduction.txt] + + - Current status + + - Missing elements: + + - Plugin mechanism + + - Python Source Reader + +* Quick overview of the Docutils architecture: + + - How the components work together. + + - High-level execution trace of a typical run. + + - Test suite + + (components.svg modified) + +* Document Tree + +* Using Docutils in your own app. + + - The Docutils Publisher convenience functions. + + - Examples of existing uses: Docutils front-end tools, wikis, etc. + +* Extending Docutils. + + Docutils is a modular system, and components (Reader, Parser, + Writer) are specified at run time. New versions of components can + be added, directly to the Docutils core or in your own application. + + - Languages + +* Test-first development: the test suite + + - Format of tests + + - Adding tests, test modules, test packages + +* Detailed overview of Writer components + + - Translator class: Visitor pattern, tree traversal, stack-based + context + + - How to create a new Writer + +* The anatomy of a Transform + +* Extending reStructuredText: + + - Directives + + - Interpreted text roles + +* Write and test a directive, live. diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/presentation.txt b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/presentation.txt new file mode 100644 index 000000000..a47439c7a --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/presentation.txt @@ -0,0 +1,589 @@ +.. -*- coding: utf-8 -*- +.. include:: <s5defs.txt> + +================================================== + Docutils: Architecture, Extending, and Embedding +================================================== + +.. class:: huge center + + | David Goodger + | & + | Felix Wiemann + +.. class:: big center + +| http://docutils.sourceforge.net +| +| + +.. container:: handout + + We will describe the architecture of Docutils, how to add + functionality to Docutils, and how to use Docutils in your own + applications. Not necessarily in that order. + +.. topic:: Introductions + :class: handout + + David Goodger: + + * project founder & architect + * a Python Enhancement Proposal (PEP) Editor + * was just elected Director of the Board of the PSF and appointed Secretary + * from, and currently living in: Montreal, Canada + * work for a large investment organization, writing software in Python + + Felix Wiemann: + + * joined the project about 2 years ago + * release manager + * from Paderborn, Germany + * work for a large software company in Paderborn, doing + automation work in Python + + +What is Docutils? +================= + +.. class:: incremental + +* Text processing framework :handout:`(because we need more + frameworks)` + +* A set of tools for processing plaintext documentation into useful + formats, such as HTML, XML, and LaTeX + +* 111,111 lines of code, tests, & documentation + + .. class:: handout + + Split about evenly between the three. + +* Existing components: + + .. class:: incremental + + - reStructuredText parser + - Standalone document, PEP, document tree readers + - HTML (+ S5 & PEP), LaTeX, :handout:`native` XML, pseudo-XML + writers; experimental :handout:`(incomplete) writers for` + OpenDocument, RTF, man page + +* Internal document model (tree of element & text nodes) + + .. class:: handout + + The doctree is the glue that holds everything together. + + +What is reStructuredText? +========================= + +.. class:: incremental + +* WYSIWYG plain-text markup language + +* Very easy to read, unobtrusive markup + +* Easy to write + +* Powerful + + .. class:: handout + + Powerful enough for most uses, yet simple enough to fit your + brain. (DG) I designed it to fit *my* brain, which is relatively + small. + +* Extensible + +* Used for documentation, for taking notes, and for making + presentations. + + .. class:: handout + + There’s even a book that has been written with reStructuredText + (“C++ Template Metaprogramming” by David Abrahams & Aleksey + Gurtovoy), but they ran into the limitations of reST and + Docutils, so we wouldn't recommend this approach — yet. + reStructuredText has to (and will) become more powerful. + + +Status +====== + +.. class:: incremental + + Docutils 0.4 released January 9. + + * Experimental + + `(That’s what the “0.” means)` + + .. class:: incremental + + - API subject to change\ `, but no arbitrary changes` + - Document model too + - A few bugs `(details, details)` + - Lots of to-do items `(come join our sprint!)` + + * Yet it’s already very usable! :-) + + * From release 0.4, micro releases (0.4.x) are bugfix-only. + We’re currently working on 0.5. + + +Existing Uses +============= + +* Docutils front-end tools (rst2html.py, rst2s5.py, rstpep2html.py, etc.) + +* Wikis (MoinMoin, ZWiki, Trac, others) + +* Blogs + +* PEPs, GLEPs :handout:`(Gentoo Linux)`, TIPs :handout:`(TCL)`, PEGs + :handout:`(Gzz)` + +* Auto-documentation systems: Epydoc, Pudge, Endo + +* Roundup + +* Documentation: `from NASA` `to the William Tyndale Society Journal` + + +What’s Missing? +=============== + +.. class:: incremental + + Major features: + + * Plugin support + + .. class:: handout + + There are many existing extensions to Docutils (mostly in the + sandbox_), but they aren’t easily usable as plugins. + + .. _sandbox: http://docutils.sourceforge.net/sandbox/ + + We want to be able to specify “use extension X, Y, and Z” from + the command line, or have a directory for auto-loaded plugins, + or both. + + If you're a plugin guru, we could use your advice! + + * Python source reader + + .. class:: handout + + This was the original “itch” that Docutils was created to + “scratch”, but the PySource reader isn’t functional yet. + + Sprint! (Hint, hint) + + * Nested inline markup + + * Many more things (better GUI, reStructuredText writer, *<insert + your idea here>*, ...) + + .. class:: handout + + See the `to-do list`_. + + .. _to-do list: http://docutils.sourceforge.net/docs/dev/todo.html + + Please come to the Docutils Sprint and help out! + + +Component Architecture +====================== + +\ \ + +.. image:: components.png + +.. class:: handout + +In the component diagram, thick solid lines denote the transfer of +standard document tree data. The double line between Reader and +Transformer denotes a possibly non-standard document tree. + + +Data Flow (1) +============= + +\ \ + +.. image:: components-small.png + :align: right + +.. class:: handout + +Docutils components are selected at run time by the client application +or front end. + +.. class:: incremental + +1. The **Publisher** calls the **Reader**. + + .. class:: handout + + The Reader understands the context of the input. For example, the + PEP Reader knows that PEPs begin with an RFC-822-style header, that + a table of contents should be added after the header, and that all + hyperlinks should be collected near the end of the document. + + Typical text files use the Standalone Reader. To extract + docstrings & comments from Python source code, you’d use the Python + Source Reader (under active development). To reprocess an existing + document tree, use the doctree Reader. + +2. The Reader calls an **Input** object to gather text data. + + .. class:: handout + + The Input classes provide a uniform interface for reading from + arbitrary low-level input sources, such as files, strings, and even + pre-parsed document trees. Input objects handle the decoding of + input text to Unicode. Unicode is exclusively used internally. + +3. The Reader calls the **Parser**, passing the input text. + + .. class:: handout + + There are currently two parsers installed in Docutils: the + reStructuredText Parser, and the "Null" parser (used for + reprocessing existing document trees, in conjunction with the + doctree Reader and Input class). The parser generates a **document + tree**, a tree of element and Text nodes, and returns it to the + Reader. + +4. The Reader returns the doctree(s) to the Publisher. + + +Data Flow (2) +============= + +\ \ + +.. image:: components-small.png + :align: right + +.. class:: incremental + +5. The Publisher runs the **Transformer**. + + .. class:: handout + + The Transformer applies various **Transforms** to the document + tree, in a pre-determined order. Transforms modify the document + tree in-place: resolving references, numbering sections, creating + tables of contents, and performing other functions on the entire + document or parts of the document. + +6. The Transformer returns the doctree to the Publisher. + + .. class:: handout + + At this point, the doctree is standard, no matter what Parser was + used or Reader context was in place. + +7. The Publisher calls the **Writer**. + + .. class:: handout + + The Writer translates the document tree to a format like HTML or + LaTeX. + +8. The Writer sends the result to an **Output** object. + + .. class:: handout + + As with Input, the Output object provides a uniform interface for + writing to arbitrary low-level destinations, such as files and + strings. Output objects also handle text encoding. + +.. class:: handout + + The Publisher directly calls only the Reader, the Transformer, and the + Writer. However it manages *all* objects (Input, Output, Reader, + Parser, Transformer, Transform, and Writer instances) and passes them + where they are needed. For example, the Input and Parser objects are + passed to the Reader. + + All of this complexity is encapsulated in the Publisher convenience + functions; more on these later. + + +Document Tree +============= + +.. class:: incremental + + Sample input text:: + + """ + I like the Python_ language. + + .. _Python: http://www.python.org/ + """ + + Resulting doctree:: + + <document source="doctree-demo.txt"> + <paragraph> + I like the + <reference + refuri="http://www.python.org/"> + Python + language. + +.. class:: handout + + The document tree data structure is similar to a DOM tree, but with + specific node names (classes) instead of DOM’s generic nodes. The + schema is documented in an XML Document Type Definition (DTD), + which comes in two parts: + + * the Docutils Generic DTD, docutils.dtd, and + + * the OASIS Exchange Table Model, soextbl.dtd. + + The DTD defines a rich set of elements, suitable for many input and + output formats. The DTD retains all information necessary to + reconstruct the original input text, or a reasonable facsimile + thereof. + + The document tree holds the components of Docutils together. The + document tree is the unifying intermediate data structure used + internally throughout Docutils, first created by the Parser and + translated by the Writer. The``docutils.nodes`` module is a class + library implementing the nodes of the document tree. + + +Docutils as a Library (1) +========================= + +.. class:: handout + +How to use Docutils from your own application. + +.. class:: incremental + + Convenience functions, from ``docutils.core``: + + * .. parsed-literal:: + + **publish_cmdline**\ (writer_name='html', + \ \ \ description='...') + + .. class:: handout + + The ``publish_cmdline`` function is used by all the front-end + tools provided with Docutils. The example above is from + ``rst2html.py``. + + * .. parsed-literal:: + + **publish_file**\ (source_path='test.txt', + \ \ \ destination_path='test.tex', + \ \ \ writer_name='latex') + + .. class:: handout + + You can also pass file objects in the ``source`` and + ``destination`` parameters. + + * .. parsed-literal:: + + input = get_rst_document() + output = **publish_string**\ (source=input, + \ \ \ writer_name='html') + + .. class:: handout + + This is what is typically used in wikis and similar applications. + + +Docutils as a Library (2) +========================= + +* ``publish_doctree``: + + .. class:: incremental + + .. parsed-literal:: + + >>> input = open('test.txt', 'r') + >>> document = **publish_doctree**\ (source=input) + `>>> print document.pformat()` + `<document source="<string>"> + <paragraph> + This is a test.` + + `>>> print document[0].pformat()` + `<paragraph> + This is a test.` + + +Docutils as a Library (3) +========================= + +* ``publish_from_doctree``: + + .. class:: incremental + + .. parsed-literal:: + + >>> output = **publish_from_doctree**\ ( + ... document, writer_name='html') + `>>> print output` + `<?xml version="1.0" encoding="utf-8" ?> + <!DOCTYPE html PUBLIC ...> + <html xmlns="..." xml:lang="en" lang="en"> + <head>...</head> + <body> + <div class="document"> + <p>This is a test.</p> + </div> + </body> + </html>` + +.. class:: handout + + Nabu uses the ``publish_doctree`` and ``publish_from_doctree`` functions. + + +Extending Docutils +================== + +.. class:: handout + + Docutils is completely modular. New components of all types can be + added: + +.. class:: incremental + + * Readers + * Parsers + * Writers + + .. + + * Transforms + + +Test-First Development +====================== + +The Test Suite +-------------- + +.. class:: incremental + +- based on unittest.py + + .. class:: handout + + but with + +- significant additions + +- data-driven + +- :handout:`we have` Test *modules* & test *packages* + + - ``test_*.py`` + - ``test_*/`` + + .. class:: handout + + (requires an __init__.py module; a real package!) + +- 1000 tests! + +.. class:: handout + + (DG) I first learned unit testing when I began Docutils. There is + absolutely no way I could have developed Docutils without unit + testing. + + +Extending reST +============== + +.. class:: handout + + reStructuredText has three extension mechanisms: + +.. class:: incremental + + * directives + + * interpreted text roles + + * language translations + + .. class:: incremental + + 19 languages supported: `English,` `German,` `French,` `Dutch,` + `Italian,` `Russian,` `Esperanto,` `Japanese,` `Chinese` + `(simplified & traditional!)` `... and it’s easy to add new + languages` + + +Language Example +================ + +.. class:: incremental + + German input text\ :handout:`(“bild” is German for “image”)`:: + + """ + .. bild:: test.png + """ + + Process with this command line: + + .. parsed-literal:: + + rst2html.py **--language de** test.txt test.html + + +Write a Transform +================= + + +Sprint! +======= + +.. class:: huge center + +Join the Docutils sprint! + +.. class:: handout + + We will both be here for all 4 sprint days. + + +And that’s just the beginning! +============================== + +.. class:: big center incremental + +| http://docutils.sourceforge.net +| +| `docutils-users@lists.sourceforge.net` +| +| `docutils-develop@lists.sourceforge.net` + +.. class:: huge center incremental + + Did we mention the sprint? + + Thanks for listening! + + Questions? `We’ve got answers!` diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/blank.gif b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/blank.gif Binary files differnew file mode 100644 index 000000000..75b945d25 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/blank.gif diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/framing.css b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/framing.css new file mode 100644 index 000000000..0a6c865fc --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/framing.css @@ -0,0 +1,25 @@ +/* This file has been placed in the public domain. */ +/* The following styles size, place, and layer the slide components. + Edit these if you want to change the overall slide layout. + The commented lines can be uncommented (and modified, if necessary) + to help you with the rearrangement process. */ + +/* target = 1024x768 */ + +div#header, div#footer, .slide {width: 100%; top: 0; left: 0;} +div#header {position: fixed; top: 0; height: 3em; z-index: 1;} +div#footer {visibility: hidden} +.slide {top: 0; width: 92%; padding: 2.5em 4% 4%; z-index: 2;} +div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} +div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; + margin: 0;} +#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; + z-index: 10;} +html>body #currentSlide {position: fixed;} + +/* +div#header {background: #FCC;} +div#footer {background: #CCF;} +div#controls {background: #BBD;} +div#currentSlide {background: #FFC;} +*/ diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/iepngfix.htc b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/iepngfix.htc new file mode 100644 index 000000000..9f3d628b5 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/iepngfix.htc @@ -0,0 +1,42 @@ +<public:component> +<public:attach event="onpropertychange" onevent="doFix()" /> + +<script> + +// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com +// Free usage permitted as long as this notice remains intact. + +// This must be a path to a blank image. That's all the configuration you need here. +var blankImg = 'ui/default/blank.gif'; + +var f = 'DXImageTransform.Microsoft.AlphaImageLoader'; + +function filt(s, m) { + if (filters[f]) { + filters[f].enabled = s ? true : false; + if (s) with (filters[f]) { src = s; sizingMethod = m } + } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")'; +} + +function doFix() { + if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) || + (event && !/(background|src)/.test(event.propertyName))) return; + + if (tagName == 'IMG') { + if ((/\.png$/i).test(src)) { + filt(src, 'image'); // was 'scale' + src = blankImg; + } else if (src.indexOf(blankImg) < 0) filt(); + } else if (style.backgroundImage) { + if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) { + var s = RegExp.$1; + style.backgroundImage = ''; + filt(s, 'crop'); + } else filt(); + } +} + +doFix(); + +</script> +</public:component>
\ No newline at end of file diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/opera.css b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/opera.css new file mode 100644 index 000000000..c9d1148be --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/opera.css @@ -0,0 +1,8 @@ +/* This file has been placed in the public domain. */ +/* DO NOT CHANGE THESE unless you really want to break Opera Show */ +.slide { + visibility: visible !important; + position: static !important; + page-break-before: always; +} +#slide0 {page-break-before: avoid;} diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/outline.css b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/outline.css new file mode 100644 index 000000000..fa767e227 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/outline.css @@ -0,0 +1,16 @@ +/* This file has been placed in the public domain. */ +/* Don't change this unless you want the layout stuff to show up in the + outline view! */ + +.layout div, #footer *, #controlForm * {display: none;} +#footer, #controls, #controlForm, #navLinks, #toggle { + display: block; visibility: visible; margin: 0; padding: 0;} +#toggle {float: right; padding: 0.5em;} +html>body #toggle {position: fixed; top: 0; right: 0;} + +/* making the outline look pretty-ish */ + +#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} +#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} + +.outline {display: inline ! important;} diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/pretty.css b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/pretty.css new file mode 100644 index 000000000..1d0d68369 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/pretty.css @@ -0,0 +1,123 @@ +/* This file has been placed in the public domain. */ +/* Following are the presentation styles -- edit away! */ + +html, body {margin: 0; padding: 0;} +body {background: white; color: black;} +/* Replace the background style above with the style below (and again for + div#header) for a graphic: */ +/* background: white url(bodybg.gif) -16px 0 no-repeat; */ +:link, :visited {text-decoration: none; color: #00C;} +#controls :active {color: #88A !important;} +#controls :focus {outline: 1px dotted #227;} +h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} + +blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;} +blockquote p {margin: 0;} + +kbd {font-weight: bold; font-size: 1em;} +sup {font-size: smaller; line-height: 1px;} + +.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;} +.slide ul ul li {list-style: square;} +.slide img.leader {display: block; margin: 0 auto;} +.slide tt {font-size: 90%;} + +div#header {background: #ffff60;} +/* div#header, div#footer {background: #005; color: #AAB; font-family: sans-serif;} */ +/* background: #005 url(bodybg.gif) -16px 0 no-repeat; */ +div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} +#footer h1 {display: block; padding: 0 1em;} +#footer h2 {display: block; padding: 0.8em 1em 0;} + +.slide {font-size: 1.2em;} +.slide h1 {position: absolute; top: 0.45em; z-index: 1; + margin: 0; padding-left: 0.7em; white-space: nowrap; + font: bold 150% sans-serif;} +.slide h2 {font: bold 120%/1em sans-serif; padding-top: 0.5em;} +.slide h3 {font: bold 100% sans-serif; padding-top: 0.5em;} +h1 abbr {font-variant: small-caps;} + +div#controls {position: absolute; left: 50%; bottom: 0; + width: 50%; text-align: right; font: bold 0.9em sans-serif;} +html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;} +div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; + margin: 0; padding: 0;} +#controls #navLinks a {padding: 0; margin: 0 0.5em; + background: #005; border: none; color: #779; cursor: pointer;} +#controls #navList {height: 1em;} +#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; + background: #DDD; color: #227;} + +#currentSlide {text-align: center; font-size: 0.5em; color: #449; + font-family: sans-serif; font-weight: bold;} + +#slide0 {padding-top: 1.5em; + background: #ffff60 url(pycon-light.png) 50% 30% no-repeat;} +#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; color: #000; + font: bold 2em sans-serif; white-space: normal; + background: transparent;} +#slide0 h2 {font: bold italic 1.6em sans-serif; margin: 0.25em;} +#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;} +#slide0 h4 {margin-top: 0; font-size: 1em;} + +ul.urls {list-style: none; display: inline; margin: 0;} +.urls li {display: inline; margin: 0;} +.external {border-bottom: 1px dotted gray;} +html>body .external {border-bottom: none;} +.external:after {content: " \274F"; font-size: smaller; color: #77B;} + +.incremental, .incremental *, .incremental *:after {visibility: visible; + color: white; border: 0;} +img.incremental {visibility: hidden;} +.slide .current {color: green;} + +.slide-display {display: inline ! important;} + +.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;} +.big {font-family: sans-serif; font-weight: bold; font-size: 120%;} +.small {font-size: 75%;} +.tiny {font-size: 50%;} +.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;} +.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;} + +.maroon {color: maroon;} +.red {color: red;} +.magenta {color: magenta;} +.fuchsia {color: fuchsia;} +.pink {color: #FAA;} +.orange {color: orange;} +.yellow {color: yellow;} +.lime {color: lime;} +.green {color: green;} +.olive {color: olive;} +.teal {color: teal;} +.cyan {color: cyan;} +.aqua {color: aqua;} +.blue {color: blue;} +.navy {color: navy;} +.purple {color: purple;} +.black {color: black;} +.gray {color: gray;} +.silver {color: silver;} +.white {color: white;} + +.left {text-align: left ! important;} +.center {text-align: center ! important;} +.right {text-align: right ! important;} + +.animation {position: relative; margin: 1em 0; padding: 0;} +.animation img {position: absolute;} + +/* Docutils-specific overrides */ + +.slide table.docinfo {margin: 1em 0 0.5em 2em;} + +pre.literal-block, pre.doctest-block {background-color: white;} + +tt.docutils {background-color: white;} + +/* diagnostics */ +/* +li:after {content: " [" attr(class) "]"; color: #F88;} +div:before {content: "[" attr(class) "]"; color: #F88;} +*/ diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/print.css b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/print.css new file mode 100644 index 000000000..9d057cc8c --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/print.css @@ -0,0 +1,24 @@ +/* This file has been placed in the public domain. */ +/* The following rule is necessary to have all slides appear in print! + DO NOT REMOVE IT! */ +.slide, ul {page-break-inside: avoid; visibility: visible !important;} +h1 {page-break-after: avoid;} + +body {font-size: 12pt; background: white;} +* {color: black;} + +#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} +#slide0 h3 {margin: 0; padding: 0;} +#slide0 h4 {margin: 0 0 0.5em; padding: 0;} +#slide0 {margin-bottom: 3em;} + +#header {display: none;} +#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; + font-style: italic;} +#footer h2, #controls {display: none;} + +.print {display: inline ! important;} + +/* The following rule keeps the layout stuff out of print. + Remove at your own risk! */ +.layout, .layout * {display: none !important;} diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/pycon-light.png b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/pycon-light.png Binary files differnew file mode 100644 index 000000000..c9ab67ab5 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/pycon-light.png diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/s5-core.css b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/s5-core.css new file mode 100644 index 000000000..6965f5e8f --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/s5-core.css @@ -0,0 +1,11 @@ +/* This file has been placed in the public domain. */ +/* Do not edit or override these styles! + The system will likely break if you do. */ + +div#header, div#footer, div#controls, .slide {position: absolute;} +html>body div#header, html>body div#footer, + html>body div#controls, html>body .slide {position: fixed;} +.handout {display: none;} +.layout {display: block;} +.slide, .hideme, .incremental {visibility: hidden;} +#slide0 {visibility: visible;} diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/slides.css b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/slides.css new file mode 100644 index 000000000..82bdc0ee0 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/slides.css @@ -0,0 +1,10 @@ +/* This file has been placed in the public domain. */ + +/* required to make the slide show run at all */ +@import url(s5-core.css); + +/* sets basic placement and size of slide components */ +@import url(framing.css); + +/* styles that make the slides look good */ +@import url(pretty.css); diff --git a/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/slides.js b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/slides.js new file mode 100644 index 000000000..150fbe6b2 --- /dev/null +++ b/sandbox/presentations/pycon2006/architecture-extending-and-embedding/ui/default/slides.js @@ -0,0 +1,558 @@ +// S5 v1.1 slides.js -- released into the Public Domain +// Modified for Docutils (http://docutils.sf.net) by David Goodger +// +// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for +// information about all the wonderful and talented contributors to this code! + +var undef; +var slideCSS = ''; +var snum = 0; +var smax = 1; +var slideIDs = new Array(); +var incpos = 0; +var number = undef; +var s5mode = true; +var defaultView = 'slideshow'; +var controlVis = 'visible'; + +var isIE = navigator.appName == 'Microsoft Internet Explorer' ? 1 : 0; +var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; +var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; + +function hasClass(object, className) { + if (!object.className) return false; + return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); +} + +function hasValue(object, value) { + if (!object) return false; + return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); +} + +function removeClass(object,className) { + if (!object) return; + object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); +} + +function addClass(object,className) { + if (!object || hasClass(object, className)) return; + if (object.className) { + object.className += ' '+className; + } else { + object.className = className; + } +} + +function GetElementsWithClassName(elementName,className) { + var allElements = document.getElementsByTagName(elementName); + var elemColl = new Array(); + for (var i = 0; i< allElements.length; i++) { + if (hasClass(allElements[i], className)) { + elemColl[elemColl.length] = allElements[i]; + } + } + return elemColl; +} + +function isParentOrSelf(element, id) { + if (element == null || element.nodeName=='BODY') return false; + else if (element.id == id) return true; + else return isParentOrSelf(element.parentNode, id); +} + +function nodeValue(node) { + var result = ""; + if (node.nodeType == 1) { + var children = node.childNodes; + for (var i = 0; i < children.length; ++i) { + result += nodeValue(children[i]); + } + } + else if (node.nodeType == 3) { + result = node.nodeValue; + } + return(result); +} + +function slideLabel() { + var slideColl = GetElementsWithClassName('*','slide'); + var list = document.getElementById('jumplist'); + smax = slideColl.length; + for (var n = 0; n < smax; n++) { + var obj = slideColl[n]; + + var did = 'slide' + n.toString(); + if (obj.getAttribute('id')) { + slideIDs[n] = obj.getAttribute('id'); + } + else { + obj.setAttribute('id',did); + slideIDs[n] = did; + } + if (isOp) continue; + + var otext = ''; + var menu = obj.firstChild; + if (!menu) continue; // to cope with empty slides + while (menu && menu.nodeType == 3) { + menu = menu.nextSibling; + } + if (!menu) continue; // to cope with slides with only text nodes + + var menunodes = menu.childNodes; + for (var o = 0; o < menunodes.length; o++) { + otext += nodeValue(menunodes[o]); + } + list.options[list.length] = new Option(n + ' : ' + otext, n); + } +} + +function currentSlide() { + var cs; + var footer_nodes; + var vis = 'visible'; + if (document.getElementById) { + cs = document.getElementById('currentSlide'); + footer_nodes = document.getElementById('footer').childNodes; + } else { + cs = document.currentSlide; + footer = document.footer.childNodes; + } + cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' + + '<span id="csSep">\/<\/span> ' + + '<span id="csTotal">' + (smax-1) + '<\/span>'; + if (snum == 0) { + vis = 'hidden'; + } + cs.style.visibility = vis; + for (var i = 0; i < footer_nodes.length; i++) { + if (footer_nodes[i].nodeType == 1) { + footer_nodes[i].style.visibility = vis; + } + } +} + +function go(step) { + if (document.getElementById('slideProj').disabled || step == 0) return; + var jl = document.getElementById('jumplist'); + var cid = slideIDs[snum]; + var ce = document.getElementById(cid); + if (incrementals[snum].length > 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + removeClass(incrementals[snum][i], 'current'); + removeClass(incrementals[snum][i], 'incremental'); + } + } + if (step != 'j') { + snum += step; + lmax = smax - 1; + if (snum > lmax) snum = lmax; + if (snum < 0) snum = 0; + } else + snum = parseInt(jl.value); + var nid = slideIDs[snum]; + var ne = document.getElementById(nid); + if (!ne) { + ne = document.getElementById(slideIDs[0]); + snum = 0; + } + if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} + if (incrementals[snum].length > 0 && incpos == 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + if (hasClass(incrementals[snum][i], 'current')) + incpos = i + 1; + else + addClass(incrementals[snum][i], 'incremental'); + } + } + if (incrementals[snum].length > 0 && incpos > 0) + addClass(incrementals[snum][incpos - 1], 'current'); + ce.style.visibility = 'hidden'; + ne.style.visibility = 'visible'; + jl.selectedIndex = snum; + currentSlide(); + number = 0; +} + +function goTo(target) { + if (target >= smax || target == snum) return; + go(target - snum); +} + +function subgo(step) { + if (step > 0) { + removeClass(incrementals[snum][incpos - 1],'current'); + removeClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos],'current'); + incpos++; + } else { + incpos--; + removeClass(incrementals[snum][incpos],'current'); + addClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos - 1],'current'); + } +} + +function toggle() { + var slideColl = GetElementsWithClassName('*','slide'); + var slides = document.getElementById('slideProj'); + var outline = document.getElementById('outlineStyle'); + if (!slides.disabled) { + slides.disabled = true; + outline.disabled = false; + s5mode = false; + fontSize('1em'); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'visible'; + } + } else { + slides.disabled = false; + outline.disabled = true; + s5mode = true; + fontScale(); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'hidden'; + } + slideColl[snum].style.visibility = 'visible'; + } +} + +function showHide(action) { + var obj = GetElementsWithClassName('*','hideme')[0]; + switch (action) { + case 's': obj.style.visibility = 'visible'; break; + case 'h': obj.style.visibility = 'hidden'; break; + case 'k': + if (obj.style.visibility != 'visible') { + obj.style.visibility = 'visible'; + } else { + obj.style.visibility = 'hidden'; + } + break; + } +} + +// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) +function keys(key) { + if (!key) { + key = event; + key.which = key.keyCode; + } + if (key.which == 84) { + toggle(); + return; + } + if (s5mode) { + switch (key.which) { + case 10: // return + case 13: // enter + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + if(number != undef) { + goTo(number); + break; + } + case 32: // spacebar + case 34: // page down + case 39: // rightkey + case 40: // downkey + if(number != undef) { + go(number); + } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + break; + case 33: // page up + case 37: // leftkey + case 38: // upkey + if(number != undef) { + go(-1 * number); + } else if (!incrementals[snum] || incpos <= 0) { + go(-1); + } else { + subgo(-1); + } + break; + case 36: // home + goTo(0); + break; + case 35: // end + goTo(smax-1); + break; + case 67: // c + showHide('k'); + break; + } + if (key.which < 48 || key.which > 57) { + number = undef; + } else { + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + number = (((number != undef) ? number : 0) * 10) + (key.which - 48); + } + } + return false; +} + +// function clicker(e) { +// number = undef; +// var target; +// if (window.event) { +// target = window.event.srcElement; +// e = window.event; +// } else target = e.target; +// if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target, 'object')) return true; +// if (!e.which || e.which == 1) { +// if (!incrementals[snum] || incpos >= incrementals[snum].length) { +// go(1); +// } else { +// subgo(1); +// } +// } +// } + +function findSlide(hash) { + var target = document.getElementById(hash); + if (target) { + for (var i = 0; i < slideIDs.length; i++) { + if (target.id == slideIDs[i]) return i; + } + } + return null; +} + +function slideJump() { + if (window.location.hash == null || window.location.hash == '') { + currentSlide(); + return; + } + if (window.location.hash == null) return; + var dest = null; + dest = findSlide(window.location.hash.slice(1)); + if (dest == null) { + dest = 0; + } + go(dest - snum); +} + +function fixLinks() { + var thisUri = window.location.href; + thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); + var aelements = document.getElementsByTagName('A'); + for (var i = 0; i < aelements.length; i++) { + var a = aelements[i].href; + var slideID = a.match('\#.+'); + if ((slideID) && (slideID[0].slice(0,1) == '#')) { + var dest = findSlide(slideID[0].slice(1)); + if (dest != null) { + if (aelements[i].addEventListener) { + aelements[i].addEventListener("click", new Function("e", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "if (e.preventDefault) e.preventDefault();"), true); + } else if (aelements[i].attachEvent) { + aelements[i].attachEvent("onclick", new Function("", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "event.returnValue = false;")); + } + } + } + } +} + +function externalLinks() { + if (!document.getElementsByTagName) return; + var anchors = document.getElementsByTagName('a'); + for (var i=0; i<anchors.length; i++) { + var anchor = anchors[i]; + if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) { + anchor.target = '_blank'; + addClass(anchor,'external'); + } + } +} + +function createControls() { + var controlsDiv = document.getElementById("controls"); + if (!controlsDiv) return; + var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"'; + var hideDiv, hideList = ''; + if (controlVis == 'hidden') { + hideDiv = hider; + } else { + hideList = hider; + } + controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' + + '<div id="navLinks">' + + '<a accesskey="t" id="toggle" href="javascript:toggle();">Ø<\/a>' + + '<a accesskey="z" id="prev" href="javascript:go(-1);">«<\/a>' + + '<a accesskey="x" id="next" href="javascript:go(1);">»<\/a>' + + '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' + + '<\/div><\/form>'; + if (controlVis == 'hidden') { + var hidden = document.getElementById('navLinks'); + } else { + var hidden = document.getElementById('jumplist'); + } + addClass(hidden,'hideme'); +} + +function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers + if (!s5mode) return false; + var vScale = 22; // both yield 32 (after rounding) at 1024x768 + var hScale = 32; // perhaps should auto-calculate based on theme's declared value? + if (window.innerHeight) { + var vSize = window.innerHeight; + var hSize = window.innerWidth; + } else if (document.documentElement.clientHeight) { + var vSize = document.documentElement.clientHeight; + var hSize = document.documentElement.clientWidth; + } else if (document.body.clientHeight) { + var vSize = document.body.clientHeight; + var hSize = document.body.clientWidth; + } else { + var vSize = 700; // assuming 1024x768, minus chrome and such + var hSize = 1024; // these do not account for kiosk mode or Opera Show + } + var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale)); + fontSize(newSize + 'px'); + if (isGe) { // hack to counter incremental reflow bugs + var obj = document.getElementsByTagName('body')[0]; + obj.style.display = 'none'; + obj.style.display = 'block'; + } +} + +function fontSize(value) { + if (!(s5ss = document.getElementById('s5ss'))) { + if (!isIE) { + document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style')); + s5ss.setAttribute('media','screen, projection'); + s5ss.setAttribute('id','s5ss'); + } else { + document.createStyleSheet(); + document.s5ss = document.styleSheets[document.styleSheets.length - 1]; + } + } + if (!isIE) { + while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild); + s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}')); + } else { + document.s5ss.addRule('body','font-size: ' + value + ' !important;'); + } +} + +function notOperaFix() { + slideCSS = document.getElementById('slideProj').href; + var slides = document.getElementById('slideProj'); + var outline = document.getElementById('outlineStyle'); + slides.setAttribute('media','screen'); + outline.disabled = true; + if (isGe) { + slides.setAttribute('href','null'); // Gecko fix + slides.setAttribute('href',slideCSS); // Gecko fix + } + if (isIE && document.styleSheets && document.styleSheets[0]) { + document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)'); + document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)'); + document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)'); + } +} + +function getIncrementals(obj) { + var incrementals = new Array(); + if (!obj) + return incrementals; + var children = obj.childNodes; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (hasClass(child, 'incremental')) { + if (child.nodeName == 'OL' || child.nodeName == 'UL') { + removeClass(child, 'incremental'); + for (var j = 0; j < child.childNodes.length; j++) { + if (child.childNodes[j].nodeType == 1) { + addClass(child.childNodes[j], 'incremental'); + } + } + } else { + incrementals[incrementals.length] = child; + removeClass(child,'incremental'); + } + } + if (hasClass(child, 'show-first')) { + if (child.nodeName == 'OL' || child.nodeName == 'UL') { + removeClass(child, 'show-first'); + if (child.childNodes[isGe].nodeType == 1) { + removeClass(child.childNodes[isGe], 'incremental'); + } + } else { + incrementals[incrementals.length] = child; + } + } + incrementals = incrementals.concat(getIncrementals(child)); + } + return incrementals; +} + +function createIncrementals() { + var incrementals = new Array(); + for (var i = 0; i < smax; i++) { + incrementals[i] = getIncrementals(document.getElementById(slideIDs[i])); + } + return incrementals; +} + +function defaultCheck() { + var allMetas = document.getElementsByTagName('meta'); + for (var i = 0; i< allMetas.length; i++) { + if (allMetas[i].name == 'defaultView') { + defaultView = allMetas[i].content; + } + if (allMetas[i].name == 'controlVis') { + controlVis = allMetas[i].content; + } + } +} + +// Key trap fix, new function body for trap() +function trap(e) { + if (!e) { + e = event; + e.which = e.keyCode; + } + try { + modifierKey = e.ctrlKey || e.altKey || e.metaKey; + } + catch(e) { + modifierKey = false; + } + return modifierKey || e.which == 0; +} + +function startup() { + defaultCheck(); + if (!isOp) createControls(); + slideLabel(); + fixLinks(); + externalLinks(); + fontScale(); + if (!isOp) { + notOperaFix(); + incrementals = createIncrementals(); + slideJump(); + if (defaultView == 'outline') { + toggle(); + } + document.onkeyup = keys; + document.onkeypress = trap; +// document.onclick = clicker; + } +} + +window.onload = startup; +window.onresize = function(){setTimeout('fontScale()', 50);} |