vendor/kinetic-v5.1.0.js
function(o1, o2) {
            var retObj = this._clone(o2);
            for(var key in o1) {
                if(this._isObject(o1[key])) {
                    retObj[key] = this._merge(o1[key], retObj[key]);
                }
                else {
                    retObj[key] = o1[key];
                }
            }
            return retObj;
        }
function(o1, o2) {
            var retObj = this._clone(o2);
            for(var key in o1) {
                if(this._isObject(o1[key])) {
                    retObj[key] = this._merge(o1[key], retObj[key]);
                }
                else {
                    retObj[key] = o1[key];
                }
            }
            return retObj;
        }
function ( o1 , o2 ) { var retObj = this . _clone ( o2 ) ; for ( var key in o1 ) { if ( this . _isObject ( o1 [ key ] ) ) { retObj [ key ] = this . _merge ( o1 [ key ] , retObj [ key ] ) ; } else { retObj [ key ] = o1 [ key ] ; } } return retObj ; }
o1 takes precedence over o2
o1 takes precedence over o2