Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parsing Error in ShapeBuilder.rect / convert_stroke_width #555

Closed
darioackermann opened this issue Sep 24, 2022 · 10 comments
Closed

Parsing Error in ShapeBuilder.rect / convert_stroke_width #555

darioackermann opened this issue Sep 24, 2022 · 10 comments

Comments

@darioackermann
Copy link

darioackermann commented Sep 24, 2022

Describe the bug

Error details
File "C:\Users\***\AppData\Local\Programs\Python\Python310\lib\site-packages\fpdf\svg.py", line 354, in rect width = float(tag.attrib.get("width", 0)) ValueError: could not convert string to float: '100%'

In a nutshell, it tries to convert an svg attribute width="100%" into float which fails.
Minimal code
QRBill Library from here: https://github.com/claudep/swiss-qr-bill

from fpdf import FPDF
from qrbill import QRBill

pdf = FPDF()
pdf.add_page()

my_bill = QRBill(
    account='CH1889144593228925526', # random for bug purposes
    creditor={
        'name': '...', 'pcode': '8001', 'city': 'Zurich', 'country': 'CH',
    },
    amount='22.45',
)
my_bill.as_svg("test.svg")
self.pdf.image("test.svg")
...

test.svg

<?xml version="1.0" encoding="utf-8" ?>
<svg baseProfile="full" height="106mm" version="1.1" viewBox="0 0 744.094470 375.590540" width="210mm" 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 /><rect fill="white" height="100%" width="100%" x="0" y="0" /><g><text font-family="Helvetica" font-size="12" font-weight="bold" x="17.71654" y="38.97638">Receipt</text><text font-family="Helvetica" font-size="8" font-weight="bold" x="17.71654" y="56.69291">Account / Payable to</text><text font-family="Helvetica" font-size="10" x="17.71654" y="69.09449">CH18 8914 4593 2289 2552 6</text><text font-family="Helvetica" font-size="10" x="17.71654" y="81.49606">...</text><text font-family="Helvetica" font-size="10" x="17.71654" y="93.89764">CH-8001 Zurich</text><text font-family="Helvetica" font-size="8" font-weight="bold" x="17.71654" y="109.84252">Payable by (name/address)</text><g><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="17.71654" x2="17.71654" y1="122.24409" y2="129.3307" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="17.71654" x2="28.34646" y1="122.24409" y2="122.24409" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="17.71654" x2="17.71654" y1="210.82676" y2="203.74015" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="17.71654" x2="28.34646" y1="210.82676" y2="210.82676" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="191.33858" x2="201.9685" y1="122.24409" y2="122.24409" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="201.9685" x2="201.9685" y1="122.24409" y2="129.3307" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="191.33858" x2="201.9685" y1="210.82676" y2="210.82676" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="201.9685" x2="201.9685" y1="210.82676" y2="203.74015" /></g><text font-family="Helvetica" font-size="8" font-weight="bold" x="17.71654" y="258.66141">Currency</text><text font-family="Helvetica" font-size="8" font-weight="bold" x="60.23622" y="258.66141">Amount</text><text font-family="Helvetica" font-size="10" x="17.71654" y="276.37795">CHF</text><text font-family="Helvetica" font-size="10" x="60.23622" y="276.37795">22.45</text><text font-family="Helvetica" font-size="8" font-weight="bold" text-anchor="end" x="201.96849" y="308.26771">Acceptance point</text><line fill="none" stroke="black" stroke-dasharray="2 2" x1="0" x2="744.09447" y1="4.04291" y2="4.04291" /><path d="m 0.764814,4.283977 c 0.337358,0.143009 0.862476,-0.115279 0.775145,-0.523225 -0.145918,-0.497473 -0.970289,-0.497475 -1.116209,-2e-6 -0.0636,0.23988 0.128719,0.447618 0.341064,0.523227 z m 3.875732,-1.917196 c 1.069702,0.434082 2.139405,0.868164 3.209107,1.302246 -0.295734,0.396158 -0.866482,0.368049 -1.293405,0.239509 -0.876475,-0.260334 -1.71099,-0.639564 -2.563602,-0.966653 -0.132426,-0.04295 -0.265139,-0.124595 -0.397393,-0.144327 -0.549814,0.22297 -1.09134,0.477143 -1.667719,0.62213 -0.07324,0.232838 0.150307,0.589809 -0.07687,0.842328 -0.311347,0.532157 -1.113542,0.624698 -1.561273,0.213165 -0.384914,-0.301216 -0.379442,-0.940948 7e-6,-1.245402 0.216628,-0.191603 0.506973,-0.286636 0.794095,-0.258382 0.496639,0.01219 1.013014,-0.04849 1.453829,-0.289388 0.437126,-0.238777 0.07006,-0.726966 -0.300853,-0.765416 -0.420775,-0.157424 -0.870816,-0.155853 -1.312747,-0.158623 -0.527075,-0.0016 -1.039244,-0.509731 -0.904342,-1.051293 0.137956,-0.620793 0.952738,-0.891064 1.47649,-0.573851 0.371484,0.188118 0.594679,0.675747 0.390321,1.062196 0.09829,0.262762 0.586716,0.204086 0.826177,0.378204 0.301582,0.119237 0.600056,0.246109 0.899816,0.36981 0.89919,-0.349142 1.785653,-0.732692 2.698347,-1.045565 0.459138,-0.152333 1.033472,-0.283325 1.442046,0.05643 0.217451,0.135635 -0.06954,0.160294 -0.174725,0.220936 -0.979101,0.397316 -1.958202,0.794633 -2.937303,1.19195 z m -3.44165,-1.917196 c -0.338434,-0.14399 -0.861225,0.116943 -0.775146,0.524517 0.143274,0.477916 0.915235,0.499056 1.10329,0.04328 0.09674,-0.247849 -0.09989,-0.490324 -0.328144,-0.567796 z" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" transform="scale(1.9) translate(24,0)" /><line fill="none" stroke="black" stroke-dasharray="2 2" x1="219.68503" x2="219.68503" y1="3.54331" y2="372.04724" /><path d="m 0.764814,4.283977 c 0.337358,0.143009 0.862476,-0.115279 0.775145,-0.523225 -0.145918,-0.497473 -0.970289,-0.497475 -1.116209,-2e-6 -0.0636,0.23988 0.128719,0.447618 0.341064,0.523227 z m 3.875732,-1.917196 c 1.069702,0.434082 2.139405,0.868164 3.209107,1.302246 -0.295734,0.396158 -0.866482,0.368049 -1.293405,0.239509 -0.876475,-0.260334 -1.71099,-0.639564 -2.563602,-0.966653 -0.132426,-0.04295 -0.265139,-0.124595 -0.397393,-0.144327 -0.549814,0.22297 -1.09134,0.477143 -1.667719,0.62213 -0.07324,0.232838 0.150307,0.589809 -0.07687,0.842328 -0.311347,0.532157 -1.113542,0.624698 -1.561273,0.213165 -0.384914,-0.301216 -0.379442,-0.940948 7e-6,-1.245402 0.216628,-0.191603 0.506973,-0.286636 0.794095,-0.258382 0.496639,0.01219 1.013014,-0.04849 1.453829,-0.289388 0.437126,-0.238777 0.07006,-0.726966 -0.300853,-0.765416 -0.420775,-0.157424 -0.870816,-0.155853 -1.312747,-0.158623 -0.527075,-0.0016 -1.039244,-0.509731 -0.904342,-1.051293 0.137956,-0.620793 0.952738,-0.891064 1.47649,-0.573851 0.371484,0.188118 0.594679,0.675747 0.390321,1.062196 0.09829,0.262762 0.586716,0.204086 0.826177,0.378204 0.301582,0.119237 0.600056,0.246109 0.899816,0.36981 0.89919,-0.349142 1.785653,-0.732692 2.698347,-1.045565 0.459138,-0.152333 1.033472,-0.283325 1.442046,0.05643 0.217451,0.135635 -0.06954,0.160294 -0.174725,0.220936 -0.979101,0.397316 -1.958202,0.794633 -2.937303,1.19195 z m -3.44165,-1.917196 c -0.338434,-0.14399 -0.861225,0.116943 -0.775146,0.524517 0.143274,0.477916 0.915235,0.499056 1.10329,0.04328 0.09674,-0.247849 -0.09989,-0.490324 -0.328144,-0.567796 z" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" transform="scale(1.9) translate(118,40) rotate(90)" /><text font-family="Helvetica" font-size="12" font-weight="bold" x="237.40157" y="38.97638">Payment part</text><path d="M 15 21 L 15 22 L 16 22 L 16 21 z M 26 21 L 26 22 L 27 22 L 27 21 z M 18 17 L 18 18 L 19 18 L 19 17 z M 18 26 L 18 27 L 19 27 L 19 26 z M 15 39 L 15 40 L 16 40 L 16 39 z M 26 39 L 26 40 L 27 40 L 27 39 z M 7 35 L 7 36 L 8 36 L 8 35 z M 8 0 L 8 1 L 9 1 L 9 0 z M 30 0 L 30 1 L 31 1 L 31 0 z M 42 2 L 42 3 L 43 3 L 43 2 z M 18 35 L 18 36 L 19 36 L 19 35 z M 18 44 L 18 45 L 19 45 L 19 44 z M 8 9 L 8 10 L 9 10 L 9 9 z M 30 9 L 30 10 L 31 10 L 31 9 z M 0 5 L 0 6 L 1 6 L 1 5 z M 11 5 L 11 6 L 12 6 L 12 5 z M 30 18 L 30 19 L 31 19 L 31 18 z M 11 23 L 11 24 L 12 24 L 12 23 z M 44 20 L 44 21 L 45 21 L 45 20 z M 33 29 L 33 30 L 34 30 L 34 29 z M 41 42 L 41 43 L 42 43 L 42 42 z M 25 25 L 25 26 L 26 26 L 26 25 z M 4 2 L 4 3 L 5 3 L 5 2 z M 2 32 L 2 33 L 3 33 L 3 32 z M 2 41 L 2 42 L 3 42 L 3 41 z M 3 6 L 3 7 L 4 7 L 4 6 z M 37 8 L 37 9 L 38 9 L 38 8 z M 22 19 L 22 20 L 23 20 L 23 19 z M 14 15 L 14 16 L 15 16 L 15 15 z M 34 30 L 34 31 L 35 31 L 35 30 z M 3 24 L 3 25 L 4 25 L 4 24 z M 14 24 L 14 25 L 15 25 L 15 24 z M 37 26 L 37 27 L 38 27 L 38 26 z M 3 33 L 3 34 L 4 34 L 4 33 z M 38 0 L 38 1 L 39 1 L 39 0 z M 14 33 L 14 34 L 15 34 L 15 33 z M 37 35 L 37 36 L 38 36 L 38 35 z M 3 42 L 3 43 L 4 43 L 4 42 z M 15 7 L 15 8 L 16 8 L 16 7 z M 38 9 L 38 10 L 39 10 L 39 9 z M 14 42 L 14 43 L 15 43 L 15 42 z M 26 16 L 26 17 L 27 17 L 27 16 z M 30 40 L 30 41 L 31 41 L 31 40 z M 7 12 L 7 13 L 8 13 L 8 12 z M 18 12 L 18 13 L 19 13 L 19 12 z M 18 21 L 18 22 L 19 22 L 19 21 z M 7 30 L 7 31 L 8 31 L 8 30 z M 27 8 L 27 9 L 28 9 L 28 8 z M 29 27 L 29 28 L 30 28 L 30 27 z M 8 4 L 8 5 L 9 5 L 9 4 z M 19 4 L 19 5 L 20 5 L 20 4 z M 30 4 L 30 5 L 31 5 L 31 4 z M 0 0 L 0 1 L 1 1 L 1 0 z M 6 34 L 6 35 L 7 35 L 7 34 z M 30 13 L 30 14 L 31 14 L 31 13 z M 29 36 L 29 37 L 30 37 L 30 36 z M 40 36 L 40 37 L 41 37 L 41 36 z M 0 9 L 0 10 L 1 10 L 1 9 z M 11 9 L 11 10 L 12 10 L 12 9 z M 41 10 L 41 11 L 42 11 L 42 10 z M 6 43 L 6 44 L 7 44 L 7 43 z M 33 15 L 33 16 L 34 16 L 34 15 z M 41 28 L 41 29 L 42 29 L 42 28 z M 33 24 L 33 25 L 34 25 L 34 24 z M 44 24 L 44 25 L 45 25 L 45 24 z M 25 20 L 25 21 L 26 21 L 26 20 z M 10 31 L 10 32 L 11 32 L 11 31 z M 33 33 L 33 34 L 34 34 L 34 33 z M 44 33 L 44 34 L 45 34 L 45 33 z M 10 40 L 10 41 L 11 41 L 11 40 z M 34 7 L 34 8 L 35 8 L 35 7 z M 14 1 L 14 2 L 15 2 L 15 1 z M 3 10 L 3 11 L 4 11 L 4 10 z M 14 10 L 14 11 L 15 11 L 15 10 z M 37 12 L 37 13 L 38 13 L 38 12 z M 3 19 L 3 20 L 4 20 L 4 19 z M 14 19 L 14 20 L 15 20 L 15 19 z M 3 28 L 3 29 L 4 29 L 4 28 z M 14 28 L 14 29 L 15 29 L 15 28 z M 15 2 L 15 3 L 16 3 L 16 2 z M 26 2 L 26 3 L 27 3 L 27 2 z M 38 4 L 38 5 L 39 5 L 39 4 z M 36 34 L 36 35 L 37 35 L 37 34 z M 26 11 L 26 12 L 27 12 L 27 11 z M 18 7 L 18 8 L 19 8 L 19 7 z M 28 39 L 28 40 L 29 40 L 29 39 z M 18 16 L 18 17 L 19 17 L 19 16 z M 29 13 L 29 14 L 30 14 L 30 13 z M 29 22 L 29 23 L 30 23 L 30 22 z M 40 22 L 40 23 L 41 23 L 41 22 z M 29 31 L 29 32 L 30 32 L 30 31 z M 11 4 L 11 5 L 12 5 L 12 4 z M 6 38 L 6 39 L 7 39 L 7 38 z M 29 40 L 29 41 L 30 41 L 30 40 z M 21 36 L 21 37 L 22 37 L 22 36 z M 44 1 L 44 2 L 45 2 L 45 1 z M 40 40 L 40 41 L 41 41 L 41 40 z M 41 14 L 41 15 L 42 15 L 42 14 z M 10 8 L 10 9 L 11 9 L 11 8 z M 33 10 L 33 11 L 34 11 L 34 10 z M 10 17 L 10 18 L 11 18 L 11 17 z M 33 19 L 33 20 L 34 20 L 34 19 z M 2 13 L 2 14 L 3 14 L 3 13 z M 10 26 L 10 27 L 11 27 L 11 26 z M 2 22 L 2 23 L 3 23 L 3 22 z M 25 24 L 25 25 L 26 25 L 26 24 z M 33 37 L 33 38 L 34 38 L 34 37 z M 22 9 L 22 10 L 23 10 L 23 9 z M 34 11 L 34 12 L 35 12 L 35 11 z M 2 40 L 2 41 L 3 41 L 3 40 z M 32 41 L 32 42 L 33 42 L 33 41 z M 43 41 L 43 42 L 44 42 L 44 41 z M 25 42 L 25 43 L 26 43 L 26 42 z M 3 14 L 3 15 L 4 15 L 4 14 z M 37 16 L 37 17 L 38 17 L 38 16 z M 3 23 L 3 24 L 4 24 L 4 23 z M 36 29 L 36 30 L 37 30 L 37 29 z M 26 6 L 26 7 L 27 7 L 27 6 z M 17 25 L 17 26 L 18 26 L 18 25 z M 28 25 L 28 26 L 29 26 L 29 25 z M 36 38 L 36 39 L 37 39 L 37 38 z M 17 34 L 17 35 L 18 35 L 18 34 z M 28 34 L 28 35 L 29 35 L 29 34 z M 7 11 L 7 12 L 8 12 L 8 11 z M 40 8 L 40 9 L 41 9 L 41 8 z M 21 13 L 21 14 L 22 14 L 22 13 z M 6 24 L 6 25 L 7 25 L 7 24 z M 40 26 L 40 27 L 41 27 L 41 26 z M 29 35 L 29 36 L 30 36 L 30 35 z M 41 0 L 41 1 L 42 1 L 42 0 z M 40 35 L 40 36 L 41 36 L 41 35 z M 21 31 L 21 32 L 22 32 L 22 31 z M 6 42 L 6 43 L 7 43 L 7 42 z M 40 44 L 40 45 L 41 45 L 41 44 z M 21 40 L 21 41 L 22 41 L 22 40 z M 10 3 L 10 4 L 11 4 L 11 3 z M 33 5 L 33 6 L 34 6 L 34 5 z M 44 5 L 44 6 L 45 6 L 45 5 z M 25 1 L 25 2 L 26 2 L 26 1 z M 41 18 L 41 19 L 42 19 L 42 18 z M 10 12 L 10 13 L 11 13 L 11 12 z M 33 14 L 33 15 L 34 15 L 34 14 z M 25 10 L 25 11 L 26 11 L 26 10 z M 44 23 L 44 24 L 45 24 L 45 23 z M 2 17 L 2 18 L 3 18 L 3 17 z M 2 26 L 2 27 L 3 27 L 3 26 z M 25 28 L 25 29 L 26 29 L 26 28 z M 10 39 L 10 40 L 11 40 L 11 39 z M 22 4 L 22 5 L 23 5 L 23 4 z M 34 6 L 34 7 L 35 7 L 35 6 z M 2 35 L 2 36 L 3 36 L 3 35 z M 3 0 L 3 1 L 4 1 L 4 0 z M 32 36 L 32 37 L 33 37 L 33 36 z M 22 13 L 22 14 L 23 14 L 23 13 z M 43 36 L 43 37 L 44 37 L 44 36 z M 3 9 L 3 10 L 4 10 L 4 9 z M 13 41 L 13 42 L 14 42 L 14 41 z M 24 41 L 24 42 L 25 42 L 25 41 z M 14 18 L 14 19 L 15 19 L 15 18 z M 35 41 L 35 42 L 36 42 L 36 41 z M 36 24 L 36 25 L 37 25 L 37 24 z M 17 20 L 17 21 L 18 21 L 18 20 z M 28 20 L 28 21 L 29 21 L 29 20 z M 36 33 L 36 34 L 37 34 L 37 33 z M 5 27 L 5 28 L 6 28 L 6 27 z M 9 25 L 9 26 L 10 26 L 10 25 z M 17 38 L 17 39 L 18 39 L 18 38 z M 29 3 L 29 4 L 30 4 L 30 3 z M 40 3 L 40 4 L 41 4 L 41 3 z M 9 34 L 9 35 L 10 35 L 10 34 z M 28 38 L 28 39 L 29 39 L 29 38 z M 6 10 L 6 11 L 7 11 L 7 10 z M 21 8 L 21 9 L 22 9 L 22 8 z M 29 21 L 29 22 L 30 22 L 30 21 z M 40 21 L 40 22 L 41 22 L 41 21 z M 21 17 L 21 18 L 22 18 L 22 17 z M 6 28 L 6 29 L 7 29 L 7 28 z M 40 30 L 40 31 L 41 31 L 41 30 z M 21 26 L 21 27 L 22 27 L 22 26 z M 41 4 L 41 5 L 42 5 L 42 4 z M 44 0 L 44 1 L 45 1 L 45 0 z M 10 7 L 10 8 L 11 8 L 11 7 z M 44 9 L 44 10 L 45 10 L 45 9 z M 39 43 L 39 44 L 40 44 L 40 43 z M 2 3 L 2 4 L 3 4 L 3 3 z M 20 39 L 20 40 L 21 40 L 21 39 z M 10 16 L 10 17 L 11 17 L 11 16 z M 25 14 L 25 15 L 26 15 L 26 14 z M 10 25 L 10 26 L 11 26 L 11 25 z M 2 30 L 2 31 L 3 31 L 3 30 z M 22 8 L 22 9 L 23 9 L 23 8 z M 13 27 L 13 28 L 14 28 L 14 27 z M 35 27 L 35 28 L 36 28 L 36 27 z M 3 4 L 3 5 L 4 5 L 4 4 z M 32 40 L 32 41 L 33 41 L 33 40 z M 43 40 L 43 41 L 44 41 L 44 40 z M 13 36 L 13 37 L 14 37 L 14 36 z M 24 36 L 24 37 L 25 37 L 25 36 z M 28 6 L 28 7 L 29 7 L 29 6 z M 42 42 L 42 43 L 43 43 L 43 42 z M 17 15 L 17 16 L 18 16 L 18 15 z M 36 28 L 36 29 L 37 29 L 37 28 z M 28 24 L 28 25 L 29 25 L 29 24 z M 36 37 L 36 38 L 37 38 L 37 37 z M 5 31 L 5 32 L 6 32 L 6 31 z M 6 5 L 6 6 L 7 6 L 7 5 z M 29 7 L 29 8 L 30 8 L 30 7 z M 21 3 L 21 4 L 22 4 L 22 3 z M 6 14 L 6 15 L 7 15 L 7 14 z M 29 25 L 29 26 L 30 26 L 30 25 z M 42 44 L 42 45 L 43 45 L 43 44 z M 6 32 L 6 33 L 7 33 L 7 32 z M 21 30 L 21 31 L 22 31 L 22 30 z M 44 4 L 44 5 L 45 5 L 45 4 z M 25 0 L 25 1 L 26 1 L 26 0 z M 10 11 L 10 12 L 11 12 L 11 11 z M 25 9 L 25 10 L 26 10 L 26 9 z M 32 8 L 32 9 L 33 9 L 33 8 z M 12 39 L 12 40 L 13 40 L 13 39 z M 2 16 L 2 17 L 3 17 L 3 16 z M 32 17 L 32 18 L 33 18 L 33 17 z M 43 17 L 43 18 L 44 18 L 44 17 z M 24 13 L 24 14 L 25 14 L 25 13 z M 43 26 L 43 27 L 44 27 L 44 26 z M 4 44 L 4 45 L 5 45 L 5 44 z M 24 22 L 24 23 L 25 23 L 25 22 z M 32 35 L 32 36 L 33 36 L 33 35 z M 16 18 L 16 19 L 17 19 L 17 18 z M 32 44 L 32 45 L 33 45 L 33 44 z M 1 38 L 1 39 L 2 39 L 2 38 z M 24 40 L 24 41 L 25 41 L 25 40 z M 16 36 L 16 37 L 17 37 L 17 36 z M 28 10 L 28 11 L 29 11 L 29 10 z M 36 23 L 36 24 L 37 24 L 37 23 z M 17 19 L 17 20 L 18 20 L 18 19 z M 28 19 L 28 20 L 29 20 L 29 19 z M 5 26 L 5 27 L 6 27 L 6 26 z M 29 2 L 29 3 L 30 3 L 30 2 z M 6 0 L 6 1 L 7 1 L 7 0 z M 40 2 L 40 3 L 41 3 L 41 2 z M 9 33 L 9 34 L 10 34 L 10 33 z M 5 44 L 5 45 L 6 45 L 6 44 z M 40 11 L 40 12 L 41 12 L 41 11 z M 29 11 L 29 12 L 30 12 L 30 11 z M 27 41 L 27 42 L 28 42 L 28 41 z M 6 18 L 6 19 L 7 19 L 7 18 z M 39 24 L 39 25 L 40 25 L 40 24 z M 20 20 L 20 21 L 21 21 L 21 20 z M 39 33 L 39 34 L 40 34 L 40 33 z M 31 29 L 31 30 L 32 30 L 32 29 z M 10 6 L 10 7 L 11 7 L 11 6 z M 12 25 L 12 26 L 13 26 L 13 25 z M 2 2 L 2 3 L 3 3 L 3 2 z M 20 38 L 20 39 L 21 39 L 21 38 z M 12 34 L 12 35 L 13 35 L 13 34 z M 32 12 L 32 13 L 33 13 L 33 12 z M 43 12 L 43 13 L 44 13 L 44 12 z M 12 43 L 12 44 L 13 44 L 13 43 z M 13 8 L 13 9 L 14 9 L 14 8 z M 24 8 L 24 9 L 25 9 L 25 8 z M 43 21 L 43 22 L 44 22 L 44 21 z M 23 43 L 23 44 L 24 44 L 24 43 z M 1 15 L 1 16 L 2 16 L 2 15 z M 24 17 L 24 18 L 25 18 L 25 17 z M 32 30 L 32 31 L 33 31 L 33 30 z M 16 13 L 16 14 L 17 14 L 17 13 z M 43 30 L 43 31 L 44 31 L 44 30 z M 24 26 L 24 27 L 25 27 L 25 26 z M 35 26 L 35 27 L 36 27 L 36 26 z M 43 39 L 43 40 L 44 40 L 44 39 z M 16 22 L 16 23 L 17 23 L 17 22 z M 36 0 L 36 1 L 37 1 L 37 0 z M 36 9 L 36 10 L 37 10 L 37 9 z M 17 5 L 17 6 L 18 6 L 18 5 z M 28 5 L 28 6 L 29 6 L 29 5 z M 9 1 L 9 2 L 10 2 L 10 1 z M 5 12 L 5 13 L 6 13 L 6 12 z M 17 14 L 17 15 L 18 15 L 18 14 z M 28 14 L 28 15 L 29 15 L 29 14 z M 9 10 L 9 11 L 10 11 L 10 10 z M 6 4 L 6 5 L 7 5 L 7 4 z M 40 6 L 40 7 L 41 7 L 41 6 z M 8 32 L 8 33 L 9 33 L 9 32 z M 39 10 L 39 11 L 40 11 L 40 10 z M 42 43 L 42 44 L 43 44 L 43 43 z M 39 19 L 39 20 L 40 20 L 40 19 z M 11 37 L 11 38 L 12 38 L 12 37 z M 20 24 L 20 25 L 21 25 L 21 24 z M 23 20 L 23 21 L 24 21 L 24 20 z M 20 42 L 20 43 L 21 43 L 21 42 z M 4 25 L 4 26 L 5 26 L 5 25 z M 12 38 L 12 39 L 13 39 L 13 38 z M 35 3 L 35 4 L 36 4 L 36 3 z M 32 16 L 32 17 L 33 17 L 33 16 z M 43 16 L 43 17 L 44 17 L 44 16 z M 4 34 L 4 35 L 5 35 L 5 34 z M 24 12 L 24 13 L 25 13 L 25 12 z M 35 12 L 35 13 L 36 13 L 36 12 z M 32 25 L 32 26 L 33 26 L 33 25 z M 1 19 L 1 20 L 2 20 L 2 19 z M 24 21 L 24 22 L 25 22 L 25 21 z M 35 21 L 35 22 L 36 22 L 36 21 z M 16 17 L 16 18 L 17 18 L 17 17 z M 43 34 L 43 35 L 44 35 L 44 34 z M 24 30 L 24 31 L 25 31 L 25 30 z M 36 4 L 36 5 L 37 5 L 37 4 z M 16 35 L 16 36 L 17 36 L 17 35 z M 17 0 L 17 1 L 18 1 L 18 0 z M 36 13 L 36 14 L 37 14 L 37 13 z M 38 32 L 38 33 L 39 33 L 39 32 z M 38 41 L 38 42 L 39 42 L 39 41 z M 5 16 L 5 17 L 6 17 L 6 16 z M 28 18 L 28 19 L 29 19 L 29 18 z M 27 22 L 27 23 L 28 23 L 28 22 z M 30 27 L 30 28 L 31 28 L 31 27 z M 42 29 L 42 30 L 43 30 L 43 29 z M 8 36 L 8 37 L 9 37 L 9 36 z M 20 1 L 20 2 L 21 2 L 21 1 z M 31 1 L 31 2 L 32 2 L 32 1 z M 39 14 L 39 15 L 40 15 L 40 14 z M 0 32 L 0 33 L 1 33 L 1 32 z M 11 32 L 11 33 L 12 33 L 12 32 z M 19 36 L 19 37 L 20 37 L 20 36 z M 30 36 L 30 37 L 31 37 L 31 36 z M 42 38 L 42 39 L 43 39 L 43 38 z M 12 6 L 12 7 L 13 7 L 13 6 z M 0 41 L 0 42 L 1 42 L 1 41 z M 31 19 L 31 20 L 32 20 L 32 19 z M 23 15 L 23 16 L 24 16 L 24 15 z M 20 28 L 20 29 L 21 29 L 21 28 z M 39 41 L 39 42 L 40 42 L 40 41 z M 12 24 L 12 25 L 13 25 L 13 24 z M 23 24 L 23 25 L 24 25 L 24 24 z M 20 37 L 20 38 L 21 38 L 21 37 z M 32 2 L 32 3 L 33 3 L 33 2 z M 4 20 L 4 21 L 5 21 L 5 20 z M 31 37 L 31 38 L 32 38 L 32 37 z M 32 11 L 32 12 L 33 12 L 33 11 z M 43 11 L 43 12 L 44 12 L 44 11 z M 4 29 L 4 30 L 5 30 L 5 29 z M 13 7 L 13 8 L 14 8 L 14 7 z M 24 7 L 24 8 L 25 8 L 25 7 z M 35 7 L 35 8 L 36 8 L 36 7 z M 16 3 L 16 4 L 17 4 L 17 3 z M 32 20 L 32 21 L 33 21 L 33 20 z M 1 14 L 1 15 L 2 15 L 2 14 z M 13 16 L 13 17 L 14 17 L 14 16 z M 24 16 L 24 17 L 25 17 L 25 16 z M 16 12 L 16 13 L 17 13 L 17 12 z M 35 16 L 35 17 L 36 17 L 36 16 z M 43 20 L 43 21 L 44 21 L 44 20 z M 1 23 L 1 24 L 2 24 L 2 23 z M 37 44 L 37 45 L 38 45 L 38 44 z M 1 32 L 1 33 L 2 33 L 2 32 z M 16 30 L 16 31 L 17 31 L 17 30 z M 38 27 L 38 28 L 39 28 L 39 27 z M 9 0 L 9 1 L 10 1 L 10 0 z M 26 34 L 26 35 L 27 35 L 27 34 z M 5 11 L 5 12 L 6 12 L 6 11 z M 38 36 L 38 37 L 39 37 L 39 36 z M 15 43 L 15 44 L 16 44 L 16 43 z M 18 39 L 18 40 L 19 40 L 19 39 z M 42 6 L 42 7 L 43 7 L 43 6 z M 27 17 L 27 18 L 28 18 L 28 17 z M 19 13 L 19 14 L 20 14 L 20 13 z M 8 22 L 8 23 L 9 23 L 9 22 z M 42 24 L 42 25 L 43 25 L 43 24 z M 27 35 L 27 36 L 28 36 L 28 35 z M 39 0 L 39 1 L 40 1 L 40 0 z M 11 18 L 11 19 L 12 19 L 12 18 z M 8 31 L 8 32 L 9 32 L 9 31 z M 19 31 L 19 32 L 20 32 L 20 31 z M 30 31 L 30 32 L 31 32 L 31 31 z M 0 27 L 0 28 L 1 28 L 1 27 z M 27 44 L 27 45 L 28 45 L 28 44 z M 8 40 L 8 41 L 9 41 L 9 40 z M 20 5 L 20 6 L 21 6 L 21 5 z M 31 5 L 31 6 L 32 6 L 32 5 z M 39 18 L 39 19 L 40 19 L 40 18 z M 12 1 L 12 2 L 13 2 L 13 1 z M 0 36 L 0 37 L 1 37 L 1 36 z M 11 36 L 11 37 L 12 37 L 12 36 z M 19 40 L 19 41 L 20 41 L 20 40 z M 39 27 L 39 28 L 40 28 L 40 27 z M 12 10 L 12 11 L 13 11 L 13 10 z M 23 10 L 23 11 L 24 11 L 24 10 z M 20 23 L 20 24 L 21 24 L 21 23 z M 4 6 L 4 7 L 5 7 L 5 6 z M 20 32 L 20 33 L 21 33 L 21 32 z M 4 15 L 4 16 L 5 16 L 5 15 z M 31 32 L 31 33 L 32 33 L 32 32 z M 12 28 L 12 29 L 13 29 L 13 28 z M 23 28 L 23 29 L 24 29 L 24 28 z M 32 6 L 32 7 L 33 7 L 33 6 z M 43 6 L 43 7 L 44 7 L 44 6 z M 4 24 L 4 25 L 5 25 L 5 24 z M 1 0 L 1 1 L 2 1 L 2 0 z M 13 2 L 13 3 L 14 3 L 14 2 z M 35 2 L 35 3 L 36 3 L 36 2 z M 12 37 L 12 38 L 13 38 L 13 37 z M 1 9 L 1 10 L 2 10 L 2 9 z M 35 11 L 35 12 L 36 12 L 36 11 z M 16 7 L 16 8 L 17 8 L 17 7 z M 34 43 L 34 44 L 35 44 L 35 43 z M 1 18 L 1 19 L 2 19 L 2 18 z M 38 13 L 38 14 L 39 14 L 39 13 z M 38 22 L 38 23 L 39 23 L 39 22 z M 15 29 L 15 30 L 16 30 L 16 29 z M 38 31 L 38 32 L 39 32 L 39 31 z M 5 6 L 5 7 L 6 7 L 6 6 z M 18 25 L 18 26 L 19 26 L 19 25 z M 38 40 L 38 41 L 39 41 L 39 40 z M 7 34 L 7 35 L 8 35 L 8 34 z M 27 12 L 27 13 L 28 13 L 28 12 z M 8 8 L 8 9 L 9 9 L 9 8 z M 30 8 L 30 9 L 31 9 L 31 8 z M 27 21 L 27 22 L 28 22 L 28 21 z M 0 4 L 0 5 L 1 5 L 1 4 z M 8 17 L 8 18 L 9 18 L 9 17 z M 19 17 L 19 18 L 20 18 L 20 17 z M 27 30 L 27 31 L 28 31 L 28 30 z M 0 13 L 0 14 L 1 14 L 1 13 z M 8 26 L 8 27 L 9 27 L 9 26 z M 42 28 L 42 29 L 43 29 L 43 28 z M 27 39 L 27 40 L 28 40 L 28 39 z M 11 22 L 11 23 L 12 23 L 12 22 z M 20 0 L 20 1 L 21 1 L 21 0 z M 31 0 L 31 1 L 32 1 L 32 0 z M 8 44 L 8 45 L 9 45 L 9 44 z M 31 9 L 31 10 L 32 10 L 32 9 z M 19 44 L 19 45 L 20 45 L 20 44 z M 0 40 L 0 41 L 1 41 L 1 40 z M 12 5 L 12 6 L 13 6 L 13 5 z M 30 44 L 30 45 L 31 45 L 31 44 z M 20 18 L 20 19 L 21 19 L 21 18 z M 31 18 L 31 19 L 32 19 L 32 18 z M 12 14 L 12 15 L 13 15 L 13 14 z M 23 14 L 23 15 L 24 15 L 24 14 z M 24 6 L 24 7 L 25 7 L 25 6 z M 37 25 L 37 26 L 38 26 L 38 25 z M 22 36 L 22 37 L 23 37 L 23 36 z M 34 38 L 34 39 L 35 39 L 35 38 z M 1 13 L 1 14 L 2 14 L 2 13 z M 37 34 L 37 35 L 38 35 L 38 34 z M 3 41 L 3 42 L 4 42 L 4 41 z M 38 8 L 38 9 L 39 9 L 39 8 z M 37 43 L 37 44 L 38 44 L 38 43 z M 15 15 L 15 16 L 16 16 L 16 15 z M 38 17 L 38 18 L 39 18 L 39 17 z M 26 24 L 26 25 L 27 25 L 27 24 z M 7 20 L 7 21 L 8 21 L 8 20 z M 18 20 L 18 21 L 19 21 L 19 20 z M 15 33 L 15 34 L 16 34 L 16 33 z M 26 33 L 26 34 L 27 34 L 27 33 z M 38 35 L 38 36 L 39 36 L 39 35 z M 7 29 L 7 30 L 8 30 L 8 29 z M 18 29 L 18 30 L 19 30 L 19 29 z M 27 7 L 27 8 L 28 8 L 28 7 z M 18 38 L 18 39 L 19 39 L 19 38 z M 8 3 L 8 4 L 9 4 L 9 3 z M 19 3 L 19 4 L 20 4 L 20 3 z M 27 16 L 27 17 L 28 17 L 28 16 z M 8 12 L 8 13 L 9 13 L 9 12 z M 30 12 L 30 13 L 31 13 L 31 12 z M 0 8 L 0 9 L 1 9 L 1 8 z M 8 21 L 8 22 L 9 22 L 9 21 z M 19 21 L 19 22 L 20 22 L 20 21 z M 19 30 L 19 31 L 20 31 L 20 30 z M 39 8 L 39 9 L 40 9 L 40 8 z M 0 26 L 0 27 L 1 27 L 1 26 z M 11 26 L 11 27 L 12 27 L 12 26 z M 20 4 L 20 5 L 21 5 L 21 4 z M 31 4 L 31 5 L 32 5 L 32 4 z M 11 35 L 11 36 L 12 36 L 12 35 z M 23 0 L 23 1 L 24 1 L 24 0 z M 41 36 L 41 37 L 42 37 L 42 36 z M 20 13 L 20 14 L 21 14 L 21 13 z M 31 13 L 31 14 L 32 14 L 32 13 z M 44 32 L 44 33 L 45 33 L 45 32 z M 44 41 L 44 42 L 45 42 L 45 41 z M 23 18 L 23 19 L 24 19 L 24 18 z M 25 37 L 25 38 L 26 38 L 26 37 z M 2 44 L 2 45 L 3 45 L 3 44 z M 22 22 L 22 23 L 23 23 L 23 22 z M 37 20 L 37 21 L 38 21 L 38 20 z M 3 27 L 3 28 L 4 28 L 4 27 z M 37 29 L 37 30 L 38 30 L 38 29 z M 22 40 L 22 41 L 23 41 L 23 40 z M 3 36 L 3 37 L 4 37 L 4 36 z M 38 3 L 38 4 L 39 4 L 39 3 z M 14 36 L 14 37 L 15 37 L 15 36 z M 38 12 L 38 13 L 39 13 L 39 12 z M 18 6 L 18 7 L 19 7 L 19 6 z M 18 15 L 18 16 L 19 16 L 19 15 z M 15 28 L 15 29 L 16 29 L 16 28 z M 7 24 L 7 25 L 8 25 L 8 24 z M 18 24 L 18 25 L 19 25 L 19 24 z M 27 2 L 27 3 L 28 3 L 28 2 z M 18 33 L 18 34 L 19 34 L 19 33 z M 42 0 L 42 1 L 43 1 L 43 0 z M 27 11 L 27 12 L 28 12 L 28 11 z M 18 42 L 18 43 L 19 43 L 19 42 z M 8 7 L 8 8 L 9 8 L 9 7 z M 19 7 L 19 8 L 20 8 L 20 7 z M 42 9 L 42 10 L 43 10 L 43 9 z M 0 3 L 0 4 L 1 4 L 1 3 z M 11 3 L 11 4 L 12 4 L 12 3 z M 8 16 L 8 17 L 9 17 L 9 16 z M 19 16 L 19 17 L 20 17 L 20 16 z M 30 16 L 30 17 L 31 17 L 31 16 z M 0 12 L 0 13 L 1 13 L 1 12 z M 29 39 L 29 40 L 30 40 L 30 39 z M 19 25 L 19 26 L 20 26 L 20 25 z M 30 25 L 30 26 L 31 26 L 31 25 z M 40 39 L 40 40 L 41 40 L 41 39 z M 21 44 L 21 45 L 22 45 L 22 44 z M 41 22 L 41 23 L 42 23 L 42 22 z M 33 27 L 33 28 L 34 28 L 34 27 z M 44 27 L 44 28 L 45 28 L 45 27 z M 12 4 L 12 5 L 13 5 L 13 4 z M 23 4 L 23 5 L 24 5 L 24 4 z M 4 0 L 4 1 L 5 1 L 5 0 z M 25 32 L 25 33 L 26 33 L 26 32 z M 4 9 L 4 10 L 5 10 L 5 9 z M 34 10 L 34 11 L 35 11 L 35 10 z M 10 43 L 10 44 L 11 44 L 11 43 z M 25 41 L 25 42 L 26 42 L 26 41 z M 34 19 L 34 20 L 35 20 L 35 19 z M 3 13 L 3 14 L 4 14 L 4 13 z M 14 22 L 14 23 L 15 23 L 15 22 z M 37 24 L 37 25 L 38 25 L 38 24 z M 22 35 L 22 36 L 23 36 L 23 35 z M 22 44 L 22 45 L 23 45 L 23 44 z M 3 40 L 3 41 L 4 41 L 4 40 z M 15 5 L 15 6 L 16 6 L 16 5 z M 26 5 L 26 6 L 27 6 L 27 5 z M 14 40 L 14 41 L 15 41 L 15 40 z M 18 1 L 18 2 L 19 2 L 19 1 z M 38 16 L 38 17 L 39 17 L 39 16 z M 18 10 L 18 11 L 19 11 L 19 10 z M 15 23 L 15 24 L 16 24 L 16 23 z M 26 23 L 26 24 L 27 24 L 27 23 z M 7 19 L 7 20 L 8 20 L 8 19 z M 15 32 L 15 33 L 16 33 L 16 32 z M 26 32 L 26 33 L 27 33 L 27 32 z M 18 28 L 18 29 L 19 29 L 19 28 z M 18 37 L 18 38 L 19 38 L 19 37 z M 30 2 L 30 3 L 31 3 L 31 2 z M 42 4 L 42 5 L 43 5 L 43 4 z M 29 34 L 29 35 L 30 35 L 30 34 z M 40 34 L 40 35 L 41 35 L 41 34 z M 8 11 L 8 12 L 9 12 L 9 11 z M 6 41 L 6 42 L 7 42 L 7 41 z M 41 8 L 41 9 L 42 9 L 42 8 z M 29 43 L 29 44 L 30 44 L 30 43 z M 40 43 L 40 44 L 41 44 L 41 43 z M 0 16 L 0 17 L 1 17 L 1 16 z M 11 16 L 11 17 L 12 17 L 12 16 z M 33 13 L 33 14 L 34 14 L 34 13 z M 44 13 L 44 14 L 45 14 L 45 13 z M 41 26 L 41 27 L 42 27 L 42 26 z M 33 22 L 33 23 L 34 23 L 34 22 z M 44 22 L 44 23 L 45 23 L 45 22 z M 33 31 L 33 32 L 34 32 L 34 31 z M 41 44 L 41 45 L 42 45 L 42 44 z M 44 40 L 44 41 L 45 41 L 45 40 z M 22 3 L 22 4 L 23 4 L 23 3 z M 25 36 L 25 37 L 26 37 L 26 36 z M 14 8 L 14 9 L 15 9 L 15 8 z M 37 10 L 37 11 L 38 11 L 38 10 z M 22 30 L 22 31 L 23 31 L 23 30 z M 3 26 L 3 27 L 4 27 L 4 26 z M 37 28 L 37 29 L 38 29 L 38 28 z M 3 35 L 3 36 L 4 36 L 4 35 z M 38 2 L 38 3 L 39 3 L 39 2 z M 3 44 L 3 45 L 4 45 L 4 44 z M 15 9 L 15 10 L 16 10 L 16 9 z M 26 9 L 26 10 L 27 10 L 27 9 z M 38 11 L 38 12 L 39 12 L 39 11 z M 36 41 L 36 42 L 37 42 L 37 41 z M 26 18 L 26 19 L 27 19 L 27 18 z M 7 14 L 7 15 L 8 15 L 8 14 z M 9 42 L 9 43 L 10 43 L 10 42 z M 29 20 L 29 21 L 30 21 L 30 20 z M 40 20 L 40 21 L 41 21 L 41 20 z M 29 29 L 29 30 L 30 30 L 30 29 z M 30 6 L 30 7 L 31 7 L 31 6 z M 0 2 L 0 3 L 1 3 L 1 2 z M 11 2 L 11 3 L 12 3 L 12 2 z M 41 3 L 41 4 L 42 4 L 42 3 z M 21 34 L 21 35 L 22 35 L 22 34 z M 6 36 L 6 37 L 7 37 L 7 36 z M 29 38 L 29 39 L 30 39 L 30 38 z M 40 38 L 40 39 L 41 39 L 41 38 z M 21 43 L 21 44 L 22 44 L 22 43 z M 44 8 L 44 9 L 45 9 L 45 8 z M 10 15 L 10 16 L 11 16 L 11 15 z M 33 17 L 33 18 L 34 18 L 34 17 z M 41 30 L 41 31 L 42 31 L 42 30 z M 33 26 L 33 27 L 34 27 L 34 26 z M 41 39 L 41 40 L 42 40 L 42 39 z M 10 33 L 10 34 L 11 34 L 11 33 z M 33 35 L 33 36 L 34 36 L 34 35 z M 44 35 L 44 36 L 45 36 L 45 35 z M 2 29 L 2 30 L 3 30 L 3 29 z M 10 42 L 10 43 L 11 43 L 11 42 z M 44 44 L 44 45 L 45 45 L 45 44 z M 2 38 L 2 39 L 3 39 L 3 38 z M 3 3 L 3 4 L 4 4 L 4 3 z M 14 3 L 14 4 L 15 4 L 15 3 z M 34 18 L 34 19 L 35 19 L 35 18 z M 3 12 L 3 13 L 4 13 L 4 12 z M 37 14 L 37 15 L 38 15 L 38 14 z M 3 30 L 3 31 L 4 31 L 4 30 z M 36 27 L 36 28 L 37 28 L 37 27 z M 26 4 L 26 5 L 27 5 L 27 4 z M 18 0 L 18 1 L 19 1 L 19 0 z M 36 36 L 36 37 L 37 37 L 37 36 z M 26 13 L 26 14 L 27 14 L 27 13 z M 17 32 L 17 33 L 18 33 L 18 32 z M 28 32 L 28 33 L 29 33 L 29 32 z M 7 9 L 7 10 L 8 10 L 8 9 z M 18 9 L 18 10 L 19 10 L 19 9 z M 17 41 L 17 42 L 18 42 L 18 41 z M 18 18 L 18 19 L 19 19 L 19 18 z M 29 15 L 29 16 L 30 16 L 30 15 z M 6 22 L 6 23 L 7 23 L 7 22 z M 40 24 L 40 25 L 41 25 L 41 24 z M 21 20 L 21 21 L 22 21 L 22 20 z M 21 29 L 21 30 L 22 30 L 22 29 z M 6 40 L 6 41 L 7 41 L 7 40 z M 40 42 L 40 43 L 41 43 L 41 42 z M 44 3 L 44 4 L 45 4 L 45 3 z M 41 16 L 41 17 L 42 17 L 42 16 z M 44 12 L 44 13 L 45 13 L 45 12 z M 2 6 L 2 7 L 3 7 L 3 6 z M 25 8 L 25 9 L 26 9 L 26 8 z M 10 19 L 10 20 L 11 20 L 11 19 z M 33 21 L 33 22 L 34 22 L 34 21 z M 2 15 L 2 16 L 3 16 L 3 15 z M 25 17 L 25 18 L 26 18 L 26 17 z M 10 28 L 10 29 L 11 29 L 11 28 z M 2 24 L 2 25 L 3 25 L 3 24 z M 10 37 L 10 38 L 11 38 L 11 37 z M 22 2 L 22 3 L 23 3 L 23 2 z M 34 4 L 34 5 L 35 5 L 35 4 z M 2 33 L 2 34 L 3 34 L 3 33 z M 22 11 L 22 12 L 23 12 L 23 11 z M 2 42 L 2 43 L 3 43 L 3 42 z M 37 9 L 37 10 L 38 10 L 38 9 z M 32 43 L 32 44 L 33 44 L 33 43 z M 22 20 L 22 21 L 23 21 L 23 20 z M 13 39 L 13 40 L 14 40 L 14 39 z M 24 39 L 24 40 L 25 40 L 25 39 z M 35 39 L 35 40 L 36 40 L 36 39 z M 16 44 L 16 45 L 17 45 L 17 44 z M 36 22 L 36 23 L 37 23 L 37 22 z M 17 18 L 17 19 L 18 19 L 18 18 z M 36 31 L 36 32 L 37 32 L 37 31 z M 17 27 L 17 28 L 18 28 L 18 27 z M 28 27 L 28 28 L 29 28 L 29 27 z M 36 40 L 36 41 L 37 41 L 37 40 z M 28 36 L 28 37 L 29 37 L 29 36 z M 6 8 L 6 9 L 7 9 L 7 8 z M 29 10 L 29 11 L 30 11 L 30 10 z M 9 41 L 9 42 L 10 42 L 10 41 z M 29 19 L 29 20 L 30 20 L 30 19 z M 6 26 L 6 27 L 7 27 L 7 26 z M 21 24 L 21 25 L 22 25 L 22 24 z M 40 37 L 40 38 L 41 38 L 41 37 z M 41 2 L 41 3 L 42 3 L 42 2 z M 21 33 L 21 34 L 22 34 L 22 33 z M 6 44 L 6 45 L 7 45 L 7 44 z M 33 7 L 33 8 L 34 8 L 34 7 z M 10 14 L 10 15 L 11 15 L 11 14 z M 2 10 L 2 11 L 3 11 L 3 10 z M 25 12 L 25 13 L 26 13 L 26 12 z M 10 23 L 10 24 L 11 24 L 11 23 z M 44 25 L 44 26 L 45 26 L 45 25 z M 2 19 L 2 20 L 3 20 L 3 19 z M 25 21 L 25 22 L 26 22 L 26 21 z M 2 28 L 2 29 L 3 29 L 3 28 z M 32 29 L 32 30 L 33 30 L 33 29 z M 43 29 L 43 30 L 44 30 L 44 29 z M 22 6 L 22 7 L 23 7 L 23 6 z M 3 2 L 3 3 L 4 3 L 4 2 z M 14 2 L 14 3 L 15 3 L 15 2 z M 35 34 L 35 35 L 36 35 L 36 34 z M 3 11 L 3 12 L 4 12 L 4 11 z M 14 11 L 14 12 L 15 12 L 15 11 z M 13 43 L 13 44 L 14 44 L 14 43 z M 24 43 L 24 44 L 25 44 L 25 43 z M 35 43 L 35 44 L 36 44 L 36 43 z M 36 17 L 36 18 L 37 18 L 37 17 z M 36 26 L 36 27 L 37 27 L 37 26 z M 5 20 L 5 21 L 6 21 L 6 20 z M 17 22 L 17 23 L 18 23 L 18 22 z M 28 22 L 28 23 L 29 23 L 29 22 z M 9 18 L 9 19 L 10 19 L 10 18 z M 5 29 L 5 30 L 6 30 L 6 29 z M 17 31 L 17 32 L 18 32 L 18 31 z M 28 31 L 28 32 L 29 32 L 29 31 z M 5 38 L 5 39 L 6 39 L 6 38 z M 6 3 L 6 4 L 7 4 L 7 3 z M 29 5 L 29 6 L 30 6 L 30 5 z M 17 40 L 17 41 L 18 41 L 18 40 z M 21 1 L 21 2 L 22 2 L 22 1 z M 6 12 L 6 13 L 7 13 L 7 12 z M 29 14 L 29 15 L 30 15 L 30 14 z M 21 10 L 21 11 L 22 11 L 22 10 z M 29 23 L 29 24 L 30 24 L 30 23 z M 40 23 L 40 24 L 41 24 L 41 23 z M 21 19 L 21 20 L 22 20 L 22 19 z M 6 30 L 6 31 L 7 31 L 7 30 z M 40 32 L 40 33 L 41 33 L 41 32 z M 6 39 L 6 40 L 7 40 L 7 39 z M 41 6 L 41 7 L 42 7 L 42 6 z M 33 2 L 33 3 L 34 3 L 34 2 z M 44 2 L 44 3 L 45 3 L 45 2 z M 39 36 L 39 37 L 40 37 L 40 36 z M 33 11 L 33 12 L 34 12 L 34 11 z M 44 11 L 44 12 L 45 12 L 45 11 z M 25 7 L 25 8 L 26 8 L 26 7 z M 31 41 L 31 42 L 32 42 L 32 41 z M 10 18 L 10 19 L 11 19 L 11 18 z M 32 24 L 32 25 L 33 25 L 33 24 z M 43 24 L 43 25 L 44 25 L 44 24 z M 22 1 L 22 2 L 23 2 L 23 1 z M 13 20 L 13 21 L 14 21 L 14 20 z M 24 20 L 24 21 L 25 21 L 25 20 z M 32 33 L 32 34 L 33 34 L 33 33 z M 43 33 L 43 34 L 44 34 L 44 33 z M 4 42 L 4 43 L 5 43 L 5 42 z M 24 29 L 24 30 L 25 30 L 25 29 z M 14 6 L 14 7 L 15 7 L 15 6 z M 16 25 L 16 26 L 17 26 L 17 25 z M 32 42 L 32 43 L 33 43 L 33 42 z M 24 38 L 24 39 L 25 39 L 25 38 z M 36 3 L 36 4 L 37 4 L 37 3 z M 16 43 L 16 44 L 17 44 L 17 43 z M 17 8 L 17 9 L 18 9 L 18 8 z M 28 8 L 28 9 L 29 9 L 29 8 z M 36 21 L 36 22 L 37 22 L 37 21 z M 17 17 L 17 18 L 18 18 L 18 17 z M 36 30 L 36 31 L 37 31 L 37 30 z M 9 13 L 9 14 L 10 14 L 10 13 z M 5 24 L 5 25 L 6 25 L 6 24 z M 17 26 L 17 27 L 18 27 L 18 26 z M 28 26 L 28 27 L 29 27 L 29 26 z M 9 22 L 9 23 L 10 23 L 10 22 z M 36 39 L 36 40 L 37 40 L 37 39 z M 28 35 L 28 36 L 29 36 L 29 35 z M 40 0 L 40 1 L 41 1 L 41 0 z M 9 31 L 9 32 L 10 32 L 10 31 z M 29 9 L 29 10 L 30 10 L 30 9 z M 40 9 L 40 10 L 41 10 L 41 9 z M 9 40 L 9 41 L 10 41 L 10 40 z M 6 16 L 6 17 L 7 17 L 7 16 z M 29 18 L 29 19 L 30 19 L 30 18 z M 40 18 L 40 19 L 41 19 L 41 18 z M 21 14 L 21 15 L 22 15 L 22 14 z M 42 37 L 42 38 L 43 38 L 43 37 z M 31 27 L 31 28 L 32 28 L 32 27 z M 10 4 L 10 5 L 11 5 L 11 4 z M 44 6 L 44 7 L 45 7 L 45 6 z M 39 40 L 39 41 L 40 41 L 40 40 z M 2 0 L 2 1 L 3 1 L 3 0 z M 20 36 L 20 37 L 21 37 L 21 36 z M 10 13 L 10 14 L 11 14 L 11 13 z M 2 9 L 2 10 L 3 10 L 3 9 z M 32 10 L 32 11 L 33 11 L 33 10 z M 43 10 L 43 11 L 44 11 L 44 10 z M 12 41 L 12 42 L 13 42 L 13 41 z M 2 18 L 2 19 L 3 19 L 3 18 z M 32 19 L 32 20 L 33 20 L 33 19 z M 24 15 L 24 16 L 25 16 L 25 15 z M 35 15 L 35 16 L 36 16 L 36 15 z M 32 28 L 32 29 L 33 29 L 33 28 z M 24 24 L 24 25 L 25 25 L 25 24 z M 43 37 L 43 38 L 44 38 L 44 37 z M 16 20 L 16 21 L 17 21 L 17 20 z M 1 31 L 1 32 L 2 32 L 2 31 z M 24 33 L 24 34 L 25 34 L 25 33 z M 13 42 L 13 43 L 14 43 L 14 42 z M 36 7 L 36 8 L 37 8 L 37 7 z M 24 42 L 24 43 L 25 43 L 25 42 z M 28 3 L 28 4 L 29 4 L 29 3 z M 5 10 L 5 11 L 6 11 L 6 10 z M 17 12 L 17 13 L 18 13 L 18 12 z M 36 25 L 36 26 L 37 26 L 37 25 z M 9 8 L 9 9 L 10 9 L 10 8 z M 17 21 L 17 22 L 18 22 L 18 21 z M 9 26 L 9 27 L 10 27 L 10 26 z M 6 2 L 6 3 L 7 3 L 7 2 z M 29 4 L 29 5 L 30 5 L 30 4 z M 40 4 L 40 5 L 41 5 L 41 4 z M 27 34 L 27 35 L 28 35 L 28 34 z M 9 35 L 9 36 L 10 36 L 10 35 z M 27 43 L 27 44 L 28 44 L 28 43 z M 6 20 L 6 21 L 7 21 L 7 20 z M 19 39 L 19 40 L 20 40 L 20 39 z M 42 41 L 42 42 L 43 42 L 43 41 z M 39 26 L 39 27 L 40 27 L 40 26 z M 0 44 L 0 45 L 1 45 L 1 44 z M 11 44 L 11 45 L 12 45 L 12 44 z M 20 22 L 20 23 L 21 23 L 21 22 z M 39 35 L 39 36 L 40 36 L 40 35 z M 12 18 L 12 19 L 13 19 L 13 18 z M 20 31 L 20 32 L 21 32 L 21 31 z M 23 27 L 23 28 L 24 28 L 24 27 z M 2 4 L 2 5 L 3 5 L 3 4 z M 4 23 L 4 24 L 5 24 L 5 23 z M 20 40 L 20 41 L 21 41 L 21 40 z M 23 36 L 23 37 L 24 37 L 24 36 z M 13 1 L 13 2 L 14 2 L 14 1 z M 24 1 L 24 2 L 25 2 L 25 1 z M 35 1 L 35 2 L 36 2 L 36 1 z M 43 14 L 43 15 L 44 15 L 44 14 z M 13 10 L 13 11 L 14 11 L 14 10 z M 35 10 L 35 11 L 36 11 L 36 10 z M 32 23 L 32 24 L 33 24 L 33 23 z M 16 6 L 16 7 L 17 7 L 17 6 z M 4 41 L 4 42 L 5 42 L 5 41 z M 24 19 L 24 20 L 25 20 L 25 19 z M 35 19 L 35 20 L 36 20 L 36 19 z M 32 32 L 32 33 L 33 33 L 33 32 z M 43 32 L 43 33 L 44 33 L 44 32 z M 1 35 L 1 36 L 2 36 L 2 35 z M 24 37 L 24 38 L 25 38 L 25 37 z M 16 33 L 16 34 L 17 34 L 17 33 z M 1 44 L 1 45 L 2 45 L 2 44 z M 17 7 L 17 8 L 18 8 L 18 7 z M 28 7 L 28 8 L 29 8 L 29 7 z M 36 20 L 36 21 L 37 21 L 37 20 z M 9 3 L 9 4 L 10 4 L 10 3 z M 5 14 L 5 15 L 6 15 L 6 14 z M 9 21 L 9 22 L 10 22 L 10 21 z M 5 32 L 5 33 L 6 33 L 6 32 z M 6 6 L 6 7 L 7 7 L 7 6 z M 21 4 L 21 5 L 22 5 L 22 4 z M 27 38 L 27 39 L 28 39 L 28 38 z M 8 34 L 8 35 L 9 35 L 9 34 z M 30 34 L 30 35 L 31 35 L 31 34 z M 42 36 L 42 37 L 43 37 L 43 36 z M 39 12 L 39 13 L 40 13 L 40 12 z M 20 8 L 20 9 L 21 9 L 21 8 z M 4 38 L 4 39 L 5 39 L 5 38 z M 0 39 L 0 40 L 1 40 L 1 39 z M 11 39 L 11 40 L 12 40 L 12 39 z M 23 13 L 23 14 L 24 14 L 24 13 z M 31 35 L 31 36 L 32 36 L 32 35 z M 43 0 L 43 1 L 44 1 L 44 0 z M 4 18 L 4 19 L 5 19 L 5 18 z M 12 31 L 12 32 L 13 32 L 13 31 z M 23 31 L 23 32 L 24 32 L 24 31 z M 32 9 L 32 10 L 33 10 L 33 9 z M 12 40 L 12 41 L 13 41 L 13 40 z M 13 5 L 13 6 L 14 6 L 14 5 z M 24 5 L 24 6 L 25 6 L 25 5 z M 32 18 L 32 19 L 33 19 L 33 18 z M 43 18 L 43 19 L 44 19 L 44 18 z M 4 36 L 4 37 L 5 37 L 5 36 z M 13 14 L 13 15 L 14 15 L 14 14 z M 23 40 L 23 41 L 24 41 L 24 40 z M 24 23 L 24 24 L 25 24 L 25 23 z M 35 23 L 35 24 L 36 24 L 36 23 z M 1 30 L 1 31 L 2 31 L 2 30 z M 36 6 L 36 7 L 37 7 L 37 6 z M 38 25 L 38 26 L 39 26 L 39 25 z M 5 0 L 5 1 L 6 1 L 6 0 z M 17 2 L 17 3 L 18 3 L 18 2 z M 23 42 L 23 43 L 24 43 L 24 42 z M 17 11 L 17 12 L 18 12 L 18 11 z M 9 7 L 9 8 L 10 8 L 10 7 z M 5 18 L 5 19 L 6 19 L 6 18 z M 9 16 L 9 17 L 10 17 L 10 16 z M 6 1 L 6 2 L 7 2 L 7 1 z M 8 20 L 8 21 L 9 21 L 9 20 z M 19 20 L 19 21 L 20 21 L 20 20 z M 30 20 L 30 21 L 31 21 L 31 20 z M 27 33 L 27 34 L 28 34 L 28 33 z M 19 29 L 19 30 L 20 30 L 20 29 z M 30 29 L 30 30 L 31 30 L 31 29 z M 11 25 L 11 26 L 12 26 L 12 25 z M 8 38 L 8 39 L 9 39 L 9 38 z M 31 3 L 31 4 L 32 4 L 32 3 z M 42 40 L 42 41 L 43 41 L 43 40 z M 39 16 L 39 17 L 40 17 L 40 16 z M 20 12 L 20 13 L 21 13 L 21 12 z M 39 25 L 39 26 L 40 26 L 40 25 z M 12 8 L 12 9 L 13 9 L 13 8 z M 23 8 L 23 9 L 24 9 L 24 8 z M 20 21 L 20 22 L 21 22 L 21 21 z M 4 4 L 4 5 L 5 5 L 5 4 z M 31 21 L 31 22 L 32 22 L 32 21 z M 12 17 L 12 18 L 13 18 L 13 17 z M 23 17 L 23 18 L 24 18 L 24 17 z M 39 34 L 39 35 L 40 35 L 40 34 z M 0 43 L 0 44 L 1 44 L 1 43 z M 31 39 L 31 40 L 32 40 L 32 39 z M 4 22 L 4 23 L 5 23 L 5 22 z M 12 35 L 12 36 L 13 36 L 13 35 z M 24 0 L 24 1 L 25 1 L 25 0 z M 32 13 L 32 14 L 33 14 L 33 13 z M 24 9 L 24 10 L 25 10 L 25 9 z M 35 9 L 35 10 L 36 10 L 36 9 z M 4 40 L 4 41 L 5 41 L 5 40 z M 16 5 L 16 6 L 17 6 L 17 5 z M 1 16 L 1 17 L 2 17 L 2 16 z M 13 18 L 13 19 L 14 19 L 14 18 z M 24 18 L 24 19 L 25 19 L 25 18 z M 35 18 L 35 19 L 36 19 L 36 18 z M 1 25 L 1 26 L 2 26 L 2 25 z M 16 23 L 16 24 L 17 24 L 17 23 z M 38 20 L 38 21 L 39 21 L 39 20 z M 15 27 L 15 28 L 16 28 L 16 27 z M 38 29 L 38 30 L 39 30 L 39 29 z M 9 2 L 9 3 L 10 3 L 10 2 z M 38 38 L 38 39 L 39 39 L 39 38 z M 7 32 L 7 33 L 8 33 L 8 32 z M 18 41 L 18 42 L 19 42 L 19 41 z M 8 6 L 8 7 L 9 7 L 9 6 z M 27 19 L 27 20 L 28 20 L 28 19 z M 8 15 L 8 16 L 9 16 L 9 15 z M 19 15 L 19 16 L 20 16 L 20 15 z M 42 17 L 42 18 L 43 18 L 43 17 z M 11 11 L 11 12 L 12 12 L 12 11 z M 27 28 L 27 29 L 28 29 L 28 28 z M 8 24 L 8 25 L 9 25 L 9 24 z M 30 24 L 30 25 L 31 25 L 31 24 z M 27 37 L 27 38 L 28 38 L 28 37 z M 0 20 L 0 21 L 1 21 L 1 20 z M 11 20 L 11 21 L 12 21 L 12 20 z M 30 33 L 30 34 L 31 34 L 31 33 z M 0 29 L 0 30 L 1 30 L 1 29 z M 20 7 L 20 8 L 21 8 L 21 7 z M 31 7 L 31 8 L 32 8 L 32 7 z M 39 20 L 39 21 L 40 21 L 40 20 z M 12 3 L 12 4 L 13 4 L 13 3 z M 23 3 L 23 4 L 24 4 L 24 3 z M 20 16 L 20 17 L 21 17 L 21 16 z M 31 16 L 31 17 L 32 17 L 32 16 z M 0 38 L 0 39 L 1 39 L 1 38 z M 31 25 L 31 26 L 32 26 L 32 25 z M 4 8 L 4 9 L 5 9 L 5 8 z M 12 21 L 12 22 L 13 22 L 13 21 z M 23 30 L 23 31 L 24 31 L 24 30 z M 13 4 L 13 5 L 14 5 L 14 4 z M 24 4 L 24 5 L 25 5 L 25 4 z M 35 4 L 35 5 L 36 5 L 36 4 z M 16 0 L 16 1 L 17 1 L 17 0 z M 22 34 L 22 35 L 23 35 L 23 34 z M 35 13 L 35 14 L 36 14 L 36 13 z M 37 32 L 37 33 L 38 33 L 38 32 z M 4 35 L 4 36 L 5 36 L 5 35 z M 16 9 L 16 10 L 17 10 L 17 9 z M 1 20 L 1 21 L 2 21 L 2 20 z M 14 39 L 14 40 L 15 40 L 15 39 z M 38 6 L 38 7 L 39 7 L 39 6 z M 37 41 L 37 42 L 38 42 L 38 41 z M 38 15 L 38 16 L 39 16 L 39 15 z M 26 22 L 26 23 L 27 23 L 27 22 z M 38 24 L 38 25 L 39 25 L 39 24 z M 15 31 L 15 32 L 16 32 L 16 31 z M 26 31 L 26 32 L 27 32 L 27 31 z M 38 33 L 38 34 L 39 34 L 39 33 z M 18 27 L 18 28 L 19 28 L 19 27 z M 15 40 L 15 41 L 16 41 L 16 40 z M 18 36 L 18 37 L 19 37 L 19 36 z M 19 1 L 19 2 L 20 2 L 20 1 z M 42 3 L 42 4 L 43 4 L 43 3 z M 27 14 L 27 15 L 28 15 L 28 14 z M 19 10 L 19 11 L 20 11 L 20 10 z M 30 10 L 30 11 L 31 11 L 31 10 z M 27 23 L 27 24 L 28 24 L 28 23 z M 0 6 L 0 7 L 1 7 L 1 6 z M 19 19 L 19 20 L 20 20 L 20 19 z M 42 21 L 42 22 L 43 22 L 43 21 z M 0 15 L 0 16 L 1 16 L 1 15 z M 8 28 L 8 29 L 9 29 L 9 28 z M 30 28 L 30 29 L 31 29 L 31 28 z M 39 6 L 39 7 L 40 7 L 40 6 z M 0 24 L 0 25 L 1 25 L 1 24 z M 11 24 L 11 25 L 12 25 L 12 24 z M 31 2 L 31 3 L 32 3 L 32 2 z M 20 2 L 20 3 L 21 3 L 21 2 z M 39 15 L 39 16 L 40 16 L 40 15 z M 0 33 L 0 34 L 1 34 L 1 33 z M 11 33 L 11 34 L 12 34 L 12 33 z M 41 34 L 41 35 L 42 35 L 42 34 z M 8 37 L 8 38 L 9 38 L 9 37 z M 19 37 L 19 38 L 20 38 L 20 37 z M 0 42 L 0 43 L 1 43 L 1 42 z M 41 43 L 41 44 L 42 44 L 42 43 z M 4 3 L 4 4 L 5 4 L 5 3 z M 33 39 L 33 40 L 34 40 L 34 39 z M 44 39 L 44 40 L 45 40 L 45 39 z M 4 21 L 4 22 L 5 22 L 5 21 z M 37 18 L 37 19 L 38 19 L 38 18 z M 34 31 L 34 32 L 35 32 L 35 31 z M 1 6 L 1 7 L 2 7 L 2 6 z M 22 38 L 22 39 L 23 39 L 23 38 z M 34 40 L 34 41 L 35 41 L 35 40 z M 37 36 L 37 37 L 38 37 L 38 36 z M 38 1 L 38 2 L 39 2 L 39 1 z M 14 43 L 14 44 L 15 44 L 15 43 z M 15 8 L 15 9 L 16 9 L 16 8 z M 26 8 L 26 9 L 27 9 L 27 8 z M 38 10 L 38 11 L 39 11 L 39 10 z M 38 28 L 38 29 L 39 29 L 39 28 z M 15 35 L 15 36 L 16 36 L 16 35 z M 27 0 L 27 1 L 28 1 L 28 0 z M 26 35 L 26 36 L 27 36 L 27 35 z M 18 31 L 18 32 L 19 32 L 19 31 z M 27 9 L 27 10 L 28 10 L 28 9 z M 18 40 L 18 41 L 19 41 L 19 40 z M 8 5 L 8 6 L 9 6 L 9 5 z M 19 5 L 19 6 L 20 6 L 20 5 z M 30 5 L 30 6 L 31 6 L 31 5 z M 0 1 L 0 2 L 1 2 L 1 1 z M 11 1 L 11 2 L 12 2 L 12 1 z M 19 14 L 19 15 L 20 15 L 20 14 z M 30 14 L 30 15 L 31 15 L 31 14 z M 42 16 L 42 17 L 43 17 L 43 16 z M 27 18 L 27 19 L 28 19 L 28 18 z M 8 23 L 8 24 L 9 24 L 9 23 z M 30 23 L 30 24 L 31 24 L 31 23 z M 0 19 L 0 20 L 1 20 L 1 19 z M 0 28 L 0 29 L 1 29 L 1 28 z M 20 6 L 20 7 L 21 7 L 21 6 z M 23 2 L 23 3 L 24 3 L 24 2 z M 33 34 L 33 35 L 34 35 L 34 34 z M 12 11 L 12 12 L 13 12 L 13 11 z M 23 11 L 23 12 L 24 12 L 24 11 z M 25 30 L 25 31 L 26 31 L 26 30 z M 10 41 L 10 42 L 11 42 L 11 41 z M 33 43 L 33 44 L 34 44 L 34 43 z M 4 16 L 4 17 L 5 17 L 5 16 z M 22 24 L 22 25 L 23 25 L 23 24 z M 34 26 L 34 27 L 35 27 L 35 26 z M 3 20 L 3 21 L 4 21 L 4 20 z M 14 20 L 14 21 L 15 21 L 15 20 z M 22 33 L 22 34 L 23 34 L 23 33 z M 3 29 L 3 30 L 4 30 L 4 29 z M 14 29 L 14 30 L 15 30 L 15 29 z M 37 31 L 37 32 L 38 32 L 38 31 z M 22 42 L 22 43 L 23 43 L 23 42 z M 3 38 L 3 39 L 4 39 L 4 38 z M 15 3 L 15 4 L 16 4 L 16 3 z M 38 5 L 38 6 L 39 6 L 39 5 z M 14 38 L 14 39 L 15 39 L 15 38 z M 37 40 L 37 41 L 38 41 L 38 40 z M 26 12 L 26 13 L 27 13 L 27 12 z M 7 8 L 7 9 L 8 9 L 8 8 z" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" transform="translate(237.40157,61) scale(3.606299111111111)" /><g id="swiss-cross" transform="translate(305.4890105263158,129.0874405263158) scale(1.305428947368421)"><polygon fill="black" points="18.3,0.7 1.6,0.7 0.7,0.7 0.7,1.6 0.7,18.3 0.7,19.1 1.6,19.1 18.3,19.1 19.1,19.1 19.1,18.3 19.1,1.6 19.1,0.7" /><rect fill="white" height="11" width="3.3" x="8.3" y="4" /><rect fill="white" height="3.3" width="11" x="4.4" y="7.9" /><polygon fill="none" points="0.7,1.6 0.7,18.3 0.7,19.1 1.6,19.1 18.3,19.1 19.1,19.1 19.1,18.3 19.1,1.6 19.1,0.7 18.3,0.7 1.6,0.7 0.7,0.7" stroke="white" stroke-width="1.4357" /></g><text font-family="Helvetica" font-size="9" font-weight="bold" x="237.40157" y="258.66141">Currency</text><text font-family="Helvetica" font-size="9" font-weight="bold" x="279.92125" y="258.66141">Amount</text><text font-family="Helvetica" font-size="10" x="237.40157" y="276.37795">CHF</text><text font-family="Helvetica" font-size="10" x="279.92125" y="276.37795">22.45</text><text font-family="Helvetica" font-size="9" font-weight="bold" x="418.11023" y="38.97638">Account / Payable to</text><text font-family="Helvetica" font-size="10" x="418.11023" y="51.37795">CH18 8914 4593 2289 2552 6</text><text font-family="Helvetica" font-size="10" x="418.11023" y="63.77953">...</text><text font-family="Helvetica" font-size="10" x="418.11023" y="76.1811">CH-8001 Zurich</text><text font-family="Helvetica" font-size="9" font-weight="bold" x="418.11023" y="99.2126">Payable by (name/address)</text><g><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="418.11023" x2="418.11023" y1="111.61417" y2="118.70078" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="418.11023" x2="428.74015" y1="111.61417" y2="111.61417" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="418.11023" x2="418.11023" y1="200.19684" y2="193.11023" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="418.11023" x2="428.74015" y1="200.19684" y2="200.19684" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="637.79526" x2="648.42518" y1="111.61417" y2="111.61417" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="648.42518" x2="648.42518" y1="111.61417" y2="118.70078" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="637.79526" x2="648.42518" y1="200.19684" y2="200.19684" /><line stroke="black" stroke-linecap="square" stroke-width="0.26mm" x1="648.42518" x2="648.42518" y1="200.19684" y2="193.11023" /></g></g></svg>

