(function () {
// 1) Basic bot filter (extend if you like)
function isBot() {
return /(bot|crawl|spider|google|bing|slurp|yandex|facebook|linkedin|pinterest|preview|whatsapp|discord|telegram|headless|puppeteer)/i
.test(navigator.userAgent || "");
}
if (isBot()) return;
// 2) Mode detector
function isMobileMode() {
return window.matchMedia("(max-width: 767px)").matches ||
/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent || "");
}
// 3) Your ad configs (swap keys/sizes to match your network units)
const AD = {
mobile: { key: "aa6d52a6037d0558c2a19dc52b6aa824", width: 320, height: 50 }, // 320x50
desktop: { key: "a49752dcde88f4fde5987d25efbb7168", width: 468, height: 60 } // 468x60
};
// 4) Create container if it doesn't exist
function ensureContainer() {
let container = document.getElementById("ad-container");
if (!container) {
container = document.createElement("div");
container.id = "ad-container";
container.style.display = "none";
document.body.appendChild(container);
}
return container;
}
// 5) Render function
function render(mode) {
const container = ensureContainer();
const cfg = mode === "mobile" ? AD.mobile : AD.desktop;
// Set global atOptions for ad network
window.atOptions = {
key: cfg.key,
format: "iframe",
height: cfg.height,
width: cfg.width,
params: {}
};
// Clear previous ad/script then inject
container.innerHTML = "";
container.style.display = "block";
const s = document.createElement("script");
s.src = `//selfportraitproved.com/${cfg.key}/invoke.js`;
s.async = true;
container.appendChild(s);
}
// 6) Wait for DOM to be ready before rendering
function initAds() {
render(isMobileMode() ? "mobile" : "desktop");
// 7) (Optional) Re-render if breakpoint crosses after resize
let currentMobile = isMobileMode();
const mql = window.matchMedia("(max-width: 767px)");
if (mql.addEventListener) {
mql.addEventListener("change", (e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
} else if (mql.addListener) { // older browsers
mql.addListener((e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
}
}
// 8) Execute when DOM is ready
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initAds);
} else {
initAds();
}
})();
Thank you @ms_go_lightly for taking this pic its such a confidence booster! I don’t give fuck I look good! #nofilter
View on Instagram
Kelly, is that you? Kelly Osbourne has no problem showing off her slender frame these days — she worked hard for it, after all! The Fashion Police co-host, 29, who has been in the public eye since she was a surly teen on her family’s reality series The Osbournes, posted a sexy Instagram bikini shot on Saturday, Oct. 11.
Since her time on the show and dabbling in music (“Shut Up,” anyone?), the lavender-haired star has significantly slimmed down, and she was proud to flaunt her most impressive full-body shot yet.
“Thank you @ms_go_lightly for taking this pic its such a confidence booster! I don’t give f—k I look good! #nofilter,” she captioned an image of herself wearing a tiny black bikini and leopard print robe while tanning on what appears to be the deck of a yacht.
👉 Discover more in this in-depth guide.
Osbourne used a captain’s hat to cover up her face, but the matching skull tattoos on her feet prove it’s really her. The Brit has opened up numerous times about shedding more than 40 pounds since her teen years, telling Us Weekly in 2010, “I took more hell for being fat than I did for being an absolute raging drug addict.”