|
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="maximum-scale=1, initial-scale=1, width=device-width"/><link rel="manifest" href="/site.webmanifest"/><meta name="mobile-web-app-capable" content="yes"/><meta name="6a97888e-site-verification" content="f517e489c958cfe10876b8f7daa294c2"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1290-2796.jpg" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2796-1290.jpg" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1179-2556.jpg" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2556-1179.jpg" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2048-2732.jpg" media="(prefers-color-scheme: dark) and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2732-2048.jpg" media="(prefers-color-scheme: dark) and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1668-2388.jpg" media="(prefers-color-scheme: dark) and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2388-1668.jpg" media="(prefers-color-scheme: dark) and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1536-2048.jpg" media="(prefers-color-scheme: dark) and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2048-1536.jpg" media="(prefers-color-scheme: dark) and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1668-2224.jpg" media="(prefers-color-scheme: dark) and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2224-1668.jpg" media="(prefers-color-scheme: dark) and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1620-2160.jpg" media="(prefers-color-scheme: dark) and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2160-1620.jpg" media="(prefers-color-scheme: dark) and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1290-2796.jpg" media="(prefers-color-scheme: dark) and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2796-1290.jpg" media="(prefers-color-scheme: dark) and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1179-2556.jpg" media="(prefers-color-scheme: dark) and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2556-1179.jpg" media="(prefers-color-scheme: dark) and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1284-2778.jpg" media="(prefers-color-scheme: dark) and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2778-1284.jpg" media="(prefers-color-scheme: dark) and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1170-2532.jpg" media="(prefers-color-scheme: dark) and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2532-1170.jpg" media="(prefers-color-scheme: dark) and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1125-2436.jpg" media="(prefers-color-scheme: dark) and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2436-1125.jpg" media="(prefers-color-scheme: dark) and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1242-2688.jpg" media="(prefers-color-scheme: dark) and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2688-1242.jpg" media="(prefers-color-scheme: dark) and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-828-1792.jpg" media="(prefers-color-scheme: dark) and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1792-828.jpg" media="(prefers-color-scheme: dark) and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1242-2208.jpg" media="(prefers-color-scheme: dark) and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-2208-1242.jpg" media="(prefers-color-scheme: dark) and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-750-1334.jpg" media="(prefers-color-scheme: dark) and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1334-750.jpg" media="(prefers-color-scheme: dark) and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-640-1136.jpg" media="(prefers-color-scheme: dark) and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="/images/splash/apple-splash-dark-1136-640.jpg" media="(prefers-color-scheme: dark) and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="icon" href="/favicon-blue.ico" type="image/x-icon"/><title>bigASP π - v2.0 | Stable Diffusion XL Checkpoint | Civitai</title><meta name="title" content="bigASP π - v2.0 | Stable Diffusion XL Checkpoint | Civitai"/><meta property="og:title" content="bigASP π - v2.0 | Stable Diffusion XL Checkpoint | Civitai"/><meta property="twitter:title" content="bigASP π - v2.0 | Stable Diffusion XL Checkpoint | Civitai"/><meta name="description" content="bigASP π v2.0 A photorealistic SDXL finetuned from base SDXL on over 6 MILLION high quality photos for 40 million training samples. Every photo was..."/><meta property="og:description" content="bigASP π v2.0 A photorealistic SDXL finetuned from base SDXL on over 6 MILLION high quality photos for 40 million training samples. Every photo was..."/><meta property="twitter:description" content="bigASP π v2.0 A photorealistic SDXL finetuned from base SDXL on over 6 MILLION high quality photos for 40 million training samples. Every photo was..."/><meta property="og:type" content="website"/><meta property="twitter:card" content="summary_large_image"/><link href="https://civitai.com/models/502468/bigasp" rel="canonical"/><link href="https://civitai.com/models/502468" rel="alternate"/><script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","applicationCategory":"Multimedia","applicationSubCategory":"Stable Diffusion XL Model","description":"<h1 id=\"bigasp-v2.0-nmwbufpbt\">bigASP π v2.0</h1><p></p><p>A <strong>photorealistic</strong> <strong>SDXL</strong> finetuned from base SDXL on over <strong>6 MILLION high quality photos</strong> for 40 million training samples. Every photo was captioned using <a target=\"_blank\" rel=\"ugc\" href=\"https://github.com/fpgaminer/joycaption\"><strong>JoyCaption</strong></a> and tagged using <a target=\"_blank\" rel=\"ugc\" href=\"https://github.com/fpgaminer/joytag\"><strong>JoyTag</strong></a>. This imbues bigASP π with the ability to understand a wide range of prompts and concepts, from short and simple to long and detailed, while generating high quality photographic results.</p><p></p><p>This is now the second version of bigASP π. I'm excited to see how the community uses this model and to learn its strengths and weaknesses. Please share your gens and feedback!</p><p></p><h2 id=\"features-58492a288\">Features</h2><p></p><ul><li><p><strong>Both Natural Language and Tag based prompting</strong>: Version 2 now understands not only booru-style tags, but also natural language prompts, or any combination of the two!</p></li><li><p><strong>SFW and NSFW:</strong> This version of bigASP π includes 2M SFW images and 4M NSFW images. Dress to impress? Or undress to impress? You decide.</p></li><li><p><strong>Diversity</strong>: bigASP π is trained on an intentionally diverse dataset, so that it can handle generating all the colors of our beautiful species, in all shapes and sizes. Goodbye <em>same-face</em>!</p></li><li><p><strong>Aspect ratio bucketing</strong>: Widescreen, square, portrait, bigASP π is ready to take it all.</p></li><li><p><strong>High quality training data</strong>: Most of the training data consists of high quality, professional grade photos with resolutions well beyond SDXL's native resolution, all downloaded in their original quality with no additional compression. bigASP π won't miss a single pixel.</p></li><li><p><strong>Large prompt support</strong>: Trained with support for up to 225 tokens in the prompt. It is <em>BIG</em> asp, after all.</p></li><li><p><em>(Optional) </em><strong>Aesthetic/quality score</strong>: Like version 1, this model understands quality scores to help improve generations, e.g. add <code>score_7_up</code>, to the start of your prompt to guide the quality of generations. More details below.</p></li></ul><p></p><p></p><h2 id=\"what's-new-(version-2)-6e0rg28l6\">What's New (Version 2)</h2><p></p><ul><li><p><strong>Added natural language prompting</strong>, greatly expanding the ability to control the model, resolve a lot of complaints about v1, and lots, lots more concepts can now be understood by the model.</p></li><li><p>Over 3X <strong>more images</strong>. 6.7M images in version 2 versus 1.5M in version 1.</p></li><li><p><strong>SFW support</strong>. I added 2M SFW images to the dataset, both so bigASP can be more useful as well as expanding its range of understanding. In my testing so far, bigASP is <em>excellent</em> at nature photography.</p></li><li><p><strong>Longer training</strong>. Version 1 felt a bit undertrained. Version 2 was trained for 40M samples versus 30M in version 1. This seems to have tighten up the model quite a bit.</p></li><li><p><strong>Score tags are now optional!</strong> They were randomly dropped during training, so the model will work just fine even when they aren't specified.</p></li><li><p><strong>Updated quality model.</strong> I updated the model used to score the images, both to improve it slightly and to handle the new range of data. In my experience the range of \"good\" images is now much broader, starting from score_5. So you can be much more relaxed in what scores you prompt for and hopefully get even more variety in outputs than before.</p></li><li><p><strong>More male focused data. </strong>It may come as a surprise to many, but nearly 50% of the world population is male! Kinda weird to have them so underrepresented in our models! Version 2 has added a good chunk more images focused on the male form. There's more work to be done here, but it's better than v1.</p></li></ul><p></p><p></p><h2 id=\"recommended-settings-u21w00d29\">Recommended Settings</h2><p></p><p><strong>Sampler:</strong> <strong>DPM++ 2M SDE</strong> or <strong>DPM++ 3M SDE</strong></p><p><strong>Schedule: Kerras </strong>or<strong> Exponential. <span style=\"color:rgb(253, 126, 20)\">β οΈ </span></strong><em><span style=\"color:rgb(253, 126, 20)\">WARNING</span></em><strong><span style=\"color:rgb(253, 126, 20)\"> β οΈ </span></strong><em><span style=\"color:rgb(253, 126, 20)\">Normal schedule will cause garbage outputs.</span></em></p><p><strong>Steps</strong>: 40</p><p><strong>CFG</strong>: <strong>2.0</strong> or <strong>3.0</strong></p><p></p><p><u>Perturbed Attention Guidance</u> (available in at least ComfyUI), can help <em>sometimes</em> so I recommend giving it a try. It is especially helpful for faces and more complex scenes. However it can easily overcook an image, so turn down CFG when using PAG.</p><p></p><p><strong><span style=\"color:rgb(253, 126, 20)\">β οΈ </span></strong><em><span style=\"color:rgb(253, 126, 20)\">WARNING</span></em><strong><span style=\"color:rgb(253, 126, 20)\"> β οΈ </span></strong><em><span style=\"color:rgb(253, 126, 20)\">If you're coming from Version 1, this version has much lower recommended CFG settings.</span></em></p><p></p><p>Supported resolutions (with image count for reference):</p><pre><code>832x1216: 2229287\n1216x832: 2179902\n832x1152: 762149\n1152x896: 430643\n896x1152: 198820\n1344x768: 185089\n768x1344: 145989\n1024x1024: 102374\n1152x832: 70110\n1280x768: 58728\n768x1280: 42345\n896x1088: 40613\n1344x704: 31708\n704x1344: 31163\n704x1472: 27365\n960x1088: 26303\n1088x896: 24592\n1472x704: 17991\n960x1024: 17886\n1088x960: 17229\n1536x640: 16485\n1024x960: 15745\n704x1408: 14188\n1408x704: 12204\n1600x640: 4835\n1728x576: 4718\n1664x576: 2999\n640x1536: 1827\n640x1600: 635\n576x1664: 456\n576x1728: 335</code></pre><p></p><p></p><h2 id=\"prompting-qfwnyigle\">Prompting</h2><p></p><p>bigASP π, as of version 2, was trained to support both detailed natural language prompts and booru-tag prompting. That means all of these kinds of prompting styles work:</p><p></p><pre><code>A photograph of a cute puppy running through a field of flowers with the sun shining brightly in the background. Captured with depth of field to enhance the focus on the subject.</code></pre><pre><code>Photo of a cute puppy, running through a field of flowers, bright sun in background, depth of field</code></pre><pre><code>photo (medium), cute puppy, running, field of flowers, bright sun, sun in background, depth_of_field</code></pre><p></p><p>If you've used bigASP v1 in the past, all of those tags should still work! But now you can add natural language to help describe what you want in more words than just tags.</p><p></p><p>If you need some ideas for how to write prompts that bigASP understands well, try running some of your favorite images through JoyCaption: <a target=\"_blank\" rel=\"ugc\" href=\"https://huggingface.co/spaces/fancyfeast/joy-caption-alpha-two\">https://huggingface.co/spaces/fancyfeast/joy-caption-alpha-two</a> bigASP v2 was trained using JoyCaption (Alpha Two) to generate short, medium, long, etc descriptive captions, so any of those JoyCaption settings will work well to help you out.</p><p></p><p>I also recommend checking out the metadata for any of the images in the gallery to get some ideas. I always upload my images with the ComfyUI workflow when possible.</p><p></p><p>Finally, <strong>scoring</strong>. bigASP π v2, like v1 and inspired by the incredible work of PonyDiffusion, was trained with \"score tags\". This means it understands things like <code>score_8_up</code>, which specify the quality of the image you want generated. All images in bigASP's dataset were scored from 0 to 9, with 0 completely excluded from training, and 9 being the best of the best. So when you write something like <code>score_7_up</code> at the <em>beginning</em> of your prompt, you're telling bigASP \"I want an image that's <em>at least</em> a quality of 7.\"</p><p></p><p>Unlike v1, this version of bigASP does not <em>require</em> specifying a score tag in your prompt. If you don't, bigASP is free to generate across its wide range of qualities, so expect both good and bad! But I highly recommend putting a score tag of some kind at the <em>beginning</em> of your prompt, to help guide the model. I usually just use <code>score_7_up</code>, which guides towards generally good quality, while still giving bigASP some freedom. If you want only the best, <code>score_9</code>. If you want more variety, <code>score_5_up</code>. Hopefully that makes sense! You can specify multiple score tags if you want, but one is usually enough. And you can put lower scores in the negative to see if that helps. Something like <code>score_1, score_2, score_3</code>.</p><p></p><p><strong>NOTE:</strong> <span style=\"color:rgb(253, 126, 20)\">If you use a score tag, it </span><strong><span style=\"color:rgb(253, 126, 20)\">must</span></strong><span style=\"color:rgb(253, 126, 20)\"> be at the beginning of the prompt.</span></p><p></p><p><strong>NOTE</strong>: If you want booru style tags in your prompt, don't forget that some tags use parenthesis, for example <code>photo (medium)</code>. And many UI's use parenthesis for prompt weighting! So don't forget to escape the parenthesis if you're using something like ComfyUI or Auto1111, i.e. <code>photo \\(medium\\)</code>.</p><p></p><p></p><h2 id=\"example-prompts-tgydlsilu\">Example prompts</h2><p></p><pre><code>SFW, chill sunset over a calm lake with a distant mountain range, soft clouds, and a lone sailboat.</code></pre><pre><code>score_7_up, Photo of a woman with blonde hair, red lipstick, and a black necklace, sitting on a bed, masturbating, watermark</code></pre><pre><code>score_8, A vibrant photo of a tropical beach scene, taken on a bright sunny day. The foreground features a wooden railing and lush green grass, with a large, twisted palm tree in the center-right. The background showcases a sandy beach with turquoise waters and a clear blue sky. The palm tree has long, spiky leaves that contrast with the smooth, curved trunk. The overall scene is peaceful and inviting, with a sense of warmth and relaxation.</code></pre><pre><code>score_8_up, A captivating and surreal photograph of a cafe with neon lights shining down on a handsome man standing behind the counter. The man is wearing an apron and smiling warmly at the camera. The lighting is warm and glowing, with soft shadows adding depth and detail to the man. Highly detailed skin textures, muscular, cup of coffee, medium wide shot, taken with a Canon EOS.</code></pre><pre><code>score_7_up, photo \\(medium\\), 1girl, spread legs, small breasts, puffy nipples, cumshot, shocked</code></pre><pre><code>score_7_up, photo (medium), long hair, standing, thighhighs, reddit, 1girl, r/asstastic, kitchen, dark skin</code></pre><pre><code>score_8_up, photo \\(medium\\), black shirt, pussy, long hair, spread legs, thighhighs, miniskirt, outside</code></pre><pre><code>Photo of a blue 1960s Mercedes-Benz car, close-up, headlight, chrome accents, Arabic text on license plate, low quality</code></pre><h2 id=\"-y4a1cnsin\"></h2><p></p><h2 id=\"prompting-(advanced)-zkwi2ausq\">Prompting (Advanced)</h2><p></p><p>Like version 1, this version of bigASP understands all of the tags that JoyTag uses. Some might find it useful to reference this list of tags seen during v2's training, including the number of times that tag occurs: <a target=\"_blank\" rel=\"ugc\" href=\"https://gist.github.com/fpgaminer/0243de0d232a90dcae5e2f47d844f9bb\">https://gist.github.com/fpgaminer/0243de0d232a90dcae5e2f47d844f9bb</a></p><p></p><p>Of course, version 2 now understands more natural prompting, thanks to JoyCaption. That means there's a gold mine of new concepts that this version of bigASP π understands. Many people found the tag list from v1 to be helpful in exploring the model's capabilities. For natural language, a similar approach is to do \"n-gram\" analysis on the corpus of captions the model saw during training. Basically, this finds common combinations of \"words\". Here's that list, including the number of times each fragment of text occurs: <a target=\"_blank\" rel=\"ugc\" href=\"https://gist.github.com/fpgaminer/26f4da885cc61bede13b3779b81ba300\">https://gist.github.com/fpgaminer/26f4da885cc61bede13b3779b81ba300</a></p><p></p><p>The first column of the n-gram list is the number of \"words\" considered, from 1 up to 7. The second column is the text. The third column is the number of times that particular combination of words was seen (which might be higher than the number of images, since they can occur multiple times in a single caption). Note that \"noun chunks\" are counted as a single word in this analysis. Examples: \"her right side\", \"his body\", \"water droplets\". All of those are considered a single \"word\", since they represent a consolidated concept. So don't be surprised if the list above has \"tattoo on her right side\" listed as being 3 words. Also note that some punctuation might be missing from the extracted text fragments, due to the way the text was processed for this analysis.</p><p></p><p>Various sources can be mentioned, such as reddit, flickr, unsplash, instagram, etc. As well as specific subreddits (similar to v1).</p><p></p><p>Tags such as <code>NSFW</code>, <code>SFW</code>, and <code>Suggestive</code>, can help guide the content of the generations.</p><p></p><p>For the most part, bigASP π will not generate watermarks unless one is specifically mentioned. The trigger word is, coincidentally, <code>watermark</code>. Adding <code>watermark</code> to negatives might help avoid them even more, though in my testing they're quite rare for most prompts.</p><p></p><p>bigASP π <em>can</em> generate text that you specify using language like <code>The person is holding a sign with the text \"Happy Halloween\" on it.</code> You can prompt for text in various ways, but definitely put the text you want to appear on the image in quotes. That said, this is SDXL, so except to have to hammer a <em>lot</em> of gens to get good text. And the more complex the image, the less well SDXL will do with text. But it's a neat parlor trick for this old girl!</p><p></p><p>Some camera makes and models, as well as focal length, aperture, etc are understood by the model. Their effects are unknown. You can use a tag like <code>DSLR</code> to more generally guide the model towards \"professional\" photos, but beware that it will also tend to put a camera <em>in</em> the photo...</p><p></p><p>As mentioned in the list of features, bigASP π was trained with long prompt support. It was trained using the technique that NovelAI invented and documented graciously, and is the same technique that most generation UIs use when your prompt exceeds CLIP's maximum of 75 tokens. There's a good mix of caption lengths in the dataset, so any length from a few tokens up to 225 tokens should work well. With the usual caveats of this technique.</p><p></p><p></p><h2 id=\"limitations-dsij0nz7j\">Limitations</h2><p></p><ul><li><p><strong>No offset noise:</strong> Sorry, maybe next version.</p></li><li><p><strong>No anime:</strong> This is a photo model through and through. Perhaps in a future version anime will be included to expand the model's concepts.</p></li><li><p><strong>Faces/hands/feet</strong>: You know the deal.</p></li><li><p><strong>VAE issues:</strong> SDXL's VAE sucks. We all know it. But nowhere is it more apparent than in photos. And because bigASP generates such high levels of detail, it really exposes the weaknesses of the VAE. Not much I can do about that.</p></li><li><p><strong>No miracles:</strong> This is SDXL, so expect the usual. 1:24 ratio of good to meh gens, a good amount of body horror, etc. Some prompts will work well for no reason. Some will produce nightmares no matter how you tweak the prompt. Multiple characters is better in this version of bigASP compared to v1, but is still rough. Such is the way of these older architectures. I think bigASP is more or less at the limit of what can be done here now.</p></li></ul><p></p><p></p><h2 id=\"training-details-(version-2)-zeiro1omv\">Training Details (Version 2)</h2><p></p><p>All the nitty gritty of getting version 2 trained are documented here: <a target=\"_blank\" rel=\"ugc\" href=\"https://civitai.com/articles/8423\">https://civitai.com/articles/8423</a></p><p></p><p></p><h2 id=\"training-details-(version-1)-cee4r5174\">Training Details (Version 1)</h2><p></p><p>Details on how the big SDXL finetunes were trained is scarce to say the least. So, I'm sharing all my details here to help the community.</p><p></p><p>bigASP was trained on about 1,440,000 photos, all with resolutions larger than their respective aspect ratio bucket. Each image is about 1MB on disk, making the database about 1TB per million images.</p><p></p><p>Every image goes through: the quality model to rate it from 0 to 9; JoyTag to tag it; OWLv2 with the prompt \"a watermark\" to detect watermarks in the images. I found OWLv2 to perform better than even a finetuned vision model, and it has the added benefit of providing bounding boxes for the watermarks. Accuracy is about 92%. While it wasn't done for this version, it's possible in the future that the bounding boxes could be used to do \"loss masking\" during training, which basically hides the watermarks from SD. For now, if a watermark is detect, a \"watermark\" tag is included in the training prompt.</p><p></p><p>Images with a score of 0 are dropped entirely. I did a lot of work specifically training the scoring model to put certain images down in this score bracket. You'd be surprised at how much junk comes through in datasets, and even a hint of them and really throw off training. Thumbnails, video preview images, ads, etc.</p><p></p><p>bigASP uses the same aspect ratios buckets that SDXL's paper defines. All images are bucketed into the bucket they best fit in while not being smaller than any dimension of that bucket when scaled down. So after scaling, images get randomly cropped. The original resolution and crop data is recorded alongside the VAE encoded image on disk for conditioning SDXL, and finally the latent is gzipped. I found gzip to provide a nice 30% space savings. This reduces the training dataset down to about 100GB per million images.</p><p></p><p>Training was done using a custom training script based off the diffusers library. I used a custom training script so that I could fully understand all the inner mechanics and implement any tweaks I wanted. Plus I had my training scripts from SD1.5 training, so it wasn't a huge leap. The downside is that a lot of time had to be spent debugging subtle issues that cropped up after several bugged runs. Those are all <em>expensive</em> mistakes. But, for me, mistakes are the cost of learning.</p><p></p><p>I think the training prompts are really important to the performance of the final model in actual usage. The custom <code>Dataset</code> class is responsible for doing a lot of heavy lifting when it comes to generating the training prompts. People prompt with everything from short prompts to long prompts, to prompts with all kinds of commas, underscores, typos, etc.</p><p></p><p>I pulled a large sample of AI images that included prompts to analyze the statistics of typical user prompts. The distribution of prompts followed a mostly normal distribution, with a mean of 32 tags and a std of 19.8. So my <code>Dataset</code> class reflects this. For every training sample, it picks a random integer in this distribution to determine how many tags it should use for this training sample. It shuffles the tags on the image and then truncates them to that number.</p><p></p><p>This means that during training the model sees everything from just \"1girl\" to a huge 224 token prompt! And thus, hopefully, learns to fill in the details for the user.</p><p></p><p>Certain tags, like <code>watermark</code>, are given priority and always included if present, so the model learns those tags strongly.</p><p></p><p>The tag alias list from danbooru is used to randomly mutate tags to synonyms so that bigASP understands all the different ways people might refer to a concept. Hopefully.</p><p></p><p>And, of course, the score tags. Just like Pony XL, bigASP encodes the score of a training sample as a range of tags of the form \"score_X\" and \"score_X_up\". However, to avoid the issues Pony XL ran into, only a random number of score tags are included in the training prompt. That way the model doesn't <em>require</em> \"score_8, score_7, score_6,\" etc in the prompt to work correctly. It's already used to just a single, or a couple score tags being present.</p><p></p><p>10% of the time the prompt is dropped completely, being set to an empty string. UCG, you know the deal. N.B.!!! I noticed in Stability's training scripts, and even HuggingFace's scripts, that instead of setting the prompt to an empty string, they set it to \"zero\" in the embedded space. This is different from how SD1.5 was trained. And it's different from how most of the SD front-ends do inference on SD. My theory is that it can actually be a big problem if SDXL is trained with \"zero\" dropping instead of empty prompt dropping. That means that during inference, if you use an empty prompt, you're telling the model to move away not from the \"average image\", but away from <em>only</em> images that happened to have no caption during training. That doesn't sound right. So for bigASP I opt to train with empty prompt dropping.</p><p></p><p>Additionally, Stability's training scripts include dropping of SDXL's other conditionings: original_size, crop, and target_size. I didn't see this behavior present in kohyaa's scripts, so I didn't use it. I'm not entirely sure what benefit it would provide.</p><p></p><p>I made sure that during training, the model gets a variety of batched prompt lengths. What I mean is, the prompts themselves for each training sample are certainly different lengths, but they all have to be padded to the longest example in a batch. So it's important to ensure that the model still sees a variety of lengths even after batching, otherwise it might overfit and only work on a specific range of prompt lengths. A quick Python Notebook to scan the training batches helped to verify a good distribution: 25% of batches were 225 tokens, 66% were 150, and 9% were 75 tokens. Though in future runs I might try to balance this more.</p><p></p><p>The rest of the training process is fairly standard. I found min-snr loss to work best in my experiments. Pure fp16 training did not work for me, so I had to resort to mixed precision with the model in fp32. Since the latents are already encoded, the VAE doesn't need to be loaded, saving precious memory. For generating sample images during training, I use a separate machine which grabs the saved checkpoints and generates the sample images. Again, that saves memory and compute on the training machine.</p><p></p><p>The final run uses an effective batch size of 2048, no EMA, no offset noise, PyTorch's AMP with just float16 (not bfloat16), 1e-4 learning rate, AdamW, min-snr loss, 0.1 weight decay, cosine annealing with linear warmup for 100,000 training samples, 10% UCG rate, text encoder 1 training is enabled, text encoded 2 is kept frozen, min_snr_gamma=5, PyTorch GradScaler with an initial scaling of 65k, 0.9 beta1, 0.999 beta2, 1e-8 eps. Everything is initialized from SDXL 1.0.</p><p></p><p>A validation dataset of 2048 images is used. Validation is performed every 50,000 samples to ensure that the model is not overfitting and to help guide hyperparameter selection. To help compare runs with different loss functions, validation is always performed with the basic loss function, even if training is using e.g. min-snr. And a checkpoint is saved every 500,000 samples. I find that it's really only helpful to look at sample images every million steps, so that process is run on every other checkpoint.</p><p></p><p>A stable training loss is also logged (I use Wandb to monitor my runs). Stable training loss is calculated at the same time as validation loss (one after the other). It's basically like a validation pass, except instead of using the validation dataset, it uses the first 2048 images from the training dataset, and uses a fixed seed. This provides a, well, stable training loss. SD's training loss is incredibly noisy, so this metric provides a much better gauge of how training loss is progressing.</p><p></p><p>The batch size I use is quite large compared to the few values I've seen online for finetuning runs. But it's informed by my experience with training other models. Large batch size wins in the long run, but is worse in the short run, so its efficacy can be challenging to measure on small scale benchmarks. Hopefully it was a win here. Full runs on SDXL are far too expensive for much experimentation here. But one immediate benefit of a large batch size is that iteration speed is faster, since optimization and gradient sync happens less frequently.</p><p></p><p>Training was done on an 8xH100 sxm5 machine rented in the cloud. On this machine, iteration speed is about 70 images/s. That means the whole run took about 5 solid days of computing. A staggering number for a hobbyist like me. Please send hugs. I hurt.</p><p></p><p>Training being done in the cloud was a big motivator for the use of precomputed latents. Takes me about an hour to get the data over to the machine to begin training. Theoretically the code could be set up to start training immediately, as the training data is streamed in for the first pass. It takes even the 8xH100 four hours to work through a million images, so data can be streamed faster than it's training. That way the machine isn't sitting idle burning money.</p><p></p><p>One disadvantage of precomputed latents is, of course, the lack of regularization from varying the latents between epochs. The model still sees a very large variety of prompts between epochs, but it won't see different crops of images or variations in VAE sampling. In future runs what I might do is have my local GPUs re-encoding the latents constantly and streaming those updated latents to the cloud machine. That way the latents change every few epochs. I didn't detect any overfitting on this run, so it might not be a big deal either way.</p><p></p><p>Finally, the loss curve. I noticed a rather large variance in the validation loss between different datasets, so it'll be hard for others to compare, but for what it's worth:</p><p></p><p><img src=\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/a22178be-aa1a-4d24-9dfc-7f9b964dfdae/width=525/a22178be-aa1a-4d24-9dfc-7f9b964dfdae.jpeg\" /></p><p></p>","name":"bigASP π","author":"nutbutter","datePublished":"2024-06-08T07:58:28.587Z","aggregateRating":{"@type":"AggregateRating","ratingValue":0,"reviewCount":0}}</script><meta name="next-head-count" content="78"/><link rel="preload" href="/_next/static/css/d6479ddd874d2274.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d6479ddd874d2274.css" data-n-g=""/><link rel="preload" href="/_next/static/css/3fd02c25bee5ff4e.css" as="style"/><link rel="stylesheet" href="/_next/static/css/3fd02c25bee5ff4e.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-f4cd6644073f7a6e.js" defer=""></script><script src="/_next/static/chunks/framework-a6a5e2919bd3592b.js" defer=""></script><script src="/_next/static/chunks/main-ff2791a1be3371f3.js" defer=""></script><script src="/_next/static/chunks/pages/_app-e71c0c3cec8e8780.js" defer=""></script><script src="/_next/static/chunks/2761-b83a312665e0dd42.js" defer=""></script><script src="/_next/static/chunks/6063-93c4d98aaa1ae059.js" defer=""></script><script src="/_next/static/chunks/2747-0c2d8f272584923f.js" defer=""></script><script src="/_next/static/chunks/9737-93037a3b073c98a4.js" defer=""></script><script src="/_next/static/chunks/622-7ee1fe9d1805a517.js" defer=""></script><script src="/_next/static/chunks/1740-7e11d3fb9f7c1583.js" defer=""></script><script src="/_next/static/chunks/pages/models/%5Bid%5D/%5B%5B...slug%5D%5D-2e28f7187d258f14.js" defer=""></script><script src="/_next/static/WtU0r6Sch6oPkk7c3Dx8V/_buildManifest.js" defer=""></script><script src="/_next/static/WtU0r6Sch6oPkk7c3Dx8V/_ssgManifest.js" defer=""></script><style data-emotion="mantine-global animation-1rclr57">@-webkit-keyframes animation-1rclr57{from{box-shadow:0 0 0.5px 0 #1971c2;opacity:0.6;}to{box-shadow:0 0 0.5px 4.4px #1971c2;opacity:0;}}@keyframes animation-1rclr57{from{box-shadow:0 0 0.5px 0 #1971c2;opacity:0.6;}to{box-shadow:0 0 0.5px 4.4px #1971c2;opacity:0;}}</style><style data-emotion="mantine-global animation-iavvt2">@-webkit-keyframes animation-iavvt2{from{box-shadow:0 0 0.5px 0 #e03131;opacity:0.6;}to{box-shadow:0 0 0.5px 4.4px #e03131;opacity:0;}}@keyframes animation-iavvt2{from{box-shadow:0 0 0.5px 0 #e03131;opacity:0.6;}to{box-shadow:0 0 0.5px 4.4px #e03131;opacity:0;}}</style><style data-emotion="mantine-global animation-151xhna">@-webkit-keyframes animation-151xhna{from,to{opacity:0.4;}50%{opacity:1;}}@keyframes animation-151xhna{from,to{opacity:0.4;}50%{opacity:1;}}</style><style data-emotion="mantine-global animation-p46y6l">@-webkit-keyframes animation-p46y6l{to{width:100%;opacity:0.3;}}@keyframes animation-p46y6l{to{width:100%;opacity:0.3;}}</style><style data-emotion="mantine-global animation-f1cmpm">@-webkit-keyframes animation-f1cmpm{0%{opacity:1;}100%{opacity:0;}}@keyframes animation-f1cmpm{0%{opacity:1;}100%{opacity:0;}}</style><style data-emotion="mantine-global animation-y1jct1">@-webkit-keyframes animation-y1jct1{from{-webkit-transform:translateY(-60%);-moz-transform:translateY(-60%);-ms-transform:translateY(-60%);transform:translateY(-60%);opacity:0;}to{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}}@keyframes animation-y1jct1{from{-webkit-transform:translateY(-60%);-moz-transform:translateY(-60%);-ms-transform:translateY(-60%);transform:translateY(-60%);opacity:0;}to{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}}</style><style data-emotion="mantine-global animation-n2gits">@-webkit-keyframes animation-n2gits{from{-webkit-transform:translateY(60%);-moz-transform:translateY(60%);-ms-transform:translateY(60%);transform:translateY(60%);opacity:0;}to{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}}@keyframes animation-n2gits{from{-webkit-transform:translateY(60%);-moz-transform:translateY(60%);-ms-transform:translateY(60%);transform:translateY(60%);opacity:0;}to{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}}</style><style data-emotion="mantine-global animation-ckxm50">@-webkit-keyframes animation-ckxm50{from{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}to{-webkit-transform:translateY(-60%);-moz-transform:translateY(-60%);-ms-transform:translateY(-60%);transform:translateY(-60%);opacity:0;}}@keyframes animation-ckxm50{from{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}to{-webkit-transform:translateY(-60%);-moz-transform:translateY(-60%);-ms-transform:translateY(-60%);transform:translateY(-60%);opacity:0;}}</style><style data-emotion="mantine-global animation-pud11">@-webkit-keyframes animation-pud11{from{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}to{-webkit-transform:translateY(60%);-moz-transform:translateY(60%);-ms-transform:translateY(60%);transform:translateY(60%);opacity:0;}}@keyframes animation-pud11{from{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);opacity:1;}to{-webkit-transform:translateY(60%);-moz-transform:translateY(60%);-ms-transform:translateY(60%);transform:translateY(60%);opacity:0;}}</style><style data-emotion="mantine-global animation-13t723b">@-webkit-keyframes animation-13t723b{0%{-webkit-background-position:0% 50%;background-position:0% 50%;}50%{-webkit-background-position:100% 50%;background-position:100% 50%;}100%{-webkit-background-position:0% 50%;background-position:0% 50%;}}@keyframes animation-13t723b{0%{-webkit-background-position:0% 50%;background-position:0% 50%;}50%{-webkit-background-position:100% 50%;background-position:100% 50%;}100%{-webkit-background-position:0% 50%;background-position:0% 50%;}}</style><style data-emotion="mantine-global animation-fe87cb">@-webkit-keyframes animation-fe87cb{0%{stroke:#FFD43B;opacity:1;}50%{stroke:#F59F00;opacity:0.7;}100%{stroke:#F08C00;opacity:1;}}@keyframes animation-fe87cb{0%{stroke:#FFD43B;opacity:1;}50%{stroke:#F59F00;opacity:0.7;}100%{stroke:#F08C00;opacity:1;}}</style><style data-emotion="mantine 1fwie01 yzuyvp 1kinfpg 3xbgk5 qo1k2 162hfne r67sg8 i4bfhs 15xbzqv 1gg8vod 1slh3ps h74xig ubxmi3 cf0b3j mubvgq 1y0kbdz gmpn1w 1u43i6u lw13s0 1avyp1d 4hkr0j 6v3wa0 1o1iezx im3jxi v5o495 ljqvxq usl46c 3l9jp8 8wi0qm n7f26y 1g4orza 1kh4pb9">.mantine-1fwie01{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;top:0;left:0;right:0;z-index:200;height:60px;max-height:60px;position:static;box-sizing:border-box;background-color:#1A1B1E;border-bottom:1px solid #2C2E33;}.mantine-yzuyvp{margin:-5px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0;}.mantine-1kinfpg{box-sizing:border-box;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:5px;-webkit-flex-basis:0px;-ms-flex-preferred-size:0px;flex-basis:0px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:unset;padding-left:0;}@media (min-width: 576px){.mantine-1kinfpg{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 768px){.mantine-1kinfpg{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 992px){.mantine-1kinfpg{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 1200px){.mantine-1kinfpg{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 1400px){.mantine-1kinfpg{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}.mantine-3xbgk5{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;height:100%;overflow:visible;}.mantine-qo1k2{white-space:nowrap;height:100%;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.mantine-162hfne{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:18px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:rgba(224, 49, 49, 0.2);color:#ffc9c9;}.mantine-162hfne:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-162hfne:focus:not(:focus-visible){outline:none;}.mantine-162hfne:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-162hfne:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-162hfne:hover{background-color:rgba(240, 62, 62, 0.25);}}@media (hover: none){.mantine-162hfne:active{background-color:rgba(240, 62, 62, 0.25);}}.mantine-162hfne:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-162hfne:disabled,.mantine-162hfne[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-162hfne:disabled:active,.mantine-162hfne[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-162hfne[data-loading]{pointer-events:none;}.mantine-162hfne[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-r67sg8{box-sizing:border-box;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;padding:5px;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:50%;}@media (min-width: 576px){.mantine-r67sg8{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 768px){.mantine-r67sg8{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 992px){.mantine-r67sg8{-webkit-flex-basis:33.333333333333336%;-ms-flex-preferred-size:33.333333333333336%;flex-basis:33.333333333333336%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:33.333333333333336%;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;}}@media (min-width: 1200px){.mantine-r67sg8{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 1400px){.mantine-r67sg8{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}.mantine-i4bfhs{box-sizing:border-box;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:5px;-webkit-flex-basis:0px;-ms-flex-preferred-size:0px;flex-basis:0px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:unset;}@media (min-width: 576px){.mantine-i4bfhs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 768px){.mantine-i4bfhs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 992px){.mantine-i4bfhs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 1200px){.mantine-i4bfhs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}@media (min-width: 1400px){.mantine-i4bfhs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}}.mantine-15xbzqv{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:26px;padding-left:8px;padding-right:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:rgba(25, 113, 194, 0.2);color:#a5d8ff;border-top-right-radius:0;border-bottom-right-radius:0;padding-left:12px;padding-right:4px;padding-top:8px;padding-bottom:8px;height:auto;}.mantine-15xbzqv:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-15xbzqv:focus:not(:focus-visible){outline:none;}.mantine-15xbzqv:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-15xbzqv:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-15xbzqv:hover{background-color:rgba(28, 126, 214, 0.25);}}@media (hover: none){.mantine-15xbzqv:active{background-color:rgba(28, 126, 214, 0.25);}}.mantine-15xbzqv:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-15xbzqv:disabled,.mantine-15xbzqv[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-15xbzqv:disabled:active,.mantine-15xbzqv[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-15xbzqv[data-loading]{pointer-events:none;}.mantine-15xbzqv[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-1gg8vod{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;gap:8px;}.mantine-1gg8vod>*{box-sizing:border-box;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;}.mantine-1slh3ps{font-family:inherit;-webkit-tap-highlight-color:transparent;color:inherit;font-size:inherit;line-height:inherit;-webkit-text-decoration:none;text-decoration:none;font-weight:inherit;}.mantine-1slh3ps:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-1slh3ps:focus:not(:focus-visible){outline:none;}.mantine-h74xig{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:18px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:rgba(25, 113, 194, 0.2);color:#a5d8ff;border-top-left-radius:0;border-bottom-left-radius:0;padding-right:4px;padding-left:4px;padding-top:8px;padding-bottom:8px;height:auto;}.mantine-h74xig:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-h74xig:focus:not(:focus-visible){outline:none;}.mantine-h74xig:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-h74xig:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-h74xig:hover{background-color:rgba(28, 126, 214, 0.25);}}@media (hover: none){.mantine-h74xig:active{background-color:rgba(28, 126, 214, 0.25);}}.mantine-h74xig:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-h74xig:disabled,.mantine-h74xig[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-h74xig:disabled:active,.mantine-h74xig[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-h74xig[data-loading]{pointer-events:none;}.mantine-h74xig[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-ubxmi3{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;border:1px solid transparent;background-color:transparent;color:#e9ecef;position:relative;height:28px;min-height:28px;width:28px;min-width:28px;border-radius:4px;padding:0;line-height:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}.mantine-ubxmi3:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-ubxmi3:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-ubxmi3:hover{background-color:rgba(52, 58, 64, 0.2);}}@media (hover: none){.mantine-ubxmi3:active{background-color:rgba(52, 58, 64, 0.2);}}.mantine-ubxmi3:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-ubxmi3:disabled,.mantine-ubxmi3[data-disabled]{color:#868e96;cursor:not-allowed;background-color:#343a40;border-color:#343a40;background-image:none;pointer-events:none;}.mantine-ubxmi3:disabled:active,.mantine-ubxmi3[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-ubxmi3[data-loading]{pointer-events:none;}.mantine-ubxmi3[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-cf0b3j{position:relative;display:block;}.mantine-mubvgq{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;}.mantine-mubvgq:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-mubvgq:focus:not(:focus-visible){outline:none;}.mantine-1y0kbdz{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:15.2px;color:#e9ecef;font-weight:700;background-color:rgba(52, 58, 64, 0.2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:32px;}.mantine-gmpn1w{width:70%;height:70%;color:#e9ecef;}.mantine-1u43i6u{-webkit-tap-highlight-color:transparent;box-sizing:border-box;position:relative;display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;width:38px;min-width:38px;height:38px;border-radius:32px;-webkit-text-decoration:none;text-decoration:none;border:0;background-color:transparent;padding:0;background-color:rgba(255,255,255,0.31);}.mantine-1u43i6u:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-1u43i6u:focus:not(:focus-visible){outline:none;}.mantine-lw13s0{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;gap:4px;}.mantine-lw13s0>*{box-sizing:border-box;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;}.mantine-4hkr0j{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:18px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid #373A40;background-color:#25262b;color:#fefefe;}.mantine-4hkr0j:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-4hkr0j:focus:not(:focus-visible){outline:none;}.mantine-4hkr0j:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-4hkr0j:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-4hkr0j:hover{background-color:#2C2E33;}}@media (hover: none){.mantine-4hkr0j:active{background-color:#2C2E33;}}.mantine-4hkr0j:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-4hkr0j:disabled,.mantine-4hkr0j[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-4hkr0j:disabled:active,.mantine-4hkr0j[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-4hkr0j[data-loading]{pointer-events:none;}.mantine-4hkr0j[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-6v3wa0{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:18px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid #373A40;background-color:#25262b;color:#fefefe;display:block;}.mantine-6v3wa0:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-6v3wa0:focus:not(:focus-visible){outline:none;}.mantine-6v3wa0:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-6v3wa0:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-6v3wa0:hover{background-color:#2C2E33;}}@media (hover: none){.mantine-6v3wa0:active{background-color:#2C2E33;}}.mantine-6v3wa0:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-6v3wa0:disabled,.mantine-6v3wa0[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-6v3wa0:disabled:active,.mantine-6v3wa0[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-6v3wa0[data-loading]{pointer-events:none;}.mantine-6v3wa0[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}@container (min-width: 992px) and (max-width: 1440px){.mantine-6v3wa0{display:none;}}.mantine-1o1iezx{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:18px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid #373A40;background-color:#25262b;color:#fefefe;background-color:rgba(255, 224, 102, 0.1);background-image:linear-gradient(90deg, rgba(255, 212, 59, 0), rgba(255, 212, 59, 0.1), rgba(255, 212, 59, 0));-webkit-background-size:50px;background-size:50px;-webkit-background-position:-300% 50%;background-position:-300% 50%;background-repeat:no-repeat;color:#ffe066;-webkit-animation:button-highlight 5s linear infinite;animation:button-highlight 5s linear infinite;will-change:background-position;}.mantine-1o1iezx:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-1o1iezx:focus:not(:focus-visible){outline:none;}.mantine-1o1iezx:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-1o1iezx:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-1o1iezx:hover{background-color:#2C2E33;}}@media (hover: none){.mantine-1o1iezx:active{background-color:#2C2E33;}}.mantine-1o1iezx:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-1o1iezx:disabled,.mantine-1o1iezx[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-1o1iezx:disabled:active,.mantine-1o1iezx[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-1o1iezx[data-loading]{pointer-events:none;}.mantine-1o1iezx[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-im3jxi{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:18px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:32px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:transparent;color:#e9ecef;padding:8px 10px 8px 16px;font-size:16px;font-weight:500;display:none;}.mantine-im3jxi:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-im3jxi:focus:not(:focus-visible){outline:none;}.mantine-im3jxi:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-im3jxi:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-im3jxi:hover{background-color:rgba(52, 58, 64, 0.2);}}@media (hover: none){.mantine-im3jxi:active{background-color:rgba(52, 58, 64, 0.2);}}.mantine-im3jxi:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-im3jxi:disabled,.mantine-im3jxi[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-im3jxi:disabled:active,.mantine-im3jxi[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-im3jxi[data-loading]{pointer-events:none;}.mantine-im3jxi[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:32px;cursor:not-allowed;}.mantine-im3jxi[data-active="true"]{background:#373A40;color:#fefefe;}@container (min-width: 992px) and (max-width: 1440px){.mantine-im3jxi{display:block;}}.mantine-v5o495{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:18px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:#1971c2;color:#fefefe;padding-right:10px;padding-left:10px;}.mantine-v5o495:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-v5o495:focus:not(:focus-visible){outline:none;}.mantine-v5o495:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-v5o495:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-v5o495:hover{background-color:#1864ab;}}@media (hover: none){.mantine-v5o495:active{background-color:#1864ab;}}.mantine-v5o495:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-v5o495:disabled,.mantine-v5o495[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-v5o495:disabled:active,.mantine-v5o495[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-v5o495[data-loading]{pointer-events:none;}.mantine-v5o495[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-ljqvxq{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;color:inherit;font-size:inherit;line-height:1.55;-webkit-text-decoration:none;text-decoration:none;}.mantine-ljqvxq:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-ljqvxq:focus:not(:focus-visible){outline:none;}.mantine-usl46c{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:30px;padding-left:14px;padding-right:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:transparent;color:#e9ecef;}.mantine-usl46c:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-usl46c:focus:not(:focus-visible){outline:none;}.mantine-usl46c:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-usl46c:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-usl46c:hover{background-color:rgba(52, 58, 64, 0.2);}}@media (hover: none){.mantine-usl46c:active{background-color:rgba(52, 58, 64, 0.2);}}.mantine-usl46c:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-usl46c:disabled,.mantine-usl46c[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-usl46c:disabled:active,.mantine-usl46c[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-usl46c[data-loading]{pointer-events:none;}.mantine-usl46c[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-3l9jp8{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;border:1px solid transparent;background-color:transparent;color:#e9ecef;position:relative;height:34px;min-height:34px;width:34px;min-width:34px;border-radius:32px;padding:0;line-height:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}.mantine-3l9jp8:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-3l9jp8:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-3l9jp8:hover{background-color:rgba(52, 58, 64, 0.2);}}@media (hover: none){.mantine-3l9jp8:active{background-color:rgba(52, 58, 64, 0.2);}}.mantine-3l9jp8:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-3l9jp8:disabled,.mantine-3l9jp8[data-disabled]{color:#868e96;cursor:not-allowed;background-color:#343a40;border-color:#343a40;background-image:none;pointer-events:none;}.mantine-3l9jp8:disabled:active,.mantine-3l9jp8[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-3l9jp8[data-loading]{pointer-events:none;}.mantine-3l9jp8[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:32px;cursor:not-allowed;}.mantine-8wi0qm{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:30px;padding-left:14px;padding-right:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:rgba(240, 140, 0, 0.2);color:#ffec99;padding-left:4px;padding-right:10px;}.mantine-8wi0qm:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-8wi0qm:focus:not(:focus-visible){outline:none;}.mantine-8wi0qm:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-8wi0qm:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-8wi0qm:hover{background-color:rgba(245, 159, 0, 0.25);}}@media (hover: none){.mantine-8wi0qm:active{background-color:rgba(245, 159, 0, 0.25);}}.mantine-8wi0qm:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-8wi0qm:disabled,.mantine-8wi0qm[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-8wi0qm:disabled:active,.mantine-8wi0qm[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-8wi0qm[data-loading]{pointer-events:none;}.mantine-8wi0qm[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}.mantine-n7f26y{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;color:inherit;font-size:20px;line-height:1.55;-webkit-text-decoration:none;text-decoration:none;font-weight:500;}.mantine-n7f26y:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-n7f26y:focus:not(:focus-visible){outline:none;}.mantine-1g4orza{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:10px;}.mantine-1kh4pb9{-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;cursor:pointer;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;font-size:16px;background-color:transparent;text-align:left;color:#C1C2C5;-webkit-text-decoration:none;text-decoration:none;box-sizing:border-box;height:36px;padding-left:12px;padding-right:18px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;-webkit-tap-highlight-color:transparent;display:inline-block;width:auto;border-radius:4px;font-weight:600;position:relative;line-height:1;font-size:14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border:1px solid transparent;background-color:#1971c2;color:#fefefe;}.mantine-1kh4pb9:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-1kh4pb9:focus:not(:focus-visible){outline:none;}.mantine-1kh4pb9:focus{outline-offset:2px;outline:2px solid #1c7ed6;}.mantine-1kh4pb9:focus:not(:focus-visible){outline:none;}@media (hover: hover){.mantine-1kh4pb9:hover{background-color:#1864ab;}}@media (hover: none){.mantine-1kh4pb9:active{background-color:#1864ab;}}.mantine-1kh4pb9:active{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}.mantine-1kh4pb9:disabled,.mantine-1kh4pb9[data-disabled]{border-color:transparent;background-color:#373A40;color:#25262b;cursor:not-allowed;background-image:none;pointer-events:none;}.mantine-1kh4pb9:disabled:active,.mantine-1kh4pb9[data-disabled]:active{-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}.mantine-1kh4pb9[data-loading]{pointer-events:none;}.mantine-1kh4pb9[data-loading]::before{content:"";position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;background-color:rgba(26, 27, 30, 0.5);border-radius:4px;cursor:not-allowed;}</style></head><body class="dark"><div id="__next"><style data-emotion="css-global zl4edr">html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;}body{margin:0;}article,aside,footer,header,nav,section,figcaption,figure,main{display:block;}h1{font-size:2em;}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace,monospace;font-size:1em;}a{background:transparent;text-decoration-skip:objects;}a:active,a:hover{outline-width:0;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;}b,strong{font-weight:bolder;}code,kbp,samp{font-family:monospace,monospace;font-size:1em;}dfn{font-style:italic;}mark{background-color:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}audio,video{display:inline-block;}audio:not([controls]){display:none;height:0;}img{border-style:none;vertical-align:middle;}svg:not(:root){overflow:hidden;}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible;}button,select{text-transform:none;}button,[type=reset],[type=submit]{-webkit-appearance:button;}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0;}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText;}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{display:inline-block;vertical-align:baseline;}textarea{overflow:auto;}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0;}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto;}[type=search]{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;}::-webkit-file-upload-button{-webkit-appearance:button;-moz-appearance:button;-ms-appearance:button;appearance:button;font:inherit;}details,menu{display:block;}summary{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}canvas{display:inline-block;}template{display:none;}[hidden]{display:none;}</style><style data-emotion="css-global j77l5l">*,*::before,*::after{box-sizing:border-box;}html{-webkit-print-color-scheme:dark;color-scheme:dark;}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;background-color:#1A1B1E;color:#C1C2C5;line-height:1.55;font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}</style><div class="flex flex-1 overflow-hidden"><div id="main" class="relative flex h-full flex-col @container flex-1"><div class="flex h-full flex-1 flex-col"><header class="mantine-Header-root mantine-1fwie01"><div class="h-full hidden"></div><div class="mantine-Grid-root flex h-full flex-nowrap items-center justify-between px-2 @md:px-4 mantine-yzuyvp"><div class="mantine-Grid-col mantine-1kinfpg"><div class="flex items-center gap-2.5"><div class="Logo_logo__5xyYV"><a href="/"><svg class="Logo_svg__0CcnB @sm:hidden" xmlns="http://www.w3.org/2000/svg" viewBox="-1 0 22.7 22.7"><g><linearGradient id="innerGradient" gradientUnits="userSpaceOnUse" x1="10.156" y1="22.45" x2="10.156" y2="2.4614" gradientTransform="matrix(1 0 0 -1 0 24)"><stop offset="0" style="stop-color:#081692"></stop><stop offset="1" style="stop-color:#1E043C"></stop></linearGradient><linearGradient id="outerGradient" gradientUnits="userSpaceOnUse" x1="10.156" y1="22.45" x2="10.156" y2="2.45" gradientTransform="matrix(1 0 0 -1 0 24)"><stop offset="0" style="stop-color:#1284F7"></stop><stop offset="1" style="stop-color:#0A20C9"></stop></linearGradient><path style="fill:url(#innerGradient)" d="M1.5,6.6v10l8.7,5l8.7-5v-10l-8.7-5L1.5,6.6z"></path><path style="fill:url(#outerGradient)" d="M10.2,4.7l5.9,3.4V15l-5.9,3.4L4.2,15V8.1 L10.2,4.7 M10.2,1.6l-8.7,5v10l8.7,5l8.7-5v-10C18.8,6.6,10.2,1.6,10.2,1.6z"></path><path style="fill:#fff" d="M11.8,12.4l-1.7,1l-1.7-1v-1.9l1.7-1l1.7,1h2.1V9.3l-3.8-2.2L6.4,9.3v4.3l3.8,2.2l3.8-2.2v-1.2H11.8z"></path></g></svg><svg class="Logo_svg__0CcnB @max-sm:hidden" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 107 22.7"><defs><linearGradient id="prideGradient" gradientTransform="rotate(45)"><stop offset="0%" stop-color="#E04A4A"></stop><stop offset="20%" stop-color="#E04A4A"></stop><stop offset="40%" stop-color="#E0B54A"></stop><stop offset="60%" stop-color="#4AE0D4"></stop><stop offset="80%" stop-color="#4A6AE0"></stop><stop offset="100%" stop-color="#D44AE0"></stop></linearGradient></defs><g><path class="Logo_c__5WyIP" d="M20.8,1.7H3.7L1.5,4.1v15l2.3,2.3h17.1v-5.2H6.7V7h14.1V1.7z"></path><path class="Logo_ivit__SHcJ3" d="M76.1,1.7H56.6V7h7.2v14.3H69V7h7C76,7,76.1,1.7,76.1,1.7z M23.2,1.8v19.5h5.2V1.8C28.4,1.8,23.2,1.8,23.2,1.8z M30.8,1.8 v19.5h7.6l8.3-8.3V1.8h-5.2v8.3l-5.4,6V1.8C36.1,1.8,30.8,1.8,30.8,1.8z M49.1,1.8v19.5h5.2V1.8C54.3,1.8,49.1,1.8,49.1,1.8z"></path><path class="Logo_ai__HJ7wY" d="M100.3,1.8v19.5h5.2V1.8H100.3z M95.6,1.8H80.8l-2.3,2.3v17.2h5.2v-7.1h8.9v7.1h5.2V4.1C97.8,4.1,95.6,1.8,95.6,1.8z M92.7,8.9h-8.9V7h8.9V8.9z"></path><path class="Logo_accent__l3oG0" d="M46.7,16.2v5.1h-5.1"></path></g></svg></a></div><a class="mantine-UnstyledButton-root mantine-Button-root relative z-10 cursor-pointer px-2 mantine-162hfne" type="button" data-button="true" aria-haspopup="dialog" aria-expanded="false" aria-controls="mantine-R8pbaj3qb6-dropdown" id="mantine-R8pbaj3qb6-target" href="/pricing?utm_campaign=icon_heart"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="red" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-heart "><path d="M19.5 12.572l-7.5 7.428l-7.5 -7.428a5 5 0 1 1 7.5 -6.566a5 5 0 1 1 7.5 6.572"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-right "><path d="M9 6l6 6l-6 6"></path></svg></span></div></a></div></div><div class="mantine-Grid-col @max-md:hidden mantine-r67sg8"></div><div class="mantine-Grid-col flex items-center justify-end gap-3 @max-md:hidden mantine-i4bfhs"><div class="flex items-center gap-3"><div class="flex items-center" aria-haspopup="menu" aria-expanded="false" aria-controls="mantine-Rlpbaj3qb6-dropdown" id="mantine-Rlpbaj3qb6-target"><button class="mantine-UnstyledButton-root mantine-Button-root h-auto px-3 py-2 @md:pr-1 mantine-15xbzqv" type="button" data-button="true" data-activity="create:navbar"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><div class="mantine-Group-root mantine-1gg8vod"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brush "><path d="M3 21v-4a4 4 0 1 1 4 4h-4"></path><path d="M21 3a16 16 0 0 0 -12.8 10.2"></path><path d="M21 3a16 16 0 0 1 -10.2 12.8"></path><path d="M10.6 9a9 9 0 0 1 4.4 4.4"></path></svg><div class="mantine-Text-root hide-mobile mantine-1slh3ps">Create</div></div></span></div></button><button class="mantine-UnstyledButton-root mantine-Button-root @max-md:hidden mantine-h74xig" type="button" data-button="true"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-down "><path d="M6 9l6 6l6 -6"></path></svg></span></div></button></div></div><a class="mantine-UnstyledButton-root mantine-Button-root mantine-4hkr0j" type="button" data-button="true" rel="nofollow" href="/login?returnUrl=/models/502468"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Sign In</span></div></a><button class="mantine-UnstyledButton-root flex items-center @md:rounded-[32px] mantine-mubvgq" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="mantine-Rdpbaj3qb6-dropdown" id="mantine-Rdpbaj3qb6-target"><div class="flex items-center gap-2 @max-md:hidden hidden"><div class="mantine-Group-root mantine-1gg8vod"><div class="mantine-Indicator-root mantine-cf0b3j"><div class="mantine-Avatar-root mantine-1u43i6u"><div class="mantine-1y0kbdz mantine-Avatar-placeholder"><svg class="mantine-gmpn1w mantine-Avatar-placeholderIcon" width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.877014 7.49988C0.877014 3.84219 3.84216 0.877045 7.49985 0.877045C11.1575 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1575 14.1227 7.49985 14.1227C3.84216 14.1227 0.877014 11.1575 0.877014 7.49988ZM7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.97196 2.38774 10.3131 3.30727 11.3213C4.19074 9.94119 5.73818 9.02499 7.50023 9.02499C9.26206 9.02499 10.8093 9.94097 11.6929 11.3208C12.6121 10.3127 13.1727 8.97172 13.1727 7.49988C13.1727 4.36686 10.6328 1.82704 7.49985 1.82704ZM10.9818 11.9787C10.2839 10.7795 8.9857 9.97499 7.50023 9.97499C6.01458 9.97499 4.71624 10.7797 4.01845 11.9791C4.97952 12.7272 6.18765 13.1727 7.49985 13.1727C8.81227 13.1727 10.0206 12.727 10.9818 11.9787ZM5.14999 6.50487C5.14999 5.207 6.20212 4.15487 7.49999 4.15487C8.79786 4.15487 9.84999 5.207 9.84999 6.50487C9.84999 7.80274 8.79786 8.85487 7.49999 8.85487C6.20212 8.85487 5.14999 7.80274 5.14999 6.50487ZM7.49999 5.10487C6.72679 5.10487 6.09999 5.73167 6.09999 6.50487C6.09999 7.27807 6.72679 7.90487 7.49999 7.90487C8.27319 7.90487 8.89999 7.27807 8.89999 6.50487C8.89999 5.73167 8.27319 5.10487 7.49999 5.10487Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></div></div></div></div></div><div class="Burger_root__0ZjJO"><div class="Burger_burger__oacyO"></div></div></button></div><div class="mantine-Grid-col flex items-center justify-end @md:hidden mantine-i4bfhs"><div class="flex items-center gap-1"><div class="flex items-center" aria-haspopup="menu" aria-expanded="false" aria-controls="mantine-R69baj3qb6-dropdown" id="mantine-R69baj3qb6-target"><button class="mantine-UnstyledButton-root mantine-Button-root h-auto px-3 py-2 @md:pr-1 mantine-15xbzqv" type="button" data-button="true" data-activity="create:navbar"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><div class="mantine-Group-root mantine-1gg8vod"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brush "><path d="M3 21v-4a4 4 0 1 1 4 4h-4"></path><path d="M21 3a16 16 0 0 0 -12.8 10.2"></path><path d="M21 3a16 16 0 0 1 -10.2 12.8"></path><path d="M10.6 9a9 9 0 0 1 4.4 4.4"></path></svg><div class="mantine-Text-root hide-mobile mantine-1slh3ps">Create</div></div></span></div></button><button class="mantine-UnstyledButton-root mantine-Button-root @max-md:hidden mantine-h74xig" type="button" data-button="true"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-down "><path d="M6 9l6 6l6 -6"></path></svg></span></div></button></div><button class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-ubxmi3" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-search "><path d="M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0"></path><path d="M21 21l-6 -6"></path></svg></button><button class="mantine-UnstyledButton-root flex items-center @md:rounded-[32px] mantine-mubvgq" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="mantine-Ru9baj3qb6-dropdown" id="mantine-Ru9baj3qb6-target"><div class="flex items-center gap-2 @max-md:hidden hidden"><div class="mantine-Group-root mantine-1gg8vod"><div class="mantine-Indicator-root mantine-cf0b3j"><div class="mantine-Avatar-root mantine-1u43i6u"><div class="mantine-1y0kbdz mantine-Avatar-placeholder"><svg class="mantine-gmpn1w mantine-Avatar-placeholderIcon" width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.877014 7.49988C0.877014 3.84219 3.84216 0.877045 7.49985 0.877045C11.1575 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1575 14.1227 7.49985 14.1227C3.84216 14.1227 0.877014 11.1575 0.877014 7.49988ZM7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.97196 2.38774 10.3131 3.30727 11.3213C4.19074 9.94119 5.73818 9.02499 7.50023 9.02499C9.26206 9.02499 10.8093 9.94097 11.6929 11.3208C12.6121 10.3127 13.1727 8.97172 13.1727 7.49988C13.1727 4.36686 10.6328 1.82704 7.49985 1.82704ZM10.9818 11.9787C10.2839 10.7795 8.9857 9.97499 7.50023 9.97499C6.01458 9.97499 4.71624 10.7797 4.01845 11.9791C4.97952 12.7272 6.18765 13.1727 7.49985 13.1727C8.81227 13.1727 10.0206 12.727 10.9818 11.9787ZM5.14999 6.50487C5.14999 5.207 6.20212 4.15487 7.49999 4.15487C8.79786 4.15487 9.84999 5.207 9.84999 6.50487C9.84999 7.80274 8.79786 8.85487 7.49999 8.85487C6.20212 8.85487 5.14999 7.80274 5.14999 6.50487ZM7.49999 5.10487C6.72679 5.10487 6.09999 5.73167 6.09999 6.50487C6.09999 7.27807 6.72679 7.90487 7.49999 7.90487C8.27319 7.90487 8.89999 7.27807 8.89999 6.50487C8.89999 5.73167 8.27319 5.10487 7.49999 5.10487Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></div></div></div></div></div><div class="Burger_root__0ZjJO"><div class="Burger_burger__oacyO"></div></div></button></div></div></div><style data-emotion="css-global 1yi5n03">:root{--mantine-header-height:60px;}</style></header><div class="flex flex-1 overflow-hidden"><div class="scroll-area flex-1 @container mantine-1avyp1d"><main class="flex-1"><div class="sticky inset-x-0 top-0 z-50 mb-3 bg-gray-1 shadow transition-transform dark:bg-dark-6"><div class="flex justify-between gap-2 px-2 py-1 flex-wrap"><div class="flex items-center gap-1 overflow-x-auto overflow-y-hidden"><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-4hkr0j" type="button" data-button="true" href="/"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-home "><path d="M5 12l-2 0l9 -9l9 9l-2 0"></path><path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7"></path><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6"></path></svg><span class="text-base font-medium capitalize">home</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 bg-gray-4 dark:bg-dark-4 mantine-4hkr0j" type="button" data-button="true" href="/models"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-category "><path d="M4 4h6v6h-6z"></path><path d="M14 4h6v6h-6z"></path><path d="M4 14h6v6h-6z"></path><path d="M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path></svg><span class="text-base font-medium capitalize">models</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-4hkr0j" type="button" data-button="true" href="/images"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-photo "><path d="M15 8h.01"></path><path d="M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12z"></path><path d="M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5"></path><path d="M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3"></path></svg><span class="text-base font-medium capitalize">images</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-4hkr0j" type="button" data-button="true" href="/videos"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-video "><path d="M15 10l4.553 -2.276a1 1 0 0 1 1.447 .894v6.764a1 1 0 0 1 -1.447 .894l-4.553 -2.276v-4z"></path><path d="M3 6m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path></svg><span class="text-base font-medium capitalize">videos</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-6v3wa0" type="button" data-button="true" href="/posts"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-layout-list "><path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path><path d="M4 14m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path></svg><span class="text-base font-medium capitalize">posts</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-4hkr0j" type="button" data-button="true" href="/articles"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-file-text "><path d="M14 3v4a1 1 0 0 0 1 1h4"></path><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"></path><path d="M9 9l1 0"></path><path d="M9 13l6 0"></path><path d="M9 17l6 0"></path></svg><span class="text-base font-medium capitalize">articles</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-6v3wa0" type="button" data-button="true" href="/bounties"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-moneybag "><path d="M9.5 3h5a1.5 1.5 0 0 1 1.5 1.5a3.5 3.5 0 0 1 -3.5 3.5h-1a3.5 3.5 0 0 1 -3.5 -3.5a1.5 1.5 0 0 1 1.5 -1.5z"></path><path d="M4 17v-1a8 8 0 1 1 16 0v1a4 4 0 0 1 -4 4h-8a4 4 0 0 1 -4 -4z"></path></svg><span class="text-base font-medium capitalize">bounties</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-6v3wa0" type="button" data-button="true" href="/tools"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-tools "><path d="M3 21h4l13 -13a1.5 1.5 0 0 0 -4 -4l-13 13v4"></path><path d="M14.5 5.5l4 4"></path><path d="M12 8l-5 -5l-4 4l5 5"></path><path d="M7 8l-1.5 1.5"></path><path d="M16 12l5 5l-4 4l-5 -5"></path><path d="M16 17l-1.5 1.5"></path></svg><span class="text-base font-medium capitalize">tools</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-6v3wa0" type="button" data-button="true" href="/challenges"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-trophy "><path d="M8 21l8 0"></path><path d="M12 17l0 4"></path><path d="M7 4l10 0"></path><path d="M17 4v8a5 5 0 0 1 -10 0v-8"></path><path d="M5 9m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path><path d="M19 9m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path></svg><span class="text-base font-medium capitalize">challenges</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-6v3wa0" type="button" data-button="true" href="/events"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-calendar "><path d="M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z"></path><path d="M16 3v4"></path><path d="M8 3v4"></path><path d="M4 11h16"></path><path d="M11 15h1"></path><path d="M12 15v3"></path></svg><span class="text-base font-medium capitalize">events</span></span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root h-8 rounded-full border-none py-2 pl-3 pr-4 mantine-1o1iezx" type="button" data-button="true" href="/shop"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 flex gap-2 items-center capitalize overflow-visible mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-shopping-bag "><path d="M6.331 8h11.339a2 2 0 0 1 1.977 2.304l-1.255 8.152a3 3 0 0 1 -2.966 2.544h-6.852a3 3 0 0 1 -2.965 -2.544l-1.255 -8.152a2 2 0 0 1 1.977 -2.304z"></path><path d="M9 11v-5a3 3 0 0 1 6 0v5"></path></svg><span class="text-base font-medium capitalize">shop</span></span></div></a><button class="mantine-UnstyledButton-root mantine-Button-root mantine-im3jxi" type="button" data-button="true" data-active="false" aria-haspopup="menu" aria-expanded="false" aria-controls="mantine-R2aqjaj3qb6-dropdown" id="mantine-R2aqjaj3qb6-target"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><div class="mantine-Group-root mantine-lw13s0">More<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-caret-down "><path d="M6 10l6 6l6 -6h-12"></path></svg></div></span></div></button></div></div></div><div class="absolute inset-0 flex items-center justify-center"><div class="flex flex-col items-center gap-2 p-3"><svg xmlns="http://www.w3.org/2000/svg" width="56" height="56" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-eye-off "><path d="M10.585 10.587a2 2 0 0 0 2.829 2.828"></path><path d="M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87"></path><path d="M3 3l18 18"></path></svg><div class="mantine-Text-root mantine-n7f26y">Sensitive Content</div><div class="mantine-Text-root mantine-ljqvxq">This content has been marked as NSFW</div><a class="mantine-UnstyledButton-root mantine-Button-root mantine-1kh4pb9" type="button" data-button="true" href="/login?returnUrl=/models/502468"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-Button-icon mantine-Button-leftIcon mantine-1g4orza"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-key "><path d="M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z"></path><path d="M15 9h.01"></path></svg></span><span class="mantine-qo1k2 mantine-Button-label">Log in to view</span></div></a></div></div></main><footer class="sticky inset-x-0 bottom-0 z-50 mt-3 transition-transform"><div class="absolute bottom-[var(--footer-height)] right-2 group-[.no-scroll]:right-4"><div class="relative mb-2 flex gap-2 group-[.no-scroll]:mb-3"><button class="mantine-UnstyledButton-root mantine-Button-root transition-transform mantine-v5o495" style="transform:translateY(140%)" type="button" data-button="true"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-arrow-up "><path d="M12 5l0 14"></path><path d="M18 11l-6 -6"></path><path d="M6 11l6 -6"></path></svg></span></div></button><span class="mantine-UnstyledButton-root mantine-Button-root mantine-v5o495" type="button" data-button="true"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-message-chatbot "><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z"></path><path d="M9.5 9h.01"></path><path d="M14.5 9h.01"></path><path d="M9.5 13a3.5 3.5 0 0 0 5 0"></path></svg></span></div></span></div></div><div class=" relative flex h-[var(--footer-height)] w-full items-center gap-2 overflow-x-auto bg-gray-0 p-1 px-2 @sm:gap-3 dark:bg-dark-7 border-t border-gray-3 dark:border-dark-4" style="scrollbar-width:thin"><div class="mantine-Text-root select-none text-nowrap font-bold mantine-ljqvxq">Β© Civitai 2025</div><div class="flex items-center"><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" href="/creator-program"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Creators</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" href="/content/tos"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Terms of Service</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" href="/content/privacy"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Privacy</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" href="/safety"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Safety</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" href="/newsroom"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Newsroom</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" target="_blank" rel="nofollow noreferrer" href="/github/wiki/REST-API-Reference"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">API</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" target="_blank" rel="nofollow noreferrer" href="https://status.civitai.com"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Status</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" target="_blank" rel="nofollow noreferrer" href="/wiki"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">Wiki</span></div></a><a class="mantine-UnstyledButton-root mantine-Button-root px-2.5 @max-sm:px-1 mantine-usl46c" type="button" data-button="true" target="_blank" rel="nofollow noreferrer" href="/education"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">π‘Education</span></div></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/discord" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-discord "><path d="M8 12a1 1 0 1 0 2 0a1 1 0 0 0 -2 0"></path><path d="M14 12a1 1 0 1 0 2 0a1 1 0 0 0 -2 0"></path><path d="M15.5 17c0 1 1.5 3 2 3c1.5 0 2.833 -1.667 3.5 -3c.667 -1.667 .5 -5.833 -1.5 -11.5c-1.457 -1.015 -3 -1.34 -4.5 -1.5l-.972 1.923a11.913 11.913 0 0 0 -4.053 0l-.975 -1.923c-1.5 .16 -3.043 .485 -4.5 1.5c-2 5.667 -2.167 9.833 -1.5 11.5c.667 1.333 2 3 3.5 3c.5 0 2 -2 2 -3"></path><path d="M7 16.5c3.5 1 6.5 1 10 0"></path></svg></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/twitter" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-x "><path d="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/instagram" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-instagram "><path d="M4 4m0 4a4 4 0 0 1 4 -4h8a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-8a4 4 0 0 1 -4 -4z"></path><path d="M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path><path d="M16.5 7.5l0 .01"></path></svg></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/youtube" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-youtube "><path d="M2 8a4 4 0 0 1 4 -4h12a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-12a4 4 0 0 1 -4 -4v-8z"></path><path d="M10 9l5 3l-5 3z"></path></svg></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/tiktok" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-tiktok "><path d="M21 7.917v4.034a9.948 9.948 0 0 1 -5 -1.951v4.5a6.5 6.5 0 1 1 -8 -6.326v4.326a2.5 2.5 0 1 0 4 2v-11.5h4.083a6.005 6.005 0 0 0 4.917 4.917z"></path></svg></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/reddit" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-reddit "><path d="M12 8c2.648 0 5.028 .826 6.675 2.14a2.5 2.5 0 0 1 2.326 4.36c0 3.59 -4.03 6.5 -9 6.5c-4.875 0 -8.845 -2.8 -9 -6.294l-1 -.206a2.5 2.5 0 0 1 2.326 -4.36c1.646 -1.313 4.026 -2.14 6.674 -2.14z"></path><path d="M12 8l1 -5l6 1"></path><path d="M19 4m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><circle cx="9" cy="13" r=".5" fill="currentColor"></circle><circle cx="15" cy="13" r=".5" fill="currentColor"></circle><path d="M10 17c.667 .333 1.333 .5 2 .5s1.333 -.167 2 -.5"></path></svg></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/github" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-github "><path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5"></path></svg></a><a class="mantine-UnstyledButton-root mantine-ActionIcon-root mantine-3l9jp8" href="/twitch" target="_blank" rel="nofollow noreferrer"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-twitch "><path d="M4 5v11a1 1 0 0 0 1 1h2v4l4 -4h5.584c.266 0 .52 -.105 .707 -.293l2.415 -2.414c.187 -.188 .293 -.442 .293 -.708v-8.585a1 1 0 0 0 -1 -1h-14a1 1 0 0 0 -1 1z"></path><path d="M16 8l0 4"></path><path d="M12 8l0 4"></path></svg></a></div><div class="ml-auto flex items-center gap-1"><a class="mantine-UnstyledButton-root mantine-Button-root mantine-8wi0qm" type="button" data-button="true" href="/support"><div class="mantine-3xbgk5 mantine-Button-inner"><span class="mantine-qo1k2 mantine-Button-label">π Support</span></div></a></div></div></footer></div></div></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"colorScheme":"dark","cookies":{"referrals":{}},"canIndex":true,"session":null,"settings":{"newsletterSubscriber":true},"flags":{"earlyAccessModel":true,"apiKeys":true,"ambientCard":true,"gallery":true,"posts":false,"articles":true,"articleCreate":true,"adminTags":false,"civitaiLink":false,"stripe":false,"imageTraining":false,"imageTrainingResults":false,"sdxlGeneration":true,"questions":false,"imageGeneration":true,"largerGenerationImages":true,"enhancedSearch":true,"alternateHome":true,"collections":true,"air":false,"profileCollections":true,"imageSearch":true,"buzz":true,"recommenders":false,"assistant":false,"bounties":true,"newsroom":true,"safety":true,"csamReports":false,"appealReports":false,"reviewTrainingData":false,"clubs":false,"createClubs":false,"moderateTags":false,"chat":false,"creatorsProgram":false,"buzzWithdrawalTransfer":false,"vault":false,"draftMode":true,"membershipsV2":true,"cosmeticShop":true,"impersonation":false,"donationGoals":true,"creatorComp":true,"experimentalGen":false,"imageIndex":true,"imageIndexFeed":true,"isGreen":false,"isBlue":true,"isRed":false,"canViewNsfw":true,"canBuyBuzz":false,"customPaymentProvider":true,"adsEnabled":true,"paddleAdjustments":false,"announcements":false,"blocklists":false,"toolSearch":true,"generationOnlyModels":false,"appTour":true,"privateModels":false,"auctions":true},"seed":1741803163944,"hasAuthCookie":false,"id":502468,"trpcState":{"json":{"mutations":[],"queries":[{"state":{"data":{"hiddenImages":[],"hiddenModels":[],"hiddenUsers":[],"hiddenTags":[{"id":112944,"name":"sexual situations","nsfwLevel":4},{"id":113675,"name":"physical violence","nsfwLevel":2},{"id":126846,"name":"disturbing","nsfwLevel":4},{"id":127175,"name":"male nudity","nsfwLevel":4},{"id":113976,"name":"extremist","nsfwLevel":32},{"id":113474,"name":"hanging","nsfwLevel":32},{"id":113645,"name":"hate symbols","nsfwLevel":32},{"id":113644,"name":"nazi party","nsfwLevel":32},{"id":112675,"name":"weapon violence","nsfwLevel":2},{"id":112070,"name":"female swimwear or underwear","nsfwLevel":4},{"id":111969,"name":"male swimwear or underwear","nsfwLevel":4},{"id":111901,"name":"graphic violence or gore","nsfwLevel":4},{"id":112683,"name":"graphic female nudity","nsfwLevel":8},{"id":112783,"name":"emaciated bodies","nsfwLevel":4},{"id":111755,"name":"suggestive","nsfwLevel":2},{"id":6924,"name":"revealing clothes","nsfwLevel":2},{"id":496,"name":"peeing","nsfwLevel":16},{"id":224754,"name":"exposed female nipple","nsfwLevel":4},{"id":124097,"name":"female nudity","nsfwLevel":4},{"id":111942,"name":"partial nudity","nsfwLevel":4},{"id":113975,"name":"white supremacy","nsfwLevel":32},{"id":113360,"name":"adult toys","nsfwLevel":8},{"id":112481,"name":"graphic male nudity","nsfwLevel":8},{"id":111851,"name":"illustrated explicit nudity","nsfwLevel":8},{"id":2013,"name":"nudity","nsfwLevel":8},{"id":113660,"name":"self injury","nsfwLevel":32},{"id":113487,"name":"corpses","nsfwLevel":2},{"id":2635,"name":"wide hips","nsfwLevel":2},{"id":163890,"name":"convenient censoring","nsfwLevel":2},{"id":145241,"name":"oral invitation","nsfwLevel":2},{"id":5183,"name":"blowjob","nsfwLevel":16},{"id":111991,"name":"sexual activity","nsfwLevel":16},{"id":306426,"name":"sexual intent","nsfwLevel":8},{"id":168660,"name":"undressed","nsfwLevel":4},{"id":162145,"name":"male underwear","nsfwLevel":4},{"id":167855,"name":"female swimwear","nsfwLevel":4},{"id":156190,"name":"genitals","nsfwLevel":8},{"id":125026,"name":"female underwear","nsfwLevel":4},{"id":2634,"name":"thick thighs","nsfwLevel":2},{"id":162156,"name":"breasts out","nsfwLevel":4},{"id":162751,"name":"strapless leotard","nsfwLevel":4},{"id":2561,"name":"vore","nsfwLevel":16},{"id":119736,"name":"bestiality","nsfwLevel":32},{"id":143969,"name":"breast out","nsfwLevel":4},{"id":5686,"name":"one breast out","nsfwLevel":4},{"id":5219,"name":"huge breasts","nsfwLevel":2},{"id":5510,"name":"gigantic breasts","nsfwLevel":4},{"id":173393,"name":"huge butt","nsfwLevel":4},{"id":7088,"name":"covered nipples","nsfwLevel":4},{"id":163133,"name":"hair over breasts","nsfwLevel":4},{"id":116858,"name":"no panties","nsfwLevel":4},{"id":164076,"name":"sitting on face","nsfwLevel":4},{"id":2086,"name":"anal","nsfwLevel":16},{"id":5146,"name":"sex","nsfwLevel":16},{"id":137673,"name":"dildo riding","nsfwLevel":16},{"id":117333,"name":"downblouse","nsfwLevel":2},{"id":231,"name":"oral","nsfwLevel":16},{"id":5195,"name":"cum","nsfwLevel":16},{"id":243,"name":"porn","nsfwLevel":8},{"id":279,"name":"futanari","nsfwLevel":8},{"id":5218,"name":"hentai","nsfwLevel":8},{"id":304,"name":"nude","nsfwLevel":4},{"id":1718,"name":"lingerie","nsfwLevel":4},{"id":190,"name":"sexy","nsfwLevel":2},{"id":113935,"name":"nsfw","nsfwLevel":4},{"id":5218,"name":"hentai","nsfwLevel":8,"parentId":111851},{"id":243,"name":"porn","nsfwLevel":16,"parentId":111991},{"id":5218,"name":"hentai","nsfwLevel":16,"parentId":111991},{"id":243,"name":"porn","nsfwLevel":8,"parentId":112683},{"id":5218,"name":"hentai","nsfwLevel":8,"parentId":112683},{"id":243,"name":"porn","nsfwLevel":8,"parentId":112481},{"id":5218,"name":"hentai","nsfwLevel":8,"parentId":112481},{"id":1600,"name":"bukkake","nsfwLevel":16,"parentId":111991},{"id":3258,"name":"cumshot","nsfwLevel":16,"parentId":111991},{"id":5195,"name":"cum","nsfwLevel":16,"parentId":111991},{"id":6572,"name":"cumdrip","nsfwLevel":16,"parentId":111991},{"id":6573,"name":"cum in pussy","nsfwLevel":16,"parentId":111991},{"id":6626,"name":"cum on face","nsfwLevel":16,"parentId":111991},{"id":58491,"name":"cum on hair","nsfwLevel":16,"parentId":111991},{"id":58492,"name":"cum on body","nsfwLevel":16,"parentId":111991},{"id":58493,"name":"cum on tongue","nsfwLevel":16,"parentId":111991},{"id":78431,"name":"cum on hands","nsfwLevel":16,"parentId":111991},{"id":109814,"name":"cum in mouth","nsfwLevel":16,"parentId":111991},{"id":115043,"name":"cum on pussy","nsfwLevel":16,"parentId":111991},{"id":4818,"name":"eat_cum","nsfwLevel":16,"parentId":111991},{"id":2084,"name":"fellatio","nsfwLevel":16,"parentId":111991},{"id":3576,"name":"implied fellatio","nsfwLevel":16,"parentId":111991},{"id":58490,"name":"after fellatio","nsfwLevel":16,"parentId":111991},{"id":114629,"name":"triple fellatio","nsfwLevel":16,"parentId":111991},{"id":114824,"name":"autofellatio","nsfwLevel":16,"parentId":111991},{"id":115142,"name":"pov fellatio","nsfwLevel":16,"parentId":111991},{"id":115031,"name":"fucked silly","nsfwLevel":16,"parentId":111991},{"id":111592,"name":"presenting ass","nsfwLevel":4,"parentId":112944},{"id":111593,"name":"presenting pussy","nsfwLevel":4,"parentId":112944},{"id":111596,"name":"spreading legs","nsfwLevel":4,"parentId":112944},{"id":114420,"name":"spread legs","nsfwLevel":4,"parentId":112944},{"id":111943,"name":"swimwear","nsfwLevel":4,"parentId":112070},{"id":111943,"name":"swimwear","nsfwLevel":4,"parentId":111969},{"id":1718,"name":"lingerie","nsfwLevel":4,"parentId":112070},{"id":1718,"name":"lingerie","nsfwLevel":4,"parentId":111969},{"id":2392,"name":"bikini","nsfwLevel":4,"parentId":112070},{"id":111935,"name":"latex clothing","nsfwLevel":2,"parentId":6924},{"id":111935,"name":"latex clothing","nsfwLevel":4,"parentId":112944}],"blockedUsers":[],"blockedByUsers":[]},"dataUpdateCount":1,"dataUpdatedAt":1741803163954,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":[["hiddenPreferences","getHidden"],{"type":"query"}],"queryHash":"[[\"hiddenPreferences\",\"getHidden\"],{\"type\":\"query\"}]"},{"state":{"data":[{"entityId":991916,"entityType":"ModelVersion","hasAccess":true,"availability":"Public","permissions":3}],"dataUpdateCount":1,"dataUpdatedAt":1741803163955,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":[["common","getEntityAccess"],{"input":{"entityId":991916,"entityType":"ModelVersion"},"type":"query"}],"queryHash":"[[\"common\",\"getEntityAccess\"],{\"input\":{\"entityId\":991916,\"entityType\":\"ModelVersion\"},\"type\":\"query\"}]"},{"state":{"data":{"id":502468,"name":"bigASP π","description":"\u003ch1 id=\"bigasp-v2.0-nmwbufpbt\"\u003ebigASP π v2.0\u003c/h1\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eA \u003cstrong\u003ephotorealistic\u003c/strong\u003e \u003cstrong\u003eSDXL\u003c/strong\u003e finetuned from base SDXL on over \u003cstrong\u003e6 MILLION high quality photos\u003c/strong\u003e for 40 million training samples. Every photo was captioned using \u003ca target=\"_blank\" rel=\"ugc\" href=\"https://github.com/fpgaminer/joycaption\"\u003e\u003cstrong\u003eJoyCaption\u003c/strong\u003e\u003c/a\u003e and tagged using \u003ca target=\"_blank\" rel=\"ugc\" href=\"https://github.com/fpgaminer/joytag\"\u003e\u003cstrong\u003eJoyTag\u003c/strong\u003e\u003c/a\u003e. This imbues bigASP π with the ability to understand a wide range of prompts and concepts, from short and simple to long and detailed, while generating high quality photographic results.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eThis is now the second version of bigASP π. I'm excited to see how the community uses this model and to learn its strengths and weaknesses. Please share your gens and feedback!\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"features-58492a288\"\u003eFeatures\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eBoth Natural Language and Tag based prompting\u003c/strong\u003e: Version 2 now understands not only booru-style tags, but also natural language prompts, or any combination of the two!\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eSFW and NSFW:\u003c/strong\u003e This version of bigASP π includes 2M SFW images and 4M NSFW images. Dress to impress? Or undress to impress? You decide.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eDiversity\u003c/strong\u003e: bigASP π is trained on an intentionally diverse dataset, so that it can handle generating all the colors of our beautiful species, in all shapes and sizes. Goodbye \u003cem\u003esame-face\u003c/em\u003e!\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eAspect ratio bucketing\u003c/strong\u003e: Widescreen, square, portrait, bigASP π is ready to take it all.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eHigh quality training data\u003c/strong\u003e: Most of the training data consists of high quality, professional grade photos with resolutions well beyond SDXL's native resolution, all downloaded in their original quality with no additional compression. bigASP π won't miss a single pixel.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eLarge prompt support\u003c/strong\u003e: Trained with support for up to 225 tokens in the prompt. It is \u003cem\u003eBIG\u003c/em\u003e asp, after all.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cem\u003e(Optional) \u003c/em\u003e\u003cstrong\u003eAesthetic/quality score\u003c/strong\u003e: Like version 1, this model understands quality scores to help improve generations, e.g. add \u003ccode\u003escore_7_up\u003c/code\u003e, to the start of your prompt to guide the quality of generations. More details below.\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"what's-new-(version-2)-6e0rg28l6\"\u003eWhat's New (Version 2)\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eAdded natural language prompting\u003c/strong\u003e, greatly expanding the ability to control the model, resolve a lot of complaints about v1, and lots, lots more concepts can now be understood by the model.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eOver 3X \u003cstrong\u003emore images\u003c/strong\u003e. 6.7M images in version 2 versus 1.5M in version 1.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eSFW support\u003c/strong\u003e. I added 2M SFW images to the dataset, both so bigASP can be more useful as well as expanding its range of understanding. In my testing so far, bigASP is \u003cem\u003eexcellent\u003c/em\u003e at nature photography.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eLonger training\u003c/strong\u003e. Version 1 felt a bit undertrained. Version 2 was trained for 40M samples versus 30M in version 1. This seems to have tighten up the model quite a bit.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eScore tags are now optional!\u003c/strong\u003e They were randomly dropped during training, so the model will work just fine even when they aren't specified.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUpdated quality model.\u003c/strong\u003e I updated the model used to score the images, both to improve it slightly and to handle the new range of data. In my experience the range of \"good\" images is now much broader, starting from score_5. So you can be much more relaxed in what scores you prompt for and hopefully get even more variety in outputs than before.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eMore male focused data. \u003c/strong\u003eIt may come as a surprise to many, but nearly 50% of the world population is male! Kinda weird to have them so underrepresented in our models! Version 2 has added a good chunk more images focused on the male form. There's more work to be done here, but it's better than v1.\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"recommended-settings-u21w00d29\"\u003eRecommended Settings\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eSampler:\u003c/strong\u003e \u003cstrong\u003eDPM++ 2M SDE\u003c/strong\u003e or \u003cstrong\u003eDPM++ 3M SDE\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eSchedule: Kerras \u003c/strong\u003eor\u003cstrong\u003e Exponential. \u003cspan style=\"color:rgb(253, 126, 20)\"\u003eβ οΈ \u003c/span\u003e\u003c/strong\u003e\u003cem\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003eWARNING\u003c/span\u003e\u003c/em\u003e\u003cstrong\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003e β οΈ \u003c/span\u003e\u003c/strong\u003e\u003cem\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003eNormal schedule will cause garbage outputs.\u003c/span\u003e\u003c/em\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eSteps\u003c/strong\u003e: 40\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eCFG\u003c/strong\u003e: \u003cstrong\u003e2.0\u003c/strong\u003e or \u003cstrong\u003e3.0\u003c/strong\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003cu\u003ePerturbed Attention Guidance\u003c/u\u003e (available in at least ComfyUI), can help \u003cem\u003esometimes\u003c/em\u003e so I recommend giving it a try. It is especially helpful for faces and more complex scenes. However it can easily overcook an image, so turn down CFG when using PAG.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003eβ οΈ \u003c/span\u003e\u003c/strong\u003e\u003cem\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003eWARNING\u003c/span\u003e\u003c/em\u003e\u003cstrong\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003e β οΈ \u003c/span\u003e\u003c/strong\u003e\u003cem\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003eIf you're coming from Version 1, this version has much lower recommended CFG settings.\u003c/span\u003e\u003c/em\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eSupported resolutions (with image count for reference):\u003c/p\u003e\u003cpre\u003e\u003ccode\u003e832x1216: 2229287\n1216x832: 2179902\n832x1152: 762149\n1152x896: 430643\n896x1152: 198820\n1344x768: 185089\n768x1344: 145989\n1024x1024: 102374\n1152x832: 70110\n1280x768: 58728\n768x1280: 42345\n896x1088: 40613\n1344x704: 31708\n704x1344: 31163\n704x1472: 27365\n960x1088: 26303\n1088x896: 24592\n1472x704: 17991\n960x1024: 17886\n1088x960: 17229\n1536x640: 16485\n1024x960: 15745\n704x1408: 14188\n1408x704: 12204\n1600x640: 4835\n1728x576: 4718\n1664x576: 2999\n640x1536: 1827\n640x1600: 635\n576x1664: 456\n576x1728: 335\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"prompting-qfwnyigle\"\u003ePrompting\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003ebigASP π, as of version 2, was trained to support both detailed natural language prompts and booru-tag prompting. That means all of these kinds of prompting styles work:\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cpre\u003e\u003ccode\u003eA photograph of a cute puppy running through a field of flowers with the sun shining brightly in the background. Captured with depth of field to enhance the focus on the subject.\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003ePhoto of a cute puppy, running through a field of flowers, bright sun in background, depth of field\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003ephoto (medium), cute puppy, running, field of flowers, bright sun, sun in background, depth_of_field\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eIf you've used bigASP v1 in the past, all of those tags should still work! But now you can add natural language to help describe what you want in more words than just tags.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eIf you need some ideas for how to write prompts that bigASP understands well, try running some of your favorite images through JoyCaption: \u003ca target=\"_blank\" rel=\"ugc\" href=\"https://huggingface.co/spaces/fancyfeast/joy-caption-alpha-two\"\u003ehttps://huggingface.co/spaces/fancyfeast/joy-caption-alpha-two\u003c/a\u003e bigASP v2 was trained using JoyCaption (Alpha Two) to generate short, medium, long, etc descriptive captions, so any of those JoyCaption settings will work well to help you out.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eI also recommend checking out the metadata for any of the images in the gallery to get some ideas. I always upload my images with the ComfyUI workflow when possible.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eFinally, \u003cstrong\u003escoring\u003c/strong\u003e. bigASP π v2, like v1 and inspired by the incredible work of PonyDiffusion, was trained with \"score tags\". This means it understands things like \u003ccode\u003escore_8_up\u003c/code\u003e, which specify the quality of the image you want generated. All images in bigASP's dataset were scored from 0 to 9, with 0 completely excluded from training, and 9 being the best of the best. So when you write something like \u003ccode\u003escore_7_up\u003c/code\u003e at the \u003cem\u003ebeginning\u003c/em\u003e of your prompt, you're telling bigASP \"I want an image that's \u003cem\u003eat least\u003c/em\u003e a quality of 7.\"\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eUnlike v1, this version of bigASP does not \u003cem\u003erequire\u003c/em\u003e specifying a score tag in your prompt. If you don't, bigASP is free to generate across its wide range of qualities, so expect both good and bad! But I highly recommend putting a score tag of some kind at the \u003cem\u003ebeginning\u003c/em\u003e of your prompt, to help guide the model. I usually just use \u003ccode\u003escore_7_up\u003c/code\u003e, which guides towards generally good quality, while still giving bigASP some freedom. If you want only the best, \u003ccode\u003escore_9\u003c/code\u003e. If you want more variety, \u003ccode\u003escore_5_up\u003c/code\u003e. Hopefully that makes sense! You can specify multiple score tags if you want, but one is usually enough. And you can put lower scores in the negative to see if that helps. Something like \u003ccode\u003escore_1, score_2, score_3\u003c/code\u003e.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eNOTE:\u003c/strong\u003e \u003cspan style=\"color:rgb(253, 126, 20)\"\u003eIf you use a score tag, it \u003c/span\u003e\u003cstrong\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003emust\u003c/span\u003e\u003c/strong\u003e\u003cspan style=\"color:rgb(253, 126, 20)\"\u003e be at the beginning of the prompt.\u003c/span\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eNOTE\u003c/strong\u003e: If you want booru style tags in your prompt, don't forget that some tags use parenthesis, for example \u003ccode\u003ephoto (medium)\u003c/code\u003e. And many UI's use parenthesis for prompt weighting! So don't forget to escape the parenthesis if you're using something like ComfyUI or Auto1111, i.e. \u003ccode\u003ephoto \\(medium\\)\u003c/code\u003e.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"example-prompts-tgydlsilu\"\u003eExample prompts\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cpre\u003e\u003ccode\u003eSFW, chill sunset over a calm lake with a distant mountain range, soft clouds, and a lone sailboat.\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003escore_7_up, Photo of a woman with blonde hair, red lipstick, and a black necklace, sitting on a bed, masturbating, watermark\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003escore_8, A vibrant photo of a tropical beach scene, taken on a bright sunny day. The foreground features a wooden railing and lush green grass, with a large, twisted palm tree in the center-right. The background showcases a sandy beach with turquoise waters and a clear blue sky. The palm tree has long, spiky leaves that contrast with the smooth, curved trunk. The overall scene is peaceful and inviting, with a sense of warmth and relaxation.\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003escore_8_up, A captivating and surreal photograph of a cafe with neon lights shining down on a handsome man standing behind the counter. The man is wearing an apron and smiling warmly at the camera. The lighting is warm and glowing, with soft shadows adding depth and detail to the man. Highly detailed skin textures, muscular, cup of coffee, medium wide shot, taken with a Canon EOS.\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003escore_7_up, photo \\(medium\\), 1girl, spread legs, small breasts, puffy nipples, cumshot, shocked\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003escore_7_up, photo (medium), long hair, standing, thighhighs, reddit, 1girl, r/asstastic, kitchen, dark skin\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003escore_8_up, photo \\(medium\\), black shirt, pussy, long hair, spread legs, thighhighs, miniskirt, outside\u003c/code\u003e\u003c/pre\u003e\u003cpre\u003e\u003ccode\u003ePhoto of a blue 1960s Mercedes-Benz car, close-up, headlight, chrome accents, Arabic text on license plate, low quality\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"-y4a1cnsin\"\u003e\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"prompting-(advanced)-zkwi2ausq\"\u003ePrompting (Advanced)\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eLike version 1, this version of bigASP understands all of the tags that JoyTag uses. Some might find it useful to reference this list of tags seen during v2's training, including the number of times that tag occurs: \u003ca target=\"_blank\" rel=\"ugc\" href=\"https://gist.github.com/fpgaminer/0243de0d232a90dcae5e2f47d844f9bb\"\u003ehttps://gist.github.com/fpgaminer/0243de0d232a90dcae5e2f47d844f9bb\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eOf course, version 2 now understands more natural prompting, thanks to JoyCaption. That means there's a gold mine of new concepts that this version of bigASP π understands. Many people found the tag list from v1 to be helpful in exploring the model's capabilities. For natural language, a similar approach is to do \"n-gram\" analysis on the corpus of captions the model saw during training. Basically, this finds common combinations of \"words\". Here's that list, including the number of times each fragment of text occurs: \u003ca target=\"_blank\" rel=\"ugc\" href=\"https://gist.github.com/fpgaminer/26f4da885cc61bede13b3779b81ba300\"\u003ehttps://gist.github.com/fpgaminer/26f4da885cc61bede13b3779b81ba300\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eThe first column of the n-gram list is the number of \"words\" considered, from 1 up to 7. The second column is the text. The third column is the number of times that particular combination of words was seen (which might be higher than the number of images, since they can occur multiple times in a single caption). Note that \"noun chunks\" are counted as a single word in this analysis. Examples: \"her right side\", \"his body\", \"water droplets\". All of those are considered a single \"word\", since they represent a consolidated concept. So don't be surprised if the list above has \"tattoo on her right side\" listed as being 3 words. Also note that some punctuation might be missing from the extracted text fragments, due to the way the text was processed for this analysis.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eVarious sources can be mentioned, such as reddit, flickr, unsplash, instagram, etc. As well as specific subreddits (similar to v1).\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eTags such as \u003ccode\u003eNSFW\u003c/code\u003e, \u003ccode\u003eSFW\u003c/code\u003e, and \u003ccode\u003eSuggestive\u003c/code\u003e, can help guide the content of the generations.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eFor the most part, bigASP π will not generate watermarks unless one is specifically mentioned. The trigger word is, coincidentally, \u003ccode\u003ewatermark\u003c/code\u003e. Adding \u003ccode\u003ewatermark\u003c/code\u003e to negatives might help avoid them even more, though in my testing they're quite rare for most prompts.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003ebigASP π \u003cem\u003ecan\u003c/em\u003e generate text that you specify using language like \u003ccode\u003eThe person is holding a sign with the text \"Happy Halloween\" on it.\u003c/code\u003e You can prompt for text in various ways, but definitely put the text you want to appear on the image in quotes. That said, this is SDXL, so except to have to hammer a \u003cem\u003elot\u003c/em\u003e of gens to get good text. And the more complex the image, the less well SDXL will do with text. But it's a neat parlor trick for this old girl!\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eSome camera makes and models, as well as focal length, aperture, etc are understood by the model. Their effects are unknown. You can use a tag like \u003ccode\u003eDSLR\u003c/code\u003e to more generally guide the model towards \"professional\" photos, but beware that it will also tend to put a camera \u003cem\u003ein\u003c/em\u003e the photo...\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eAs mentioned in the list of features, bigASP π was trained with long prompt support. It was trained using the technique that NovelAI invented and documented graciously, and is the same technique that most generation UIs use when your prompt exceeds CLIP's maximum of 75 tokens. There's a good mix of caption lengths in the dataset, so any length from a few tokens up to 225 tokens should work well. With the usual caveats of this technique.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"limitations-dsij0nz7j\"\u003eLimitations\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eNo offset noise:\u003c/strong\u003e Sorry, maybe next version.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eNo anime:\u003c/strong\u003e This is a photo model through and through. Perhaps in a future version anime will be included to expand the model's concepts.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eFaces/hands/feet\u003c/strong\u003e: You know the deal.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eVAE issues:\u003c/strong\u003e SDXL's VAE sucks. We all know it. But nowhere is it more apparent than in photos. And because bigASP generates such high levels of detail, it really exposes the weaknesses of the VAE. Not much I can do about that.\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003cstrong\u003eNo miracles:\u003c/strong\u003e This is SDXL, so expect the usual. 1:24 ratio of good to meh gens, a good amount of body horror, etc. Some prompts will work well for no reason. Some will produce nightmares no matter how you tweak the prompt. Multiple characters is better in this version of bigASP compared to v1, but is still rough. Such is the way of these older architectures. I think bigASP is more or less at the limit of what can be done here now.\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"training-details-(version-2)-zeiro1omv\"\u003eTraining Details (Version 2)\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eAll the nitty gritty of getting version 2 trained are documented here: \u003ca target=\"_blank\" rel=\"ugc\" href=\"https://civitai.com/articles/8423\"\u003ehttps://civitai.com/articles/8423\u003c/a\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003ch2 id=\"training-details-(version-1)-cee4r5174\"\u003eTraining Details (Version 1)\u003c/h2\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eDetails on how the big SDXL finetunes were trained is scarce to say the least. So, I'm sharing all my details here to help the community.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003ebigASP was trained on about 1,440,000 photos, all with resolutions larger than their respective aspect ratio bucket. Each image is about 1MB on disk, making the database about 1TB per million images.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eEvery image goes through: the quality model to rate it from 0 to 9; JoyTag to tag it; OWLv2 with the prompt \"a watermark\" to detect watermarks in the images. I found OWLv2 to perform better than even a finetuned vision model, and it has the added benefit of providing bounding boxes for the watermarks. Accuracy is about 92%. While it wasn't done for this version, it's possible in the future that the bounding boxes could be used to do \"loss masking\" during training, which basically hides the watermarks from SD. For now, if a watermark is detect, a \"watermark\" tag is included in the training prompt.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eImages with a score of 0 are dropped entirely. I did a lot of work specifically training the scoring model to put certain images down in this score bracket. You'd be surprised at how much junk comes through in datasets, and even a hint of them and really throw off training. Thumbnails, video preview images, ads, etc.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003ebigASP uses the same aspect ratios buckets that SDXL's paper defines. All images are bucketed into the bucket they best fit in while not being smaller than any dimension of that bucket when scaled down. So after scaling, images get randomly cropped. The original resolution and crop data is recorded alongside the VAE encoded image on disk for conditioning SDXL, and finally the latent is gzipped. I found gzip to provide a nice 30% space savings. This reduces the training dataset down to about 100GB per million images.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eTraining was done using a custom training script based off the diffusers library. I used a custom training script so that I could fully understand all the inner mechanics and implement any tweaks I wanted. Plus I had my training scripts from SD1.5 training, so it wasn't a huge leap. The downside is that a lot of time had to be spent debugging subtle issues that cropped up after several bugged runs. Those are all \u003cem\u003eexpensive\u003c/em\u003e mistakes. But, for me, mistakes are the cost of learning.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eI think the training prompts are really important to the performance of the final model in actual usage. The custom \u003ccode\u003eDataset\u003c/code\u003e class is responsible for doing a lot of heavy lifting when it comes to generating the training prompts. People prompt with everything from short prompts to long prompts, to prompts with all kinds of commas, underscores, typos, etc.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eI pulled a large sample of AI images that included prompts to analyze the statistics of typical user prompts. The distribution of prompts followed a mostly normal distribution, with a mean of 32 tags and a std of 19.8. So my \u003ccode\u003eDataset\u003c/code\u003e class reflects this. For every training sample, it picks a random integer in this distribution to determine how many tags it should use for this training sample. It shuffles the tags on the image and then truncates them to that number.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eThis means that during training the model sees everything from just \"1girl\" to a huge 224 token prompt! And thus, hopefully, learns to fill in the details for the user.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eCertain tags, like \u003ccode\u003ewatermark\u003c/code\u003e, are given priority and always included if present, so the model learns those tags strongly.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eThe tag alias list from danbooru is used to randomly mutate tags to synonyms so that bigASP understands all the different ways people might refer to a concept. Hopefully.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eAnd, of course, the score tags. Just like Pony XL, bigASP encodes the score of a training sample as a range of tags of the form \"score_X\" and \"score_X_up\". However, to avoid the issues Pony XL ran into, only a random number of score tags are included in the training prompt. That way the model doesn't \u003cem\u003erequire\u003c/em\u003e \"score_8, score_7, score_6,\" etc in the prompt to work correctly. It's already used to just a single, or a couple score tags being present.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e10% of the time the prompt is dropped completely, being set to an empty string. UCG, you know the deal. N.B.!!! I noticed in Stability's training scripts, and even HuggingFace's scripts, that instead of setting the prompt to an empty string, they set it to \"zero\" in the embedded space. This is different from how SD1.5 was trained. And it's different from how most of the SD front-ends do inference on SD. My theory is that it can actually be a big problem if SDXL is trained with \"zero\" dropping instead of empty prompt dropping. That means that during inference, if you use an empty prompt, you're telling the model to move away not from the \"average image\", but away from \u003cem\u003eonly\u003c/em\u003e images that happened to have no caption during training. That doesn't sound right. So for bigASP I opt to train with empty prompt dropping.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eAdditionally, Stability's training scripts include dropping of SDXL's other conditionings: original_size, crop, and target_size. I didn't see this behavior present in kohyaa's scripts, so I didn't use it. I'm not entirely sure what benefit it would provide.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eI made sure that during training, the model gets a variety of batched prompt lengths. What I mean is, the prompts themselves for each training sample are certainly different lengths, but they all have to be padded to the longest example in a batch. So it's important to ensure that the model still sees a variety of lengths even after batching, otherwise it might overfit and only work on a specific range of prompt lengths. A quick Python Notebook to scan the training batches helped to verify a good distribution: 25% of batches were 225 tokens, 66% were 150, and 9% were 75 tokens. Though in future runs I might try to balance this more.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eThe rest of the training process is fairly standard. I found min-snr loss to work best in my experiments. Pure fp16 training did not work for me, so I had to resort to mixed precision with the model in fp32. Since the latents are already encoded, the VAE doesn't need to be loaded, saving precious memory. For generating sample images during training, I use a separate machine which grabs the saved checkpoints and generates the sample images. Again, that saves memory and compute on the training machine.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eThe final run uses an effective batch size of 2048, no EMA, no offset noise, PyTorch's AMP with just float16 (not bfloat16), 1e-4 learning rate, AdamW, min-snr loss, 0.1 weight decay, cosine annealing with linear warmup for 100,000 training samples, 10% UCG rate, text encoder 1 training is enabled, text encoded 2 is kept frozen, min_snr_gamma=5, PyTorch GradScaler with an initial scaling of 65k, 0.9 beta1, 0.999 beta2, 1e-8 eps. Everything is initialized from SDXL 1.0.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eA validation dataset of 2048 images is used. Validation is performed every 50,000 samples to ensure that the model is not overfitting and to help guide hyperparameter selection. To help compare runs with different loss functions, validation is always performed with the basic loss function, even if training is using e.g. min-snr. And a checkpoint is saved every 500,000 samples. I find that it's really only helpful to look at sample images every million steps, so that process is run on every other checkpoint.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eA stable training loss is also logged (I use Wandb to monitor my runs). Stable training loss is calculated at the same time as validation loss (one after the other). It's basically like a validation pass, except instead of using the validation dataset, it uses the first 2048 images from the training dataset, and uses a fixed seed. This provides a, well, stable training loss. SD's training loss is incredibly noisy, so this metric provides a much better gauge of how training loss is progressing.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eThe batch size I use is quite large compared to the few values I've seen online for finetuning runs. But it's informed by my experience with training other models. Large batch size wins in the long run, but is worse in the short run, so its efficacy can be challenging to measure on small scale benchmarks. Hopefully it was a win here. Full runs on SDXL are far too expensive for much experimentation here. But one immediate benefit of a large batch size is that iteration speed is faster, since optimization and gradient sync happens less frequently.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eTraining was done on an 8xH100 sxm5 machine rented in the cloud. On this machine, iteration speed is about 70 images/s. That means the whole run took about 5 solid days of computing. A staggering number for a hobbyist like me. Please send hugs. I hurt.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eTraining being done in the cloud was a big motivator for the use of precomputed latents. Takes me about an hour to get the data over to the machine to begin training. Theoretically the code could be set up to start training immediately, as the training data is streamed in for the first pass. It takes even the 8xH100 four hours to work through a million images, so data can be streamed faster than it's training. That way the machine isn't sitting idle burning money.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eOne disadvantage of precomputed latents is, of course, the lack of regularization from varying the latents between epochs. The model still sees a very large variety of prompts between epochs, but it won't see different crops of images or variations in VAE sampling. In future runs what I might do is have my local GPUs re-encoding the latents constantly and streaming those updated latents to the cloud machine. That way the latents change every few epochs. I didn't detect any overfitting on this run, so it might not be a big deal either way.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003eFinally, the loss curve. I noticed a rather large variance in the validation loss between different datasets, so it'll be hard for others to compare, but for what it's worth:\u003c/p\u003e\u003cp\u003e\u003c/p\u003e\u003cp\u003e\u003cimg src=\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/a22178be-aa1a-4d24-9dfc-7f9b964dfdae/width=525/a22178be-aa1a-4d24-9dfc-7f9b964dfdae.jpeg\" /\u003e\u003c/p\u003e\u003cp\u003e\u003c/p\u003e","poi":false,"minor":false,"nsfwLevel":60,"nsfw":true,"type":"Checkpoint","uploadType":"Created","updatedAt":"2024-10-27T20:48:08.836Z","deletedAt":null,"deletedBy":null,"status":"Published","checkpointType":"Trained","allowNoCredit":true,"allowCommercialUse":["Image","RentCivit","Rent"],"allowDerivatives":true,"allowDifferentLicense":true,"licenses":[],"publishedAt":"2024-06-08T07:58:28.587Z","locked":false,"meta":{"imageNsfw":"None"},"earlyAccessDeadline":null,"mode":null,"availability":"Public","lockedProperties":[],"reportStats":{"ownershipProcessing":0},"user":{"id":125620,"image":null,"username":"nutbutter","deletedAt":null,"rank":{"leaderboardRank":296},"profilePicture":null,"cosmetics":[]},"modelVersions":[{"id":991916,"modelId":502468,"name":"v2.0","description":"\u003cp\u003eVersion 2\u003c/p\u003e","steps":19531,"epochs":6,"clipSkip":null,"createdAt":"2024-10-25T03:50:28.686Z","updatedAt":"2024-10-25T04:07:13.500Z","trainedWords":[],"trainingStatus":null,"trainingDetails":null,"inaccurate":false,"baseModel":"SDXL 1.0","baseModelType":"Standard","earlyAccessEndsAt":null,"earlyAccessConfig":null,"status":"Published","publishedAt":"2024-10-25T04:07:13.492Z","meta":{"imageNsfw":"None"},"vaeId":null,"settings":null,"requireAuth":false,"nsfwLevel":60,"uploadType":"Created","usageControl":"Download","metrics":null,"files":[{"id":897883,"url":"https://civitai-delivery-worker-prod.5ac0637cfd0766c97916cefa3764fbdf.r2.cloudflarestorage.com/model/125620/bigAspV2Cuwm1gxo.AX9d.safetensors","sizeKB":6775430.353515625,"name":"big-asp-v2-cuwm1gxo-20241024a.safetensors","type":"Model","visibility":"Public","metadata":{"fp":"fp16","size":"pruned","format":"SafeTensor"},"pickleScanResult":"Success","pickleScanMessage":"No Pickle imports","virusScanResult":"Success","virusScanMessage":null,"scannedAt":"2024-10-25T04:03:20.609Z","modelVersionId":991916,"hashes":[{"type":"AutoV1","hash":"7731E63E"},{"type":"AutoV2","hash":"6C77BE501B"},{"type":"SHA256","hash":"6C77BE501B95DA35528431C224CCFB51B0AE948857431B3556DB64E213CC1EDF"},{"type":"CRC32","hash":"F496D401"},{"type":"BLAKE3","hash":"33B82FAACF8E7848F4B9C124256AACAEA54F256EC5CF9679E37A4D22E2930D29"},{"type":"AutoV3","hash":"55EC553D7B23"}]}],"generationCoverage":{"covered":true},"recommendedResources":[],"rank":{"generationCountAllTime":83,"downloadCountAllTime":15832,"ratingCountAllTime":0,"ratingAllTime":0,"thumbsUpCountAllTime":838,"thumbsDownCountAllTime":10},"posts":[{"id":8321006},{"id":8324190},{"id":8324865},{"id":8325345},{"id":8349138},{"id":8572979},{"id":8591699},{"id":8668956},{"id":8762286},{"id":8877924},{"id":10006260}],"hashes":["6c77be501b95da35528431c224ccfb51b0ae948857431b3556db64e213cc1edf"],"earlyAccessDeadline":null,"canDownload":true,"canGenerate":true},{"id":558487,"modelId":502468,"name":"v1.0","description":null,"steps":14648,"epochs":20,"clipSkip":null,"createdAt":"2024-06-08T07:46:46.874Z","updatedAt":"2024-10-25T03:50:28.686Z","trainedWords":[],"trainingStatus":null,"trainingDetails":null,"inaccurate":false,"baseModel":"SDXL 1.0","baseModelType":"Standard","earlyAccessEndsAt":null,"earlyAccessConfig":{},"status":"Published","publishedAt":"2024-06-08T07:58:28.587Z","meta":{"imageNsfw":"X"},"vaeId":null,"settings":null,"requireAuth":false,"nsfwLevel":60,"uploadType":"Created","usageControl":"Download","metrics":null,"files":[{"id":474461,"url":"https://civitai-delivery-worker-prod.5ac0637cfd0766c97916cefa3764fbdf.r2.cloudflarestorage.com/model/125620/bigasp20240607a.kzwo.safetensors","sizeKB":6775429.966796875,"name":"bigASP-20240607a.safetensors","type":"Model","visibility":"Public","metadata":{"fp":"fp16","size":"pruned","format":"SafeTensor"},"pickleScanResult":"Success","pickleScanMessage":"No Pickle imports","virusScanResult":"Success","virusScanMessage":null,"scannedAt":"2024-06-08T07:58:15.885Z","modelVersionId":558487,"hashes":[{"type":"AutoV1","hash":"ED44C766"},{"type":"AutoV2","hash":"9B93B79519"},{"type":"SHA256","hash":"9B93B795196FD29463CF038517989742AF0932411F3F16204E842E7743DADF4C"},{"type":"CRC32","hash":"EBC85759"},{"type":"BLAKE3","hash":"4C1F8547BF69FB6FF44CD8528C687202FEAA3BB5C628C35A49922CEC3715FE24"},{"type":"AutoV3","hash":"E551BB7F5410"}]}],"generationCoverage":{"covered":true},"recommendedResources":[],"rank":{"generationCountAllTime":0,"downloadCountAllTime":10277,"ratingCountAllTime":0,"ratingAllTime":0,"thumbsUpCountAllTime":756,"thumbsDownCountAllTime":9},"posts":[{"id":3333662},{"id":3333798},{"id":3333812},{"id":3335515},{"id":3388585},{"id":3388788},{"id":3451437},{"id":3451476},{"id":4226478},{"id":4255978},{"id":4637062},{"id":7946393}],"hashes":["9b93b795196fd29463cf038517989742af0932411f3f16204e842e7743dadf4c"],"earlyAccessDeadline":null,"canDownload":true,"canGenerate":true}],"metrics":null,"rank":{"downloadCountAllTime":26109,"favoriteCountAllTime":0,"thumbsUpCountAllTime":1446,"thumbsDownCountAllTime":19,"commentCountAllTime":222,"ratingCountAllTime":0,"ratingAllTime":0,"tippedAmountCountAllTime":27266,"imageCountAllTime":0,"collectedCountAllTime":765,"generationCountAllTime":83},"canGenerate":true,"hasSuggestedResources":false,"tagsOnModels":[{"tag":{"id":172,"name":"photorealistic","isCategory":false}},{"tag":{"id":1237,"name":"base model","isCategory":true}},{"tag":{"id":3395,"name":"trans","isCategory":false}},{"tag":{"id":5133,"name":"woman","isCategory":false}},{"tag":{"id":5232,"name":"man","isCategory":false}},{"tag":{"id":113935,"name":"nsfw","isCategory":false}},{"tag":{"id":114497,"name":"sfw","isCategory":false}},{"tag":{"id":134167,"name":"reddit","isCategory":false}}]},"dataUpdateCount":1,"dataUpdatedAt":1741803164039,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":[["model","getById"],{"input":{"id":502468},"type":"query"}],"queryHash":"[[\"model\",\"getById\"],{\"input\":{\"id\":502468},\"type\":\"query\"}]"},{"state":{"data":null,"dataUpdateCount":1,"dataUpdatedAt":1741803164044,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":[["model","getCollectionShowcase"],{"input":{"id":502468},"type":"query"}],"queryHash":"[[\"model\",\"getCollectionShowcase\"],{\"input\":{\"id\":502468},\"type\":\"query\"}]"}]},"meta":{"values":{"queries.2.state.data.updatedAt":["Date"],"queries.2.state.data.publishedAt":["Date"],"queries.2.state.data.modelVersions.0.createdAt":["Date"],"queries.2.state.data.modelVersions.0.updatedAt":["Date"],"queries.2.state.data.modelVersions.0.publishedAt":["Date"],"queries.2.state.data.modelVersions.0.metrics":["undefined"],"queries.2.state.data.modelVersions.0.files.0.scannedAt":["Date"],"queries.2.state.data.modelVersions.1.createdAt":["Date"],"queries.2.state.data.modelVersions.1.updatedAt":["Date"],"queries.2.state.data.modelVersions.1.publishedAt":["Date"],"queries.2.state.data.modelVersions.1.metrics":["undefined"],"queries.2.state.data.modelVersions.1.files.0.scannedAt":["Date"],"queries.2.state.data.metrics":["undefined"]}}}},"__N_SSP":true},"page":"/models/[id]/[[...slug]]","query":{"id":"502468"},"buildId":"WtU0r6Sch6oPkk7c3Dx8V","isFallback":false,"isExperimentalCompile":false,"gssp":true,"appGip":true,"locale":"en","locales":["en"],"defaultLocale":"en","scriptLoader":[]}</script></body></html> |