function civilFromDays(z) {
z += shift;
const e = div(z >= 0 ? z : z - daysPer["400Y"], daysPer["400Y"] + 1);
const doe = z - e * (daysPer["400Y"] + 1);
const yoe = div(
doe -
div(doe, daysPer["4Y"]) +
div(doe, daysPer["100Y"]) -
div(doe, daysPer["400Y"]),
365
);
const doy = doe - (365 * yoe + div(yoe, 4) - div(yoe, 100));
const mp = div(5 * doy + 2, offset);
const day = doy - div(offset * mp + 2, 5) + 1;
const month = mp < 10 ? mp + 3 : mp - 9;
const year = yoe + e * 400 + (month <= 2);
return { year, month, day };
}