From 14b355dc4a9ec16444a2d17a0531f35917b2bd61 Mon Sep 17 00:00:00 2001 From: Samuel Hauser Date: Tue, 4 Jun 2019 09:05:07 +0200 Subject: [PATCH 1/2] TASK: Upgrade to newest neos-ui --- .../Private/RestrictCreation/package.json | 3 ++ .../Private/RestrictCreation/src/manifest.js | 2 +- .../Private/RestrictCreation/src/redux.js | 34 +++++++++--------- .../Private/RestrictCreation/src/sagas.js | 12 ++++--- Resources/Private/RestrictCreation/yarn.lock | 36 +++++++++++++------ 5 files changed, 52 insertions(+), 35 deletions(-) diff --git a/Resources/Private/RestrictCreation/package.json b/Resources/Private/RestrictCreation/package.json index ebe6a29..ba15e9a 100644 --- a/Resources/Private/RestrictCreation/package.json +++ b/Resources/Private/RestrictCreation/package.json @@ -11,5 +11,8 @@ }, "neos": { "buildTargetDirectory": "../../Public/JavaScript/RestrictCreation" + }, + "dependencies": { + "lodash.reduce": "^4.6.0" } } diff --git a/Resources/Private/RestrictCreation/src/manifest.js b/Resources/Private/RestrictCreation/src/manifest.js index 203ffef..e7bd0a9 100644 --- a/Resources/Private/RestrictCreation/src/manifest.js +++ b/Resources/Private/RestrictCreation/src/manifest.js @@ -8,7 +8,7 @@ manifest('Flowpack.RestrictCreation:RestrictCreation', {}, globalRegistry => { const originalAddNodeSaga = sagasRegistry.get('neos-ui/CR/NodeOperations/addNode'); sagasRegistry.set('neos-ui/CR/NodeOperations/addNode', { - saga: makeAddNode(originalAddNodeSaga.nodeCreationWorkflow) + saga: makeAddNode(originalAddNodeSaga.saga.nodeCreationWorkflow) }); const reducersRegistry = globalRegistry.get('reducers'); diff --git a/Resources/Private/RestrictCreation/src/redux.js b/Resources/Private/RestrictCreation/src/redux.js index b1de73d..5d6a8df 100644 --- a/Resources/Private/RestrictCreation/src/redux.js +++ b/Resources/Private/RestrictCreation/src/redux.js @@ -1,5 +1,6 @@ import {createAction} from 'redux-actions'; import {handleActions} from '@neos-project/utils-redux'; +import reduce from 'lodash.reduce'; import {$get, $set} from 'plow-js'; import {createSelector} from 'reselect'; import {selectors as foreignSelectors, actionTypes as foreignActionTypes} from '@neos-project/neos-ui-redux-store'; @@ -11,24 +12,21 @@ const restrictCreationSelector = createSelector( foreignSelectors.CR.ContentDimensions.activePresets ], activePresets => { - return activePresets.reduce( - (reduction, dimensionConfig, dimensionName) => { - const restrictCreationConfig = $set( - 'dimensionName', - dimensionName, - dimensionConfig - ); - const restrictCreationMode = $get('restrictCreation.mode', dimensionConfig); - if ($get('restrictCreation.mode', reduction) === 'disallow') { - return reduction; - } - if (restrictCreationMode === 'disallow' || restrictCreationMode === 'warn') { - return restrictCreationConfig; - } - return reduction; - }, - null - ); + return reduce(activePresets, (reduction, dimensionConfig, dimensionName) => { + const restrictCreationConfig = $set( + 'dimensionName', + dimensionName, + dimensionConfig + ); + const restrictCreationMode = $get('restrictCreation.mode', dimensionConfig); + if ($get('restrictCreation.mode', reduction) === 'disallow') { + return reduction; + } + if (restrictCreationMode === 'disallow' || restrictCreationMode === 'warn') { + return restrictCreationConfig; + } + return reduction; + }, null); } ); diff --git a/Resources/Private/RestrictCreation/src/sagas.js b/Resources/Private/RestrictCreation/src/sagas.js index b47c9ca..d9a4c1f 100644 --- a/Resources/Private/RestrictCreation/src/sagas.js +++ b/Resources/Private/RestrictCreation/src/sagas.js @@ -8,7 +8,7 @@ export function makeAddNode(nodeCreationWorkflow) { const nodeTypesRegistry = globalRegistry.get('@neos-project/neos-ui-contentrepository'); yield takeLatest(actionTypes.CR.Nodes.COMMENCE_CREATION, function* (action) { - const {referenceNodeContextPath, referenceNodeFusionPath} = action.payload; + const {referenceNodeContextPath, referenceNodeFusionPath, preferredMode, nodeType} = action.payload; const state = yield select(); const restrictCreationPreset = localSelectors.restrictCreationSelector(state); @@ -26,10 +26,12 @@ export function makeAddNode(nodeCreationWorkflow) { } const context = { - nodeTypesRegistry, - referenceNodeContextPath, - referenceNodeFusionPath - }; + nodeTypesRegistry, + referenceNodeContextPath, + referenceNodeFusionPath, + preferredMode, + nodeType + }; if (showRestrictCreationDialog) { yield put(localActions.openDialog()); const waitForNextAction = yield race([ diff --git a/Resources/Private/RestrictCreation/yarn.lock b/Resources/Private/RestrictCreation/yarn.lock index d79b4df..92e6615 100644 --- a/Resources/Private/RestrictCreation/yarn.lock +++ b/Resources/Private/RestrictCreation/yarn.lock @@ -131,9 +131,10 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@neos-project/build-essentials@1.3.4": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@neos-project/build-essentials/-/build-essentials-1.3.4.tgz#eb1b7780a419cbaaa97cb34273f63c17db7840a6" +"@neos-project/build-essentials@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@neos-project/build-essentials/-/build-essentials-1.4.1.tgz#3152cf5f0ea0507133a0d6d939ecd07bc7a75a2d" + integrity sha512-HqTSwon6trWuzBOEpwJlalXSdL69ubBR00nLJbpj0RGF0AVkT1aJ2bhG7YGWQMCw1CL1vOhzUKQHPQHCdTvbKQ== dependencies: "@ckeditor/ckeditor5-dev-utils" "^9.0" babel-core "^6.13.2" @@ -144,6 +145,7 @@ cross-env "^5.1.3" eslint "^5.3.0" extract-text-webpack-plugin "^3.0.2" + lodash.upperfirst "^4.3.0" postcss-css-variables "^0.9.0" postcss-hexrgba "^1.0.0" postcss-import "^11.0.0" @@ -156,12 +158,13 @@ webpack "^3.8.1" webpack-livereload-plugin "^1.0.0" -"@neos-project/neos-ui-extensibility@*": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@neos-project/neos-ui-extensibility/-/neos-ui-extensibility-1.3.4.tgz#b27325592fa7668f3cb1bc1095c010ff5a4e90bd" +"@neos-project/neos-ui-extensibility@^1.4.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@neos-project/neos-ui-extensibility/-/neos-ui-extensibility-1.4.1.tgz#1a4548e54ccb402ff88fef312d65a01839eab8da" + integrity sha512-qFsQDMpZd8Ruf7XUq9QkfGBKzYejPVpUhJ1IlXMTwxP3B6ODieOm2bblbSes2F5qiKk+5O27p/s6ChTCDMX4sw== dependencies: - "@neos-project/build-essentials" "1.3.4" - "@neos-project/positional-array-sorter" "1.3.4" + "@neos-project/build-essentials" "1.4.1" + "@neos-project/positional-array-sorter" "1.4.1" babel-core "^6.13.2" babel-eslint "^7.1.1" babel-loader "^7.1.2" @@ -179,9 +182,10 @@ react-dev-utils "^0.5.0" style-loader "^0.21.0" -"@neos-project/positional-array-sorter@1.3.4": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@neos-project/positional-array-sorter/-/positional-array-sorter-1.3.4.tgz#38c58db6ab98b844a0664f2601655cb7f00ae118" +"@neos-project/positional-array-sorter@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@neos-project/positional-array-sorter/-/positional-array-sorter-1.4.1.tgz#8352ed0e6b9b8a7d76ef8a662af388866f1dccb2" + integrity sha512-lx8I1QW5vC4NGc4dx0BLvaMm50fto4vcfScubtAFNRUM1MfXzMulDUYxFDEdea/rkAj3iouNUlwQild+4THHfg== "@nodelib/fs.stat@^1.0.1": version "1.1.2" @@ -3389,6 +3393,11 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.reduce@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" + integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= + lodash.some@^4.5.1: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" @@ -3410,6 +3419,11 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" +lodash.upperfirst@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= + lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" From e7cbc8595dc8ca89ce03d201a82c6f44581c0a11 Mon Sep 17 00:00:00 2001 From: Samuel Hauser Date: Tue, 4 Jun 2019 09:05:58 +0200 Subject: [PATCH 2/2] TASK: Upgrade to newest neos-ui --- .../JavaScript/RestrictCreation/Plugin.js | 2506 ++++++++++++++++- .../JavaScript/RestrictCreation/Plugin.js.map | 2 +- 2 files changed, 2474 insertions(+), 34 deletions(-) diff --git a/Resources/Public/JavaScript/RestrictCreation/Plugin.js b/Resources/Public/JavaScript/RestrictCreation/Plugin.js index 8fdf1fb..b703b8e 100644 --- a/Resources/Public/JavaScript/RestrictCreation/Plugin.js +++ b/Resources/Public/JavaScript/RestrictCreation/Plugin.js @@ -81,7 +81,6 @@ function readFromConsumerApi(key) { return (_window$NeosHostPlu = window['@Neos:HostPluginAPI'])['@' + key].apply(_window$NeosHostPlu, arguments); } - console.log(window['@Neos:HostPluginAPI'], key); throw new Error('You are trying to read from a consumer api that hasn\'t been initialized yet!'); }; @@ -131,22 +130,28 @@ exports.reducer = exports.actions = exports.actionTypes = exports.selectors = un var _handleActions; -var _reduxActions = __webpack_require__(15); +var _reduxActions = __webpack_require__(16); -var _utilsRedux = __webpack_require__(16); +var _utilsRedux = __webpack_require__(17); + +var _lodash = __webpack_require__(18); + +var _lodash2 = _interopRequireDefault(_lodash); var _plowJs = __webpack_require__(1); -var _reselect = __webpack_require__(17); +var _reselect = __webpack_require__(21); var _neosUiReduxStore = __webpack_require__(2); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } // Finds amoung currently active dimension presets the preset with the strictest settings (i.e. `disallow` takes precedence over `warn`) // and returns its full config, overlaying `dimensionName` on top. var restrictCreationSelector = (0, _reselect.createSelector)([_neosUiReduxStore.selectors.CR.ContentDimensions.activePresets], function (activePresets) { - return activePresets.reduce(function (reduction, dimensionConfig, dimensionName) { + return (0, _lodash2.default)(activePresets, function (reduction, dimensionConfig, dimensionName) { var restrictCreationConfig = (0, _plowJs.$set)('dimensionName', dimensionName, dimensionConfig); var restrictCreationMode = (0, _plowJs.$get)('restrictCreation.mode', dimensionConfig); if ((0, _plowJs.$get)('restrictCreation.mode', reduction) === 'disallow') { @@ -240,7 +245,7 @@ var _RestrictCreationDialog2 = _interopRequireDefault(_RestrictCreationDialog); var _redux = __webpack_require__(3); -var _sagas = __webpack_require__(18); +var _sagas = __webpack_require__(22); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -249,7 +254,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var originalAddNodeSaga = sagasRegistry.get('neos-ui/CR/NodeOperations/addNode'); sagasRegistry.set('neos-ui/CR/NodeOperations/addNode', { - saga: (0, _sagas.makeAddNode)(originalAddNodeSaga.nodeCreationWorkflow) + saga: (0, _sagas.makeAddNode)(originalAddNodeSaga.saga.nodeCreationWorkflow) }); var reducersRegistry = globalRegistry.get('reducers'); @@ -330,7 +335,7 @@ function createConsumerApi(manifests, exposureMap) { /* 8 */ /***/ (function(module, exports) { -module.exports = {"name":"@neos-project/neos-ui-extensibility","version":"1.3.4","description":"Extensibility mechanisms for the Neos CMS UI","main":"./src/index.js","scripts":{"prebuild":"check-dependencies && yarn clean","test":"yarn jest -- -w 2 --coverage","test:watch":"yarn jest -- --watch","build":"exit 0","build:watch":"exit 0","clean":"rimraf ./lib ./dist","lint":"eslint src","jest":"NODE_ENV=test jest"},"devDependencies":{"@neos-project/babel-preset-neos-ui":"1.3.4","@neos-project/jest-preset-neos-ui":"1.3.4"},"dependencies":{"@neos-project/build-essentials":"1.3.4","@neos-project/positional-array-sorter":"1.3.4","babel-core":"^6.13.2","babel-eslint":"^7.1.1","babel-loader":"^7.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-object-rest-spread":"^6.20.1","babel-plugin-webpack-alias":"^2.1.1","babel-preset-es2015":"^6.13.2","babel-preset-react":"^6.3.13","babel-preset-stage-0":"^6.3.13","chalk":"^1.1.3","css-loader":"^0.28.4","file-loader":"^1.1.5","json-loader":"^0.5.4","postcss-loader":"^2.0.10","react-dev-utils":"^0.5.0","style-loader":"^0.21.0"},"bin":{"neos-react-scripts":"./bin/neos-react-scripts.js"},"jest":{"preset":"@neos-project/jest-preset-neos-ui"}} +module.exports = {"name":"@neos-project/neos-ui-extensibility","version":"1.4.1","description":"Extensibility mechanisms for the Neos CMS UI","main":"./src/index.js","scripts":{"prebuild":"check-dependencies && yarn clean","test":"yarn jest -- -w 2 --coverage","test:watch":"yarn jest -- --watch","build":"exit 0","build:watch":"exit 0","clean":"rimraf ./lib ./dist","lint":"eslint src","jest":"NODE_ENV=test jest"},"devDependencies":{"@neos-project/babel-preset-neos-ui":"1.4.1","@neos-project/jest-preset-neos-ui":"1.4.1"},"dependencies":{"@neos-project/build-essentials":"1.4.1","@neos-project/positional-array-sorter":"1.4.1","babel-core":"^6.13.2","babel-eslint":"^7.1.1","babel-loader":"^7.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-object-rest-spread":"^6.20.1","babel-plugin-webpack-alias":"^2.1.1","babel-preset-es2015":"^6.13.2","babel-preset-react":"^6.3.13","babel-preset-stage-0":"^6.3.13","chalk":"^1.1.3","css-loader":"^0.28.4","file-loader":"^1.1.5","json-loader":"^0.5.4","postcss-loader":"^2.0.10","react-dev-utils":"^0.5.0","style-loader":"^0.21.0"},"bin":{"neos-react-scripts":"./bin/neos-react-scripts.js"},"jest":{"preset":"@neos-project/jest-preset-neos-ui"}} /***/ }), /* 9 */ @@ -384,7 +389,7 @@ var _plowJs = __webpack_require__(1); var _reactUiComponents = __webpack_require__(14); -var _neosUiI18n = __webpack_require__(21); +var _neosUiI18n = __webpack_require__(15); var _neosUiI18n2 = _interopRequireDefault(_neosUiI18n); @@ -692,7 +697,7 @@ var _readFromConsumerApi2 = _interopRequireDefault(_readFromConsumerApi); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -module.exports = (0, _readFromConsumerApi2.default)('vendor')().reduxActions; +module.exports = (0, _readFromConsumerApi2.default)('NeosProjectPackages')().NeosUiI18n; /***/ }), /* 16 */ @@ -707,7 +712,7 @@ var _readFromConsumerApi2 = _interopRequireDefault(_readFromConsumerApi); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -module.exports = (0, _readFromConsumerApi2.default)('NeosProjectPackages')().UtilsRedux; +module.exports = (0, _readFromConsumerApi2.default)('vendor')().reduxActions; /***/ }), /* 17 */ @@ -722,12 +727,2461 @@ var _readFromConsumerApi2 = _interopRequireDefault(_readFromConsumerApi); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -module.exports = (0, _readFromConsumerApi2.default)('vendor')().reselect; +module.exports = (0, _readFromConsumerApi2.default)('NeosProjectPackages')().UtilsRedux; /***/ }), /* 18 */ /***/ (function(module, exports, __webpack_require__) { +/* WEBPACK VAR INJECTION */(function(global, module) {/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used to compose bitmasks for comparison styles. */ +var UNORDERED_COMPARE_FLAG = 1, + PARTIAL_COMPARE_FLAG = 2; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + return freeProcess && freeProcess.binding('util'); + } catch (e) {} +}()); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array ? array.length : 0; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +/** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ +function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; +} + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values ? values.length : 0; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + this.__data__ = new ListCache(entries); +} + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; +} + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + return this.__data__['delete'](key); +} + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; + } + cache = this.__data__ = new MapCache(pairs); + } + cache.set(key, value); + return this; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +/** + * The base implementation of `getTag`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + return objectToString.call(value); +} + +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @param {boolean} [bitmask] The bitmask of comparison flags. + * The bitmask may be composed of the following flags: + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, customizer, bitmask, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); +} + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparisons. + * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = getTag(object); + objTag = objTag == argsTag ? objectTag : objTag; + } + if (!othIsArr) { + othTag = getTag(other); + othTag = othTag == argsTag ? objectTag : othTag; + } + var objIsObj = objTag == objectTag && !isHostObject(object), + othIsObj = othTag == objectTag && !isHostObject(other), + isSameTag = objTag == othTag; + + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) + : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); + } + if (!(bitmask & PARTIAL_COMPARE_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, equalFunc, customizer, bitmask, stack); +} + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) + : result + )) { + return false; + } + } + } + return true; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; +} + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); + }; +} + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!seen.has(othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + return seen.add(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, customizer, bitmask, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & PARTIAL_COMPARE_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= UNORDERED_COMPARE_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11, +// for data views in Edge < 14, and promises in Node.js. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = isKey(path, object) ? [path] : castPath(path); + + var result, + index = -1, + length = path.length; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result) { + return result; + } + var length = object ? object.length : 0; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + string = toString(string); + + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ +function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); +} + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = reduce; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(19), __webpack_require__(20)(module))) + +/***/ }), +/* 19 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 20 */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _readFromConsumerApi = __webpack_require__(0); + +var _readFromConsumerApi2 = _interopRequireDefault(_readFromConsumerApi); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = (0, _readFromConsumerApi2.default)('vendor')().reselect; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + "use strict"; @@ -736,7 +3190,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.makeAddNode = makeAddNode; -var _effects = __webpack_require__(19); +var _effects = __webpack_require__(23); var _plowJs = __webpack_require__(1); @@ -757,13 +3211,13 @@ function makeAddNode(nodeCreationWorkflow) { nodeTypesRegistry = globalRegistry.get('@neos-project/neos-ui-contentrepository'); _context2.next = 3; return (0, _effects.takeLatest)(_neosUiReduxStore.actionTypes.CR.Nodes.COMMENCE_CREATION, /*#__PURE__*/regeneratorRuntime.mark(function _callee(action) { - var _action$payload, referenceNodeContextPath, referenceNodeFusionPath, state, restrictCreationPreset, showRestrictCreationDialog, documentNodesOnly, getNodeByContextPathSelector, referenceNode, isDocument, context, waitForNextAction, nextAction; + var _action$payload, referenceNodeContextPath, referenceNodeFusionPath, preferredMode, nodeType, state, restrictCreationPreset, showRestrictCreationDialog, documentNodesOnly, getNodeByContextPathSelector, referenceNode, isDocument, context, waitForNextAction, nextAction; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - _action$payload = action.payload, referenceNodeContextPath = _action$payload.referenceNodeContextPath, referenceNodeFusionPath = _action$payload.referenceNodeFusionPath; + _action$payload = action.payload, referenceNodeContextPath = _action$payload.referenceNodeContextPath, referenceNodeFusionPath = _action$payload.referenceNodeFusionPath, preferredMode = _action$payload.preferredMode, nodeType = _action$payload.nodeType; _context.next = 3; return (0, _effects.select)(); @@ -796,7 +3250,9 @@ function makeAddNode(nodeCreationWorkflow) { context = { nodeTypesRegistry: nodeTypesRegistry, referenceNodeContextPath: referenceNodeContextPath, - referenceNodeFusionPath: referenceNodeFusionPath + referenceNodeFusionPath: referenceNodeFusionPath, + preferredMode: preferredMode, + nodeType: nodeType }; if (!showRestrictCreationDialog) { @@ -857,7 +3313,7 @@ function makeAddNode(nodeCreationWorkflow) { } /***/ }), -/* 19 */ +/* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -871,22 +3327,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de module.exports = (0, _readFromConsumerApi2.default)('vendor')().reduxSagaEffects; -/***/ }), -/* 20 */, -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _readFromConsumerApi = __webpack_require__(0); - -var _readFromConsumerApi2 = _interopRequireDefault(_readFromConsumerApi); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -module.exports = (0, _readFromConsumerApi2.default)('NeosProjectPackages')().NeosUiI18n; - /***/ }) /******/ ]); //# sourceMappingURL=Plugin.js.map \ No newline at end of file diff --git a/Resources/Public/JavaScript/RestrictCreation/Plugin.js.map b/Resources/Public/JavaScript/RestrictCreation/Plugin.js.map index 7f52a01..c85424b 100644 --- a/Resources/Public/JavaScript/RestrictCreation/Plugin.js.map +++ b/Resources/Public/JavaScript/RestrictCreation/Plugin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap f21c8e0d54d85fd9e280","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/readFromConsumerApi.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/plow-js/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-redux-store/index.js","webpack:///./src/redux.js","webpack:///./src/index.js","webpack:///./src/manifest.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/createConsumerApi.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/package.json","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/manifest.js","webpack:///./src/RestrictCreationDialog.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/prop-types/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react-redux/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/react-ui-components/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-actions/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/utils-redux/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/reselect/index.js","webpack:///./src/sagas.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-saga-effects/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-i18n/index.js"],"names":["readFromConsumerApi","key","window","console","log","Error","module","exports","plow","NeosUiReduxStore","restrictCreationSelector","foreignSelectors","CR","ContentDimensions","activePresets","reduce","reduction","dimensionConfig","dimensionName","restrictCreationConfig","restrictCreationMode","restrictCreationOriginPresetSelector","restrictCreationPresetConfig","contentDimensions","originPresetName","originPreset","selectors","OPEN_DIALOG","CLOSE_DIALOG","CONTINUE_CREATION","actionTypes","openDialog","closeDialog","continueCreation","actions","reducer","foreignActionTypes","SELECT_PRESET","sagasRegistry","globalRegistry","get","originalAddNodeSaga","set","saga","nodeCreationWorkflow","reducersRegistry","containerRegistry","RestrictCreationDialog","createConsumerApi","createReadOnlyValue","value","writable","enumerable","configurable","manifests","exposureMap","api","Object","keys","forEach","defineProperty","version","identifier","options","bootstrap","push","restrictCreationDialogIsOpen","localSelectors","restrictCreationOriginPreset","localActions","selectPreset","handleAbort","props","handleDismiss","handleSwitchPreset","originPresetValue","marginLeft","originPresetLabel","currentPresetLabel","renderAbort","renderSwitch","renderTitle","padding","renderDismiss","disallowModal","warnModal","PureComponent","propTypes","PropTypes","bool","object","func","isRequired","React","reactRedux","ReactUiComponents","reduxActions","UtilsRedux","reselect","makeAddNode","addNode","nodeTypesRegistry","Nodes","COMMENCE_CREATION","action","payload","referenceNodeContextPath","referenceNodeFusionPath","state","restrictCreationPreset","showRestrictCreationDialog","Boolean","documentNodesOnly","getNodeByContextPathSelector","makeGetNodeByContextPathSelector","referenceNode","isDocument","hasRole","context","localActionTypes","waitForNextAction","nextAction","values","type","reduxSagaEffects","NeosUiI18n"],"mappings":"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","file":"Plugin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f21c8e0d54d85fd9e280","export default function readFromConsumerApi(key) {\n return (...args) => {\n if (window['@Neos:HostPluginAPI'] && window['@Neos:HostPluginAPI'][`@${key}`]) {\n return window['@Neos:HostPluginAPI'][`@${key}`](...args);\n }\n console.log(window['@Neos:HostPluginAPI'], key);\n\n throw new Error(`You are trying to read from a consumer api that hasn't been initialized yet!`);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/readFromConsumerApi.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().plow;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/plow-js/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().NeosUiReduxStore;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-redux-store/index.js","import {createAction} from 'redux-actions';\nimport {handleActions} from '@neos-project/utils-redux';\nimport {$get, $set} from 'plow-js';\nimport {createSelector} from 'reselect';\nimport {selectors as foreignSelectors, actionTypes as foreignActionTypes} from '@neos-project/neos-ui-redux-store';\n\n// Finds amoung currently active dimension presets the preset with the strictest settings (i.e. `disallow` takes precedence over `warn`)\n// and returns its full config, overlaying `dimensionName` on top.\nconst restrictCreationSelector = createSelector(\n [\n foreignSelectors.CR.ContentDimensions.activePresets\n ],\n activePresets => {\n return activePresets.reduce(\n (reduction, dimensionConfig, dimensionName) => {\n const restrictCreationConfig = $set(\n 'dimensionName',\n dimensionName,\n dimensionConfig\n );\n const restrictCreationMode = $get('restrictCreation.mode', dimensionConfig);\n if ($get('restrictCreation.mode', reduction) === 'disallow') {\n return reduction;\n }\n if (restrictCreationMode === 'disallow' || restrictCreationMode === 'warn') {\n return restrictCreationConfig;\n }\n return reduction;\n },\n null\n );\n }\n);\n\n// Finds the origin dimension preset according to restrict creation configuration\nconst restrictCreationOriginPresetSelector = createSelector(\n [\n restrictCreationSelector,\n $get('cr.contentDimensions.byName')\n ],\n (restrictCreationPresetConfig, contentDimensions) => {\n const dimensionName = $get('dimensionName', restrictCreationPresetConfig);\n const originPresetName = $get('restrictCreation.originPreset', restrictCreationPresetConfig);\n if (!originPresetName) {\n return null;\n }\n const originPreset = $get([dimensionName, 'presets', originPresetName], contentDimensions);\n return originPreset;\n }\n);\n\nexport const selectors = {\n restrictCreationSelector,\n restrictCreationOriginPresetSelector\n};\n\nconst OPEN_DIALOG = '@Flowpack.RestrictCreation/OPEN_DIALOG';\nconst CLOSE_DIALOG = '@Flowpack.RestrictCreation/CLOSE_DIALOG';\nconst CONTINUE_CREATION = '@Flowpack.RestrictCreation/CONTINUE_CREATION';\n\n//\n// Export the action types\n//\nexport const actionTypes = {\n OPEN_DIALOG,\n CLOSE_DIALOG,\n CONTINUE_CREATION\n};\n\nconst openDialog = createAction(OPEN_DIALOG);\nconst closeDialog = createAction(CLOSE_DIALOG);\nconst continueCreation = createAction(CONTINUE_CREATION);\n\n//\n// Export the actions\n//\nexport const actions = {\n openDialog,\n closeDialog,\n continueCreation\n};\n\n//\n// Export the reducer\n//\nexport const reducer = handleActions({\n [OPEN_DIALOG]: () => $set('ui.restrictCreationDialog.isOpen', true),\n [CLOSE_DIALOG]: () => $set('ui.restrictCreationDialog.isOpen', false),\n [CONTINUE_CREATION]: () => $set('ui.restrictCreationDialog.isOpen', false),\n [foreignActionTypes.CR.ContentDimensions.SELECT_PRESET]: () => $set('ui.restrictCreationDialog.isOpen', false)\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/redux.js","import './manifest';\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import manifest from '@neos-project/neos-ui-extensibility';\nimport RestrictCreationDialog from './RestrictCreationDialog';\nimport {reducer} from './redux';\nimport {makeAddNode} from './sagas';\n\nmanifest('Flowpack.RestrictCreation:RestrictCreation', {}, globalRegistry => {\n const sagasRegistry = globalRegistry.get('sagas');\n\n const originalAddNodeSaga = sagasRegistry.get('neos-ui/CR/NodeOperations/addNode');\n sagasRegistry.set('neos-ui/CR/NodeOperations/addNode', {\n saga: makeAddNode(originalAddNodeSaga.nodeCreationWorkflow)\n });\n\n const reducersRegistry = globalRegistry.get('reducers');\n reducersRegistry.set('Flowpack.RestrictCreation:RestrictCreation', {reducer});\n\n const containerRegistry = globalRegistry.get('containers');\n containerRegistry.set('Modals/RestrictCreationDialog', RestrictCreationDialog);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/manifest.js","import createConsumerApi from './createConsumerApi';\nimport readFromConsumerApi from './readFromConsumerApi';\n\nexport default readFromConsumerApi('manifest');\n\nexport {\n createConsumerApi\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/index.js","import {version} from '../package.json';\nimport createManifestFunction from './manifest';\n\nconst createReadOnlyValue = value => ({\n value,\n writable: false,\n enumerable: false,\n configurable: true\n});\n\nexport default function createConsumerApi(manifests, exposureMap) {\n const api = {};\n\n Object.keys(exposureMap).forEach(key => {\n Object.defineProperty(api, key, createReadOnlyValue(exposureMap[key]));\n });\n\n Object.defineProperty(api, '@manifest', createReadOnlyValue(\n createManifestFunction(manifests)\n ));\n\n Object.defineProperty(window, '@Neos:HostPluginAPI', createReadOnlyValue(api));\n Object.defineProperty(window['@Neos:HostPluginAPI'], 'VERSION', createReadOnlyValue(version));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/createConsumerApi.js","module.exports = {\"name\":\"@neos-project/neos-ui-extensibility\",\"version\":\"1.3.4\",\"description\":\"Extensibility mechanisms for the Neos CMS UI\",\"main\":\"./src/index.js\",\"scripts\":{\"prebuild\":\"check-dependencies && yarn clean\",\"test\":\"yarn jest -- -w 2 --coverage\",\"test:watch\":\"yarn jest -- --watch\",\"build\":\"exit 0\",\"build:watch\":\"exit 0\",\"clean\":\"rimraf ./lib ./dist\",\"lint\":\"eslint src\",\"jest\":\"NODE_ENV=test jest\"},\"devDependencies\":{\"@neos-project/babel-preset-neos-ui\":\"1.3.4\",\"@neos-project/jest-preset-neos-ui\":\"1.3.4\"},\"dependencies\":{\"@neos-project/build-essentials\":\"1.3.4\",\"@neos-project/positional-array-sorter\":\"1.3.4\",\"babel-core\":\"^6.13.2\",\"babel-eslint\":\"^7.1.1\",\"babel-loader\":\"^7.1.2\",\"babel-plugin-transform-decorators-legacy\":\"^1.3.4\",\"babel-plugin-transform-object-rest-spread\":\"^6.20.1\",\"babel-plugin-webpack-alias\":\"^2.1.1\",\"babel-preset-es2015\":\"^6.13.2\",\"babel-preset-react\":\"^6.3.13\",\"babel-preset-stage-0\":\"^6.3.13\",\"chalk\":\"^1.1.3\",\"css-loader\":\"^0.28.4\",\"file-loader\":\"^1.1.5\",\"json-loader\":\"^0.5.4\",\"postcss-loader\":\"^2.0.10\",\"react-dev-utils\":\"^0.5.0\",\"style-loader\":\"^0.21.0\"},\"bin\":{\"neos-react-scripts\":\"./bin/neos-react-scripts.js\"},\"jest\":{\"preset\":\"@neos-project/jest-preset-neos-ui\"}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@neos-project/neos-ui-extensibility/package.json\n// module id = 8\n// module chunks = 0","export default manifests => {\n return function (identifier, options, bootstrap) {\n manifests.push({\n [identifier]: {\n options,\n bootstrap\n }\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/manifest.js","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {$get, $transform} from 'plow-js';\n\nimport {Button, Dialog, Icon} from '@neos-project/react-ui-components';\nimport I18n from '@neos-project/neos-ui-i18n';\nimport {actions} from '@neos-project/neos-ui-redux-store';\nimport {actions as localActions, selectors as localSelectors} from './redux';\n\n@connect($transform({\n restrictCreationDialogIsOpen: $get('ui.restrictCreationDialog.isOpen'),\n restrictCreationPresetConfig: localSelectors.restrictCreationSelector,\n restrictCreationOriginPreset: localSelectors.restrictCreationOriginPresetSelector\n}), {\n openDialog: localActions.openDialog,\n closeDialog: localActions.closeDialog,\n continueCreation: localActions.continueCreation,\n selectPreset: actions.CR.ContentDimensions.selectPreset\n})\nexport default class RestrictCreationDialog extends PureComponent {\n static propTypes = {\n restrictCreationDialogIsOpen: PropTypes.bool,\n restrictCreationPresetConfig: PropTypes.object,\n restrictCreationOriginPreset: PropTypes.object,\n openDialog: PropTypes.func.isRequired,\n closeDialog: PropTypes.func.isRequired,\n continueCreation: PropTypes.func.isRequired,\n selectPreset: PropTypes.func.isRequired\n };\n\n handleAbort = () => {\n this.props.closeDialog();\n }\n\n handleDismiss = () => {\n this.props.continueCreation();\n }\n\n handleSwitchPreset = () => {\n const {restrictCreationPresetConfig, restrictCreationOriginPreset} = this.props;\n const dimensionName = $get('dimensionName', restrictCreationPresetConfig);\n const originPresetValue = $get('values.0', restrictCreationOriginPreset);\n this.props.selectPreset({[dimensionName]: originPresetValue});\n }\n\n renderTitle() {\n return (\n
\n \n \n \n \n
\n );\n }\n\n renderAbort() {\n return (\n \n \n \n );\n }\n\n renderSwitch() {\n const {restrictCreationOriginPreset} = this.props;\n const originPresetLabel = $get('label', restrictCreationOriginPreset);\n if (!originPresetLabel) {\n return null;\n }\n return (\n \n \n \n );\n }\n renderDismiss() {\n return (\n \n \n \n );\n }\n\n disallowModal() {\n const {restrictCreationPresetConfig, restrictCreationOriginPreset} = this.props;\n const currentPresetLabel = $get('label', restrictCreationPresetConfig);\n const originPresetLabel = $get('label', restrictCreationOriginPreset);\n return (\n \n
\n \n {originPresetLabel && (\n
\n \n
\n )}\n
\n \n );\n }\n\n warnModal() {\n const {restrictCreationPresetConfig, restrictCreationOriginPreset} = this.props;\n const currentPresetLabel = $get('label', restrictCreationPresetConfig);\n const originPresetLabel = $get('label', restrictCreationOriginPreset);\n return (\n \n
\n \n {originPresetLabel && (\n
\n \n
\n )}\n
\n \n );\n }\n\n render() {\n const {restrictCreationDialogIsOpen, restrictCreationPresetConfig} = this.props;\n\n if (!restrictCreationDialogIsOpen) {\n return null;\n }\n\n if ($get('restrictCreation.mode', restrictCreationPresetConfig) === 'disallow') {\n return this.disallowModal();\n }\n if ($get('restrictCreation.mode', restrictCreationPresetConfig) === 'warn') {\n return this.warnModal();\n }\n return null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/RestrictCreationDialog.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().React;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().PropTypes;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/prop-types/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reactRedux;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react-redux/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().ReactUiComponents;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/react-ui-components/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reduxActions;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-actions/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().UtilsRedux;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/utils-redux/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reselect;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/reselect/index.js","import {takeLatest, take, select, call, put, race} from 'redux-saga/effects';\nimport {$get} from 'plow-js';\nimport {actionTypes, selectors} from '@neos-project/neos-ui-redux-store';\nimport {actions as localActions, actionTypes as localActionTypes, selectors as localSelectors} from './redux';\n\nexport function makeAddNode(nodeCreationWorkflow) {\n function * addNode({globalRegistry}) {\n const nodeTypesRegistry = globalRegistry.get('@neos-project/neos-ui-contentrepository');\n \n yield takeLatest(actionTypes.CR.Nodes.COMMENCE_CREATION, function* (action) {\n const {referenceNodeContextPath, referenceNodeFusionPath} = action.payload;\n \n const state = yield select();\n const restrictCreationPreset = localSelectors.restrictCreationSelector(state);\n \n // Show restrict creation dialog if mode is not null\n let showRestrictCreationDialog = Boolean($get('restrictCreation.mode', restrictCreationPreset));\n const documentNodesOnly = $get('restrictCreation.documentNodesOnly', restrictCreationPreset);\n \n if (documentNodesOnly) {\n const getNodeByContextPathSelector = selectors.CR.Nodes.makeGetNodeByContextPathSelector(referenceNodeContextPath);\n const referenceNode = yield select(getNodeByContextPathSelector);\n const isDocument = nodeTypesRegistry.hasRole($get('nodeType', referenceNode), 'document');\n // Skip the dialog if not document node\n showRestrictCreationDialog = isDocument;\n }\n \n const context = {\n nodeTypesRegistry,\n referenceNodeContextPath,\n referenceNodeFusionPath\n };\n if (showRestrictCreationDialog) {\n yield put(localActions.openDialog());\n const waitForNextAction = yield race([\n take(localActionTypes.OPEN_DIALOG),\n take(localActionTypes.CLOSE_DIALOG),\n take(localActionTypes.CONTINUE_CREATION)\n ]);\n const nextAction = Object.values(waitForNextAction)[0];\n \n if (nextAction.type === localActionTypes.CONTINUE_CREATION) {\n yield call(nodeCreationWorkflow, context);\n } else {\n return;\n }\n } else {\n yield call(nodeCreationWorkflow, context);\n }\n });\n }\n return addNode;\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/sagas.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reduxSagaEffects;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-saga-effects/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().NeosUiI18n;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-i18n/index.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 8cfff9611255951f9ab3","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/readFromConsumerApi.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/plow-js/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-redux-store/index.js","webpack:///./src/redux.js","webpack:///./src/index.js","webpack:///./src/manifest.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/createConsumerApi.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/package.json","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/manifest.js","webpack:///./src/RestrictCreationDialog.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/prop-types/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react-redux/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/react-ui-components/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-i18n/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-actions/index.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/utils-redux/index.js","webpack:///./node_modules/lodash.reduce/index.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/reselect/index.js","webpack:///./src/sagas.js","webpack:///./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-saga-effects/index.js"],"names":["readFromConsumerApi","key","window","Error","module","exports","plow","NeosUiReduxStore","restrictCreationSelector","foreignSelectors","CR","ContentDimensions","activePresets","reduction","dimensionConfig","dimensionName","restrictCreationConfig","restrictCreationMode","restrictCreationOriginPresetSelector","restrictCreationPresetConfig","contentDimensions","originPresetName","originPreset","selectors","OPEN_DIALOG","CLOSE_DIALOG","CONTINUE_CREATION","actionTypes","openDialog","closeDialog","continueCreation","actions","reducer","foreignActionTypes","SELECT_PRESET","sagasRegistry","globalRegistry","get","originalAddNodeSaga","set","saga","nodeCreationWorkflow","reducersRegistry","containerRegistry","RestrictCreationDialog","createConsumerApi","createReadOnlyValue","value","writable","enumerable","configurable","manifests","exposureMap","api","Object","keys","forEach","defineProperty","version","identifier","options","bootstrap","push","restrictCreationDialogIsOpen","localSelectors","restrictCreationOriginPreset","localActions","selectPreset","handleAbort","props","handleDismiss","handleSwitchPreset","originPresetValue","marginLeft","originPresetLabel","currentPresetLabel","renderAbort","renderSwitch","renderTitle","padding","renderDismiss","disallowModal","warnModal","PureComponent","propTypes","PropTypes","bool","object","func","isRequired","React","reactRedux","ReactUiComponents","NeosUiI18n","reduxActions","UtilsRedux","reselect","makeAddNode","addNode","nodeTypesRegistry","Nodes","COMMENCE_CREATION","action","payload","referenceNodeContextPath","referenceNodeFusionPath","preferredMode","nodeType","state","restrictCreationPreset","showRestrictCreationDialog","Boolean","documentNodesOnly","getNodeByContextPathSelector","makeGetNodeByContextPathSelector","referenceNode","isDocument","hasRole","context","localActionTypes","waitForNextAction","nextAction","values","type","reduxSagaEffects"],"mappings":"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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA,IAAI,IAAI;AACR,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACn0EA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;ACrBA;;;;;;AAEA3F,OAAOC,OAAP,GAAiB,mCAAoB,QAApB,IAAgC2F,QAAjD,C;;;;;;;;;;;;QCGgBC,W,GAAAA,W;;AALhB;;AACA;;AACA;;AACA;;AAEO,SAASA,WAAT,CAAqBxD,oBAArB,EAA2C;AAAA,uDACnCyD,OADmC;;AAC9C,aAAWA,OAAX;AAAA,YAAoB9D,cAApB,QAAoBA,cAApB;AAAA;AAAA;AAAA;AAAA;AAAA;AACU+D,yCADV,GAC8B/D,eAAeC,GAAf,CAAmB,yCAAnB,CAD9B;AAAA;AAAA,+BAGU,yBAAWV,8BAAYjB,EAAZ,CAAe0F,KAAf,CAAqBC,iBAAhC,uCAAmD,iBAAWC,MAAX;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,8DACuBA,OAAOC,OAD9B,EACvDC,wBADuD,mBACvDA,wBADuD,EAC7BC,uBAD6B,mBAC7BA,uBAD6B,EACJC,aADI,mBACJA,aADI,EACWC,QADX,mBACWA,QADX;AAAA;AAAA,mDAGjC,sBAHiC;;AAAA;AAG/CC,iDAH+C;AAI/CC,kEAJ+C,GAItB7C,iBAAexD,wBAAf,CAAwCoG,KAAxC,CAJsB;;AAMrD;;AACIE,sEAPiD,GAOpBC,QAAQ,kBAAK,uBAAL,EAA8BF,sBAA9B,CAAR,CAPoB;AAQ/CG,6DAR+C,GAQ3B,kBAAK,oCAAL,EAA2CH,sBAA3C,CAR2B;;AAAA,iDAUjDG,iBAViD;AAAA;AAAA;AAAA;;AAW3CC,wEAX2C,GAWZ1F,4BAAUb,EAAV,CAAa0F,KAAb,CAAmBc,gCAAnB,CAAoDV,wBAApD,CAXY;AAAA;AAAA,mDAYrB,qBAAOS,4BAAP,CAZqB;;AAAA;AAY3CE,yDAZ2C;AAa3CC,sDAb2C,GAa9BjB,kBAAkBkB,OAAlB,CAA0B,kBAAK,UAAL,EAAiBF,aAAjB,CAA1B,EAA2D,UAA3D,CAb8B;AAcjD;;AACAL,yEAA6BM,UAA7B;;AAfiD;AAkB/CE,mDAlB+C,GAkBrC;AACxBnB,oFADwB;AAExBK,kGAFwB;AAGxBC,gGAHwB;AAIxBC,4EAJwB;AAKxBC;AALwB,6CAlBqC;;AAAA,iDAyBjDG,0BAzBiD;AAAA;AAAA;AAAA;;AAAA;AAAA,mDA0B3C,kBAAI5C,eAAatC,UAAb,EAAJ,CA1B2C;;AAAA;AAAA;AAAA,mDA2BjB,mBAAK,CACjC,mBAAK2F,mBAAiB/F,WAAtB,CADiC,EAEjC,mBAAK+F,mBAAiB9F,YAAtB,CAFiC,EAGjC,mBAAK8F,mBAAiB7F,iBAAtB,CAHiC,CAAL,CA3BiB;;AAAA;AA2B3C8F,6DA3B2C;AAgC3CC,sDAhC2C,GAgC9BnE,OAAOoE,MAAP,CAAcF,iBAAd,EAAiC,CAAjC,CAhC8B;;AAAA,kDAkC7CC,WAAWE,IAAX,KAAoBJ,mBAAiB7F,iBAlCQ;AAAA;AAAA;AAAA;;AAAA;AAAA,mDAmCvC,mBAAKe,oBAAL,EAA2B6E,OAA3B,CAnCuC;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,mDAwC3C,mBAAK7E,oBAAL,EAA2B6E,OAA3B,CAxC2C;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAnD,EAHV;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+CA,WAAOpB,OAAP;AACH,C;;;;;;;;;ACtDD;;;;;;AAEA9F,OAAOC,OAAP,GAAiB,mCAAoB,QAApB,IAAgCuH,gBAAjD,C","file":"Plugin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8cfff9611255951f9ab3","export default function readFromConsumerApi(key) {\n return (...args) => {\n if (window['@Neos:HostPluginAPI'] && window['@Neos:HostPluginAPI'][`@${key}`]) {\n return window['@Neos:HostPluginAPI'][`@${key}`](...args);\n }\n\n throw new Error(`You are trying to read from a consumer api that hasn't been initialized yet!`);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/readFromConsumerApi.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().plow;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/plow-js/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().NeosUiReduxStore;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-redux-store/index.js","import {createAction} from 'redux-actions';\nimport {handleActions} from '@neos-project/utils-redux';\nimport reduce from 'lodash.reduce';\nimport {$get, $set} from 'plow-js';\nimport {createSelector} from 'reselect';\nimport {selectors as foreignSelectors, actionTypes as foreignActionTypes} from '@neos-project/neos-ui-redux-store';\n\n// Finds amoung currently active dimension presets the preset with the strictest settings (i.e. `disallow` takes precedence over `warn`)\n// and returns its full config, overlaying `dimensionName` on top.\nconst restrictCreationSelector = createSelector(\n [\n foreignSelectors.CR.ContentDimensions.activePresets\n ],\n activePresets => {\n return reduce(activePresets, (reduction, dimensionConfig, dimensionName) => {\n\t\t\tconst restrictCreationConfig = $set(\n\t\t\t\t'dimensionName',\n\t\t\t\tdimensionName,\n\t\t\t\tdimensionConfig\n\t\t\t);\n\t\t\tconst restrictCreationMode = $get('restrictCreation.mode', dimensionConfig);\n\t\t\tif ($get('restrictCreation.mode', reduction) === 'disallow') {\n\t\t\t\treturn reduction;\n\t\t\t}\n\t\t\tif (restrictCreationMode === 'disallow' || restrictCreationMode === 'warn') {\n\t\t\t\treturn restrictCreationConfig;\n\t\t\t}\n\t\t\treturn reduction;\n\t\t}, null);\n }\n);\n\n// Finds the origin dimension preset according to restrict creation configuration\nconst restrictCreationOriginPresetSelector = createSelector(\n [\n restrictCreationSelector,\n $get('cr.contentDimensions.byName')\n ],\n (restrictCreationPresetConfig, contentDimensions) => {\n const dimensionName = $get('dimensionName', restrictCreationPresetConfig);\n const originPresetName = $get('restrictCreation.originPreset', restrictCreationPresetConfig);\n if (!originPresetName) {\n return null;\n }\n const originPreset = $get([dimensionName, 'presets', originPresetName], contentDimensions);\n return originPreset;\n }\n);\n\nexport const selectors = {\n restrictCreationSelector,\n restrictCreationOriginPresetSelector\n};\n\nconst OPEN_DIALOG = '@Flowpack.RestrictCreation/OPEN_DIALOG';\nconst CLOSE_DIALOG = '@Flowpack.RestrictCreation/CLOSE_DIALOG';\nconst CONTINUE_CREATION = '@Flowpack.RestrictCreation/CONTINUE_CREATION';\n\n//\n// Export the action types\n//\nexport const actionTypes = {\n OPEN_DIALOG,\n CLOSE_DIALOG,\n CONTINUE_CREATION\n};\n\nconst openDialog = createAction(OPEN_DIALOG);\nconst closeDialog = createAction(CLOSE_DIALOG);\nconst continueCreation = createAction(CONTINUE_CREATION);\n\n//\n// Export the actions\n//\nexport const actions = {\n openDialog,\n closeDialog,\n continueCreation\n};\n\n//\n// Export the reducer\n//\nexport const reducer = handleActions({\n [OPEN_DIALOG]: () => $set('ui.restrictCreationDialog.isOpen', true),\n [CLOSE_DIALOG]: () => $set('ui.restrictCreationDialog.isOpen', false),\n [CONTINUE_CREATION]: () => $set('ui.restrictCreationDialog.isOpen', false),\n [foreignActionTypes.CR.ContentDimensions.SELECT_PRESET]: () => $set('ui.restrictCreationDialog.isOpen', false)\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/redux.js","import './manifest';\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import manifest from '@neos-project/neos-ui-extensibility';\nimport RestrictCreationDialog from './RestrictCreationDialog';\nimport {reducer} from './redux';\nimport {makeAddNode} from './sagas';\n\nmanifest('Flowpack.RestrictCreation:RestrictCreation', {}, globalRegistry => {\n const sagasRegistry = globalRegistry.get('sagas');\n\n const originalAddNodeSaga = sagasRegistry.get('neos-ui/CR/NodeOperations/addNode');\n sagasRegistry.set('neos-ui/CR/NodeOperations/addNode', {\n saga: makeAddNode(originalAddNodeSaga.saga.nodeCreationWorkflow)\n });\n\n const reducersRegistry = globalRegistry.get('reducers');\n reducersRegistry.set('Flowpack.RestrictCreation:RestrictCreation', {reducer});\n\n const containerRegistry = globalRegistry.get('containers');\n containerRegistry.set('Modals/RestrictCreationDialog', RestrictCreationDialog);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/manifest.js","import createConsumerApi from './createConsumerApi';\nimport readFromConsumerApi from './readFromConsumerApi';\n\nexport default readFromConsumerApi('manifest');\n\nexport {\n createConsumerApi\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/index.js","import {version} from '../package.json';\nimport createManifestFunction from './manifest';\n\nconst createReadOnlyValue = value => ({\n value,\n writable: false,\n enumerable: false,\n configurable: true\n});\n\nexport default function createConsumerApi(manifests, exposureMap) {\n const api = {};\n\n Object.keys(exposureMap).forEach(key => {\n Object.defineProperty(api, key, createReadOnlyValue(exposureMap[key]));\n });\n\n Object.defineProperty(api, '@manifest', createReadOnlyValue(\n createManifestFunction(manifests)\n ));\n\n Object.defineProperty(window, '@Neos:HostPluginAPI', createReadOnlyValue(api));\n Object.defineProperty(window['@Neos:HostPluginAPI'], 'VERSION', createReadOnlyValue(version));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/createConsumerApi.js","module.exports = {\"name\":\"@neos-project/neos-ui-extensibility\",\"version\":\"1.4.1\",\"description\":\"Extensibility mechanisms for the Neos CMS UI\",\"main\":\"./src/index.js\",\"scripts\":{\"prebuild\":\"check-dependencies && yarn clean\",\"test\":\"yarn jest -- -w 2 --coverage\",\"test:watch\":\"yarn jest -- --watch\",\"build\":\"exit 0\",\"build:watch\":\"exit 0\",\"clean\":\"rimraf ./lib ./dist\",\"lint\":\"eslint src\",\"jest\":\"NODE_ENV=test jest\"},\"devDependencies\":{\"@neos-project/babel-preset-neos-ui\":\"1.4.1\",\"@neos-project/jest-preset-neos-ui\":\"1.4.1\"},\"dependencies\":{\"@neos-project/build-essentials\":\"1.4.1\",\"@neos-project/positional-array-sorter\":\"1.4.1\",\"babel-core\":\"^6.13.2\",\"babel-eslint\":\"^7.1.1\",\"babel-loader\":\"^7.1.2\",\"babel-plugin-transform-decorators-legacy\":\"^1.3.4\",\"babel-plugin-transform-object-rest-spread\":\"^6.20.1\",\"babel-plugin-webpack-alias\":\"^2.1.1\",\"babel-preset-es2015\":\"^6.13.2\",\"babel-preset-react\":\"^6.3.13\",\"babel-preset-stage-0\":\"^6.3.13\",\"chalk\":\"^1.1.3\",\"css-loader\":\"^0.28.4\",\"file-loader\":\"^1.1.5\",\"json-loader\":\"^0.5.4\",\"postcss-loader\":\"^2.0.10\",\"react-dev-utils\":\"^0.5.0\",\"style-loader\":\"^0.21.0\"},\"bin\":{\"neos-react-scripts\":\"./bin/neos-react-scripts.js\"},\"jest\":{\"preset\":\"@neos-project/jest-preset-neos-ui\"}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@neos-project/neos-ui-extensibility/package.json\n// module id = 8\n// module chunks = 0","export default manifests => {\n return function (identifier, options, bootstrap) {\n manifests.push({\n [identifier]: {\n options,\n bootstrap\n }\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/manifest.js","import React, {PureComponent} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {$get, $transform} from 'plow-js';\n\nimport {Button, Dialog, Icon} from '@neos-project/react-ui-components';\nimport I18n from '@neos-project/neos-ui-i18n';\nimport {actions} from '@neos-project/neos-ui-redux-store';\nimport {actions as localActions, selectors as localSelectors} from './redux';\n\n@connect($transform({\n restrictCreationDialogIsOpen: $get('ui.restrictCreationDialog.isOpen'),\n restrictCreationPresetConfig: localSelectors.restrictCreationSelector,\n restrictCreationOriginPreset: localSelectors.restrictCreationOriginPresetSelector\n}), {\n openDialog: localActions.openDialog,\n closeDialog: localActions.closeDialog,\n continueCreation: localActions.continueCreation,\n selectPreset: actions.CR.ContentDimensions.selectPreset\n})\nexport default class RestrictCreationDialog extends PureComponent {\n static propTypes = {\n restrictCreationDialogIsOpen: PropTypes.bool,\n restrictCreationPresetConfig: PropTypes.object,\n restrictCreationOriginPreset: PropTypes.object,\n openDialog: PropTypes.func.isRequired,\n closeDialog: PropTypes.func.isRequired,\n continueCreation: PropTypes.func.isRequired,\n selectPreset: PropTypes.func.isRequired\n };\n\n handleAbort = () => {\n this.props.closeDialog();\n }\n\n handleDismiss = () => {\n this.props.continueCreation();\n }\n\n handleSwitchPreset = () => {\n const {restrictCreationPresetConfig, restrictCreationOriginPreset} = this.props;\n const dimensionName = $get('dimensionName', restrictCreationPresetConfig);\n const originPresetValue = $get('values.0', restrictCreationOriginPreset);\n this.props.selectPreset({[dimensionName]: originPresetValue});\n }\n\n renderTitle() {\n return (\n
\n \n \n \n \n
\n );\n }\n\n renderAbort() {\n return (\n \n \n \n );\n }\n\n renderSwitch() {\n const {restrictCreationOriginPreset} = this.props;\n const originPresetLabel = $get('label', restrictCreationOriginPreset);\n if (!originPresetLabel) {\n return null;\n }\n return (\n \n \n \n );\n }\n renderDismiss() {\n return (\n \n \n \n );\n }\n\n disallowModal() {\n const {restrictCreationPresetConfig, restrictCreationOriginPreset} = this.props;\n const currentPresetLabel = $get('label', restrictCreationPresetConfig);\n const originPresetLabel = $get('label', restrictCreationOriginPreset);\n return (\n \n
\n \n {originPresetLabel && (\n
\n \n
\n )}\n
\n \n );\n }\n\n warnModal() {\n const {restrictCreationPresetConfig, restrictCreationOriginPreset} = this.props;\n const currentPresetLabel = $get('label', restrictCreationPresetConfig);\n const originPresetLabel = $get('label', restrictCreationOriginPreset);\n return (\n \n
\n \n {originPresetLabel && (\n
\n \n
\n )}\n
\n \n );\n }\n\n render() {\n const {restrictCreationDialogIsOpen, restrictCreationPresetConfig} = this.props;\n\n if (!restrictCreationDialogIsOpen) {\n return null;\n }\n\n if ($get('restrictCreation.mode', restrictCreationPresetConfig) === 'disallow') {\n return this.disallowModal();\n }\n if ($get('restrictCreation.mode', restrictCreationPresetConfig) === 'warn') {\n return this.warnModal();\n }\n return null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/RestrictCreationDialog.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().React;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().PropTypes;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/prop-types/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reactRedux;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/react-redux/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().ReactUiComponents;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/react-ui-components/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().NeosUiI18n;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/neos-ui-i18n/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reduxActions;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-actions/index.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('NeosProjectPackages')().UtilsRedux;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/neosProjectPackages/utils-redux/index.js","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = reduce;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash.reduce/index.js\n// module id = 18\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 19\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 20\n// module chunks = 0","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reselect;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/reselect/index.js","import {takeLatest, take, select, call, put, race} from 'redux-saga/effects';\nimport {$get} from 'plow-js';\nimport {actionTypes, selectors} from '@neos-project/neos-ui-redux-store';\nimport {actions as localActions, actionTypes as localActionTypes, selectors as localSelectors} from './redux';\n\nexport function makeAddNode(nodeCreationWorkflow) {\n function * addNode({globalRegistry}) {\n const nodeTypesRegistry = globalRegistry.get('@neos-project/neos-ui-contentrepository');\n \n yield takeLatest(actionTypes.CR.Nodes.COMMENCE_CREATION, function* (action) {\n\t\t\tconst {referenceNodeContextPath, referenceNodeFusionPath, preferredMode, nodeType} = action.payload;\n \n const state = yield select();\n const restrictCreationPreset = localSelectors.restrictCreationSelector(state);\n \n // Show restrict creation dialog if mode is not null\n let showRestrictCreationDialog = Boolean($get('restrictCreation.mode', restrictCreationPreset));\n const documentNodesOnly = $get('restrictCreation.documentNodesOnly', restrictCreationPreset);\n \n if (documentNodesOnly) {\n const getNodeByContextPathSelector = selectors.CR.Nodes.makeGetNodeByContextPathSelector(referenceNodeContextPath);\n const referenceNode = yield select(getNodeByContextPathSelector);\n const isDocument = nodeTypesRegistry.hasRole($get('nodeType', referenceNode), 'document');\n // Skip the dialog if not document node\n showRestrictCreationDialog = isDocument;\n }\n \n const context = {\n\t\t\t\tnodeTypesRegistry,\n\t\t\t\treferenceNodeContextPath,\n\t\t\t\treferenceNodeFusionPath,\n\t\t\t\tpreferredMode,\n\t\t\t\tnodeType\n\t\t\t};\n if (showRestrictCreationDialog) {\n yield put(localActions.openDialog());\n const waitForNextAction = yield race([\n take(localActionTypes.OPEN_DIALOG),\n take(localActionTypes.CLOSE_DIALOG),\n take(localActionTypes.CONTINUE_CREATION)\n ]);\n const nextAction = Object.values(waitForNextAction)[0];\n \n if (nextAction.type === localActionTypes.CONTINUE_CREATION) {\n yield call(nodeCreationWorkflow, context);\n } else {\n return;\n }\n } else {\n yield call(nodeCreationWorkflow, context);\n }\n });\n }\n return addNode;\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/sagas.js","import readFromConsumerApi from '../../../readFromConsumerApi';\n\nmodule.exports = readFromConsumerApi('vendor')().reduxSagaEffects;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@neos-project/neos-ui-extensibility/src/shims/vendor/redux-saga-effects/index.js"],"sourceRoot":""} \ No newline at end of file