diff --git a/Doc/Sd1/Ref/Inherit/qandaShapeBasic.svg b/Doc/Sd1/Ref/Inherit/qandaShapeBasic.svg new file mode 100644 index 0000000000000000000000000000000000000000..6aa5b9cb56c9cd9ec1be0b7f210fe925d4a8e4c9 --- /dev/null +++ b/Doc/Sd1/Ref/Inherit/qandaShapeBasic.svg @@ -0,0 +1,5525 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:jessyink="https://launchpad.net/jessyink" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + 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:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="178.59375mm" + height="151.60625mm" + viewBox="0 0 178.59377 151.60624" + version="1.1" + id="svg8" + inkscape:version="0.92.1 r15371" + sodipodi:docname="qandaShapeBasic.svg"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.64347339" + inkscape:cx="183.53275" + inkscape:cy="148.91475" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1600" + inkscape:window-height="1074" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + showguides="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="true" + inkscape:snap-global="true" + inkscape:snap-to-guides="false" + inkscape:bbox-paths="true" + inkscape:snap-nodes="false" + inkscape:snap-page="false" + inkscape:snap-grids="true" + inkscape:snap-others="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="false"> + <inkscape:grid + type="xygrid" + id="grid153" + originx="-2.5135426" + originy="76.199994" /> + </sodipodi:namedview> + <defs + id="defs2"> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker14524" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path14522" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker14142" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path14140" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker13742" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path13740" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker13372" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path13370" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker12996" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path12994" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker12638" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path12636" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker12274" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path12272" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker11928" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path11926" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker11576" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path11574" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker11242" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path11240" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker10902" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path10900" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker10580" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path10578" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker10252" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path10250" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker9942" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path9940" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker9626" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path9624" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker9328" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path9326" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6651" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path6649" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6371" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path6369" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6085" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path6083" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5817" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path5815" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker5475" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path5473" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker10399" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path10397" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker10155" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path10153" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker9905" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path9903" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker9673" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path9671" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker6624" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6622" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="DotM" + orient="auto" + refY="0" + refX="0" + id="marker6428" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6426" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker4724" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4722" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker14694" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path14692" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="DotM" + orient="auto" + refY="0" + refX="0" + id="marker11917" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11915" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker6297" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6295" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker12914" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path12912" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker9325" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path9323" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker5341" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path5339" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker2807" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path2805" + inkscape:connector-curvature="0" /> + </marker> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 37.499998 : 1" + inkscape:vp_y="0 : 999.99995 : 0" + inkscape:vp_z="170.00003 : 37.499998 : 1" + inkscape:persp3d-origin="85.000013 : 24.999998 : 1" + id="perspective631" /> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Lend" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1067" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-1" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-5" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-4" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-65" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-6" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-65-5" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-6-4" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6-8" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-1-8" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-65-5-4" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-6-4-3" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker1003-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path1001-3" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6-8-7" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-1-8-5" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-65-5-4-9" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-6-4-3-2" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6-8-7-1" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-1-8-5-0" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-65-5-4-9-6" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-6-4-3-2-3" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker1003-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path1001-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker1003-7-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path1001-4-8" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6-8-7-1-8" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-1-8-5-0-4" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-65-5-4-9-6-3" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-6-4-3-2-3-1" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker1003-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path1001-0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker9325-1" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path9323-5" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-6-8-7-1-8-9" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-1-8-5-0-4-4" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow2Mend-5-9" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path1073-4-0" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker2940" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path2938" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker3198" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path3196" /> + </marker> + <marker + inkscape:stockid="DotM" + orient="auto" + refY="0" + refX="0" + id="marker2321" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path2319" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0" + refX="0" + id="marker2615" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path2613" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5331" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path5329" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5849" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path5847" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5331-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path5329-3" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5849-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path5847-3" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker11024" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DotM"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.4,0,0,0.4,2.96,0.4)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path11022" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker11286" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Mend"> + <path + inkscape:connector-curvature="0" + transform="scale(-0.6)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path11284" /> + </marker> + <clipPath + id="clipPath16" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3829" + d="M 0,0 V 80 H 130 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9222" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9220" + d="M 0,0 V 80 H 130 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath17" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3832" + d="M 0,0 V 78 H 128 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath18" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3835" + d="M 0,0 V 76 H 126 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath19" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3838" + d="M 0,0 V 48 H 126 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3808" + d="M 0,0 V 22 H 54 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath21" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3844-6" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9236" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9234" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9240" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9238" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9244" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9242" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9248" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9246" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9252" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9250" + d="M 0,0 V 22 H 54 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath23" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3850" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9258" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9256" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9262" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9260" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9266" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9264" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9270" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9268" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <linearGradient + spreadMethod="pad" + id="linearGradient1" + y2="28" + y1="0" + x2="0" + gradientUnits="userSpaceOnUse" + x1="0"> + <stop + id="stop3769" + offset="0%" + stop-color="rgb(255,255,245)" + stop-opacity="1" /> + <stop + id="stop3771" + offset="100%" + stop-color="rgb(215,213,172)" + stop-opacity="1" /> + </linearGradient> + <clipPath + id="clipPath24" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3853" + d="M 0,0 V 28 H 126 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath25" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3856" + d="M 0,0 V 22 H 120 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9296" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9294" + d="M 0,0 V 22 H 120 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9300" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9298" + d="M 0,0 V 22 H 120 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath27" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3862" + d="M 0,0 V 56 H 165 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9516" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9514" + d="M 0,0 V 56 H 165 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath28" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3865" + d="M 0,0 V 54 H 163 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath29" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3868" + d="M 0,0 V 52 H 161 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath30" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3871" + d="M 0,0 V 24 H 161 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9-7" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3808-5" + d="M 0,0 V 22 H 54 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath31" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3874" + d="M 0,0 V 22 H 83 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9530" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9528" + d="M 0,0 V 22 H 83 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9534" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9532" + d="M 0,0 V 22 H 83 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9538" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9536" + d="M 0,0 V 22 H 83 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9542" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9540" + d="M 0,0 V 22 H 83 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath32" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3877" + d="M 0,0 V 28 H 161 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath33" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3880" + d="M 0,0 V 22 H 155 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9568" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9566" + d="M 0,0 V 22 H 155 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9572" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9570" + d="M 0,0 V 22 H 155 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath2" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3787" + d="M -20,-20 H 372 V 230 H -20 Z" /> + </clipPath> + <clipPath + id="clipPath9578" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9576" + d="M -20,-20 H 372 V 230 H -20 Z" /> + </clipPath> + <clipPath + id="clipPath4" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3793" + d="M 0,0 V 80 H 167 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9584" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9582" + d="M 0,0 V 80 H 167 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath5" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3796" + d="M 0,0 V 78 H 165 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath6" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3799" + d="M 0,0 V 76 H 163 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath7" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3802" + d="M 0,0 V 48 H 163 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9594" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9592" + d="M 0,0 V 22 H 54 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3811" + d="M 0,0 V 22 H 80 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9600" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9598" + d="M 0,0 V 22 H 80 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9604" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9602" + d="M 0,0 V 22 H 80 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9608" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9606" + d="M 0,0 V 22 H 80 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9612" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9610" + d="M 0,0 V 22 H 80 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9616" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9614" + d="M 0,0 V 22 H 54 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath12" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3817" + d="M 0,0 V 22 H 85 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9622" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9620" + d="M 0,0 V 22 H 85 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9626" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9624-6" + d="M 0,0 V 22 H 85 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9630" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9628" + d="M 0,0 V 22 H 85 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9634" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9632" + d="M 0,0 V 22 H 85 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath13" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3820" + d="M 0,0 V 28 H 163 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath14" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3823" + d="M 0,0 V 22 H 157 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9663" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9661" + d="M 0,0 V 22 H 157 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9667" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9665" + d="M 0,0 V 22 H 157 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9671" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9669" + d="M -20,-20 H 372 V 230 H -20 Z" /> + </clipPath> + <clipPath + id="clipPath9675" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path9673" + d="M -20,-20 H 372 V 230 H -20 Z" /> + </clipPath> + <clipPath + id="clipPath16-1" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3829-2" + d="M 0,0 V 80 H 130 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10153" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10151" + d="M 0,0 V 80 H 130 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath17-7" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3832-0" + d="M 0,0 V 78 H 128 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath18-9" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3835-3" + d="M 0,0 V 76 H 126 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath19-6" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3838-0" + d="M 0,0 V 48 H 126 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath9-6" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3808-2" + d="M 0,0 V 22 H 54 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath21-6" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3844-6-1" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10167" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10165" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10171" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10169" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10175" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10173" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10179" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10177" + d="M 0,0 V 22 H 48 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10183" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10181" + d="M 0,0 V 22 H 54 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath23-8" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3850-7" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10189" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10187" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10193" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10191" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10197" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10195" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10201" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10199" + d="M 0,0 V 22 H 47 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath24-3" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3853-7" + d="M 0,0 V 28 H 126 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath25-5" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path3856-9" + d="M 0,0 V 22 H 120 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10228" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10226" + d="M 0,0 V 22 H 120 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath10232" + clipPathUnits="userSpaceOnUse"> + <path + inkscape:connector-curvature="0" + id="path10230" + d="M 0,0 V 22 H 120 V 0 Z" /> + </clipPath> + <clipPath + id="clipPath1" + clipPathUnits="userSpaceOnUse"> + <path + id="path7056" + d="M 0,0 H 716 V 614 H 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath2-3" + clipPathUnits="userSpaceOnUse"> + <path + id="path7059" + d="M -20,-20 H 696 V 594 H -20 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath3" + clipPathUnits="userSpaceOnUse"> + <path + id="path7062" + d="m -201.5,-20 h 716 v 614 h -716 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath4-6" + clipPathUnits="userSpaceOnUse"> + <path + id="path7065" + d="M 0,0 V 274 H 270 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath5-7" + clipPathUnits="userSpaceOnUse"> + <path + id="path7068" + d="M 0,0 V 272 H 268 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath6-5" + clipPathUnits="userSpaceOnUse"> + <path + id="path7071" + d="M 0,0 V 270 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath7-3" + clipPathUnits="userSpaceOnUse"> + <path + id="path7074" + d="M 0,0 V 242 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8" + clipPathUnits="userSpaceOnUse"> + <path + id="path7077" + d="M 0,0 V 24 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath9-5" + clipPathUnits="userSpaceOnUse"> + <path + id="path7080" + d="M 0,0 V 22 H 55 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath10-6" + clipPathUnits="userSpaceOnUse"> + <path + id="path7083" + d="M 0,0 V 22 H 48 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath11" + clipPathUnits="userSpaceOnUse"> + <path + id="path7086" + d="M 0,24 V 48 H 266 V 24 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath12-2" + clipPathUnits="userSpaceOnUse"> + <path + id="path7089" + d="M 0,0 V 22 H 47 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath13-9" + clipPathUnits="userSpaceOnUse"> + <path + id="path7092" + d="m 0,48 v 1 h 266 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath14-1" + clipPathUnits="userSpaceOnUse"> + <path + id="path7095" + d="M 0,0 V 1 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath15" + clipPathUnits="userSpaceOnUse"> + <path + id="path7098" + d="M 0,49 V 73 H 266 V 49 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath16-2" + clipPathUnits="userSpaceOnUse"> + <path + id="path7101" + d="M 0,0 V 22 H 6 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath17-70" + clipPathUnits="userSpaceOnUse"> + <path + id="path7104" + d="M 0,0 V 22 H 198 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath18-93" + clipPathUnits="userSpaceOnUse"> + <path + id="path7107" + d="m 0,73 v 1 h 266 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath19-60" + clipPathUnits="userSpaceOnUse"> + <path + id="path7110" + d="M 0,74 V 98 H 266 V 74 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath20" + clipPathUnits="userSpaceOnUse"> + <path + id="path7113" + d="M 0,0 V 22 H 106 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath21-62" + clipPathUnits="userSpaceOnUse"> + <path + id="path7116" + d="m 0,98 v 24 H 266 V 98 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath22" + clipPathUnits="userSpaceOnUse"> + <path + id="path7119" + d="M 0,0 V 22 H 144 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath23-6" + clipPathUnits="userSpaceOnUse"> + <path + id="path7122" + d="m 0,122 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath24-1" + clipPathUnits="userSpaceOnUse"> + <path + id="path7125" + d="M 0,0 V 22 H 82 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath25-8" + clipPathUnits="userSpaceOnUse"> + <path + id="path7128" + d="m 0,146 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath26" + clipPathUnits="userSpaceOnUse"> + <path + id="path7131" + d="M 0,0 V 22 H 34 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath27-7" + clipPathUnits="userSpaceOnUse"> + <path + id="path7134" + d="M 0,0 V 22 H 129 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath28-9" + clipPathUnits="userSpaceOnUse"> + <path + id="path7137" + d="m 0,170 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath29-2" + clipPathUnits="userSpaceOnUse"> + <path + id="path7140" + d="M 0,0 V 22 H 83 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath30-0" + clipPathUnits="userSpaceOnUse"> + <path + id="path7143" + d="m 0,194 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath31-2" + clipPathUnits="userSpaceOnUse"> + <path + id="path7146" + d="M 0,0 V 22 H 130 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath32-3" + clipPathUnits="userSpaceOnUse"> + <path + id="path7149" + d="m 0,218 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath33-7" + clipPathUnits="userSpaceOnUse"> + <path + id="path7152" + d="M 0,0 V 22 H 49 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath34" + clipPathUnits="userSpaceOnUse"> + <path + id="path7155" + d="M 0,0 V 22 H 193 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath35" + clipPathUnits="userSpaceOnUse"> + <path + id="path7158" + d="M 0,0 V 28 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath36" + clipPathUnits="userSpaceOnUse"> + <path + id="path7161" + d="M 0,0 V 22 H 260 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath37" + clipPathUnits="userSpaceOnUse"> + <path + id="path7164" + d="M -20,-380 H 696 V 234 H -20 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath38" + clipPathUnits="userSpaceOnUse"> + <path + id="path7167" + d="M 0,0 V 178 H 285 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath39" + clipPathUnits="userSpaceOnUse"> + <path + id="path7170" + d="M 0,0 V 176 H 283 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath40" + clipPathUnits="userSpaceOnUse"> + <path + id="path7173" + d="M 0,0 V 174 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath41" + clipPathUnits="userSpaceOnUse"> + <path + id="path7176" + d="M 0,0 V 146 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath42" + clipPathUnits="userSpaceOnUse"> + <path + id="path7179" + d="M 0,0 V 24 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath43" + clipPathUnits="userSpaceOnUse"> + <path + id="path7182" + d="m 0,24 v 1 h 281 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath44" + clipPathUnits="userSpaceOnUse"> + <path + id="path7185" + d="M 0,0 V 1 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath45" + clipPathUnits="userSpaceOnUse"> + <path + id="path7188" + d="M 0,25 V 49 H 281 V 25 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath46" + clipPathUnits="userSpaceOnUse"> + <path + id="path7191" + d="M 0,0 V 22 H 251 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath47" + clipPathUnits="userSpaceOnUse"> + <path + id="path7194" + d="m 0,49 v 1 h 281 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath48" + clipPathUnits="userSpaceOnUse"> + <path + id="path7197" + d="M 0,50 V 74 H 281 V 50 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath49" + clipPathUnits="userSpaceOnUse"> + <path + id="path7200" + d="M 0,74 V 98 H 281 V 74 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath50" + clipPathUnits="userSpaceOnUse"> + <path + id="path7203" + d="m 0,98 v 24 H 281 V 98 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath51" + clipPathUnits="userSpaceOnUse"> + <path + id="path7206" + d="M 0,0 V 22 H 118 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath52" + clipPathUnits="userSpaceOnUse"> + <path + id="path7209" + d="m 0,122 v 24 h 281 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath53" + clipPathUnits="userSpaceOnUse"> + <path + id="path7212" + d="M 0,0 V 22 H 165 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath54" + clipPathUnits="userSpaceOnUse"> + <path + id="path7215" + d="M 0,0 V 28 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath55" + clipPathUnits="userSpaceOnUse"> + <path + id="path7218" + d="M 0,0 V 22 H 275 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath56" + clipPathUnits="userSpaceOnUse"> + <path + id="path7221" + d="M -325,-344 H 391 V 270 H -325 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath57" + clipPathUnits="userSpaceOnUse"> + <path + id="path7224" + d="M 0,0 V 250 H 371 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath58" + clipPathUnits="userSpaceOnUse"> + <path + id="path7227" + d="M 0,0 V 248 H 369 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath59" + clipPathUnits="userSpaceOnUse"> + <path + id="path7230" + d="M 0,0 V 246 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath60" + clipPathUnits="userSpaceOnUse"> + <path + id="path7233" + d="M 0,0 V 218 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath61" + clipPathUnits="userSpaceOnUse"> + <path + id="path7236" + d="M 0,0 V 24 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath62" + clipPathUnits="userSpaceOnUse"> + <path + id="path7239" + d="M 0,0 V 22 H 80 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath63" + clipPathUnits="userSpaceOnUse"> + <path + id="path7242" + d="M 0,24 V 48 H 367 V 24 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath64" + clipPathUnits="userSpaceOnUse"> + <path + id="path7245" + d="M 0,0 V 22 H 85 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath65" + clipPathUnits="userSpaceOnUse"> + <path + id="path7248" + d="m 0,48 v 1 h 367 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath66" + clipPathUnits="userSpaceOnUse"> + <path + id="path7251" + d="M 0,0 V 1 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath67" + clipPathUnits="userSpaceOnUse"> + <path + id="path7254" + d="M 0,49 V 73 H 367 V 49 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath68" + clipPathUnits="userSpaceOnUse"> + <path + id="path7257" + d="M 0,0 V 22 H 337 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath69" + clipPathUnits="userSpaceOnUse"> + <path + id="path7260" + d="m 0,73 v 1 h 367 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath70" + clipPathUnits="userSpaceOnUse"> + <path + id="path7263" + d="M 0,74 V 98 H 367 V 74 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath71" + clipPathUnits="userSpaceOnUse"> + <path + id="path7266" + d="m 0,98 v 24 H 367 V 98 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath72" + clipPathUnits="userSpaceOnUse"> + <path + id="path7269" + d="m 0,122 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath73" + clipPathUnits="userSpaceOnUse"> + <path + id="path7272" + d="M 0,0 V 22 H 114 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath74" + clipPathUnits="userSpaceOnUse"> + <path + id="path7275" + d="m 0,146 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath75" + clipPathUnits="userSpaceOnUse"> + <path + id="path7278" + d="M 0,0 V 22 H 161 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath76" + clipPathUnits="userSpaceOnUse"> + <path + id="path7281" + d="m 0,170 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath77" + clipPathUnits="userSpaceOnUse"> + <path + id="path7284" + d="M 0,0 V 22 H 121 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath78" + clipPathUnits="userSpaceOnUse"> + <path + id="path7287" + d="m 0,194 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath79" + clipPathUnits="userSpaceOnUse"> + <path + id="path7290" + d="M 0,0 V 22 H 168 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath80" + clipPathUnits="userSpaceOnUse"> + <path + id="path7293" + d="M 0,0 V 28 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath81" + clipPathUnits="userSpaceOnUse"> + <path + id="path7296" + d="M 0,0 V 22 H 361 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8629" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8631" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8633" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8635" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8637" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8639" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8641" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8643" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient8645" + gradientUnits="userSpaceOnUse" + x1="0" + y1="0" + x2="0" + y2="28" + spreadMethod="pad" /> + <defs + id="defs1"> + <linearGradient + spreadMethod="pad" + id="RESERVED_FOR_INKSCAPE_DUPLICATE_DEF_000000000" + y2="28" + y1="0" + x2="0" + gradientUnits="userSpaceOnUse" + x1="0"> + <stop + id="stop7041" + offset="0%" + stop-color="rgb(255,255,245)" + stop-opacity="1" /> + <stop + id="stop7043" + offset="100%" + stop-color="rgb(215,213,172)" + stop-opacity="1" /> + </linearGradient> + <linearGradient + spreadMethod="pad" + id="RESERVED_FOR_INKSCAPE_DUPLICATE_DEF_000000001" + y2="28" + y1="0" + x2="0" + gradientUnits="userSpaceOnUse" + x1="0"> + <stop + id="stop7046" + offset="0%" + stop-color="rgb(255,255,245)" + stop-opacity="1" /> + <stop + id="stop7048" + offset="100%" + stop-color="rgb(215,213,172)" + stop-opacity="1" /> + </linearGradient> + <linearGradient + spreadMethod="pad" + id="RESERVED_FOR_INKSCAPE_DUPLICATE_DEF_000000002" + y2="28" + y1="0" + x2="0" + gradientUnits="userSpaceOnUse" + x1="0"> + <stop + id="stop7051" + offset="0%" + stop-color="rgb(255,255,245)" + stop-opacity="1" /> + <stop + id="stop7053" + offset="100%" + stop-color="rgb(215,213,172)" + stop-opacity="1" /> + </linearGradient> + <clipPath + id="clipPath8029" + clipPathUnits="userSpaceOnUse"> + <path + id="path8027" + d="M 0,0 H 716 V 614 H 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8033" + clipPathUnits="userSpaceOnUse"> + <path + id="path8031" + d="M -20,-20 H 696 V 594 H -20 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8037" + clipPathUnits="userSpaceOnUse"> + <path + id="path8035" + d="m -201.5,-20 h 716 v 614 h -716 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8041" + clipPathUnits="userSpaceOnUse"> + <path + id="path8039" + d="M 0,0 V 274 H 270 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8045" + clipPathUnits="userSpaceOnUse"> + <path + id="path8043" + d="M 0,0 V 272 H 268 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8049" + clipPathUnits="userSpaceOnUse"> + <path + id="path8047" + d="M 0,0 V 270 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8053" + clipPathUnits="userSpaceOnUse"> + <path + id="path8051" + d="M 0,0 V 242 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8057" + clipPathUnits="userSpaceOnUse"> + <path + id="path8055" + d="M 0,0 V 24 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8061" + clipPathUnits="userSpaceOnUse"> + <path + id="path8059" + d="M 0,0 V 22 H 55 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8065" + clipPathUnits="userSpaceOnUse"> + <path + id="path8063" + d="M 0,0 V 22 H 48 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8069" + clipPathUnits="userSpaceOnUse"> + <path + id="path8067" + d="M 0,24 V 48 H 266 V 24 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8073" + clipPathUnits="userSpaceOnUse"> + <path + id="path8071" + d="M 0,0 V 22 H 47 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8077" + clipPathUnits="userSpaceOnUse"> + <path + id="path8075" + d="m 0,48 v 1 h 266 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8081" + clipPathUnits="userSpaceOnUse"> + <path + id="path8079" + d="M 0,0 V 1 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8085" + clipPathUnits="userSpaceOnUse"> + <path + id="path8083" + d="M 0,49 V 73 H 266 V 49 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8089" + clipPathUnits="userSpaceOnUse"> + <path + id="path8087" + d="M 0,0 V 22 H 6 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8093" + clipPathUnits="userSpaceOnUse"> + <path + id="path8091" + d="M 0,0 V 22 H 198 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8097" + clipPathUnits="userSpaceOnUse"> + <path + id="path8095" + d="m 0,73 v 1 h 266 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8101" + clipPathUnits="userSpaceOnUse"> + <path + id="path8099" + d="M 0,74 V 98 H 266 V 74 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8105" + clipPathUnits="userSpaceOnUse"> + <path + id="path8103" + d="M 0,0 V 22 H 106 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8109" + clipPathUnits="userSpaceOnUse"> + <path + id="path8107" + d="m 0,98 v 24 H 266 V 98 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8113" + clipPathUnits="userSpaceOnUse"> + <path + id="path8111" + d="M 0,0 V 22 H 144 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8117" + clipPathUnits="userSpaceOnUse"> + <path + id="path8115" + d="m 0,122 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8121" + clipPathUnits="userSpaceOnUse"> + <path + id="path8119" + d="M 0,0 V 22 H 82 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8125" + clipPathUnits="userSpaceOnUse"> + <path + id="path8123" + d="m 0,146 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8129" + clipPathUnits="userSpaceOnUse"> + <path + id="path8127" + d="M 0,0 V 22 H 34 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8133" + clipPathUnits="userSpaceOnUse"> + <path + id="path8131" + d="M 0,0 V 22 H 129 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8137" + clipPathUnits="userSpaceOnUse"> + <path + id="path8135" + d="m 0,170 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8141" + clipPathUnits="userSpaceOnUse"> + <path + id="path8139" + d="M 0,0 V 22 H 83 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8145" + clipPathUnits="userSpaceOnUse"> + <path + id="path8143" + d="m 0,194 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8149" + clipPathUnits="userSpaceOnUse"> + <path + id="path8147" + d="M 0,0 V 22 H 130 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8153" + clipPathUnits="userSpaceOnUse"> + <path + id="path8151" + d="m 0,218 v 24 h 266 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8157" + clipPathUnits="userSpaceOnUse"> + <path + id="path8155" + d="M 0,0 V 22 H 49 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8161" + clipPathUnits="userSpaceOnUse"> + <path + id="path8159" + d="M 0,0 V 22 H 193 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8165" + clipPathUnits="userSpaceOnUse"> + <path + id="path8163" + d="M 0,0 V 28 H 266 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8169" + clipPathUnits="userSpaceOnUse"> + <path + id="path8167" + d="M 0,0 V 22 H 260 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8173" + clipPathUnits="userSpaceOnUse"> + <path + id="path8171" + d="M -20,-380 H 696 V 234 H -20 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8177" + clipPathUnits="userSpaceOnUse"> + <path + id="path8175" + d="M 0,0 V 178 H 285 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8181" + clipPathUnits="userSpaceOnUse"> + <path + id="path8179" + d="M 0,0 V 176 H 283 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8185" + clipPathUnits="userSpaceOnUse"> + <path + id="path8183" + d="M 0,0 V 174 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8189" + clipPathUnits="userSpaceOnUse"> + <path + id="path8187" + d="M 0,0 V 146 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8193" + clipPathUnits="userSpaceOnUse"> + <path + id="path8191" + d="M 0,0 V 24 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8197" + clipPathUnits="userSpaceOnUse"> + <path + id="path8195" + d="m 0,24 v 1 h 281 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8201" + clipPathUnits="userSpaceOnUse"> + <path + id="path8199" + d="M 0,0 V 1 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8205" + clipPathUnits="userSpaceOnUse"> + <path + id="path8203" + d="M 0,25 V 49 H 281 V 25 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8209" + clipPathUnits="userSpaceOnUse"> + <path + id="path8207" + d="M 0,0 V 22 H 251 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8213" + clipPathUnits="userSpaceOnUse"> + <path + id="path8211" + d="m 0,49 v 1 h 281 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8217" + clipPathUnits="userSpaceOnUse"> + <path + id="path8215" + d="M 0,50 V 74 H 281 V 50 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8221" + clipPathUnits="userSpaceOnUse"> + <path + id="path8219" + d="M 0,74 V 98 H 281 V 74 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8225" + clipPathUnits="userSpaceOnUse"> + <path + id="path8223" + d="m 0,98 v 24 H 281 V 98 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8229" + clipPathUnits="userSpaceOnUse"> + <path + id="path8227" + d="M 0,0 V 22 H 118 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8233" + clipPathUnits="userSpaceOnUse"> + <path + id="path8231" + d="m 0,122 v 24 h 281 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8237" + clipPathUnits="userSpaceOnUse"> + <path + id="path8235" + d="M 0,0 V 22 H 165 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8241" + clipPathUnits="userSpaceOnUse"> + <path + id="path8239" + d="M 0,0 V 28 H 281 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8245" + clipPathUnits="userSpaceOnUse"> + <path + id="path8243" + d="M 0,0 V 22 H 275 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8249" + clipPathUnits="userSpaceOnUse"> + <path + id="path8247" + d="M -325,-344 H 391 V 270 H -325 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8253" + clipPathUnits="userSpaceOnUse"> + <path + id="path8251" + d="M 0,0 V 250 H 371 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8257" + clipPathUnits="userSpaceOnUse"> + <path + id="path8255" + d="M 0,0 V 248 H 369 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8261" + clipPathUnits="userSpaceOnUse"> + <path + id="path8259" + d="M 0,0 V 246 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8265" + clipPathUnits="userSpaceOnUse"> + <path + id="path8263" + d="M 0,0 V 218 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8269" + clipPathUnits="userSpaceOnUse"> + <path + id="path8267" + d="M 0,0 V 24 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8273" + clipPathUnits="userSpaceOnUse"> + <path + id="path8271" + d="M 0,0 V 22 H 80 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8277" + clipPathUnits="userSpaceOnUse"> + <path + id="path8275" + d="M 0,24 V 48 H 367 V 24 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8281" + clipPathUnits="userSpaceOnUse"> + <path + id="path8279" + d="M 0,0 V 22 H 85 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8285" + clipPathUnits="userSpaceOnUse"> + <path + id="path8283" + d="m 0,48 v 1 h 367 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8289" + clipPathUnits="userSpaceOnUse"> + <path + id="path8287" + d="M 0,0 V 1 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8293" + clipPathUnits="userSpaceOnUse"> + <path + id="path8291" + d="M 0,49 V 73 H 367 V 49 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8297" + clipPathUnits="userSpaceOnUse"> + <path + id="path8295" + d="M 0,0 V 22 H 337 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8301" + clipPathUnits="userSpaceOnUse"> + <path + id="path8299" + d="m 0,73 v 1 h 367 v -1 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8305" + clipPathUnits="userSpaceOnUse"> + <path + id="path8303" + d="M 0,74 V 98 H 367 V 74 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8309" + clipPathUnits="userSpaceOnUse"> + <path + id="path8307" + d="m 0,98 v 24 H 367 V 98 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8313" + clipPathUnits="userSpaceOnUse"> + <path + id="path8311" + d="m 0,122 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8317" + clipPathUnits="userSpaceOnUse"> + <path + id="path8315" + d="M 0,0 V 22 H 114 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8321" + clipPathUnits="userSpaceOnUse"> + <path + id="path8319" + d="m 0,146 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8325" + clipPathUnits="userSpaceOnUse"> + <path + id="path8323" + d="M 0,0 V 22 H 161 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8329" + clipPathUnits="userSpaceOnUse"> + <path + id="path8327" + d="m 0,170 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8333" + clipPathUnits="userSpaceOnUse"> + <path + id="path8331" + d="M 0,0 V 22 H 121 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8337" + clipPathUnits="userSpaceOnUse"> + <path + id="path8335" + d="m 0,194 v 24 h 367 v -24 z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8341" + clipPathUnits="userSpaceOnUse"> + <path + id="path8339" + d="M 0,0 V 22 H 168 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8345" + clipPathUnits="userSpaceOnUse"> + <path + id="path8343" + d="M 0,0 V 28 H 367 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + <clipPath + id="clipPath8349" + clipPathUnits="userSpaceOnUse"> + <path + id="path8347" + d="M 0,0 V 22 H 361 V 0 Z" + inkscape:connector-curvature="0" /> + </clipPath> + </defs> + </defs> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + jessyink:masterSlide="masterSlide" + transform="translate(-15.100139,-21.148942)" + inkscape:label="Master" + inkscape:groupmode="layer" + id="layer1" + style="display:inline"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="160.75327" + y="74.065605" + id="text2361"><tspan + sodipodi:role="line" + id="tspan2359" + x="160.75327" + y="77.811111" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.26458332" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="84.024094" + y="31.732275" + id="text4260"><tspan + sodipodi:role="line" + id="tspan4258" + x="84.024094" + y="35.477783" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.26458332" /><tspan + sodipodi:role="line" + x="84.024094" + y="40.769447" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';stroke-width:0.26458332" + id="tspan4262" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="142.23242" + y="82.003105" + id="text830"><tspan + sodipodi:role="line" + id="tspan828" + x="142.23242" + y="85.748611" + style="stroke-width:0.26458332" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="61.534512" + y="68.773941" + id="text5579"><tspan + sodipodi:role="line" + id="tspan5577" + x="61.534512" + y="72.519447" + style="stroke-width:0.26458332" /><tspan + sodipodi:role="line" + x="61.534512" + y="77.811111" + style="stroke-width:0.26458332" + id="tspan5581" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="70.79493" + y="33.055191" + id="text10808"><tspan + sodipodi:role="line" + id="tspan10806" + x="70.79493" + y="36.800697" + style="stroke-width:0.26458332" /></text> + <g + id="g7312" + transform="matrix(0.26458333,0,0,0.26458333,62.85743,20.884359)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7308" + clip-path="url(#clipPath4-6)" + y="273" + height="1" + width="268" + x="2" + style="stroke:none" /> + <rect + id="rect7310" + clip-path="url(#clipPath4-6)" + y="2" + height="272" + width="1" + x="269" + style="stroke:none" /> + </g> + <g + id="g7316" + transform="matrix(0.26458333,0,0,0.26458333,63.122013,21.148942)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#c0c0c0;fill-opacity:1;stroke:#c0c0c0;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <path + id="path7314" + clip-path="url(#clipPath5-7)" + d="M 0,0 H 268 V 272 H 0 Z M 1,1 H 267 V 271 H 1 Z" + inkscape:connector-curvature="0" + style="fill-rule:evenodd;stroke:none" /> + </g> + <g + id="g7320" + transform="matrix(0.26458333,0,0,0.26458333,63.386597,21.413525)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#e8e8e8;fill-opacity:1;stroke:#e8e8e8;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7318" + clip-path="url(#clipPath6-5)" + y="0" + height="270" + width="266" + x="0" + style="stroke:none" /> + </g> + <g + id="g7324" + transform="matrix(0.26458333,0,0,0.26458333,63.386597,28.821858)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7322" + clip-path="url(#clipPath7-3)" + y="0" + height="242" + width="266" + x="0" + style="stroke:none" /> + </g> + <g + id="g7328" + transform="matrix(0.26458333,0,0,0.26458333,118.68451,29.086442)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7326" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7340" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,29.086442)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7330" + clip-path="url(#clipPath10-6)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7332" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVR42mNgoBAw +ogt8WmejxsjI6AyUMkCV+X/h////e/mCjtzCacDn9XZhQMoZv43/j/MEHl4A4zPD +GF/W2yYApe2IcLRsVYQ8V/vKh1fhLoA4m6kYXWnVwjemj978EQKxlxRL7ETx0P9/ +vSDvsIBNAfsZFVx7/JMXpBldI9wdED23mKBcA3QFc3d90gXRxXNfW+HwClgPEy6f +htvy3gDRvcmix/CFCBOl6YBaBvy/QLpWiB4mSJT830uydqgeRlJSIRLYyxt4aBVK +SgSlLFAKAzKViNVMlcxEMQAA0HVXcKsiv9IAAAAASUVORK5CYII=" + width="16" + clip-path="url(#clipPath10-6)" + y="3" + x="2" /> + <image + id="image7334" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAc0lEQVR42mNgGAWM +uCQ+pyrX/Gf8JwtW9J/pMe/suy3Y1LFgE/yUrSH8//dPWYb/jL0gPtCgYpKd9ilN +cSY2NlFeQHY+XCEObzBhMwBdMy4xnAYgrGVewMTIuAqfEha8Bvz/m/CPQFhhdQHI +v8SIjQIIAAAIbymHUuhBrwAAAABJRU5ErkJggg==" + width="16" + clip-path="url(#clipPath10-6)" + y="3" + x="18" /> + <rect + id="rect7336" + clip-path="url(#clipPath10-6)" + y="0" + height="22" + width="12" + x="36" + style="stroke:none" /> + <text + id="text7338" + clip-path="url(#clipPath10-6)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">x</text> + </g> + <g + id="g7344" + transform="matrix(0.26458333,0,0,0.26458333,118.68451,35.436442)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7342" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7356" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,35.436442)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7346" + clip-path="url(#clipPath12-2)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7348" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVR42mNgoBAw +ogt8WmejxsjI6AyUMkCV+X/h////e/mCjtzCacDn9XZhQMoZv43/j/MEHl4A4zPD +GF/W2yYApe2IcLRsVYQ8V/vKh1fhLoA4m6kYXWnVwjemj978EQKxlxRL7ETx0P9/ +vSDvsIBNAfsZFVx7/JMXpBldI9wdED23mKBcA3QFc3d90gXRxXNfW+HwClgPEy6f +htvy3gDRvcmix/CFCBOl6YBaBvy/QLpWiB4mSJT830uydqgeRlJSIRLYyxt4aBVK +SgSlLFAKAzKViNVMlcxEMQAA0HVXcKsiv9IAAAAASUVORK5CYII=" + width="16" + clip-path="url(#clipPath12-2)" + y="3" + x="2" /> + <image + id="image7350" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAc0lEQVR42mNgGAWM +uCQ+pyrX/Gf8JwtW9J/pMe/suy3Y1LFgE/yUrSH8//dPWYb/jL0gPtCgYpKd9ilN +cSY2NlFeQHY+XCEObzBhMwBdMy4xnAYgrGVewMTIuAqfEha8Bvz/m/CPQFhhdQHI +v8SIjQIIAAAIbymHUuhBrwAAAABJRU5ErkJggg==" + width="16" + clip-path="url(#clipPath12-2)" + y="3" + x="18" /> + <rect + id="rect7352" + clip-path="url(#clipPath12-2)" + y="0" + height="22" + width="11" + x="36" + style="stroke:none" /> + <text + id="text7354" + clip-path="url(#clipPath12-2)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">y</text> + </g> + <g + id="g7360" + transform="matrix(0.26458333,0,0,0.26458333,63.386597,28.821858)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7358" + clip-path="url(#clipPath13-9)" + y="48" + height="1" + width="266" + x="0" + style="stroke:none" /> + </g> + <g + id="g7364" + transform="matrix(0.26458333,0,0,0.26458333,63.386597,41.521858)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7362" + clip-path="url(#clipPath14-1)" + y="0" + height="1" + width="266" + x="0" + style="stroke:none" /> + </g> + <g + id="g7376" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,42.051025)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7366" + clip-path="url(#clipPath17-70)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7368" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath17-70)" + y="3" + x="2" /> + <image + id="image7370" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath17-70)" + y="3" + x="18" /> + <rect + id="rect7372" + clip-path="url(#clipPath17-70)" + y="0" + height="22" + width="162" + x="36" + style="stroke:none" /> + <text + id="text7374" + clip-path="url(#clipPath17-70)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">Shape(double, double)</text> + </g> + <g + id="g7380" + transform="matrix(0.26458333,0,0,0.26458333,63.386597,28.821858)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7378" + clip-path="url(#clipPath18-93)" + y="73" + height="1" + width="266" + x="0" + style="stroke:none" /> + </g> + <g + id="g7384" + transform="matrix(0.26458333,0,0,0.26458333,63.386597,48.136442)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7382" + clip-path="url(#clipPath14-1)" + y="0" + height="1" + width="266" + x="0" + style="stroke:none" /> + </g> + <g + id="g7388" + transform="matrix(0.26458333,0,0,0.26458333,118.68451,48.665608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7386" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7400" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,48.665608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7390" + clip-path="url(#clipPath20)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7392" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABIElEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx99CE0cDf/8Wo2sGAbAYUA5dHG7A +rGXrw4h19sxlG1JQDJi1Yp3af0YmZ6I9zsTgN3PJBl24Af8ZGJ1JDTwmZgZfEM0C +5v1ngvv5xJP7Qv0n9prC+Ar8wu8efHwrBGPDw4SRwQJhABZQaOF8+sqrp0K7791Q +9lfXv8HDxvZn6eXTOjgDER1YyCi+0xGTBtsYpWv6UIyb7zu6mumL1okxUZKIMuOC +XkEMYPx3geRA/M9wAu4FRob/e5GdvjIkZSc+NjgQ/zJshhuQFhF0i/H/v71EW/+P +YVN6TMBllEBMiwpcRaz+9KiAObhjgZm5F5RxsETXBZAcA7UBABLxYB5agt76AAAA +AElFTkSuQmCC" + width="16" + clip-path="url(#clipPath20)" + y="3" + x="2" /> + <image + id="image7394" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath20)" + y="3" + x="18" /> + <rect + id="rect7396" + clip-path="url(#clipPath20)" + y="0" + height="22" + width="70" + x="36" + style="stroke:none" /> + <text + id="text7398" + clip-path="url(#clipPath20)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getArea()</text> + </g> + <g + id="g7404" + transform="matrix(0.26458333,0,0,0.26458333,118.68451,55.015608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7402" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7416" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,55.015608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7406" + clip-path="url(#clipPath22)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7408" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABIElEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx99CE0cDf/8Wo2sGAbAYUA5dHG7A +rGXrw4h19sxlG1JQDJi1Yp3af0YmZ6I9zsTgN3PJBl24Af8ZGJ1JDTwmZgZfEM0C +5v1ngvv5xJP7Qv0n9prC+Ar8wu8efHwrBGPDw4SRwQJhABZQaOF8+sqrp0K7791Q +9lfXv8HDxvZn6eXTOjgDER1YyCi+0xGTBtsYpWv6UIyb7zu6mumL1okxUZKIMuOC +XkEMYPx3geRA/M9wAu4FRob/e5GdvjIkZSc+NjgQ/zJshhuQFhF0i/H/v71EW/+P +YVN6TMBllEBMiwpcRaz+9KiAObhjgZm5F5RxsETXBZAcA7UBABLxYB5agt76AAAA +AElFTkSuQmCC" + width="16" + clip-path="url(#clipPath22)" + y="3" + x="2" /> + <image + id="image7410" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath22)" + y="3" + x="18" /> + <rect + id="rect7412" + clip-path="url(#clipPath22)" + y="0" + height="22" + width="108" + x="36" + style="stroke:none" /> + <text + id="text7414" + clip-path="url(#clipPath22)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getPerimeter()</text> + </g> + <g + id="g7420" + transform="matrix(0.26458333,0,0,0.26458333,118.68451,61.365608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7418" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7432" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,61.365608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7422" + clip-path="url(#clipPath24-1)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7424" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath24-1)" + y="3" + x="2" /> + <image + id="image7426" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath24-1)" + y="3" + x="18" /> + <rect + id="rect7428" + clip-path="url(#clipPath24-1)" + y="0" + height="22" + width="46" + x="36" + style="stroke:none" /> + <text + id="text7430" + clip-path="url(#clipPath24-1)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getX()</text> + </g> + <g + id="g7436" + transform="matrix(0.26458333,0,0,0.26458333,124.24076,67.715608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7434" + clip-path="url(#clipPath26)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">void</text> + </g> + <g + id="g7448" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,67.715608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7438" + clip-path="url(#clipPath27-7)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7440" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath27-7)" + y="3" + x="2" /> + <image + id="image7442" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath27-7)" + y="3" + x="18" /> + <rect + id="rect7444" + clip-path="url(#clipPath27-7)" + y="0" + height="22" + width="93" + x="36" + style="stroke:none" /> + <text + id="text7446" + clip-path="url(#clipPath27-7)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">setX(double)</text> + </g> + <g + id="g7452" + transform="matrix(0.26458333,0,0,0.26458333,118.68451,74.065608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7450" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7464" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,74.065608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7454" + clip-path="url(#clipPath29-2)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7456" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath29-2)" + y="3" + x="2" /> + <image + id="image7458" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath29-2)" + y="3" + x="18" /> + <rect + id="rect7460" + clip-path="url(#clipPath29-2)" + y="0" + height="22" + width="47" + x="36" + style="stroke:none" /> + <text + id="text7462" + clip-path="url(#clipPath29-2)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getY()</text> + </g> + <g + id="g7468" + transform="matrix(0.26458333,0,0,0.26458333,124.24076,80.415608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7466" + clip-path="url(#clipPath26)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">void</text> + </g> + <g + id="g7480" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,80.415608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7470" + clip-path="url(#clipPath31-2)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7472" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath31-2)" + y="3" + x="2" /> + <image + id="image7474" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath31-2)" + y="3" + x="18" /> + <rect + id="rect7476" + clip-path="url(#clipPath31-2)" + y="0" + height="22" + width="94" + x="36" + style="stroke:none" /> + <text + id="text7478" + clip-path="url(#clipPath31-2)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">setY(double)</text> + </g> + <g + id="g7484" + transform="matrix(0.26458333,0,0,0.26458333,120.27201,86.765608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7482" + clip-path="url(#clipPath33-7)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">Shape</text> + </g> + <g + id="g7498" + transform="matrix(0.26458333,0,0,0.26458333,63.915763,86.765608)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7486" + clip-path="url(#clipPath34)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7488" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath34)" + y="3" + x="2" /> + <image + id="image7490" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAc0lEQVR42mNkAIKq +/lkGTP8Z+hn+/3cAcje0FKcHMhAJWMCa//3fD2QLgEUYGQUYSABMYJthmkH6/zMs +JMUAFqizweA/w/8F/5EMI8oFID8DnX2AkYExEWj/RUYGhv7a3lkJDOQCkOaavln7 +GUbBKBhSAABZyx+PZnKAZwAAAABJRU5ErkJggg==" + width="16" + clip-path="url(#clipPath34)" + y="3" + x="2" /> + <image + id="image7492" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath34)" + y="3" + x="18" /> + <rect + id="rect7494" + clip-path="url(#clipPath34)" + y="0" + height="22" + width="157" + x="36" + style="stroke:none" /> + <text + id="text7496" + clip-path="url(#clipPath34)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">move(double, double)</text> + </g> + <g + id="g7502" + transform="matrix(0.26458333,0,0,0.26458333,63.386597,21.413525)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:url(#linearGradient8631);fill-opacity:1;stroke:url(#linearGradient8633);stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7500" + clip-path="url(#clipPath35)" + y="0" + height="28" + width="266" + x="0" + style="fill:url(#linearGradient8629);stroke:none" /> + </g> + <g + id="g7510" + transform="matrix(0.26458333,0,0,0.26458333,64.180347,22.207275)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <image + id="image7504" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABGklEQVR42mNgoBAw +ogs4b72r9oeRyRnINECTusDy/9/evd7Kt5AFmdANAGouxqIZBAygcgxYDZi5bEMK +sc5GVgs2YOaSDbpAlh/RHgeqBesBAhYwn5nB9x+S/P+vn1ner5xo+OflEyFwQLGx +/xEtnrgXxQygHiB1GWzAP0YGC2RJkOZ/3z5xCqfUH2IWlfyOzREwPUzYJEE2c5o4 +38WlGW8skAKmL1onhtUAFnGZd9/P7FX++/o5Jz4DMuOCXkEC8T/DCeRwEAzPPw8K +h7dzGu1wBiJQDzwW/v1l2AxkwQ1g5Ob9I5RUcxqf7WA9sDBIjwm4zPCPYRPRngeq +BetBDsT0qIA5xOpHVosRiMAM0wvKOFj0XYDKURcAANpNZYn0p2waAAAAAElFTkSu +QmCC" + width="16" + clip-path="url(#clipPath36)" + y="3" + x="2" /> + <image + id="image7506" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath36)" + y="3" + x="18" /> + <text + id="text7508" + clip-path="url(#clipPath36)" + y="17" + xml:space="preserve" + x="37" + style="stroke:none">Shape</text> + </g> + <g + id="g7516" + transform="matrix(0.26458333,0,0,0.26458333,14.835556,116.13436)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7512" + clip-path="url(#clipPath38)" + y="177" + height="1" + width="283" + x="2" + style="stroke:none" /> + <rect + id="rect7514" + clip-path="url(#clipPath38)" + y="2" + height="176" + width="1" + x="284" + style="stroke:none" /> + </g> + <g + id="g7520" + transform="matrix(0.26458333,0,0,0.26458333,15.100139,116.39894)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#c0c0c0;fill-opacity:1;stroke:#c0c0c0;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <path + id="path7518" + clip-path="url(#clipPath39)" + d="M 0,0 H 283 V 176 H 0 Z M 1,1 H 282 V 175 H 1 Z" + inkscape:connector-curvature="0" + style="fill-rule:evenodd;stroke:none" /> + </g> + <g + id="g7524" + transform="matrix(0.26458333,0,0,0.26458333,15.364722,116.66352)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#e8e8e8;fill-opacity:1;stroke:#e8e8e8;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7522" + clip-path="url(#clipPath40)" + y="0" + height="174" + width="281" + x="0" + style="stroke:none" /> + </g> + <g + id="g7528" + transform="matrix(0.26458333,0,0,0.26458333,15.364722,124.07186)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7526" + clip-path="url(#clipPath41)" + y="0" + height="146" + width="281" + x="0" + style="stroke:none" /> + </g> + <g + id="g7532" + transform="matrix(0.26458333,0,0,0.26458333,74.631388,124.33644)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7530" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7544" + transform="matrix(0.26458333,0,0,0.26458333,15.893889,124.33644)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7534" + clip-path="url(#clipPath24-1)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7536" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVR42mNgoBAw +ogt8WmejxsjI6AyUMkCV+X/h////e/mCjtzCacDn9XZhQMoZv43/j/MEHl4A4zPD +GF/W2yYApe2IcLRsVYQ8V/vKh1fhLoA4m6kYXWnVwjemj978EQKxlxRL7ETx0P9/ +vSDvsIBNAfsZFVx7/JMXpBldI9wdED23mKBcA3QFc3d90gXRxXNfW+HwClgPEy6f +htvy3gDRvcmix/CFCBOl6YBaBvy/QLpWiB4mSJT830uydqgeRlJSIRLYyxt4aBVK +SgSlLFAKAzKViNVMlcxEMQAA0HVXcKsiv9IAAAAASUVORK5CYII=" + width="16" + clip-path="url(#clipPath24-1)" + y="3" + x="2" /> + <image + id="image7538" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAc0lEQVR42mNgGAWM +uCQ+pyrX/Gf8JwtW9J/pMe/suy3Y1LFgE/yUrSH8//dPWYb/jL0gPtCgYpKd9ilN +cSY2NlFeQHY+XCEObzBhMwBdMy4xnAYgrGVewMTIuAqfEha8Bvz/m/CPQFhhdQHI +v8SIjQIIAAAIbymHUuhBrwAAAABJRU5ErkJggg==" + width="16" + clip-path="url(#clipPath24-1)" + y="3" + x="18" /> + <rect + id="rect7540" + clip-path="url(#clipPath24-1)" + y="0" + height="22" + width="46" + x="36" + style="stroke:none" /> + <text + id="text7542" + clip-path="url(#clipPath24-1)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">radius</text> + </g> + <g + id="g7548" + transform="matrix(0.26458333,0,0,0.26458333,15.364722,124.07186)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7546" + clip-path="url(#clipPath43)" + y="24" + height="1" + width="281" + x="0" + style="stroke:none" /> + </g> + <g + id="g7552" + transform="matrix(0.26458333,0,0,0.26458333,15.364722,130.42186)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7550" + clip-path="url(#clipPath44)" + y="0" + height="1" + width="281" + x="0" + style="stroke:none" /> + </g> + <g + id="g7564" + transform="matrix(0.26458333,0,0,0.26458333,15.893889,130.95102)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7554" + clip-path="url(#clipPath46)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7556" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath46)" + y="3" + x="2" /> + <image + id="image7558" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath46)" + y="3" + x="18" /> + <rect + id="rect7560" + clip-path="url(#clipPath46)" + y="0" + height="22" + width="215" + x="36" + style="stroke:none" /> + <text + id="text7562" + clip-path="url(#clipPath46)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">Circle(double, double, double)</text> + </g> + <g + id="g7568" + transform="matrix(0.26458333,0,0,0.26458333,15.364722,124.07186)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7566" + clip-path="url(#clipPath47)" + y="49" + height="1" + width="281" + x="0" + style="stroke:none" /> + </g> + <g + id="g7572" + transform="matrix(0.26458333,0,0,0.26458333,15.364722,137.03644)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7570" + clip-path="url(#clipPath44)" + y="0" + height="1" + width="281" + x="0" + style="stroke:none" /> + </g> + <g + id="g7576" + transform="matrix(0.26458333,0,0,0.26458333,74.631388,137.56561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7574" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7588" + transform="matrix(0.26458333,0,0,0.26458333,15.893889,137.56561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7578" + clip-path="url(#clipPath20)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7580" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath20)" + y="3" + x="2" /> + <image + id="image7582" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath20)" + y="3" + x="18" /> + <rect + id="rect7584" + clip-path="url(#clipPath20)" + y="0" + height="22" + width="70" + x="36" + style="stroke:none" /> + <text + id="text7586" + clip-path="url(#clipPath20)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getArea()</text> + </g> + <g + id="g7592" + transform="matrix(0.26458333,0,0,0.26458333,74.631388,143.91561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7590" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7604" + transform="matrix(0.26458333,0,0,0.26458333,15.893889,143.91561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7594" + clip-path="url(#clipPath22)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7596" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath22)" + y="3" + x="2" /> + <image + id="image7598" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath22)" + y="3" + x="18" /> + <rect + id="rect7600" + clip-path="url(#clipPath22)" + y="0" + height="22" + width="108" + x="36" + style="stroke:none" /> + <text + id="text7602" + clip-path="url(#clipPath22)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getPerimeter()</text> + </g> + <g + id="g7608" + transform="matrix(0.26458333,0,0,0.26458333,74.631388,150.26561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7606" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7620" + transform="matrix(0.26458333,0,0,0.26458333,15.893889,150.26561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7610" + clip-path="url(#clipPath51)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7612" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath51)" + y="3" + x="2" /> + <image + id="image7614" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath51)" + y="3" + x="18" /> + <rect + id="rect7616" + clip-path="url(#clipPath51)" + y="0" + height="22" + width="82" + x="36" + style="stroke:none" /> + <text + id="text7618" + clip-path="url(#clipPath51)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getRadius()</text> + </g> + <g + id="g7624" + transform="matrix(0.26458333,0,0,0.26458333,80.187638,156.61561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7622" + clip-path="url(#clipPath26)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">void</text> + </g> + <g + id="g7636" + transform="matrix(0.26458333,0,0,0.26458333,15.893889,156.61561)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7626" + clip-path="url(#clipPath53)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7628" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath53)" + y="3" + x="2" /> + <image + id="image7630" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath53)" + y="3" + x="18" /> + <rect + id="rect7632" + clip-path="url(#clipPath53)" + y="0" + height="22" + width="129" + x="36" + style="stroke:none" /> + <text + id="text7634" + clip-path="url(#clipPath53)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">setRadius(double)</text> + </g> + <g + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:url(#linearGradient8637);fill-opacity:1;stroke:url(#linearGradient8639);stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" + id="g7640" + transform="matrix(0.26458333,0,0,0.26458333,15.364722,116.66352)" + font-size="15"> + <rect + style="fill:url(#linearGradient8635);stroke:none" + id="rect7638" + clip-path="url(#clipPath54)" + y="0" + height="28" + width="281" + x="0" /> + </g> + <g + id="g7648" + transform="matrix(0.26458333,0,0,0.26458333,16.158472,117.45727)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <image + id="image7642" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABGElEQVR42mNgoBAw +ogs4b72r9oeRyRnINECTusDy/9/evd7Kt3Aa4Lj1Ydg/xn/OeG1kZDh+wFNxAYzP +DGM4bL+f8J/hvx0RrpZViirierBswlUQhwnm7P//GSyJ9TfIlSA9IDYLiID6GQ7+ +f/3M8n7lRMM/L58IgZ3Nxv5HtHjiXmQ1UD23WKB8lAADaf737ROncEr9IWZRye84 +HGIA9wI6ANnMaeJ8F49mOGCiNB1gNYBFXObd9zN7lf++fs5JyABYGFxADgfB8Pzz +oHB4O6fRDlcgQvVADAClMGCowg1g5Ob9I5RUcxqvzUA98IR0f9mkt6DE8Z/xvxJR +/v7PtHeft+IhlJQISlnEGALSvN9bfhXVMhPFAABj9nS+zu6R5QAAAABJRU5ErkJg +gg==" + width="16" + clip-path="url(#clipPath55)" + y="3" + x="2" /> + <image + id="image7644" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath55)" + y="3" + x="18" /> + <text + id="text7646" + clip-path="url(#clipPath55)" + y="17" + xml:space="preserve" + x="37" + style="stroke:none">Circle</text> + </g> + <g + id="g7654" + transform="matrix(0.26458333,0,0,0.26458333,95.533471,106.60936)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7650" + clip-path="url(#clipPath57)" + y="249" + height="1" + width="369" + x="2" + style="stroke:none" /> + <rect + id="rect7652" + clip-path="url(#clipPath57)" + y="2" + height="248" + width="1" + x="370" + style="stroke:none" /> + </g> + <g + id="g7658" + transform="matrix(0.26458333,0,0,0.26458333,95.798055,106.87394)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#c0c0c0;fill-opacity:1;stroke:#c0c0c0;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <path + id="path7656" + clip-path="url(#clipPath58)" + d="M 0,0 H 369 V 248 H 0 Z M 1,1 H 368 V 247 H 1 Z" + inkscape:connector-curvature="0" + style="fill-rule:evenodd;stroke:none" /> + </g> + <g + id="g7662" + transform="matrix(0.26458333,0,0,0.26458333,96.062638,107.13852)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#e8e8e8;fill-opacity:1;stroke:#e8e8e8;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7660" + clip-path="url(#clipPath59)" + y="0" + height="246" + width="367" + x="0" + style="stroke:none" /> + </g> + <g + id="g7666" + transform="matrix(0.26458333,0,0,0.26458333,96.062638,114.54686)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7664" + clip-path="url(#clipPath60)" + y="0" + height="218" + width="367" + x="0" + style="stroke:none" /> + </g> + <g + id="g7670" + transform="matrix(0.26458333,0,0,0.26458333,178.08347,114.81144)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7668" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7682" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,114.81144)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7672" + clip-path="url(#clipPath62)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7674" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVR42mNgoBAw +ogt8WmejxsjI6AyUMkCV+X/h////e/mCjtzCacDn9XZhQMoZv43/j/MEHl4A4zPD +GF/W2yYApe2IcLRsVYQ8V/vKh1fhLoA4m6kYXWnVwjemj978EQKxlxRL7ETx0P9/ +vSDvsIBNAfsZFVx7/JMXpBldI9wdED23mKBcA3QFc3d90gXRxXNfW+HwClgPEy6f +htvy3gDRvcmix/CFCBOl6YBaBvy/QLpWiB4mSJT830uydqgeRlJSIRLYyxt4aBVK +SgSlLFAKAzKViNVMlcxEMQAA0HVXcKsiv9IAAAAASUVORK5CYII=" + width="16" + clip-path="url(#clipPath62)" + y="3" + x="2" /> + <image + id="image7676" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAc0lEQVR42mNgGAWM +uCQ+pyrX/Gf8JwtW9J/pMe/suy3Y1LFgE/yUrSH8//dPWYb/jL0gPtCgYpKd9ilN +cSY2NlFeQHY+XCEObzBhMwBdMy4xnAYgrGVewMTIuAqfEha8Bvz/m/CPQFhhdQHI +v8SIjQIIAAAIbymHUuhBrwAAAABJRU5ErkJggg==" + width="16" + clip-path="url(#clipPath62)" + y="3" + x="18" /> + <rect + id="rect7678" + clip-path="url(#clipPath62)" + y="0" + height="22" + width="44" + x="36" + style="stroke:none" /> + <text + id="text7680" + clip-path="url(#clipPath62)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">width</text> + </g> + <g + id="g7686" + transform="matrix(0.26458333,0,0,0.26458333,178.08347,121.16144)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7684" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7698" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,121.16144)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7688" + clip-path="url(#clipPath64)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7690" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVR42mNgoBAw +ogt8WmejxsjI6AyUMkCV+X/h////e/mCjtzCacDn9XZhQMoZv43/j/MEHl4A4zPD +GF/W2yYApe2IcLRsVYQ8V/vKh1fhLoA4m6kYXWnVwjemj978EQKxlxRL7ETx0P9/ +vSDvsIBNAfsZFVx7/JMXpBldI9wdED23mKBcA3QFc3d90gXRxXNfW+HwClgPEy6f +htvy3gDRvcmix/CFCBOl6YBaBvy/QLpWiB4mSJT830uydqgeRlJSIRLYyxt4aBVK +SgSlLFAKAzKViNVMlcxEMQAA0HVXcKsiv9IAAAAASUVORK5CYII=" + width="16" + clip-path="url(#clipPath64)" + y="3" + x="2" /> + <image + id="image7692" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAc0lEQVR42mNgGAWM +uCQ+pyrX/Gf8JwtW9J/pMe/suy3Y1LFgE/yUrSH8//dPWYb/jL0gPtCgYpKd9ilN +cSY2NlFeQHY+XCEObzBhMwBdMy4xnAYgrGVewMTIuAqfEha8Bvz/m/CPQFhhdQHI +v8SIjQIIAAAIbymHUuhBrwAAAABJRU5ErkJggg==" + width="16" + clip-path="url(#clipPath64)" + y="3" + x="18" /> + <rect + id="rect7694" + clip-path="url(#clipPath64)" + y="0" + height="22" + width="49" + x="36" + style="stroke:none" /> + <text + id="text7696" + clip-path="url(#clipPath64)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">height</text> + </g> + <g + id="g7702" + transform="matrix(0.26458333,0,0,0.26458333,96.062638,114.54686)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7700" + clip-path="url(#clipPath65)" + y="48" + height="1" + width="367" + x="0" + style="stroke:none" /> + </g> + <g + id="g7706" + transform="matrix(0.26458333,0,0,0.26458333,96.062638,127.24686)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7704" + clip-path="url(#clipPath66)" + y="0" + height="1" + width="367" + x="0" + style="stroke:none" /> + </g> + <g + id="g7718" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,127.77602)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7708" + clip-path="url(#clipPath68)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7710" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath68)" + y="3" + x="2" /> + <image + id="image7712" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath68)" + y="3" + x="18" /> + <rect + id="rect7714" + clip-path="url(#clipPath68)" + y="0" + height="22" + width="301" + x="36" + style="stroke:none" /> + <text + id="text7716" + clip-path="url(#clipPath68)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">Rectangle(double, double, double, double)</text> + </g> + <g + id="g7722" + transform="matrix(0.26458333,0,0,0.26458333,96.062638,114.54686)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7720" + clip-path="url(#clipPath69)" + y="73" + height="1" + width="367" + x="0" + style="stroke:none" /> + </g> + <g + id="g7726" + transform="matrix(0.26458333,0,0,0.26458333,96.062638,133.86144)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7724" + clip-path="url(#clipPath66)" + y="0" + height="1" + width="367" + x="0" + style="stroke:none" /> + </g> + <g + id="g7730" + transform="matrix(0.26458333,0,0,0.26458333,178.08347,134.39061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7728" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7742" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,134.39061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7732" + clip-path="url(#clipPath20)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7734" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath20)" + y="3" + x="2" /> + <image + id="image7736" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath20)" + y="3" + x="18" /> + <rect + id="rect7738" + clip-path="url(#clipPath20)" + y="0" + height="22" + width="70" + x="36" + style="stroke:none" /> + <text + id="text7740" + clip-path="url(#clipPath20)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getArea()</text> + </g> + <g + id="g7746" + transform="matrix(0.26458333,0,0,0.26458333,178.08347,140.74061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7744" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7758" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,140.74061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7748" + clip-path="url(#clipPath22)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7750" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath22)" + y="3" + x="2" /> + <image + id="image7752" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath22)" + y="3" + x="18" /> + <rect + id="rect7754" + clip-path="url(#clipPath22)" + y="0" + height="22" + width="108" + x="36" + style="stroke:none" /> + <text + id="text7756" + clip-path="url(#clipPath22)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getPerimeter()</text> + </g> + <g + id="g7762" + transform="matrix(0.26458333,0,0,0.26458333,178.08347,147.09061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7760" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7774" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,147.09061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7764" + clip-path="url(#clipPath73)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7766" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath73)" + y="3" + x="2" /> + <image + id="image7768" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath73)" + y="3" + x="18" /> + <rect + id="rect7770" + clip-path="url(#clipPath73)" + y="0" + height="22" + width="78" + x="36" + style="stroke:none" /> + <text + id="text7772" + clip-path="url(#clipPath73)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getWidth()</text> + </g> + <g + id="g7778" + transform="matrix(0.26458333,0,0,0.26458333,183.63972,153.44061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7776" + clip-path="url(#clipPath26)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">void</text> + </g> + <g + id="g7790" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,153.44061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7780" + clip-path="url(#clipPath75)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7782" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath75)" + y="3" + x="2" /> + <image + id="image7784" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath75)" + y="3" + x="18" /> + <rect + id="rect7786" + clip-path="url(#clipPath75)" + y="0" + height="22" + width="125" + x="36" + style="stroke:none" /> + <text + id="text7788" + clip-path="url(#clipPath75)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">setWidth(double)</text> + </g> + <g + id="g7794" + transform="matrix(0.26458333,0,0,0.26458333,178.08347,159.79061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7792" + clip-path="url(#clipPath9-5)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">double</text> + </g> + <g + id="g7806" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,159.79061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7796" + clip-path="url(#clipPath77)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7798" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath77)" + y="3" + x="2" /> + <image + id="image7800" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath77)" + y="3" + x="18" /> + <rect + id="rect7802" + clip-path="url(#clipPath77)" + y="0" + height="22" + width="85" + x="36" + style="stroke:none" /> + <text + id="text7804" + clip-path="url(#clipPath77)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">getHeight()</text> + </g> + <g + id="g7810" + transform="matrix(0.26458333,0,0,0.26458333,183.63972,166.14061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <text + id="text7808" + clip-path="url(#clipPath26)" + y="17" + xml:space="preserve" + x="3" + style="stroke:none">void</text> + </g> + <g + id="g7822" + transform="matrix(0.26458333,0,0,0.26458333,96.591805,166.14061)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <rect + id="rect7812" + clip-path="url(#clipPath79)" + y="0" + height="22" + width="36" + x="0" + style="stroke:none" /> + <image + id="image7814" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42mNgoBAw +ogv86F2oxvT3r/M/BgYDZHEmBoYL/5iZ93IUx9/CacDP7rlh//8zOuOzkYnh/3G2 +suQFMD4zjPGra27CfwZGO0JOBqqRrXXz42rZvekq1GUQZ/9jYLQk1t8gV4L0wA0A ++ZnUwIPpYQERyAF24sl9of4Te01hfAV+4XcPPr4VgrE7XQNPI+thwWVDoYXz6Suv +ngrtvndD2V9d/wYPG9ufpZdP62AGKg5gIaP4TkdM+h2IHaVr+lCMm+879lihEDDB +EgkZGi/AExI4Sv7+LSbJBGbmXlCqBCekll0b3oISB9A8JaLSP+P/vRwliYdQUiIo +ZRFjCEgze2nyKqplJooBAPLmaJ/uO4SyAAAAAElFTkSuQmCC" + width="16" + clip-path="url(#clipPath79)" + y="3" + x="2" /> + <image + id="image7816" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath79)" + y="3" + x="18" /> + <rect + id="rect7818" + clip-path="url(#clipPath79)" + y="0" + height="22" + width="132" + x="36" + style="stroke:none" /> + <text + id="text7820" + clip-path="url(#clipPath79)" + y="17" + xml:space="preserve" + x="37" + style="fill:#000000;stroke:none">setHeight(double)</text> + </g> + <g + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:url(#linearGradient8643);fill-opacity:1;stroke:url(#linearGradient8645);stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto" + id="g7826" + transform="matrix(0.26458333,0,0,0.26458333,96.062638,107.13852)" + font-size="15"> + <rect + style="fill:url(#linearGradient8641);stroke:none" + id="rect7824" + clip-path="url(#clipPath80)" + y="0" + height="28" + width="367" + x="0" /> + </g> + <g + id="g7834" + transform="matrix(0.26458333,0,0,0.26458333,96.856388,107.93227)" + font-size="15" + style="font-style:normal;font-weight:normal;font-size:15px;font-family:Ubuntu;color-interpolation:auto;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <image + id="image7828" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABGElEQVR42mNgoBAw +ogs4b72r9oeRyRnINECTusDy/9/evd7Kt3Aa4Lj1Ydg/xn/OeG1kZDh+wFNxAYzP +DGM4bL+f8J/hvx0RrpZViirierBswlUQhwnm7P//GSyJ9TfIlSA9IDYLiID6GQ7+ +f/3M8n7lRMM/L58IgZ3Nxv5HtHjiXmQ1UD23WKB8lAADaf737ROncEr9IWZRye84 +HGIA9wI6ANnMaeJ8F49mOGCiNB1gNYBFXObd9zN7lf++fs5JyABYGFxADgfB8Pzz +oHB4O6fRDlcgQvVADAClMGCowg1g5Ob9I5RUcxqvzUA98IR0f9mkt6DE8Z/xvxJR +/v7PtHeft+IhlJQISlnEGALSvN9bfhXVMhPFAABj9nS+zu6R5QAAAABJRU5ErkJg +gg==" + width="16" + clip-path="url(#clipPath81)" + y="3" + x="2" /> + <image + id="image7830" + preserveAspectRatio="none" + height="16" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVR42mNgGAWM +6ALJW11q/jP+lwVL/md8PNd7Tws+A1jQBUCamf8z9ILYfxn/FxNyAQs2wdnee2+B +6KRtzgxkGQD3CsN/kCEz4f7F4iUmdI3zvPamx61zFoaFA7r30MWYsNm+KGjvWzjn +L8MCRkamVSR7AQ6YGRL+//+HU5oJZ/wC/UuM2ChgYAAAYjIvl7Ex+6kAAAAASUVO +RK5CYII=" + width="16" + clip-path="url(#clipPath81)" + y="3" + x="18" /> + <text + id="text7832" + clip-path="url(#clipPath81)" + y="17" + xml:space="preserve" + x="37" + style="stroke:none">Rectangle</text> + </g> + <g + id="g7838" + transform="matrix(0.26458333,0,0,0.26458333,14.835556,20.884359)" + stroke-miterlimit="1.45" + style="font-style:normal;font-weight:normal;font-size:medium;font-family:Dialog;color-interpolation:auto;fill:#000082;fill-opacity:1;stroke:#000082;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1.45000005;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <path + id="path7836" + clip-path="url(#clipPath2-3)" + d="M 142.5,359.9702 V 299 H 249 v -13.9512" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + id="g7846" + transform="matrix(0.26458333,0,0,0.26458333,14.835556,20.884359)" + stroke-miterlimit="1.45" + style="font-style:normal;font-weight:normal;font-size:medium;font-family:Dialog;color-interpolation:auto;fill:#000082;fill-opacity:1;stroke:#000082;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:1.45000005;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"> + <path + id="path7840" + clip-path="url(#clipPath2-3)" + d="m 249,274.0488 -6,12 h 12 z" + inkscape:connector-curvature="0" + style="stroke:none" /> + <path + id="path7842" + clip-path="url(#clipPath2-3)" + d="M 490.5,323.9512 V 299 H 384 v -13.9512" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + id="path7844" + clip-path="url(#clipPath2-3)" + d="m 384,274.0488 -6,12 h 12 z" + inkscape:connector-curvature="0" + style="stroke:none" /> + </g> + </g> +</svg> diff --git a/Doc/Sd1/Ref/Inherit/shapeGetAreaAbstract.svg b/Doc/Sd1/Ref/Inherit/shapeGetAreaAbstract.multi.svg similarity index 100% rename from Doc/Sd1/Ref/Inherit/shapeGetAreaAbstract.svg rename to Doc/Sd1/Ref/Inherit/shapeGetAreaAbstract.multi.svg diff --git a/Doc/Sd1/inheritance.xml b/Doc/Sd1/inheritance.xml index cdc23ce8abafbd2e08eaf884fbe1a5a4af767df5..b7637a7da93d167b73793aa0959ea1ddf841f8a9 100644 --- a/Doc/Sd1/inheritance.xml +++ b/Doc/Sd1/inheritance.xml @@ -633,7 +633,7 @@ Rectangle at (1.0|-1.0), width= 2.0, height=3.0: <emphasis role="red">area = 6.0 <mediaobject> <imageobject> - <imagedata fileref="Ref/Inherit/shapeGetAreaAbstract.svg"/> + <imagedata fileref="Ref/Inherit/shapeGetAreaAbstract.multi.svg"/> </imageobject> </mediaobject> </figure> @@ -729,8 +729,8 @@ public class Rectangle <co linkends="sda_inherit_fig_protectedCreationTime-3" <calloutlist> <callout arearefs="sda_inherit_fig_protectedCreationTime-1-co" xml:id="sda_inherit_fig_protectedCreationTime-1"> - <para>Defining class <classname>Shape</classname> in package <code - language="java">model</code>.</para> + <para>Defining superclass <classname>Shape</classname> in package + <code language="java">model</code>.</para> </callout> <callout arearefs="sda_inherit_fig_protectedCreationTime-2-co" @@ -742,21 +742,103 @@ public class Rectangle <co linkends="sda_inherit_fig_protectedCreationTime-3" <callout arearefs="sda_inherit_fig_protectedCreationTime-3-co" xml:id="sda_inherit_fig_protectedCreationTime-3"> - <para>Deriving class <classname>Rectangle</classname> in package - <code language="java">model.sub</code> from superclass <code + <para>Deriving class <classname>Rectangle</classname> in different + package <code language="java">model.sub</code> from superclass <code language="java">Shape</code>.</para> </callout> <callout arearefs="sda_inherit_fig_protectedCreationTime-4-co" xml:id="sda_inherit_fig_protectedCreationTime-4"> <para>Accessing superclass attribute - <property>creationTime</property> across package boundaries.</para> + <property>creationTime</property> across package boundary.</para> </callout> </calloutlist> </figure> + <qandaset defaultlabel="qanda" xml:id="sd1_qanda_protectedPackagePrivate"> + <title><code language="java">protected</code> vs. <quote>package + private</quote></title> + + <qandadiv> + <qandaentry> + <question> + <para>Implement <xref + linkend="sda_inherit_fig_protectedCreationTime"/> in your IDE but + exchanging <classname>Rectangle</classname> by + <classname>Circle</classname> accordingly. Then execute + <classname>Circle</classname>.<methodname>getArea()</methodname> + and watch the logging outcome.</para> + + <para>Now apply the following two changes:</para> + + <orderedlist> + <listitem> + <para>Remove <code language="java">creationTime</code>'s <code + language="java">protected</code> modifier.</para> + </listitem> + + <listitem> + <para>Move class <classname>Circle</classname> to package + <package>model</package>.</para> + </listitem> + </orderedlist> + + <para>Are you still able to run your code? Explain the + result.</para> + </question> + + <answer> + <para>Implementing class <classname>Circle</classname> is + straightforward:</para> + + <programlisting language="none">public class Circle extends Shape { + static final Logger log = LogManager.getLogger(Circle.class); + + @Override public double getArea() { + log.info("Circle creation time:" + creationTime ); + return Math.PI * radius * radius; + } + private double radius; +}</programlisting> + + <para>Executing <code language="java">new + Circle().getArea()</code> results in:</para> + + <screen>2018-01-03 08:31:18,811 INFO [main] sup.Circle (Circle.java:11) - Circle creation time:3340216708709</screen> + + <para>Removing <code language="java">protected</code> yields a + compile time error:</para> + + <programlisting language="none">public class Circle extends Shape { + static final Logger log = LogManager.getLogger(Circle.class); + + @Override public double getArea() { + +<emphasis role="red">// Error: 'creationTime' is not public in 'testprotect.model.Shape'. +// Cannot be accessed from outside package</emphasis> + log.info("Circle creation time:" + creationTime ); +...</programlisting> + + <para>Moving class <classname>Circle</classname> to package + <package>model</package> resolves the issue: Having both classes + <classname>Shape</classname> and <classname>Circle</classname> in + a common package <package>model</package> implies <quote>package + private</quote> access. Thus every method in + <classname>Circle</classname> has full access to all fields and + methods of <classname>Shape</classname>.</para> + + <note> + <para>In a production environment this may or may not be desired + and is thus a design choice.</para> + </note> + </answer> + </qandaentry> + </qandadiv> + </qandaset> + <qandaset defaultlabel="qanda" xml:id="sd1_qanda_protectedAccessProblem"> - <title>Understanding protected access</title> + <title><code language="java">protected</code> access involving different + instances</title> <qandadiv> <qandaentry> @@ -780,9 +862,8 @@ public class AlphaSub } }</programlisting> - <para>If we try to mimic the related classes access to <code - language="java">attribProtected</code> becomes prohibited as - well:</para> + <para>If we try to access a different instance's <code + language="java">attribProtected</code> we fail:</para> <programlisting language="java">package package_two; @@ -791,7 +872,7 @@ import package_one.Alpha; public class AlphaSub extends Alpha { - void dummy(Alpha a) { + void dummy(final Alpha a) { int v; ... v = a.<emphasis role="red">attribProtected</emphasis>; @@ -799,14 +880,16 @@ public class AlphaSub } }</programlisting> - <para>Why is this access prohibited? Explain the different - behavior.</para> + <para>Why is this access prohibited? Both the calling instance and + the argument <code language="java">a</code> still belong to the + <classname>Alpha</classname> / <classname>AlphaSum</classname> + class hierarchy. Explain the different behavior.</para> </question> <answer> <para><code language="java">protected</code> inherited access grants an instance's subclass method access to a superclass - attribute or method. There is only one instance involved.</para> + attribute or method involving one common instance.</para> <para>The current use case differs: We have two (presumably different) instances one trying to access another's <code @@ -822,7 +905,7 @@ public class AlphaSub <title>The <code language="java">instanceOf</code> operator</title> <figure xml:id="sd1_inherit_fig_defeatPolymorphism"> - <title>Defeating polymorphism</title> + <title><quote>Defeating</quote> polymorphism</title> <informaltable border="0"> <colgroup width="68%"/> @@ -857,31 +940,29 @@ Type Rectangle</screen></td> <programlisting language="java">public abstract class Shape { private double x, y; - protected boolean equalCenter(Object o) { - if (o instanceof Shape){ - final Shape oShape = (Shape) o; - return Math.abs(oShape.x - x) + Math.abs(oShape.y - y) < 1.E-15; - } - return false; + protected boolean equalCenter(final Shape o) { + return Math.abs(o.x - x) + Math.abs(o.y - y) < 1.E-15; } ...</programlisting> </figure> <figure xml:id="sd1_inherit_fig_circleEquals"> - <title>Implementing <methodname - xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname> - in <classname>Circle</classname></title> + <title>Implementing <classname>Circle</classname>.<methodname + xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#equals-java.lang.Object-">equals()</methodname></title> <programlisting language="java">public class Circle extends Shape { - - @Override public boolean equals(Object o) { - if (o instanceof Circle){ + @Override public boolean equals(final Object o) { + if (o instanceof Circle){ final Circle oCircle = (Circle) o; return super.equalCenter(o) && Math.abs(oCircle.radius - radius) < 1.E-15; } return false; } ...</programlisting> + + <remark>if <code language="java">o == null</code> the expression <code + language="java">o instanceof Circle</code> evaluates to <code + language="java">false</code>.</remark> </figure> </section> @@ -915,7 +996,7 @@ Type Rectangle</screen></td> approach using inheritance in the subsequent exercises.</para> <qandaset defaultlabel="qanda" xml:id="sd1QandaFigureBaseClass"> - <title>Defining a <classname>Figure</classname> class hierarchy.</title> + <title>Defining a <classname>Shape</classname> class hierarchy</title> <qandadiv> <qandaentry> @@ -933,26 +1014,28 @@ Type Rectangle</screen></td> <para>We thus need two additional parameters <property>x</property> and <property>y</property> representing an - object's position. Consider the following <xref - linkend="glo_UML"/> inheritance diagram and implement the three - <xref linkend="glo_Java"/> classes <classname>Figure</classname>, - <classname>Circle</classname> and + object's position. Consider the following inheritance diagram and + implement the three <xref linkend="glo_Java"/> classes + <classname>Figure</classname>, <classname>Circle</classname> and <classname>Rectangle</classname>:</para> <mediaobject> <imageobject> - <imagedata fileref="Ref/Fig/figureBaseInherit.fig"/> + <imagedata fileref="Ref/Inherit/qandaShapeBasic.svg"/> </imageobject> </mediaobject> - <para>Create unit tests which checks for correct implementation of - the translation example from <xref linkend="sd1FigFigureMove"/> - and the two methods <methodname>getArea()</methodname> and - <methodname>getPerimeter()</methodname>.</para> + <para>Create unit tests checking for correct implementation of the + translation example from <xref linkend="sd1FigFigureMove"/> and + the all other methods.</para> + + <para>Why is <methodname>move(...)</methodname> being defined + returning an instance of class + <classname>Shape</classname>?</para> - <para>Why is the <methodname>move(...)</methodname> method being - defined returning an instance of class - <classname>Figure</classname>?</para> + <tip> + <para>Think of multiple / combined operations.</para> + </tip> </question> <answer> @@ -961,11 +1044,11 @@ Type Rectangle</screen></td> </annotation> <para>Defining <methodname>move(...)</methodname> returning an - instance of class <classname>Figure allows for operation - chaining:</classname></para> + instance of class <classname>Figure</classname> allows for + operation chaining:</para> <programlisting language="java">final Circle c = new Circle(1., 2., 3.0); -c.move(1, 5).move(-3, 7);</programlisting> +double p = c.move(1, 5).move(-3, 7).getPrimeter();</programlisting> </answer> </qandaentry> </qandadiv> @@ -989,9 +1072,9 @@ c.move(1, 5).move(-3, 7);</programlisting> <para>In the above example the rectangle is being <quote>inflated</quote> whereas the circle is being shrunk to half its original size. Add a corresponding - <methodname>scale(...)</methodname> method to the Figure - inheritance hierarchy which allows for operation chaining as - well.</para> + <methodname>scale(...)</methodname> method to the + <classname>Shape</classname> inheritance hierarchy which allows + for operation chaining as well.</para> <para>Provide appropriate unit tests.</para> </question> @@ -1010,10 +1093,10 @@ c.move(1, 5).move(-3, 7);</programlisting> <programlisting language="java">/** * - * @param factor Scale the current figure by this value. + * @param factor Scale the current shape by this value. * @return The current object. */ - public abstract Figure scale(double factor);</programlisting> + public abstract Shape scale(double factor);</programlisting> <para>This method has to be implemented in our two concrete classes <classname>Circle</classname> and diff --git a/P/Sd1/Figure/BaseClass/.gitignore b/P/Sd1/Figure/BaseClass/.gitignore index cf5fd6bb26d6450c8c63fb34295192784943cf5e..7913c9beebc7f8a17a72343401f27a01c881bbcf 100644 --- a/P/Sd1/Figure/BaseClass/.gitignore +++ b/P/Sd1/Figure/BaseClass/.gitignore @@ -1,5 +1,8 @@ +/dependency-reduced-pom.xml +/A1.log /.settings -/target +/.idea +/*.iml /.classpath /.project -/A1.log +/target diff --git a/P/Sd1/Figure/BaseClass/pom.xml b/P/Sd1/Figure/BaseClass/pom.xml index 23094b9f35f7daca30ea1ea1b3c71c973b0fef0a..617420cbe3233cf5bc7f9d2e62e4f0f4ae97bc7a 100644 --- a/P/Sd1/Figure/BaseClass/pom.xml +++ b/P/Sd1/Figure/BaseClass/pom.xml @@ -3,10 +3,10 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.hdm-stuttgart.sd1</groupId> - <artifactId>figure</artifactId> + <artifactId>shape</artifactId> <version>1.1</version> - <name>figure</name> + <name>shape</name> <url>https://freedocs.mi.hdm-stuttgart.de</url> <properties> diff --git a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java deleted file mode 100644 index 87a6b3d20258603f3725167532854797b0552f45..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java +++ /dev/null @@ -1,34 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; - -/** - * - */ -public class Circle extends Figure { - - private double radius; - - /** - * Extending {@link Figure#Figure(double, double)} by adding parameter radius - * on top of center coordinates. - * - * @param x - * @param y - * @param radius - */ - public Circle(double x, double y, double radius) { - super(x, y); - setRadius(radius); - } - - public double getArea() { - return radius * radius * Math.PI; - } - - public double getPerimeter() { - return 2 * Math.PI * radius; - } - - // Getter and setter methods for private attribute - public double getRadius() { return radius;} - public void setRadius(double radius) { this.radius = radius;} -} diff --git a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java deleted file mode 100644 index 3d62882e0c9237b68621d2f468e565e37d595321..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; - -/** - * @author goik - * - */ -public abstract class Figure { - - private double x,y; - - /** - * Creating a figure with given center coordinates - * - * @param x - * @param y - */ - public Figure(double x, double y) { - setX(x); - setY(y); - } - - // To be implemented in derived classes Rectangle and Circle - /** - * - * @return The current figure's area e.g. with times height in case of a rectangle - */ - public abstract double getArea(); - - /** - * @return The current figure's perimeter e.g. with 2 * (height + width) in case of a rectangle - */ - public abstract double getPerimeter(); - - public double getX() { return x;} - public void setX(double x) { this.x = x;} - public double getY() { return y;} - public void setY(double y) { this.y = y;} - - /** - * Translating a figure by a given vector (x,y). - * - * @param x - * @param y - * @return The current object. - */ - public final Figure move(double x, double y) { - setX(getX() + x); - setY(getY() + y); - return this; - } -} \ No newline at end of file diff --git a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/App.java b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java similarity index 75% rename from P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/App.java rename to P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java index d585050f77664e0791796e28b5846943e7f8d10f..f1cac10876c760de14c2711b6e062d9b5e3f6228 100644 --- a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/App.java +++ b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java @@ -1,6 +1,6 @@ -package de.hdm_stuttgart.mi.sd1.figure; +package de.hdm_stuttgart.mi.sd1.shape; -import de.hdm_stuttgart.mi.sd1.figure.model.Circle; +import de.hdm_stuttgart.mi.sd1.shape.model.Circle; /** * Playing with fraction objects, producing some output. diff --git a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java new file mode 100644 index 0000000000000000000000000000000000000000..5bbc285c1fc50a46f40718d41781586302610371 --- /dev/null +++ b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java @@ -0,0 +1,34 @@ +package de.hdm_stuttgart.mi.sd1.shape.model; + +/** + * + */ +public class Circle extends Shape { + + private double radius; + + /** + * Extending {@link Shape#Shape(double, double)} by adding parameter radius + * on top of center coordinates. + * + * @param x First center coordinate component + * @param y Second center coordinate component + * @param radius The circle's radius + */ + public Circle(final double x, final double y, final double radius) { + super(x, y); + setRadius(radius); + } + + public double getArea() { + return radius * radius * Math.PI; + } + + public double getPerimeter() { + return 2 * Math.PI * radius; + } + + // Getter and setter methods for private attribute + public double getRadius() { return radius;} + public void setRadius(final double radius) { this.radius = radius;} +} diff --git a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java similarity index 68% rename from P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java rename to P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java index 299508a598c53c75ead69a01e368b86bae8620b7..a9656819959451d23fef1dbb356ea4be594bf23e 100644 --- a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java +++ b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java @@ -1,19 +1,19 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; +package de.hdm_stuttgart.mi.sd1.shape.model; -public class Rectangle extends Figure { +public class Rectangle extends Shape { // Instance variables representing a rectangle's additional parameters private double width, height; /** - * Extending {@link Figure#Figure(double, double)} by adding parameters + * Extending {@link Shape#Shape(double, double)} by adding parameters * width and height on top of center coordinates. - * - * @param x - * @param y - * @param width - * @param height + * + * @param x First center coordinate component + * @param y Second center coordinate component + * @param width The rectangle's width + * @param height The rectangle's height */ public Rectangle(double x, double y, double width, double height) { super(x, y); @@ -21,16 +21,10 @@ public class Rectangle extends Figure { setHeight(height); } - /** - * @return The rectangle's area. - */ public double getArea() { return width * height; } - /** - * @return The rectangle's perimeter. - */ public double getPerimeter() { return 2 * (width + height); } @@ -40,5 +34,4 @@ public class Rectangle extends Figure { public void setWidth(double width) { this.width = width;} public double getHeight() { return height;} public void setHeight(double height) { this.height = height;} - } \ No newline at end of file diff --git a/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java new file mode 100644 index 0000000000000000000000000000000000000000..001bd54cb52830051c6037092c4a0883107c455b --- /dev/null +++ b/P/Sd1/Figure/BaseClass/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java @@ -0,0 +1,51 @@ +package de.hdm_stuttgart.mi.sd1.shape.model; + +/** + * @author goik + * + */ +public abstract class Shape { + + private double x,y; + + /** + * Creating a shape with given center coordinates + * + * @param x The shape's center coordinate's x component + * @param y The shape's center coordinate's y component + */ + Shape(final double x, final double y) { + setX(x); + setY(y); + } + + /** + * The current shape's area. + * @return e.g. with * height in case of a rectangle + */ + public abstract double getArea(); + + /** + * The current shape's perimeter. + * @return e.g. with 2 * (height + width) in case of a rectangle + */ + public abstract double getPerimeter(); + + public double getX() { return x;} + public void setX(final double x) { this.x = x;} + public double getY() { return y;} + public void setY(final double y) { this.y = y;} + + /** + * Translating a shape by a given vector (x,y). + * + * @param x The translation vector's x component + * @param y The translation vector's y component + * @return The current object. + */ + public final Shape move(final double x, final double y) { + setX(getX() + x); + setY(getY() + y); + return this; + } +} \ No newline at end of file diff --git a/P/Sd1/Figure/BaseClass/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java b/P/Sd1/Figure/BaseClass/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java deleted file mode 100644 index 453906008991a6e6bf40588fbeea041f68db9ece..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/BaseClass/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figuretest; - -import org.junit.Assert; -import org.junit.Test; - -import de.hdm_stuttgart.mi.sd1.figure.model.Circle; -import de.hdm_stuttgart.mi.sd1.figure.model.Rectangle; - -public class FigureTest { - static final double accuracyLimit = 1.E-100; // Rounding accuracy limit with respect to arithmetic operations - - @Test - public void circleTranslation() { - - final double - x = 3., y = 4., // circle's center coordinates (3, 4) - transX = 3., transY = -2., // translation vector (3, -2) - expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) - - final Circle c = new Circle(x, y, 3.0); - c.move(transX, transY); - - Assert.assertEquals(expectX, c.getX(), accuracyLimit); - Assert.assertEquals(expectY, c.getY(), accuracyLimit); - } - - @Test - public void rectangleTranslation() { - - final double - x = 2., y = 6.5, // rectangle's center coordinates (2, 6.5) - transX = 4., transY = 1., // translation vector (3, -2) - expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) - - final Rectangle r = new Rectangle(x, y, 2., 1.); - r.move(transX, transY); - Assert.assertEquals(expectX, r.getX(), accuracyLimit); - Assert.assertEquals(expectY, r.getY(), accuracyLimit); - } - - @Test - public void circlePerimeterAndArea() { - final double - radius = 1., - expectedPerimeter = 2 * Math.PI * radius, - expectedArea = Math.PI * radius * radius; - - final Circle c = new Circle(3, 4, radius); - - Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); - } - - @Test - public void rectanglePerimeterAndArea() { - final double - width = 2., - height = 1., - expectedPerimeter = 2 * (width + height), - expectedArea = width * height; - - final Rectangle r = new Rectangle(1, 3, width, height); - - Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); - } -} diff --git a/P/Sd1/Figure/BaseClass/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java b/P/Sd1/Figure/BaseClass/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6934a96219a5ad46bfd998f561589265e104a84d --- /dev/null +++ b/P/Sd1/Figure/BaseClass/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java @@ -0,0 +1,110 @@ +package de.hdm_stuttgart.mi.sd1.shapetest; + +import org.junit.Assert; +import org.junit.Test; + +import de.hdm_stuttgart.mi.sd1.shape.model.Circle; +import de.hdm_stuttgart.mi.sd1.shape.model.Rectangle; + +public class ShapeTest { + static private final double accuracyLimit = 1.E-100; // Rounding accuracy limit with respect to arithmetic operations + + @Test + public void circleTranslation() { + + final double + radius = 3.0, + newRadius = 1.5, + x = 3., y = 4., // circle's center coordinates (3, 4) + transX = 3., transY = -2., // translation vector (3, -2) + expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) + + final Circle c = new Circle(x, y, radius); + c.move(transX, transY); + + // Check moved circle's new center coordinate + Assert.assertEquals(expectX, c.getX(), accuracyLimit); + Assert.assertEquals(expectY, c.getY(), accuracyLimit); + + Assert.assertEquals(radius, c.getRadius(), accuracyLimit); + + // Changing radius + c.setRadius(newRadius); + + // New values present? + Assert.assertEquals(newRadius, c.getRadius(), accuracyLimit); + + // center coordinates remain unchanged? + Assert.assertEquals(expectX, c.getX(), accuracyLimit); + Assert.assertEquals(expectY, c.getY(), accuracyLimit); + } + + @Test + public void rectangleTranslation() { + + final double + width = 2., height = 1., + newWidth = 3., newHeight = 0.5, + x = 2., y = 6.5, // rectangle's center coordinates (2, 6.5) + transX = 4., transY = 1., // translation vector (3, -2) + expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) + + final Rectangle r = new Rectangle(x, y, width, height); + + Assert.assertEquals(width, r.getWidth(), accuracyLimit); + Assert.assertEquals(height, r.getHeight(), accuracyLimit); + + r.move(transX, transY); + + // Check moved rectangle's new center coordinate + Assert.assertEquals(expectX, r.getX(), accuracyLimit); + Assert.assertEquals(expectY, r.getY(), accuracyLimit); + + // Changing width and height + r.setWidth(newWidth); + r.setHeight(newHeight); + + // New values present? + Assert.assertEquals(newWidth, r.getWidth(), accuracyLimit); + Assert.assertEquals(newHeight, r.getHeight(), accuracyLimit); + + // center coordinates remain unchanged? + Assert.assertEquals(expectX, r.getX(), accuracyLimit); + Assert.assertEquals(expectY, r.getY(), accuracyLimit); + + // Change of center coordinates + r.setX(0.); + r.setY(0.); + + // center coordinates still unchanged? + Assert.assertEquals(expectX, r.getX(), accuracyLimit); + Assert.assertEquals(expectY, r.getY(), accuracyLimit); + } + + @Test + public void circlePerimeterAndArea() { + final double + radius = 1., + expectedPerimeter = 2 * Math.PI * radius, + expectedArea = Math.PI * radius * radius; + + final Circle c = new Circle(3, 4, radius); + + Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); + } + + @Test + public void rectanglePerimeterAndArea() { + final double + width = 2., + height = 1., + expectedPerimeter = 2 * (width + height), + expectedArea = width * height; + + final Rectangle r = new Rectangle(1, 3, width, height); + + Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); + } +} diff --git a/P/Sd1/Figure/Scale/.gitignore b/P/Sd1/Figure/Scale/.gitignore index cf5fd6bb26d6450c8c63fb34295192784943cf5e..7913c9beebc7f8a17a72343401f27a01c881bbcf 100644 --- a/P/Sd1/Figure/Scale/.gitignore +++ b/P/Sd1/Figure/Scale/.gitignore @@ -1,5 +1,8 @@ +/dependency-reduced-pom.xml +/A1.log /.settings -/target +/.idea +/*.iml /.classpath /.project -/A1.log +/target diff --git a/P/Sd1/Figure/Scale/pom.xml b/P/Sd1/Figure/Scale/pom.xml index 945c5fa049501de4ddfe20ac2512417efd0ee2d2..b5dc7250735b2f78d4dba73c4b6119da395222e9 100644 --- a/P/Sd1/Figure/Scale/pom.xml +++ b/P/Sd1/Figure/Scale/pom.xml @@ -3,10 +3,10 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.hdm-stuttgart.sd1</groupId> - <artifactId>figure</artifactId> + <artifactId>shape</artifactId> <version>1.2</version> - <name>figure</name> + <name>shape</name> <url>https://freedocs.mi.hdm-stuttgart.de</url> <properties> diff --git a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java deleted file mode 100644 index 5d3961f81d64b42717871b828b6fa14c8a0a4abd..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java +++ /dev/null @@ -1,57 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; - -/** - * - */ -public abstract class Figure { - - private double x,y; - - /** - * Creating a figure with given center coordinates - * - * @param x - * @param y - */ - public Figure(final double x, final double y) { - setX(x); - setY(y); - } - - // To be implemented in derived classes Rectangle and Circle - /** - * - * @param factor Scale the current figure by this value. - * @return The current object. - */ - public abstract Figure scale(double factor); - - /** - * - * @return The current figure's area e.g. with times height in case of a rectangle - */ - public abstract double getArea(); - - /** - * @return The current figure's perimeter e.g. with 2 * (height + width) in case of a rectangle - */ - public abstract double getPerimeter(); - - public double getX() { return x;} - public void setX(final double x) { this.x = x;} - public double getY() { return y;} - public void setY(final double y) { this.y = y;} - - /** - * Translating a figure by a given vector (x,y). - * - * @param x - * @param y - * @return The current object. - */ - public final Figure move(final double x, final double y) { - setX(getX() + x); - setY(getY() + y); - return this; - } -} \ No newline at end of file diff --git a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java deleted file mode 100644 index c303a556fdedbeb78a53c37b73ab4cadbdbbe6ee..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; - -public class Rectangle extends Figure { - -// Instance variables representing a rectangle's additional parameters - private double width, height; - - /** - * Extending {@link Figure#Figure(double, double)} by adding parameters - * width and height on top of center coordinates. - * - * @param x - * @param y - * @param width - * @param height - */ - public Rectangle(final double x, final double y, final double width, final double height) { - super(x, y); - setWidth(width); - setHeight(height); - } - - /** - * @return The rectangle's area. - */ - public double getArea() { - return width * height; - } - - /** - * @return The rectangle's perimeter. - */ - public double getPerimeter() { - return 2 * (width + height); - } - - // Getter and setter methods for private attributes - public double getWidth() { return width;} - public void setWidth(final double width) { this.width = width;} - public double getHeight() { return height;} - public void setHeight(final double height) { this.height = height;} - - @Override - public Figure scale(final double factor) { - width *= factor; - height *= factor; - return this; - } -} \ No newline at end of file diff --git a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java new file mode 100644 index 0000000000000000000000000000000000000000..f1cac10876c760de14c2711b6e062d9b5e3f6228 --- /dev/null +++ b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java @@ -0,0 +1,18 @@ +package de.hdm_stuttgart.mi.sd1.shape; + +import de.hdm_stuttgart.mi.sd1.shape.model.Circle; + +/** + * Playing with fraction objects, producing some output. + * + */ +public class App { + public static void main(String[] args) { + final Circle c = new Circle(1., 2., 3.0); + + System.out.println(c.getPerimeter()); + + c.move(1, 5).move(-3, 7); + + } +} diff --git a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java similarity index 63% rename from P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java rename to P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java index b06bfa70688b5681790da76a881eca7e12c9d135..9b892aac0f9143f358ad81db00b7a52d313e45f5 100644 --- a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java +++ b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java @@ -1,25 +1,30 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; +package de.hdm_stuttgart.mi.sd1.shape.model; /** * */ -public class Circle extends Figure { +public class Circle extends Shape { private double radius; /** - * Extending {@link Figure#Figure(double, double)} by adding parameter radius + * Extending {@link Shape#Shape(double, double)} by adding parameter radius * on top of center coordinates. - * - * @param x - * @param y - * @param radius + * + * @param x First center coordinate component + * @param y Second center coordinate component + * @param radius The circle's radius */ public Circle(final double x, final double y, final double radius) { super(x, y); setRadius(radius); } - + + @Override + public Shape scale(final double factor) { + radius *= factor; + return this; + } public double getArea() { return radius * radius * Math.PI; } @@ -31,10 +36,4 @@ public class Circle extends Figure { // Getter and setter methods for private attribute public double getRadius() { return radius;} public void setRadius(final double radius) { this.radius = radius;} - - @Override - public Figure scale(final double factor) { - radius *= factor; - return this; - } } diff --git a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java new file mode 100644 index 0000000000000000000000000000000000000000..8f6dd88034a2c8ad768cf9c5ad17f4e5424386b9 --- /dev/null +++ b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java @@ -0,0 +1,42 @@ +package de.hdm_stuttgart.mi.sd1.shape.model; + +public class Rectangle extends Shape { + + private double width, height; + + /** + * Extending {@link Shape#Shape(double, double)} by adding parameters + * width and height on top of center coordinates. + * + * @param x First center coordinate component + * @param y Second center coordinate component + * @param width The rectangle's width + * @param height The rectangle's height + */ + public Rectangle(double x, double y, double width, double height) { + super(x, y); + setWidth(width); + setHeight(height); + } + + @Override + public Shape scale(final double factor) { + width *= factor; + height *= factor; + return this; + } + + public double getArea() { + return width * height; + } + + public double getPerimeter() { + return 2 * (width + height); + } + + // Getter and setter methods for private attributes + public double getWidth() { return width;} + public void setWidth(double width) { this.width = width;} + public double getHeight() { return height;} + public void setHeight(double height) { this.height = height;} +} \ No newline at end of file diff --git a/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java new file mode 100644 index 0000000000000000000000000000000000000000..a228214a4a510df16993e244b493b0393e68d217 --- /dev/null +++ b/P/Sd1/Figure/Scale/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java @@ -0,0 +1,58 @@ +package de.hdm_stuttgart.mi.sd1.shape.model; + +/** + * @author goik + * + */ +public abstract class Shape { + + private double x,y; + + /** + * Creating a shape with given center coordinates + * + * @param x The shape's center coordinate's x component + * @param y The shape's center coordinate's y component + */ + Shape(final double x, final double y) { + setX(x); + setY(y); + } + + /** + * + * @param factor Scale the current figure by this value. + * @return The current object. + */ + public abstract Shape scale(double factor); + + /** + * The current shape's area. + * @return e.g. with * height in case of a rectangle + */ + public abstract double getArea(); + + /** + * The current shape's perimeter. + * @return e.g. with 2 * (height + width) in case of a rectangle + */ + public abstract double getPerimeter(); + + public double getX() { return x;} + public void setX(final double x) { this.x = x;} + public double getY() { return y;} + public void setY(final double y) { this.y = y;} + + /** + * Translating a shape by a given vector (x,y). + * + * @param x The translation vector's x component + * @param y The translation vector's y component + * @return The current object. + */ + public final Shape move(final double x, final double y) { + setX(getX() + x); + setY(getY() + y); + return this; + } +} \ No newline at end of file diff --git a/P/Sd1/Figure/Scale/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java b/P/Sd1/Figure/Scale/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java deleted file mode 100644 index b7e327ce6ee16d41d63a60ecb1e78ea7e00ed541..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/Scale/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java +++ /dev/null @@ -1,108 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figuretest; - -import org.junit.Assert; -import org.junit.Test; - -import de.hdm_stuttgart.mi.sd1.figure.model.Circle; -import de.hdm_stuttgart.mi.sd1.figure.model.Rectangle; - -public class FigureTest { - static final double accuracyLimit = 1.E-15; // Rounding accuracy limit with respect to arithmetic operations - - @Test - public void circleTranslation() { - - final double - x = 3., y = 4., // circle's center coordinates (3, 4) - transX = 3., transY = -2., // translation vector (3, -2) - expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) - - final Circle c = new Circle(x, y, 3.0); - c.move(transX, transY); - - Assert.assertEquals(expectX, c.getX(), accuracyLimit); - Assert.assertEquals(expectY, c.getY(), accuracyLimit); - } - - @Test - public void rectangleTranslation() { - - final double - x = 2., y = 6.5, // rectangle's center coordinates (2, 6.5) - transX = 4., transY = 1., // translation vector (3, -2) - expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) - - final Rectangle r = new Rectangle(x, y, 2., 1.); - r.move(transX, transY); - Assert.assertEquals(expectX, r.getX(), accuracyLimit); - Assert.assertEquals(expectY, r.getY(), accuracyLimit); - } - - @Test - public void circlePerimeterAndArea() { - final double - radius = 1., - expectedPerimeter = 2 * Math.PI * radius, - expectedArea = Math.PI * radius * radius; - - final Circle c = new Circle(3, 4, radius); - - Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); - } - - @Test - public void rectanglePerimeterAndArea() { - final double - width = 2., - height = 1., - expectedPerimeter = 2 * (width + height), - expectedArea = width * height; - - final Rectangle r = new Rectangle(1, 3, width, height); - - Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); - } - - @Test - public void rectangleScale() { - final double - width = 2., - height = 1., - factor = 3; - - final Rectangle r = new Rectangle(1, 3, width, height); - - final double - originalPerimeter = r.getPerimeter(), - originalArea = r.getArea(), - expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor - expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor - - r.scale(factor); - - Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); - } - - @Test - public void circleScale() { - final double - radius = 2., - factor = 0.7; - - final Circle c = new Circle(-2, 5, radius); - - final double - originalPerimeter = c.getPerimeter(), - originalArea = c.getArea(), - expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor - expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor - - c.scale(factor); - - Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); - } -} diff --git a/P/Sd1/Figure/Scale/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java b/P/Sd1/Figure/Scale/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java new file mode 100644 index 0000000000000000000000000000000000000000..be6d43c96290f59d0fc90bedead3440b5a59c7c0 --- /dev/null +++ b/P/Sd1/Figure/Scale/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java @@ -0,0 +1,149 @@ +package de.hdm_stuttgart.mi.sd1.shapetest; + +import org.junit.Assert; +import org.junit.Test; + +import de.hdm_stuttgart.mi.sd1.shape.model.Circle; +import de.hdm_stuttgart.mi.sd1.shape.model.Rectangle; + +public class ShapeTest { + static private final double accuracyLimit = 1.E-15; // Rounding accuracy limit with respect to arithmetic operations + + @Test + public void circleTranslation() { + + final double + radius = 3.0, + newRadius = 1.5, + x = 3., y = 4., // circle's center coordinates (3, 4) + transX = 3., transY = -2., // translation vector (3, -2) + expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) + + final Circle c = new Circle(x, y, radius); + c.move(transX, transY); + + // Check moved circle's new center coordinate + Assert.assertEquals(expectX, c.getX(), accuracyLimit); + Assert.assertEquals(expectY, c.getY(), accuracyLimit); + + Assert.assertEquals(radius, c.getRadius(), accuracyLimit); + + // Changing radius + c.setRadius(newRadius); + + // New values present? + Assert.assertEquals(newRadius, c.getRadius(), accuracyLimit); + + // center coordinates remain unchanged? + Assert.assertEquals(expectX, c.getX(), accuracyLimit); + Assert.assertEquals(expectY, c.getY(), accuracyLimit); + } + + @Test + public void rectangleTranslation() { + + final double + width = 2., height = 1., + newWidth = 3., newHeight = 0.5, + x = 2., y = 6.5, // rectangle's center coordinates (2, 6.5) + transX = 4., transY = 1., // translation vector (3, -2) + expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) + + final Rectangle r = new Rectangle(x, y, width, height); + + Assert.assertEquals(width, r.getWidth(), accuracyLimit); + Assert.assertEquals(height, r.getHeight(), accuracyLimit); + + r.move(transX, transY); + + // Check moved rectangle's new center coordinate + Assert.assertEquals(expectX, r.getX(), accuracyLimit); + Assert.assertEquals(expectY, r.getY(), accuracyLimit); + + // Changing width and height + r.setWidth(newWidth); + r.setHeight(newHeight); + + // New values present? + Assert.assertEquals(newWidth, r.getWidth(), accuracyLimit); + Assert.assertEquals(newHeight, r.getHeight(), accuracyLimit); + + // center coordinates remain unchanged? + Assert.assertEquals(expectX, r.getX(), accuracyLimit); + Assert.assertEquals(expectY, r.getY(), accuracyLimit); + + // Change of center coordinates + r.setX(0.); + r.setY(0.); + + // center coordinates still unchanged? + Assert.assertEquals(0., r.getX(), accuracyLimit); + Assert.assertEquals(0., r.getY(), accuracyLimit); + } + + @Test + public void circlePerimeterAndArea() { + final double + radius = 1., + expectedPerimeter = 2 * Math.PI * radius, + expectedArea = Math.PI * radius * radius; + + final Circle c = new Circle(3, 4, radius); + + Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); + } + + @Test + public void rectanglePerimeterAndArea() { + final double + width = 2., + height = 1., + expectedPerimeter = 2 * (width + height), + expectedArea = width * height; + + final Rectangle r = new Rectangle(1, 3, width, height); + + Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); + } + @Test + public void rectangleScale() { + final double + width = 2., + height = 1., + factor = 3; + + final Rectangle r = new Rectangle(1, 3, width, height); + + final double + originalPerimeter = r.getPerimeter(), + originalArea = r.getArea(), + expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor + expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor + + r.scale(factor); + + Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); + } + + @Test + public void circleScale() { + final double + radius = 2., + factor = 0.7; + + final Circle c = new Circle(-2, 5, radius); + + final double + originalPerimeter = c.getPerimeter(), + originalArea = c.getArea(), + expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor + expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor + + Assert.assertEquals(expectedPerimeter, c.scale(factor).getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); + } + +} diff --git a/P/Sd1/Figure/ToString/.gitignore b/P/Sd1/Figure/ToString/.gitignore index cf5fd6bb26d6450c8c63fb34295192784943cf5e..7913c9beebc7f8a17a72343401f27a01c881bbcf 100644 --- a/P/Sd1/Figure/ToString/.gitignore +++ b/P/Sd1/Figure/ToString/.gitignore @@ -1,5 +1,8 @@ +/dependency-reduced-pom.xml +/A1.log /.settings -/target +/.idea +/*.iml /.classpath /.project -/A1.log +/target diff --git a/P/Sd1/Figure/ToString/pom.xml b/P/Sd1/Figure/ToString/pom.xml index 21716796a124b45437aa3568a63da6cf6089384f..1dcda7390184fdc758405dd39c6451028b1e68cc 100644 --- a/P/Sd1/Figure/ToString/pom.xml +++ b/P/Sd1/Figure/ToString/pom.xml @@ -3,10 +3,10 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.hdm-stuttgart.sd1</groupId> - <artifactId>figure</artifactId> + <artifactId>shape</artifactId> <version>1.3</version> - <name>figure</name> + <name>shape</name> <url>https://freedocs.mi.hdm-stuttgart.de</url> <properties> diff --git a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/App.java b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/App.java deleted file mode 100644 index d4dab0b975b4d060c1370fce33999d61589e42a4..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/App.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figure; - -import de.hdm_stuttgart.mi.sd1.figure.model.Circle; -import de.hdm_stuttgart.mi.sd1.figure.model.Rectangle; - -public class App { - - public static void main(String[] args) { - - final Circle c = new Circle(-2, -1, 3.5); - final Rectangle r = new Rectangle(3, 1, 1.5, 4.4); - - System.out.println(c); - System.out.println(r); - - } - -} diff --git a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java deleted file mode 100644 index d6c3ef10e65f29d86d2270a65d38e5d7b21b7f1a..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Figure.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; - -/** - * - */ -public abstract class Figure { - - private double x,y; - - - - @Override - public String toString() { - return "(" + x + ',' + y + ')'; - } - - /** - * Creating a figure with given center coordinates - * - * @param x - * @param y - */ - public Figure(final double x, final double y) { - setX(x); - setY(y); - } - - // To be implemented in derived classes Rectangle and Circle - /** - * - * @param factor Scale the current figure by this value. - * @return The current object. - */ - public abstract Figure scale(double factor); - - /** - * - * @return The current figure's area e.g. with times height in case of a rectangle - */ - public abstract double getArea(); - - /** - * @return The current figure's perimeter e.g. with 2 * (height + width) in case of a rectangle - */ - public abstract double getPerimeter(); - - public double getX() { return x;} - public void setX(final double x) { this.x = x;} - public double getY() { return y;} - public void setY(final double y) { this.y = y;} - - /** - * Translating a figure by a given vector (x,y). - * - * @param x - * @param y - * @return The current object. - */ - public final Figure move(final double x, final double y) { - setX(getX() + x); - setY(getY() + y); - return this; - } -} \ No newline at end of file diff --git a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java deleted file mode 100644 index 3b2ca4f1955af24fbf2841c037b65d0822bc5d56..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Rectangle.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; - -public class Rectangle extends Figure { - -// Instance variables representing a rectangle's additional parameters - private double width, height; - - @Override - public String toString() { - return "Rectangle " + super.toString() + ", width=" + width + ", height=" + height; - } - - /** - * Extending {@link Figure#Figure(double, double)} by adding parameters - * width and height on top of center coordinates. - * - * @param x - * @param y - * @param width - * @param height - */ - public Rectangle(final double x, final double y, final double width, final double height) { - super(x, y); - setWidth(width); - setHeight(height); - } - - /** - * @return The rectangle's area. - */ - public double getArea() { - return width * height; - } - - /** - * @return The rectangle's perimeter. - */ - public double getPerimeter() { - return 2 * (width + height); - } - - // Getter and setter methods for private attributes - public double getWidth() { return width;} - public void setWidth(final double width) { this.width = width;} - public double getHeight() { return height;} - public void setHeight(final double height) { this.height = height;} - - @Override - public Figure scale(final double factor) { - width *= factor; - height *= factor; - return this; - } -} \ No newline at end of file diff --git a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java new file mode 100644 index 0000000000000000000000000000000000000000..f1cac10876c760de14c2711b6e062d9b5e3f6228 --- /dev/null +++ b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/App.java @@ -0,0 +1,18 @@ +package de.hdm_stuttgart.mi.sd1.shape; + +import de.hdm_stuttgart.mi.sd1.shape.model.Circle; + +/** + * Playing with fraction objects, producing some output. + * + */ +public class App { + public static void main(String[] args) { + final Circle c = new Circle(1., 2., 3.0); + + System.out.println(c.getPerimeter()); + + c.move(1, 5).move(-3, 7); + + } +} diff --git a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java similarity index 66% rename from P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java rename to P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java index ccfd6e4dfb5691c749db8ca57059c2d1ca279238..f32f82b4133f17075f39c3ed0cd4e1a38b9c3d51 100644 --- a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/figure/model/Circle.java +++ b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Circle.java @@ -1,30 +1,35 @@ -package de.hdm_stuttgart.mi.sd1.figure.model; +package de.hdm_stuttgart.mi.sd1.shape.model; /** * */ -public class Circle extends Figure { +public class Circle extends Shape { private double radius; - @Override - public String toString() { - return "Circle " + super.toString() + ", radius=" + radius; - } - /** - * Extending {@link Figure#Figure(double, double)} by adding parameter radius + * Extending {@link Shape#Shape(double, double)} by adding parameter radius * on top of center coordinates. - * - * @param x - * @param y - * @param radius + * + * @param x First center coordinate component + * @param y Second center coordinate component + * @param radius The circle's radius */ public Circle(final double x, final double y, final double radius) { super(x, y); setRadius(radius); } - + + @Override + public String toString() { + return "Circle " + super.toString() + ", radius=" + radius; + } + + @Override + public Shape scale(final double factor) { + radius *= factor; + return this; + } public double getArea() { return radius * radius * Math.PI; } @@ -36,10 +41,4 @@ public class Circle extends Figure { // Getter and setter methods for private attribute public double getRadius() { return radius;} public void setRadius(final double radius) { this.radius = radius;} - - @Override - public Figure scale(final double factor) { - radius *= factor; - return this; - } } diff --git a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java new file mode 100644 index 0000000000000000000000000000000000000000..20b554bb7b51fd2d8d1f4658410bb89ed49e00ce --- /dev/null +++ b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Rectangle.java @@ -0,0 +1,47 @@ +package de.hdm_stuttgart.mi.sd1.shape.model; + +public class Rectangle extends Shape { + + private double width, height; + + /** + * Extending {@link Shape#Shape(double, double)} by adding parameters + * width and height on top of center coordinates. + * + * @param x First center coordinate component + * @param y Second center coordinate component + * @param width The rectangle's width + * @param height The rectangle's height + */ + public Rectangle(double x, double y, double width, double height) { + super(x, y); + setWidth(width); + setHeight(height); + } + + @Override + public Shape scale(final double factor) { + width *= factor; + height *= factor; + return this; + } + + @Override + public String toString() { + return "Rectangle " + super.toString() + ", width=" + width + ", height=" + height; + } + + public double getArea() { + return width * height; + } + + public double getPerimeter() { + return 2 * (width + height); + } + + // Getter and setter methods for private attributes + public double getWidth() { return width;} + public void setWidth(double width) { this.width = width;} + public double getHeight() { return height;} + public void setHeight(double height) { this.height = height;} +} \ No newline at end of file diff --git a/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java new file mode 100644 index 0000000000000000000000000000000000000000..4ef5a86718db22748305e692369330de20cdb795 --- /dev/null +++ b/P/Sd1/Figure/ToString/src/main/java/de/hdm_stuttgart/mi/sd1/shape/model/Shape.java @@ -0,0 +1,63 @@ +package de.hdm_stuttgart.mi.sd1.shape.model; + +/** + * @author goik + * + */ +public abstract class Shape { + + private double x,y; + + /** + * Creating a shape with given center coordinates + * + * @param x The shape's center coordinate's x component + * @param y The shape's center coordinate's y component + */ + Shape(final double x, final double y) { + setX(x); + setY(y); + } + + @Override + public String toString() { + return "(" + x + ',' + y + ')'; + } + + /** + * + * @param factor Scale the current figure by this value. + * @return The current object. + */ + public abstract Shape scale(double factor); + + /** + * The current shape's area. + * @return e.g. with * height in case of a rectangle + */ + public abstract double getArea(); + + /** + * The current shape's perimeter. + * @return e.g. with 2 * (height + width) in case of a rectangle + */ + public abstract double getPerimeter(); + + public double getX() { return x;} + public void setX(final double x) { this.x = x;} + public double getY() { return y;} + public void setY(final double y) { this.y = y;} + + /** + * Translating a shape by a given vector (x,y). + * + * @param x The translation vector's x component + * @param y The translation vector's y component + * @return The current object. + */ + public final Shape move(final double x, final double y) { + setX(getX() + x); + setY(getY() + y); + return this; + } +} \ No newline at end of file diff --git a/P/Sd1/Figure/ToString/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java b/P/Sd1/Figure/ToString/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java deleted file mode 100644 index 7c2fdb71b4e51c15581c8c462a4ef5b572c5d2b7..0000000000000000000000000000000000000000 --- a/P/Sd1/Figure/ToString/src/test/java/de/hdm_stuttgart/mi/sd1/figuretest/FigureTest.java +++ /dev/null @@ -1,119 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.figuretest; - -import org.junit.Assert; -import org.junit.Test; - -import de.hdm_stuttgart.mi.sd1.figure.model.Circle; -import de.hdm_stuttgart.mi.sd1.figure.model.Rectangle; - -public class FigureTest { - static final double accuracyLimit = 1.E-15; // Rounding accuracy limit with respect to arithmetic operations - - @Test - public void circleTranslation() { - - final double - x = 3., y = 4., // circle's center coordinates (3, 4) - transX = 3., transY = -2., // translation vector (3, -2) - expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) - - final Circle c = new Circle(x, y, 3.0); - c.move(transX, transY); - - Assert.assertEquals(expectX, c.getX(), accuracyLimit); - Assert.assertEquals(expectY, c.getY(), accuracyLimit); - } - - @Test - public void rectangleTranslation() { - - final double - x = 2., y = 6.5, // rectangle's center coordinates (2, 6.5) - transX = 4., transY = 1., // translation vector (3, -2) - expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) - - final Rectangle r = new Rectangle(x, y, 2., 1.); - r.move(transX, transY); - Assert.assertEquals(expectX, r.getX(), accuracyLimit); - Assert.assertEquals(expectY, r.getY(), accuracyLimit); - } - - @Test - public void circlePerimeterAndArea() { - final double - radius = 1., - expectedPerimeter = 2 * Math.PI * radius, - expectedArea = Math.PI * radius * radius; - - final Circle c = new Circle(3, 4, radius); - - Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); - } - - @Test - public void rectanglePerimeterAndArea() { - final double - width = 2., - height = 1., - expectedPerimeter = 2 * (width + height), - expectedArea = width * height; - - final Rectangle r = new Rectangle(1, 3, width, height); - - Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); - } - - @Test - public void rectangleScale() { - final double - width = 2., - height = 1., - factor = 3; - - final Rectangle r = new Rectangle(1, 3, width, height); - - final double - originalPerimeter = r.getPerimeter(), - originalArea = r.getArea(), - expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor - expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor - - r.scale(factor); - - Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); - } - - @Test - public void circleScale() { - final double - radius = 2., - factor = 0.7; - - final Circle c = new Circle(-2, 5, radius); - - final double - originalPerimeter = c.getPerimeter(), - originalArea = c.getArea(), - expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor - expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor - - c.scale(factor); - - Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); - Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); - } - - @Test - public void circleToString() { - final Circle c = new Circle(-2, -1, 3.5); - Assert.assertEquals("Circle (-2.0,-1.0), radius=3.5", c.toString()); - } - @Test - public void rectangleToString() { - final Rectangle r = new Rectangle(3, 1, 1.5, 4.4); - Assert.assertEquals("Rectangle (3.0,1.0), width=1.5, height=4.4", r.toString()); - } -} diff --git a/P/Sd1/Figure/ToString/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java b/P/Sd1/Figure/ToString/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java new file mode 100644 index 0000000000000000000000000000000000000000..580018551d995ddd5601ea357a8c8de82d9434a8 --- /dev/null +++ b/P/Sd1/Figure/ToString/src/test/java/de/hdm_stuttgart/mi/sd1/shapetest/ShapeTest.java @@ -0,0 +1,158 @@ +package de.hdm_stuttgart.mi.sd1.shapetest; + +import org.junit.Assert; +import org.junit.Test; + +import de.hdm_stuttgart.mi.sd1.shape.model.Circle; +import de.hdm_stuttgart.mi.sd1.shape.model.Rectangle; + +public class ShapeTest { + static private final double accuracyLimit = 1.E-15; // Rounding accuracy limit with respect to arithmetic operations + + @Test + public void circleTranslation() { + + final double + radius = 3.0, + newRadius = 1.5, + x = 3., y = 4., // circle's center coordinates (3, 4) + transX = 3., transY = -2., // translation vector (3, -2) + expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) + + final Circle c = new Circle(x, y, radius); + c.move(transX, transY); + + // Check moved circle's new center coordinate + Assert.assertEquals(expectX, c.getX(), accuracyLimit); + Assert.assertEquals(expectY, c.getY(), accuracyLimit); + + Assert.assertEquals(radius, c.getRadius(), accuracyLimit); + + // Changing radius + c.setRadius(newRadius); + + // New values present? + Assert.assertEquals(newRadius, c.getRadius(), accuracyLimit); + + // center coordinates remain unchanged? + Assert.assertEquals(expectX, c.getX(), accuracyLimit); + Assert.assertEquals(expectY, c.getY(), accuracyLimit); + } + + @Test + public void rectangleTranslation() { + + final double + width = 2., height = 1., + newWidth = 3., newHeight = 0.5, + x = 2., y = 6.5, // rectangle's center coordinates (2, 6.5) + transX = 4., transY = 1., // translation vector (3, -2) + expectX = x + transX, expectY = y + transY; // translated circle's coordinates (6, 2) + + final Rectangle r = new Rectangle(x, y, width, height); + + Assert.assertEquals(width, r.getWidth(), accuracyLimit); + Assert.assertEquals(height, r.getHeight(), accuracyLimit); + + r.move(transX, transY); + + // Check moved rectangle's new center coordinate + Assert.assertEquals(expectX, r.getX(), accuracyLimit); + Assert.assertEquals(expectY, r.getY(), accuracyLimit); + + // Changing width and height + r.setWidth(newWidth); + r.setHeight(newHeight); + + // New values present? + Assert.assertEquals(newWidth, r.getWidth(), accuracyLimit); + Assert.assertEquals(newHeight, r.getHeight(), accuracyLimit); + + // center coordinates remain unchanged? + Assert.assertEquals(expectX, r.getX(), accuracyLimit); + Assert.assertEquals(expectY, r.getY(), accuracyLimit); + + // Change of center coordinates + r.setX(0.); + r.setY(0.); + + // center coordinates still unchanged? + Assert.assertEquals(0., r.getX(), accuracyLimit); + Assert.assertEquals(0., r.getY(), accuracyLimit); + } + + @Test + public void circlePerimeterAndArea() { + final double + radius = 1., + expectedPerimeter = 2 * Math.PI * radius, + expectedArea = Math.PI * radius * radius; + + final Circle c = new Circle(3, 4, radius); + + Assert.assertEquals(expectedPerimeter, c.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); + } + + @Test + public void rectanglePerimeterAndArea() { + final double + width = 2., + height = 1., + expectedPerimeter = 2 * (width + height), + expectedArea = width * height; + + final Rectangle r = new Rectangle(1, 3, width, height); + + Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); + } + @Test + public void rectangleScale() { + final double + width = 2., + height = 1., + factor = 3; + + final Rectangle r = new Rectangle(1, 3, width, height); + + final double + originalPerimeter = r.getPerimeter(), + originalArea = r.getArea(), + expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor + expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor + + r.scale(factor); + + Assert.assertEquals(expectedPerimeter, r.getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, r.getArea(), accuracyLimit); + } + + @Test + public void circleScale() { + final double + radius = 2., + factor = 0.7; + + final Circle c = new Circle(-2, 5, radius); + + final double + originalPerimeter = c.getPerimeter(), + originalArea = c.getArea(), + expectedPerimeter = originalPerimeter * factor, // Perimeter is linear with respect to scale factor + expectedArea = originalArea * factor * factor; // Area is quadratic with respect to scale factor + + Assert.assertEquals(expectedPerimeter, c.scale(factor).getPerimeter(), accuracyLimit); + Assert.assertEquals(expectedArea, c.getArea(), accuracyLimit); + } + @Test + public void circleToString() { + final Circle c = new Circle(-2, -1, 3.5); + Assert.assertEquals("Circle (-2.0,-1.0), radius=3.5", c.toString()); + } + @Test + public void rectangleToString() { + final Rectangle r = new Rectangle(3, 1, 1.5, 4.4); + Assert.assertEquals("Rectangle (3.0,1.0), width=1.5, height=4.4", r.toString()); + } +}