function knotHash(lengths, repeats = 64) {
let [pos, skipSize] = [0, 0];
const list = d3.range(0, 256);
for (let rep = 0; rep < repeats; rep++) {
for (const length of lengths) {
const subArray = [];
for (let i = 0; i < length; i++) {
subArray.push(list[(pos + i) % 256]);
}
subArray.reverse();
for (let i = 0; i < length; i++) {
list[(pos + i) % 256] = subArray[i];
}
pos = (pos + length + skipSize++) % 256;
}
}
return list;
}