тест
Сообщений 1 страница 7 из 7
Поделиться22026-06-08 11:48:45
по утрам он был райаном в черном костюме, заказывающим свой большой американо без сахара и фирменный скрамбл, который исчезал с тарелки так быстро, будто до начала рабочего дня не оставалось еще добрых полчаса. признаться, последнее время мне всегда хотелось, чтобы он чуточку задержался и, потягивая свой угрюмо-мужской кофе, скрасил утреннюю запару в “lou mitchell’s”.
в ланчтайм он был миллером в кругу коллег — самым щедрым или же с самым большим пэйчеком из всех, если судить по размеру чаевых. и уж точно самым привлекательным, по моему скромному мнению. единственным за столом, кто хоть иногда слушал мои советы по меню. пару месяцев назад ему так понравилась утка в апельсиновом соусе, что он оставил экстра тип и потом заказывал ее еще как минимум три мои смены подряд. это было так мило, что мне просто пришлось пофлиртовать, но он, кажется, не понял.. а может, просто сделал вид.
поздним вечером он был редким, молчаливым зрителем, который сперва смотрел опасливо, почти украдкой, но с каждым своим визитом все смелее раздевал взглядом и садился все ближе. одним из немногих, кто лишь наблюдал и никогда даже не спрашивал у менеджеров, сколько стоит остаться со мной наедине. всегда было интересно: ему в самом деле не хотелось или он просто не был готов так близко встречаться со своими скрытыми желаниями? сколько их я уже видел.. при свете дня осуждающих, клянущихся, что они точно не такие, и вымаливающих разрешение хоть разок прикоснуться после заката. рано или поздно они все равно оказывались в champagne room, забывая о том, что когда-то им было стыдно даже подумать о таком.
быть может, это была его идея о верности своей жене? трахал ли он ее особенно усердно после посещения “dose”? самонадеянно, мне нравилось верить, что исполняя свой супружеский долг, он думал обо мне. что боялся даже имя узнать, чтобы то не вырвалось неосторожно в самый неподходящий момент. иначе почему еще он так скоропостижно сбежал вчера, стоило мне не сдержаться и поманить пальцем со сцены? такая неумолимая, бессмысленная стойкость.. почти как глоток свежего воздуха посреди спертой атмосферы клуба, пропитанной похотью, дымом и сладковатым ароматом типографской краски и мускуса от купюр, что порой закрывали больше тела, чем одежда.
Отредактировано левисса (2026-06-08 11:48:49)
Поделиться32026-06-10 09:06:26
месяцев назад ему так понравилась утка в апельсиновом соусе, что он оставил экстра тип и потом заказывал ее еще как минимум три мои смены подряд. это было так мило, что мне просто пришлось пофлиртовать, но он, кажется, не понял.. а может, просто сделал вид.
поздним вечером он был редким, молчаливым зрителем, который сперва смотрел опасливо, почти украдкой, но с каждым своим визитом все смелее раздевал взглядом и садился все ближе. одним из немногих, кто лишь наблюдал и никогда даже не спрашивал у менеджеров, сколько стоит остаться со мной наедине. всегда было интересно: ему в самом деле не хотелось или он просто не был готов так близко встречаться со своими скрытыми желаниями? сколько их я уже видел.. при свете дня осуждающих, клянущихся, что они точно не такие, и вымаливающих разрешение хоть разок прикоснуться после заката. рано или поздно они все равно оказывались в champagne room, забывая о том, что когда-то им было стыдно даже подумать о таком.
быть может, это была его идея о верности своей жене? трахал ли он ее особенно усердно после посещения “dose”? самонадеянно, мне нравилось верить, что исполняя свой супружеский долг, он думал обо мне. что боялся даже имя узнать, чтобы то не вырвалось неосторожно в самый неподходящий момент. иначе почему еще он так скоропостижно сбежал вчера, стоило мне не сдержаться и поманить пальцем со сцены? такая неумолимая, бессмысленная стойкость.. почти как глоток свежего воздуха посреди спертой атмосферы клуба, пропитанной похотью, дымом и сладковатым ароматом типографской краски и мускуса от купюр, что порой закрывали больше тела, чем одежда.
0
+
ПрофильЛСE-mailУдалить Редактировать Цитировать
(Гостей: 0, Пользователей: 1) forfuckssake
1
ПОДПИСАТЬСЯ И ОТСЛЕЖИВАТЬ ТЕМУ
ЛАЙКНУТЬ ВСЕХ
Lamoda: мода, красота, дом
РЕКЛАМА
•
16+
Российские бренды женской одежды на Lamoda
Скачать
ДЭВУ (Poizon) - Официальное
РЕКЛАМА
Adidas Originals Niteball Амортизация Износостойкий...
Установить
Яндекс Маркет: онлайн-магазин
РЕКЛАМА
•
16+
Создайте уют дома! Товары на Яндекс Маркете
Скачать
РЕКЛАМА
biosan26.ru
ООО БИОСАН - Поставщик медицинских расходных материалов
Мы импортёры
Шприцы от 1,49 рублей
Системы инфузионные импортные
Узнать больше
ЕСТЬ ПРОТИВОПОКАЗАНИЯ. ПОСОВЕТУЙТЕСЬ С ВРАЧОМ
символов: 0
gemini beta v0.1 simulation тест
Рейтинг форумов | Создать форум бесплатно
3
Поделиться42026-06-10 13:27:00
месяцев назад ему так понравилась утка в апельсиновом соусе, что он оставил экстра тип и потом заказывал ее еще как минимум три мои смены подряд. это было так мило, что мне просто пришлось пофлиртовать, но он, кажется, не понял.. а может, просто сделал вид.
поздним вечером он был редким, молчаливым зрителем, который сперва смотрел опасливо, почти украдкой, но с каждым своим визитом все смелее раздевал взглядом и садился все ближе. одним из немногих, кто лишь наблюдал и никогда даже не спрашивал у менеджеров, сколько стоит остаться со мной наедине. всегда было интересно: ему в самом деле не хотелось или он просто не был готов так близко встречаться со своими скрытыми желаниями? сколько их я уже видел.. при свете дня осуждающих, клянущихся, что они точно не такие, и вымаливающих разрешение хоть разок прикоснуться после заката. рано или поздно они все равно оказывались в champagne rмесяцев назад ему так понравилась утка в апельсиновом соусе, что он оставил экстра тип и потом заказывал ее еще как минимум три мои смены подряд. это было так мило, что мне просто пришлось пофлиртовать, но он, кажется, не понял.. а может, просто сделал вид.
поздним вечером он был редким, молчаливым зрителем, который сперва смотрел опасливо, почти украдкой, но с каждым своим визитом все смелее раздевал взглядом и садился все ближе. одним из немногих, кто лишь наблюдал и никогда даже не спрашивал у менеджеров, сколько стоит остаться со мной наедине. всегда было интересно: ему в самом деле не хотелось или он просто не был готов так близко встречаться со своими скрытыми желаниями? сколько их я уже видел.. при свете дня осуждающих, клянущихся, что они точно не такие, и вымаливающих разрешение хоть разок прикоснуться после заката. рано или поздно они все равно оказывались в champagne rмесяцев назад ему так понравилась утка в апельсиновом соусе, что он оставил экстра тип и потом заказывал ее еще как минимум три мои смены подряд. это было так мило, что мне просто пришлось пофлиртовать, но он, кажется, не понял.. а может, просто сделал вид.
поздним вечером он был редким, молчаливым зрителем, который сперва смотрел опасливо, почти украдкой, но с каждым своим визитом все смелее раздевал взглядом и садился все ближе. одним из немногих, кто лишь наблюдал и никогда даже не спрашивал у менеджеров, сколько стоит остаться со мной наедине. всегда было интересно: ему в самом деле не хотелось или он просто не был готов так близко встречаться со своими скрытыми желаниями? сколько их я уже видел.. при свете дня осуждающих, клянущихся, что они точно не такие, и вымаливающих разрешение хоть разок прикоснуться после заката. рано или поздно они все равно оказывались в champagne r
Поделиться52026-06-10 13:33:48
сconst requiredComponents = [
"BankCategoryWrapper",
"BankPostsComponent",
"BankActivityComponent",
"BankAdvertisingComponent",
"BankOnlineComponent",
"BankGraphicsComponent",
];
let attempts = 0;
const maxAttempts = 20;
const checkInterval = 200;
function initApp() {
attempts++;
const allLoaded = requiredComponents.every((name) => window[name]);
if (allLoaded && typeof Vue !== "undefined") {
startApp();
return;
}
if (attempts < maxAttempts) {
setTimeout(initApp, checkInterval);
} else {
console.error(
"Не все компоненты загружены после " + maxAttempts + " попыток:",
{
Vue: typeof Vue,
BankCategoryWrapper: !!window.BankCategoryWrapper,
BankPostsComponent: !!window.BankPostsComponent,
BankActivityComponent: !!window.BankActivityComponent,
BankAdvertisingComponent: !!window.BankAdvertisingComponent,
BankOnlineComponent: !!window.BankOnlineComponent,
BankGraphicsComponent: !!window.BankGraphicsComponent,
},
);
}
}
function startApp() {
const { createApp } = Vue;
const app = createApp({
data() {
return {
userInfo: {
id: window.UserID,
login: window.UserLogin,
posts: +window.UserFld5 || 0,
balance: 0,
characterKey: null,
messages: +window.UserPosts || 0,
respectPlus: +window.UserRespectPlus || 0,
positivePlus: +window.UserPositivePlus || 0,
totalTime: window.UserTotalTime || 0,
registerDate: window.UserRegistered || 0,
},
categoriesTotal: {},
bankData: {
posts: [],
open_eps: [],
closed_eps: [],
posts_total: 0,
messages: 0,
positive: 0,
reputation: 0,
},
vouchers: {},
};
},
computed: {
totalTokens() {
return Object.values(this.categoriesTotal).reduce(
(sum, val) => sum + val,
0,
);
},
totalBalance() {
return (this.userInfo.balance || 0) + this.totalTokens;
},
hasData() {
return this.totalTokens > 0;
},
},
methods: {
async loadUserBalance() {
const fld3 = window.UserFld3;
if (!fld3) return;
const decoded = fld3
.replace(/</g, "<")
.replace(/"/g, '"')
.replace(/>/g, ">");
const match = decoded.match(/id="(user_\d+)"/);
if (!match) return;
this.userInfo.characterKey = match[1];
try {
const result = await mybbAPI.call("storage.get", {
app_id: 9,
key: match[1],
});
if (result?.storage?.data?.[match[1]]) {
this.userInfo.balance =
parseInt(result.storage.data[match[1]]) || 0;
}
} catch (err) {
console.error("Ошибка загрузки баланса:", err);
}
},
async loadVouchers() {
if (!this.userInfo.characterKey) return;
try {
const result = await mybbAPI.call("storage.get", {
app_id: 3,
key: this.userInfo.characterKey,
});
if (result?.storage?.data?.[this.userInfo.characterKey]) {
this.vouchers = JSON.parse(
result.storage.data[this.userInfo.characterKey],
);
}
} catch (err) {
console.error("Ошибка загрузки ваучеров:", err);
}
},
updateCategoryTotal({ category, total, data }) {
this.categoriesTotal[category] = total;
if (data) Object.assign(this.bankData, data);
},
clearAll() {
this.$refs.postsComponent?.clearData();
this.$refs.activityComponent?.clearData();
this.$refs.advertisingComponent?.clearData();
this.$refs.onlineComponent?.clearData();
this.$refs.graphicsComponent?.clearData();
this.categoriesTotal = {};
this.bankData = {
posts: [],
open_eps: [],
closed_eps: [],
posts_total: 0,
messages: 0,
positive: 0,
reputation: 0,
};
},
async submitForm() {
const overlay = document.getElementById("submit-overlay");
if (overlay) overlay.style.display = "flex";
if (!this.userInfo.characterKey) await this.loadUserBalance();
const textarea = document.getElementById("main-reply");
const delay = () => new Promise((r) => setTimeout(r, 100));
let formText = "";
try {
// Токены
if (this.totalTokens > 0) {
const oldBalance = +this.userInfo.balance || 0;
const newBalance = oldBalance + +this.totalTokens;
try {
await mybbAPI.call("storage.delete", {
key: this.userInfo.characterKey,
app_id: 9,
token: window.ForumAPITicket,
});
} catch (err) {}
await delay();
await mybbAPI.call("storage.set", {
key: this.userInfo.characterKey,
value: String(newBalance),
action: "append",
app_id: 9,
token: window.ForumAPITicket,
});
await delay();
window.UserFld2 = String(newBalance);
this.userInfo.balance = newBalance;
formText += `токенов было: ${oldBalance} -> стало: ${newBalance}\n`;
}
// POST IT
const usedPostIt = this.$refs.postsComponent?.postItUsed || 0;
if (usedPostIt > 0) {
let vouchers = {};
try {
const r = await mybbAPI.call("storage.get", {
app_id: 3,
key: this.userInfo.characterKey,
token: window.ForumAPITicket,
});
if (r?.storage?.data?.[this.userInfo.characterKey])
vouchers = JSON.parse(
r.storage.data[this.userInfo.characterKey],
);
} catch (err) {}
await delay();
vouchers.post_it = (vouchers.post_it || 0) - usedPostIt;
if (vouchers.post_it <= 0) delete vouchers.post_it;
try {
await mybbAPI.call("storage.delete", {
key: this.userInfo.characterKey,
app_id: 3,
token: window.ForumAPITicket,
});
} catch (err) {}
await delay();
if (Object.keys(vouchers).length > 0) {
await mybbAPI.call("storage.set", {
key: this.userInfo.characterKey,
value: JSON.stringify(vouchers),
action: "append",
app_id: 3,
token: window.ForumAPITicket,
});
}
await delay();
this.vouchers = vouchers;
formText += `использовано POST IT: ${usedPostIt}, осталось: ${vouchers.post_it || 0}\n`;
}
// bank_last_post — только максимальный ID
if (this.bankData.posts && this.bankData.posts.length > 0) {
let oldMax = 0;
try {
const r = await mybbAPI.storageGet("bank_last_post");
if (r?.storage?.data?.bank_last_post)
oldMax = parseInt(r.storage.data.bank_last_post);
} catch (err) {}
await delay();
const newMax = Math.max(...this.bankData.posts.map(Number));
if (newMax > oldMax) {
await mybbAPI.storageSet("bank_last_post", String(newMax));
await delay();
formText += `bank_last_post: был ${oldMax} -> стал ${newMax}\n`;
}
}
// bank_open_eps
if (this.bankData.open_eps && this.bankData.open_eps.length > 0) {
let oldData = [];
try {
const r = await mybbAPI.storageGet("bank_open_eps");
if (r?.storage?.data?.bank_open_eps)
oldData = JSON.parse(r.storage.data.bank_open_eps).map(Number);
} catch (err) {}
await delay();
const newData = [
...new Set([...oldData, ...this.bankData.open_eps.map(Number)]),
];
await mybbAPI.storageSet("bank_open_eps", JSON.stringify(newData));
await delay();
formText += `bank_open_eps: добавляем ${JSON.stringify(this.bankData.open_eps)}\nbank_open_eps (старые): ${JSON.stringify(oldData)}\nbank_open_eps (новый): ${JSON.stringify(newData)}\n\n`;
}
// bank_closed_eps
if (this.bankData.closed_eps && this.bankData.closed_eps.length > 0) {
let oldData = [];
try {
const r = await mybbAPI.storageGet("bank_closed_eps");
if (r?.storage?.data?.bank_closed_eps)
oldData = JSON.parse(r.storage.data.bank_closed_eps).map(
Number,
);
} catch (err) {}
await delay();
const newData = [
...new Set([...oldData, ...this.bankData.closed_eps.map(Number)]),
];
await mybbAPI.storageSet(
"bank_closed_eps",
JSON.stringify(newData),
);
await delay();
formText += `bank_closed_eps: добавляем ${JSON.stringify(this.bankData.closed_eps)}\nbank_closed_eps (старые): ${JSON.stringify(oldData)}\nbank_closed_eps (новый): ${JSON.stringify(newData)}\n\n`;
}
// bank_last_contest — только максимальный ID
if (this.bankData.contests && this.bankData.contests.length > 0) {
let oldMax = 0;
try {
const r = await mybbAPI.storageGet("bank_last_contest");
if (r?.storage?.data?.bank_last_contest)
oldMax = parseInt(r.storage.data.bank_last_contest);
} catch (err) {}
await delay();
const newMax = Math.max(...this.bankData.contests.map(Number));
if (newMax > oldMax) {
await mybbAPI.storageSet("bank_last_contest", String(newMax));
await delay();
formText += `bank_last_contest: был ${oldMax} -> стал ${newMax}\n`;
}
}
// bank_weekly
if (this.bankData.weekly && this.categoriesTotal.activity > 0) {
await mybbAPI.storageSet(
"bank_weekly",
String(this.bankData.weekly),
);
await delay();
formText += `bank_weekly: обновлён до ${this.bankData.weekly}\n`;
}
// bank_posts_total
if (
(this.bankData.posts_total || this.bankData.posts_total === 0) &&
this.categoriesTotal.posts > 0
) {
let oldPostsTotal = 0;
try {
const r = await mybbAPI.storageGet("bank_posts_total");
if (r?.storage?.data?.bank_posts_total)
oldPostsTotal = parseInt(r.storage.data.bank_posts_total);
} catch (err) {}
await delay();
await mybbAPI.storageSet(
"bank_posts_total",
String(this.bankData.posts_total),
);
await delay();
formText += `bank_posts_total: было ${oldPostsTotal} -> стало ${this.bankData.posts_total}\n\n`;
}
// Активность
const activityKeys = [
"bank_messages",
"bank_positive",
"bank_reputation",
];
const activityDataKeys = ["messages", "positive", "reputation"];
if (this.categoriesTotal.activity > 0) {
for (let i = 0; i < activityKeys.length; i++) {
const key = activityKeys[i],
dataKey = activityDataKeys[i];
if (!this.bankData[dataKey] || this.bankData[dataKey] === 0)
continue;
let oldValue = 0;
try {
const r = await mybbAPI.storageGet(key);
if (r?.storage?.data?.[key])
oldValue = parseInt(r.storage.data[key]);
} catch (err) {}
await delay();
await mybbAPI.storageSet(key, String(this.bankData[dataKey]));
await delay();
formText += `${key}: было ${oldValue} -> стало ${this.bankData[dataKey]}\n`;
}
}
// Посты в профиле
const oldPosts = +this.userInfo.posts || 0;
const newPosts = oldPosts + (this.bankData.posts?.length || 0);
window.UserFld5 = String(newPosts);
this.userInfo.posts = newPosts;
this.updateProfileFields([{ selector: "#fld5", value: newPosts }]);
if (textarea) {
formText += `постов было: ${oldPosts} -> стало: ${newPosts}`;
textarea.value = formText;
textarea.scrollIntoView({ behavior: "smooth", block: "center" });
}
this.clearAll();
} catch (err) {
console.error(err);
alert(
"Не удалось сохранить данные на сервер. Попробуйте ещё раз.\n\n" +
err.message,
);
}
if (overlay) overlay.style.display = "none";
},
updateProfileFields(fields) {
var userId = window.UserID;
var profileUrl = "/profile.php?section=fields&id=" + userId;
var iframe = document.createElement("iframe");
iframe.style.display = "none";
document.body.appendChild(iframe);
iframe.src = profileUrl + "&nohead";
iframe.onload = function () {
var iframeDoc =
iframe.contentDocument || iframe.contentWindow.document;
var form = iframeDoc.getElementById("profile8");
if (form) {
for (var f of fields) {
var field = form.querySelector(f.selector);
if (field) field.value = f.value;
}
form.submit();
setTimeout(function () {
if (iframe.parentNode) document.body.removeChild(iframe);
}, 1000);
} else {
console.error("Форма profile8 не найдена");
if (iframe.parentNode) document.body.removeChild(iframe);
}
};
iframe.onerror = function () {
console.error("Ошибка загрузки страницы профиля");
if (iframe.parentNode) document.body.removeChild(iframe);
};
},
},
async mounted() {
await this.loadUserBalance();
await this.loadVouchers();
},
});
app.component("bank-category-wrapper", BankCategoryWrapper);
app.component("bank-posts", BankPostsComponent);
app.component("bank-activity", BankActivityComponent);
app.component("bank-advertising", BankAdvertisingComponent);
app.component("bank-online", BankOnlineComponent);
app.component("bank-graphics", BankGraphicsComponent);
app.mount("#bank-app");
console.log("Gemini Bank запущен!");
}
setTimeout(initApp, 100);
Поделиться62026-06-10 13:46:11
по утрам он был райаном в черном костюме, заказывающим свой большой американо без сахара и фирменный скрамбл, который исчезал с тарелки так быстро, будто до начала рабочего дня не оставалось еще добрых полчаса. признаться, последнее время мне всегда хотелось, чтобы он чуточку задержался и, потягивая свой угрюмо-мужской кофе, скрасил утреннюю запару в “lou mitchell’s”.
в ланчтайм он был миллером в кругу коллег — самым щедрым или же с самым большим пэйчеком из всех, если судить по размеру чаевых. и уж точно самым привлекательным, по моему скромному мнению. единственным за столом, кто хоть иногда слушал мои советы по меню. пару месяцев назад ему так понравилась утка в апельсиновом соусе, что он оставил экстра тип и потом заказывал ее еще как минимум три мои смены подряд. это было так мило, что мне просто пришлось пофлиртовать, но он, кажется, не понял.. а может, просто сделал вид.
поздним вечером он был редким, молчаливым зрителем, который сперва смотрел опасливо, почти украдкой, но с каждым своим визитом все смелее раздевал взглядом и садился все ближе. одним из немногих, кто лишь наблюдал и никогда даже не спрашивал у менеджеров, сколько стоит остаться со мной наедине. всегда было интересно: ему в самом деле не хотелось или он просто не был готов так близко встречаться со своими скрытыми желаниями? сколько их я уже видел.. при свете дня осуждающих, клянущихся, что они точно не такие, и вымаливающих разрешение хоть разок прикоснуться после заката. рано или поздно они все равно оказывались в champagne room, забывая о том, что когда-то им было стыдно даже подумать о таком.
быть может, это была его идея о верности своей жене? трахал ли он ее особенно усердно после посещения “dose”? самонадеянно, мне нравилось верить, что исполняя свой супружеский долг, он думал обо мне. что боялся даже имя узнать, чтобы то не вырвалось неосторожно в самый неподходящий момент. иначе почему еще он так скоропостижно сбежал вчера, стоило мне не сдержаться и поманить пальцем со сцены? такая неумолимая, бессмысленная стойкость.. почти как глоток свежего воздуха посреди спертой атмосферы клуба, пропитанной похотью, дымом и сладковатым ароматом типографской краски и мускуса от купюр, что порой закрывали больше тела, чем одежда.
0
Поделиться72026-06-13 17:17:20
по утрам он был райаном в черном костюме, заказывающим свой большой американо без сахара и фирменный скрамбл, который исчезал с тарелки так быстро, будто до начала рабочего дня не оставалось еще добрых полчаса. признаться, последнее время мне всегда хотелось, чтобы он чуточку задержался и, потягивая свой угрюмо-мужской кофе, скрасил утреннюю запару в “lou mitchell’s”.
в ланчтайм он был миллером в кругу коллег — самым щедрым или же с самым большим пэйчеком из всех, если судить по размеру чаевых. и уж точно самым привлекательным, по моему скромному мнению. единственным за столом, кто хоть иногда слушал мои советы по меню. пару месяцев назад ему так понравилась утка в апельсиновом соусе, что он оставил экстра тип и потом заказывал ее еще как минимум три мои смены подряд. это было так мило, что мне просто пришлось пофлиртовать, но он, кажется, не понял.. а может, просто сделал вид.
поздним вечером он был редким, молчаливым зрителем, который сперва смотрел опасливо, почти украдкой, но с каждым своим визитом все смелее раздевал взглядом и садился все ближе. одним из немногих, кто лишь наблюдал и никогда даже не спрашивал у менеджеров, сколько стоит остаться со мной наедине. всегда было интересно: ему в самом деле не хотелось или он просто не был готов так близко встречаться со своими скрытыми желаниями? сколько их я уже видел.. при свете дня осуждающих, клянущихся, что они точно не такие, и вымаливающих разрешение хоть разок прикоснуться после заката. рано или поздно они все равно оказывались в champagne room, забывая о том, что когда-то им было стыдно даже подумать о таком.
быть может, это была его идея о верности своей жене? трахал ли он ее особенно усердно после посещения “dose”? самонадеянно, мне нравилось верить, что исполняя свой супружеский долг, он думал обо мне. что боялся даже имя узнать, чтобы то не вырвалось неосторожно в самый неподходящий момент. иначе почему еще он так скоропостижно сбежал вчера, стоило мне не сдержаться и поманить пальцем со сцены? такая неумолимая, бессмысленная стойкость.. почти как глоток свежего воздуха посреди спертой атмосферы клуба, пропитанной похотью, дымом и сладковатым ароматом типографской краски и мускуса от купюр, что порой закрывали больше тела, чем одежда.


