| 
					
				 | 
			
			
				@@ -1,74 +0,0 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-'use strict'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Object.defineProperty(exports, "__esModule", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    value: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function copyWith(obj, key, value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var result = typeof key === 'number' ? obj == null ? [] : [].concat(_toConsumableArray(obj)) : obj == null ? {} : _extends({}, obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    result[key] = value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var cowValueModel = exports.cowValueModel = function cowValueModel() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    for (var _len = arguments.length, keyDescriptions = Array(_len), _key = 0; _key < _len; _key++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        keyDescriptions[_key] = arguments[_key]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var keys = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    function fillKeys(keyDescriptions) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        keyDescriptions.forEach(function (each) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (typeof each === 'number') keys.push(each);else if (Array.isArray(each)) fillKeys(each);else keys.push.apply(keys, _toConsumableArray(each.toString().split('.'))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fillKeys(keyDescriptions); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    function setField(x, index, val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (index >= keys.length) return val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var key = keys[index], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            value = x == null ? undefined : x[key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            modified = setField(value, index + 1, val); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return value === modified ? x : copyWith(x, key, modified); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var GET_SENTINEL = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return function (obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : GET_SENTINEL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return val === GET_SENTINEL ? keys.reduce(function (x, key) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return x == null ? undefined : x[key]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }, obj) : setField(obj, 0, val); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var cowWorkshop = exports.cowWorkshop = function cowWorkshop(keys) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (x) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return x; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return function (obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            _ref$result = _ref.result, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            result = _ref$result === undefined ? obj : _ref$result, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            _ref$resultKeys = _ref.resultKeys, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            resultKeys = _ref$resultKeys === undefined ? keys : _ref$resultKeys, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            diff = _ref.diff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        keys.forEach(function (key, index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var value = fn(cowValueModel(key)(obj)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (typeof value === "undefined") return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var modifier = cowValueModel(resultKeys[index]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var oldResult = result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            result = modifier(oldResult, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (result !== oldResult) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                diff = modifier(diff, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return { result: result, diff: diff }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 |