Skip to content

Instantly share code, notes, and snippets.

@svanellewee
Last active March 7, 2021 23:52
Show Gist options
  • Save svanellewee/a70f75426e641177c69c3234af2d900c to your computer and use it in GitHub Desktop.
Save svanellewee/a70f75426e641177c69c3234af2d900c to your computer and use it in GitHub Desktop.
Doom mapping with sqlite

Doom printing

import svgwrite

dwg = svgwrite.Drawing('test.svg')
dwg.add(dwg.line((0, 0), (100, 100), stroke=svgwrite.rgb(10, 10, 16, '%')))
dwg.add(dwg.text('Test', insert=(0, 10), fill='red'))
dwg.save()

file:test.svg

(image-file-name-regexp)
.headers on
SELECT MIN(x),
       MAX(x),
       MAX(x) - MIN(x) as width,
       MIN(y),
       MAX(y),
       MAX(y) - MIN(y) as height
FROM Vertex;
import svgwrite
import sqlite3


with sqlite3.connect("waddb.db") as conn:
    dwg = svgwrite.Drawing('map.svg', profile="full", debug=True)

    query_vertexes = """
    SELECT * FROM Vertex;
    """
    cursor = conn.execute(query_vertexes)
    #dwg.add(dwg.line((0, 0), (100, 100), stroke=svgwrite.rgb(10, 10, 16, '%')))
    dwg.viewbox(-800,-5000, 5000, 3000)
    for index, x, y in cursor:
       dwg.add(dwg.circle(center=(x , y), r = 10, stroke=svgwrite.rgb(40, 0, 0, '%')))
    dwg.add(dwg.text('TestMap', insert=(0, 10), fill='red'))
    dwg.save()
SELECT count(1) FROM LineDef;
import svgwrite
import sqlite3


with sqlite3.connect("waddb.db") as conn:
    dwg = svgwrite.Drawing('map.svg', profile="full", debug=True)

    query_vertexes = """
    SELECT
        v1.x,
        v1.y,
        v2.x,
        v2.y
    FROM LineDef ld 
    INNER JOIN Vertex v1 ON v1.idVertex=ld.vertex1
    INNER JOIN Vertex v2 ON v2.idVertex=ld.vertex2;
    """
    cursor = conn.execute(query_vertexes)
    #dwg.add(dwg.line((0, 0), (100, 100), stroke=svgwrite.rgb(10, 10, 16, '%')))
    dwg.viewbox(-800,-5000, 5000, 3000)
    for x, y, x2, y2 in cursor:
       dwg.add(dwg.circle(center=(x , y), r = 10, stroke=svgwrite.rgb(40, 0, 0, '%')))
       dwg.add(dwg.circle(center=(x , y), r = 10, stroke=svgwrite.rgb(40, 0, 0, '%')))
       dwg.add(dwg.line((x, y), (x2, y2), stroke=svgwrite.rgb(10, 10, 16, '%')))
    dwg.add(dwg.text('TestMap', insert=(0, 10), fill='red'))
    dwg.save()
SELECT
        v1.x,
        v1.y,
	  v2.x,
	  v2.y