Environment

  • Windows 10
  • python 3.10
  • fpdf2 version: 2.5.7

Done so far

I have wrapped the throwing statements in a try except block, then another error pops up:

File "C:\Users\***\AppData\Local\Programs\Python\Python310\lib\site-packages\fpdf\svg.py", line 196, in convert_stroke_width
    val = float(incoming)
ValueError: could not convert string to float: '0.26mm'

which should be very much allowed

@Lucas-C
Copy link
Member

Lucas-C commented Sep 24, 2022

Thank you for reporting this @darioackermann!
You provided a SVG file for the bug report so that's perfect.
I won't have time to get a look at this before next week, but you can submit a PR to fix this if you want.

@Lucas-C
Copy link
Member

Lucas-C commented Sep 24, 2022

@all-contributors please add @darioackermann for bug

@allcontributors
Copy link

@Lucas-C

I've put up a pull request to add @darioackermann! 🎉

@darioackermann
Copy link
Author

I'm happy to help out. Will try to see if I can provide any substantial PR

@darioackermann darioackermann changed the title ValueError: could not convert string to float: '100%' Parsing Errors in ShapeBuilder.rect and convert_stroke_width Sep 25, 2022
@darioackermann darioackermann changed the title Parsing Errors in ShapeBuilder.rect and convert_stroke_width Parsing Error in ShapeBuilder.rect Sep 25, 2022
@darioackermann darioackermann changed the title Parsing Error in ShapeBuilder.rect Parsing Error in ShapeBuilder.rect / convert_stroke_width Sep 25, 2022
@darioackermann
Copy link
Author

