function getAttr(o, p, d) {
    if (!Array.isArray(p)) { p = p.split("."); }
    var def = (d === null) ? null : (d || false);
    return p.reduce((xs, x) => (xs && xs[x] !== undefined) ? xs[x] : def, o)
}