FROM LineDef ld 
INNER JOIN Vertex v1 ON v1.idVertex=ld.vertex1
INNER JOIN Vertex v2 ON v2.idVertex=ld.vertex2;

Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="utf-8" ?>
<svg baseProfile="full" height="100%" version="1.1" viewBox="-800,-5000,5000,3000" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink"><defs /><circle cx="1088" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1088" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1088" x2="1024" y1="-3680" y2="-3680" /><circle cx="1024" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1024" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1024" x2="1024" y1="-3680" y2="-3648" /><circle cx="1088" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1088" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1088" x2="1088" y1="-3648" y2="-3680" /><circle cx="1152" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1152" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1152" x2="1088" y1="-3648" y2="-3648" /><circle cx="1024" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1024" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1024" x2="960" y1="-3648" y2="-3648" /><circle cx="1280" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1280" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1280" x2="1152" y1="-3552" y2="-3648" /><circle cx="960" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="960" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="960" x2="832" y1="-3648" y2="-3552" /><circle cx="1344" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1280" y1="-3552" y2="-3552" /><circle cx="832" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="832" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="832" x2="704" y1="-3552" y2="-3552" /><circle cx="896" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="896" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="896" x2="928" y1="-3392" y2="-3392" /><circle cx="928" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="928" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="928" x2="928" y1="-3392" y2="-3360" /><circle cx="928" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="928" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="928" x2="896" y1="-3360" y2="-3360" /><circle cx="896" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="896" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="896" x2="896" y1="-3360" y2="-3392" /><circle cx="1184" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1184" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1184" x2="1216" y1="-3392" y2="-3392" /><circle cx="1216" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1216" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1216" x2="1216" y1="-3392" y2="-3360" /><circle cx="1216" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1216" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1216" x2="1184" y1="-3360" y2="-3360" /><circle cx="1184" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1184" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1184" x2="1184" y1="-3360" y2="-3392" /><circle cx="896" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="896" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="896" x2="896" y1="-3072" y2="-3104" /><circle cx="896" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="896" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="896" x2="928" y1="-3104" y2="-3104" /><circle cx="928" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="928" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="928" x2="928" y1="-3104" y2="-3072" /><circle cx="928" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="928" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="928" x2="896" y1="-3072" y2="-3072" /><circle cx="1216" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1216" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1216" x2="1184" y1="-3072" y2="-3072" /><circle cx="1184" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1184" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1184" x2="1184" y1="-3072" y2="-3104" /><circle cx="1184" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1184" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1184" x2="1216" y1="-3104" y2="-3104" /><circle cx="1216" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1216" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1216" x2="1216" y1="-3104" y2="-3072" /><circle cx="1344" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1344" y1="-3360" y2="-3552" /><circle cx="1344" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1344" y1="-3264" y2="-3360" /><circle cx="1344" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1344" y1="-3200" y2="-3264" /><circle cx="1344" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1344" y1="-2880" y2="-3104" /><circle cx="1344" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1344" y1="-3104" y2="-3200" /><circle cx="1376" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1376" y1="-3200" y2="-3104" /><circle cx="1376" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1376" y1="-3360" y2="-3264" /><circle cx="1344" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1376" y1="-3264" y2="-3264" /><circle cx="1376" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1344" y1="-3360" y2="-3360" /><circle cx="1376" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1344" y1="-3200" y2="-3200" /><circle cx="1344" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1376" y1="-3104" y2="-3104" /><circle cx="1376" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1376" y1="-3264" y2="-3200" /><circle cx="1376" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1376" y1="-3648" y2="-3360" /><circle cx="1376" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1376" y1="-3104" y2="-2944" /><circle cx="1184" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1184" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1184" x2="928" y1="-3392" y2="-3392" /><circle cx="1344" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1216" y1="-3360" y2="-3392" /><circle cx="1216" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1216" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1216" x2="1344" y1="-3072" y2="-3104" /><circle cx="704" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="704" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="704" x2="832" y1="-2944" y2="-2944" /><circle cx="832" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="832" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="832" x2="968" y1="-2944" y2="-2880" /><circle cx="968" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="968" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="968" x2="1216" y1="-2880" y2="-2880" /><circle cx="1376" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1376" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1376" x2="1472" y1="-2944" y2="-2880" /><circle cx="1472" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1472" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1472" x2="1856" y1="-2880" y2="-2880" /><circle cx="1528" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1528" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1528" x2="1376" y1="-3680" y2="-3648" /><circle cx="1672" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1672" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1672" x2="1528" y1="-3744" y2="-3680" /><circle cx="1088" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1088" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1088" x2="1024" y1="-3648" y2="-3648" /><circle cx="928" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="928" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="928" x2="1184" y1="-3104" y2="-3104" /><circle cx="1184" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1184" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1184" x2="928" y1="-3360" y2="-3360" /><circle cx="928" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="928" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="928" x2="928" y1="-3360" y2="-3104" /><circle cx="896" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="896" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="896" x2="896" y1="-3360" y2="-3104" /><circle cx="928" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="928" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="928" x2="1184" y1="-3072" y2="-3072" /><circle cx="704" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="704" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="704" x2="704" y1="-3552" y2="-3360" /><circle cx="704" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="704" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="704" x2="704" y1="-3104" y2="-2944" /><circle cx="704" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="704" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="704" x2="704" y1="-3104" y2="-3360" /><circle cx="512" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="512" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="512" x2="512" y1="-3328" y2="-3304" /><circle cx="512" cy="-3160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="512" cy="-3160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="512" x2="512" y1="-3160" y2="-3136" /><circle cx="512" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="512" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="512" x2="680" y1="-3136" y2="-3104" /><circle cx="680" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="680" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="680" x2="704" y1="-3104" y2="-3104" /><circle cx="704" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="704" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="704" x2="680" y1="-3360" y2="-3360" /><circle cx="680" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="680" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="680" x2="512" y1="-3360" y2="-3328" /><circle cx="496" cy="-3160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="496" cy="-3160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="496" x2="496" y1="-3160" y2="-3304" /><circle cx="512" cy="-3304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="512" cy="-3304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="512" x2="496" y1="-3304" y2="-3304" /><circle cx="496" cy="-3160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="496" cy="-3160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="496" x2="512" y1="-3160" y2="-3160" /><circle cx="496" cy="-3304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="496" cy="-3304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="496" x2="496" y1="-3304" y2="-3328" /><circle cx="496" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="496" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="496" x2="448" y1="-3328" y2="-3456" /><circle cx="448" cy="-3456" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="448" cy="-3456" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="448" x2="128" y1="-3456" y2="-3456" /><circle cx="128" cy="-3008" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="128" cy="-3008" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="128" x2="448" y1="-3008" y2="-3008" /><circle cx="496" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="496" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="496" x2="496" y1="-3136" y2="-3160" /><circle cx="448" cy="-3008" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="448" cy="-3008" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="448" x2="496" y1="-3008" y2="-3136" /><circle cx="128" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="128" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="128" x2="160" y1="-3264" y2="-3264" /><circle cx="160" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="160" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="160" x2="192" y1="-3264" y2="-3264" /><circle cx="192" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="192" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="192" x2="224" y1="-3264" y2="-3264" /><circle cx="224" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="224" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="224" x2="256" y1="-3264" y2="-3264" /><circle cx="256" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="256" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="256" x2="288" y1="-3264" y2="-3264" /><circle cx="288" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="288" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="288" x2="320" y1="-3264" y2="-3264" /><circle cx="320" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="320" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="320" x2="320" y1="-3264" y2="-3200" /><circle cx="320" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="320" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="320" x2="288" y1="-3200" y2="-3200" /><circle cx="288" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="288" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="288" x2="256" y1="-3200" y2="-3200" /><circle cx="256" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="256" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="256" x2="224" y1="-3200" y2="-3200" /><circle cx="224" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="224" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="224" x2="192" y1="-3200" y2="-3200" /><circle cx="192" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="192" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="192" x2="160" y1="-3200" y2="-3200" /><circle cx="160" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="160" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="160" x2="128" y1="-3200" y2="-3200" /><circle cx="160" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="160" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="160" x2="160" y1="-3264" y2="-3200" /><circle cx="192" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="192" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="192" x2="192" y1="-3264" y2="-3200" /><circle cx="224" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="224" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="224" x2="224" y1="-3264" y2="-3200" /><circle cx="256" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="256" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="256" x2="256" y1="-3264" y2="-3200" /><circle cx="288" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="288" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="288" x2="288" y1="-3264" y2="-3200" /><circle cx="128" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="128" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="128" x2="128" y1="-3264" y2="-3200" /><circle cx="128" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="128" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="128" x2="64" y1="-3200" y2="-3072" /><circle cx="64" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="128" y1="-3072" y2="-3008" /><circle cx="128" cy="-3456" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="128" cy="-3456" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="128" x2="64" y1="-3456" y2="-3392" /><circle cx="64" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="128" y1="-3392" y2="-3264" /><circle cx="64" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="48" y1="-3392" y2="-3392" /><circle cx="48" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="48" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="48" x2="-64" y1="-3392" y2="-3328" /><circle cx="-64" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-64" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-64" x2="48" y1="-3136" y2="-3072" /><circle cx="48" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="48" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="48" x2="64" y1="-3072" y2="-3072" /><circle cx="-256" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-320" y1="-3328" y2="-3296" /><circle cx="-320" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-320" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-320" x2="-256" y1="-3168" y2="-3136" /><circle cx="-128" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-128" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-128" x2="-128" y1="-3120" y2="-3136" /><circle cx="-256" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-256" y1="-3136" y2="-3120" /><circle cx="-256" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-256" y1="-3344" y2="-3328" /><circle cx="-128" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-128" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-128" x2="-128" y1="-3328" y2="-3344" /><circle cx="-320" cy="-3296" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-320" cy="-3296" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-320" x2="-336" y1="-3296" y2="-3296" /><circle cx="-336" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-336" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-336" x2="-320" y1="-3168" y2="-3168" /><circle cx="-256" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-336" y1="-3120" y2="-3120" /><circle cx="-336" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-336" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-336" x2="-336" y1="-3120" y2="-3168" /><circle cx="-336" cy="-3296" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-336" cy="-3296" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-336" x2="-336" y1="-3296" y2="-3344" /><circle cx="-336" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-336" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-336" x2="-256" y1="-3344" y2="-3344" /><circle cx="-128" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-128" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-128" x2="-96" y1="-3344" y2="-3344" /><circle cx="-96" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-96" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-96" x2="64" y1="-3344" y2="-3520" /><circle cx="-96" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-96" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-96" x2="-128" y1="-3120" y2="-3120" /><circle cx="64" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="-96" y1="-2944" y2="-3120" /><circle cx="-64" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-64" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-64" x2="-64" y1="-3136" y2="-3328" /><circle cx="-128" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-128" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-128" x2="-256" y1="-3328" y2="-3328" /><circle cx="-256" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3344" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-128" y1="-3344" y2="-3344" /><circle cx="-256" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-128" y1="-3136" y2="-3136" /><circle cx="-128" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-128" cy="-3120" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-128" x2="-256" y1="-3120" y2="-3120" /><circle cx="-320" cy="-3296" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-320" cy="-3296" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-320" x2="-320" y1="-3296" y2="-3168" /><circle cx="-336" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-336" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-336" x2="-336" y1="-3168" y2="-3296" /><circle cx="64" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="64" y1="-2816" y2="-2944" /><circle cx="64" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="64" y1="-3520" y2="-3648" /><circle cx="64" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="-640" y1="-3648" y2="-3648" /><circle cx="-640" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-640" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-640" x2="-768" y1="-3648" y2="-3520" /><circle cx="-768" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-768" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-768" x2="-768" y1="-3520" y2="-2944" /><circle cx="-768" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-768" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-768" x2="-640" y1="-2944" y2="-2816" /><circle cx="-640" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-640" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-640" x2="64" y1="-2816" y2="-2816" /><circle cx="64" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="64" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="64" x2="-640" y1="-3648" y2="-3520" /><circle cx="-640" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-640" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-640" x2="-640" y1="-3520" y2="-2944" /><circle cx="-640" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-640" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-640" x2="64" y1="-2944" y2="-2816" /><circle cx="-128" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-128" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-128" x2="-88" y1="-3136" y2="-3136" /><circle cx="-88" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-88" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-88" x2="-64" y1="-3136" y2="-3136" /><circle cx="-64" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-64" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-64" x2="-88" y1="-3328" y2="-3328" /><circle cx="-88" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-88" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-88" x2="-128" y1="-3328" y2="-3328" /><circle cx="256" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="256" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="256" x2="320" y1="-3136" y2="-3136" /><circle cx="320" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="320" cy="-3136" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="320" x2="320" y1="-3136" y2="-3072" /><circle cx="320" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="320" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="320" x2="256" y1="-3072" y2="-3072" /><circle cx="256" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="256" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="256" x2="256" y1="-3072" y2="-3136" /><circle cx="256" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="256" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="256" x2="320" y1="-3392" y2="-3392" /><circle cx="320" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="320" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="320" x2="320" y1="-3392" y2="-3328" /><circle cx="320" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="320" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="320" x2="256" y1="-3328" y2="-3328" /><circle cx="256" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="256" cy="-3328" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="256" x2="256" y1="-3328" y2="-3392" /><circle cx="1216" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1216" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1216" x2="1248" y1="-2880" y2="-2528" /><circle cx="1384" cy="-2592" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1384" cy="-2592" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1384" x2="1344" y1="-2592" y2="-2880" /><circle cx="1472" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1472" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1472" x2="1384" y1="-2560" y2="-2592" /><circle cx="1248" cy="-2528" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1248" cy="-2528" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1248" x2="1472" y1="-2528" y2="-2432" /><circle cx="1344" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1344" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1344" x2="1216" y1="-2880" y2="-2880" /><circle cx="1472" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1472" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1472" x2="1472" y1="-2432" y2="-2560" /><circle cx="1536" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1536" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1536" x2="1536" y1="-2432" y2="-2560" /><circle cx="1552" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1552" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1552" x2="1552" y1="-2560" y2="-2432" /><circle cx="1536" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1536" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1536" x2="1472" y1="-2560" y2="-2560" /><circle cx="1472" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1472" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1472" x2="1536" y1="-2432" y2="-2432" /><circle cx="1536" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1536" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1536" x2="1552" y1="-2432" y2="-2432" /><circle cx="1552" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1552" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1552" x2="1536" y1="-2560" y2="-2560" /><circle cx="1664" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1552" y1="-2560" y2="-2560" /><circle cx="1552" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1552" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1552" x2="1664" y1="-2432" y2="-2432" /><circle cx="2736" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2736" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2736" x2="2488" y1="-3648" y2="-3744" /><circle cx="2488" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2488" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2488" x2="2240" y1="-3744" y2="-3776" /><circle cx="1984" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1984" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1984" x2="1672" y1="-3776" y2="-3744" /><circle cx="1856" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1856" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1856" x2="1920" y1="-2880" y2="-2920" /><circle cx="1920" cy="-2920" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1920" cy="-2920" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1920" x2="2240" y1="-2920" y2="-2920" /><circle cx="1520" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1520" cy="-3168" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1520" x2="1672" y1="-3168" y2="-3104" /><circle cx="1672" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1672" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1672" x2="1896" y1="-3104" y2="-3104" /><circle cx="1896" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1896" cy="-3104" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1896" x2="2040" y1="-3104" y2="-3144" /><circle cx="2040" cy="-3144" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2040" cy="-3144" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2040" x2="2128" y1="-3144" y2="-3272" /><circle cx="2128" cy="-3272" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2128" cy="-3272" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2128" x2="2064" y1="-3272" y2="-3408" /><circle cx="2064" cy="-3408" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2064" cy="-3408" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2064" x2="1784" y1="-3408" y2="-3448" /><circle cx="1784" cy="-3448" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1784" cy="-3448" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1784" x2="1544" y1="-3448" y2="-3384" /><circle cx="1544" cy="-3384" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1544" cy="-3384" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1544" x2="1520" y1="-3384" y2="-3168" /><circle cx="2752" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2624" y1="-2784" y2="-2784" /><circle cx="2520" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2520" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2520" x2="2752" y1="-2560" y2="-2560" /><circle cx="2752" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2944" y1="-2560" y2="-2656" /><circle cx="2880" cy="-2912" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2880" cy="-2912" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2880" x2="2880" y1="-2912" y2="-2880" /><circle cx="3048" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3048" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3048" x2="3048" y1="-2880" y2="-2944" /><circle cx="2752" cy="-3048" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3048" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2752" y1="-3048" y2="-2912" /><circle cx="2752" cy="-3584" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3584" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2752" y1="-3584" y2="-3360" /><circle cx="2736" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2736" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2736" x2="2736" y1="-3360" y2="-3648" /><circle cx="2752" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2736" y1="-3360" y2="-3360" /><circle cx="3048" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3048" cy="-2944" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3048" x2="3304" y1="-2944" y2="-3040" /><circle cx="3136" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3136" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3136" x2="3304" y1="-3072" y2="-3040" /><circle cx="3112" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3112" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3112" x2="2944" y1="-3360" y2="-3536" /><circle cx="2816" cy="-3232" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2816" cy="-3232" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2816" x2="3112" y1="-3232" y2="-3360" /><circle cx="3280" cy="-3320" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3280" cy="-3320" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3280" x2="2984" y1="-3320" y2="-3200" /><circle cx="2976" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2976" cy="-3072" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2976" x2="2816" y1="-3072" y2="-3232" /><circle cx="2984" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2984" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2984" x2="3136" y1="-3200" y2="-3072" /><circle cx="3264" cy="-3616" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3264" cy="-3616" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3264" x2="3072" y1="-3616" y2="-3648" /><circle cx="2944" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2752" y1="-3648" y2="-3584" /><circle cx="3072" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="3072" y1="-3648" y2="-4000" /><circle cx="2944" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2944" y1="-3776" y2="-3648" /><circle cx="2752" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2944" y1="-2784" y2="-2656" /><circle cx="2752" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2944" y1="-3360" y2="-3536" /><circle cx="2944" cy="-3536" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-3536" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="3072" y1="-3536" y2="-3648" /><circle cx="2752" cy="-3048" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3048" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="3048" y1="-3048" y2="-2880" /><circle cx="2944" cy="-3536" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-3536" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2752" y1="-3536" y2="-3584" /><circle cx="3104" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="3280" y1="-3552" y2="-3320" /><circle cx="3264" cy="-3616" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3264" cy="-3616" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3264" x2="3104" y1="-3616" y2="-3552" /><circle cx="3352" cy="-3568" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3352" cy="-3568" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3352" x2="3264" y1="-3568" y2="-3616" /><circle cx="3472" cy="-3432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3472" cy="-3432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3472" x2="3408" y1="-3432" y2="-3432" /><circle cx="3408" cy="-3432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3408" cy="-3432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3408" x2="3312" y1="-3432" y2="-3496" /><circle cx="3312" cy="-3496" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3312" cy="-3496" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3312" x2="3352" y1="-3496" y2="-3568" /><circle cx="2240" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2240" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2240" x2="2208" y1="-3776" y2="-3680" /><circle cx="2208" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2208" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2208" x2="2176" y1="-3680" y2="-3680" /><circle cx="2016" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2016" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2016" x2="1984" y1="-3680" y2="-3776" /><circle cx="2048" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2016" y1="-3680" y2="-3680" /><circle cx="2176" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-3776" y2="-3808" /><circle cx="2176" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-3808" y2="-3840" /><circle cx="2048" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2048" y1="-3808" y2="-3776" /><circle cx="2048" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2048" y1="-3840" y2="-3808" /><circle cx="2048" cy="-3872" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3872" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2048" y1="-3872" y2="-3840" /><circle cx="2048" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2048" y1="-3904" y2="-3872" /><circle cx="2176" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-3840" y2="-3872" /><circle cx="2176" cy="-3872" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3872" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-3872" y2="-3904" /><circle cx="2240" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2240" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2240" x2="2112" y1="-4096" y2="-4032" /><circle cx="2176" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2048" y1="-3680" y2="-3680" /><circle cx="2048" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2176" y1="-3776" y2="-3776" /><circle cx="2048" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2176" y1="-3808" y2="-3808" /><circle cx="2048" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2176" y1="-3840" y2="-3840" /><circle cx="2048" cy="-3872" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3872" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2176" y1="-3872" y2="-3872" /><circle cx="2048" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2176" y1="-3904" y2="-3904" /><circle cx="2240" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2240" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2240" x2="2240" y1="-4096" y2="-3968" /><circle cx="2368" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2368" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2368" x2="2368" y1="-3968" y2="-4096" /><circle cx="2880" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2880" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2880" x2="2880" y1="-3776" y2="-3904" /><circle cx="2848" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2848" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2848" x2="2848" y1="-3776" y2="-3904" /><circle cx="2816" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2816" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2816" x2="2816" y1="-3776" y2="-3904" /><circle cx="2784" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2784" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2784" x2="2784" y1="-3776" y2="-3904" /><circle cx="2752" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2752" y1="-3776" y2="-3904" /><circle cx="2688" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2688" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2688" x2="2720" y1="-3776" y2="-3904" /><circle cx="2632" cy="-3792" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2632" cy="-3792" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2632" x2="2688" y1="-3792" y2="-3920" /><circle cx="2632" cy="-3792" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2632" cy="-3792" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2632" x2="2688" y1="-3792" y2="-3776" /><circle cx="2720" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2720" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2720" x2="2688" y1="-3904" y2="-3920" /><circle cx="2688" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2688" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2688" x2="2752" y1="-3776" y2="-3776" /><circle cx="2752" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2784" y1="-3776" y2="-3776" /><circle cx="2784" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2784" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2784" x2="2816" y1="-3776" y2="-3776" /><circle cx="2816" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2816" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2816" x2="2848" y1="-3776" y2="-3776" /><circle cx="2848" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2848" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2848" x2="2880" y1="-3776" y2="-3776" /><circle cx="2880" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2880" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2880" x2="2848" y1="-3904" y2="-3904" /><circle cx="2848" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2848" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2848" x2="2816" y1="-3904" y2="-3904" /><circle cx="2816" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2816" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2816" x2="2784" y1="-3904" y2="-3904" /><circle cx="2784" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2784" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2784" x2="2752" y1="-3904" y2="-3904" /><circle cx="2752" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2720" y1="-3904" y2="-3904" /><circle cx="2880" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2880" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2880" x2="2912" y1="-3776" y2="-3776" /><circle cx="2912" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2880" y1="-3904" y2="-3904" /><circle cx="2944" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2912" y1="-3904" y2="-3904" /><circle cx="2912" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2944" y1="-3776" y2="-3776" /><circle cx="2944" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2944" y1="-3904" y2="-3776" /><circle cx="2912" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2912" y1="-3776" y2="-3904" /><circle cx="2944" cy="-4000" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-4000" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2944" y1="-4000" y2="-3904" /><circle cx="2736" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2736" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2736" x2="2240" y1="-3648" y2="-3648" /><circle cx="2240" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2240" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2240" x2="1984" y1="-3648" y2="-3648" /><circle cx="1984" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1984" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1984" x2="1376" y1="-3648" y2="-3648" /><circle cx="1984" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1984" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1984" x2="1984" y1="-3648" y2="-3776" /><circle cx="2240" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2240" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2240" x2="2240" y1="-3776" y2="-3648" /><circle cx="2688" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2688" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2688" x2="2672" y1="-3920" y2="-3920" /><circle cx="2672" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2672" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2672" x2="2368" y1="-3920" y2="-4096" /><circle cx="2368" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2368" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2368" x2="2616" y1="-3968" y2="-3792" /><circle cx="2616" cy="-3792" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2616" cy="-3792" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2616" x2="2632" y1="-3792" y2="-3792" /><circle cx="2176" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-3904" y2="-3920" /><circle cx="2176" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2240" y1="-3920" y2="-3968" /><circle cx="2112" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2112" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2112" x2="2048" y1="-4032" y2="-3920" /><circle cx="2048" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3920" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2048" y1="-3920" y2="-3904" /><circle cx="2752" cy="-3048" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3048" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2976" y1="-3048" y2="-3072" /><circle cx="2880" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2880" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2880" x2="2752" y1="-2880" y2="-2800" /><circle cx="2752" cy="-2800" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-2800" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2752" y1="-2800" y2="-2784" /><circle cx="2944" cy="-2656" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-2656" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2960" y1="-2656" y2="-2656" /><circle cx="2960" cy="-2656" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2960" cy="-2656" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2960" x2="3048" y1="-2656" y2="-2880" /><circle cx="3400" cy="-3152" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3400" cy="-3152" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3400" x2="3472" y1="-3152" y2="-3432" /><circle cx="3472" cy="-3432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3472" cy="-3432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3472" x2="3448" y1="-3432" y2="-3520" /><circle cx="3448" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3448" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3448" x2="3352" y1="-3520" y2="-3568" /><circle cx="2240" cy="-2920" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2240" cy="-2920" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2240" x2="2272" y1="-2920" y2="-3008" /><circle cx="2272" cy="-3008" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2272" cy="-3008" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2272" x2="2432" y1="-3008" y2="-3112" /><circle cx="2432" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2432" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2432" x2="2736" y1="-3112" y2="-3112" /><circle cx="2736" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2736" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2736" x2="2752" y1="-3112" y2="-3112" /><circle cx="2752" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3360" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2752" y1="-3360" y2="-3112" /><circle cx="2736" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2736" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2736" x2="2736" y1="-3112" y2="-3360" /><circle cx="2752" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-3112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2752" y1="-3112" y2="-3048" /><circle cx="3200" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3200" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3200" x2="3328" y1="-4128" y2="-4128" /><circle cx="2688" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2688" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2688" x2="2816" y1="-4128" y2="-4128" /><circle cx="2816" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2816" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2816" x2="2856" y1="-4128" y2="-4160" /><circle cx="2912" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2912" y1="-4160" y2="-4128" /><circle cx="3104" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="3104" y1="-4128" y2="-4160" /><circle cx="3160" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3160" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3160" x2="3200" y1="-4160" y2="-4128" /><circle cx="3104" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="3104" y1="-4352" y2="-4384" /><circle cx="3104" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="3160" y1="-4384" y2="-4384" /><circle cx="3160" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3160" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3160" x2="3160" y1="-4384" y2="-4352" /><circle cx="2856" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2856" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2856" x2="2856" y1="-4352" y2="-4384" /><circle cx="2856" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2856" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2856" x2="2912" y1="-4384" y2="-4384" /><circle cx="2912" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4384" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2912" y1="-4384" y2="-4352" /><circle cx="2856" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2856" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2856" x2="2888" y1="-4160" y2="-4160" /><circle cx="2888" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2888" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2888" x2="2912" y1="-4160" y2="-4160" /><circle cx="3160" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3160" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3160" x2="3128" y1="-4352" y2="-4352" /><circle cx="3128" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3128" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3128" x2="3104" y1="-4352" y2="-4352" /><circle cx="3104" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="3128" y1="-4160" y2="-4160" /><circle cx="3128" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3128" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3128" x2="3160" y1="-4160" y2="-4160" /><circle cx="2912" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2888" y1="-4352" y2="-4352" /><circle cx="2888" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2888" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2888" x2="2856" y1="-4352" y2="-4352" /><circle cx="2888" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2888" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2888" x2="2888" y1="-4352" y2="-4320" /><circle cx="2888" cy="-4320" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2888" cy="-4320" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2888" x2="2888" y1="-4320" y2="-4192" /><circle cx="2888" cy="-4192" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2888" cy="-4192" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2888" x2="2888" y1="-4192" y2="-4160" /><circle cx="3128" cy="-4320" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3128" cy="-4320" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3128" x2="3128" y1="-4320" y2="-4352" /><circle cx="3128" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3128" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3128" x2="3128" y1="-4160" y2="-4192" /><circle cx="3128" cy="-4192" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3128" cy="-4192" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3128" x2="3128" y1="-4192" y2="-4320" /><circle cx="3328" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3328" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3328" x2="3072" y1="-4544" y2="-4544" /><circle cx="2944" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2688" y1="-4544" y2="-4544" /><circle cx="3072" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="3072" y1="-4544" y2="-4608" /><circle cx="2944" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2944" y1="-4608" y2="-4544" /><circle cx="2912" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="3104" y1="-4160" y2="-4160" /><circle cx="3104" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="2912" y1="-4352" y2="-4352" /><circle cx="3072" cy="-4000" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-4000" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="2944" y1="-4000" y2="-4000" /><circle cx="2688" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2688" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2688" x2="2688" y1="-4544" y2="-4128" /><circle cx="3328" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3328" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3328" x2="3328" y1="-4128" y2="-4544" /><circle cx="2856" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2856" cy="-4352" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2856" x2="2856" y1="-4352" y2="-4160" /><circle cx="3160" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3160" cy="-4160" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3160" x2="3160" y1="-4160" y2="-4352" /><circle cx="2944" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-4544" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="3072" y1="-4544" y2="-4544" /><circle cx="3072" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="3040" y1="-4608" y2="-4608" /><circle cx="2976" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2976" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2976" x2="2944" y1="-4608" y2="-4608" /><circle cx="2976" cy="-4632" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2976" cy="-4632" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2976" x2="2976" y1="-4632" y2="-4608" /><circle cx="3040" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3040" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3040" x2="3040" y1="-4608" y2="-4632" /><circle cx="3040" cy="-4632" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3040" cy="-4632" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3040" x2="3040" y1="-4632" y2="-4648" /><circle cx="3040" cy="-4648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3040" cy="-4648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3040" x2="3040" y1="-4648" y2="-4672" /><circle cx="2976" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2976" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2976" x2="2976" y1="-4672" y2="-4648" /><circle cx="2976" cy="-4648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2976" cy="-4648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2976" x2="2976" y1="-4648" y2="-4632" /><circle cx="2976" cy="-4648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2976" cy="-4648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2976" x2="3040" y1="-4648" y2="-4648" /><circle cx="3040" cy="-4632" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3040" cy="-4632" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3040" x2="2976" y1="-4632" y2="-4632" /><circle cx="3040" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3040" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3040" x2="3104" y1="-4672" y2="-4672" /><circle cx="2912" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2976" y1="-4672" y2="-4672" /><circle cx="3104" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="3104" y1="-4672" y2="-4864" /><circle cx="2912" cy="-4864" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4864" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2912" y1="-4864" y2="-4800" /><circle cx="2912" cy="-4800" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4800" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2912" y1="-4800" y2="-4736" /><circle cx="2912" cy="-4736" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4736" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2912" y1="-4736" y2="-4672" /><circle cx="3104" cy="-4864" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3104" cy="-4864" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3104" x2="2912" y1="-4864" y2="-4864" /><circle cx="2976" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2976" cy="-4672" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2976" x2="3040" y1="-4672" y2="-4672" /><circle cx="2944" cy="-4016" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-4016" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2944" y1="-4016" y2="-4000" /><circle cx="3072" cy="-4000" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-4000" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="3072" y1="-4000" y2="-4016" /><circle cx="2912" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2912" cy="-4128" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2912" x2="2944" y1="-4128" y2="-4032" /><circle cx="2944" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="2944" y1="-4032" y2="-4016" /><circle cx="3072" cy="-4016" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-4016" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="3072" y1="-4016" y2="-4032" /><circle cx="3072" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="3104" y1="-4032" y2="-4128" /><circle cx="3072" cy="-4016" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3072" cy="-4016" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3072" x2="2944" y1="-4016" y2="-4016" /><circle cx="2944" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2944" cy="-4032" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2944" x2="3072" y1="-4032" y2="-4032" /><circle cx="3024" cy="-4592" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3024" cy="-4592" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3024" x2="2992" y1="-4592" y2="-4592" /><circle cx="2992" cy="-4600" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2992" cy="-4600" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2992" x2="3024" y1="-4600" y2="-4600" /><circle cx="3024" cy="-4600" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3024" cy="-4600" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3024" x2="3024" y1="-4600" y2="-4592" /><circle cx="2992" cy="-4592" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2992" cy="-4592" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2992" x2="2992" y1="-4592" y2="-4600" /><circle cx="3040" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3040" cy="-4608" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3040" x2="2976" y1="-4608" y2="-4608" /><circle cx="3024" cy="-4840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3024" cy="-4840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3024" x2="2992" y1="-4840" y2="-4840" /><circle cx="2992" cy="-4848" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2992" cy="-4848" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2992" x2="3024" y1="-4848" y2="-4848" /><circle cx="3024" cy="-4848" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3024" cy="-4848" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3024" x2="3024" y1="-4848" y2="-4840" /><circle cx="2992" cy="-4840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2992" cy="-4840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2992" x2="2992" y1="-4840" y2="-4848" /><circle cx="2752" cy="-2912" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2752" cy="-2912" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2752" x2="2880" y1="-2912" y2="-2912" /><circle cx="-240" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-240" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-240" x2="-208" y1="-3264" y2="-3264" /><circle cx="-208" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-208" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-208" x2="-192" y1="-3264" y2="-3248" /><circle cx="-192" cy="-3248" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-192" cy="-3248" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-192" x2="-192" y1="-3248" y2="-3216" /><circle cx="-192" cy="-3216" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-192" cy="-3216" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-192" x2="-208" y1="-3216" y2="-3200" /><circle cx="-208" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-208" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-208" x2="-240" y1="-3200" y2="-3200" /><circle cx="-240" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-240" cy="-3200" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-240" x2="-256" y1="-3200" y2="-3216" /><circle cx="-256" cy="-3216" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3216" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-256" y1="-3216" y2="-3248" /><circle cx="-256" cy="-3248" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="-256" cy="-3248" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="-256" x2="-240" y1="-3248" y2="-3264" /><circle cx="1664" cy="-2368" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2368" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1600" y1="-2368" y2="-2368" /><circle cx="1600" cy="-2368" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1600" cy="-2368" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1600" x2="1600" y1="-2368" y2="-2112" /><circle cx="1600" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1600" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1600" x2="1664" y1="-2624" y2="-2624" /><circle cx="2560" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2560" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2560" x2="2560" y1="-2112" y2="-2496" /><circle cx="2560" cy="-2496" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2560" cy="-2496" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2560" x2="2496" y1="-2496" y2="-2496" /><circle cx="2176" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-2752" y2="-2816" /><circle cx="1600" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1600" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1600" x2="1664" y1="-2048" y2="-2048" /><circle cx="1664" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="2496" y1="-2048" y2="-2048" /><circle cx="2496" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2560" y1="-2048" y2="-2048" /><circle cx="2560" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2560" cy="-2048" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2560" x2="2560" y1="-2048" y2="-2112" /><circle cx="1600" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1600" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1600" x2="1600" y1="-2112" y2="-2048" /><circle cx="1664" cy="-2368" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2368" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1664" y1="-2368" y2="-2112" /><circle cx="1664" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="2496" y1="-2112" y2="-2112" /><circle cx="2496" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2112" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2496" y1="-2112" y2="-2496" /><circle cx="2176" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="1664" y1="-2816" y2="-2816" /><circle cx="1664" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1600" y1="-2816" y2="-2816" /><circle cx="1600" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1600" cy="-2816" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1600" x2="1600" y1="-2816" y2="-2752" /><circle cx="1600" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1600" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1600" x2="1600" y1="-2752" y2="-2624" /><circle cx="2176" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="1664" y1="-2752" y2="-2752" /><circle cx="1664" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1664" y1="-2752" y2="-2624" /><circle cx="2496" cy="-2688" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2688" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2496" y1="-2688" y2="-2752" /><circle cx="2624" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2624" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2624" x2="2520" y1="-2784" y2="-2688" /><circle cx="2496" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2520" y1="-2560" y2="-2560" /><circle cx="2520" cy="-2688" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2520" cy="-2688" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2520" x2="2496" y1="-2688" y2="-2688" /><circle cx="1664" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1664" y1="-2560" y2="-2432" /><circle cx="2496" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2496" y1="-2560" y2="-2688" /><circle cx="1984" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1984" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1984" x2="1984" y1="-2304" y2="-2240" /><circle cx="1984" cy="-2240" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1984" cy="-2240" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1984" x2="1792" y1="-2240" y2="-2240" /><circle cx="1792" cy="-2240" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1792" cy="-2240" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1792" x2="1792" y1="-2240" y2="-2304" /><circle cx="1792" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1792" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1792" x2="1984" y1="-2304" y2="-2304" /><circle cx="1664" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1664" y1="-2624" y2="-2600" /><circle cx="1664" cy="-2600" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2600" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1664" y1="-2600" y2="-2560" /><circle cx="1664" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2432" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1664" y1="-2432" y2="-2392" /><circle cx="1664" cy="-2392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1664" cy="-2392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1664" x2="1664" y1="-2392" y2="-2368" /><circle cx="2496" cy="-2496" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2496" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2496" y1="-2496" y2="-2520" /><circle cx="2496" cy="-2520" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2520" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2496" y1="-2520" y2="-2560" /><circle cx="2496" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2496" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2496" x2="2200" y1="-2752" y2="-2752" /><circle cx="2200" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2200" cy="-2752" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2200" x2="2176" y1="-2752" y2="-2752" /><circle cx="2112" cy="-2592" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2112" cy="-2592" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2112" x2="2336" y1="-2592" y2="-2592" /><circle cx="2336" cy="-2592" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2336" cy="-2592" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2336" x2="2336" y1="-2592" y2="-2272" /><circle cx="2336" cy="-2272" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2336" cy="-2272" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2336" x2="2112" y1="-2272" y2="-2272" /><circle cx="2112" cy="-2272" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2112" cy="-2272" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2112" x2="2112" y1="-2272" y2="-2304" /><circle cx="2112" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2112" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2112" x2="2144" y1="-2304" y2="-2304" /><circle cx="2144" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2144" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2144" x2="2176" y1="-2304" y2="-2304" /><circle cx="2176" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2208" y1="-2304" y2="-2304" /><circle cx="2208" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2208" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2208" x2="2304" y1="-2304" y2="-2304" /><circle cx="2304" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2304" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2304" x2="2304" y1="-2304" y2="-2560" /><circle cx="2304" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2304" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2304" x2="2208" y1="-2560" y2="-2560" /><circle cx="2208" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2208" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2208" x2="2176" y1="-2560" y2="-2560" /><circle cx="2176" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2144" y1="-2560" y2="-2560" /><circle cx="2144" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2144" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2144" x2="2112" y1="-2560" y2="-2560" /><circle cx="2112" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2112" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2112" x2="2112" y1="-2560" y2="-2592" /><circle cx="2144" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2144" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2144" x2="2144" y1="-2304" y2="-2560" /><circle cx="2176" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-2304" y2="-2560" /><circle cx="2208" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2208" cy="-2304" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2208" x2="2208" y1="-2304" y2="-2560" /><circle cx="1984" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1984" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1984" x2="1984" y1="-2624" y2="-2560" /><circle cx="1984" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1984" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1984" x2="1792" y1="-2560" y2="-2560" /><circle cx="1792" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1792" cy="-2560" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1792" x2="1792" y1="-2560" y2="-2624" /><circle cx="1792" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1792" cy="-2624" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1792" x2="1984" y1="-2624" y2="-2624" /><circle cx="1992" cy="-2552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1992" cy="-2552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1992" x2="1784" y1="-2552" y2="-2552" /><circle cx="1784" cy="-2552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1784" cy="-2552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1784" x2="1784" y1="-2552" y2="-2632" /><circle cx="1784" cy="-2632" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1784" cy="-2632" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1784" x2="1992" y1="-2632" y2="-2632" /><circle cx="1992" cy="-2632" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1992" cy="-2632" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1992" x2="1992" y1="-2632" y2="-2552" /><circle cx="1784" cy="-2312" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1784" cy="-2312" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1784" x2="1992" y1="-2312" y2="-2312" /><circle cx="1992" cy="-2312" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1992" cy="-2312" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1992" x2="1992" y1="-2312" y2="-2232" /><circle cx="1992" cy="-2232" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1992" cy="-2232" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1992" x2="1784" y1="-2232" y2="-2232" /><circle cx="1784" cy="-2232" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="1784" cy="-2232" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="1784" x2="1784" y1="-2232" y2="-2312" /><circle cx="2624" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2624" cy="-2784" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2624" x2="2752" y1="-2784" y2="-2560" /><circle cx="3520" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3520" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3520" x2="3328" y1="-3904" y2="-3968" /><circle cx="3200" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3200" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3200" x2="3200" y1="-3968" y2="-3744" /><circle cx="3328" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3328" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3328" x2="3360" y1="-3744" y2="-3648" /><circle cx="3328" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3328" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3328" x2="3328" y1="-3968" y2="-3744" /><circle cx="3448" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3448" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3448" x2="3472" y1="-3520" y2="-3520" /><circle cx="3472" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3472" cy="-3520" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3472" x2="3520" y1="-3520" y2="-3584" /><circle cx="3360" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3360" cy="-3648" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3360" x2="3352" y1="-3648" y2="-3592" /><circle cx="3352" cy="-3592" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3352" cy="-3592" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3352" x2="3352" y1="-3592" y2="-3568" /><circle cx="3328" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3328" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3328" x2="3304" y1="-3968" y2="-3968" /><circle cx="3304" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3304" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3304" x2="3200" y1="-3968" y2="-3968" /><circle cx="3200" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3200" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3200" x2="3304" y1="-3744" y2="-3744" /><circle cx="3304" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3304" cy="-3744" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3304" x2="3328" y1="-3744" y2="-3744" /><circle cx="2368" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2368" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2368" x2="2344" y1="-4096" y2="-4096" /><circle cx="2344" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2344" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2344" x2="2264" y1="-4096" y2="-4096" /><circle cx="2264" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2264" cy="-4096" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2264" x2="2240" y1="-4096" y2="-4096" /><circle cx="2240" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2240" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2240" x2="2264" y1="-3968" y2="-3968" /><circle cx="2264" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2264" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2264" x2="2344" y1="-3968" y2="-3968" /><circle cx="2344" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2344" cy="-3968" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2344" x2="2368" y1="-3968" y2="-3968" /><circle cx="2176" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3680" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-3680" y2="-3704" /><circle cx="2176" cy="-3704" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2176" cy="-3704" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2176" x2="2176" y1="-3704" y2="-3776" /><circle cx="2048" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2048" y1="-3776" y2="-3704" /><circle cx="2048" cy="-3704" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="2048" cy="-3704" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="2048" x2="2048" y1="-3704" y2="-3680" /><circle cx="3520" cy="-3584" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3520" cy="-3584" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3520" x2="3520" y1="-3584" y2="-3840" /><circle cx="3680" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3680" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3680" x2="3584" y1="-3904" y2="-3904" /><circle cx="3744" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3744" cy="-3808" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3744" x2="3680" y1="-3808" y2="-3904" /><circle cx="3584" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3584" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3584" x2="3616" y1="-3840" y2="-3776" /><circle cx="3616" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3616" cy="-3776" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3616" x2="3552" y1="-3776" y2="-3552" /><circle cx="3552" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3552" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3552" x2="3552" y1="-3552" y2="-3392" /><circle cx="3552" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3552" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3552" x2="3648" y1="-3392" y2="-3264" /><circle cx="3680" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3680" cy="-3552" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3680" x2="3744" y1="-3552" y2="-3808" /><circle cx="3680" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3680" cy="-3392" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3680" x2="3680" y1="-3392" y2="-3552" /><circle cx="3808" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3808" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3808" x2="3680" y1="-3264" y2="-3392" /><circle cx="3648" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3648" cy="-3264" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3648" x2="3496" y1="-3264" y2="-3032" /><circle cx="3584" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3584" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3584" x2="3808" y1="-2880" y2="-3264" /><circle cx="3496" cy="-3032" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3496" cy="-3032" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3496" x2="3456" y1="-3032" y2="-3032" /><circle cx="3360" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3360" cy="-2880" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3360" x2="3584" y1="-2880" y2="-2880" /><circle cx="3304" cy="-3040" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3304" cy="-3040" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3304" x2="3400" y1="-3040" y2="-3152" /><circle cx="3520" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3520" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3520" x2="3520" y1="-3840" y2="-3904" /><circle cx="3584" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3584" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3584" x2="3584" y1="-3840" y2="-3904" /><circle cx="3304" cy="-3040" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3304" cy="-3040" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3304" x2="3320" y1="-3040" y2="-3040" /><circle cx="3320" cy="-3040" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3320" cy="-3040" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3320" x2="3360" y1="-3040" y2="-2880" /><circle cx="3456" cy="-3032" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3456" cy="-3032" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3456" x2="3416" y1="-3032" y2="-3152" /><circle cx="3416" cy="-3152" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3416" cy="-3152" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3416" x2="3400" y1="-3152" y2="-3152" /><circle cx="3520" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3520" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3520" x2="3536" y1="-3840" y2="-3840" /><circle cx="3536" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3536" cy="-3840" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3536" x2="3584" y1="-3840" y2="-3840" /><circle cx="3584" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3584" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3584" x2="3536" y1="-3904" y2="-3904" /><circle cx="3536" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><circle cx="3536" cy="-3904" r="10" stroke="rgb(40%,0%,0%)" /><line stroke="rgb(10%,10%,16%)" x1="3536" x2="3520" y1="-3904" y2="-3904" /><text fill="red" x="0" y="10">TestMap</text></svg>
from __future__ import print_function
import unittest
import collections
import struct
import sqlite3
import svgwrite
'''
vertex test cases:
(10, FileLump(filepos=94972, size=1868, name='VERTEXES'))
(21, FileLump(filepos=179996, size=3768, name='VERTEXES'))
(32, FileLump(filepos=295644, size=3784, name='VERTEXES'))
(43, FileLump(filepos=394692, size=3120, name='VERTEXES'))
(54, FileLump(filepos=482536, size=2984, name='VERTEXES'))
(65, FileLump(filepos=601156, size=4828, name='VERTEXES'))
(76, FileLump(filepos=731496, size=3584, name='VERTEXES'))
(87, FileLump(filepos=804588, size=1312, name='VERTEXES'))
(98, FileLump(filepos=879156, size=2324, name='VERTEXES'))
'''
class IncorrectByteLength(Exception):
def __init__(self, message="Not correct byte count"):
super(IncorrectByteLength, self).__init__(message=message)
Header = collections.namedtuple("Header", ['identification',
'num_lumps',
'info_table_offset'])
def read_file(file_obj, size, handler, position=None):
if position:
file_obj.seek(position)
datum = file_obj.read(size)
if not datum:
return None
return handler(datum)
def convert_file_header(data):
# type: ([byte]) -> Header
"""
typedef struct
{
// Should be "IWAD" or "PWAD".
char identification[4];
int numlumps;
int infotableofs;
} PACKEDATTR wadinfo_t;
"""
if len(data) != 12:
raise IncorrectByteLength("byte length {} instead of 12".format(len(data)))
values = struct.unpack("<4sII", data)
name, numlumps, info_table_offset = values
return Header(name,
numlumps,
info_table_offset)
FileLump = collections.namedtuple("FileLump", ['filepos',
'size',
'name'])
def convert_filelump(data):
# type: ([byte]) -> FileLump
"""
typedef struct
{
int filepos;
int size;
char name[8];
} PACKEDATTR filelump_t;
"""
try:
filepos, size, name = struct.unpack("<II8s", data)
except Exception:
raise
return FileLump(filepos, size, name)
LumpInfo = collections.namedtuple("LumpInfo", ['position',
'size',
'name',
'wad_file'])
def convert_lumpinfo(wad_file_name, file_lump):
# type: (FileLump) -> LumpInfo
return LumpInfo(file_lump.filepos,
file_lump.size,
file_lump.name,
wad_file_name)
Vertex = collections.namedtuple("Vertex", ["x","y"])
def read_vertex(data):
# type: ([byte]) -> Vertex
"""
typedef struct
{
short x;
short y;
} PACKEDATTR mapvertex_t;
"""
try:
x, y = struct.unpack("<hh", data)
except Exception:
print("DDD", data)
raise
return Vertex(x,y)
def create_schema_vertex(conn):
create_schema = """
CREATE TABLE IF NOT EXISTS Vertex(
idVertex INTEGER PRIMARY KEY,
x, y INTEGER
);
"""
delete_schema = """
DROP TABLE IF EXISTS Vertex;
"""
conn.execute(delete_schema)
conn.execute(create_schema)
def insert_vertex(conn, index, x, y):
conn.execute("""
INSERT INTO Vertex(idVertex, x, y) VALUES (?, ?, ?);
""", (index, x, y))
def split_file(file_obj, size):
while True:
data = file_obj.read(size)
#print(data)
if not data:
break
yield data
MapLinedef = collections.namedtuple("MapLinedef", [ 'v1',
'v2',
'flags',
'special',
'tag',
'sidenum' ])
def create_schema_linedef(conn):
create_schema = """
CREATE TABLE IF NOT EXISTS LineDef (
-- idLineDef INTEGER PRIMARY KEY,
vertex1 INTEGER,
vertex2 INTEGER,
flags INTEGER(2),
-- sidenum left out for now.
FOREIGN KEY(vertex1) REFERENCES Vertex(idVertex),
FOREIGN KEY(vertex2) REFERENCES Vertex(idVertex)
);
"""
delete_schema = """
DROP TABLE IF EXISTS LineDef;
"""
conn.execute(delete_schema)
conn.execute(create_schema)
def insert_linedef(conn, vertex1, vertex2):
conn.execute("""
INSERT INTO LineDef(vertex1, vertex2) VALUES (?, ?);
""", (vertex1, vertex2))
def read_maplinedef(data):
# type: ([byte]) -> MapLinedef
"""
typedef struct
{
short v1; //2
short v2; //2
short flags; //2
short special; //2
short tag; //2
// sidenum[1] will be -1 if one sided
short sidenum[2]; //4
# } PACKEDATTR maplinedef_t;
"""
sidenum = [-1, -1]
try:
v1, v2, flags, tag, special, sidenum[0], sidenum[1] = struct.unpack("<hhhhhhh", data)
except Exception:
raise
return MapLinedef(v1, v2, flags, tag, special, [sidenum[0], sidenum[1]])
class TestWad(unittest.TestCase):
def test_add_file(self):
# need to make custom wad for tests...
test_file_name = 'doom1.wad'
import pdb; pdb.set_trace()
with open(test_file_name, 'rb') as file_data:
header = read_file(file_data,
12,
convert_file_header)
# Go to the position where the actually starts
file_data.seek(header.info_table_offset)
# LAZY LIZZARD!!!
# split file into 16 byte chunks
file_lumps = (convert_filelump(i) for i in split_file(file_data, 16))
lump_info = list(convert_lumpinfo(test_file_name, i) for i in file_lumps)
# map(print, enumerate(lump_info))
def read_lump(lump_self, index, struct_size=1):
current_lump = lump_self[index]
with open(current_lump.wad_file, 'rb') as wad_file_data:
wad_file_data.seek(current_lump.position)
bytes_left = current_lump.size
while True:
datum = wad_file_data.read(struct_size)
if not datum:
break
if bytes_left <= 0:
break
bytes_left -= struct_size
yield datum
with sqlite3.connect("waddb.db") as conn:
create_schema_vertex(conn)
create_schema_linedef(conn)
#vertexes are 4 bytes big in the file.
for index, data in enumerate(read_lump(lump_info, 10, 4)):
vertex = read_vertex(data)
insert_vertex(conn, index, vertex.x, vertex.y)
#linedefs are 14 bytes big in the file.
for i in read_lump(lump_info, 8, 14):
#print(read_maplinedef(i))
linedef = read_maplinedef(i)
insert_linedef(conn, linedef.v1, linedef.v2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment