- 1
- 2
- 3
- 4
- 5
- 6
typedef long long dlong;
typedef long double ldouble;
typedef unsigned long ulong;
typedef unsigned short ushort;
typedef unsigned char uchar;
typedef unsigned long long udlong;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−18
typedef long long dlong;
typedef long double ldouble;
typedef unsigned long ulong;
typedef unsigned short ushort;
typedef unsigned char uchar;
typedef unsigned long long udlong;
Говно или нет?
Arman 01.05.2017 22:01 # +1
bormand 01.05.2017 22:16 # +3
Arman 02.05.2017 08:08 # −1
Antervis 02.05.2017 08:15 # +7
Arman 02.05.2017 15:06 # −1
чо уж там.
guestinh0 01.05.2017 22:28 # −6
ненужно
> long double
ненужно
> unsigned long
ненужно
> unsigned short
ненужно
> unsigned char
uint8_t
> unsigned long long
ненужно
Из всех нефиксированных интов нужны только int и unsigned int.
bormand 01.05.2017 22:34 # +3
Хотя unsigned int тоже под сомнением, имхо.
Antervis 02.05.2017 04:18 # +4
guest 02.05.2017 16:16 # −11
guest 02.05.2017 16:19 # −11
guestinh0 02.05.2017 16:28 # −11
TeaBag 02.05.2017 16:29 # −5
guestinh0 02.05.2017 16:59 # −6
guest 02.05.2017 17:07 # −6
Antervis 02.05.2017 18:48 # +1
bormand 02.05.2017 18:55 # +1
Antervis 02.05.2017 18:59 # +1
guestinh0 02.05.2017 20:28 # −10
CrashTesterAnusov 02.05.2017 23:22 # −5
TeaBag 03.05.2017 03:40 # −5
Впрочем, на некоторых архиьектурах даже невыровненный mov это ошибка
d_fomenok 03.05.2017 14:02 # −6
AnalPunisher 03.05.2017 14:09 # −252
guestinh0 03.05.2017 14:37 # −6
AnalPunisher 03.05.2017 14:41 # −5
barop 03.05.2017 16:57 # −5
https://msdn.microsoft.com/en-us/library/system.overflowexception(v=vs.110).aspx
CrashTesterAnusov 01.05.2017 23:28 # −5
bormand 02.05.2017 07:22 # +2
Arman 02.05.2017 08:11 # +1
А как же никому не нужная кроссплатформа по части железа?
guest 02.05.2017 17:10 # −10
TeaBag 02.05.2017 17:20 # −11
barop 03.05.2017 03:21 # −5
Я вот знаю что инт это лучший размер для числа в цпу, и похуй 16 он бит или 64 и мне заебись
bormand 03.05.2017 07:28 # 0
AnalPunisher 03.05.2017 12:54 # −5
barop 03.05.2017 18:17 # −12
ему пофиг вообще там 16 или 64. Какая разница?
Мне, блин, там возраст надо хранить
1024-- 03.05.2017 13:56 # +6
Сериализация? Соснули. Размеры везде разные, файлы непереносимые.
Счётчик чего-нибудь? У меня работает, а у соседа внезапно переполнился.
Задали байты шестнадцатиричным питухом? CHAR_BIT = 6.
Не завязался на размер - с вероятностью 1 найдётся платформа, где твоя валидная программа не заработает.
Подход с неопределёнными размерами int/long int работает только в браузерах, где не важно, отрисуется ли снежинка, или её координаты - (-1e9, NaN). Хотя, даже в браузерах уже пишут серьёзные приложения.
Программа на Си сопровождается молитвой программиста о том, чтобы её не скомпилировали там, где инты покороче.
А типы надо делать в формате ('u' | 's')? ('l' | 'g' | 'e') DIGIT+
Т.е. например sl32 - знаковое целое не более 32 бит, ug16 - беззнаковое целое не менее 16 бит, e128 - знаковое целое ровно 128 бит.
Или даже диапазоны задавать. Например, UINT(16, sizeof(void*) * CHAR_BIT). Тогда и у компилятора будет выбор, и у программиста гарантии.
AnalPunisher 03.05.2017 14:12 # −255
cykablyad 03.05.2017 15:08 # −1
Не меньше восьми же
1024-- 03.05.2017 15:28 # +4
AnalPunisher 03.05.2017 15:28 # −12
1024-- 03.05.2017 16:20 # +5
defecate-plusplus 04.05.2017 23:11 # −14
barop 03.05.2017 18:19 # −12
Разумеется. Но сериализация нужна не всегда.
>>Счётчик чего-нибудь? У меня работает, а у соседа внезапно переполнился.
MAX_INT?
не-а, не слышал.
Кстати, разная разрядность тоже отстой. У меня malloc работает, а у соседа он вернул null.
>>Не завязался на размер - с вероятностью 1 найдётся платформа, где твоя валидная программа не заработает.
Чушь.
1024-- 03.05.2017 18:25 # +5
> не-а, не слышал.
Ну хорошо,
> Чушь.
Чушь. См. выше пример с миллионом.
AnalPunisher 03.05.2017 18:26 # −259
1024-- 03.05.2017 18:28 # +5
AnalPunisher 03.05.2017 18:59 # −253
doktor 03.05.2017 18:36 # 0
AnalPunisher 03.05.2017 18:58 # −252
doktor 03.05.2017 19:06 # −1
Вручную считал, по одному? )
barop 03.05.2017 18:28 # −12
1024-- 03.05.2017 18:45 # +5
С сишными типами чисел только абстрактные библиотеки для вычисления факториалов можно писать, где не важно, что в реальности работает максимум факториал пяти. Настоящие числа потребуют нижнюю планку.
barop 03.05.2017 18:47 # −5
лол) насколько бОльшие?
1024-- 03.05.2017 18:50 # +5
http://govnokod.ru/22884#comment385412
22884 / 255 > 89.7
385412 / 255 > 1511.4
Даже на ГК - в сотни-тысячи раз большие.
barop 03.05.2017 18:53 # −5
1024-- 03.05.2017 18:56 # +5
Ну, багор. Подточить тебя пора.
Не нужны char/short/long/int потому, что по сути гарантируют только -128..127 или 0..255.
int8_t и uint_16t нужны, когда числа входят в их гарантированный диапазон.
dxd 03.05.2017 19:02 # 0
barop 03.05.2017 19:05 # −5
1024-- 03.05.2017 19:10 # +5
Довольно много понятий из реального мира (как минимум, размеры файлов; количества людей в мегаполисах) используют числа большие, чем гарантированные 255.
barop 03.05.2017 19:17 # −5
ты высосал из пальца какое-то увтерждение с рэндомным числом в середине и пытаешься мне его доказать.
"Я утверждаю что числа меньше 12348752 не нужны". Ты точно программист?
1024-- 03.05.2017 19:21 # +5
Число 385412 - контрпример для утверждения о достаточности типов с 0..255. Число 385412 встречается в реальной программе "Сервер сайта ГК" и не влезает в один октет. Подобных целых чисел, встречающихся в реальной жизни и находящих своё представление в программах - куча.
> пытаешься мне его доказать
Уже доказал. Доказательством служит сам факт наличия этого числа в выхлопе реальной программы "сервер ГК".
AnalPunisher 03.05.2017 19:24 # −253
barop 03.05.2017 20:10 # −6
а вот доказательство ненужности типа char: https://en.wikipedia.org/wiki/Trillion
трудно говорить с гуманитарием
AnalPunisher 03.05.2017 20:24 # −252
1024-- 03.05.2017 21:14 # +5
> а вот доказательство ненужности типа char: https://en.wikipedia.org/wiki/Trillion
Где? Где хотя бы доказательства, что триллион используется в программе как целое значение?
Я показывал значение такой целочисленной переменной, для которой как минимум используется арифметическая операция (x+1).
P. S. Даже с такой простой задачей как продемонстрировать использование целого числа в программе тупой багор не справился.
doktor 03.05.2017 21:18 # +1
С трудом узнал в этом сердитом подростке объект своего почитания.
Кому, и с какой целью Вы одолжили Вашу учётку?
AnalPunisher 03.05.2017 21:19 # −252
doktor 03.05.2017 21:23 # 0
AnalPunisher 03.05.2017 21:29 # −252
Овладел твоим анусом, проверь.
doktor 03.05.2017 21:31 # −1
AnalPunisher 03.05.2017 21:41 # −252
doktor 03.05.2017 21:47 # +1
1024-- 03.05.2017 21:33 # +4
Мои горячность молодости и наивность иногда делают из меня живую мишень в чёрством мире самодовольных интернет-троллей.
Даже немного завидую себе, что меня некогда отождествили с доктором.
doktor 03.05.2017 21:36 # 0
1024-- 03.05.2017 21:39 # +5
Кто-то сказал, что при капитализме происходит эксплуатация человека человеком, а при коммунизме — совсем наоборот.
doktor 03.05.2017 21:42 # +1
@а при коммунизме — совсем наоборот
Это заметная точка зрения.
1024-- 03.05.2017 21:48 # +5
1024-- 03.05.2017 21:53 # +5
1024-- 03.05.2017 21:22 # +4
Пациент высказывает бредовые утверждения, желая подловить меня и показать, какой он мозговитый, но в итоге выглядит как клоун, который придирается к словам не понимая сути сказанного, с которой он быть может даже согласен.
barop 03.05.2017 21:51 # −6
похоже что js это диагноз
1024-- 03.05.2017 21:56 # +5
Последний раз. Тезисы для болезных:
1. int/long/char не нужны, т.к. гарантируют только 8 бит под число, чего в реальном коде явно не хватает.
2. Есть случаи, когда используются малые числа, которые влезают в 8 бит, тогда можно использовать int8_t и uint8_t.
barop 03.05.2017 22:02 # −6
>>int/long/char не нужны, т.к. гарантируют только 8 бит под число
точнее говоря они не гарантируют что туда влезет мое число в 128 бит.
А еще они не гарантируют что сложение двух интов не займет 44 года. В стандарте про это ни слова.
Если мне нужна гарантия размера -- я беру _t, если не нужна -- зачем мне _t?
>>чего в реальном коде явно не хватает.
в твоем не хватает, а в моем хватает.
У меня может быть буфер размером MAX_INT и мне с ним ок.
поле с возрастом, да что угодно
ну давай, скажи что на говнокоде говна больше чем на 8 бит и это твое
доказательство, лол.
Размер типа может иметь значение, а может не иметь, в зависимости от задачи.
guestinh0 03.05.2017 22:09 # −5
barop 03.05.2017 22:16 # −6
1024-- 03.05.2017 22:25 # +5
guestinh0 04.05.2017 10:53 # −5
1024-- 04.05.2017 18:46 # 0
Багров надо давить интеллектом либо не кормить.
guestinh0 04.05.2017 07:16 # −7
1024-- 03.05.2017 22:22 # +5
Что "что угодно"?
Количество детей у человека, количество детей в классе, сортов мороженного в киоске - может и влезут.
Но размер файла, количество единиц продукта, выпущенного заводом, количество людей в городе, посетителей в больнице - не хватит.
> ну давай, скажи что на говнокоде говна больше чем на 8 бит и это твое доказательство, лол.
Да, это моё доказательство. Пользователей > 20K, постов > 300K, символов в комментарии - от 1 до 2К. На остальных сайтах так же. У народа по 300 друзей в соцсетях, у хабра 60К просмотров статей, картинки заливают 300кБ - 5МБ. В реальной жизни и не пахнет одним октетом.
Предсказываю, что сейчас среднестатистической программе требуется 24 бита для представления целого числа.
barop 03.05.2017 22:28 # −5
ахахахаа, я тут даже не знаю что сказать. Если ты не троллишь , а реально так думаешь то говорить не о чем. А если троллишь от тем более
1024-- 03.05.2017 22:32 # +5
> картинки заливают 300кБ - 5МБ
Как раз в три байта размеры и входят.
barop 03.05.2017 22:33 # −5
1024-- 03.05.2017 22:35 # +5
doktor 03.05.2017 22:42 # +1
barop 03.05.2017 22:42 # −5
doktor 03.05.2017 22:43 # 0
Обмен шила на мыло багор?
1024-- 03.05.2017 22:45 # +5
dxd 03.05.2017 19:00 # −14
1024-- 03.05.2017 19:07 # −9
Ну программисту приятнее написать кроссплатформенный код.
А так обман какой-то получается. Вроде язык не зависит от платформы, а по факту чтобы что-то серьёзное написать, надо тонкости знать или ВМ пилить.
1024-- 03.05.2017 19:12 # −8
Dummy00001 04.05.2017 12:04 # −14
Ты точно ёбнулся.
У 99% архиваторов ядро писано на асме.
Архиваторы - это классический пример непоратабельного софта. Ооочень часто для каждой архитектуры пишется своя реализация. (Потому что иначе ими никто пользоватся не будет.) Да, выхлоп/вхлоп идентичны - но и только.
Dummy00001 04.05.2017 11:44 # −15
Ты завязываешься на минимальный нужный диапазон значений. Берешь тип в который это помещается, и округляешь до инта. Если не влазит в инт - заводишь специальный тайпдеф для этого типа. Если не влазит в нативные типы - надо извращатся.
> Сериализация? Соснули.
И как только все программы файло сохраняют?... Чувствую что тут не реальность, а кто-то другой сосёт.
Плюс, ты забываешь про очевидный вариант сериализации: ASCII.
> Задали байты шестнадцатиричным питухом? CHAR_BIT = 6.
Ц реалистически не поддерживает ничего где байт не 8 бит. -> ABI поддерживает только 8 бит -> даже если платформа 9 бит/этц, будут симулировать 8 бит.
В каком то смысле, байты уже давно симулируются, потому что многие платформы (количественно: подавляющее большинство) нативно не поддерживают арифметику/этц на не-регистрах: они в принципе не могут два байта сложить. поэтому расширяют байты до вордов, складывают ворды, нормализуют результат до байта. округление типов локальных переменных до ворда - это одна из типичных оптимизаций компиляторов.
Dummy00001 04.05.2017 11:55 # −15
Идиотизм. 16 бит музейный комп 30-40 летней давности -> диапазон значений (-32768, 32767) -> разрешение дисплеев еще пару десятилетий надо что бы это переполнить. (С другой стороны, нубам и идиотам, наверное нужно только пара минут.)
> Программа на Си сопровождается молитвой программиста о том, чтобы её не скомпилировали там, где инты покороче.
Похоже, ты просто портабельного софта не видел.
Многие программы и библиотеки компилятся и работают на ура - без молитв.
С другой стороны, прагматически, сейчас существуют только 32 и 64 бит компы. 16 бит микроконтроллеры тихо сидят в своих нишах (и компов на них никто не делает) потому что там тематика другая и портабельность там тоже другая.
А в случае 32 вс. 64 бит все просто: int как минимум 32 бит. Если тебе идиоту даже диапазона [-2,147,483,648 , 2,147,483,647] что бы какую-то ебучую снежинку нарисовать не хватает, то тебе серьёзно надо задуматся о смене професии.
roman-kashitsyn 04.05.2017 12:12 # −14
Стандарт считает иначе. Если нужны как минимум 32 бита, надо юзать long.
short/int/long/long long в прикладном софте не нужны. Если ты хочешь сказать, что тебе нужно минимум 32 бита, так и скажи: int_fast32_t. Так всем понятно, что происходит, ни у кого нет никаких иллюзий.
Dummy00001 04.05.2017 12:42 # −15
Какой стандарт? И какое приложение этого стандарта (платформа? компилер?) так делают?
AnalPunisher 04.05.2017 13:04 # −234
roman-kashitsyn 04.05.2017 13:07 # −15
Стандарт языка C, разумеется. Мы же о переносимом софте говорим, так ведь? К примеру, из C99
5.2.4.2.1 Sizesof integer types<limits.h>
...
— minimum value for an object of type int
INT_MIN -32767 //−(2^15−1)
— maximum value for an object of type int
INT_MAX +32767 //2^15−1
Посикс это дело не уточняет, SUSv1 тоже. Только в SUSv2 расширили
{INT_MAX}
Maximum value for an object of type int.
Minimum Acceptable Value: 2 147 483 647
{INT_MIN}
Minimum value for an object of type int.
Maximum Acceptable Value: -2 147 483 647
-- http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
AnalPunisher 04.05.2017 13:14 # −234
Dummy00001 04.05.2017 13:24 # −15
Это всего лишь минимумы. Стандарт диктует что реализация стандарта (компилер, платформа) не может делать меньше.
И какая платформа - кроме какого MS-DOS - это делает?
Я веду к чему: поэтому то ты никогда не видишь (и не увидишь) лэйбла "портабельно на все С платформы!", а видишь (например) "поддерживаем прыщи, бсд и солярку, 32/64 бита."
Стандарт это всего лишь основа. Ты портируешь не на стандарт - ты портируешь на платформу.
roman-kashitsyn 04.05.2017 13:30 # −14
единственный недостаток — унылый printf, который напрямую эти типы не поддерживает, и приходится пользоваться макросами для форматирования типов. Но у size_t та же проблема.
AnalPunisher 04.05.2017 13:50 # −233
Dummy00001 04.05.2017 14:11 # −15
просто кастишь переменные в стандартные типы.
> Но у size_t та же проблема.
"%zu" уже есть как минимум десятилетие. на бсд появился раньше, но до линухов тоже дошел. в posixv7 есть. в портабельном коде конвертил в (long) - ни разу проблем не было.
я честно говоря не знаю о каких сложностях ты говоришь. я в телекомах так 10 лет писал - и все работало, и работало на 3-5 *них платформах.
я догадываюсь что твое видение реальности омрачено опытом работы под винды. я тоже когда то таким был: все было сложно, мрачно и обложено граблями. был шанс - ушел с виндов. ни разу не жалею. граблей и говна намного меньше. проблемы поменялись - но уже одно отсутствие вечных неизменных тупостей некрософота это громадное облегчение. пару лет тоже подобные сомнения меня мучали - а потом привык на int/long/etc полагатся, и о чудо, оно работает. "полагатся" - вот это именно то сентимента на виндах остро не хватает.
guestinh0 04.05.2017 14:18 # −14
AnalPunisher 04.05.2017 14:26 # −233
roman-kashitsyn 04.05.2017 14:27 # −14
лол, я ни одной программы чисто под винду не написал.
Моё видение реальности омрачено опытом решения олимпиадных задач, когда ты ковыряешься в байтах, а среду выполнения своих программ не контролируешь. А потом выясняется, что там в long 4 байта было, и тебя вообще UB в программе, потому что ты знаковые переполнил.
Может звучать смешно, но это быстро приучает к анализу размерностей, очень помогает на код-ревью.
Dummy00001 04.05.2017 14:33 # −15
> Может звучать смешно
Это не смешно. Это даже как то печально. Ну да в каждой нише есть своя специфика. От проблем никуда не деться: за ихнее решения деньги то и платят.
Dummy00001 04.05.2017 14:36 # −15
Вопрос только: вытекает ли из "помогает на код-ревью" в улучшает что то в конечном продукте. Или ты один из тех "заноз" которые докалупываются до проблем в каком `int a = sizeof(long);`.
roman-kashitsyn 04.05.2017 15:41 # −15
Ну тут легко показать, что проблемы маловероятны. А вот функция вроде
template <class T> T sum(const vector<T>& items);
вообще говоря, вполне может вызывать подозрения. В этом плане std::accumulate грамотно сделан.
Dummy00001 04.05.2017 16:05 # −15
да, неожиданно интересный и тривиальных подход.
TeaBag 04.05.2017 14:37 # −15
- то-то ты такой ебанутый!
AnalPunisher 04.05.2017 15:18 # −232
guest6 15.07.2022 20:53 # 0
Support 16.07.2022 17:19 # 0
рома рома роман, РОМАН
1024-- 04.05.2017 18:52 # −15
> С другой стороны, прагматически, сейчас существуют только 32 и 64 бит компы.
Выходит, практика и массовость молятся за программиста.
AnalPunisher 04.05.2017 20:02 # −232
bormand 02.05.2017 18:31 # −8
- Какого размера у тебя числа?
- Вот тут короче инта сделал, а вот тут - длиннее.
- Сколько в битах, блядь, спрашиваю?!
- Зачем ругаешься, насяльника, вот тут короче инта, а тут - длиннее.
guestinh0 02.05.2017 18:33 # −21
bormand 02.05.2017 18:35 # −8
Antervis 02.05.2017 18:50 # −7
fixed
CrashTesterAnusov 02.05.2017 23:26 # −20
Arman 03.05.2017 01:46 # −15
Железка А может long double (он же на FPU, который на x87, завязан?) в 64 бита, железка B — 80, железка C — 128. Пара-тройка sizeof и прочая — и можно иметь возможность использовать аппаратный тип на полную.
Antervis 03.05.2017 06:08 # −14
Psionic 02.05.2017 20:07 # −13
guestinh0 02.05.2017 20:27 # −10
Dummy00001 03.05.2017 15:05 # +1
Ну так если под винды программируешь, чего тогда некрософтовскими тайпдефами/дефайнами не пользуешься? чем DWORD не угодил??
На *нихах int/long работают в качестве портабельных типов превосходно.
Потому что портабельность редко ломается на размерности типов - она чаще ломается на кривых кастах основаных на неявных предположениях о размерности типов, которые унаследованы от кривых системных интерфейсов. Сравни POSIX vs WinAPI на досуге. POSIX основан на int/long/size_t + дюжина специальных типов. WinAPI основан на большой куче говна дефайнов и тайпдефов для каждой мелкой чмошной байды. Первое с мелкими поправками работает уже десятилетиями. Второе ломается с каждым значительным релизом винды, потому что редко кто догадывается где какой тип нужно правильно использовать, потому что уже WinAPI само местами криво: вывод одной функции не подходит как ввод другой.
Bobik 03.05.2017 18:18 # +2
POSIX тихо оставляет это имплементации. Поэтому все имплементации ебутся с когда-то 32битным time_t/clock_t, 32битным off_t (и дублированными системными вызовами, принимающими off64_t) и многим другим.
Dummy00001 03.05.2017 18:42 # +1
они никогда не были частью стандарта - они присутствую как ОС расширения для облегчения миграции/доступ к 64бит данным из 32бит софта.
> time_t/clock_t, off_t
и есть еще парачка. но то что ты назвал это как раз и есть центр 32/64 совместимости. (самое смешное что даже есть 16 бит позиксы системы - не щупал но читал.)
самое ненавистный тайпдеф/дефайн в позиксе на самом деле это socklen_t - попытка помирить SysV (size_t) c BSD (int; как если бы размер сокета когда может 4ГБ превосходить). на куче систем он: есть/нет/есть но в левом хидере/есть но кривой/есть но кривой, и не дефайн, почему нельзя проверить его наличие или отсутствие. но даже это весьма изолированая проблема без каких либо побочных эффектов.
barop 03.05.2017 18:49 # −6
под 16 bit protected mode (это двойка без paging) была xenix в теории)
Bobik 03.05.2017 18:55 # 0
Скорее они присутствуют из-за того, что стандарт не регламентировал размер, кто-то поставил его 32битным, его не хватило, а поменять ABI -- это убиться.
И такой стандарт скорее вреден: "ну, time_t это число, может целое, может дробное. функция time() возвращает time_t". Нулевая польза для разработчика, если мы даже не можем быть уверены, time() != time() через день, и что в данный момент time() не вовзращает ERANGE всегда.
С проблемами с socklen_t не сталкивался, но я ни под что экзотическое не пишу.
Bobik 03.05.2017 18:57 # +1
barop 03.05.2017 20:33 # −7
AnalPunisher 03.05.2017 20:36 # −6
barop 03.05.2017 20:49 # −7
AnalPunisher 03.05.2017 20:52 # −6
guestinh0 03.05.2017 20:58 # −7
barop 03.05.2017 20:31 # −6
Dummy00001 03.05.2017 21:13 # 0
не бредь.
Из POSIX:
> clock_t shall be an integer or real-floating type. time_t shall be an integer type.
и само собой разумеется что time_t signed потому что иначе бы в 2038 не переполнилось бы.
Bobik 03.05.2017 21:44 # 0
А в предыдущем ещё не было: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html
Dummy00001 03.05.2017 22:00 # 0
roman-kashitsyn 01.05.2017 23:35 # +6
TommyVercetti 02.05.2017 00:08 # −1
TeaBag 02.05.2017 00:11 # −6
CrashTesterAnusov 02.05.2017 23:28 # −5
CrashTesterAnusov 02.05.2017 23:27 # −5
AnalPunisher 03.05.2017 15:23 # −7
1024-- 03.05.2017 15:33 # +3
TeaBag 03.05.2017 16:00 # −7
AnalPunisher 03.05.2017 16:08 # −7
TeaBag 03.05.2017 16:09 # −5
Support 16.07.2022 17:20 # 0