I see that the second part of the problem has been fixed here: 1783074 (#526 #542)

@darioackermann
Copy link
Author

Wait: This library currently does not draw any text elements?

@darioackermann
Copy link
Author

darioackermann commented Sep 25, 2022

Should have read the docs. It's quite clear there. That's a deal-breaker for us, sadly :(

What I have found so far is that when parsing in rect, resolve_length should be used. For percentage values, it should be able to figure out the parent's width / height (traveling up the XML tree as much as needed)

Edit: I see that you do not currently (want to?) support relative values. I'll therefore only add a PR to use resolve_length

@Lucas-C
Copy link
Member

Lucas-C commented Sep 25, 2022

I see that the second part of the problem has been fixed here: 1783074 (#526 #542)

You are right. This fix hasn't been released yet: https://github.com/PyFPDF/fpdf2/blob/master/CHANGELOG.md#fixed
Have you tested if you still get the bug when using the latest code version from this repo?

pip install git+https://github.com/PyFPDF/fpdf2.git@master

Wait: This library currently does not draw any text elements?

Not currently, but we are planning to implement them: #537
PRs are welcome 😊

Edit: I see that you do not currently (want to?) support relative values. I'll therefore only add a PR to use resolve_length

What kind of "relative values" are you refering to exactly?
I think we want to support all kind of valid SVG values.

@darioackermann
Copy link
Author

You are right. This fix hasn't been released yet: https://github.com/PyFPDF/fpdf2/blob/master/CHANGELOG.md#fixed Have you tested if you still get the bug when using the latest code version from this repo?

The second issue is resolved by the fix provided, thx 😊

Wait: This library currently does not draw any text elements?

Not currently, but we are planning to implement them: #537 PRs are welcome 😊

That's awesome! Unfortunately I don't really know anything about SVG and how I'd convert text to a path.

Edit: I see that you do not currently (want to?) support relative values. I'll therefore only add a PR to use resolve_length

What kind of "relative values" are you refering to exactly? I think we want to support all kind of valid SVG values.

The SVG file above uses % for the first rect definition, to fill its parent. This could be solved with moderate effort, but I'm not sure about all the other relative sizes.

@Lucas-C
Copy link
Member

Lucas-C commented Sep 28, 2022

Closed by #558

@Lucas-C Lucas-C closed this as completed Sep 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants