@ 2013-06-30T21:48:42Z <?php
class EAHashor {
private $right32;
public function __construct()
{
$this->right32 = ~((~0 << 16) << 16);
}
public function eaEncode($string){
$a = "67452301";
$b = "EFCDAB89";
$c = "98BADCFE";
$d = "10325476";
$words = $this->init($string);
for($i = 0, $l = count($words) / 16 - 1; $i <= $l; $i++){
$A = $a;
$B = $b;
$C = $c;
$D = $d;
/* ROUND 1 */
$this->FF ($A, $B, $C, $D, $words[0 + ($i * 16)], 7, "d76aa478");
$this->FF ($D, $A, $B, $C, $words[1 + ($i * 16)], 12, "e8c7b756");
$this->FF ($C, $D, $A, $B, $words[2 + ($i * 16)], 17, "242070db");
$this->FF ($B, $C, $D, $A, $words[3 + ($i * 16)], 22, "c1bdceee");
$this->FF ($A, $B, $C, $D, $words[4 + ($i * 16)], 7, "f57c0faf");
$this->FF ($D, $A, $B, $C, $words[5 + ($i * 16)], 12, "4787c62a");
$this->FF ($C, $D, $A, $B, $words[6 + ($i * 16)], 17, "a8304613");
$this->FF ($B, $C, $D, $A, $words[7 + ($i * 16)], 22, "fd469501");
$this->FF ($A, $B, $C, $D, $words[8 + ($i * 16)], 7, "698098d8");
$this->FF ($D, $A, $B, $C, $words[9 + ($i * 16)], 12, "8b44f7af");
$this->FF ($C, $D, $A, $B, $words[10 + ($i * 16)], 17, "ffff5bb1");
$this->FF ($B, $C, $D, $A, $words[11 + ($i * 16)], 22, "895cd7be");
$this->FF ($A, $B, $C, $D, $words[12 + ($i * 16)], 7, "6b901122");
$this->FF ($D, $A, $B, $C, $words[13 + ($i * 16)], 12, "fd987193");
$this->FF ($C, $D, $A, $B, $words[14 + ($i * 16)], 17, "a679438e");
$this->FF ($B, $C, $D, $A, $words[15 + ($i * 16)], 22, "49b40821");
/* ROUND 2 */
$this->GG ($A, $B, $C, $D, $words[1 + ($i * 16)], 5, "f61e2562");
$this->GG ($D, $A, $B, $C, $words[6 + ($i * 16)], 9, "c040b340");
$this->GG ($C, $D, $A, $B, $words[11 + ($i * 16)], 14, "265e5a51");
$this->GG ($B, $C, $D, $A, $words[0 + ($i * 16)], 20, "e9b6c7aa");
$this->GG ($A, $B, $C, $D, $words[5 + ($i * 16)], 5, "d62f105d");
$this->GG ($D, $A, $B, $C, $words[10 + ($i * 16)], 9, "02441453");
$this->GG ($C, $D, $A, $B, $words[15 + ($i * 16)], 14, "d8a1e681");
$this->GG ($B, $C, $D, $A, $words[4 + ($i * 16)], 20, "e7d3fbc8");
$this->GG ($A, $B, $C, $D, $words[9 + ($i * 16)], 5, "21e1cde6");
$this->GG ($D, $A, $B, $C, $words[14 + ($i * 16)], 9, "c33707d6");
$this->GG ($C, $D, $A, $B, $words[3 + ($i * 16)], 14, "f4d50d87");
$this->GG ($B, $C, $D, $A, $words[8 + ($i * 16)], 20, "455a14ed");
$this->GG ($A, $B, $C, $D, $words[13 + ($i * 16)], 5, "a9e3e905");
$this->GG ($D, $A, $B, $C, $words[2 + ($i * 16)], 9, "fcefa3f8");
$this->GG ($C, $D, $A, $B, $words[7 + ($i * 16)], 14, "676f02d9");
$this->GG ($B, $C, $D, $A, $words[12 + ($i * 16)], 20, "8d2a4c8a");
/* ROUND 3 */
$this->HH ($A, $B, $C, $D, $words[5 + ($i * 16)], 4, "fffa3942");
$this->HH ($D, $A, $B, $C, $words[8 + ($i * 16)], 11, "8771f681");
//HH ($C, $D, $A, $B, $words[11 + ($i * 16)], 16, "6d9d6122");
//the line below has been changed to use 14 rather than 16 as seen in the commented line
$this->HH ($C, $D, $A, $B, $words[11 + ($i * 16)], 14, "6d9d6122");
$this->HH ($B, $C, $D, $A, $words[14 + ($i * 16)], 23, "fde5380c");
$this->HH ($A, $B, $C, $D, $words[1 + ($i * 16)], 4, "a4beea44");
$this->HH ($D, $A, $B, $C, $words[4 + ($i * 16)], 11, "4bdecfa9");
$this->HH ($C, $D, $A, $B, $words[7 + ($i * 16)], 16, "f6bb4b60");
$this->HH ($B, $C, $D, $A, $words[10 + ($i * 16)], 23, "bebfbc70");
$this->HH ($A, $B, $C, $D, $words[13 + ($i * 16)], 4, "289b7ec6");
$this->HH ($D, $A, $B, $C, $words[0 + ($i * 16)], 11, "eaa127fa");
$this->HH ($C, $D, $A, $B, $words[3 + ($i * 16)], 16, "d4ef3085");
$this->HH ($B, $C, $D, $A, $words[6 + ($i * 16)], 23, "04881d05");
$this->HH ($A, $B, $C, $D, $words[9 + ($i * 16)], 4, "d9d4d039");
$this->HH ($D, $A, $B, $C, $words[12 + ($i * 16)], 11, "e6db99e5");
$this->HH ($C, $D, $A, $B, $words[15 + ($i * 16)], 16, "1fa27cf8");
$this->HH ($B, $C, $D, $A, $words[2 + ($i * 16)], 23, "c4ac5665");
/* ROUND 4 */
$this->II ($A, $B, $C, $D, $words[0 + ($i * 16)], 6, "f4292244");
$this->II ($D, $A, $B, $C, $words[7 + ($i * 16)], 10, "432aff97");
$this->II ($C, $D, $A, $B, $words[14 + ($i * 16)], 15, "ab9423a7");
$this->II ($B, $C, $D, $A, $words[5 + ($i * 16)], 21, "fc93a039");
$this->II ($A, $B, $C, $D, $words[12 + ($i * 16)], 6, "655b59c3");
$this->II ($D, $A, $B, $C, $words[3 + ($i * 16)], 10, "8f0ccc92");
$this->II ($C, $D, $A, $B, $words[10 + ($i * 16)], 15, "ffeff47d");
$this->II ($B, $C, $D, $A, $words[1 + ($i * 16)], 21, "85845dd1");
$this->II ($A, $B, $C, $D, $words[8 + ($i * 16)], 6, "6fa87e4f");
$this->II ($D, $A, $B, $C, $words[15 + ($i * 16)], 10, "fe2ce6e0");
$this->II ($C, $D, $A, $B, $words[6 + ($i * 16)], 15, "a3014314");
$this->II ($B, $C, $D, $A, $words[13 + ($i * 16)], 21, "4e0811a1");
$this->II ($A, $B, $C, $D, $words[4 + ($i * 16)], 6, "f7537e82");
$this->II ($D, $A, $B, $C, $words[11 + ($i * 16)], 10, "bd3af235");
$this->II ($C, $D, $A, $B, $words[2 + ($i * 16)], 15, "2ad7d2bb");
$this->II ($B, $C, $D, $A, $words[9 + ($i * 16)], 21, "eb86d391");
//this last line is used twice
$this->II ($B, $C, $D, $A, $words[9 + ($i * 16)], 21, "eb86d391");
$this->addVars($a, $b, $c, $d, $A, $B, $C, $D);
}
$MD5 = '';
foreach (array($a, $b, $c, $d) as $x) {
$MD5 .= implode('', array_reverse(str_split($this->leftpad($x, 8), 2)));
}
return $MD5;
}
/* General functions */
private function hexbin($str){
$hexbinmap = array( "0" => "0000",
"1" => "0001",
"2" => "0010",
"3" => "0011"
, "4" => "0100"
, "5" => "0101"
, "6" => "0110"
, "7" => "0111"
, "8" => "1000"
, "9" => "1001"
, "A" => "1010"
, "a" => "1010"
, "B" => "1011"
, "b" => "1011"
, "C" => "1100"
, "c" => "1100"
, "D" => "1101"
, "d" => "1101"
, "E" => "1110"
, "e" => "1110"
, "F" => "1111"
, "f" => "1111");
$bin = "";
for ($i = 0; $i < strlen($str); $i++){
$bin .= $hexbinmap[$str[$i]];
}
$bin = ltrim($bin, '0');
// echo "Original: ".$str." New: ".$bin."<br />";
return $bin;
}
private function strhex($str){
$hex = "";
for ($i = 0; $i < strlen($str); $i++){
$hex = $hex.$this->leftpad(dechex(ord($str[$i])), 2);
}
return $hex;
}
/* MD5-specific functions */
private function init($string){
$len = strlen($string) * 8;
$hex = $this->strhex($string); // convert ascii string to hex
$bin = $this->leftpad($this->hexbin($hex), $len); // convert hex string to bin
$padded = $this->pad($bin);
$padded = $this->pad($padded, 1, $len);
$block = str_split($padded, 32);
foreach ($block as &$b) {
$b = implode('', array_reverse(str_split($b, 8)));
}
return $block;
}
private function pad($bin, $type=0, $len = 0){
if($type == 0){
$bin = $bin."1";
$buff = strlen($bin) % 512;
if($buff != 448){
while(strlen($bin) % 512 != 448){
$bin = $bin."0";
}
}
}
// append length (b) of string to latter 64 bits
elseif($type == 1){
$bLen = $this->leftpad(decbin($len), 64);
$bin .= implode('', array_reverse(str_split($bLen, 8)));
}
return $bin;
}
/* MD5 base functions */
private function F($X, $Y, $Z){
$X = $this->binarySafeHexDec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = (($X & $Y) | ((~ $X) & $Z)); // X AND Y OR NOT X AND Z
return $calc;
}
private function G($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = (($X & $Z) | ($Y & (~ $Z))); // X AND Z OR Y AND NOT Z
return $calc;
}
private function H($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = ($X ^ $Y ^ $Z); // X XOR Y XOR Z
return $calc;
}
private function I($X, $Y, $Z){
$X = $this->binarysafehexdec($X);
$Y = $this->binarysafehexdec($Y);
$Z = $this->binarysafehexdec($Z);
$calc = ($Y ^ ($X | (~ $Z))) ; // Y XOR (X OR NOT Z)
return $calc;
}
/* MD5 round functions */
/* $A - hex, $B - hex, $C - hex, $D - hex (F - dec)
$M - binary
$s - decimal
$t - hex
*/
private function FF(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
echo "A: $A\nt: $t\nM: $M\n";
$F = $this->F($B, $C, $D);
echo "F: $F\n";
$A = $this->add($A, $F, $M, $t) & $this->right32; //decimal
echo "4: $A\n";
$A = $this->rotate($A, $s);
echo "5: $A\n";
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
echo "Result: $A\n\n";
}
private function GG(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->G($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function HH(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->H($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function II(&$A, $B, $C, $D, $M, $s, $t){
$A = $this->binarysafehexdec($A);
$t = $this->binarysafehexdec($t);
$M = $this->binarysafebindec($M);
$A = $this->add($A, $this->I($B, $C, $D), $M, $t) & $this->right32; //decimal
$A = $this->rotate($A, $s);
$A = dechex($this->add($this->binarysafehexdec($B), $this->binarysafehexdec($A)) & $this->right32);
}
private function rotate ($decimal, $bits)
{
return dechex(($decimal << $bits) | (($decimal >> (32 - $bits)) & (~(~0 << $bits) & $this->right32)));
}
private function addVars(&$a, &$b, &$c, &$d, $A, $B, $C, $D){
$A = $this->binarysafehexdec($A);
$B = $this->binarysafehexdec($B);
$C = $this->binarysafehexdec($C);
$D = $this->binarysafehexdec($D);
$aa = $this->binarysafehexdec($a);
$bb = $this->binarysafehexdec($b);
$cc = $this->binarysafehexdec($c);
$dd = $this->binarysafehexdec($d);
$aa = $this->add($aa, $A) & $this->right32;
$bb = $this->add($bb, $B) & $this->right32;
$cc = $this->add($cc, $C) & $this->right32;
$dd = $this->add($dd, $D) & $this->right32;
$a = dechex($aa);
$b = dechex($bb);
$c = dechex($cc);
$d = dechex($dd);
}
private function leftpad($needs_padding, $alignment) {
if (strlen($needs_padding) % $alignment) {
$pad_amount = $alignment - strlen($needs_padding) % $alignment;
$left_pad = implode('', array_fill(0, $pad_amount, '0'));
$needs_padding = $left_pad . $needs_padding;
}
return $needs_padding;
}
private function binarySafeBinDec($bin)
{
$bits = array_reverse(str_split($bin, 1));
$result = 0;
foreach ($bits as $position => $bit) {
$result |= ((int) $bit) << $position;
}
return $result;
}
private function binarySafeHexDec($hex)
{
$h = str_split(str_pad($hex, 8, '0', STR_PAD_LEFT), 2);
return (hexdec($h[0]) << 24) | (hexdec($h[1]) << 16) | (hexdec($h[2]) << 8) | hexdec($h[3]);
}
private function leftShiftByOne($intAsStr)
{
$p = unpack('N2', $intAsStr);
return pack('N2', ($p[1] << 1) | (($p[2] >> 31) & 0x00000001), $p[2] << 1);
}
private function binarySafeAddition($a, $b)
{
// NB: we don't actually need 64 bits, but 40 bit integers are confusing
$a = "\x00\x00\x00\x00" . pack('N', $a);
$b = "\x00\x00\x00\x00" . pack('N', $b);
$carry = $a & $b;
$result = $a ^ $b;
while ($carry != "\x00\x00\x00\x00\x00\x00\x00\x00") {
$shiftedcarry = $this->leftShiftByOne($carry);
$carry = $result & $shiftedcarry;
$result ^= $shiftedcarry;
}
return current(unpack('N', substr($result, 4)));
}
private function add()
{
$result = 0;
foreach (func_get_args() as $int) {
$result = $this->binarySafeAddition($result, $int);
}
return $result;
}
}
$eahashor = new EAHashor();
$hash = $eahashor->eaEncode('test');
echo $hash;
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.4 0.010 0.007 18.95 8.3.3 0.010 0.010 18.95 8.3.2 0.006 0.003 19.15 8.3.1 0.000 0.009 21.04 8.3.0 0.009 0.000 23.66 8.2.17 0.010 0.007 22.96 8.2.16 0.013 0.003 20.76 8.2.15 0.003 0.007 24.18 8.2.14 0.009 0.000 24.66 8.2.13 0.006 0.003 26.16 8.2.12 0.000 0.008 21.19 8.2.11 0.000 0.011 20.60 8.2.10 0.011 0.004 18.16 8.2.9 0.006 0.003 19.44 8.2.8 0.000 0.009 18.16 8.2.7 0.000 0.009 17.88 8.2.6 0.003 0.006 18.30 8.2.5 0.006 0.003 18.07 8.2.4 0.000 0.009 18.53 8.2.3 0.009 0.000 21.28 8.2.2 0.004 0.004 18.07 8.2.1 0.003 0.006 18.06 8.2.0 0.004 0.008 18.00 8.1.27 0.006 0.003 23.99 8.1.26 0.003 0.017 26.35 8.1.25 0.006 0.003 28.09 8.1.24 0.010 0.000 22.41 8.1.23 0.012 0.000 21.21 8.1.22 0.009 0.000 18.77 8.1.21 0.006 0.003 19.22 8.1.20 0.000 0.012 17.60 8.1.19 0.003 0.006 17.79 8.1.18 0.007 0.003 18.10 8.1.17 0.003 0.006 18.96 8.1.16 0.009 0.000 19.17 8.1.15 0.000 0.009 18.82 8.1.14 0.009 0.000 17.68 8.1.13 0.006 0.003 18.21 8.1.12 0.006 0.006 17.63 8.1.11 0.006 0.003 17.65 8.1.10 0.005 0.005 17.63 8.1.9 0.006 0.003 17.64 8.1.8 0.003 0.006 17.73 8.1.7 0.009 0.000 17.66 8.1.6 0.000 0.011 17.75 8.1.5 0.006 0.003 17.69 8.1.4 0.007 0.003 17.80 8.1.3 0.003 0.006 17.91 8.1.2 0.010 0.000 17.93 8.1.1 0.006 0.003 17.79 8.1.0 0.000 0.009 17.65 8.0.30 0.000 0.009 20.33 8.0.29 0.004 0.004 17.30 8.0.28 0.000 0.008 18.71 8.0.27 0.000 0.008 17.38 8.0.26 0.003 0.006 17.16 8.0.25 0.003 0.006 17.14 8.0.24 0.008 0.004 17.25 8.0.23 0.004 0.004 17.16 8.0.22 0.000 0.008 17.24 8.0.21 0.009 0.000 17.18 8.0.20 0.000 0.009 17.24 8.0.19 0.000 0.009 17.13 8.0.18 0.009 0.000 17.20 8.0.17 0.010 0.000 17.11 8.0.16 0.000 0.010 17.15 8.0.15 0.000 0.009 17.06 8.0.14 0.003 0.006 16.97 8.0.13 0.005 0.002 13.61 8.0.12 0.000 0.009 17.13 8.0.11 0.006 0.003 17.16 8.0.10 0.006 0.003 16.99 8.0.9 0.004 0.004 17.01 8.0.8 0.012 0.015 17.17 8.0.7 0.004 0.008 17.14 8.0.6 0.009 0.000 17.04 8.0.5 0.000 0.010 17.02 8.0.3 0.011 0.011 17.39 8.0.2 0.011 0.012 17.54 8.0.1 0.007 0.003 17.27 8.0.0 0.009 0.013 17.01 7.4.33 0.000 0.006 14.84 7.4.32 0.000 0.008 16.74 7.4.30 0.004 0.004 16.85 7.4.29 0.003 0.006 16.88 7.4.28 0.003 0.006 16.86 7.4.27 0.006 0.003 16.72 7.4.26 0.007 0.000 13.54 7.4.25 0.003 0.006 16.76 7.4.24 0.006 0.003 16.87 7.4.23 0.000 0.008 16.76 7.4.22 0.006 0.012 16.81 7.4.21 0.006 0.012 16.80 7.4.20 0.000 0.009 16.98 7.4.19 0.000 0.008 16.94 7.4.16 0.011 0.008 16.79 7.4.15 0.003 0.018 17.40 7.4.14 0.012 0.013 17.86 7.4.13 0.011 0.016 16.88 7.4.12 0.013 0.011 16.75 7.4.11 0.010 0.010 16.83 7.4.10 0.017 0.010 17.00 7.4.9 0.010 0.013 16.76 7.4.8 0.009 0.012 19.39 7.4.7 0.012 0.015 16.74 7.4.6 0.003 0.016 16.76 7.4.5 0.006 0.003 16.85 7.4.4 0.008 0.012 22.52 7.4.3 0.008 0.013 16.74 7.4.0 0.006 0.012 15.18 7.3.33 0.006 0.000 13.66 7.3.32 0.002 0.005 13.57 7.3.31 0.008 0.000 16.63 7.3.30 0.006 0.003 16.48 7.3.29 0.000 0.017 16.56 7.3.28 0.009 0.012 16.60 7.3.27 0.010 0.010 17.40 7.3.26 0.014 0.017 18.24 7.3.25 0.010 0.011 16.77 7.3.24 0.013 0.016 16.83 7.3.23 0.014 0.007 16.56 7.3.21 0.006 0.013 16.68 7.3.20 0.012 0.009 19.39 7.3.19 0.013 0.007 16.70 7.3.18 0.006 0.015 16.52 7.3.17 0.006 0.016 16.73 7.3.16 0.004 0.015 16.93 7.3.12 0.009 0.009 15.18 7.2.33 0.014 0.007 16.94 7.2.32 0.014 0.014 17.17 7.2.31 0.003 0.024 17.09 7.2.30 0.006 0.015 16.99 7.2.29 0.016 0.013 17.17 7.2.6 0.003 0.012 17.00 7.1.20 0.000 0.014 15.77 7.1.10 0.000 0.015 18.41 7.1.7 0.003 0.010 17.30 7.1.6 0.003 0.022 19.40 7.1.5 0.010 0.019 17.02 7.1.0 0.003 0.033 22.42 7.0.20 0.000 0.008 16.89 7.0.14 0.007 0.077 21.97 7.0.10 0.013 0.070 20.23 7.0.9 0.027 0.063 20.20 7.0.8 0.007 0.087 20.28 7.0.7 0.027 0.040 20.16 7.0.6 0.023 0.063 20.23 7.0.5 0.017 0.073 20.56 7.0.4 0.013 0.083 20.08 7.0.3 0.010 0.057 20.15 7.0.2 0.003 0.077 20.10 7.0.1 0.007 0.063 20.03 7.0.0 0.007 0.043 20.11 5.6.28 0.007 0.080 20.92 5.6.25 0.000 0.053 20.71 5.6.24 0.013 0.067 20.80 5.6.23 0.003 0.053 20.69 5.6.22 0.010 0.087 20.76 5.6.21 0.007 0.057 20.79 5.6.20 0.007 0.043 21.22 5.6.19 0.003 0.067 21.18 5.6.18 0.007 0.077 21.17 5.6.17 0.010 0.077 21.25 5.6.16 0.010 0.083 21.11 5.6.15 0.010 0.087 21.22 5.6.14 0.007 0.073 21.15 5.6.13 0.013 0.087 21.08 5.6.12 0.013 0.070 21.25 5.6.11 0.010 0.077 21.26 5.6.10 0.010 0.060 21.23 5.6.9 0.007 0.047 21.21 5.6.8 0.010 0.047 20.61 5.6.7 0.010 0.060 20.63 5.6.6 0.007 0.080 20.46 5.6.5 0.010 0.040 20.66 5.6.4 0.007 0.073 20.67 5.6.3 0.000 0.060 20.57 5.6.2 0.007 0.047 20.48 5.6.1 0.020 0.050 20.52 5.6.0 0.003 0.087 20.50 5.5.38 0.007 0.050 20.53 5.5.37 0.003 0.060 20.65 5.5.36 0.007 0.087 20.48 5.5.35 0.010 0.087 20.57 5.5.34 0.007 0.087 20.94 5.5.33 0.000 0.070 20.92 5.5.32 0.007 0.097 20.87 5.5.31 0.010 0.040 20.79 5.5.30 0.007 0.050 20.87 5.5.29 0.013 0.083 21.01 5.5.28 0.007 0.093 20.91 5.5.27 0.017 0.080 20.95 5.5.26 0.003 0.080 20.86 5.5.25 0.000 0.050 20.88 5.5.24 0.000 0.063 20.26 5.5.23 0.003 0.097 20.44 5.5.22 0.003 0.080 20.41 5.5.21 0.007 0.040 20.46 5.5.20 0.003 0.050 20.10 5.5.19 0.000 0.047 20.32 5.5.18 0.000 0.047 20.32 5.5.16 0.000 0.050 20.13 5.5.15 0.003 0.080 20.29 5.5.14 0.007 0.060 20.39 5.5.13 0.007 0.070 20.31 5.5.12 0.003 0.087 20.24 5.5.11 0.003 0.083 20.26 5.5.10 0.000 0.070 20.30 5.5.9 0.003 0.057 20.29 5.5.8 0.003 0.080 20.16 5.5.7 0.003 0.087 20.30 5.5.6 0.010 0.040 20.11 5.5.5 0.007 0.040 20.28 5.5.4 0.020 0.067 20.29 5.5.3 0.010 0.077 20.18 5.5.2 0.007 0.067 20.22 5.5.1 0.000 0.050 20.18 5.5.0 0.003 0.060 20.21 5.4.45 0.000 0.057 19.41 5.4.44 0.017 0.100 19.42 5.4.43 0.007 0.080 19.57 5.4.42 0.000 0.067 19.45 5.4.41 0.020 0.057 19.29 5.4.40 0.007 0.080 18.93 5.4.39 0.007 0.060 19.03 5.4.38 0.003 0.040 19.23 5.4.37 0.007 0.040 18.98 5.4.36 0.010 0.050 18.99 5.4.35 0.000 0.043 19.25 5.4.34 0.007 0.040 19.09 5.4.32 0.003 0.080 19.13 5.4.31 0.013 0.053 19.08 5.4.30 0.007 0.067 19.09 5.4.29 0.003 0.050 19.14 5.4.28 0.013 0.050 19.10 5.4.27 0.000 0.043 19.09 5.4.26 0.010 0.050 19.10 5.4.25 0.010 0.033 19.10 5.4.24 0.003 0.080 19.18 5.4.23 0.007 0.080 19.11 5.4.22 0.003 0.050 19.24 5.4.21 0.003 0.080 19.13 5.4.20 0.007 0.063 19.17 5.4.19 0.010 0.057 19.12 5.4.18 0.000 0.093 19.12 5.4.17 0.013 0.077 18.91 5.4.16 0.010 0.060 18.96 5.4.15 0.017 0.033 19.00 5.4.14 0.000 0.087 16.53 5.4.13 0.013 0.067 16.42 5.4.12 0.010 0.033 16.46 5.4.11 0.017 0.067 16.59 5.4.10 0.010 0.043 16.45 5.4.9 0.003 0.070 16.63 5.4.8 0.000 0.043 16.51 5.4.7 0.000 0.050 16.46 5.4.6 0.007 0.077 16.60 5.4.5 0.007 0.060 16.45 5.4.4 0.000 0.070 16.53 5.4.3 0.007 0.047 16.37 5.4.2 0.007 0.040 16.52 5.4.1 0.000 0.043 16.56 5.4.0 0.003 0.060 15.94 5.3.29 0.010 0.077 14.90 5.3.28 0.007 0.067 14.77 5.3.27 0.010 0.053 14.91 5.3.26 0.003 0.087 14.96 5.3.25 0.000 0.047 14.87 5.3.24 0.010 0.033 14.83 5.3.23 0.003 0.080 14.94 5.3.22 0.013 0.053 14.79 5.3.21 0.000 0.077 14.74 5.3.20 0.000 0.080 14.95 5.3.19 0.007 0.077 14.90 5.3.18 0.007 0.073 14.74 5.3.17 0.003 0.077 14.90 5.3.16 0.007 0.053 14.74 5.3.15 0.010 0.070 14.87 5.3.14 0.010 0.087 14.75 5.3.13 0.003 0.053 14.70 5.3.12 0.007 0.087 14.81 5.3.11 0.000 0.060 14.75 5.3.10 0.000 0.043 14.34 5.3.9 0.007 0.087 14.26 5.3.8 0.013 0.077 14.27 5.3.7 0.000 0.047 14.29 5.3.6 0.007 0.057 14.38 5.3.5 0.003 0.047 14.10 5.3.4 0.007 0.037 14.08 5.3.3 0.007 0.057 14.27 5.3.2 0.010 0.080 13.84 5.3.1 0.007 0.040 14.04 5.3.0 0.007 0.037 13.98
preferences:dark mode live preview
38.55 ms | 400 KiB | 5 Q