Commit f1f2d8dc authored by Simonas's avatar Simonas

workflow cleanup

parent c1a18f68
This diff is collapsed.
#!/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
14,33
0,440
14,20
14,19
14,18
......@@ -181,184 +180,186 @@
14,28
14,30
14,32
14,33
15,0
15,2
15,1
15,3
15,5
16,1
16,0
16,2
16,4
16,3
16,5
16,7
16,6
17,0
17,2
17,4
17,3
17,5
18,1
18,0
18,2
18,4
19,1
19,0
19,2
19,4
19,3
20,0
20,2
20,1
20,3
21,0
21,2
21,1
21,3
21,5
21,4
21,6
21,8
22,1
22,0
22,2
22,4
22,3
22,5
22,7
22,6
23,0
23,2
23,4
23,3
23,5
24,1
24,0
24,2
24,4
25,0
24,5
25,1
25,3
25,2
25,4
26,0
26,2
26,1
26,3
27,0
26,4
27,1
27,3
27,2
27,4
28,0
28,2
28,1
28,3
28,5
28,4
28,6
28,8
29,1
29,0
29,2
29,4
29,3
30,0
30,2
30,1
30,3
30,5
31,1
31,0
31,2
31,4
31,3
31,5
32,1
32,3
32,2
32,4
32,6
32,5
32,7
33,1
33,0
33,2
33,4
34,0
33,5
34,1
34,3
34,2
34,4
35,0
35,2
35,1
35,3
35,5
35,4
36,0
36,2
36,4
36,3
37,0
37,2
37,1
37,3
37,5
37,4
38,0
38,2
38,4
38,3
38,5
38,7
38,6
38,8
39,1
39,3
39,2
39,4
40,1
40,0
40,2
40,4
40,3
40,5
41,1
41,3
41,2
41,4
42,0
41,5
42,1
42,3
42,5
42,4
42,6
42,7
42,4
42,5
42,2
41,5
41,2
42,0
41,3
41,0
40,3
40,0
39,2
40,4
40,1
39,3
39,0
38,6
38,3
38,7
38,4
38,1
37,4
37,1
36,3
37,5
37,2
36,4
36,1
35,4
35,1
35,5
35,2
34,5
34,2
33,5
34,3
34,0
33,3
33,0
32,5
32,2
33,1
32,6
32,3
32,0
31,3
31,0
31,4
31,1
30,4
30,1
29,3
29,0
30,2
29,4
29,1
28,7
28,4
28,1
28,5
28,2
27,5
27,2
26,4
26,1
27,3
27,0
26,2
25,5
25,2
24,5
25,3
25,0
24,3
24,0
23,3
24,1
23,4
23,1
22,6
22,3
22,0
22,7
22,4
22,1
21,7
21,4
21,1
21,5
21,2
20,4
20,1
19,3
19,0
20,2
19,4
19,1
18,3
18,0
17,3
18,1
17,4
17,1
16,6
16,3
16,0
16,7
16,4
16,1
15,4
15,1
15,2
14,34
14,31
14,29
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