1 2/** 3 * Required JavaScript for challenge/response spam protection 4 */ 5document.addEventListener('DOMContentLoaded', () => 6{ 7 [...document.querySelectorAll('[id$="-cr-field"]')].forEach(element => 8 { 9 let [expiration,challenge,delay] = atob(element.value).split('|'); 10 11 if (delay === undefined) { 12 // The CR field has already been submitted by the client, but server side validation may have failed 13 return; 14 } 15 16 setTimeout(() => 17 { 18 element.value = btoa(expiration + '|' + challenge.replace(/[a-z]/gi, char => 19 { 20 return String.fromCharCode( char.charCodeAt(0) + ( char.toUpperCase() <= 'M' ? 13 : -13 ) )/* https://stackoverflow.com/a/14553231 */ 21 })) 22 }, 1e3 * delay) 23 }) 24}); 25/*! 26 * Angelus v1.0.0 (https://www.kolpackiwa.de/) 27 * Copyright 2017-2024 Christian Duckart 28 * Licensed under the GPL-2.0-or-later license 29 */ 30console.log("WE LOVE TYPO3");
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.