1<!DOCTYPE html> 2<html dir="ltr" lang="en-US" prefix="og: https://ogp.me/ns#"> 3<head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 7 <!-- All in One SEO 5.0.1.1 - aioseo.com --> 8 <meta name="description" content="Personal blog of Arseny Reutov aka "Raz0r" about web application security covering both offensive & defensive aspects" /> 9 <meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1" /> 10 <meta name="keywords" content="linux,unix,web,security,vulnerabilities,sql,mysql,mssql,oracle,postgresql,sql injection,php,xss,exploit,bugtraq,bugtrack,application,javascript" /> 11 <link rel="canonical" href="https://raz0r.name/" /> 12 <link rel="next" href="https://raz0r.name/page/2/" /> 13 <meta name="generator" content="All in One SEO (AIOSEO) 5.0.1.1" /> 14 <meta property="og:locale" content="en_US" /> 15 <meta property="og:site_name" content="Raz0r.name â Web Application Security" /> 16 <meta property="og:type" content="article" /> 17 <meta property="og:title" content="Raz0r.name â Web Application Security" /> 18 <meta property="og:description" content="Personal blog of Arseny Reutov aka "Raz0r" about web application security covering both offensive & defensive aspects" /> 19 <meta property="og:url" content="https://raz0r.name/" /> 20 <meta property="og:image" content="https://raz0r.name/wp-content/uploads/2019/02/avatar33548_400x400.jpg" /> 21 <meta property="og:image:secure_url" content="https://raz0r.name/wp-content/uploads/2019/02/avatar33548_400x400.jpg" /> 22 <meta name="twitter:card" content="summary" /> 23 <meta name="twitter:site" content="@theRaz0r" /> 24 <meta name="twitter:title" content="Raz0r.name â Web Application Security" /> 25 <meta name="twitter:description" content="Personal blog of Arseny Reutov aka "Raz0r" about web application security covering both offensive & defensive aspects" /> 26 <meta name="twitter:image" content="https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545.png" /> 27
27<script type="application/ld+json" class="aioseo-schema"> 28 {"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/raz0r.name\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/raz0r.name#listItem","position":1,"name":"Home","item":"https:\/\/raz0r.name","nextItem":{"@type":"ListItem","@id":"https:\/\/raz0r.name\/category\/writeups\/#listItem","name":"Writeups"}},{"@type":"ListItem","@id":"https:\/\/raz0r.name\/category\/writeups\/#listItem","position":2,"name":"Writeups","item":"https:\/\/raz0r.name\/category\/writeups\/","nextItem":{"@type":"ListItem","@id":"https:\/\/raz0r.name\/writeups\/defi-hack-solutions-discolp\/#listItem","name":"DeFi Hack solutions: DiscoLP"},"previousItem":{"@type":"ListItem","@id":"https:\/\/raz0r.name#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/raz0r.name\/writeups\/defi-hack-solutions-discolp\/#listItem","position":3,"name":"DeFi Hack solutions: DiscoLP","previousItem":{"@type":"ListItem","@id":"https:\/\/raz0r.name\/category\/writeups\/#listItem","name":"Writeups"}}]},{"@type":"CollectionPage","@id":"https:\/\/raz0r.name\/#collectionpage","url":"https:\/\/raz0r.name\/","name":"Raz0r.name \u2014 Web Application Security","description":"Personal blog of Arseny Reutov aka \"Raz0r\" about web application security covering both offensive & defensive aspects","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/raz0r.name\/#website"},"breadcrumb":{"@id":"https:\/\/raz0r.name\/#breadcrumblist"},"about":{"@id":"https:\/\/raz0r.name\/#person"}},{"@type":"Person","@id":"https:\/\/raz0r.name\/#person","name":"Raz0r","image":{"@type":"ImageObject","@id":"https:\/\/raz0r.name\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/ffa30b1ea3043ed56b1c3aa5c5e556b7b11b29994497a90dd383b8827a18c1d0?s=96&d=mm&r=g","width":96,"height":96,"caption":"Raz0r"}},{"@type":"WebSite","@id":"https:\/\/raz0r.name\/#website","url":"https:\/\/raz0r.name\/","name":"Raz0r.name","description":"Web3 Security","inLanguage":"en-US","publisher":{"@id":"https:\/\/raz0r.name\/#person"}}]} 29 </script>
29 30 <!-- All in One SEO --> 31 32<title>Raz0r.name â Web Application Security</title> 33<link rel="alternate" type="application/rss+xml" title="Raz0r â Web3 Security » Feed" href="https://raz0r.name/feed/" /> 34<link rel="alternate" type="application/rss+xml" title="Raz0r â Web3 Security » Comments Feed" href="https://raz0r.name/comments/feed/" /> 35<style id="wp-img-auto-sizes-contain-inline-css"> 36img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 37/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 38</style> 39<style id="wp-block-site-logo-inline-css"> 40.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}:root :where(.wp-block-site-logo.is-style-rounded){border-radius:9999px} 41/*# sourceURL=https://raz0r.name/wp-includes/blocks/site-logo/style.min.css */ 42</style> 43<style id="wp-block-site-title-inline-css"> 44.wp-block-site-title{box-sizing:border-box}.wp-block-site-title :where(a){color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit} 45/*# sourceURL=https://raz0r.name/wp-includes/blocks/site-title/style.min.css */ 46</style> 47<style id="wp-block-group-inline-css"> 48.wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative} 49/*# sourceURL=https://raz0r.name/wp-includes/blocks/group/style.min.css */ 50</style> 51<style id="wp-block-social-links-inline-css"> 52.wp-block-social-links{background:none;box-sizing:border-box;margin-left:0;padding-left:0;padding-right:0;text-indent:0}.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{border-bottom:0;box-shadow:none;text-decoration:none}.wp-block-social-links .wp-social-link svg{height:1em;width:1em}.wp-block-social-links .wp-social-link span:not(.screen-reader-text){font-size:.65em;margin-left:.5em;margin-right:.5em}.wp-block-social-links.has-small-icon-size{font-size:16px}.wp-block-social-links,.wp-block-social-links.has-normal-icon-size{font-size:24px}.wp-block-social-links.has-large-icon-size{font-size:36px}.wp-block-social-links.has-huge-icon-size{font-size:48px}.wp-block-social-links.aligncenter{display:flex;justify-content:center}.wp-block-social-links.alignright{justify-content:flex-end}.wp-block-social-link{border-radius:9999px;display:block}@media not (prefers-reduced-motion){.wp-block-social-link{transition:transform .1s ease}}.wp-block-social-link{height:auto}.wp-block-social-link a{align-items:center;display:flex;line-height:0}.wp-block-social-link:hover{transform:scale(1.1)}.wp-block-social-links .wp-block-social-link.wp-social-link{display:inline-block;margin:0;padding:0}.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor svg,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor:active,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor:hover,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor:visited{fill:currentColor;color:currentColor}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link{background-color:#f0f0f0;color:#444}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-amazon{background-color:#f90;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-behance{background-color:#0757fe;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-bluesky{background-color:#0a7aff;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-discord{background-color:#5865f2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-etsy{background-color:#f45800;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-facebook{background-color:#0866ff;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-flickr{background-color:#0461dd;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-foursquare{background-color:#e65678;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-github{background-color:#24292d;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-google{background-color:#ea4434;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-gravatar{background-color:#1d4fc4;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-instagram{background-color:#f00075;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-linkedin{background-color:#0d66c2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-medium{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-meetup{background-color:#f6405f;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-patreon{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-pinterest{background-color:#e60122;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-pocket{background-color:#ef4155;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-reddit{background-color:#ff4500;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-skype{background-color:#0478d7;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-snapchat{stroke:#000;background-color:#fefc00;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-spotify{background-color:#1bd760;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-telegram{background-color:#2aabee;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-threads{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-tiktok{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-tumblr{background-color:#011835;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-twitch{background-color:#6440a4;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-twitter{background-color:#1da1f2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-vk{background-color:#4680c2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-whatsapp{background-color:#25d366;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-x{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-yelp{background-color:#d32422;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-youtube{background-color:red;color:#fff}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link{background:none}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link svg{height:1.25em;width:1.25em}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-amazon{color:#f90}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-bandcamp{color:#1ea0c3}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-behance{color:#0757fe}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-bluesky{color:#0a7aff}
52:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-codepen{color:#1e1f26}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-deviantart{color:#02e49b}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-discord{color:#5865f2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-dribbble{color:#e94c89}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-dropbox{color:#4280ff}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-etsy{color:#f45800}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-facebook{color:#0866ff}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-fivehundredpx{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-flickr{color:#0461dd}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-foursquare{color:#e65678}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-github{color:#24292d}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-goodreads{color:#382110}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-google{color:#ea4434}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-gravatar{color:#1d4fc4}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-instagram{color:#f00075}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-lastfm{color:#e21b24}
52:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-linkedin{color:#0d66c2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-mastodon{color:#3288d4}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-medium{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-meetup{color:#f6405f}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-patreon{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-pinterest{color:#e60122}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-pocket{color:#ef4155}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-reddit{color:#ff4500}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-skype{color:#0478d7}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-snapchat{stroke:#000;color:#fff}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-soundcloud{color:#ff5600}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-spotify{color:#1bd760}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-telegram{color:#2aabee}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-threads{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-tiktok{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-tumblr{color:#011835}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-twitch{color:#6440a4}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-twitter{color:#1da1f2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-vimeo{color:#1eb7ea}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-vk{color:#4680c2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-whatsapp{color:#25d366}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-wordpress{color:#3499cd}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-x{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-yelp{color:#d32422}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-youtube{color:red}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}:root :where(.wp-block-social-links .wp-social-link a){padding:.25em}:root :where(.wp-block-social-links.is-style-logos-only .wp-social-link a){padding:0}:root :where(.wp-block-social-links.is-style-pill-shape .wp-social-link a){padding-left:.6666666667em;padding-right:.6666666667em}.wp-block-social-links:not(.has-icon-color):not(.has-icon-background-color) .wp-social-link-snapchat .wp-block-social-link-label{color:#000} 53/*# sourceURL=https://raz0r.name/wp-includes/blocks/social-links/style.min.css */ 54</style> 55<link rel='stylesheet' id='wp-block-navigation-css' href='https://raz0r.name/wp-includes/blocks/navigation/style.min.css?ver=7.1.2' media='all' /> 56<style id="wp-block-post-title-inline-css"> 57.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title :where(a){display:inline-block;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit} 58/*# sourceURL=https://raz0r.name/wp-includes/blocks/post-title/style.min.css */ 59</style> 60<style id="wp-block-paragraph-inline-css"> 61.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} 62/*# sourceURL=https://raz0r.name/wp-includes/blocks/paragraph/style.min.css */ 63</style> 64<style id="wp-block-embed-inline-css"> 65.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-cover .wp-block-embed{min-height:240px;min-width:320px}.wp-block-group.is-layout-flex .wp-block-embed{flex:1 1 0%;min-width:0}.wp-block-embed{overflow-wrap:break-word}.wp-block-embed :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%} 66/*# sourceURL=https://raz0r.name/wp-includes/blocks/embed/style.min.css */ 67</style> 68<style id="wp-block-post-content-inline-css"> 69.wp-block-post-content{display:flow-root} 70/*# sourceURL=https://raz0r.name/wp-includes/blocks/post-content/style.min.css */ 71</style> 72<style id="wp-block-post-date-inline-css"> 73.wp-block-post-date{box-sizing:border-box} 74/*# sourceURL=https://raz0r.name/wp-includes/blocks/post-date/style.min.css */ 75</style> 76<style id="wp-block-post-featured-image-inline-css"> 77.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image :where(img){box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:transparent}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}
77.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%} 78/*# sourceURL=https://raz0r.name/wp-includes/blocks/post-featured-image/style.min.css */ 79</style> 80<style id="wp-block-image-inline-css"> 81.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:rgba(90,90,90,.25);border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto rgba(90,90,90,.25);outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:rgba(90,90,90,.25);border:none}.wp-lightbox-overlay{box-sizing:border-box;
81cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .wp-lightbox-close-button{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:8px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 4px;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .wp-lightbox-close-button:focus,.wp-lightbox-overlay .wp-lightbox-close-button:hover,.wp-lightbox-overlay .wp-lightbox-close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .wp-lightbox-close-button:has(.wp-lightbox-close-text:not([hidden])) .wp-lightbox-close-icon svg{height:1em;width:1em}.wp-lightbox-overlay .wp-lightbox-close-icon svg{display:block}.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{align-items:center;bottom:16px;cursor:pointer;display:flex;font-family:inherit;gap:4px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 8px;position:absolute;z-index:2000002}.wp-lightbox-overlay .wp-lightbox-navigation-button-next[hidden],.wp-lightbox-overlay .wp-lightbox-navigation-button-prev[hidden]{display:none}@media (min-width:960px){.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{bottom:50%;transform:translateY(-50%)}}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:not(:hover):not(:active):not(.has-background),.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:not(:hover):not(:active):not(.has-background){background:none;border:none;padding:0 8px}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg{display:block;height:1.5em;width:1.5em}.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{left:calc(env(safe-area-inset-left) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-button-next{right:calc(env(safe-area-inset-right) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-icon svg{vertical-align:middle}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:2000001}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}
81@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}} 82/*# sourceURL=https://raz0r.name/wp-includes/blocks/image/style.min.css */ 83</style> 84<link rel='stylesheet' id='prismatic-blocks-css' href='https://raz0r.name/wp-content/plugins/prismatic/css/styles-blocks.css?ver=7.1.2' media='all' /> 85<style id="wp-block-post-template-inline-css"> 86.wp-block-post-template{box-sizing:border-box;list-style:none;margin-bottom:0;margin-top:0;max-width:100%;padding:0}.wp-block-post-template.is-flex-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1.25em}.wp-block-post-template.is-flex-container>li{margin:0;width:100%}@media (min-width:600px){.wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{width:calc(50% - .625em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{width:calc(33.33333% - .83333em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(25% - .9375em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{width:calc(20% - 1em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{width:calc(16.66667% - 1.04167em)}}@media (max-width:600px){.wp-block-post-template-is-layout-grid[class*=columns-]:not(.has-native-responsive-grid){grid-template-columns:1fr}}.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{float:right;margin-inline-end:0;margin-inline-start:2em}.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{float:left;margin-inline-end:2em;margin-inline-start:0}.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{margin-inline-end:auto;margin-inline-start:auto} 87/*# sourceURL=https://raz0r.name/wp-includes/blocks/post-template/style.min.css */ 88</style> 89<style id="wp-block-query-pagination-inline-css"> 90.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{margin-inline-start:auto}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{margin-inline-end:auto}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination .wp-block-query-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination.aligncenter{justify-content:center} 91/*# sourceURL=https://raz0r.name/wp-includes/blocks/query-pagination/style.min.css */ 92</style> 93<style id="wp-block-site-tagline-inline-css"> 94.wp-block-site-tagline{box-sizing:border-box} 95/*# sourceURL=https://raz0r.name/wp-includes/blocks/site-tagline/style.min.css */ 96</style> 97<style id="wp-block-spacer-inline-css"> 98.wp-block-spacer{clear:both} 99/*# sourceURL=https://raz0r.name/wp-includes/blocks/spacer/style.min.css */ 100</style> 101<style id="wp-block-columns-inline-css"> 102.wp-block-columns{box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns{align-items:normal!important}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%} 103/*# sourceURL=https://raz0r.name/wp-includes/blocks/columns/style.min.css */ 104</style> 105<style id="wp-block-archives-inline-css"> 106.wp-block-archives{box-sizing:border-box}.wp-block-archives-dropdown label{display:block} 107/*# sourceURL=https://raz0r.name/wp-includes/blocks/archives/style.min.css */ 108</style> 109<style id="wp-emoji-styles-inline-css"> 110 111 img.wp-smiley, img.emoji { 112 display: inline !important; 113 border: none !important; 114 box-shadow: none !important; 115 height: 1em !important; 116 width: 1em !important; 117 margin: 0 0.07em !important; 118 vertical-align: -0.1em !important; 119 background: none !important; 120 padding: 0 !important; 121 } 122/*# sourceURL=wp-emoji-styles-inline-css */ 123</style> 124<style id="wp-block-library-inline-css"> 125:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}
125.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 126/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 127</style> 128<style id="global-styles-inline-css"> 129:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--base: #DFDCD7;--wp--preset--color--contrast: #191919;--wp--preset--color--accent-1: #7A9BDB;--wp--preset--color--accent-2: #F7E6FF;--wp--preset--color--accent-3: #182949;--wp--preset--color--accent-4: #5F5F5F;--wp--preset--color--accent-5: #D7D3CC;--wp--preset--color--accent-6: #19191933;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
1290) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 0.875rem;--wp--preset--font-size--medium: clamp(1rem, 1rem + ((1vw - 0.2rem) * 0.196), 1.125rem);--wp--preset--font-size--large: clamp(1.125rem, 1.125rem + ((1vw - 0.2rem) * 0.392), 1.375rem);--wp--preset--font-size--x-large: clamp(1.75rem, 1.75rem + ((1vw - 0.2rem) * 0.392), 2rem);--wp--preset--font-size--xx-large: clamp(2.15rem, 2.15rem + ((1vw - 0.2rem) * 1.333), 3rem);--wp--preset--font-family--vollkorn: Vollkorn, serif;--wp--preset--font-family--fira-code: "Fira Code", monospace;--wp--preset--spacing--20: 10px;--wp--preset--spacing--30: 20px;--wp--preset--spacing--40: 30px;--wp--preset--spacing--50: clamp(30px, 5vw, 50px);--wp--preset--spacing--60: clamp(30px, 7vw, 70px);--wp--preset--spacing--70: clamp(50px, 7vw, 90px);--wp--preset--spacing--80: clamp(70px, 10vw, 140px);--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: 645px;--wp--style--global--wide-size: 1340px; }:where(body) { margin: 0; }.wp-site-blocks { padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom); }.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 1.2rem; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 1.2rem; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 1.2rem;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 1.2rem;}:root :where(.is-layout-grid){gap: 1.2rem;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained >
129 :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{background-color: var(--wp--preset--color--base);color: var(--wp--preset--color--accent-4);font-family: var(--wp--preset--font-family--fira-code);font-size: var(--wp--preset--font-size--medium);font-weight: 300;letter-spacing: -0.18px;line-height: 1.5;--wp--style--root--padding-top: 0px;--wp--style--root--padding-right: var(--wp--preset--spacing--50);--wp--style--root--padding-bottom: 0px;--wp--style--root--padding-left: var(--wp--preset--spacing--50);}a:where(:not(.wp-element-button)){color: currentColor;}:root :where(a:where(:not(.wp-element-button)):hover){text-decoration: none;}h1, h2, h3, h4, h5, h6{color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--vollkorn);font-weight: 400;letter-spacing: -0.1px;line-height: 1.125;}h1{font-size: clamp(27.894px, 1.743rem + ((1vw - 3.2px) * 1.971), 48px);letter-spacing: -0.96px;;}h2{font-size: clamp(23.043px, 1.44rem + ((1vw - 3.2px) * 1.466), 38px);letter-spacing: -0.96px;}h3{font-size: clamp(20px, 1.25rem + ((1vw - 3.2px) * 1.176), 32px);letter-spacing: -0.64px;}h4{font-size: clamp(17.905px, 1.119rem + ((1vw - 3.2px) * 0.99), 28px);letter-spacing: -0.56px;}h5{font-size: clamp(15.747px, 0.984rem + ((1vw - 3.2px) * 0.809), 24px);letter-spacing: -0.48px;}h6{font-size: var(--wp--preset--font-size--small);font-weight: 700;letter-spacing: 1.4px;text-transform: uppercase;}:root :where(.wp-element-button, .wp-block-button__link){background-color: var(--wp--preset--color--accent-1);border-radius: 4px;border-width: 0;color: var(--wp--preset--color--contrast);font-family: var(--wp--preset--font-family--fira-code);font-size: var(--wp--preset--font-size--medium);font-style: inherit;font-weight: 400;letter-spacing: -0.36px;line-height: inherit;padding-top: 1rem;padding-right: 2.25rem;padding-bottom: 1rem;padding-left: 2.25rem;text-decoration: none;text-transform: inherit;}:root :where(.wp-element-button:hover, .wp-block-button__link:hover){background-color: color-mix(in srgb, var(--wp--preset--color--accent-1) 85%, transparent);border-color: transparent;color: var(--wp--preset--color--contrast);}:root :where(.wp-element-button:focus, .wp-block-button__link:focus){outline-color: var(--wp--preset--color--accent-4);outline-offset: 2px;}:root :where(.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption){font-size: var(--wp--preset--font-size--small);line-height: 1.4;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-base-color{color: var(--wp--preset--color--base) !important;}.has-contrast-color{color: var(--wp--preset--color--contrast) !important;}.has-accent-1-color{color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-color{color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-color{color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-color{color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-color{color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-color{color: var(--wp--preset--color--accent-6) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-base-background-color{background-color: var(--wp--preset--color--base) !important;}.has-contrast-background-color{background-color: var(--wp--preset--color--contrast) !important;}.has-accent-1-background-color{background-color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-background-color{background-color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-background-color{background-color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-background-color{background-color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-background-color{background-color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-background-color{background-color: var(--wp--preset--color--accent-6) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-base-border-color{border-color: var(--wp--preset--color--base) !important;}.has-contrast-border-color{border-color: var(--wp--preset--color--contrast) !important;}.has-accent-1-border-color{border-color: var(--wp--preset--color--accent-1) !important;}.has-accent-2-border-color{border-color: var(--wp--preset--color--accent-2) !important;}.has-accent-3-border-color{border-color: var(--wp--preset--color--accent-3) !important;}.has-accent-4-border-color{border-color: var(--wp--preset--color--accent-4) !important;}.has-accent-5-border-color{border-color: var(--wp--preset--color--accent-5) !important;}.has-accent-6-border-color{border-color: var(--wp--preset--color--accent-6) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
129.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-xx-large-font-size{font-size: var(--wp--preset--font-size--xx-large) !important;}.has-vollkorn-font-family{font-family: var(--wp--preset--font-family--vollkorn) !important;}.has-fira-code-font-family{font-family: var(--wp--preset--font-family--fira-code) !important;} 130:root :where(.wp-block-columns-is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.wp-block-columns-is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-flow) > *{margin-block-start: var(--wp--preset--spacing--50);margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.wp-block-columns-is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-constrained) > *{margin-block-start: var(--wp--preset--spacing--50);margin-block-end: 0;}:root :where(.wp-block-columns-is-layout-flex){gap: var(--wp--preset--spacing--50);}:root :where(.wp-block-columns-is-layout-grid){gap: var(--wp--preset--spacing--50);} 131:root :where(.wp-block-post-date){color: var(--wp--preset--color--accent-4);font-size: var(--wp--preset--font-size--small);} 132:root :where(.wp-block-post-date a:where(:not(.wp-element-button))){color: var(--wp--preset--color--accent-4);text-decoration: none;} 133:root :where(.wp-block-post-date a:where(:not(.wp-element-button)):hover){text-decoration: underline;} 134:root :where(.wp-block-post-title){font-weight: 400;letter-spacing: -0.96px;} 135:root :where(.wp-block-post-title a:where(:not(.wp-element-button))){color: var(--wp--preset--color--contrast);text-decoration: none;} 136:root :where(.wp-block-post-title a:where(:not(.wp-element-button)):hover){text-decoration: underline;} 137:root :where(.wp-block-query-pagination){font-size: var(--wp--preset--font-size--medium);font-weight: 500;} 138:root :where(.wp-block-site-tagline){font-size: var(--wp--preset--font-size--medium);} 139:root :where(.wp-block-site-title){font-family: var(--wp--preset--font-family--vollkorn);font-size: var(--wp--preset--font-size--x-large);font-weight: 700;letter-spacing: -.5px;} 140:root :where(.wp-block-site-title a:where(:not(.wp-element-button))){text-decoration: none;} 141:root :where(.wp-block-site-title a:where(:not(.wp-element-button)):hover){text-decoration: underline;} 142:root :where(.wp-block-navigation){font-size: var(--wp--preset--font-size--medium);} 143:root :where(.wp-block-navigation a:where(:not(.wp-element-button))){text-decoration: none;} 144:root :where(.wp-block-navigation a:where(:not(.wp-element-button)):hover){text-decoration: underline;} 145:root :where(p a:where(:not(.wp-element-button))){color: var(--wp--preset--color--contrast);} 146/*# sourceURL=global-styles-inline-css */ 147</style> 148<style id="core-block-supports-inline-css"> 149.wp-elements-1 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--white);}
149.wp-elements-2 a:where(:not(.wp-element-button)){color:var(--wp--preset--color--white);}.wp-container-core-navigation-is-layout-8c972612{justify-content:flex-end;}.wp-container-core-group-is-layout-1d0a7695{justify-content:space-between;}.wp-container-core-group-is-layout-77d9e090 > .alignfull{margin-right:calc(var(--wp--preset--spacing--30) * -1);margin-left:calc(var(--wp--preset--spacing--30) * -1);}.wp-container-core-query-pagination-is-layout-4dea2dca{justify-content:space-between;}.wp-container-core-columns-is-layout-794e3cfa{flex-wrap:nowrap;}.wp-container-core-navigation-is-layout-831b2db5{flex-direction:column;align-items:flex-start;}.wp-container-core-group-is-layout-bf19e0b3{gap:var(--wp--preset--spacing--80);justify-content:space-between;align-items:flex-start;}.wp-container-core-group-is-layout-cf54d0a6{justify-content:space-between;align-items:flex-start;} 150/*# sourceURL=core-block-supports-inline-css */ 151</style> 152<style id="wp-block-template-skip-link-inline-css"> 153/*! This file is auto-generated */ 154.skip-link.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important;word-break:normal!important}.skip-link.screen-reader-text:focus{background-color:#eee;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000} 155/*# sourceURL=/wp-includes/css/wp-block-template-skip-link.min.css */ 156</style> 157<link rel='stylesheet' id='prismatic-prism-css' href='https://raz0r.name/wp-content/plugins/prismatic/lib/prism/css/theme-default.css?ver=3.7.5' media='all' /> 158<link rel='stylesheet' id='prismatic-plugin-styles-css' href='https://raz0r.name/wp-content/plugins/prismatic/lib/prism/css/plugin-styles.css?ver=3.7.5' media='all' /> 159<style id="twentytwentyfive-style-inline-css"> 160a{text-decoration-thickness:1px!important;text-underline-offset:.1em}:where(.wp-site-blocks :focus){outline-style:solid;outline-width:2px}.wp-block-navigation .wp-block-navigation-submenu .wp-block-navigation-item:not(:last-child){margin-bottom:3px}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation-item__content{outline-offset:4px}.wp-block-navigation .wp-block-navigation-item ul.wp-block-navigation__submenu-container .wp-block-navigation-item__content{outline-offset:0}blockquote,caption,figcaption,h1,h2,h3,h4,h5,h6,p{text-wrap:pretty}.more-link{display:block}:where(pre){overflow-x:auto} 161/*# sourceURL=https://raz0r.name/wp-content/themes/twentytwentyfive/style.min.css */ 162</style>
163<script data-wp-strategy="defer" defer id="wp-embed-js" src="https://raz0r.name/wp-includes/js/wp-embed.min.js?ver=7.1.2"></script>
163 164<link rel="https://api.w.org/" href="https://raz0r.name/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://raz0r.name/xmlrpc.php?rsd" /> 165<meta name="generator" content="WordPress 7.1.2" /> 166 167<!-- Bad Behavior 2.2.24 run time: 0.863 ms -->
168<script id="wp-importmap" type="importmap"> 169{"imports":{"@wordpress/interactivity":"https://raz0r.name/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=efaa5193bbad9c60ffd1"}} 170</script>
170 171<link rel="modulepreload" href="https://raz0r.name/wp-includes/js/dist/script-modules/interactivity/index.min.js?ver=efaa5193bbad9c60ffd1" id="@wordpress/interactivity-js-modulepreload" fetchpriority="low"> 172<style class="wp-fonts-local"> 173@font-face{font-family:Vollkorn;font-style:italic;font-weight:400 900;font-display:fallback;src:url('https://raz0r.name/wp-content/themes/twentytwentyfive/assets/fonts/vollkorn/Vollkorn-Italic-VariableFont_wght.woff2') format('woff2');} 174@font-face{font-family:Vollkorn;font-style:normal;font-weight:400 900;font-display:fallback;src:url('https://raz0r.name/wp-content/themes/twentytwentyfive/assets/fonts/vollkorn/Vollkorn-VariableFont_wght.woff2') format('woff2');} 175@font-face{font-family:"Fira Code";font-style:normal;font-weight:300 700;font-display:fallback;src:url('https://raz0r.name/wp-content/themes/twentytwentyfive/assets/fonts/fira-code/FiraCode-VariableFont_wght.woff2') format('woff2');} 176</style> 177<link rel="icon" href="https://raz0r.name/wp-content/uploads/2019/02/avatar33548_400x400-150x150.jpg" sizes="32x32" /> 178<link rel="icon" href="https://raz0r.name/wp-content/uploads/2019/02/avatar33548_400x400-300x300.jpg" sizes="192x192" /> 179<link rel="apple-touch-icon" href="https://raz0r.name/wp-content/uploads/2019/02/avatar33548_400x400-300x300.jpg" /> 180<meta name="msapplication-TileImage" content="https://raz0r.name/wp-content/uploads/2019/02/avatar33548_400x400-300x300.jpg" /> 181</head> 182 183<body class="home blog wp-custom-logo wp-embed-responsive wp-theme-twentytwentyfive"> 184 185<a class="skip-link screen-reader-text" id="wp-skip-link" href="#wp--skip-link--target">Skip to content</a><div class="wp-site-blocks"><header class="wp-block-template-part"> 186<div class="wp-block-group alignfull has-background-color has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-1 has-global-padding is-layout-constrained wp-container-core-group-is-layout-77d9e090 wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)"> 187<div class="wp-block-group alignwide is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-1d0a7695 wp-block-group-is-layout-flex"> 188<div class="wp-block-group is-layout-flex wp-block-group-is-layout-flex"><div class="is-default-size wp-block-site-logo"><a href="https://raz0r.name/" class="custom-logo-link" rel="home" aria-current="page"><img width="640" height="640" src="https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545.png" class="custom-logo" alt="Raz0r â Web3 Security" decoding="async" fetchpriority="high" srcset="https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545.png 640w, https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545-300x300.png 300w, https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545-150x150.png 150w" sizes="(max-width: 640px) 100vw, 640px" /></a></div> 189 190<h1 class="has-link-color wp-elements-2 wp-block-site-title"><a href="https://raz0r.name" target="_self" rel="home" aria-current="page">Raz0r â Web3 Security</a></h1></div> 191 192 193 194<div class="wp-block-group is-layout-flex wp-block-group-is-layout-flex"><nav class="is-responsive items-justified-right wp-block-navigation is-content-justification-right is-layout-flex wp-container-core-navigation-is-layout-8c972612 wp-block-navigation-is-layout-flex" aria-label="Pages" 195 data-wp-interactive="core/navigation" data-wp-context='{"overlayOpenedBy":{"click":false,"hover":false,"focus":false},"type":"overlay","roleAttribute":"","ariaLabel":"Menu"}'><button aria-haspopup="dialog" aria-label="Open menu" class="wp-block-navigation__responsive-container-open" 196 data-wp-on--click="actions.openMenuOnClick" 197 data-wp-on--keydown="actions.handleMenuKeydown" 198 ><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
198<path d="M4 7.5h16v1.5H4z"></path><path d="M4 15h16v1.5H4z"></path></svg></button> 199 <div class="wp-block-navigation__responsive-container" id="modal-1" 200 data-wp-class--has-modal-open="state.isMenuOpen" 201 data-wp-class--is-menu-open="state.isMenuOpen" 202 data-wp-watch="callbacks.initMenu" 203 data-wp-on--keydown="actions.handleMenuKeydown" 204 data-wp-on--focusout="actions.handleMenuFocusout" 205 tabindex="-1" 206 > 207 <div class="wp-block-navigation__responsive-close" tabindex="-1"> 208 <div class="wp-block-navigation__responsive-dialog" 209 data-wp-bind--aria-modal="state.ariaModal" 210 data-wp-bind--aria-label="state.ariaLabel" 211 data-wp-bind--role="state.roleAttribute" 212 > 213 <button aria-label="Close menu" class="wp-block-navigation__responsive-container-close" 214 data-wp-on--click="actions.closeMenuOnClick" 215 ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><path d="m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"></path></svg></button> 216 <div class="wp-block-navigation__responsive-container-content" 217 data-wp-watch="callbacks.focusFirstElement" 218 id="modal-1-content"> 219 <ul class="wp-block-navigation__container is-responsive items-justified-right wp-block-navigation"><li class="wp-block-navigation-item"> 220<ul class="wp-block-social-links has-visible-labels is-style-default is-layout-flex wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-github wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/raz0r" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label">GitHub</span></a></li></ul> 221</li></ul> 222 223 </div> 224 </div> 225 </div> 226 </div></nav></div> 227</div> 228</div> 229</header> 230 231 232<main id="wp--skip-link--target" class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="margin-top:var(--wp--preset--spacing--60)"> 233<div class="wp-block-query alignfull is-layout-flow wp-block-query-is-layout-flow"><ul class="alignfull wp-block-post-template is-layout-flow wp-block-post-template-is-layout-flow"><li class="wp-block-post post-1321 post type-post status-publish format-standard hentry category-articles tag-defi tag-security"> 234 235<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> 236 237<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/articles/how-we-detect-defi-exploits-in-under-one-second/" target="_self" >How We Detect DeFi Exploits in Under One Second</a></h2> 238 239<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 240<p class="wp-block-paragraph">Shared some insights on how <a href="https://x.com/DefimonAlerts">@DefimonAlerts</a> works under the hood on the <a href="https://x.com/Quicknode">@Quicknode</a> blog.</p> 241 242 243 244<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper"> 245<blockquote class="twitter-tweet" data-width="500" data-dnt="true"><p lang="en" dir="ltr">New on the Quicknode blog: <a href="https://twitter.com/DecurityHQ?ref_src=twsrc%5Etfw">@DecurityHQ</a>'s CTO on how Streams let them rebuild Defimon from polling to push, cut block latency from 2s to under 0.5s, and scale exploit detection across 8 chains with one engineer running the pipeline.<a href="https://t.co/qMXiJ8f7EN">https://t.co/qMXiJ8f7EN</a></p>— Quicknode (@Quicknode) <a href="https://twitter.com/Quicknode/status/2047314708873757041?ref_src=twsrc%5Etfw">April 23, 2026</a></blockquote>
245<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
245 246</div></figure> 247</div> 248 249<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/articles/how-we-detect-defi-exploits-in-under-one-second/"><time datetime="2026-04-24T11:53:12+03:00">24 April 2026</time></a></div></div> 250 251</li><li class="wp-block-post post-1316 post type-post status-publish format-standard hentry category-talks tag-defi tag-podcast tag-security"> 252 253<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> 254 255<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/talks/keeping-hackers-out-of-your-defi-wallet/" target="_self" >Keeping hackers out of your DeFi wallet</a></h2> 256 257<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 258<p class="wp-block-paragraph">Took part in the latest episode of the <a href="https://x.com/newmoneyreview" target="_blank" rel="noopener" title="">Unseen Money</a> podcast with Paul Amery and Timur Yunusov to discuss the current state of DeFi security. Tune in!<br></p> 259 260 261 262<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper"> 263<div class="embed-twitter"><blockquote class="twitter-tweet" data-width="500" data-dnt="true"><p lang="en" dir="ltr">The decentralised finance (<a href="https://twitter.com/hashtag/DeFi?src=hash&ref_src=twsrc%5Etfw">#DeFi</a>) market is boomingâbut the worldâs best hackers are on the prowl for new ways to steal your crypto tokens.<br><br>Listen to Arseny Reutov (<a href="https://twitter.com/theRaz0r?ref_src=twsrc%5Etfw">@theRaz0r</a>) of <a href="https://twitter.com/DecurityHQ?ref_src=twsrc%5Etfw">@decurityhq</a> in the latest episode of <a href="https://twitter.com/hashtag/UnseenMoney?src=hash&ref_src=twsrc%5Etfw">#UnseenMoney</a> from <a href="https://twitter.com/newmoneyreview?ref_src=twsrc%5Etfw">@newmoneyreview</a> <a href="https://t.co/25ZCo7ri96">https://t.co/25ZCo7ri96</a></p>— New Money Review (@newmoneyreview) <a href="https://twitter.com/newmoneyreview/status/1932088409574830452?ref_src=twsrc%5Etfw">June 9, 2025</a></blockquote>
263<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
263</div> 264</div></figure> 265</div> 266 267<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/talks/keeping-hackers-out-of-your-defi-wallet/"><time datetime="2025-06-10T11:55:26+03:00">10 June 2025</time></a></div></div> 268 269</li><li class="wp-block-post post-1276 post type-post status-publish format-standard has-post-thumbnail hentry category-releases tag-security tag-solidity tag-vulnerabilities"> 270 271<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"><figure class="wp-block-post-featured-image"><a href="https://raz0r.name/releases/new-tool-tx-coverage/" target="_self" ><img width="1970" height="700" src="https://raz0r.name/wp-content/uploads/2024/05/Screenshot-2024-04-15-at-17.01.06.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="New tool: tx-coverage" style="width:100%;object-fit:cover;" decoding="async" srcset="https://raz0r.name/wp-content/uploads/2024/05/Screenshot-2024-04-15-at-17.01.06.png 1970w, https://raz0r.name/wp-content/uploads/2024/05/Screenshot-2024-04-15-at-17.01.06-300x107.png 300w, https://raz0r.name/wp-content/uploads/2024/05/Screenshot-2024-04-15-at-17.01.06-1024x364.png 1024w, https://raz0r.name/wp-content/uploads/2024/05/Screenshot-2024-04-15-at-17.01.06-768x273.png 768w, https://raz0r.name/wp-content/uploads/2024/05/Screenshot-2024-04-15-at-17.01.06-1536x546.png 1536w" sizes="(max-width: 1970px) 100v
271w, 1970px" /></a></figure> 272 273<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/releases/new-tool-tx-coverage/" target="_self" >New tool: tx-coverage</a></h2> 274 275<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 276<p class="wp-block-paragraph">Finished a weekend project that may be useful for onchain vulnerability analysis of deployed smart contracts:</p> 277 278 279 280<p class="wp-block-paragraph"><a href="https://github.com/Decurity/tx-coverage">https://github.com/Decurity/tx-coverage</a></p> 281 282 283 284<p class="wp-block-paragraph">tx-coverage allows to reveal unused code of live smart contracts by collecting coverage from historical transactions. </p> 285 286 287 288<p class="wp-block-paragraph">With it you can discover code that was never executed onchain and may contain potential bugs.</p> 289 290 291 292<p class="wp-block-paragraph"></p> 293</div> 294 295<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/releases/new-tool-tx-coverage/"><time datetime="2024-05-07T14:25:04+03:00">7 May 2024</time></a></div></div> 296 297</li><li class="wp-block-post post-1266 post type-post status-publish format-standard hentry category-talks tag-defi tag-ethereum tag-security tag-trustx"> 298 299<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> 300 301<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/talks/building-scalable-monitoring-infrastructure-from-scratch/" target="_self" >Building scalable monitoring infrastructure from scratch</a></h2> 302 303<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 304<p class="wp-block-paragraph">Video and slides from my talk at <a href="https://www.secureum.xyz/trustx/" target="_blank" rel="noopener" title="">TrustX</a> 2023 in Istanbul about how we built <a href="https://defimon.xyz" target="_blank" rel="noopener" title="">https://defimon.xyz</a></p> 305 306 307 308<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> 309<iframe title="Building scalable monitoring infrastructure from scratch" width="500" height="281" src="https://www.youtube.com/embed/XtdMLP6EuwI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> 310</div></figure> 311 312 313 314<figure class="wp-block-embed is-type-rich is-provider-speaker-deck wp-block-embed-speaker-deck wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> 315<iframe title="Building scalable monitoring infrastructure from scratch" id="talk_frame_1115370" class="speakerdeck-iframe" src="//speakerdeck.com/player/d9995cfcf2844a68884be90ceda33fc9" width="500" height="281" style="aspect-ratio:500/281; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> 316</div></figure> 317</div> 318 319<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/talks/building-scalable-monitoring-infrastructure-from-scratch/"><time datetime="2023-12-02T15:36:05+03:00">2 December 2023</time></a></div></div> 320 321</li><li class="wp-block-post post-1196 post type-post status-publish format-standard hentry category-talks tag-ethereum tag-security tag-smart-contracts"> 322 323<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> 324 325<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/talks/upgradeable-smart-contracts-security/" target="_self" >Upgradeable smart contracts security</a></h2> 326 327<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 328<p class="wp-block-paragraph">Slides & video from my talk about the security of proxies in smart contracts at OFFZONE 2022</p> 329 330 331 332<figure class="wp-block-embed is-type-rich is-provider-speaker-deck wp-block-embed-speaker-deck wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> 333<iframe loading="lazy" title="Upgradeable smart contracts security" id="talk_frame_939259" class="speakerdeck-iframe" src="//speakerdeck.com/player/6e0b51b588d54df485bd72ff9cf48953" width="500" height="281" style="aspect-ratio:500/281; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> 334</div></figure> 335 336 337 338<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> 339<iframe loading="lazy" title="ÐÑÑений РеÑÑов. ÐезопаÑноÑÑÑ upgradeable ÑмаÑÑ ÐºÐ¾Ð½ÑÑакÑов" width="500" height="281" src="https://www.youtube.com/embed/-QJtu-MKcD8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture;
339 web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> 340</div></figure> 341</div> 342 343<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/talks/upgradeable-smart-contracts-security/"><time datetime="2022-10-19T11:51:35+03:00">19 October 2022</time></a></div></div> 344 345</li><li class="wp-block-post post-1182 post type-post status-publish format-audio has-post-thumbnail hentry category-talks tag-blockchain tag-ethereum tag-security tag-smart-contracts post_format-post-format-audio"> 346 347<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"><figure class="wp-block-post-featured-image"><a href="https://raz0r.name/talks/dry-podcast-20/" target="_self" ><img width="600" height="600" src="https://raz0r.name/wp-content/uploads/2022/07/d4b722e2-79a8-423c-b91e-e868eb35144d_600.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="СÑÑиÑе вÑÑла #20" style="width:100%;object-fit:cover;" decoding="async" loading="lazy" srcset="https://raz0r.name/wp-content/uploads/2022/07/d4b722e2-79a8-423c-b91e-e868eb35144d_600.png 600w, https://raz0r.name/wp-content/uploads/2022/07/d4b722e2-79a8-423c-b91e-e868eb35144d_600-300x300.png 300w, https://raz0r.name/wp-content/uploads/2022/07/d4b722e2-79a8-423c-b91e-e868eb35144d_600-150x150.png 150w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></figure> 348 349<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/talks/dry-podcast-20/" target="_self" >СÑÑиÑе вÑÑла #20</a></h2> 350 351<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 352<p class="wp-block-paragraph">ÐÑинÑл ÑÑаÑÑие в новом Ñпизоде подкаÑÑа <a href="https://dry.mave.digital/" target="_blank" rel="noreferrer noopener">“СÑÑиÑе вÑÑла”</a>, поÑвÑÑенном блокÑейнÑ, ÑмаÑÑ-конÑÑакÑам и Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи. ÐÑиÑÑного пÑоÑлÑÑиваниÑ!</p> 353 354 355 356<iframe src="https://embed.podcasts.apple.com/us/podcast/%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%BD%D0%BE%D0%BC%D0%B8%D0%BA%D0%BE%D0%BD-2022-%D1%8D%D0%BF%D0%B8%D0%B7%D0%BE%D0%B4-20/id1466243923?i=1000569639283&itsct=podcast_box_player&itscg=30200&ls=1&theme=auto" height="175px" frameborder="0" sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation-by-user-activation" allow="autoplay *; encrypted-media *; clipboard-write" style="width: 100%; max-width: 660px !important; overflow: hidden; border-radius: 10px; background: transparent; display:block !important; margin: auto !important;"></iframe> 357</div> 358 359<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/talks/dry-podcast-20/"><time datetime="2022-07-12T12:39:51+03:00">12 July 2022</time></a></div></div> 360 361</li><li class="wp-block-post post-1165 post type-post status-publish format-standard has-post-thumbnail hentry category-releases tag-ethereum tag-security tag-smart-contracts"> 362 363<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"><figure class="wp-block-post-featured-image"><a href="https://raz0r.name/releases/contract-diff/" target="_self" ><img width="1568" height="950" src="https://raz0r.name/wp-content/uploads/2022/02/Снимок-ÑкÑана-2022-02-16-в-19.46.48-1568x950.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="contract-diff: find bugs in smart contract forks" style="width:100%;object-fit:cover;" decoding="async" loading="lazy" srcset="https://raz0r.name/wp-content/uploads/2022/02/Снимок-ÑкÑана-2022-02-16-в-19.46.48-1568x950.png 1568w, https://raz0r.name/wp-content/uploads/2022/02/Снимок-ÑкÑана-2022-02-16-в-19.46.48-300x182.png 300w, https://raz0r.name/wp-content/uploads/2022/02/Снимок-ÑкÑана-2022-02-16-в-19.46.48-1024x620.png 1024w, https://raz0r.name/wp-content/uploads/2022/02/Снимок-ÑкÑана-2022-02-16-в-19.46.48-768x465.png 768w, https://raz0r.name/wp-content/uploads/2022/02/Снимок-ÑкÑана-2022-02-16-в-19.46.48-1536x931.png 1536w, https://raz0r.name/wp-content/uploads/2022/02/Снимок-ÑкÑана-2022-02-16-в-19.46.48-2048x1241.png 2048w" sizes="auto, (max-width: 1568px) 100vw, 1568px" /></a></figure> 364 365<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/releases/contract-diff/" target="_self" >contract-diff: find bugs in smart contract forks</a></h2> 366 367<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 368<p class="wp-block-paragraph">There has been plenty of hacks when a smart contract was forked and some things were changed without full understanding of the code.</p> 369 370 371 372<p class="wp-block-paragraph">To help auditors I have built <a href="https://contract-diff.xyz">https://contract-diff.xyz</a></p> 373 374 375 376<p class="wp-block-paragraph">This is how it works 🧵</p> 377 378 379 380<p class="wp-block-paragraph">For popular contracts like OpenZeppelin, Uniswap, Sushiswap, etc two kinds of hashes were computed: md5 hashsums & simhashes. Using hashsums we can find exact matches of contract sources. With simhashes it is possible to find contracts that are very similar to each other.</p> 381 382 383 384<p class="wp-block-paragraph">EtherScan does not verify the integrity of the included libs. With <a href="https://contract-diff.xyz">https://contract-diff.xyz</a> you can quickly figure out which versions of libs are actually used. If a hashsum is not found in the database, but there is a contract with a similar simhash you will see a diff view.</p> 385 386 387 388<p class="wp-block-paragraph">One example is Uranium hack which was a fork of Uniswap v2:</p> 389 390 391 392<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper"> 393https://twitter.com/RektHQ/status/1387399124090294276 394</div></figure> 395 396 397 398<p class="wp-block-paragraph">Here you can see that there were mostly renamings but also an important change to the logic which led to $57,000,000 loss:</p> 399 400 401 402<p class="wp-block-paragraph"><a href="https://www.contract-diff.xyz/?address=0xa08c4571b395f81fbd3755d44eaf9a25c9399a4a&chain=1">https://www.contract-diff.xyz/?address=0xa08c4571b395f81fbd3755d44eaf9a25c9399a4a&chain=1</a></p> 403 404 405 406<figure class="wp-block-image"><img decoding="async" src="https://pbs.twimg.com/media/FLu4WLxXEAkzftt.jpg" alt=""/></figure> 407 408 409 410<p class="wp-block-paragraph">I am planning to add more chains (currently only Ethereum mainnet &
410 BSC) as well as support more contract flatenners (they are really weird). Will appreciate any feedback. Cheers!</p> 411 412 413 414<p class="wp-block-paragraph"><em>Originally tweeted by Raz0r (<a href="https://twitter.com/theRaz0r">@theRaz0r</a>) on <a href="https://twitter.com/theRaz0r/status/1493993400978354179">16 February 2022</a>.</em></p> 415</div> 416 417<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/releases/contract-diff/"><time datetime="2022-02-16T20:46:45+03:00">16 February 2022</time></a></div></div> 418 419</li><li class="wp-block-post post-1160 post type-post status-publish format-standard hentry category-talks tag-blockchain tag-ethereum tag-security tag-web3"> 420 421<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> 422 423<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/talks/web3-security/" target="_self" >ÐезопаÑноÑÑÑ web3: ÑÑзвимоÑÑи на ÑÑÑке блокÑейна и веб-ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¹</a></h2> 424 425<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 426<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> 427<iframe loading="lazy" title="ÐезопаÑноÑÑÑ web3: ÑÑзвимоÑÑи на ÑÑÑке блокÑейна и веб-ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¹ â¨ÐÑÑений РеÑÑов" width="500" height="281" src="https://www.youtube.com/embed/J4tZHDyM7rA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> 428</div></figure> 429 430 431 432<figure class="wp-block-embed is-type-rich is-provider-speaker-deck wp-block-embed-speaker-deck wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> 433<iframe loading="lazy" title="ÐезопаÑноÑÑÑ web3: ÑÑзвимоÑÑи на ÑÑÑке блокÑейна и веб-ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¹" id="talk_frame_829793" class="speakerdeck-iframe" src="//speakerdeck.com/player/e90536f392a848f28b9a5de34895aafc" width="500" height="281" style="aspect-ratio:500/281; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> 434</div></figure> 435</div> 436 437<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/talks/web3-security/"><time datetime="2022-02-10T13:04:19+03:00">10 February 2022</time></a></div></div> 438 439</li><li class="wp-block-post post-1148 post type-post status-publish format-standard hentry category-articles tag-codeql tag-javascript tag-security tag-xss"> 440 441<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> 442 443<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/articles/using-codeql-to-detect-client-side-vulnerabilities-in-web-applications/" target="_self" >Using CodeQL to detect client-side vulnerabilities in web applications</a></h2> 444 445<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 446<p class="wp-block-paragraph">GitHubâs CodeQL is a robust query language originally developed by Semmle that allows you to look for vulnerabilities in the source code. CodeQL is known as a tool to inspect open source repositories, however its usage is not limited just to it. In this article I will delve into approaches on how to use CodeQL for web application audits, specifically to discover client-side vulnerabilities.</p> 447 448 449 450<p class="wp-block-paragraph">The idea of CodeQL is to treat source code as a database which can be queried using SQL-like statements. There are lots of languages supported among which is JavaScript. For JavaScript both server-side and client-side flavours are supported. JS CodeQL understands modern editions such as ES6 as well as frameworks like React (with JSX) and Angular.</p> 451 452 453 454<p class="wp-block-paragraph">CodeQL is not just grep as it supports taint tracking which allows you to test if a given user input (a source) can reach a vulnerable function (a sink). This is especially useful when dealing with DOM-based Cross Site Scripting vulnerabilities. By tainting a user-supplied DOM property such as location.hash one can test if this value actually reaches one of the XSS sinks, e.g. document.innerHTML or document.write().</p> 455 456 457 458 <a href="https://raz0r.name/articles/using-codeql-to-detect-client-side-vulnerabilities-in-web-applications/#more-1148" class="more-link"><span aria-label="Continue reading Using CodeQL to detect client-side vulnerabilities in web applications">(more…)</span></a></div> 459 460<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/articles/using-codeql-to-detect-client-side-vulnerabilities-in-web-applications/"><time datetime="2021-09-23T12:38:44+03:00">23 September 2021</time></a></div></div> 461 462</li><li class="wp-block-post post-1128 post type-post status-publish format-standard hentry category-writeups tag-defi tag-ethereum tag-security tag-smart-contracts"> 463 464<div class="wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"> 465 466<h2 class="wp-block-post-title has-x-large-font-size"><a href="https://raz0r.name/writeups/defi-hack-solutions-discolp/" target="_self" >DeFi Hack solutions: DiscoLP</a></h2> 467 468<div class="entry-content alignfull wp-block-post-content has-medium-font-size has-global-padding is-layout-constrained wp-block-post-content-is-layout-constrained"> 469<p class="wp-block-paragraph">This is a series of write-ups on <a href="https://defihack.xyz" title="https://defihack.xyz" target="_blank" rel="noreferrer noopener">DeFi Hack</a>, a wargame based on real-world DeFi vulnerabilities. Other posts:</p> 470 471 472 473<figure class="wp-block-embed is-type-wp-embed is-provider-raz-0-r-name wp-block-embed-raz-0-r-name"><div class="wp-block-embed__wrapper"> 474<blockquote class="wp-embedded-content" data-secret="3nL0Kv1Jzk"><a href="https://raz0r.name/writeups/defi-hack-solutions-may-the-force-be-with-you/">DeFi Hack solutions: May The Force Be With You</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“DeFi Hack solutions: May The Force Be With You” — Raz0r.name" src="https://raz0r.name/writeups/defi-hack-solutions-may-the-force-be-with-you/embed/#?secret=wMSomS8DrX#?secret=3nL0Kv1Jzk" data-secret="3nL0Kv1Jzk" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> 475</div></figure> 476 477 478 479<p class="wp-block-paragraph"><strong>DiscoLP</strong></p> 480 481 482 483<p class="wp-block-paragraph"><em>DiscoLP is a brand new liquidity mining protocol! You can participate by depositing some JIMBO or JAMBO tokens. All liquidity will be supplied to JIMBO-JAMBO Uniswap pair. By providing liquidity with us you will get DISCO tokens in return!</em></p> 484 485 486 487<p class="wp-block-paragraph">The goal of this level was to get at least 100 DISCO tokens having only 1 JIMBO and 1 JAMBO. The target contract DiscoLP had only one public function named âdepositâ with an explicit statement in the comments:</p> 488 489 490 491<p class="wp-block-paragraph"><code class="" data-line="">// accepts only JIMBO or JAMBO tokens</code></p> 492 493 494 495<p class="wp-block-paragraph">Uniswap is designed in such a way that one has to deposit a pair of tokens in the same proportions, but this function allowed to stake a single token swapping half of the value for the second token. In return LP shares were awarded. This level is a replica of the <a href="https://growthdefi.medium.com/raave-farming-contract-exploit-explained-f3b6f0b3c1b3">rAAVE farming contract hack</a> that happened in February, 2021. As you may guess, the <code class="" data-line="">depositToken</code>() function was not limited to JIMBO or JAMBO tokens, but actually accepted any token, there was no validation of the <code class="" data-line="">_token</code> argument. It means that literally any token could have been staked that allowed to mint DISCO out of thin air. Although the cause is simple, the attack execution requires multiple steps.</p> 496 497 498 499<p class="wp-block-paragraph">First of all, an attacker has to create an arbitrary token:</p> 500 501 502 503<pre class="wp-block-prismatic-blocks"><code class="language-solidity" data-line="">Token evil = new Token("Evil Token", "EVIL"); // Token is ERC20</code></pre> 504 505 506 507<p class="wp-block-paragraph">After that attacker approves unlimited EVIL spending to the instance of the level and to the Uniswap router:</p> 508 509 510 511<pre class="wp-block-prismatic-blocks"><code class="language-solidity" data-line="">evil.approve(instance, 2**256 - 1); 512evil.approve(_router, 2**256 - 1);</code></pre> 513 514 515 516<p class="wp-block-paragraph">The goal of the whole attack is to get some fake LP shares after providing liquidity to the Uniswap pair with JIMBO and attackerâs EVIL token in place of JAMBO. The attacker also approves spending of JIMBO to the Uniswap router, so that the swap in the <code class="" data-line="">depositToken()</code> function succeeds:</p> 517 518 519 520<pre class="wp-block-prismatic-blocks"><code class="language-solidity" data-line="">IERC20(tokenA).approve(_router, 2**256 - 1);</code></pre> 521 522 523 524<p class="wp-block-paragraph">After that a JIMBO-EVIL Uniswap pair is created:</p> 525 526 527 528<pre class="wp-block-prismatic-blocks"><code class="language-solidity" data-line="">address pair = IUniswapV2Factory(_factory).createPair(address(evil), address(tokenA));</code></pre> 529 530 531 532<p class="wp-block-paragraph">After transfering a single JIMBO token that we have to the attacker contract, we add liquidity to the created pool:</p> 533 534 535 536<pre class="wp-block-prismatic-blocks"><code class="language-solidity" data-line="">(uint256 amountA, uint256 amountB, uint256 _shares) = IUniswapV2Router(_router).addLiquidity( 537 address(evil), 538 address(tokenA), 539 100000000000 * 10 ** 18, // EVIL liquidity 540 1 * 10 ** 18, // 1 JIMBO 541 1, 1, 542 address(this), // address to send LP shares (attacker contract) 543 2**256 - 1);</code></pre> 544 545 546 547<p class="wp-block-paragraph">Finally we deposit fake LP shares to DiscoLP contract:</p> 548 549 550 551<pre class="wp-block-prismatic-blocks"><code class="language-solidity" data-line="">DiscoLP(instance).depositToken(address(evil), amount, 1);</code></pre> 552 553 554 555<p class="wp-block-paragraph">After swapping zero-value EVIL tokens, we get plenty of DiscoLP shares! You can find the full source code of the attack contract here: <a href="https://github.com/Raz0r/defihack/blob/master/contracts/attacks/DiscoLPAttack.sol">https://github.com/Raz0r/defihack/blob/master/contracts/attacks/DiscoLPAttack.sol</
555a></p> 556</div> 557 558<div style="margin-top:var(--wp--preset--spacing--40)" class="wp-block-post-date has-small-font-size"><a href="https://raz0r.name/writeups/defi-hack-solutions-discolp/"><time datetime="2021-06-18T12:58:51+03:00">18 June 2021</time></a></div></div> 559 560</li></ul> 561 562 563<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--60)"></div> 564 565 566 567<div class="wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained"><nav class="alignwide wp-block-query-pagination is-content-justification-space-between is-layout-flex wp-container-core-query-pagination-is-layout-4dea2dca wp-block-query-pagination-is-layout-flex" aria-label="Pagination"> 568 569 570<div class="wp-block-query-pagination-numbers"><span aria-current="page" class="page-numbers current">1</span> 571<a class="page-numbers" href="https://raz0r.name/page/2/">2</a> 572<a class="page-numbers" href="https://raz0r.name/page/3/">3</a> 573<span class="page-numbers dots">…</span> 574<a class="page-numbers" href="https://raz0r.name/page/12/">12</a></div> 575 576<a href="https://raz0r.name/page/2/" class="wp-block-query-pagination-next">Next Page<span class='wp-block-query-pagination-next-arrow is-arrow-arrow' aria-hidden='true'>â</span></a> 577</nav></div> 578</div> 579</main> 580 581 582<footer class="wp-block-template-part"> 583<div class="wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--50)"> 584<div class="wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow"><div class="is-default-size wp-block-site-logo"><a href="https://raz0r.name/" class="custom-logo-link" rel="home" aria-current="page"><img loading="lazy" width="640" height="640" src="https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545.png" class="custom-logo" alt="Raz0r â Web3 Security" decoding="async" srcset="https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545.png 640w, https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545-300x300.png 300w, https://raz0r.name/wp-content/uploads/2021/06/ÐопиÑ-80522b2f427ebb98b6ec919fbd8b5545-150x150.png 150w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></div> 585 586 587<div class="wp-block-group alignfull is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-cf54d0a6 wp-block-group-is-layout-flex"> 588<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-794e3cfa wp-block-columns-is-layout-flex"> 589<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"><h2 class="wp-block-site-title"><a href="https://raz0r.name" target="_self" rel="home" aria-current="page">Raz0r â Web3 Security</a></h2> 590 591<p class="wp-block-site-tagline">Web3 Security</p></div> 592 593 594 595<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"> 596<div style="height:var(--wp--preset--spacing--40);width:0px" aria-hidden="true" class="wp-block-spacer"></div> 597</div> 598</div> 599 600 601 602<div class="wp-block-group is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-bf19e0b3 wp-block-group-is-layout-flex"><nav class="is-vertical wp-block-navigation is-layout-flex wp-container-core-navigation-is-layout-831b2db5 wp-block-navigation-is-layout-flex" aria-label="Pages 2"><ul class="wp-block-navigation__container is-vertical wp-block-navigation"><li class="wp-block-navigation-item"> 603<ul class="wp-block-social-links has-visible-labels is-style-default is-layout-flex wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-github wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/raz0r" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
603<path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label">GitHub</span></a></li></ul> 604</li></ul></nav> 605 606<div class="wp-block-archives-dropdown wp-block-archives"><label for="wp-block-archives-2" class="wp-block-archives__label">Archives</label> 607 <select id="wp-block-archives-2" name="archive-dropdown"> 608 <option value="">Select Month</option> <option value='https://raz0r.name/2026/04/'> April 2026 (1)</option> 609 <option value='https://raz0r.name/2025/06/'> June 2025 (1)</option> 610 <option value='https://raz0r.name/2024/05/'> May 2024 (1)</option> 611 <option value='https://raz0r.name/2023/12/'> December 2023 (1)</option> 612 <option value='https://raz0r.name/2022/10/'> October 2022 (1)</option> 613 <option value='https://raz0r.name/2022/07/'> July 2022 (1)</option> 614 <option value='https://raz0r.name/2022/02/'> February 2022 (2)</option> 615 <option value='https://raz0r.name/2021/09/'> September 2021 (1)</option> 616 <option value='https://raz0r.name/2021/06/'> June 2021 (2)</option> 617 <option value='https://raz0r.name/2020/05/'> May 2020 (1)</option> 618 <option value='https://raz0r.name/2019/06/'> June 2019 (1)</option> 619 <option value='https://raz0r.name/2019/02/'> February 2019 (1)</option> 620 <option value='https://raz0r.name/2018/11/'> November 2018 (1)</option> 621 <option value='https://raz0r.name/2018/07/'> July 2018 (1)</option> 622 <option value='https://raz0r.name/2018/02/'> February 2018 (1)</option> 623 <option value='https://raz0r.name/2017/06/'> June 2017 (2)</option> 624 <option value='https://raz0r.name/2017/05/'> May 2017 (1)</option> 625 <option value='https://raz0r.name/2017/04/'> April 2017 (1)</option> 626 <option value='https://raz0r.name/2017/02/'> February 2017 (1)</option> 627 <option value='https://raz0r.name/2016/05/'> May 2016 (1)</option> 628 <option value='https://raz0r.name/2015/09/'> September 2015 (1)</option> 629 <option value='https://raz0r.name/2015/07/'> July 2015 (1)</option> 630 <option value='https://raz0r.name/2014/01/'> January 2014 (1)</option> 631 <option value='https://raz0r.name/2013/12/'> December 2013 (1)</option> 632 <option value='https://raz0r.name/2013/06/'> June 2013 (2)</option> 633 <option value='https://raz0r.name/2013/05/'> May 2013 (2)</option> 634 <option value='https://raz0r.name/2013/01/'> January 2013 (1)</option> 635 <option value='https://raz0r.name/2012/11/'> November 2012 (1)</option> 636 <option value='https://raz0r.name/2012/07/'> July 2012 (1)</option> 637 <option value='https://raz0r.name/2012/06/'> June 2012 (1)</option> 638 <option value='https://raz0r.name/2012/05/'> May 2012 (1)</option> 639 <option value='https://raz0r.name/2012/01/'> January 2012 (2)</option> 640 <option value='https://raz0r.name/2011/09/'> September 2011 (1)</option> 641 <option value='https://raz0r.name/2011/08/'> August 2011 (1)</option> 642 <option value='https://raz0r.name/2010/09/'> September 2010 (1)</option> 643 <option value='https://raz0r.name/2010/04/'> April 2010 (1)</option> 644 <option value='https://raz0r.name/2009/12/'> December 2009 (1)</option> 645 <option value='https://raz0r.name/2009/11/'> November 2009 (1)</option> 646 <option value='https://raz0r.name/2009/10/'> October 2009 (1)</option> 647 <option value='https://raz0r.name/2009/09/'> September 2009 (1)</option> 648 <option value='https://raz0r.name/2009/08/'> August 2009 (2)</option> 649 <option value='https://raz0r.name/2009/06/'> June 2009 (1)</option>
650 <option value='https://raz0r.name/2009/05/'> May 2009 (1)</option> 651 <option value='https://raz0r.name/2009/04/'> April 2009 (1)</option> 652 <option value='https://raz0r.name/2009/03/'> March 2009 (2)</option> 653 <option value='https://raz0r.name/2009/02/'> February 2009 (1)</option> 654 <option value='https://raz0r.name/2009/01/'> January 2009 (2)</option> 655 <option value='https://raz0r.name/2008/12/'> December 2008 (2)</option> 656 <option value='https://raz0r.name/2008/11/'> November 2008 (4)</option> 657 <option value='https://raz0r.name/2008/10/'> October 2008 (4)</option> 658 <option value='https://raz0r.name/2008/09/'> September 2008 (4)</option> 659 <option value='https://raz0r.name/2008/08/'> August 2008 (7)</option> 660 <option value='https://raz0r.name/2008/07/'> July 2008 (5)</option> 661 <option value='https://raz0r.name/2008/06/'> June 2008 (4)</option> 662 <option value='https://raz0r.name/2008/05/'> May 2008 (18)</option> 663 <option value='https://raz0r.name/2008/04/'> April 2008 (7)</option> 664</select>
664<script> 665( ( [ dropdownId, homeUrl ] ) => { 666 const dropdown = document.getElementById( dropdownId ); 667 function onSelectChange() { 668 setTimeout( () => { 669 if ( 'escape' === dropdown.dataset.lastkey ) { 670 return; 671 } 672 if ( dropdown.value ) { 673 location.href = dropdown.value; 674 } 675 }, 250 ); 676 } 677 function onKeyUp( event ) { 678 if ( 'Escape' === event.key ) { 679 dropdown.dataset.lastkey = 'escape'; 680 } else { 681 delete dropdown.dataset.lastkey; 682 } 683 } 684 function onClick() { 685 delete dropdown.dataset.lastkey; 686 } 687 dropdown.addEventListener( 'keyup', onKeyUp ); 688 dropdown.addEventListener( 'click', onClick ); 689 dropdown.addEventListener( 'change', onSelectChange ); 690 } )( ["wp-block-archives-2","https://raz0r.name"] ); 691//# sourceURL=block_core_archives_build_dropdown_script 692</script>
692 693</div></div> 694</div> 695 696 697 698<div style="height:var(--wp--preset--spacing--70)" aria-hidden="true" class="wp-block-spacer"></div> 699</div> 700</div> 701</footer></div>
702<script type="speculationrules"> 703{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/twentytwentyfive/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 704</script>
vendor: 1 bytes, line 704
704
705<script data-wp-router-options="{"loadOnClientNavigation":true}" fetchpriority="low" id="@wordpress/block-library/navigation/view-js-module" src="https://raz0r.name/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js?ver=1bf28ded04f9f188bdcb" type="module"></script>
vendor: 1 bytes, line 705
705
706<script id="prismatic-prism-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/prism-core.js?ver=3.7.5"></script>
vendor: 1 bytes, line 706
706
707<script id="prismatic-prism-toolbar-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/plugin-toolbar.js?ver=3.7.5"></script>
vendor: 1 bytes, line 707
707
708<script id="prismatic-prism-line-numbers-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/plugin-line-numbers.js?ver=3.7.5"></script>
vendor: 1 bytes, line 708
708
709<script id="prismatic-prism-show-language-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/plugin-show-language.js?ver=3.7.5"></script>
vendor: 1 bytes, line 709
709
710<script id="prismatic-prism-javascript-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/lang-javascript.js?ver=3.7.5"></script>
vendor: 1 bytes, line 710
710
711<script id="prismatic-prism-markup-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/lang-markup.js?ver=3.7.5"></script>
vendor: 1 bytes, line 711
711
712<script id="prismatic-prism-python-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/lang-python.js?ver=3.7.5"></script>
vendor: 1 bytes, line 712
712
713<script id="prismatic-prism-solidity-js" src="https://raz0r.name/wp-content/plugins/prismatic/lib/prism/js/lang-solidity.js?ver=3.7.5"></script>
vendor: 1 bytes, line 713
713
714<script id="wp-emoji-settings" type="application/json"> 715{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://raz0r.name/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 716</script>
vendor: 1 bytes, line 716
716
717<script type="module"> 718/*! This file is auto-generated */ 719var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 720//# sourceURL=https://raz0r.name/wp-includes/js/wp-emoji-loader.min.js 721</script>
721 722</body> 723</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.