PageSourceSearch

https://raz0r.name/

html raz0r.name collected 2026-09-24 19:07:48 UTC 117,973 bytes, 723 lines download raw bytes

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 &quot;Raz0r&quot; about web application security covering both offensive &amp; 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 &quot;Raz0r&quot; about web application security covering both offensive &amp; 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 &quot;Raz0r&quot; about web application security covering both offensive &amp; 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 &raquo; Feed" href="https://raz0r.name/feed/" />
34<link rel="alternate" type="application/rss+xml" title="Raz0r — Web3 Security &raquo; 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>&#39;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>&mdash; 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&amp;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&amp;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>&mdash; 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 &amp; 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">&#8220;Сушите вёсла&#8221;</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&amp;itsct=podcast_box_player&amp;itscg=30200&amp;ls=1&amp;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 &#x1f9f5;</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 &amp; 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&amp;chain=1">https://www.contract-diff.xyz/?address=0xa08c4571b395f81fbd3755d44eaf9a25c9399a4a&amp;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 &amp;
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&hellip;)</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="&#8220;DeFi Hack solutions: May The Force Be With You&#8221; &#8212; 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(&quot;Evil Token&quot;, &quot;EVIL&quot;); // 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">&hellip;</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 &nbsp;(1)</option>
609	<option value='https://raz0r.name/2025/06/'> June 2025 &nbsp;(1)</option>
610	<option value='https://raz0r.name/2024/05/'> May 2024 &nbsp;(1)</option>
611	<option value='https://raz0r.name/2023/12/'> December 2023 &nbsp;(1)</option>
612	<option value='https://raz0r.name/2022/10/'> October 2022 &nbsp;(1)</option>
613	<option value='https://raz0r.name/2022/07/'> July 2022 &nbsp;(1)</option>
614	<option value='https://raz0r.name/2022/02/'> February 2022 &nbsp;(2)</option>
615	<option value='https://raz0r.name/2021/09/'> September 2021 &nbsp;(1)</option>
616	<option value='https://raz0r.name/2021/06/'> June 2021 &nbsp;(2)</option>
617	<option value='https://raz0r.name/2020/05/'> May 2020 &nbsp;(1)</option>
618	<option value='https://raz0r.name/2019/06/'> June 2019 &nbsp;(1)</option>
619	<option value='https://raz0r.name/2019/02/'> February 2019 &nbsp;(1)</option>
620	<option value='https://raz0r.name/2018/11/'> November 2018 &nbsp;(1)</option>
621	<option value='https://raz0r.name/2018/07/'> July 2018 &nbsp;(1)</option>
622	<option value='https://raz0r.name/2018/02/'> February 2018 &nbsp;(1)</option>
623	<option value='https://raz0r.name/2017/06/'> June 2017 &nbsp;(2)</option>
624	<option value='https://raz0r.name/2017/05/'> May 2017 &nbsp;(1)</option>
625	<option value='https://raz0r.name/2017/04/'> April 2017 &nbsp;(1)</option>
626	<option value='https://raz0r.name/2017/02/'> February 2017 &nbsp;(1)</option>
627	<option value='https://raz0r.name/2016/05/'> May 2016 &nbsp;(1)</option>
628	<option value='https://raz0r.name/2015/09/'> September 2015 &nbsp;(1)</option>
629	<option value='https://raz0r.name/2015/07/'> July 2015 &nbsp;(1)</option>
630	<option value='https://raz0r.name/2014/01/'> January 2014 &nbsp;(1)</option>
631	<option value='https://raz0r.name/2013/12/'> December 2013 &nbsp;(1)</option>
632	<option value='https://raz0r.name/2013/06/'> June 2013 &nbsp;(2)</option>
633	<option value='https://raz0r.name/2013/05/'> May 2013 &nbsp;(2)</option>
634	<option value='https://raz0r.name/2013/01/'> January 2013 &nbsp;(1)</option>
635	<option value='https://raz0r.name/2012/11/'> November 2012 &nbsp;(1)</option>
636	<option value='https://raz0r.name/2012/07/'> July 2012 &nbsp;(1)</option>
637	<option value='https://raz0r.name/2012/06/'> June 2012 &nbsp;(1)</option>
638	<option value='https://raz0r.name/2012/05/'> May 2012 &nbsp;(1)</option>
639	<option value='https://raz0r.name/2012/01/'> January 2012 &nbsp;(2)</option>
640	<option value='https://raz0r.name/2011/09/'> September 2011 &nbsp;(1)</option>
641	<option value='https://raz0r.name/2011/08/'> August 2011 &nbsp;(1)</option>
642	<option value='https://raz0r.name/2010/09/'> September 2010 &nbsp;(1)</option>
643	<option value='https://raz0r.name/2010/04/'> April 2010 &nbsp;(1)</option>
644	<option value='https://raz0r.name/2009/12/'> December 2009 &nbsp;(1)</option>
645	<option value='https://raz0r.name/2009/11/'> November 2009 &nbsp;(1)</option>
646	<option value='https://raz0r.name/2009/10/'> October 2009 &nbsp;(1)</option>
647	<option value='https://raz0r.name/2009/09/'> September 2009 &nbsp;(1)</option>
648	<option value='https://raz0r.name/2009/08/'> August 2009 &nbsp;(2)</option>
649	<option value='https://raz0r.name/2009/06/'> June 2009 &nbsp;(1)</option>
650	<option value='https://raz0r.name/2009/05/'> May 2009 &nbsp;(1)</option>
651	<option value='https://raz0r.name/2009/04/'> April 2009 &nbsp;(1)</option>
652	<option value='https://raz0r.name/2009/03/'> March 2009 &nbsp;(2)</option>
653	<option value='https://raz0r.name/2009/02/'> February 2009 &nbsp;(1)</option>
654	<option value='https://raz0r.name/2009/01/'> January 2009 &nbsp;(2)</option>
655	<option value='https://raz0r.name/2008/12/'> December 2008 &nbsp;(2)</option>
656	<option value='https://raz0r.name/2008/11/'> November 2008 &nbsp;(4)</option>
657	<option value='https://raz0r.name/2008/10/'> October 2008 &nbsp;(4)</option>
658	<option value='https://raz0r.name/2008/09/'> September 2008 &nbsp;(4)</option>
659	<option value='https://raz0r.name/2008/08/'> August 2008 &nbsp;(7)</option>
660	<option value='https://raz0r.name/2008/07/'> July 2008 &nbsp;(5)</option>
661	<option value='https://raz0r.name/2008/06/'> June 2008 &nbsp;(4)</option>
662	<option value='https://raz0r.name/2008/05/'> May 2008 &nbsp;(18)</option>
663	<option value='https://raz0r.name/2008/04/'> April 2008 &nbsp;(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="{&quot;loadOnClientNavigation&quot;: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.