Commit f1f2d8dc authored by Simonas's avatar Simonas

workflow cleanup

parent c1a18f68
This source diff could not be displayed because it is too large. You can view the blob instead.
#!/usr/bin/env bash
LE_DIR=$(pwd)
REPO_DIR=$(dirname ${LE_DIR})
CERTS=${REPO_DIR}/certs
CERTS_DATA=${REPO_DIR}/certs-data
_default_conf () {
local OUTFILE=default.conf
echo "server {" > $OUTFILE
echo " listen 80;" >> $OUTFILE
echo " listen [::]:80;" >> $OUTFILE
echo " server_name ${DOMAIN_NAME};" >> $OUTFILE
echo "" >> $OUTFILE
echo " location / {" >> $OUTFILE
echo " rewrite ^ https://\$host\$request_uri? permanent;" >> $OUTFILE
echo " }" >> $OUTFILE
echo "" >> $OUTFILE
echo " location ^~ /.well-known {" >> $OUTFILE
echo " allow all;" >> $OUTFILE
echo " root /data/letsencrypt/;" >> $OUTFILE
echo " }" >> $OUTFILE
echo "}" >> $OUTFILE
}
# DOMAIN_NAME should not include prefix of www.
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DOMAIN_NAME" >&2
exit 1;
else
DOMAIN_NAME=$1
fi
if [ ! -d "${CERTS}" ]; then
echo "INFO: making certs directory"
mkdir ${CERTS}
fi
if [ ! -d "${CERTS_DATA}" ]; then
echo "INFO: making certs-data directory"
mkdir ${CERTS_DATA}
fi
# Launch Nginx container with CERTS and CERTS_DATA mounts
_default_conf
cd ${REPO_DIR}
docker-compose build
docker-compose up -d
sleep 5s
docker cp ${LE_DIR}/default.conf nginx:/etc/nginx/conf.d/default.conf
docker exec nginx /etc/init.d/nginx reload
sleep 5s
cd ${LE_DIR}
docker run -it --rm \
-v ${CERTS}:/etc/letsencrypt \
-v ${CERTS_DATA}:/data/letsencrypt \
certbot/certbot \
certonly \
--webroot --webroot-path=/data/letsencrypt \
-d ${DOMAIN_NAME} -d www.${DOMAIN_NAME}
cd ${REPO_DIR}
docker-compose stop
docker-compose rm -f
cd ${LE_DIR}
rm -f ${REPO_DIR}/nginx/default.conf
echo "INFO: update the nginx/wordpress_ssl.conf file"
echo "- 4: server_name ${DOMAIN_NAME};"
echo "- 19: server_name ${DOMAIN_NAME} www.${DOMAIN_NAME};"
echo "- 46: ssl_certificate /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem;"
echo "- 47: ssl_certificate_key /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem;"
echo "- 48: ssl_trusted_certificate /etc/letsencrypt/live/${DOMAIN_NAME}/chain.pem;"
exit 0;
\ No newline at end of file
# Ignore everything in this directory
*
# Except this file
!.gitignore
server {
listen 80;
listen [::]:80;
server_name dev.biuro.lt;
location / {
rewrite ^ https://$host$request_uri? permanent;
}
location ^~ /.well-known {
allow all;
root /data/letsencrypt/;
}
}
#!/usr/bin/env bash
LE_DIR=$(pwd)
REPO_DIR=$(dirname ${LE_DIR})
CERTS=${REPO_DIR}/certs
CERTS_DATA=${REPO_DIR}/certs-data
_default_conf () {
local OUTFILE=default.conf
echo "server {" > $OUTFILE
echo " listen 80;" >> $OUTFILE
echo " listen [::]:80;" >> $OUTFILE
echo " server_name ${DOMAIN_NAME};" >> $OUTFILE
echo "" >> $OUTFILE
echo " location / {" >> $OUTFILE
echo " rewrite ^ https://\$host\$request_uri? permanent;" >> $OUTFILE
echo " }" >> $OUTFILE
echo "" >> $OUTFILE
echo " location ^~ /.well-known {" >> $OUTFILE
echo " allow all;" >> $OUTFILE
echo " root /data/letsencrypt/;" >> $OUTFILE
echo " }" >> $OUTFILE
echo "}" >> $OUTFILE
}
read -p "Press enter to continue"
# DOMAIN_NAME should not include prefix of www.
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DOMAIN_NAME" >&2
exit 1;
else
DOMAIN_NAME=$1
fi
read -p "Press enter to continue"
if [ ! -d "${CERTS}" ]; then
echo "INFO: making certs directory"
mkdir ${CERTS}
fi
read -p "Press enter to continue"
if [ ! -d "${CERTS_DATA}" ]; then
echo "INFO: making certs-data directory"
mkdir ${CERTS_DATA}
fi
read -p "Press enter to continue"
# Launch Nginx container with CERTS and CERTS_DATA mounts
_default_conf
read -p "Press enter to continue"
cd ${REPO_DIR}
read -p "Press enter to continue"
docker-compose build
read -p "Press enter to continue"
docker-compose up -d
read -p "Press enter to continue"
sleep 5s
docker cp ${LE_DIR}/default.conf nginx:/etc/nginx/conf.d/default.conf
read -p "Press enter to continue"
docker exec nginx /etc/init.d/nginx reload
read -p "Press enter to continue"
sleep 5s
cd ${LE_DIR}
read -p "Press enter to continue"
docker run -it --rm \
-v ${CERTS}:/etc/letsencrypt \
-v ${CERTS_DATA}:/data/letsencrypt \
certbot/certbot \
certonly \
--webroot --webroot-path=/data/letsencrypt \
-d ${DOMAIN_NAME} -d www.${DOMAIN_NAME}
read -p "Press enter to continue"
cd ${REPO_DIR}
read -p "Press enter to continue"
docker-compose stop
read -p "Press enter to continue"
docker-compose rm -f
read -p "Press enter to continue"
cd ${LE_DIR}
read -p "Press enter to continue"
rm -f ${REPO_DIR}/nginx/default.conf
read -p "Press enter to continue"
echo "INFO: update the nginx/wordpress_ssl.conf file"
echo "- 4: server_name ${DOMAIN_NAME};"
echo "- 19: server_name ${DOMAIN_NAME} www.${DOMAIN_NAME};"
echo "- 46: ssl_certificate /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem;"
echo "- 47: ssl_certificate_key /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem;"
echo "- 48: ssl_trusted_certificate /etc/letsencrypt/live/${DOMAIN_NAME}/chain.pem;"
exit 0;
\ No newline at end of file
#!/usr/bin/env bash
LE_DIR=$(pwd)
REPO_DIR=$(dirname ${LE_DIR})
CERTS=${REPO_DIR}/certs
CERTS_DATA=${REPO_DIR}/certs-data
# certs and certs-data directory expected to already exist and
# contain prior certificate information
if [ ! -d "${CERTS}" ]; then
echo "WARNING: no certs directory!"
exit 1;
fi
if [ ! -d "${CERTS_DATA}" ]; then
echo "WARNING: no certs-data directory!"
exit 1;
fi
docker run -t --rm \
-v ${CERTS}:/etc/letsencrypt \
-v ${CERTS_DATA}:/data/letsencrypt \
certbot/certbot \
renew \
--webroot --webroot-path=/data/letsencrypt
cd ${REPO_DIR}
docker-compose kill -s HUP nginx
cd ${LE_DIR}
exit 0;
#!/usr/bin/env bash
LE_DIR=$(pwd)
REPO_DIR=$(dirname ${LE_DIR})
CERTS=${REPO_DIR}/certs
CERTS_DATA=${REPO_DIR}/certs-data
# DOMAIN_NAME should not include prefix of www.
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DOMAIN_NAME" >&2
exit 1;
else
DOMAIN_NAME=$1
fi
if [ ! -d "${CERTS}/live/${DOMAIN_NAME}" ]; then
echo "INFO: making certs directory"
mkdir -p ${CERTS}/live/${DOMAIN_NAME}
fi
# generate and add keys
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem \
-days 365 -nodes -subj '/CN='${DOMAIN_NAME}''
mv cert.pem ${CERTS}/live/${DOMAIN_NAME}/fullchain.pem
mv key.pem ${CERTS}/live/${DOMAIN_NAME}/privkey.pem
echo "INFO: update the nginx/wordpress_ssl.conf file"
echo "- 4: server_name ${DOMAIN_NAME};"
echo "- 19: server_name ${DOMAIN_NAME} www.${DOMAIN_NAME};"
echo "- 46: ssl_certificate /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem;"
echo "- 47: ssl_certificate_key /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem;"
echo "- 48: #ssl_trusted_certificate /etc/letsencrypt/live/DOMAIN_NAME/chain.pem; <-- COMMENT OUT OR REMOVE"
exit 0;
\ No newline at end of file
-----BEGIN CERTIFICATE-----
MIIFJDCCBAygAwIBAgISA76O6ZPLNB+y6MoTnwKMLgoOMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA5MjQxMzAwNDRaFw0x
ODEyMjMxMzAwNDRaMBMxETAPBgNVBAMTCGJpdXJvLmx0MIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAj5hA/UJAx3ojXxKxeq550VLDvZlOqiU5bGyZDu0D
lN6ECu36zJ3diKLR3aXyACL6H6OPyIEUWAeM/xVWGF9QnAnGWzKTfQsjLC3XBT43
AWwXeCSX3kztjG9tNI7tUS9poKq5OaYpL7LHQx4bEhq2crRXSh+38fYNwYFzJwh4
GS17odM6b8aiujncyo5xWAIZWH99YCfIP6vm4QgU/N+XSj00MEwg8FQGe2ujGXsk
ciFwFgiton/LOp1bgOL4r58ScW7l2qyGBE56d2bEEpT4sK0KNqQM8/iFdVHjTLA0
h+45bH6aFU7rRMANxgbV7THnTMW2SbYzzhGROHGB3vMb7wIDAQABo4ICOTCCAjUw
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTx9XKHPSgfL0YNX4jU2jZJGo41qTAfBgNV
HSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRjMGEwLgYI
KwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5vcmcwLwYI
KwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5vcmcvMC8G
A1UdEQQoMCaCCGJpdXJvLmx0ggxkZXYuYml1cm8ubHSCDHd3dy5iaXVyby5sdDCB
/gYDVR0gBIH2MIHzMAgGBmeBDAECATCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYB
BQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCB
ngyBm1RoaXMgQ2VydGlmaWNhdGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkg
UmVseWluZyBQYXJ0aWVzIGFuZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUg
Q2VydGlmaWNhdGUgUG9saWN5IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQu
b3JnL3JlcG9zaXRvcnkvMBMGCisGAQQB1nkCBAMBAf8EAgUAMA0GCSqGSIb3DQEB
CwUAA4IBAQBZki20RN2bbpeaq2auZ8DgZmMlj07l3BUgAJdpsd+KEiOa8FxiiO+4
Te+PuGIbDRZHnC1H9ELbCyS2VPe2k4ZPoCrEs78+0g2bEGnifQRSHz4fc9u1wPCj
eVDPCX9KpQywxp+hdY+xrXrneRUZxvLq76Xypbb4MjNTKnP+imAl9DoqDQZx2LUz
3GS1BNjCYtkJu910Z+xPm88BJcK9ytHZDi6DqeN4erS/MfxFuF43dDBs4ObPAQDK
Jxsr6hl096H3UdQ8Pgc83UxR/tDsZttUHDvisYSmBZ8701CzMKgQjh4TwQ6qdlVV
+pcwt5S2HiF0miyZLpd4v9Iad46jvWWr
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCPmED9QkDHeiNf
ErF6rnnRUsO9mU6qJTlsbJkO7QOU3oQK7frMnd2IotHdpfIAIvofo4/IgRRYB4z/
FVYYX1CcCcZbMpN9CyMsLdcFPjcBbBd4JJfeTO2Mb200ju1RL2mgqrk5pikvssdD
HhsSGrZytFdKH7fx9g3BgXMnCHgZLXuh0zpvxqK6OdzKjnFYAhlYf31gJ8g/q+bh
CBT835dKPTQwTCDwVAZ7a6MZeyRyIXAWCK2if8s6nVuA4vivnxJxbuXarIYETnp3
ZsQSlPiwrQo2pAzz+IV1UeNMsDSH7jlsfpoVTutEwA3GBtXtMedMxbZJtjPOEZE4
cYHe8xvvAgMBAAECggEACqTknGFe3+qD2LZQBaINUaDq9ZD5rc8YlJrwNZUIIO7l
ptHBN420MD6xg9abO7tcAyBitiArW+MjZn00ZpYaKZbn5za2jBxZPRsgxzi3ZxmW
G8fKoiXdrf1MgQrfOJdlIw3EsStJ/kkoUCdZJlxojdQkbFAxmHP+zQtFd+0+yc7i
3OTUKJa0KtneV3Spt4XF0A1NkrZj30JBanYBeRW/0o8JWLaHi2cGjF3oUxiPJ4GB
29wa/moFxNDOmODQZB46aww9n+/HrJoS75ew9WIvW4oDmELw/Mbyl4KahthdJBiB
GxQDU9L6kKv5fkaXbhMeVqmuO3iZXL06X7EuqwrXkQKBgQDF2dYK7LG7u/w4gbsW
AYFo/4zM37VfQJdQVS5HCCaWI9HObBwsfWxyA/IymUjPfsdF5el3e3DQ22rg3G+V
Irn+oC9RuRoILOGrsU41oe6SZNc/lPCGQI4XuGtwBF/bv+fUSxEbcCg7pjhnEX9m
gS9wd39ZUH6UNjBhyRsUbcdcswKBgQC5zDiSZsp0dEd8YEZ9XsAQr6C2nR2kqt1T
lXjYpgjzONFsUF3kib6wo4Ezvc4W+doKSYYHwJATM1LCpHtU9P2bEzCTzjzT0nwd
NDLgKyK5d0pL7z4NaHwQBO0WkMcFLituHGpPwPVyZ3x4h6CIyVvr1L8ztD8P+i4r
Rq3ihaSZ1QKBgCKJVAO0LZJHzk9O1gmRWbWqZjmdE1v9OmybceiUU6gBuK3/0Ssy
+astZSnP+BXAW6in6Ykh0x+iLZXy5MdzuGPqMlhhp1ml+/6shKp4Cd0kHS7MIPBO
dH9PgfGb0d/aL+2u7N2NRnijG1ViiIqsIkvPkDtXAcF9dBSdtkxqnVJhAoGBALSA
f7FTZXqPgOeHTNP9mhBb34Gp0COqz4ylWRr46xcH6wUUarNdUsGehyXyTuapYze9
SBX98LqGkO+CBkN6I2tl0Dq4EQYkpellTcvUfE68YpS03479JBIYBxF2I7OXsB+w
QWQr7QhxG06pTL+3B7NsIzki8mUeQ35Nkx7PgSLlAoGBAIDifDmhZsVaH+Rz4x62
g776rA7gQZmIuwwEIdXe3pYY8xS5frKQgy1rsNYBzhwy+1+s6e77uJgL1LOXSUQh
06oyXCba7myXlDA425fKbmU8H1vaZh23ffNi+cwBtqnz/gwpbKobjndn/EwURtpQ
hZYjamyGxdtUYtFmkHLV/SrJ
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIGFzCCBP+gAwIBAgISA76O6ZPLNB+y6MoTnwKMLgoOMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA5MjQxMzAwNDRaFw0x
ODEyMjMxMzAwNDRaMBMxETAPBgNVBAMTCGJpdXJvLmx0MIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAj5hA/UJAx3ojXxKxeq550VLDvZlOqiU5bGyZDu0D
lN6ECu36zJ3diKLR3aXyACL6H6OPyIEUWAeM/xVWGF9QnAnGWzKTfQsjLC3XBT43
AWwXeCSX3kztjG9tNI7tUS9poKq5OaYpL7LHQx4bEhq2crRXSh+38fYNwYFzJwh4
GS17odM6b8aiujncyo5xWAIZWH99YCfIP6vm4QgU/N+XSj00MEwg8FQGe2ujGXsk
ciFwFgiton/LOp1bgOL4r58ScW7l2qyGBE56d2bEEpT4sK0KNqQM8/iFdVHjTLA0
h+45bH6aFU7rRMANxgbV7THnTMW2SbYzzhGROHGB3vMb7wIDAQABo4IDLDCCAygw
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTx9XKHPSgfL0YNX4jU2jZJGo41qTAfBgNV
HSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRjMGEwLgYI
KwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5vcmcwLwYI
KwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5vcmcvMC8G
A1UdEQQoMCaCCGJpdXJvLmx0ggxkZXYuYml1cm8ubHSCDHd3dy5iaXVyby5sdDCB
/gYDVR0gBIH2MIHzMAgGBmeBDAECATCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYB
BQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCB
ngyBm1RoaXMgQ2VydGlmaWNhdGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkg
UmVseWluZyBQYXJ0aWVzIGFuZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUg
Q2VydGlmaWNhdGUgUG9saWN5IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQu
b3JnL3JlcG9zaXRvcnkvMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAwRZK4Kdy
0tQ5LcgKwQdw1PDEm96ZGkhAwfoHUWT2M2AAAAFmC+HikgAABAMARzBFAiEAk+CB
Gj+P+nSHAdgc+0rb2+h2FCc/z2tyJ4TrwPJutmsCIHpCOgEdXfRVBWlBrFShFpJA
9bYLI3VP7H/JvYPJSxISAHYApFASaQVaFVReYhGrN7wQP2KuVXakXksXFEU+GyIQ
aiUAAAFmC+HinAAABAMARzBFAiEAkMkt+l3Y1UST6eXpAQUB3oWSiDuapU4BHl2Q
zDkxbyoCIBjJsq9AmthTM3e/8/Tp18lmMhZxtU2vZbWwSLJt1LZ2MA0GCSqGSIb3
DQEBCwUAA4IBAQAmsiez6bB13lBRYQqmYHG0HX1mJQPulHTMrEIqJnWzqjQIgZxg
XpBa9SXY1GxZLgiNsVCEBegwlXfkvjZsrvznTY80IpfCYxtsMHbHPfNRFM4zGaw6
K2pJK4tywjd+/ECExExN+82mvn1/0upI1sXiOeL2gljAsCjevdQmCH98jh5KkpUs
WzqgOr5pFGz4jtel5PeLnFVptqsSS/eHalbK0hOook8/nLEohKYW8qYQUx8B5Kye
s/C+0KtrwSEVA83j8YRqMR2lZZK9wFJG/QHXgKc36faybvaTenzp6pOJDLFnRSqN
d9QUxsZZh9+8oBDJUR8kljWiodUKIe7tFM2E
-----END CERTIFICATE-----
14,34 0,440
14,33
14,20 14,20
14,19 14,19
14,18 14,18
...@@ -181,184 +180,186 @@ ...@@ -181,184 +180,186 @@
14,28 14,28
14,30 14,30
14,32 14,32
14,33
15,0 15,0
15,2 15,1
15,3 15,3
15,5 15,5
16,1 16,0
16,2 16,2
16,4 16,3
16,5 16,5
16,7 16,6
17,0 17,0
17,2 17,2
17,4 17,3
17,5 17,5
18,1 18,0
18,2 18,2
18,4 18,4
19,1 19,0
19,2 19,2
19,4 19,3
20,0 20,0
20,2 20,1
20,3 20,3
21,0 21,0
21,2 21,1
21,3 21,3
21,5 21,4
21,6 21,6
21,8 21,8
22,1 22,0
22,2 22,2
22,4 22,3
22,5 22,5
22,7 22,6
23,0 23,0
23,2 23,2
23,4 23,3
23,5 23,5
24,1 24,0
24,2 24,2
24,4 24,4
25,0 24,5
25,1 25,1
25,3 25,2
25,4 25,4
26,0 26,0
26,2 26,1
26,3 26,3
27,0 26,4
27,1 27,1
27,3 27,2
27,4 27,4
28,0 28,0
28,2 28,1
28,3 28,3
28,5 28,4
28,6 28,6
28,8 28,8
29,1 29,0
29,2 29,2
29,4 29,3
30,0 30,0
30,2 30,1
30,3 30,3
30,5 30,5
31,1 31,0
31,2 31,2
31,4 31,3
31,5 31,5
32,1 32,1
32,3 32,2
32,4 32,4
32,6 32,5
32,7 32,7
33,1 33,0
33,2 33,2
33,4 33,4
34,0 33,5
34,1 34,1
34,3 34,2
34,4 34,4
35,0 35,0
35,2 35,1
35,3 35,3
35,5 35,4
36,0 36,0
36,2 36,2
36,4 36,3
37,0 37,0
37,2 37,1
37,3 37,3
37,5 37,4
38,0 38,0
38,2 38,2
38,4 38,3
38,5 38,5
38,7 38,6
38,8 38,8
39,1 39,1
39,3 39,2
39,4 39,4
40,1 40,0
40,2 40,2
40,4 40,3
40,5 40,5
41,1 41,1
41,3 41,2
41,4 41,4
42,0 41,5
42,1 42,1
42,3 42,3
42,5 42,4
42,6 42,6
42,7 42,7
42,4 42,5
42,2 42,2
41,5 42,0
41,2 41,3
41,0 41,0
40,3 40,4
40,0 40,1
39,2 39,3
39,0 39,0
38,6 38,7
38,3 38,4
38,1 38,1
37,4 37,5
37,1 37,2
36,3 36,4
36,1 36,1
35,4 35,5
35,1 35,2
34,5 34,5
34,2 34,3
33,5 34,0
33,3 33,3
33,0 33,1
32,5 32,6
32,2 32,3
32,0 32,0
31,3 31,4
31,0 31,1
30,4 30,4
30,1 30,2
29,3 29,4
29,0 29,1
28,7 28,7
28,4 28,5
28,1 28,2
27,5 27,5
27,2 27,3
26,4 27,0
26,1 26,2
25,5 25,5
25,2 25,3
24,5 25,0
24,3 24,3
24,0 24,1
23,3 23,4
23,1 23,1
22,6 22,7
22,3 22,4
22,0 22,1
21,7 21,7
21,4 21,5
21,1 21,2
20,4 20,4
20,1 20,2
19,3 19,4
19,0 19,1
18,3 18,3
18,0 18,1
17,3 17,4
17,1 17,1
16,6 16,7
16,3 16,4
16,0 16,1
15,4 15,4
15,1 15,2
14,34
14,31 14,31
14,29 14,29
14,26 14,26
......
No preview for this file type
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment