lists.osmocom.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
List overview
Download
gerrit-log
July 2023
----- 2025 -----
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
gerrit-log@lists.osmocom.org
1 participants
3051 discussions
Start a n
N
ew thread
[M] Change in osmo-bts[master]: common: Make socket queue max. length configurable
by laforge
laforge has submitted this change. (
https://gerrit.osmocom.org/c/osmo-bts/+/31534
) Change subject: common: Make socket queue max. length configurable ...................................................................... common: Make socket queue max. length configurable Title refers to the maximum length of the osmo_wqueue used for the PCU socket connection. Related: OS#5774 Change-Id: Id6ba6e4eadce9ce82ef2407f4e28346e7fe4abfa --- M include/osmo-bts/bts.h M include/osmo-bts/pcu_if.h M src/common/bts.c M src/common/main.c M src/common/pcu_sock.c M src/common/vty.c M tests/osmo-bts.vty 7 files changed, 59 insertions(+), 25 deletions(-) Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/include/osmo-bts/bts.h b/include/osmo-bts/bts.h index a21a5df..a17278e 100644 --- a/include/osmo-bts/bts.h +++ b/include/osmo-bts/bts.h @@ -356,6 +356,7 @@ struct { char *sock_path; + unsigned int sock_wqueue_len_max; } pcu; /* GSMTAP Um logging (disabled by default) */ diff --git a/include/osmo-bts/pcu_if.h b/include/osmo-bts/pcu_if.h index b8ce9c4..d6e5d24 100644 --- a/include/osmo-bts/pcu_if.h +++ b/include/osmo-bts/pcu_if.h @@ -27,7 +27,7 @@ int pcu_tx_susp_req(struct gsm_lchan *lchan, uint32_t tlli, const uint8_t *ra_id, uint8_t cause); int pcu_sock_send(struct msgb *msg); -int pcu_sock_init(const char *path); +int pcu_sock_init(const char *path, int qlength_max); void pcu_sock_exit(void); bool pcu_connected(void); diff --git a/src/common/bts.c b/src/common/bts.c index 18f742d..2e73ad4 100644 --- a/src/common/bts.c +++ b/src/common/bts.c @@ -348,6 +348,7 @@ bts->min_qual_norm = MIN_QUAL_NORM; bts->max_ber10k_rach = 1707; /* 7 of 41 bits is Eb/N0 of 0 dB = 0.1707 */ bts->pcu.sock_path = talloc_strdup(bts, PCU_SOCK_DEFAULT); + bts->pcu.sock_wqueue_len_max = BTS_PCU_SOCK_WQUEUE_LEN_DEFAULT; for (i = 0; i < ARRAY_SIZE(bts->t200_ms); i++) bts->t200_ms[i] = oml_default_t200_ms[i]; diff --git a/src/common/main.c b/src/common/main.c index ed11956..a9ec0e7 100644 --- a/src/common/main.c +++ b/src/common/main.c @@ -380,7 +380,7 @@ exit(1); } - if (pcu_sock_init(g_bts->pcu.sock_path)) { + if (pcu_sock_init(g_bts->pcu.sock_path, g_bts->pcu.sock_wqueue_len_max)) { fprintf(stderr, "PCU L1 socket failed\n"); exit(1); } diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c index 8f34c33..9e34fe8 100644 --- a/src/common/pcu_sock.c +++ b/src/common/pcu_sock.c @@ -1167,7 +1167,7 @@ return 0; } -int pcu_sock_init(const char *path) +int pcu_sock_init(const char *path, int qlength_max) { struct pcu_sock_state *state; struct osmo_fd *bfd; @@ -1177,7 +1177,7 @@ if (!state) return -ENOMEM; - osmo_wqueue_init(&state->upqueue, BTS_PCU_SOCK_WQUEUE_LEN_DEFAULT); + osmo_wqueue_init(&state->upqueue, qlength_max); state->upqueue.read_cb = pcu_sock_read; state->upqueue.write_cb = pcu_sock_write; state->upqueue.bfd.fd = -1; diff --git a/src/common/vty.c b/src/common/vty.c index 0fc9007..31104c2 100644 --- a/src/common/vty.c +++ b/src/common/vty.c @@ -22,6 +22,7 @@ #include "btsconfig.h" #include <inttypes.h> +#include <limits.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> @@ -70,6 +71,9 @@ #define BTS_TRX_STR BTS_NR_STR TRX_NR_STR #define BTS_TRX_TS_STR BTS_TRX_STR TS_NR_STR #define BTS_TRX_TS_LCHAN_STR BTS_TRX_TS_STR LCHAN_NR_STR +/* INT32_MAX, because osmo_wqueue_init takes int as an argument + * and INT_MAX can't be stringified as a decimal */ +#define BTS_CFG_PCU_SOCK_WQUEUE_LEN_MAX_MAX 2147483647 #define X(x) (1 << x) @@ -466,6 +470,8 @@ VTY_NEWLINE); if (strcmp(bts->pcu.sock_path, PCU_SOCK_DEFAULT)) vty_out(vty, " pcu-socket %s%s", bts->pcu.sock_path, VTY_NEWLINE); + if (bts->pcu.sock_wqueue_len_max != BTS_CFG_PCU_SOCK_WQUEUE_LEN_MAX_MAX) + vty_out(vty, " pcu-socket-wqueue-length %u%s", bts->pcu.sock_wqueue_len_max, VTY_NEWLINE); if (bts->supp_meas_toa256) vty_out(vty, " supp-meas-info toa256%s", VTY_NEWLINE); vty_out(vty, " smscb queue-max-length %d%s", bts->smscb_queue_max_len, VTY_NEWLINE); @@ -1023,7 +1029,7 @@ return CMD_SUCCESS; } -DEFUN(cfg_bts_pcu_sock, cfg_bts_pcu_sock_cmd, +DEFUN(cfg_bts_pcu_sock_path, cfg_bts_pcu_sock_path_cmd, "pcu-socket PATH", "Configure the PCU socket file/path name\n" "UNIX socket path\n") @@ -1036,6 +1042,16 @@ return CMD_SUCCESS; } +DEFUN(cfg_bts_pcu_sock_ql, cfg_bts_pcu_sock_ql_cmd, + "pcu-socket-wqueue-length <1-" OSMO_STRINGIFY_VAL(BTS_CFG_PCU_SOCK_WQUEUE_LEN_MAX_MAX) ">", + "Configure the PCU socket queue length\n" + "Queue length\n") +{ + struct gsm_bts *bts = vty->index; + bts->pcu.sock_wqueue_len_max = atoi(argv[0]); + return CMD_SUCCESS; +} + DEFUN_ATTR(cfg_bts_supp_meas_toa256, cfg_bts_supp_meas_toa256_cmd, "supp-meas-info toa256", "Configure the RSL Supplementary Measurement Info\n" @@ -2741,7 +2757,8 @@ install_element(BTS_NODE, &cfg_bts_min_qual_rach_cmd); install_element(BTS_NODE, &cfg_bts_min_qual_norm_cmd); install_element(BTS_NODE, &cfg_bts_max_ber_rach_cmd); - install_element(BTS_NODE, &cfg_bts_pcu_sock_cmd); + install_element(BTS_NODE, &cfg_bts_pcu_sock_path_cmd); + install_element(BTS_NODE, &cfg_bts_pcu_sock_ql_cmd); install_element(BTS_NODE, &cfg_bts_supp_meas_toa256_cmd); install_element(BTS_NODE, &cfg_bts_no_supp_meas_toa256_cmd); install_element(BTS_NODE, &cfg_bts_smscb_max_qlen_cmd); diff --git a/tests/osmo-bts.vty b/tests/osmo-bts.vty index c473234..8c58aca 100644 --- a/tests/osmo-bts.vty +++ b/tests/osmo-bts.vty @@ -249,6 +249,7 @@ min-qual-norm <-100-100> max-ber10k-rach <0-10000> pcu-socket PATH + pcu-socket-wqueue-length <1-2147483647> supp-meas-info toa256 no supp-meas-info toa256 smscb queue-max-length <1-60> @@ -266,25 +267,26 @@ ... OsmoBTS(bts)# ? ... - ipa ip.access RSL commands - oml OML Parameters - no Negate a command or set its defaults - rtp RTP parameters - band Set the frequency band of this BTS - description Save human-readable description of the object - paging Paging related parameters - agch-queue-mgmt AGCH queue mgmt - min-qual-rach Set the minimum link quality level of Access Bursts to be accepted - min-qual-norm Set the minimum link quality level of Normal Bursts to be accepted - max-ber10k-rach Set the maximum BER for valid RACH requests - pcu-socket Configure the PCU socket file/path name - supp-meas-info Configure the RSL Supplementary Measurement Info - smscb SMSCB (SMS Cell Broadcast) / CBCH configuration - gsmtap-remote-host Enable GSMTAP Um logging (see also 'gsmtap-sapi') - gsmtap-local-host Enable local bind for GSMTAP Um logging (see also 'gsmtap-sapi') - gsmtap-sapi Enable/disable sending of UL/DL messages over GSMTAP - osmux Configure Osmux - trx Select a TRX to configure + ipa ip.access RSL commands + oml OML Parameters + no Negate a command or set its defaults + rtp RTP parameters + band Set the frequency band of this BTS + description Save human-readable description of the object + paging Paging related parameters + agch-queue-mgmt AGCH queue mgmt + min-qual-rach Set the minimum link quality level of Access Bursts to be accepted + min-qual-norm Set the minimum link quality level of Normal Bursts to be accepted + max-ber10k-rach Set the maximum BER for valid RACH requests + pcu-socket Configure the PCU socket file/path name + pcu-socket-wqueue-length Configure the PCU socket queue length + supp-meas-info Configure the RSL Supplementary Measurement Info + smscb SMSCB (SMS Cell Broadcast) / CBCH configuration + gsmtap-remote-host Enable GSMTAP Um logging (see also 'gsmtap-sapi') + gsmtap-local-host Enable local bind for GSMTAP Um logging (see also 'gsmtap-sapi') + gsmtap-sapi Enable/disable sending of UL/DL messages over GSMTAP + osmux Configure Osmux + trx Select a TRX to configure ... OsmoBTS(bts)# trx 0 OsmoBTS(trx)# list -- To view, visit
https://gerrit.osmocom.org/c/osmo-bts/+/31534
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Id6ba6e4eadce9ce82ef2407f4e28346e7fe4abfa Gerrit-Change-Number: 31534 Gerrit-PatchSet: 18 Gerrit-Owner: arehbein <arehbein(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: msuraev <msuraev(a)sysmocom.de> Gerrit-MessageType: merged
1 year, 11 months
1
0
0
0
[M] Change in osmo-bts[master]: common: Make socket queue max. length configurable
by laforge
Attention is currently required from: arehbein, fixeria, msuraev. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-bts/+/31534
) Change subject: common: Make socket queue max. length configurable ...................................................................... Patch Set 17: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-bts/+/31534
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Id6ba6e4eadce9ce82ef2407f4e28346e7fe4abfa Gerrit-Change-Number: 31534 Gerrit-PatchSet: 17 Gerrit-Owner: arehbein <arehbein(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: msuraev <msuraev(a)sysmocom.de> Gerrit-Attention: arehbein <arehbein(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Attention: msuraev <msuraev(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:46:03 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[M] Change in osmocom-bb[master]: trxcon/l1sched: transmit dummy speech blocks with inverted CRC3
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/33712
) Change subject: trxcon/l1sched: transmit dummy speech blocks with inverted CRC3 ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33712
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I16ff09a220da13c2c76538bc43354afc4e688794 Gerrit-Change-Number: 33712 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:43:42 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[L] Change in osmocom-bb[master]: trxcon/l1sched: do not craft artificial BFI frames on TCH
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/33711
) Change subject: trxcon/l1sched: do not craft artificial BFI frames on TCH ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33711
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I20391b860fbc2ce8f0f03d7ba95ef7a098c0f9db Gerrit-Change-Number: 33711 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:43:16 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[S] Change in osmocom-bb[master]: trxcon/l1sched: simplify and unify prim_dequeue_tchf()
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/33710
) Change subject: trxcon/l1sched: simplify and unify prim_dequeue_tchf() ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33710
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: Ie79069e5cc8acd193a326ac9d334fe070552e320 Gerrit-Change-Number: 33710 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:42:40 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[M] Change in osmocom-bb[master]: trxcon/l1sched: peoperly prioritize FACCH/H over TCH
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/33709
) Change subject: trxcon/l1sched: peoperly prioritize FACCH/H over TCH ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33709
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I513d6805ddf97783c002be285fb3ca7893e42377 Gerrit-Change-Number: 33709 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:42:11 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[L] Change in osmocom-bb[master]: trxcon/l1sched: rework dequeueing of Tx prims
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/33708
) Change subject: trxcon/l1sched: rework dequeueing of Tx prims ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33708
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I3d6c2136ff1855ab0aa9062b20b2a64fd0e5fe28 Gerrit-Change-Number: 33708 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:41:19 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[S] Change in osmocom-bb[master]: trxcon/l1sched: remove unused vars in l1sched_lchan_amr_prim_is_valid()
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/33707
) Change subject: trxcon/l1sched: remove unused vars in l1sched_lchan_amr_prim_is_valid() ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33707
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I57e18866addc2245c017e354eab218f56583026c Gerrit-Change-Number: 33707 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:40:41 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[M] Change in osmocom-bb[master]: trxcon/l1sched: fix handling of UL FACCH on TCH/A[FH]S
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmocom-bb/+/33706
) Change subject: trxcon/l1sched: fix handling of UL FACCH on TCH/A[FH]S ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33706
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: Ie217bbb389b5abb95d241781ffe3f5c7b1c188c0 Gerrit-Change-Number: 33706 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:40:24 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
[M] Change in osmo-bts[master]: osmo-bts-trx: implement FACCH/[FH] support for CSD
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-bts/+/33586
) Change subject: osmo-bts-trx: implement FACCH/[FH] support for CSD ...................................................................... Patch Set 9: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-bts/+/33586
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I4c6736e84c271240d457998de688c0baf59fe578 Gerrit-Change-Number: 33586 Gerrit-PatchSet: 9 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 12 Jul 2023 07:38:50 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year, 11 months
1
0
0
0
← Newer
1
...
184
185
186
187
188
189
190
...
306
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
Results per page:
10
25
50
100
200