Help
RSS
API
Feed
Maltego
Contact
Domain > banteg.xyz
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-02-19
172.67.189.85
(
ClassC
)
Port 443
HTTP/1.1 200 OKDate: Thu, 19 Feb 2026 00:26:47 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveAccess-Control-Allow-Origin: *Cache-Control: public, max-age0, must-revalidatecf-cache-status: DYNAMICreferrer-policy: strict-origin-when-cross-originx-content-type-options: nosniffReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?s3zEOB%2FNgaoi6D3u6empilSemSVfybO6R6VQl%2FAEbA9QF2GU4HVZlmwjNzw1Ivj338%2F9W8Ednnw4elRmio6Q%2BGl0DAYDeEjjPCm4%3D}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 9d01a27d292158d9-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html xmlnshttp://www.w3.org/1999/xhtml langen xml:langen>head>meta charsetutf-8>meta namegenerator contentquarto-1.3.450>meta nameviewport contentwidthdevice-width, initial-scale1.0, user-scalableyes>title>banteg/title>style>code{white-space: pre-wrap;}span.smallcaps{font-variant: small-caps;}div.columns{display: flex; gap: min(4vw, 1.5em);}div.column{flex: auto; overflow-x: auto;}div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}ul.task-list{list-style: none;}ul.task-list li inputtypecheckbox { width: 0.8em; margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ vertical-align: middle;}/style>script srcsite_libs/quarto-nav/quarto-nav.js>/script>script srcsite_libs/quarto-nav/headroom.min.js>/script>script srcsite_libs/clipboard/clipboard.min.js>/script>script srcsite_libs/quarto-search/autocomplete.umd.js>/script>script srcsite_libs/quarto-search/fuse.min.js>/script>script srcsite_libs/quarto-search/quarto-search.js>/script>meta namequarto:offset content./>script srcsite_libs/quarto-listing/list.min.js>/script>script srcsite_libs/quarto-listing/quarto-listing.js>/script>script srcsite_libs/quarto-html/quarto.js>/script>script srcsite_libs/quarto-html/popper.min.js>/script>script srcsite_libs/quarto-html/tippy.umd.min.js>/script>script srcsite_libs/quarto-html/anchor.min.js>/script>link hrefsite_libs/quarto-html/tippy.css relstylesheet>link hrefsite_libs/quarto-html/quarto-syntax-highlighting.css relstylesheet idquarto-text-highlighting-styles>script srcsite_libs/bootstrap/bootstrap.min.js>/script>link hrefsite_libs/bootstrap/bootstrap-icons.css relstylesheet>link hrefsite_libs/bootstrap/bootstrap.min.css relstylesheet idquarto-bootstrap data-modelight>script idquarto-search-options typeapplication/json>{ location: navbar, copy-button: false, collapse-after: 3, panel-placement: end, type: overlay, limit: 20, language: { search-no-results-text: No results, search-matching-documents-text: matching documents, search-copy-link-title: Copy link to search, search-hide-matches-text: Hide additional matches, search-more-match-text: more match in this document, search-more-matches-text: more matches in this document, search-clear-button-title: Clear, search-detached-cancel-button-title: Cancel, search-submit-button-title: Submit, search-label: Search }}/script>script> window.document.addEventListener(DOMContentLoaded, function (_event) { const listingTargetEl window.document.querySelector(#listing-listing .list); if (!listingTargetEl) { // No listing discovered, do not attach. return; } const options { valueNames: listing-title,listing-subtitle,listing-author,listing-date,listing-image,listing-reading-time,listing-categories,{ data: index },{ data: categories },{ data: listing-date-sort },{ data: listing-file-modified-sort }, searchColumns: listing-date,listing-title,listing-author,listing-subtitle,listing-image,listing-description, }; windowquarto-listings windowquarto-listings || {}; windowquarto-listingslisting-listing new List(listing-listing, options); if (windowquarto-listing-loaded) { windowquarto-listing-loaded(); } }); window.addEventListener(hashchange,() > { if (windowquarto-listing-loaded) { windowquarto-listing-loaded(); } }) /script> script srchttps://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?featureses6>/script> script srchttps://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js typetext/javascript>/script>link relstylesheet hreffonts/fonts.css>link relalternate typeapplication/rss+xml titlebanteg hrefindex.xml>meta propertyog:title content>meta propertyog:image contenthttps://banteg.xyz/posts/takopi/takopi-feature.jpg>meta propertyog:site-name contentbanteg>meta nametwitter:title content>meta nametwitter:image contenthttps://banteg.xyz/posts/takopi/takopi-feature.jpg>meta nametwitter:card contentsummary_large_image>/head>body classnav-fixed>div idquarto-search-results>/div> header idquarto-header classheadroom fixed-top> nav classnavbar navbar-expand-lg navbar-dark > div classnavbar-container container-fluid> div classnavbar-brand-container> a classnavbar-brand href./index.html> span classnavbar-title>banteg/span> /a> /div> div idquarto-search class titleSearch>/div> button classnavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarCollapse aria-controlsnavbarCollapse aria-expandedfalse aria-labelToggle navigation onclickif (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }> span classnavbar-toggler-icon>/span>/button> div classcollapse navbar-collapse idnavbarCollapse> ul classnavbar-nav navbar-nav-scroll me-auto> li classnav-item> a classnav-link active href./index.html rel target aria-currentpage> span classmenu-text>posts/span>/a> /li> /ul> ul classnavbar-nav navbar-nav-scroll ms-auto> li classnav-item> a classnav-link href./about.html rel target> span classmenu-text>about/span>/a> /li> li classnav-item compact> a classnav-link hrefhttps://github.com/banteg rel target>i classbi bi-github roleimg>/i> span classmenu-text>/span>/a> /li> li classnav-item compact> a classnav-link hrefhttps://twitter.com/banteg rel target>i classbi bi-twitter roleimg>/i> span classmenu-text>/span>/a> /li> li classnav-item compact> a classnav-link href./index.xml rel target>i classbi bi-rss roleimg>/i> span classmenu-text>/span>/a> /li> /ul> div classquarto-navbar-tools>/div> /div> !-- /navcollapse --> /div> !-- /container-fluid --> /nav>/header>!-- content -->div idquarto-content classquarto-container page-columns page-rows-contents page-layout-full page-navbar>!-- sidebar -->!-- margin-sidebar --> !-- main -->main classcontent column-page idquarto-document-content>div classquarto-listing quarto-listing-container-default idlisting-listing>div classlist quarto-listing-default>div classquarto-post image-left data-index0 data-categoriesreverse engineering,game data-listing-date-sort1769889600000 data-listing-file-modified-sort1769979877110 data-listing-date-modified-sortNaN data-listing-reading-time-sort26>div classthumbnail>p>a href./posts/crimsonland/index.html> img src./posts/crimsonland/cover.avif classthumbnail-image> /a>/p>/div>div classbody>a href./posts/crimsonland/index.html>h3 classno-anchor listing-title>Resurrecting Crimsonland/h3>div classlisting-subtitle>Decompiling and preserving a cult 2003 classic game/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(reverse engineering); return false;>reverse engineering/div>div classlisting-category onclickwindow.quartoListingCategory(game); return false;>game/div>/div>a href./posts/crimsonland/index.html> /a>/div>div classmetadata>a href./posts/crimsonland/index.html>div classlisting-date>2026-02-01/div>div classlisting-author>banteg/div>div classlisting-reading-time>26 min/div>/a>/div>/div>div classquarto-post image-left data-index1 data-categoriestelegram,agents data-listing-date-sort1767988800000 data-listing-file-modified-sort1768492986810 data-listing-date-modified-sortNaN data-listing-reading-time-sort4>div classthumbnail>p>a href./posts/takopi/index.html> img src./posts/takopi/takopi-feature.jpg classthumbnail-image> /a>/p>/div>div classbody>a href./posts/takopi/index.html>h3 classno-anchor listing-title>Introducing Takopi/h3>div classlisting-subtitle>Your Coding Agents, Anywhere/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(telegram); return false;>telegram/div>div classlisting-category onclickwindow.quartoListingCategory(agents); return false;>agents/div>/div>a href./posts/takopi/index.html> /a>/div>div classmetadata>a href./posts/takopi/index.html>div classlisting-date>2026-01-10/div>div classlisting-author>banteg/div>div classlisting-reading-time>4 min/div>/a>/div>/div>div classquarto-post image-left data-index2 data-categoriesai,game data-listing-date-sort1741982400000 data-listing-file-modified-sort1768350676049 data-listing-date-modified-sortNaN data-listing-reading-time-sort16>div classthumbnail>p>a href./posts/slay-the-princess/index.html> img src./posts/slay-the-princess/cover.jpg classthumbnail-image> /a>/p>/div>div classbody>a href./posts/slay-the-princess/index.html>h3 classno-anchor listing-title>Slay the Princess/h3>div classlisting-subtitle>Why is this game the best personality and vibes eval for LLMs?/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ai); return false;>ai/div>div classlisting-category onclickwindow.quartoListingCategory(game); return false;>game/div>/div>a href./posts/slay-the-princess/index.html> /a>/div>div classmetadata>a href./posts/slay-the-princess/index.html>div classlisting-date>2025-03-15/div>div classlisting-author>banteg/div>div classlisting-reading-time>16 min/div>/a>/div>/div>div classquarto-post image-left data-index3 data-categoriesvyper,react data-listing-date-sort1714507200000 data-listing-file-modified-sort1714519758817 data-listing-date-modified-sortNaN data-listing-reading-time-sort9>div classthumbnail>p>a href./posts/yearn-permit/index.html> img src./posts/yearn-permit/cover.jpg classthumbnail-image> /a>/p>/div>div classbody>a href./posts/yearn-permit/index.html>h3 classno-anchor listing-title>Yearn Bunny Vision/h3>div classlisting-subtitle>Designing a vault UI that can outlive its creator/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(vyper); return false;>vyper/div>div classlisting-category onclickwindow.quartoListingCategory(react); return false;>react/div>/div>a href./posts/yearn-permit/index.html> /a>/div>div classmetadata>a href./posts/yearn-permit/index.html>div classlisting-date>2024-05-01/div>div classlisting-author>banteg/div>div classlisting-reading-time>9 min/div>/a>/div>/div>div classquarto-post image-left data-index4 data-categoriesvyper,ape data-listing-date-sort1713988800000 data-listing-file-modified-sort1769960133542 data-listing-date-modified-sortNaN data-listing-reading-time-sort3>div classthumbnail>p>a href./posts/vyper-permit2/index.html> img src./posts/vyper-permit2/cover.jpg classthumbnail-image> /a>/p>/div>div classbody>a href./posts/vyper-permit2/index.html>h3 classno-anchor listing-title>Vyper Permit2 Tutorial/h3>div classlisting-subtitle>Integrate Permit2 into your contracts/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(vyper); return false;>vyper/div>div classlisting-category onclickwindow.quartoListingCategory(ape); return false;>ape/div>/div>a href./posts/vyper-permit2/index.html> /a>/div>div classmetadata>a href./posts/vyper-permit2/index.html>div classlisting-date>2024-04-25/div>div classlisting-author>banteg/div>div classlisting-reading-time>3 min/div>/a>/div>/div>div classquarto-post image-left data-index5 data-categoriesethereum,data data-listing-date-sort1695758400000 data-listing-file-modified-sort1768350991036 data-listing-date-modified-sortNaN data-listing-reading-time-sort7>div classthumbnail>p>a href./posts/heatmap/index.html> img src./posts/heatmap/cover.jpg classthumbnail-image> /a>/p>/div>div classbody>a href./posts/heatmap/index.html>h3 classno-anchor listing-title>Ethereum Transfers Heatmap/h3>div classlisting-subtitle>Observe hidden patterns in token transfers/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>div classlisting-category onclickwindow.quartoListingCategory(data); return false;>data/div>/div>a href./posts/heatmap/index.html> /a>/div>div classmetadata>a href./posts/heatmap/index.html>div classlisting-date>2023-09-27/div>div classlisting-author>banteg/div>div classlisting-reading-time>7 min/div>/a>/div>/div>div classquarto-post image-left data-index6 data-categoriesethereum,data data-listing-date-sort1694462400000 data-listing-file-modified-sort1769960249168 data-listing-date-modified-sortNaN data-listing-reading-time-sort12>div classthumbnail>p>a href./posts/minimal-proxies/index.html> img src./posts/minimal-proxies/cover.png classthumbnail-image> /a>/p>/div>div classbody>a href./posts/minimal-proxies/index.html>h3 classno-anchor listing-title>Minimal Proxy Compendium/h3>div classlisting-subtitle>The history of minimal proxies and how to scan the blockchain on your laptop in seconds/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>div classlisting-category onclickwindow.quartoListingCategory(data); return false;>data/div>/div>a href./posts/minimal-proxies/index.html> /a>/div>div classmetadata>a href./posts/minimal-proxies/index.html>div classlisting-date>2023-09-12/div>div classlisting-author>banteg/div>div classlisting-reading-time>12 min/div>/a>/div>/div>div classquarto-post image-left data-index7 data-categoriesvyper,data data-listing-date-sort1693598400000 data-listing-file-modified-sort1769960270268 data-listing-date-modified-sortNaN data-listing-reading-time-sort20>div classthumbnail>p>a href./posts/vyper-opcodes/index.html> img src./posts/vyper-opcodes/image.jpg classthumbnail-image> /a>/p>/div>div classbody>a href./posts/vyper-opcodes/index.html>h3 classno-anchor listing-title>So you found a compiler bug/h3>div classlisting-subtitle>How to find the affected parties and responsibly disclose it/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(vyper); return false;>vyper/div>div classlisting-category onclickwindow.quartoListingCategory(data); return false;>data/div>/div>a href./posts/vyper-opcodes/index.html> /a>/div>div classmetadata>a href./posts/vyper-opcodes/index.html>div classlisting-date>2023-09-02/div>div classlisting-author>banteg/div>div classlisting-reading-time>20 min/div>/a>/div>/div>div classquarto-post image-left data-index8 data-categoriesethereum,data data-listing-date-sort1693252800000 data-listing-file-modified-sort1749205111022 data-listing-date-modified-sortNaN data-listing-reading-time-sort3>div classthumbnail>p>a href./posts/eip-4626/index.html> div classlisting-item-img-placeholder card-img-top > /div> /a>/p>/div>div classbody>a href./posts/eip-4626/index.html>h3 classno-anchor listing-title>EIP-4626 Compatibility Study/h3>div classlisting-subtitle>How some vault contracts break wallet and explorer integrations with missing events/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>div classlisting-category onclickwindow.quartoListingCategory(data); return false;>data/div>/div>a href./posts/eip-4626/index.html> /a>/div>div classmetadata>a href./posts/eip-4626/index.html>div classlisting-date>2023-08-29/div>div classlisting-author>banteg/div>div classlisting-reading-time>3 min/div>/a>/div>/div>div classquarto-post image-left data-index9 data-categoriesethereum,ape data-listing-date-sort1658779200000 data-listing-file-modified-sort1769960165141 data-listing-date-modified-sortNaN data-listing-reading-time-sort8>div classthumbnail>p>a href./posts/evm-trace/index.html> p classcard-img-top>img srcposts/evm-trace/image_0.png classthumbnail-image card-img/>/p> /a>/p>/div>div classbody>a href./posts/evm-trace/index.html>h3 classno-anchor listing-title>100x faster EVM traces with Python/h3>div classlisting-subtitle>Building a drop-in replacement for Geth traces using Parity’s vmTrace format/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>div classlisting-category onclickwindow.quartoListingCategory(ape); return false;>ape/div>/div>a href./posts/evm-trace/index.html> /a>/div>div classmetadata>a href./posts/evm-trace/index.html>div classlisting-date>2022-07-26/div>div classlisting-author>banteg/div>div classlisting-reading-time>8 min/div>/a>/div>/div>div classquarto-post image-left data-index10 data-categoriesethereum,data data-listing-date-sort1657742400000 data-listing-file-modified-sort1749204556729 data-listing-date-modified-sortNaN data-listing-reading-time-sort11>div classthumbnail>p>a href./posts/lost-event/index.html> img src./posts/lost-event/image.png classthumbnail-image> /a>/p>/div>div classbody>a href./posts/lost-event/index.html>h3 classno-anchor listing-title>Quest for a lost Event/h3>div classlisting-subtitle>Recovering missing fee data from Yearn Vaults using EVM traces and memory inspection/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>div classlisting-category onclickwindow.quartoListingCategory(data); return false;>data/div>/div>a href./posts/lost-event/index.html> /a>/div>div classmetadata>a href./posts/lost-event/index.html>div classlisting-date>2022-07-14/div>div classlisting-author>banteg/div>div classlisting-reading-time>11 min/div>/a>/div>/div>div classquarto-post image-left data-index11 data-categoriesethereum data-listing-date-sort1545336000000 data-listing-file-modified-sort1769956334760 data-listing-date-modified-sortNaN data-listing-reading-time-sort4>div classthumbnail>p>a href./posts/makerdao-governance/index.html> img src./posts/makerdao-governance/image_0.avif classthumbnail-image> /a>/p>/div>div classbody>a href./posts/makerdao-governance/index.html>h3 classno-anchor listing-title>Deep dive into MakerDAO Governance/h3>div classlisting-subtitle>Today we’ll look into MakerDAO voting process and recover the complete state of the governance contract./div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>/div>a href./posts/makerdao-governance/index.html> /a>/div>div classmetadata>a href./posts/makerdao-governance/index.html>div classlisting-date>2018-12-21/div>div classlisting-author>banteg/div>div classlisting-reading-time>4 min/div>/a>/div>/div>div classquarto-post image-left data-index12 data-categoriesethereum data-listing-date-sort1541534400000 data-listing-file-modified-sort1769960185470 data-listing-date-modified-sortNaN data-listing-reading-time-sort3>div classthumbnail>p>a href./posts/ethereum-sync/index.html> img src./posts/ethereum-sync/image_0.avif classthumbnail-image> /a>/p>/div>div classbody>a href./posts/ethereum-sync/index.html>h3 classno-anchor listing-title>Ethereum clients initial sync benchmark/h3>div classlisting-subtitle>Parity Ethereum vs Geth initial sync benchmark/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>/div>a href./posts/ethereum-sync/index.html> /a>/div>div classmetadata>a href./posts/ethereum-sync/index.html>div classlisting-date>2018-11-07/div>div classlisting-author>banteg/div>div classlisting-reading-time>3 min/div>/a>/div>/div>div classquarto-post image-left data-index13 data-categoriesethereum data-listing-date-sort1540324800000 data-listing-file-modified-sort1769961753948 data-listing-date-modified-sortNaN data-listing-reading-time-sort3>div classthumbnail>p>a href./posts/disperse/index.html> img src./posts/disperse/image_0.avif classthumbnail-image> /a>/p>/div>div classbody>a href./posts/disperse/index.html>h3 classno-anchor listing-title>Announcing Disperse/h3>div classlisting-subtitle>distribute ether or tokens to multiple addresses/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>/div>a href./posts/disperse/index.html> /a>/div>div classmetadata>a href./posts/disperse/index.html>div classlisting-date>2018-10-24/div>div classlisting-author>banteg/div>div classlisting-reading-time>3 min/div>/a>/div>/div>div classquarto-post image-left data-index14 data-categoriesethereum data-listing-date-sort1515009600000 data-listing-file-modified-sort1769960174781 data-listing-date-modified-sortNaN data-listing-reading-time-sort4>div classthumbnail>p>a href./posts/ethereum-logs/index.html> p classcard-img-top>img srcposts/ethereum-logs/image_0.avif classthumbnail-image card-img/>/p> /a>/p>/div>div classbody>a href./posts/ethereum-logs/index.html>h3 classno-anchor listing-title>Deep dive into Ethereum logs/h3>div classlisting-subtitle>Hey kids, today we are going low level trying to understand how Ethereum events and logs work. Put web3 away for a while as it abstracts…/div>/a>div classlisting-categories>div classlisting-category onclickwindow.quartoListingCategory(ethereum); return false;>ethereum/div>/div>a href./posts/ethereum-logs/index.html> /a>/div>div classmetadata>a href./posts/ethereum-logs/index.html>div classlisting-date>2018-01-04/div>div classlisting-author>banteg/div>div classlisting-reading-time>4 min/div>/a>/div>/div>/div>div classlisting-no-matching d-none>No matching items/div>/div>/main> !-- /main -->script idquarto-html-after-body typeapplication/javascript>window.document.addEventListener(DOMContentLoaded, function (event) { const toggleBodyColorMode (bsSheetEl) > { const mode bsSheetEl.getAttribute(data-mode); const bodyEl window.document.querySelector(body); if (mode dark) { bodyEl.classList.add(quarto-dark); bodyEl.classList.remove(quarto-light); } else { bodyEl.classList.add(quarto-light); bodyEl.classList.remove(quarto-dark); } } const toggleBodyColorPrimary () > { const bsSheetEl window.document.querySelector(link#quarto-bootstrap); if (bsSheetEl) { toggleBodyColorMode(bsSheetEl); } } toggleBodyColorPrimary(); const icon ; const anchorJS new window.AnchorJS(); anchorJS.options { placement: right, icon: icon }; anchorJS.add(.anchored); const isCodeAnnotation (el) > { for (const clz of el.classList) { if (clz.startsWith(code-annotation-)) { return true; } } return false; } const clipboard new window.ClipboardJS(.code-copy-button, { text: function(trigger) { const codeEl trigger.previousElementSibling.cloneNode(true); for (const childEl of codeEl.children) { if (isCodeAnnotation(childEl)) { childEl.remove(); } } return codeEl.innerText; } }); clipboard.on(success, function(e) { // button target const button e.trigger; // dont keep focus button.blur(); // flash checked button.classList.add(code-copy-button-checked); var currentTitle button.getAttribute(title); button.setAttribute(title, Copied!); let tooltip; if (window.bootstrap) { button.setAttribute(data-bs-toggle, tooltip); button.setAttribute(data-bs-placement, left); button.setAttribute(data-bs-title, Copied!); tooltip new bootstrap.Tooltip(button, { trigger: manual, customClass: code-copy-button-tooltip, offset: 0, -8}); tooltip.show(); } setTimeout(function() { if (tooltip) { tooltip.hide(); button.removeAttribute(data-bs-title); button.removeAttribute(data-bs-toggle); button.removeAttribute(data-bs-placement); } button.setAttribute(title, currentTitle); button.classList.remove(code-copy-button-checked); }, 1000); // clear code selection e.clearSelection(); }); function tippyHover(el, contentFn) { const config { allowHTML: true, content: contentFn, maxWidth: 500, delay: 100, arrow: false, appendTo: function(el) { return el.parentElement; }, interactive: true, interactiveBorder: 10, theme: quarto, placement: bottom-start }; window.tippy(el, config); } const noterefs window.document.querySelectorAll(aroledoc-noteref); for (var i0; inoterefs.length; i++) { const ref noterefsi; tippyHover(ref, function() { // use id or data attribute instead here let href ref.getAttribute(data-footnote-href) || ref.getAttribute(href); try { href new URL(href).hash; } catch {} const id href.replace(/^#\/?/, ); const note window.document.getElementById(id); return note.innerHTML; }); } let selectedAnnoteEl; const selectorForAnnotation ( cell, annotation) > { let cellAttr data-code-cell + cell + ; let lineAttr data-code-annotation + annotation + ; const selector span + cellAttr + + lineAttr + ; return selector; } const selectCodeLines (annoteEl) > { const doc window.document; const targetCell annoteEl.getAttribute(data-target-cell); const targetAnnotation annoteEl.getAttribute(data-target-annotation); const annoteSpan window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); const lines annoteSpan.getAttribute(data-code-lines).split(,); const lineIds lines.map((line) > { return targetCell + - + line; }) let top null; let height null; let parent null; if (lineIds.length > 0) { //compute the position of the single el (top and bottom and make a div) const el window.document.getElementById(lineIds0); top el.offsetTop; height el.offsetHeight; parent el.parentElement.parentElement; if (lineIds.length > 1) { const lastEl window.document.getElementById(lineIdslineIds.length - 1); const bottom lastEl.offsetTop + lastEl.offsetHeight; height bottom - top; } if (top ! null && height ! null && parent ! null) { // cook up a div (if necessary) and position it let div window.document.getElementById(code-annotation-line-highlight); if (div null) { div window.document.createElement(div); div.setAttribute(id, code-annotation-line-highlight); div.style.position absolute; parent.appendChild(div); } div.style.top top - 2 + px; div.style.height height + 4 + px; let gutterDiv window.document.getElementById(code-annotation-line-highlight-gutter); if (gutterDiv null) { gutterDiv window.document.createElement(div); gutterDiv.setAttribute(id, code-annotation-line-highlight-gutter); gutterDiv.style.position absolute; const codeCell window.document.getElementById(targetCell); const gutter codeCell.querySelector(.code-annotation-gutter); gutter.appendChild(gutterDiv); } gutterDiv.style.top top - 2 + px; gutterDiv.style.height height + 4 + px; } selectedAnnoteEl annoteEl; } }; const unselectCodeLines () > { const elementsIds code-annotation-line-highlight, code-annotation-line-highlight-gutter; elementsIds.forEach((elId) > { const div window.document.getElementById(elId); if (div) { div.remove(); } }); selectedAnnoteEl undefined; }; // Attach click handler to the DT const annoteDls window.document.querySelectorAll(dtdata-target-cell); for (const annoteDlNode of annoteDls) { annoteDlNode.addEventListener(click, (event) > { const clickedEl event.target; if (clickedEl ! selectedAnnoteEl) { unselectCodeLines(); const activeEl window.document.querySelector(dtdata-target-cell.code-annotation-active); if (activeEl) { activeEl.classList.remove(code-annotation-active); } selectCodeLines(clickedEl); clickedEl.classList.add(code-annotation-active); } else { // Unselect the line unselectCodeLines(); clickedEl.classList.remove(code-annotation-active); } }); } const findCites (el) > { const parentEl el.parentElement; if (parentEl) { const cites parentEl.dataset.cites; if (cites) { return { el, cites: cites.split( ) }; } else { return findCites(el.parentElement) } } else { return undefined; } }; var bibliorefs window.document.querySelectorAll(aroledoc-biblioref); for (var i0; ibibliorefs.length; i++) { const ref bibliorefsi; const citeInfo findCites(ref); if (citeInfo) { tippyHover(citeInfo.el, function() { var popup window.document.createElement(div); citeInfo.cites.forEach(function(cite) { var citeDiv window.document.createElement(div); citeDiv.classList.add(hanging-indent); citeDiv.classList.add(csl-entry); var biblioDiv window.document.getElementById(ref- + cite); if (biblioDiv) { citeDiv.innerHTML biblioDiv.innerHTML; } popup.appendChild(citeDiv); }); return popup.innerHTML; }); } } var localhostRegex new RegExp(/^(?:http|https):\/\/localhost\:?0-9*\//); var filterRegex new RegExp(https:\/\/banteg\.xyz\/); var isInternal (href) > { return filterRegex.test(href) || localhostRegex.test(href); } // Inspect non-navigation links and adorn them if external var links window.document.querySelectorAll(ahref:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not(aria-hidden):not(.dropdown-item)); for (var i0; ilinks.length; i++) { const link linksi; if (!isInternal(link.href)) { // target, if specified link.setAttribute(target, _blank); } }});/script>/div> !-- /content -->!-- Cloudflare Pages Analytics -->script defer srchttps://static.cloudflareinsights.com/beacon.min.js data-cf-beacon{token: 6b52ccc0c0ad44d78cd37b43a19dbf36}>/script>!-- Cloudflare Pages Analytics -->/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]