@ 2013-06-30T20:20:50Z <?php
class EAHashor {
private $right32;
//initialise the class
public function __construct() {
// This is a 32- and 64-bit safe way to get an integer with only the
// right-most 32-bits set
$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);
$A = $this->add($A, $this->F($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 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);
}
// shift
private function rotate ($decimal, $bits) { //returns hex
printf("Rotate: %b (%d)\nResult: %b\n", $decimal, $bits, (($decimal << $bits) | ($decimal >> (32 - $bits))) & $this->right32);
return dechex((($decimal << $bits) | ($decimal >> (32 - $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;
}
public 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] >> 32) & 0x00000001), $p[2] << 1);
}
// This is not a true binary addition function. In the context in which it is used
// it works, but it's not a general case routine.
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)));
}
public 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.6 0.018 0.007 16.75 8.3.5 0.012 0.007 16.73 8.3.4 0.007 0.011 19.22 8.3.3 0.014 0.004 18.82 8.3.2 0.009 0.000 19.20 8.3.1 0.009 0.000 20.26 8.3.0 0.003 0.006 17.88 8.2.18 0.019 0.006 16.63 8.2.17 0.006 0.010 22.96 8.2.16 0.004 0.012 20.82 8.2.15 0.000 0.009 24.18 8.2.14 0.006 0.003 24.66 8.2.13 0.004 0.004 26.16 8.2.12 0.006 0.003 19.85 8.2.11 0.008 0.003 19.49 8.2.10 0.003 0.010 18.09 8.2.9 0.004 0.007 19.55 8.2.8 0.000 0.010 19.60 8.2.7 0.003 0.007 18.00 8.2.6 0.003 0.007 18.29 8.2.5 0.006 0.003 18.07 8.2.4 0.000 0.009 18.53 8.2.3 0.000 0.009 18.41 8.2.2 0.010 0.000 18.10 8.2.1 0.000 0.009 17.86 8.2.0 0.004 0.008 18.00 8.1.28 0.003 0.013 25.92 8.1.27 0.003 0.006 24.66 8.1.26 0.006 0.003 26.35 8.1.25 0.000 0.008 28.09 8.1.24 0.009 0.004 23.63 8.1.23 0.000 0.012 21.10 8.1.22 0.006 0.003 17.90 8.1.21 0.006 0.003 19.15 8.1.20 0.003 0.007 17.60 8.1.19 0.000 0.009 17.55 8.1.18 0.010 0.000 18.10 8.1.17 0.000 0.009 19.09 8.1.16 0.003 0.006 19.14 8.1.15 0.003 0.007 18.80 8.1.14 0.000 0.009 17.60 8.1.13 0.000 0.008 18.10 8.1.12 0.000 0.009 17.65 8.1.11 0.000 0.009 17.63 8.1.10 0.005 0.005 17.59 8.1.9 0.000 0.010 17.75 8.1.8 0.009 0.000 17.73 8.1.7 0.000 0.009 17.69 8.1.6 0.003 0.007 17.85 8.1.5 0.000 0.010 17.80 8.1.4 0.000 0.010 17.76 8.1.3 0.000 0.009 17.95 8.1.2 0.008 0.004 17.88 8.1.1 0.003 0.006 17.81 8.1.0 0.007 0.003 17.76 8.0.30 0.000 0.009 20.21 8.0.29 0.000 0.009 17.00 8.0.28 0.003 0.006 18.59 8.0.27 0.004 0.004 17.53 8.0.26 0.003 0.005 17.02 8.0.25 0.003 0.006 17.26 8.0.24 0.000 0.011 17.25 8.0.23 0.003 0.005 17.23 8.0.22 0.005 0.003 17.17 8.0.21 0.000 0.009 17.14 8.0.20 0.003 0.006 17.26 8.0.19 0.000 0.010 17.13 8.0.18 0.003 0.006 17.08 8.0.17 0.006 0.006 17.07 8.0.16 0.000 0.009 17.14 8.0.15 0.000 0.009 17.16 8.0.14 0.006 0.003 17.16 8.0.13 0.003 0.005 13.58 8.0.12 0.004 0.007 17.11 8.0.11 0.006 0.003 17.14 8.0.10 0.007 0.003 17.23 8.0.9 0.003 0.007 17.12 8.0.8 0.006 0.012 17.14 8.0.7 0.003 0.006 17.17 8.0.6 0.006 0.003 17.25 8.0.5 0.000 0.009 17.07 8.0.3 0.012 0.010 17.20 8.0.2 0.014 0.009 17.40 8.0.1 0.000 0.010 17.27 8.0.0 0.008 0.018 17.14 7.4.33 0.000 0.007 13.38 7.4.32 0.004 0.004 16.77 7.4.30 0.003 0.006 16.79 7.4.29 0.003 0.006 16.82 7.4.28 0.003 0.009 16.78 7.4.27 0.003 0.006 16.88 7.4.26 0.000 0.008 13.45 7.4.25 0.003 0.006 16.62 7.4.24 0.003 0.006 16.87 7.4.23 0.000 0.009 16.85 7.4.22 0.013 0.019 16.86 7.4.21 0.008 0.012 16.84 7.4.20 0.009 0.000 16.67 7.4.19 0.009 0.000 16.68 7.4.16 0.009 0.009 16.84 7.4.15 0.007 0.017 16.88 7.4.14 0.010 0.015 16.86 7.4.13 0.008 0.018 16.81 7.4.12 0.013 0.011 16.92 7.4.11 0.015 0.006 16.65 7.4.10 0.009 0.015 16.86 7.4.9 0.003 0.019 16.80 7.4.8 0.015 0.006 16.61 7.4.7 0.009 0.015 16.59 7.4.6 0.012 0.009 16.79 7.4.5 0.000 0.009 16.78 7.4.4 0.011 0.008 16.55 7.4.3 0.013 0.009 16.73 7.4.0 0.004 0.015 15.34 7.3.33 0.005 0.005 13.62 7.3.32 0.005 0.002 13.44 7.3.31 0.000 0.009 16.60 7.3.30 0.000 0.008 16.73 7.3.29 0.008 0.012 16.62 7.3.28 0.005 0.017 16.61 7.3.27 0.010 0.020 16.54 7.3.26 0.013 0.014 16.73 7.3.25 0.009 0.015 16.60 7.3.24 0.010 0.010 16.82 7.3.23 0.009 0.016 16.60 7.3.21 0.008 0.016 16.79 7.3.20 0.013 0.007 19.39 7.3.19 0.013 0.014 16.83 7.3.18 0.009 0.009 16.66 7.3.17 0.004 0.017 16.65 7.3.16 0.018 0.004 16.75 7.3.12 0.004 0.015 15.15 7.3.1 0.003 0.010 16.62 7.3.0 0.000 0.013 16.57 7.2.33 0.010 0.014 16.95 7.2.32 0.007 0.014 16.70 7.2.31 0.019 0.013 17.01 7.2.30 0.009 0.012 16.78 7.2.29 0.004 0.017 17.11 7.2.13 0.000 0.014 17.02 7.2.12 0.004 0.007 17.04 7.2.11 0.004 0.011 17.00 7.2.10 0.010 0.007 16.73 7.2.9 0.006 0.010 16.85 7.2.8 0.003 0.014 17.02 7.2.7 0.003 0.010 16.93 7.2.6 0.000 0.013 16.90 7.2.5 0.007 0.007 16.86 7.2.4 0.007 0.007 17.07 7.2.3 0.000 0.012 16.98 7.2.2 0.003 0.016 17.08 7.2.1 0.003 0.014 17.05 7.2.0 0.002 0.015 18.36 7.1.25 0.006 0.011 15.71 7.1.10 0.000 0.013 18.21 7.1.7 0.006 0.003 17.23 7.1.6 0.003 0.013 17.32 7.1.5 0.007 0.018 16.68 7.1.0 0.000 0.080 22.34 7.0.20 0.003 0.006 16.80 7.0.14 0.003 0.073 22.17 7.0.12 0.007 0.067 22.06 7.0.10 0.023 0.037 20.20 7.0.9 0.010 0.047 20.17 7.0.8 0.003 0.050 20.39 7.0.7 0.023 0.037 20.19 7.0.6 0.030 0.087 20.19 7.0.5 0.030 0.080 20.42 7.0.4 0.003 0.047 20.15 7.0.3 0.007 0.040 20.09 7.0.2 0.007 0.063 20.18 7.0.1 0.003 0.047 20.04 7.0.0 0.003 0.047 20.10 5.6.28 0.003 0.080 21.28 5.6.25 0.003 0.043 20.74 5.6.24 0.007 0.040 20.84 5.6.23 0.007 0.043 20.78 5.6.22 0.007 0.087 20.67 5.6.21 0.013 0.060 20.70 5.6.20 0.003 0.053 21.08 5.6.19 0.007 0.043 21.25 5.6.18 0.003 0.043 21.32 5.6.17 0.010 0.073 21.21 5.6.16 0.007 0.043 21.26 5.6.15 0.010 0.037 21.25 5.6.14 0.000 0.050 21.14 5.6.13 0.010 0.063 21.10 5.6.12 0.007 0.040 21.16 5.6.11 0.010 0.060 21.12 5.6.10 0.003 0.067 21.15 5.6.9 0.007 0.040 21.11 5.6.8 0.010 0.037 20.55 5.6.7 0.003 0.043 20.59 5.6.6 0.000 0.053 20.63 5.6.5 0.003 0.047 20.66 5.6.4 0.010 0.070 20.52 5.6.3 0.013 0.077 20.46 5.6.2 0.010 0.077 20.53 5.6.1 0.017 0.040 20.58 5.6.0 0.007 0.093 20.44 5.5.38 0.003 0.043 20.71 5.5.37 0.010 0.033 20.55 5.5.36 0.007 0.040 20.52 5.5.35 0.017 0.080 20.60 5.5.34 0.003 0.063 21.02 5.5.33 0.003 0.043 21.03 5.5.32 0.007 0.047 20.94 5.5.31 0.003 0.090 20.91 5.5.30 0.007 0.043 20.95 5.5.29 0.003 0.053 21.07 5.5.28 0.007 0.083 21.06 5.5.27 0.000 0.053 20.91 5.5.26 0.000 0.047 21.05 5.5.25 0.007 0.040 20.87 5.5.24 0.007 0.063 20.42 5.5.23 0.007 0.040 20.41 5.5.22 0.007 0.050 20.32 5.5.21 0.013 0.030 20.44 5.5.20 0.023 0.073 20.32 5.5.19 0.023 0.067 20.25 5.5.18 0.007 0.050 20.39 5.5.16 0.013 0.080 20.27 5.5.15 0.003 0.073 20.38 5.5.14 0.010 0.077 20.22 5.5.13 0.003 0.093 20.42 5.5.12 0.010 0.080 20.38 5.5.11 0.010 0.073 20.40 5.5.10 0.013 0.077 20.23 5.5.9 0.003 0.080 20.18 5.5.8 0.007 0.053 20.08 5.5.7 0.013 0.037 20.23 5.5.6 0.000 0.080 20.14 5.5.5 0.017 0.070 20.20 5.5.4 0.017 0.070 20.10 5.5.3 0.013 0.050 20.03 5.5.2 0.007 0.087 20.14 5.5.1 0.007 0.077 20.15 5.5.0 0.007 0.083 20.25 5.4.45 0.003 0.043 19.62 5.4.44 0.007 0.047 19.50 5.4.43 0.000 0.053 19.42 5.4.42 0.003 0.043 19.30 5.4.41 0.003 0.040 19.13 5.4.40 0.003 0.057 19.15 5.4.39 0.003 0.043 19.06 5.4.38 0.000 0.043 19.23 5.4.37 0.010 0.063 19.13 5.4.36 0.003 0.083 19.13 5.4.35 0.017 0.073 19.26 5.4.34 0.003 0.067 19.26 5.4.32 0.017 0.070 18.93 5.4.31 0.003 0.087 18.97 5.4.30 0.003 0.077 19.18 5.4.29 0.013 0.063 19.23 5.4.28 0.017 0.073 19.29 5.4.27 0.017 0.077 18.96 5.4.26 0.007 0.083 19.23 5.4.25 0.000 0.057 19.13 5.4.24 0.010 0.077 18.91 5.4.23 0.003 0.083 18.91 5.4.22 0.007 0.077 19.12 5.4.21 0.010 0.050 19.25 5.4.20 0.010 0.080 19.13 5.4.19 0.007 0.083 19.09 5.4.18 0.010 0.073 19.32 5.4.17 0.007 0.037 19.18 5.4.16 0.000 0.090 18.91 5.4.15 0.003 0.090 19.09 5.4.14 0.013 0.067 16.48 5.4.13 0.003 0.083 16.51 5.4.12 0.013 0.073 16.58 5.4.11 0.003 0.053 16.57 5.4.10 0.010 0.077 16.51 5.4.9 0.013 0.070 16.57 5.4.8 0.000 0.073 16.58 5.4.7 0.000 0.067 16.49 5.4.6 0.010 0.073 16.52 5.4.5 0.003 0.050 16.44 5.4.4 0.010 0.073 16.48 5.4.3 0.010 0.077 16.39 5.4.2 0.007 0.073 16.63 5.4.1 0.010 0.040 16.59 5.4.0 0.003 0.077 16.02 5.3.29 0.007 0.083 14.84 5.3.28 0.003 0.080 14.97 5.3.27 0.003 0.090 14.97 5.3.26 0.017 0.070 14.96 5.3.25 0.010 0.077 14.96 5.3.24 0.003 0.040 14.95 5.3.23 0.007 0.077 14.83 5.3.22 0.010 0.083 14.95 5.3.21 0.007 0.080 14.79 5.3.20 0.003 0.080 14.92 5.3.19 0.010 0.077 14.88 5.3.18 0.007 0.073 14.86 5.3.17 0.013 0.050 14.83 5.3.16 0.007 0.083 14.88 5.3.15 0.010 0.070 14.79 5.3.14 0.007 0.053 14.89 5.3.13 0.007 0.050 14.80 5.3.12 0.003 0.083 14.85 5.3.11 0.007 0.083 14.78 5.3.10 0.003 0.073 14.30 5.3.9 0.013 0.080 14.29 5.3.8 0.000 0.050 14.36 5.3.7 0.000 0.077 14.23 5.3.6 0.007 0.057 14.23 5.3.5 0.007 0.043 14.10 5.3.4 0.003 0.047 14.32 5.3.3 0.003 0.080 14.27 5.3.2 0.003 0.053 14.00 5.3.1 0.007 0.070 14.02 5.3.0 0.007 0.057 13.86
preferences:dark mode live preview
54.78 ms | 401 KiB | 5 Q